Skip to content

feat(theme): repoint unthrown to teal, retire demesne and start - #40

Merged
btravers merged 2 commits into
mainfrom
feat/unthrown-teal
Aug 8, 2026
Merged

feat(theme): repoint unthrown to teal, retire demesne and start#40
btravers merged 2 commits into
mainfrom
feat/unthrown-teal

Conversation

@btravers

@btravers btravers commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Why teal

amqp-contract wears RabbitMQ's orange and temporal-contract wears Temporal's indigo — both borrowed, both meaningful. unthrown has no upstream brand, so its color has to mean something about the library itself.

The signal register has exactly three colors: red stop, amber caution, green all-clear. unthrown's entire argument is that error handling does not belong in that register. A modelled failure isn't a light on a dashboard you react to — it's a value in your type signature you already covered. Teal is the one hue here that isn't a traffic light. Not a signal, a value.

Which is also why not red. Red says this went wrong, and the name means the error was not flung up the stack. Structurally it's worse: red is the color the defect channel deserves — the one thing that still throws, and the library's actual innovation. Spend it on the whole package and there's nothing left to express the distinction that makes unthrown worth having. ("Forbidden sign" red doesn't apply either: prohibition red bans a subject, and unthrown doesn't ban errors, it welcomes them as values. What it bans is throw — an absence.)

Green wasn't wrong so much as imprecise. In a three-variant library green is Ok — branding the whole thing with one of its own variants, and the least interesting one. Teal is that same "no surprises" reading said better: not everything is fine, but everything is accounted for. Composure, not success.

The collision it also fixes

--pkg-unthrown was byte-identical to --bt-green, the org's checkmark ink (--green / --text-green). So unthrown was the only card where the in-panel checkmarks matched the accent, and the only package whose "own" accent was org chrome — exactly what design.md's multi-accent rule forbids. Those three tokens are untouched and now uncontested.

Numbers

on #100f12 card as text on #FAF9FA sat
teal #3FB0A5 7.25 5.01 (AA) 64%
old green #46B86C 7.58 4.80 (AA) 62%
red #E5484D (rejected) 4.88 6.99 69%

Red was also the dimmest candidate on the canvas — the "hard" color is the weak one there.

The logo's no-throw sign (circle + diagonal slash) moves with the token: #3FB0A5 dark, #2F847C light, keeping the pair's existing 0.75 ratio. Both clear the 3:1 non-text threshold that applies to a 6.5px stroke, and the light variant improves on the old green (4.24 vs 4.08).

Cleanup

demesne and start are gone (both repos 404), so --pkg-demesne, --pkg-start, their design.md rows and token-block lines, and four orphaned logo SVGs go with them. beet-worker-*.svg stays — design.md defines it as the maturity-chip marker, not a package. CHANGELOG.md and .hallmark/log.json still name them, as history should.

Minor changeset on @btravstack/theme. Landing builds clean; teal is in the emitted CSS and no pkg-demesne / pkg-start survives.

Companion

btravstack/unthrown needs the matching --accent and asset swap — separate PR.

Red is stop and green is all-clear. A modelled error is neither — unthrown's
whole claim is that a failure is not an emergency but an anticipated case,
typed in E and matched exhaustively. So the accent moves outside the signal
register entirely: not a signal, a value.

#46B86C was also byte-identical to --bt-green, the org's checkmark ink, so
unthrown was the one package whose "own" accent was org chrome — the thing the
multi-accent rule forbids. --bt-green / --green / --text-green are untouched
and now uncontested.

The logo's no-throw sign (circle + slash) moves with it: #3FB0A5 on dark,
#2F847C on light, keeping the pair's existing 0.75 ratio. Both clear the 3:1
non-text contrast threshold, and the light variant improves on the old green
(4.24 vs 4.08 on #FAF9FA).

demesne and start no longer exist, so their tokens, design.md rows and logo
assets go with them. CHANGELOG.md and .hallmark/log.json still name them, as
history should.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the shared theme’s package-accent system by moving unthrown to a new teal accent and cleaning up retired package artifacts, keeping the design system documentation aligned with the published tokens.

Changes:

  • Repoint --pkg-unthrown from green to teal (#3FB0A5) in the canonical token source.
  • Remove retired package accents (--pkg-demesne, --pkg-start) from the design system and token export.
  • Update unthrown logo strokes to match the new accent, and delete demesne/start logo SVGs.

Reviewed changes

Copilot reviewed 3 out of 9 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
packages/theme/src/tokens.css Updates exported per-package accent tokens (unthrown → teal; removes demesne/start).
design.md Updates design-system docs to reflect the current set of package accent tokens.
apps/website/public/logos/unthrown-light.svg Updates light logo stroke color to match the new unthrown accent variant.
apps/website/public/logos/unthrown-dark.svg Updates dark logo stroke color to match the new unthrown accent.
apps/website/public/logos/start-light.svg Deletes retired start logo asset.
apps/website/public/logos/start-dark.svg Deletes retired start logo asset.
apps/website/public/logos/demesne-light.svg Deletes retired demesne logo asset.
apps/website/public/logos/demesne-dark.svg Deletes retired demesne logo asset.
.changeset/teal-unthrown-accent.md Adds a Changesets entry for the token/asset updates.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .changeset/teal-unthrown-accent.md
`./tokens.css` is a declared export of @btravstack/theme, so its custom
properties are public API and dropping --pkg-demesne / --pkg-start is breaking
by the letter — regardless of the fact that the projects they named are gone and
no repo in the org referenced them. Deprecated aliases were the other option
Copilot offered and are worse: an alias would point at a package that no longer
exists.

From Copilot's review on #40.
btravers added a commit to btravstack/unthrown that referenced this pull request Aug 8, 2026
* feat(docs): repoint the accent from green to teal

Matches btravstack/btravstack.github.io#40, which carries the reasoning: red is
stop and green is all-clear, and a modelled error is neither — so the accent
sits outside the signal register. Not a signal, a value.

The hero glyph is masked and painted with --accent, so it tracks the token on
its own. The three logo copies and the four feature icons hardcode the hex and
are swapped by hand: #46B86C -> #3FB0A5, and the light logo's #348A51 ->
#2F847C, keeping the pair's existing 0.75 ratio.

* docs: correct the accent comment's derived-shade list and spelling

The comment claimed @btravstack/theme derives the feature icons from --accent.
It does not — public/icons/*.svg hardcode the hex, which is why this branch had
to swap all four by hand. The claim predates this PR; it is corrected rather
than carried forward, and now names the hardcoding as the trap it is.

"modelled" -> "modeled", the spelling used by the other 288 occurrences.

Both from Copilot's review on #198.
@btravers
btravers merged commit 335b615 into main Aug 8, 2026
@btravers
btravers deleted the feat/unthrown-teal branch August 8, 2026 19:56
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.

2 participants