Merge branch 'master' into fix/agc-toolbar-layout
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 6m48s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 4m30s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 6m12s
Project CI / Frontend tests (pull_request) Successful in 3m20s
Project CI / Backend tests (pull_request) Successful in 7m47s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m42s
Project CI / Repository checks (pull_request) Successful in 7m5s
Project CI / Native shell tests (pull_request) Successful in 9m43s

This commit is contained in:
2026-10-04 18:37:56 +08:00
10 changed files with 33 additions and 9 deletions
+3
View File
@@ -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'
@@ -290,6 +290,7 @@ export function AdminGameReviewsPage({ token, onUnauthorized }: PageProps) {
</AdminPanel>
<AdminListPanel
title="评价列表"
tableClassName="admin-game-reviews-table"
busy={loading}
busyText="正在加载评价…"
busyVariant="line"
+14
View File
@@ -846,6 +846,20 @@ button:disabled {
max-width: 320px;
}
.admin-game-reviews-table .admin-status {
white-space: nowrap;
overflow-wrap: normal;
}
.admin-game-reviews-table td:last-child .admin-action-row {
flex-wrap: nowrap;
justify-content: flex-start;
}
.admin-game-reviews-table td:last-child .admin-action-row > button {
flex-shrink: 0;
}
@media (max-width: 700px) {
.admin-review-filters {
grid-template-columns: minmax(0, 1fr);
+1 -1
View File
@@ -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",
+3 -5
View File
@@ -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] {
@@ -351,6 +351,7 @@
- 列表列为游戏名称/ID、评价用户昵称/ID、评分、评论摘要、状态、提交时间、修改时间和操作。空评论在后台显示“仅评分”;摘要最多 120 Unicode 码点,截断时加省略号。
- “查看详情”使用现有弹窗,展示完整纯文本评论、分数、游戏/用户/评价 ID、创建和修改时间,并展示该次评价的操作记录。名称与头像关联现有游戏/账号信息,不复制到评价表。
- 评价表格的评论与操作原因保留换行,清除单元格内段落的默认上下外边距,与其他列顶对齐。
- 评价列表的状态胶囊保持单行;行内操作按钮与“操作”列头左对齐,不换行、不压缩,避免删除按钮另起一行撑高整条评价。样式仅作用于游戏评价列表,窄屏沿用表格容器横向滚动。
- 行内提供“隐藏”或“恢复”和“删除”。隐藏、删除通过原因输入及确认弹窗提交;原因 trim 后必须为 1–4000 Unicode 码点,不静默截断;恢复沿用现有后台确认交互。删除明确提示“删除后不可恢复,用户可以重新评价”。
- 请求期间禁用对应操作,失败保留原因草稿并显示错误,不先移除记录;成功刷新当前筛选。删除或状态过滤导致当前页越界时回到最后一页,零记录回第 1 页并显示空态。详情打开期间切换目标,不接受旧目标的迟到响应覆盖。
- 管理列表/详情不受游戏公开可见性限制。移动端表格横向滚动、弹窗内正文可滚动,操作按钮可达。
+1 -1
View File
@@ -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",
+1 -1
View File
@@ -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}"
+4 -1
View File
@@ -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);
}
}
+4
View File
@@ -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: {