Skip to content

feat: adopt brand lockup + canonical icons (ui#29 wave 2) - #15

Merged
rep0x merged 2 commits into
mainfrom
chore/brand-wave2-builder
Jun 21, 2026
Merged

feat: adopt brand lockup + canonical icons (ui#29 wave 2)#15
rep0x merged 2 commits into
mainfrom
chore/brand-wave2-builder

Conversation

@rep0x

@rep0x rep0x commented Jun 21, 2026

Copy link
Copy Markdown
Member

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/ui 0.7.0 bump branch (chore/ui-0.7.0-brand-refresh) so the new <Logo label="..."> prop and the React-free ./brand subpath (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)

  • The landing TopBar() now renders <Logo label="Builder" /> instead of a bare ✦ Mind Builder glyph-box + text wordmark — shared weave mark + Builder set in the brand serif (Fraunces).
  • Logo added to the existing @mind-studio/ui import.

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: it mkdir -ps the output dirs because builder ships no pre-existing public/.
  • 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.tsname: "Mind Builder — wish it, we build it", short_name: "Builder", Builder description (derived from layout.tsx metadata), theme_color: "#16B88A", background_color: "#07080b".
  • src/app/opengraph-image.tsx — dark green-glow share card with the MIND_MARK_SVG mark + 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.5 devDependency.
  • .gitignore — builder has a blanket *.png rule; 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-image all appear in the build route table) — no manual metadata wiring needed, and layout.tsx had no conflicting hard-coded icons.

Test plan

All run from the worktree with NODE_AUTH_TOKEN=$(gh auth token):

Command Result
npm run gen:icons (×2) ✅ reproducible — PNGs byte-identical on re-run
npm run typecheck ✅ pass
npm run lint ✅ exit 0 (only pre-existing warnings/infos; none in changed files)
npm run test ✅ pass (no test files; --passWithNoTests)
npm run build ✅ pass — /icon.svg, /apple-icon.png, /manifest.webmanifest, /opengraph-image all in route table

Pre-existing note (not introduced here): build warns metadataBase is 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), so gen-icons.mjs creates output dirs; and the existing wordmark surface was a glyph-box + text in the landing page.tsx TopBar (drive's was a bare text wordmark in layout.tsx). Builder's footer is a prose tagline (not a standalone lockup), so it was left untouched.

🤖 Generated with Claude Code

rep0x and others added 2 commits June 21, 2026 15:56
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>
@rep0x
rep0x changed the base branch from chore/ui-0.7.0-brand-refresh to main June 21, 2026 16:10
@rep0x
rep0x merged commit 61f0055 into main Jun 21, 2026
1 check passed
@rep0x
rep0x deleted the chore/brand-wave2-builder branch June 21, 2026 16:11
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