Skip to content

feat(brand)!: a mark drawn in the 0.4.0 system, and generated rather than kept - #23

Merged
fajarhide merged 2 commits into
mainfrom
feat/brand-0.4.0
Aug 7, 2026
Merged

fajarhide merged 2 commits into
mainfrom
feat/brand-0.4.0

Conversation

@fajarhide

Copy link
Copy Markdown
Contributor

The old mark was amber on navy inside a circle. Both colour families were
deleted in 0.4.0, so it was the last thing here still arguing for an identity
nothing else uses.

The new one is a superellipse in the dark theme's two neutrals with the system
blue over it. Continuous corners are the one signature this system spends
anything on, and an icon is where that reads first, at 16px, before any colour
is legible. The glyph repeats the treatment: flat caps so the W sits on a line
and reads as drawn rather than written, round joins at the three vertices.

It is generated. scripts/make-brand.mjs computes the squircle from
|x|^n + |y|^n = 1 at n = 5 and renders public/logo.svg plus the three
rasters from that one source. npm run brand.

A logo is the asset nobody rebuilds when a token moves, so two tests hold it to
the package: the generator's three colours must equal the resolved values of
dark.muted, dark.background and dark.ring, and logo.svg may carry no
other colour. Both were verified failing by putting the old amber back.

The OG image is rebuilt on the same palette, inlines the same SVG, and spends
colour once, on the prompt in the install line. It moves to the Node runtime to
read the mark off disk, which also makes the route static instead of dynamic.

weekndlabs.com/design picks all of this up on its own: the docs chrome loads
/logo.png and the favicons by absolute URL. weekndlabs/design#34 removes the
CSS corner it was putting on top of them.

npm test        # 16 pass, 0 fail
npm run build   # compiled, /opengraph-image now static

Checked at 512, 128, 64, 32 and 16, and in the navbar in both themes.

The subhead restated the product grid sitting directly below it, and
said "Five" while that grid renders six cards.

The count is still hardcoded, so a test now reads app/page.tsx, counts
the <Card> occurrences, and fails when the hero number disagrees. Same
failure shape as #3, where a hardcoded star total outlived the repos it
counted.

Closes #21
…than kept

The old mark was amber on navy inside a circle. Both of those colour families
were deleted in 0.4.0, so it was the last thing on the site still arguing for an
identity nothing else uses.

The new one is a superellipse in the dark theme's two neutrals with the system
blue laid over it. Continuous corners are the one signature this system spends
anything on, and an icon is where that reads first, at 16px, before any colour
is legible. Inside the glyph the same treatment repeats: flat caps so the W sits
on a line and reads as drawn, round joins at the three vertices so the corner
language is the silhouette's.

It is generated, not drawn. scripts/make-brand.mjs computes the squircle from
|x|^n + |y|^n = 1 at n = 5 and renders public/logo.svg, public/logo.png,
app/icon.png and app/apple-icon.png from that one source. `npm run brand`.

A logo is the asset nobody rebuilds when a token moves, so two tests hold it to
the package: the generator's three colours must equal the resolved values of
dark.muted, dark.background and dark.ring, and logo.svg may carry no other
colour. Verified they fail by putting the old amber back.

The OG image is rebuilt on the same palette, inlines the same SVG, and spends
colour exactly once, on the prompt in the install line. It moves to the Node
runtime to read the mark off disk, which also makes the route static.

Two smaller things the mark forced. The navbar no longer applies a CSS radius
to it, because a corner on top of a squircle clips the curve it already has.
And the manifest's navy background and theme colours follow the tokens now.
@vercel

vercel Bot commented Aug 7, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
weekndlabs-com Ready Ready Preview Aug 7, 2026 2:48am

@fajarhide
fajarhide merged commit c7ff9bf into main Aug 7, 2026
2 checks passed
@fajarhide
fajarhide deleted the feat/brand-0.4.0 branch August 7, 2026 02:50

This branch was successfully deployed

1 active deployment
Preview — e010a32b Deployed Aug 7, 2026 by vercel[bot]
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