Skip to content

macapp round 11: single-row header, one selection, half-weight rules #1075

Description

@dennisonbertram

Round 11 of the Codex gauntlet. Two of the loudest findings are regressions introduced by round 10.

Confirmed closed in round 10 — do not revisit

Header rule #3C3C3C, sidebar footer rule #393939, sidebar width 310pt. All three verified lighter-than-surface, i.e. real rules rather than antialiasing.

Regressions introduced by round 10

Two simultaneous selection highlights. Restoring the nav fill gave the sidebar two #333333 bands — the "Chat" nav row (y 62–98) and the conversation row (y 131–168) — with identical fill, height and inset. Nothing distinguishes current from adjacent. The reference has exactly one in a 1024pt-tall sidebar.

The overflow menu is back at #FFFFFF. Round 9 measured it at #8B8B8B after moving to .tint. Round 10 set the header title to Theme.foreground, and the menu appears to have followed. Reference is #8B8B8B; ours now matches the title beside it, inverting the hierarchy again.

Objective

1. Header is 87% too tall and the title truncates beside a 402pt void — STRUCTURAL, loudest

Reference: traffic lights and conversation title share one row (lights centre y=28, title ink y=21.0–36.0); rule at y=55.0.
GoCode: app name on the titlebar row, conversation title on a second row (ink y=71.0–86.5); rule at y=103.0. The title truncates at x=820 with an ellipsis, the "···" sits at x=854.5, then nothing until a lone chevron at x=1268 — a 402pt void in a 1057pt row. The title is being squeezed while 38% of its row is empty.

2. One selection, not two — STRUCTURAL (regression, above)

3. Every rule and border is 2× the reference's weight — COSMETIC, but it is every line in the app

Reference: 0.5pt (1 raw px) for composer border, header rule, footer rule, sidebar divider. GoCode: 1.0pt (2 raw px) for all four. Colours match on three; the sidebar divider does not — reference #434343, ours #2F2F2F.

4. Overflow menu ink — COSMETIC (regression, above)

5. Corner radii ~40% short on the two smallest surfaces — COSMETIC

User bubble: reference r≈18pt, ours r≈10pt. Selected sidebar row: r≈10pt vs r≈6pt on identical 36pt rows. Composer is close (24 vs 20pt).

6. Transcript vertical rhythm is inverted — STRUCTURAL

rule→bubble bubble→tool label label→rule rule→body
Reference 39.0pt 62.0pt 13.0pt 25.5pt
GoCode 65.5pt 19.5pt 9.5pt 19.5pt

The reference opens tight then breathes before the tool block; ours opens loose then crams the tool block 3.2× tighter. Every later gap is ~25% short.

7. Tool-activity label is a second, smaller type size — STRUCTURAL

Reference runs the transcript at one size and separates the tool row by colour alone: body cap 12.0pt, "Worked" cap 12.0pt, ratio 1.00. Ours shrinks and dims it: 12.5pt vs 10.0pt, ratio 0.80.

8. Zero accent colour anywhere — STRUCTURAL

Reference sidebar carries 2,329 chromatic px as a status channel: #E0A030 identity avatar, #90C0F0 unread dots, #A070F0 branch marker. Ours: 0 chromatic px in the entire app. Both transcripts are 0/0, so this is confined to the sidebar.

Out of Scope

Measured exact and not to be touched: content column width (883.0 vs 883.5pt), body type size and x-height, all five surface fills, all four rule colours, composer placeholder, section-header #747474, selected-row fill and geometry, composer insets, bubble padding, send-button size.

Lower-ranked, a later round: action-icon row pitch, sidebar text column alignment, toolbar icon mismatch, composer elevation halo, send-button fill, window top hairline, chip label brightness, footer identity row, chip icon sizing (improved from 48%/85% to 19%/46%, not closed).

Acceptance Criteria

  • Header ≈55pt with the title on the window-control row and the full row available to it
  • Exactly one #333333 band in the sidebar
  • All four rules 0.5pt; sidebar divider #434343
  • Overflow menu #8B8B8B
  • Bubble radius ≈18pt, selected row ≈10pt
  • Transcript gaps within ~15% of the reference's four measurements
  • Tool label the same cap height as body, separated by colour alone
  • Every claim probed on the running app; rules verified lighter-than-surface and measured for weight in raw px

Test Requirements

  • A test asserting only one selection token can be applied per sidebar
  • Rule-weight token test (0.5pt)
  • Radius token tests
  • Existing 189 Swift tests keep passing

Dependencies

Round 10 (#1074, PR #1072).

Metadata

Metadata

Assignees

No one assigned

    Labels

    taskScoped engineering task

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions