重做 master 合并,找回上次合并丢失的分支工作
上次合并 3d8abac33 把 24 个双边改动文件里的 7 个整份取了 master,另有数个 实质取了 master 版本,静默回滚了分支工作;其中 main_loop.rs 保留 master 的 调用点、provider_recovery.rs 保留分支的 cfg(test) 门,导致非测试构建编译失败。 本次从ca6a3cd4c对最新 master(341761ee3) 重做,逐个人工解析 38 处冲突: - 澄清等待态:保留分支的 lane 外 parent-wake 设计与锁守卫,套上 master 新增的 parent task 身份校验与 game-chat 安全默认返工;`_locked` 两种 false 语义在 delivery.rs 按 trusted_game_chat_autonomous_parent_chain_at 区分。 - decision-log:按日期把 master 三条插进分支条目之间,57 处 M1 记录全部保留。 - manifest.rs:采用 master 的 windows_sys 绑定,保留分支的目录/reparse point 拒绝。 - 做方案入口按 master 的提交重构改造:resolveProjectSupervisorRuntimeSubmission 新增 planningEntry,startMode 经 launcher context 传到 App;并把策划入口从 direct-codex 产品默认中摘出,做游戏与做素材保持 master 新默认。 - 首页两条入口用例按 master 已改的创建流程更新;非空目录确认用例因该流程 在首页入口不再可达而移除。 验证:cargo check --all-targets 通过;agc typecheck 通过;appSurface 395 passed。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -2441,10 +2441,16 @@ function assertAiGameCreatorShellUserDevBoundary() {
|
||||
if (
|
||||
!httpPermission ||
|
||||
JSON.stringify(httpPermission.allow ?? []) !==
|
||||
JSON.stringify([{ url: 'https://dev.genarrative.world/api/*' }])
|
||||
JSON.stringify([
|
||||
{ url: 'https://dev.genarrative.world/api/*' },
|
||||
{ url: 'https://www.genarrative.world/api/*' },
|
||||
{ url: 'https://*/api/*' },
|
||||
{ url: 'http://localhost:*/*' },
|
||||
{ url: 'http://127.0.0.1:*/*' },
|
||||
])
|
||||
) {
|
||||
throw new Error(
|
||||
'AI game creator native HTTP scope must stay limited to the dev API',
|
||||
'AI game creator native HTTP scope must match the release, dev, custom HTTPS, and loopback API boundary',
|
||||
);
|
||||
}
|
||||
|
||||
@@ -2582,22 +2588,14 @@ function assertAiGameCreatorShellUserDevBoundary() {
|
||||
'AI game creator preview must not invoke the external browser',
|
||||
);
|
||||
}
|
||||
const developerWindowCallCount = [
|
||||
...aiGameCreatorShellTauriSource.matchAll(
|
||||
/open_developer_window\(app\.handle\(\)\)\?;/g,
|
||||
),
|
||||
].length;
|
||||
if (
|
||||
!aiGameCreatorShellTauriSource.includes(
|
||||
'#[cfg(all(debug_assertions, not(test)))]\npub(crate) fn open_developer_window(',
|
||||
) ||
|
||||
!/#\[cfg\(all\(debug_assertions, not\(test\)\)\)\]\s+if game_chat_launch\.is_none\(\) \{\s+open_developer_window\(app\.handle\(\)\)\?;\s+\}/u.test(
|
||||
aiGameCreatorShellTauriSource,
|
||||
) ||
|
||||
developerWindowCallCount !== 1
|
||||
aiGameCreatorShellTauriSource.includes('fn open_developer_window(') ||
|
||||
aiGameCreatorShellTauriSource.includes(
|
||||
'open_developer_window(app.handle())?;',
|
||||
)
|
||||
) {
|
||||
throw new Error(
|
||||
'AI game creator developer window must stay compile-time debug-only and outside game-chat launch',
|
||||
'AI game creator normal startup must not automatically open a developer window',
|
||||
);
|
||||
}
|
||||
for (const snippet of [
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -20,6 +20,7 @@ git cat-file -e "${head_ref}^{commit}" 2>/dev/null || {
|
||||
|
||||
echo "[repository-ci] base=${base_ref} head=$(git rev-parse "${head_ref}")"
|
||||
SPACETIME_SCHEMA_BASE_REF="${base_ref}" npm run lint
|
||||
npm run test -- apps/ai-game-creator-shell/tests/appSurface.test.ts
|
||||
npm run build
|
||||
npm run check:content
|
||||
git diff --check "${base_ref}"..."${head_ref}"
|
||||
|
||||
@@ -257,6 +257,10 @@ test('Gitea Repository checks and master pre-push share the same repository comm
|
||||
repositoryScript,
|
||||
/SPACETIME_SCHEMA_BASE_REF="\$\{base_ref\}" npm run lint/u,
|
||||
);
|
||||
assert.match(
|
||||
repositoryScript,
|
||||
/npm run lint[\s\S]*npm run test -- apps\/ai-game-creator-shell\/tests\/appSurface\.test\.ts[\s\S]*npm run build/u,
|
||||
);
|
||||
assert.match(repositoryScript, /npm run build/u);
|
||||
assert.match(repositoryScript, /npm run check:content/u);
|
||||
assert.match(repositoryScript, /git diff --check/u);
|
||||
|
||||
@@ -111,7 +111,11 @@ describe('project CI workflow', () => {
|
||||
expect(install).not.toContain('--prefix');
|
||||
}
|
||||
|
||||
for (const jobName of ['frontend-tests', 'native-shell-tests'] as const) {
|
||||
for (const jobName of [
|
||||
'repository-checks',
|
||||
'frontend-tests',
|
||||
'native-shell-tests',
|
||||
] as const) {
|
||||
const install = stepSection(
|
||||
jobName,
|
||||
'Install AI game creator dependencies',
|
||||
|
||||
Reference in New Issue
Block a user