|
1 | 1 | # Task Progress |
2 | 2 |
|
| 3 | +## Client release v1.5.12 (2026-08-08) |
| 4 | + |
| 5 | +- [scope] Reviewed and merged 10 pending community/self PRs that had accumulated |
| 6 | + unmerged on `main` since late July (#68, #212, #283, #284, #285, #286, #288, |
| 7 | + #289, #106, #342) — each individually verified against current `main` before |
| 8 | + merge: git-mergeable both alone and stacked together, no version-fragile |
| 9 | + selector/DOM assumptions, and (for #283 specifically) the Safe CSS sandbox |
| 10 | + in `runtime/safe-css-policy.json` was cross-checked to confirm no community |
| 11 | + theme can trip the stricter visibility check (opacity floored at 0.65, |
| 12 | + display/visibility/position not themable at all). |
| 13 | +- [diagnosed] Merging #68 exposed that `macos/scripts/image-metadata.mjs` is |
| 14 | + generated from `runtime/image-metadata.mjs` via `tools/sync-runtime-assets.mjs`; |
| 15 | + #68 edited the generated output directly instead of the source, so |
| 16 | + `--check` failed on `main` and `windows/scripts/image-metadata.mjs` never |
| 17 | + picked up the new `readRawDimensions` export at all. Fixed at the source |
| 18 | + and regenerated both platform outputs (#347). |
| 19 | +- [diagnosed] `Static checks` CI was independently red on `main` — 3 tests in |
| 20 | + `macos/tests/renderer-verification.test.mjs` failed against `main` HEAD |
| 21 | + directly, unrelated to any merge here. Root cause: the test's hand-rolled |
| 22 | + DOM mock had drifted from the real runtime contract in three ways (stale |
| 23 | + `shell-main` selector literal predating the 26.727 `:is(...)` update, |
| 24 | + missing `scope.missingL1` that `assessRendererVerification` requires, |
| 25 | + hardcoded `version: "1.5.6"` against the real `SKIN_VERSION` of `"1.5.11"`). |
| 26 | + Fixed the fixtures and exported `SKIN_VERSION` so the test imports the real |
| 27 | + constant instead of re-hardcoding a value that drifts on every release (#349). |
| 28 | +- [implemented] Regrouped the menu bar's ~16 flat top-level items into |
| 29 | + `主题`/`链接`/`维护` submenus, and replaced the always-present manual |
| 30 | + "检查更新…" item with a background check (24h timer + one-shot ~15s after |
| 31 | + launch) that posts a system notification the first time a new version is |
| 32 | + seen and shows a conditional "🆕 发现新版本" item only while one is |
| 33 | + available; manual check moved into 维护 as "立即检查更新" (#348). Could not |
| 34 | + run `swift build`/`swift test` locally — this sandbox's Command Line Tools |
| 35 | + (Swift 5.10) don't match the macOS 15.2 SDK (needs 6.0.3) — so an |
| 36 | + independent review agent read the full diff for compile-breaking issues |
| 37 | + before push, and the PR was only merged after real CI's `macos-latest` job |
| 38 | + (`swift test --package-path macos/menubar-app` + DMG build) came back |
| 39 | + green. The review agent's two substantive findings (install doc no longer |
| 40 | + matched the new background-polling behavior; a manual check during an |
| 41 | + in-flight background check could double-spawn `check-update-macos.sh`) |
| 42 | + were fixed before merge with a dedicated `updateCheckInFlight` guard |
| 43 | + separate from the broader `operationInFlight` busy state, so the 24h timer |
| 44 | + no longer disables the primary apply/open actions while it runs. |
| 45 | +- [verified] Before cutting the version: `node --test macos/tests/*.test.mjs |
| 46 | + windows/tests/*.test.mjs tools/*.test.mjs` (93/93 pass), full |
| 47 | + `macos/tests/run-tests.sh` including signed-runtime and Doctor checks, and |
| 48 | + both `injector.mjs --check-payload` invocations all pass on `main` post-merge. |
| 49 | +- [implemented] Version bump touches all six release version sources |
| 50 | + (`macos/VERSION`, `windows/VERSION`, `macos/package.json`, |
| 51 | + `macos/scripts/common-macos.sh`, both platforms' `injector.mjs` |
| 52 | + `SKIN_VERSION`) plus the two hardcoded `1.5.11` assertions in |
| 53 | + `macos/tests/run-tests.sh` (the update-check JSON fixture and the |
| 54 | + `common-macos.sh`-sourced `$SKIN_VERSION` check). A grep-only pass across |
| 55 | + the repo for the literal `1.5.11` first missed a third real dependency: |
| 56 | + `windows/tests/injector-window-readiness.test.mjs` imports `verifySession` |
| 57 | + (not `assessRendererVerification` directly), so its mock |
| 58 | + `__CODEX_DREAM_SKIN_STATE__.version` is transitively checked against the |
| 59 | + real `SKIN_VERSION` even though the test file never names that identifier. |
| 60 | + The full portable test run after the version bump caught this immediately |
| 61 | + (4 failures) before it reached CI; fixed the same way as the macOS |
| 62 | + `renderer-verification.test.mjs` case — export `SKIN_VERSION` from |
| 63 | + `windows/scripts/injector.mjs` (as a separate `export { }` statement, same |
| 64 | + reason as macOS) and import it into the test instead of re-hardcoding. |
| 65 | + `windows/tests/start-verified-skin-preserved.tests.ps1`'s literal |
| 66 | + `"version":"1.5.11"` is a fully mocked PowerShell fixture with no path to |
| 67 | + `SKIN_VERSION` at all (grepped every `.ps1` script; it's JS-only), so that |
| 68 | + one is genuinely safe to leave unchanged. |
| 69 | +- [gap] Live click-through of the reorganized macOS menu bar and a real |
| 70 | + "update available" notification have not been manually exercised on a |
| 71 | + physical Mac — verification here is CI (`swift test`) plus static review, |
| 72 | + not an interactive smoke test. |
| 73 | + |
3 | 74 | ## macOS menu reapply/open ChatGPT restart fix (2026-08-05) |
4 | 75 |
|
5 | 76 | - [scope] Branch `codex/fix-macos-reapply-open-chatgpt` was created from latest |
|
0 commit comments