Skip to content

the app is called conch, and does not wear a shell - #309

Merged
stupart merged 1 commit into
mainfrom
feat/no-emoji
Sep 16, 2026
Merged

stupart merged 1 commit into
mainfrom
feat/no-emoji

Conversation

@stupart

@stupart stupart commented Sep 16, 2026

Copy link
Copy Markdown
Owner

"probably time to remove the emoji from the app names too"

Both bundles were already plain (CFBundleDisplayName = conch on Mac and iOS), 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 wearing one, in six places:

where was
panel.ts:869 the dashboard header
cli.ts:82 the CLI banner
install.ts:271 the setup banner
install.ts:784 the version banner (conch doctor)
install.ts:215 the first-run DO THIS FIRST line
README.md:1, :204 the title

Guards

Three existing guards pinned the old chrome and are repointed — none of their claims was ever about the glyph. status.test/panel.test assert the dashboard names itself; setup.test asserts the already-open-session fix comes first.

Deliberately kept

Several tests carry a 🐚 as fixture data, because it's a four-byte character and they exist to prove a frame split mid-character still decodes (records-store, control-framing, mcp, tts-worker). Removing those would quietly delete the thing under test — so a new guard asserts they keep it.

Still inconsistent, next slice

The terminal says ⭐ needs review where both apps now show a green check (since #302). One fleet, two vocabularies — but that's a status glyph, not a name, so it isn't bundled here.

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

🤖 Generated with Claude Code

https://claude.ai/code/session_01SfEX6bfwCGXtThk1JRNmsE

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.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SfEX6bfwCGXtThk1JRNmsE
@stupart
stupart merged commit 0c91136 into main Sep 16, 2026
stupart added a commit that referenced this pull request Sep 17, 2026
)

Tyler circled it on his phone: a shell still beside the word "conch" in the
ledger header, after #309 had supposedly taken the emoji off every surface that
names the app.

#309 removed the literal 🐚. Both apps wrote it as `Text("\u{1F41A}")` — the
Mac's title strip and the phone's toolbar. A grep for the character cannot see a
code point, so the sweep passed and the emoji shipped. The guard written at the
time had the same blind spot: `not.toContain("🐚")` is satisfied trivially by an
escape.

A sweep for one spelling of a thing is not a sweep for the thing. The guard now
checks the CODE POINT across all four surfaces — no source writes it in prose,
so that is safe everywhere — and the literal character everywhere except
PairingView, whose comment ("The real icon, not the 🐚 emoji it replaced")
records why that screen dropped the emoji. Deleting the comment to satisfy a
sweep would delete the reason.

Both comments arguing FOR the shell went with it. One claimed "Same wordmark,
same mark, wherever you look at conch" — which is now the opposite of what the
code does, and a comment left arguing against its own code is how the
`--shRaised` note misled this session for an hour.

Kept on purpose: `Image("ConchMark")` on the pairing screen and
`ConchMark.statusImage` in the menu bar. Those are the drawn icon, not an emoji,
and the menu bar has nothing else to draw. Both are guarded.

Verified: bun test 2357/0, tsc clean, swift test 138/0, both apps build. Four
mutations, four killed — the escaped shell returning to each header, the
wordmark being deleted along with the glyph, and the pairing screen losing its
real mark.


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