feat(website): retire the last stale positioning from the brand assets - #1051
Merged
Conversation
One card kit on the site's own light surface, showing the approval beat inside the site's browser frame. Records two constraints found while prototyping: Satori kills the render worker on WebP, so card art must be generated PNG; and Inter and the mono face are fetched from Google Fonts on every render, so they should be bundled like Garamond already is. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…a real mark The card was dark, centred, and built from a seam and a glow that exist nowhere else, so the light page it opened looked like a different product. It now renders on the site's own ground through a shared kit: the rail rule and mono eyebrow, the BrowserFrame with its traffic lights, the pills, the wordmark. Inside the frame, three beats drawn rather than screenshotted — an ask, a proposal, and an Approve/Decline pair — so the card shows the human-in-the-loop claim the copy makes. The blog card moves onto the same kit, which retires the near-black blue it alone used. The airplane emoji is replaced by a drawn paper plane, shared by the nav and footer wordmark, the card, src/app/icon.svg as the favicon, a regenerated favicon.ico, and a square logo that finally lets the Organization structured data assert a logo. Two constraints found while prototyping and recorded in the spec: Satori kills the render worker on WebP, which rules out every screenshot we own; and Inter and the mono face were fetched from Google Fonts on every render, failing silently when unreachable. All four faces are now bundled, instanced and subset by scripts/build-card-fonts.py, and together are smaller than the one unsubsetted Garamond they replace. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The README banner and the overview whitepaper cover were the two surfaces still asserting taglines we had replaced: "Production-ready agent UI" on a navy-and-periwinkle banner in a palette the site never used, and "Agent UI for Angular" under the eyebrow "Threadplane · Enterprise Angular Agent UI". The banner is redrawn to match the social card — tinted ground, rail rule, mono eyebrow in accent navy, serif wordmark with the paper plane — using generic font stacks, because GitHub serves it as a bare image with no stylesheet of ours. The cover is fixed at both ends: the generator config's eyebrow, so a future regeneration is right, and the rendered artifact, so today's PDF is. The refresh script grew a retired-copy pass to do it, since regenerating properly means paying for LLM chapter prose nobody wanted to change. A new spec scans every artifact that states positioning but is not generated from positioning.ts — the banner, the cover, the generator, and the eight READMEs — against a list of retired phrases. Both the list and the scan are mutation-tested. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
blove
enabled auto-merge (squash)
September 7, 2026 20:51
Contributor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two surfaces were still asserting taglines we had already replaced, because neither is generated from
positioning.ts.The three guide covers are deliberately untouched. "The Enterprise Guide to Generative UI in Angular" is the name of a document, not a claim about what the product is.
The guard
A new
brand-assets.spec.tsscans every artifact that states positioning but is not generated frompositioning.ts— the banner, the cover, the generator config, and the eight READMEs — against aRETIRED_POSITIONINGlist on the public-copy contract. That list is where a phrase goes in the same change that retires it.Both halves are mutation-tested: reintroducing a retired tagline into the banner fails the suite, and the list is asserted non-trivial so an empty list cannot pass every file silently.
Verification
vitest run --root apps/websiteon top of main: 1353 passed.🤖 Generated with Claude Code