修复 AGC「选择替换素材」弹窗面板透明:平台弹窗外壳规则移入共享样式表
- 根因:弹窗面板用的 `platform-modal-shell`(遮罩 `platform-overlay`)规则原先只写在网页端整站样式表 src/index.css;AGC 只加载 packages/shared/src/components/styles.css 与 theme.css,类名挂上了但一条声明都没命中,面板因此无底色、无边框、无阴影,背后模糊的资源画布直接透出 - 把 platform-modal-shell / platform-modal-backdrop / platform-overlay 三条宿主类规则从 src/index.css 移进 packages/shared/src/components/styles.css:两个宿主都 import 这张表,规则只保留一份,不在 AGC 业务样式里复制平行副本;三处声明逐字照搬,网页端层叠结果不变 - 新增 apps/ai-game-creator-shell/tests/projectAssetPickerDialogShellStyle.test.tsx:从 src/main.tsx 按真实 import 关系解析出「AGC 到底加载了哪些样式表」,断言清单里有这三条规则、背景引用主题 token、light 主题下 --platform-modal-fill 各色停 alpha ≥ 0.9;DOM 契约断言面板挂 platform-modal-shell、遮罩带 platform-overlay 与 platform-theme--light;并断言这三条规则只在共享表里各定义一次(禁止平行拷贝) - docs/project-memory/shared-memory/pitfalls.md 记录「共享弹窗的宿主类必须落在所有宿主都会加载的样式表里」的排障经验
This commit is contained in:
@@ -4063,6 +4063,14 @@
|
||||
- 验证:在真实 `AuthUiContext.platformTheme="dark"` Provider 下打开 portal 弹窗,断言 auto 弹窗的 overlay 携带暗色主题类,固定浅色弹窗只携带浅色主题类,panel 与遮罩的 computed background 均非透明;同时断言 `portalTheme="none"` 的黑底预览不被平台 remap。
|
||||
- 关联:`src/components/project/ProjectGalleryView.tsx`、`src/components/common/PlatformToolModalShell.tsx`、`src/components/common/UnifiedModal.tsx`。
|
||||
|
||||
## 共享弹窗的宿主类必须落在所有宿主都加载的样式表里
|
||||
|
||||
- 现象:AGC 资源工作台点「替换素材」弹出的「选择替换素材」弹窗,面板本体完全透明,背后模糊的资源画布直接透过卡片、搜索框和底部操作条;网页端同一个弹窗正常。
|
||||
- 原因:面板用的是共享 `UnifiedModal` 产出的 `platform-modal-shell`(遮罩是 `platform-overlay`),而这两条规则只写在网页端整站样式表 `src/index.css` 里。AGC 是独立宿主,只加载 `@genarrative/shared/styles.css`(即 `packages/shared/src/components/styles.css`)与 `packages/shared/src/theme.css`;类名挂上去了,规则一条都没命中,于是面板没有底色、边框和阴影。
|
||||
- 处理:把 `platform-modal-shell` / `platform-modal-backdrop` / `platform-overlay` 三条宿主类规则从 `src/index.css` 移进 `packages/shared/src/components/styles.css`——两个宿主都 import 这张表,规则只需要存在一份。共享组件产出的宿主类一律放进"所有宿主都会加载"的共享表;只在某个宿主里缺样式时,不要顺手写进它的业务样式表。`apps/ai-game-creator-shell/src/features/resource-canvas/resourceCanvasChrome.css` 那种逐条照抄只适用于确实只属于该宿主的 `image-canvas-editor__*` 类。
|
||||
- 验证:`apps/ai-game-creator-shell/tests/projectAssetPickerDialogShellStyle.test.tsx` 从 `src/main.tsx` 按真实 import 关系解析出 AGC 加载的样式表清单,断言清单里有 `platform-modal-shell` / `platform-overlay` 规则、声明引用主题 token、token 在 light 块里 alpha ≥ 0.9,并断言这三条规则只在一张表里各定义一次。把规则删掉、或搬回 `src/index.css`,用例都会变红;jsdom 不计算外部 CSS,属声明级的弱验证。真机判据:弹窗面板是不透明暖白底,背后画布不透出,与其它平台弹窗底色一致。
|
||||
- 关联:`packages/shared/src/components/styles.css`、`src/index.css`、`src/components/common/UnifiedModal.tsx`、`apps/ai-game-creator-shell/tests/projectAssetPickerDialogShellStyle.test.tsx`。
|
||||
|
||||
## 自主试玩失败后的修复责任不能同时落给总控和专业 Agent
|
||||
|
||||
- 现象:专业 Agent 已交付新 revision,Project Supervisor 的固定试玩已通过全部业务交互断言,但双视口可见性等外围门禁仍失败;下一轮 Provider 被要求直接 `file.patch`,随后又被 `orchestratorOnlyAfterDelegation` 正确拦截,格式修复耗尽后父 run 失败且没有最终回复。
|
||||
|
||||
Reference in New Issue
Block a user