Two visible regressions in Image #44: 1. Bottom nav reverted to no-background even though earlier runs worked. GPT-5.5 wrapped its bottom nav in a single-child section: root > frame{role:'section',id:'bottom-tabs-root'} > frame{role:'bottom-tab-bar'} > [tabs] The inject pass only walked DIRECT children of root and bailed on the section wrapper. Now we hop one level when the wrapper is a single-child section AND its sole child is a nav-role frame, so the nested nav gets the surface fill + position-aware shadow. Multi-child sections still bail (those are real content sections, not wrappers). 2. Banner "Order now" CTA shipped with white text + dark icon. My prior contrast fix used a luminance-delta threshold of 0.4, but #0F172A icon vs #F97316 (orange accent) actually has delta 0.48 — the threshold said "good contrast, leave it alone" while the user sees an obvious mismatch with the white text label. Wrong axis: the user's complaint is about CONSISTENCY (icon should read as the same token as text), not raw contrast. Refactored fixButtonForegroundContrast: PASS 1 — find a "reference" foreground from sibling text fill (after refs resolve). The model's own text color is the authoritative signal for what the button's foreground should look like, regardless of what bg/fg luminance suggests. PASS 2 — for each icon_font sibling, override when its resolved hex differs from the reference fg. Icon-only buttons (no text sibling) fall back to a luminance-based check at threshold 0.5 — catches dark-on-dark / light-on- light pairs that motivated the original rule, without the false-negative on saturated mid-luminance bgs (orange). 3 new tests: wrapper-section nav reach, multi-child wrapper bail, and the regression test for the original "dark-on-dark icon-only button" still passing under the new luminance-fallback path. 141 tests in the affected suites all green. Side effect: applyNavSurfaceFill now bails entirely (returns false) when the nav already has a fill — earlier version still added a shadow even when fill was preserved, which violated the "preserves sub-agent intent" semantics the existing tests rely on. |
||
|---|---|---|
| .. | ||
| public | ||
| server | ||
| src | ||
| CLAUDE.md | ||
| components.json | ||
| dev.ts | ||
| package.json | ||
| tsconfig.json | ||
| vite.config.ts | ||