diff --git a/.gitea/workflows/project-ci.yml b/.gitea/workflows/project-ci.yml index 5bde92df5..d56eba0f4 100644 --- a/.gitea/workflows/project-ci.yml +++ b/.gitea/workflows/project-ci.yml @@ -20,6 +20,9 @@ env: CARGO_HTTP_MULTIPLEXING: 'false' CARGO_NET_RETRY: '10' CARGO_TERM_COLOR: always + # 等价于给每条 `cargo test` 加 `-q`:通过的用例只打点号,失败的才按名字列出。 + # 对 npm 脚本、shard runner 里嵌套的 cargo 同样生效,避免逐条 `test ... ok` 刷屏。 + CARGO_TERM_QUIET: 'true' NPM_CONFIG_AUDIT: 'false' NPM_CONFIG_FETCH_RETRIES: '10' NPM_CONFIG_FETCH_RETRY_FACTOR: '2' diff --git a/apps/admin-web/src/pages/AdminGameReviewsPage.tsx b/apps/admin-web/src/pages/AdminGameReviewsPage.tsx index a7ad0e543..52f59dda9 100644 --- a/apps/admin-web/src/pages/AdminGameReviewsPage.tsx +++ b/apps/admin-web/src/pages/AdminGameReviewsPage.tsx @@ -290,6 +290,7 @@ export function AdminGameReviewsPage({ token, onUnauthorized }: PageProps) { button { + flex-shrink: 0; +} + @media (max-width: 700px) { .admin-review-filters { grid-template-columns: minmax(0, 1fr); diff --git a/apps/ai-game-creator-shell/package.json b/apps/ai-game-creator-shell/package.json index 0d3ec33c6..54a85623d 100644 --- a/apps/ai-game-creator-shell/package.json +++ b/apps/ai-game-creator-shell/package.json @@ -16,7 +16,7 @@ "bundled-resources:check": "node scripts/check-package-layout.mjs", "bundled-resources:sync": "node scripts/check-package-layout.mjs --write", "bundled-resources:prepare": "node scripts/prepare-bundled-resources.mjs", - "bundled-resources:test": "node --test scripts/prepare-bundled-resources.test.mjs", + "bundled-resources:test": "node --test --test-reporter=dot scripts/prepare-bundled-resources.test.mjs", "llm-status": "node scripts/run-cli-with-config.mjs --llm-status", "config": "node scripts/game-creator-config-wizard.mjs", "check:tests:types": "tsc -p tsconfig.tests.json --noEmit", diff --git a/apps/ai-game-creator-shell/src/styles.css b/apps/ai-game-creator-shell/src/styles.css index 6d12bb764..50f9a9943 100644 --- a/apps/ai-game-creator-shell/src/styles.css +++ b/apps/ai-game-creator-shell/src/styles.css @@ -12512,17 +12512,15 @@ button.design-workspace-tree__entry:hover, white-space: nowrap; } +/* 组头 chevron 只保留外层定位与过渡;**换向唯一来源**是共享 `AgentProcessSummary` 的 + `[aria-expanded='true'] > .agent-process-summary .agent-process-summary-chevron`。 + 这里若再写一条 `rotate(180deg)`,会与 wrapper 的旋转叠加成 360°,展开态看起来仍是朝下。 */ .agent-tool-call-group-chevron { flex: 0 0 auto; color: inherit; transition: transform 120ms ease; } -.agent-tool-call-group-head[aria-expanded='true'] - .agent-tool-call-group-chevron { - transform: rotate(180deg); -} - /* `hidden` 必须压过下面的 `display: grid`,否则折叠态只是内容不可见却仍占位。 */ .agent-tool-call-group-body[hidden], .agent-tool-call-row-detail[hidden] { diff --git a/docs/【玩法创作】平台入口与玩法链路-2026-05-15.md b/docs/【玩法创作】平台入口与玩法链路-2026-05-15.md index f6263e3aa..c241dd71c 100644 --- a/docs/【玩法创作】平台入口与玩法链路-2026-05-15.md +++ b/docs/【玩法创作】平台入口与玩法链路-2026-05-15.md @@ -351,6 +351,7 @@ - 列表列为游戏名称/ID、评价用户昵称/ID、评分、评论摘要、状态、提交时间、修改时间和操作。空评论在后台显示“仅评分”;摘要最多 120 Unicode 码点,截断时加省略号。 - “查看详情”使用现有弹窗,展示完整纯文本评论、分数、游戏/用户/评价 ID、创建和修改时间,并展示该次评价的操作记录。名称与头像关联现有游戏/账号信息,不复制到评价表。 - 评价表格的评论与操作原因保留换行,清除单元格内段落的默认上下外边距,与其他列顶对齐。 +- 评价列表的状态胶囊保持单行;行内操作按钮与“操作”列头左对齐,不换行、不压缩,避免删除按钮另起一行撑高整条评价。样式仅作用于游戏评价列表,窄屏沿用表格容器横向滚动。 - 行内提供“隐藏”或“恢复”和“删除”。隐藏、删除通过原因输入及确认弹窗提交;原因 trim 后必须为 1–4000 Unicode 码点,不静默截断;恢复沿用现有后台确认交互。删除明确提示“删除后不可恢复,用户可以重新评价”。 - 请求期间禁用对应操作,失败保留原因草稿并显示错误,不先移除记录;成功刷新当前筛选。删除或状态过滤导致当前页越界时回到最后一页,零记录回第 1 页并显示空态。详情打开期间切换目标,不接受旧目标的迟到响应覆盖。 - 管理列表/详情不受游戏公开可见性限制。移动端表格横向滚动、弹窗内正文可滚动,操作按钮可达。 diff --git a/package.json b/package.json index ca24fab4d..1a9caaae3 100644 --- a/package.json +++ b/package.json @@ -189,7 +189,7 @@ "agc:bundled-resources:sync": "npm --prefix apps/ai-game-creator-shell run bundled-resources:sync", "agc:bundled-resources:prepare": "npm --prefix apps/ai-game-creator-shell run bundled-resources:prepare --", "agc:bundled-resources:test": "npm --prefix apps/ai-game-creator-shell run bundled-resources:test --", - "agc:plugins:test": "node --test plugins/agc-cocos-editor/src/entry.test.mjs plugins/agc-unity-editor/src/entry.test.mjs plugins/agc-godot-editor/src/entry.test.mjs", + "agc:plugins:test": "node --test --test-reporter=dot plugins/agc-cocos-editor/src/entry.test.mjs plugins/agc-unity-editor/src/entry.test.mjs plugins/agc-godot-editor/src/entry.test.mjs", "agc:plugins:native-test": "cargo test --manifest-path plugins/agc-cocos-editor/native/cocos-editor-bridge/Cargo.toml && cargo test --locked --manifest-path plugins/agc-unity-editor/native/unity-editor-bridge/Cargo.toml && cargo test --locked --manifest-path plugins/agc-godot-editor/native/godot-editor-bridge/Cargo.toml", "agc:plugins:check": "npm run agc:plugins:test && npm run agc:plugins:native-test", "agc:check": "npm run ai-game-creator-shell:check", diff --git a/scripts/build-gitea-rust-cache.sh b/scripts/build-gitea-rust-cache.sh index 13ff337c9..75932951f 100644 --- a/scripts/build-gitea-rust-cache.sh +++ b/scripts/build-gitea-rust-cache.sh @@ -75,7 +75,7 @@ set -euo pipefail rustc -vV > /opt/genarrative-ci/rust-cache/rustc.txt export GITHUB_ENV=/tmp/rust-cache.env CARGO_INCREMENTAL=0 CARGO_BUILD_JOBS=4 CI=true # sccache 对 CARGO_*(除 jobserver/jobs 等特例)参与 hash,必须与 workflow 对齐。 -export CARGO_HTTP_MULTIPLEXING=false CARGO_NET_RETRY=10 CARGO_TERM_COLOR=always +export CARGO_HTTP_MULTIPLEXING=false CARGO_NET_RETRY=10 CARGO_TERM_COLOR=always CARGO_TERM_QUIET=true bash /tmp/ci-rust-cache.sh prepare set -a source "${GITHUB_ENV}" diff --git a/scripts/check-native-shells.mjs b/scripts/check-native-shells.mjs index 4dcf9550b..84e7c5125 100644 --- a/scripts/check-native-shells.mjs +++ b/scripts/check-native-shells.mjs @@ -5081,7 +5081,7 @@ for (const step of steps) { continue; } - console.log(`[check:native-shells] ${step.label}`); + // 成功不打印进度标签;只有在失败时才知道是哪个 step,避免每个 step 一行刷屏。 const result = spawnSync(step.command, step.args, { cwd: process.cwd(), stdio: 'inherit', @@ -5102,6 +5102,9 @@ for (const step of steps) { } if ((result.status ?? 0) !== 0) { + console.error( + `[check:native-shells] ${step.label} failed (exit=${result.status})`, + ); process.exit(result.status ?? 1); } } diff --git a/vitest.config.ts b/vitest.config.ts index 2d66a04ff..6401f100f 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -94,6 +94,10 @@ export default defineConfig({ test: { environment: 'node', globals: true, + // 成功用例不回放被测代码写进 stdout / stderr 的内容:CI 日志里只保留每个 + // 失败用例的断言摘要,避免 React act 警告、dev 调度日志这类噪音刷屏。 + // 需要在本机排查时用 `vitest run --silent=false` 覆盖本次配置。 + silent: true, minThreads: 1, maxThreads: 8, server: {