diff --git a/docs/branch-review-ledger.md b/docs/branch-review-ledger.md index 59fe2363..e933c487 100644 --- a/docs/branch-review-ledger.md +++ b/docs/branch-review-ledger.md @@ -1052,6 +1052,10 @@ This file is append-only. Never rewrite or delete an existing review record; app | 2026-07-26 | PR #1246 / `codex/standardize-header-and-footer-behavior` | `de4864ef06626931ecd6bd22b97387f80f529cb2` | Production UI second-failure repair | APPROVE pending final hosted required CI. The first repair exposed a second invalid assumption in the same new test: `/formulation/worry` does not own a fixed phone dock, so geometry used the `-1` missing sentinel. Replaced it with the established submitted Forms result route, explicitly waiting for the dock and unfocused composer before asserting paint and scroll-hide geometry. | Exact focused production Chromium test pass 1/1 (isolated Next build); Prettier, ESLint and `git diff --check` pass; prior hosted run had 290/291 Production UI tests pass with this single invalid-route assertion. | +| 2026-07-26 | PR #1246 / `codex/standardize-header-and-footer-behavior` | `547d3a100c73333895554cf66eb0efd8d8dde8da` | Late unresolved review-thread verification and fix | APPROVE pending final hosted required CI. Confirmed the open P2 despite a bot summary claiming it was fixed: opaque phone `.edge-glass-header` / `.universal-header` still inherited `backdrop-blur-xl`. Added standard and WebKit `backdrop-filter: none` overrides and static/computed-style guards. | Prettier, ESLint and `git diff --check` pass; focused local Vitest/browser reruns blocked by consecutive legitimate shared-lock owners, so hosted Static/Unit/Production UI remain the merge gate. | + +| 2026-07-26 | PR #1256 / `codex/pr1246-header-blur-followup` | correction to `547d3a100c73333895554cf66eb0efd8d8dde8da` | CSS prefix contract correction | FIXED. Hosted Unit coverage exposed the repository guard forbidding hand-authored `-webkit-backdrop-filter`; retained the standard `backdrop-filter: none` source rule and removed the duplicate vendor declaration, which the CSS toolchain owns. This supersedes only the prior row's claim that both declarations should be authored. | Targeted `clinical-dashboard-merge-artifacts` and mobile paint contract rerun required; Production UI continued separately. | + | 2026-07-26 | PR #1238 / `cursor/header-hide-top-bar-only-4fd7` | `fdc20bfedb61a2c267c22a3d78ccc8214e6c0087` | Continue-executing: top-bar-only hide + CI green | APPROVE / MERGEABLE. Root cause fixed: collapse wraps only `header#search` (+ Therapy addon); sticky hosts pin outer [top bar \| search] below `chrome-safe-area-top` without translating search away; sticky-stack composers stay `relative`. Services rail overlay hardened (testids + center scrollIntoView); ui-tools accepts sticky ancestor; Therapy nav assert uses collapse-host top under safe-area spacer. Merged main safe-area + submitted-result focus rules. | Hosted PR required + Production UI SUCCESS on tip; contract 14/14; focused Playwright services/desktop composers 6/6, chrome-scroll 12/12, therapy-nav 1/1. No provider-backed checks. | | 2026-07-26 | PR #1238 / `cursor/header-hide-top-bar-only-4fd7` | head `db4390b3814910d0210497e2982414904f2e0704` / squash `cdbe0e662366f9308813e8d5fe8951ca11a47d6b` | prlanded after squash merge | LANDED. Top-bar-only hide-on-scroll with sticky search stack below `chrome-safe-area-top`; two-dot content diff empty vs `origin/main`. Remote feature branch deleted at merge. Required CI green at merge (PR policy, PR required, Production UI). | `gh pr view` MERGED; `git diff origin/main db4390b3` empty; no provider-backed checks. | | 2026-07-26 | cursor/formulation-a11y-linear2-14d4 (PR #1250) | head `14b4e80ee41b16a80c974b6a1f8201407a0df05b` / squash `b91b4600171be08198e92bcf19b7d67e8207cb2f` | prlanded after squash merge | LANDED. Formulation disabled-state accessibility (#064) on main; product two-dot diff empty vs pre-merge tip. Superseded conflicted PRs #1219, #1223, #1226, #1231, #1249 closed. Remote feature branch deleted at merge. | Focused Chromium formulation 7/7; verify:cheap 3473 tests; hosted Production UI + PR required SUCCESS; `git diff 14b4e80e origin/main -- formulation-builder-page.tsx ui-formulation.spec.ts` empty. No provider-backed checks. | diff --git a/src/app/globals.css b/src/app/globals.css index 2480bca1..ad09367b 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -1385,6 +1385,7 @@ summary::-webkit-details-marker { .edge-glass-header, .universal-header { background: var(--surface); + backdrop-filter: none; } .edge-glass-header-backdrop, diff --git a/tests/mobile-chrome-paint-contract.test.ts b/tests/mobile-chrome-paint-contract.test.ts index eee943d9..eb9b2f51 100644 --- a/tests/mobile-chrome-paint-contract.test.ts +++ b/tests/mobile-chrome-paint-contract.test.ts @@ -9,7 +9,7 @@ describe("mobile chrome paint baseline", () => { const phoneStyles = globalStylesSource.slice(globalStylesSource.indexOf("@media (max-width: 639px)")); expect(phoneStyles).toMatch( - /\.edge-glass-header,\s*\n\s*\.universal-header\s*\{\s*\n\s*background: var\(--surface\)/, + /\.edge-glass-header,\s*\n\s*\.universal-header\s*\{[\s\S]*?background: var\(--surface\);[\s\S]*?backdrop-filter: none/, ); expect(phoneStyles).toMatch(/\.edge-glass-header-backdrop[\s\S]*?display: none/); expect(phoneStyles).toMatch(/\.answer-footer-search-dock\.answer-footer-search-edge[\s\S]*?bottom: 0;/); diff --git a/tests/ui-phone-scroll.spec.ts b/tests/ui-phone-scroll.spec.ts index 0b2e6a08..0c228c4d 100644 --- a/tests/ui-phone-scroll.spec.ts +++ b/tests/ui-phone-scroll.spec.ts @@ -174,6 +174,7 @@ test("phone chrome has an opaque header, one edge-to-edge footer, and releases b const dockRect = dock?.getBoundingClientRect(); return { headerBackground: header ? getComputedStyle(header).backgroundColor : "", + headerBackdropFilter: header ? getComputedStyle(header).backdropFilter : "", headerBackdropDisplay: headerBackdrop ? getComputedStyle(headerBackdrop).display : "missing", dockBackdropDisplay: dockBackdrop ? getComputedStyle(dockBackdrop).display : "missing", dockLeft: dockRect?.left ?? -1, @@ -184,6 +185,7 @@ test("phone chrome has an opaque header, one edge-to-edge footer, and releases b }); expect(visible.headerBackground).toMatch(/^rgb\(/); + expect(visible.headerBackdropFilter).toBe("none"); expect(visible.headerBackdropDisplay).toBe("none"); expect(["missing", "none"]).toContain(visible.dockBackdropDisplay); expect(visible.dockLeft).toBeCloseTo(0, 0);