feat: adopt brand lockup + canonical icons (ui#29 wave 2) - #15
Merged
Conversation
Picks up the serif heading typography (Fraunces h1–h3), kbd mono, and the semantic state tokens from the design-system brand refresh. Refs #29 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Wave 2 brand-refresh fan-out for the builder repo, basing on the open
@mind-studio/ui 0.7.0 bump branch so the new `label` prop and the
React-free `./brand` subpath are available. Pattern from drive#17.
Tier 3 — in-app logo lockup:
- The landing TopBar now renders <Logo label="Builder" /> instead of a
bare "✦ Mind Builder" glyph+text wordmark: shared weave mark + "Builder"
in the brand serif.
Tier 4 — canonical static brand assets (mark-only, from @mind-studio/ui/brand):
- scripts/gen-icons.mjs generates src/app/icon.svg (favicon),
src/app/apple-icon.png (180), public/icon-{192,512}.png (maskable)
from MIND_MARK_SVG / monoMarkSvg / MIND_GREEN — single source of truth.
Mirrors drive's script; mkdir -p the output dirs since builder ships no
pre-existing public/.
- src/app/icon.svg replaces the hand-rolled amber "M" placeholder.
- src/app/manifest.ts (name/short_name/description, Mind Green theme).
- src/app/opengraph-image.tsx: dark green-glow card, MIND_MARK_SVG mark +
"Builder" wordmark, Builder-appropriate copy. Deterministic (default font).
- package.json: + "gen:icons" script and sharp devDependency.
- .gitignore: negate the broad *.png rule for the three committed brand
icons so the generated binaries ship with the app.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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
Wave 2 brand-refresh fan-out (MIND-Studio/ui#29) for the builder repo. Pattern from drive#17 (the approved pilot). Based on the open
@mind-studio/ui0.7.0 bump branch (chore/ui-0.7.0-brand-refresh) so the new<Logo label="...">prop and the React-free./brandsubpath (MIND_MARK_SVG,MIND_GREEN,monoMarkSvg) are available. Base = the bump branch, so this diff is just the Wave 2 work.What changed
Tier 3 — in-app logo lockup (
src/app/page.tsx)TopBar()now renders<Logo label="Builder" />instead of a bare✦ Mind Builderglyph-box + text wordmark — shared weave mark + Builder set in the brand serif (Fraunces).Logoadded to the existing@mind-studio/uiimport.Tier 4 — canonical static brand assets (mark-only, generated from
@mind-studio/ui/brand)scripts/gen-icons.mjs— generates the favicon + PWA/apple-touch icons from the canonical mark (MIND_MARK_SVG/monoMarkSvg/MIND_GREEN), so they can never drift from the published logo. Mirrors drive's script with a Builder header comment; one repo-specific tweak: itmkdir -ps the output dirs because builder ships no pre-existingpublic/.src/app/icon.svg— replaces the hand-rolled amber "M" placeholder with the canonical gradient weave mark.src/app/apple-icon.png(180),public/icon-192.png,public/icon-512.png— generated maskable/apple-touch binaries, committed.src/app/manifest.ts—name: "Mind Builder — wish it, we build it",short_name: "Builder", Builder description (derived fromlayout.tsxmetadata),theme_color: "#16B88A",background_color: "#07080b".src/app/opengraph-image.tsx— dark green-glow share card with theMIND_MARK_SVGmark + Builder wordmark and Builder-appropriate copy ("Wish it. We build it."). Deterministic (default font, no remote fetch).package.json—+ "gen:icons"script,+ sharp ^0.34.5devDependency..gitignore— builder has a blanket*.pngrule; added negations for the three committed brand icons so the generated binaries ship.Next 16 auto-detects all four assets by file convention (
/icon.svg,/apple-icon.png,/manifest.webmanifest,/opengraph-imageall appear in the build route table) — no manualmetadatawiring needed, andlayout.tsxhad no conflicting hard-coded icons.Test plan
All run from the worktree with
NODE_AUTH_TOKEN=$(gh auth token):npm run gen:icons(×2)npm run typechecknpm run lintnpm run test--passWithNoTests)npm run build/icon.svg,/apple-icon.png,/manifest.webmanifest,/opengraph-imageall in route tablePre-existing note (not introduced here): build warns
metadataBaseis unset for resolving social OG/Twitter image URLs — same as drive; OG image still generates. Left as-is per the brief.Note
Wave 2 fan-out, pattern from drive#17. Repo-specific wrinkles vs the drive pilot: builder has no
public/directory (drive did), sogen-icons.mjscreates output dirs; and the existing wordmark surface was a✦glyph-box + text in the landingpage.tsxTopBar(drive's was a bare text wordmark inlayout.tsx). Builder's footer is a prose tagline (not a standalone lockup), so it was left untouched.🤖 Generated with Claude Code