Skip to content

mac, ios: the deliverable card is the work, not a card about it - #302

Merged
stupart merged 1 commit into
mainfrom
feat/deliverable-card
Sep 16, 2026
Merged

stupart merged 1 commit into
mainfrom
feat/deliverable-card

Conversation

@stupart

@stupart stupart commented Sep 16, 2026

Copy link
Copy Markdown
Owner

"just like an image or preview of the work with little or no text … aspect ration can change to fit deliverable better. also remove the weird star thing for deliverables and other unecessiary details that diverge from your mockups"

The card

was now
preview image letterboxed into a fixed 260 pt slot the deliverable's own aspect ratio, capped at 420
edge 1 pt ring in statusReview.opacity(0.35) plain hairlineStrong — the lab's --hair2
fill raised none; hover only
text uppercase "DELIVERABLE" eyebrow · summary · file path · expand arrow the summary, and nothing else

The lab's .dc is box-shadow:inset 0 0 0 1px var(--hair2) holding a thumbnail and one line of words — no tint, no fill, no eyebrow. The app had drifted into being a card about a deliverable instead of a look at one.

The star

Never in the mockups. The lab renders this mark as ic('check') on --ready (line 895); §5's state language says "ready green circle with ✓"; and star appears in the lab exactly once, as the icon for the none type — "No link". So a star on every deliverable said "special" where the type should have said website, document or image.

Seven sites, all now the check: the conversation's review row, the ledger mark, the Deliverable pane caption, the keyboard legend, the card's fallback symbol, and both phone sites (StatusMark.symbol and ReviewCard). The legend moves with them or it explains a glyph the app no longer draws.

Not in this PR: the phone's review card layout. Only its mark changed — that surface is a different, simpler thing and wasn't what was pointed at.

Gate: bun test 2311/0 · tsc clean · swift test 138/0 · Mac + iOS both build (CI builds neither) · 9 mutations, 9 killed.

🤖 Generated with Claude Code

https://claude.ai/code/session_01SfEX6bfwCGXtThk1JRNmsE

Tyler: "just like an image or preview of the work with little or no text …
aspect ration can change to fit deliverable better. also remove the weird star
thing for deliverables and other unecessiary details that diverge from your
mockups".

The card had grown four labels around the picture — an uppercase "DELIVERABLE"
eyebrow in the review colour, the summary, the file path and an expand arrow —
inside a ring tinted with the review colour. The lab's `.dc` is none of that:
`box-shadow:inset 0 0 0 1px var(--hair2)`, a thumbnail, and one line of words.
What is left here is the preview, a plain hairline, and the summary — the one
line that stays, because without it a picture of a website is a picture of a
website and the card never says which one this session filed.

The preview now keeps the deliverable's OWN aspect ratio rather than a
letterboxed 260 pt slot, so a wide screenshot and a tall capture are different
shapes instead of one shape with half of it empty. Capped at 420 so a very tall
capture cannot run away with the conversation's scroller.

The star was never in the mockups. The lab draws this mark as `ic('check')` on
`--ready` (line 895), §5's state language calls it "`ready` green circle with
✓", and `star` appears in the lab exactly once — as the icon for the `none`
type, "No link". It was in five places on the Mac and two on the phone. All
seven are the check now, including the legend that explains the ledger's
glyphs and would otherwise describe a mark the app no longer draws.

Deliberately NOT here: the phone's review card itself. Only its mark moves —
that card is a different, simpler surface, and redesigning it was not what was
asked for.

Gated: bun test 2311/0, tsc clean, swift test 138/0, Mac and iOS both build
(CI builds neither). Nine mutations across the card's chrome, the aspect ratio
and all seven marks; nine killed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SfEX6bfwCGXtThk1JRNmsE
@stupart
stupart merged commit eb6aa95 into main Sep 16, 2026
2 checks passed
stupart added a commit that referenced this pull request Sep 16, 2026
Tyler: "probably time to remove the emoji from the app names too."

Both bundles were already plain — `CFBundleDisplayName` is `conch` on the Mac
and the phone — and iOS had already swapped its 🐚 for the real icon, with the
reason recorded in PairingView: the emoji was "a different shell from the one on
the home screen they just tapped — the app introducing itself as something other
than the thing they opened".

The terminal was the last surface still wearing one, in six places: the dashboard
header, the CLI banner, the setup banner, the version banner, the first-run
DO THIS FIRST line, and the README title.

Three existing guards pinned the old chrome and are repointed here. Their claims
were never about the glyph: status.test and panel.test assert the dashboard names
itself, and setup.test asserts the already-open-session fix comes FIRST.

NOT touched, deliberately: several tests carry a 🐚 as fixture data because it is
a four-byte character, and they exist to prove a frame split mid-character still
decodes (records-store, control-framing, mcp, tts-worker). Deleting those would
quietly remove the thing under test. A guard now asserts they keep it.

Still inconsistent, and left for its own slice: the terminal says `⭐ needs
review` (panel.ts, status.ts) where both apps now say a green check, since #302.
One fleet, two vocabularies — but that is a status glyph, not a name.

Verified: bun test 2341/0, tsc clean. Seven mutations, seven killed — including
one that deletes the header's NAME rather than its glyph, which is the way a
change like this actually goes wrong.


Claude-Session: https://claude.ai/code/session_01SfEX6bfwCGXtThk1JRNmsE

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
stupart added a commit that referenced this pull request Sep 16, 2026
#302 moved seven sites in the Mac and iOS apps from a star to a green check,
after Tyler: "review ready already has big green check i dont think we also need
to bold it." The two terminal surfaces were not in that slice, so the same
session showed a star in tmux and a check in both apps.

Five sites: the compact header's glyph, `fullStatus`, the panel's REVIEW_GLYPH,
the inline deliverable line above a reply, and the comment describing the order.

Green because that is what the apps draw — `ConchColor.ready` is #30B35A, and
the lab's `--ready` is the same. The star's `\x1b[33m` was yellow.

Fifteen assertions pinned the star across status.test and panel.test. Every one
of their claims is "a review-ready row is marked"; the glyph was incidental, so
the literals moved and the claims did not.

NOT changed, and reported instead: the terminal contradicts ITSELF about the
waiting colour. `status.ts` paints it yellow in the compact header (guarded, with
a comment: "waiting is now yellow — a finished turn is sitting on you") and green
in `fullStatus`; `panel.ts` paints it green. That is three sites and a state-
language decision, not a review fix, so it stays Tyler's call.

Verified: bun test 2345/0, tsc clean, swift test 138/0. Seven mutations, seven
killed — including two that matter more than the others. Deleting snippet.ts's
stripping range killed the speech test, so that test measures behaviour rather
than passing vacuously. Drifting the Mac app back to `star.fill` killed the
cross-surface test, so the apps are held, not merely described.

The audible failure mode was checked by running it, not by reading the regex:
`speakable("✓ needs review")` returns "needs review". Nothing reads the glyph
into your ear.


Claude-Session: https://claude.ai/code/session_01SfEX6bfwCGXtThk1JRNmsE

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant