From aaa9ce6b9932b439f67a96b5d72db0bb11930448 Mon Sep 17 00:00:00 2001 From: gaopengbin <1804287165@qq.com> Date: Sat, 1 Aug 2026 13:28:47 +0800 Subject: [PATCH 1/2] Fix Codex 535 root landmark --- src/adapters/codex.mjs | 3 ++- tests/adapters.test.mjs | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/adapters/codex.mjs b/src/adapters/codex.mjs index c5ea629..bbb2f1e 100644 --- a/src/adapters/codex.mjs +++ b/src/adapters/codex.mjs @@ -7,6 +7,7 @@ const codex = { defaultPort: 9335, lastVerified: { darwin: { appVersion: "26.707.72221", build: "5307", verifiedAt: "2026-07-16" }, + win32: { appVersion: "26.727.6591", build: "535", verifiedAt: "2026-08-01" }, }, rendererProfiles: { [codexThemeV1Profile.id]: codexThemeV1Profile, @@ -39,7 +40,7 @@ const codex = { // The root landmark is the only blocking check: it doubles as the // "app finished booting" signal and the minimal app fingerprint. Everything // else warns — the sidebar collapses, and CSS is inert on absent nodes. - rootAny: ["main.main-surface"], + rootAny: ["main.main-surface", "#root main"], recommended: [ { name: "sidebar", any: ["aside.app-shell-left-panel"] }, { name: "composer", any: [".composer-surface-chrome"] }, diff --git a/tests/adapters.test.mjs b/tests/adapters.test.mjs index 1017c12..62b87d6 100644 --- a/tests/adapters.test.mjs +++ b/tests/adapters.test.mjs @@ -30,7 +30,12 @@ test("Codex verification keeps only current cross-route landmarks", () => { build: "5307", verifiedAt: "2026-07-16", }); - assert.deepEqual(adapter.verification.rootAny, ["main.main-surface"]); + assert.deepEqual(adapter.lastVerified.win32, { + appVersion: "26.727.6591", + build: "535", + verifiedAt: "2026-08-01", + }); + assert.deepEqual(adapter.verification.rootAny, ["main.main-surface", "#root main"]); // Only the root landmark blocks: the sidebar collapses and other panels are // route-dependent, so every other landmark is warning-level. assert.equal(adapter.verification.required, undefined); From e32ec38696a3ff8fc0d018f20f26d93c31013d30 Mon Sep 17 00:00:00 2001 From: gaopengbin <1804287165@qq.com> Date: Wed, 12 Aug 2026 10:39:37 +0800 Subject: [PATCH 2/2] test: guard Codex root fallback scope --- src/adapters/codex.mjs | 2 ++ tests/adapters.test.mjs | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/adapters/codex.mjs b/src/adapters/codex.mjs index bbb2f1e..16b0f08 100644 --- a/src/adapters/codex.mjs +++ b/src/adapters/codex.mjs @@ -40,6 +40,8 @@ const codex = { // The root landmark is the only blocking check: it doubles as the // "app finished booting" signal and the minimal app fingerprint. Everything // else warns — the sidebar collapses, and CSS is inert on absent nodes. + // Keep fallbacks anchored to #root: bare main/[role="main"] selectors also + // match route content and auxiliary surfaces, so they are not app landmarks. rootAny: ["main.main-surface", "#root main"], recommended: [ { name: "sidebar", any: ["aside.app-shell-left-panel"] }, diff --git a/tests/adapters.test.mjs b/tests/adapters.test.mjs index 62b87d6..add1f2c 100644 --- a/tests/adapters.test.mjs +++ b/tests/adapters.test.mjs @@ -36,6 +36,8 @@ test("Codex verification keeps only current cross-route landmarks", () => { verifiedAt: "2026-08-01", }); assert.deepEqual(adapter.verification.rootAny, ["main.main-surface", "#root main"]); + assert.ok(!adapter.verification.rootAny.includes("main")); + assert.ok(!adapter.verification.rootAny.some((selector) => selector.includes('[role="main"]'))); // Only the root landmark blocks: the sidebar collapses and other panels are // route-dependent, so every other landmark is warning-level. assert.equal(adapter.verification.required, undefined);