diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 063ffd4..98bbf3d 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -6,6 +6,31 @@ All notable changes to this repository should be documented in this file. The format loosely follows Keep a Changelog and can be adapted to the team's habits. 本文档参考了 Keep a Changelog 的思路,也可以根据团队习惯调整。 +## [0.3.9] - 2026-10-04 + +### Done / 完成 + +- P15-B lands in crearte (0.27.0, merge `7f91fa3`, merge-base `f823195`, 13 commits): the game loading screen now follows the theme, closing the last white-flash surface — a pre-paint script in `` reads hash, then `prefers-color-scheme`, then light (one level fewer than the main app, because games run on a separate subdomain where browser storage is origin-isolated), and the parent passes the theme as an optional ninth hash key while `GameHost` injects a non-reactive `effectiveTheme()` snapshot so switching theme cannot reload a game in progress. Also pinned `AA_PAIRS` with `['ink','surface']` (62 `.vue` sites, 58 of them inheriting `text-ink` from `body`, contrast 18.4225 light / 14.8468 dark) and deleted the dead `--color-info` token (`REQUIRED_KEYS` 12→11, `LEGACY_KEYS` 9 untouched, usage-side `var(--color-*)` unchanged at 75 — a movement there would have meant something referenced it, contradicting the dead-token premise). +- P15-B 在 crearte 落地(0.27.0,merge `7f91fa3`,merge-base `f823195`,13 个 commit):游戏加载屏现在跟随主题,消除了最后一处白闪面——`` 内的 pre-paint 脚本按 hash → `prefers-color-scheme` → light 判定(比主应用少一级,因为游戏跑在独立子域、浏览器存储按源隔离),父侧把主题作为可选的第九个 hash 键传下去,而 `GameHost` 注入的是非响应式的 `effectiveTheme()` 快照,故切主题不会重载正在进行的游戏。同时给 `AA_PAIRS` 补钉 `['ink','surface']`(62 处 `.vue`,其中 58 处靠 `body` 继承 `text-ink`,对比度亮色 18.4225 / 暗色 14.8468),并删掉死令牌 `--color-info`(`REQUIRED_KEYS` 12→11、`LEGACY_KEYS` 9 不动、usage 侧 `var(--color-*)` 保持 75——它若变了反倒说明有东西在引用该令牌,与死令牌前提矛盾)。 + +- **The whole-branch review blocked this batch — the second time it has done so, after P11 — and the critical finding was in the guard layer, not the product.** All four gates were green, every boundary held, and the product code needed no change at all. What failed was the mechanism the batch exists to deliver: `maskSourceComments()` took a 2-character slice and compared it against the 4-character `'