Skip to content

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

Merged
rep0x merged 3 commits into
mainfrom
chore/brand-wave2-chat
Jun 21, 2026
Merged

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

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 chat repo. Pattern from the approved drive pilot (drive#17). 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 home page header's bare mind/chat text wordmark (<h1>) is replaced with <Logo label="Chat" /> — the shared weave mark + Chat set in the brand serif (Fraunces). Chat has no persistent masthead/footer (its layout delegates to <ThemeShell>), so the home page header is the most prominent visible brand surface.
  • Logo added to the @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. Adapted from drive; same four outputs, Chat header comment.
  • src/app/icon.svg — replaces the hand-rolled cyan/magenta speech-bubble 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 Chat", short_name: "Chat", Chat description, theme_color: "#16B88A", background_color: "#07080b".
  • src/app/opengraph-image.tsx — dark green-glow share card with the MIND_MARK_SVG mark + Chat wordmark and Chat-appropriate copy. Deterministic (default font, no remote fetch).
  • package.json+ "gen:icons" script, + sharp ^0.34.5 devDependency (npm / package-lock.json).

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 the new 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 the drive pilot; OG image still generates.

Note

Wave 2 fan-out, pattern from drive#17. Repo-specific wrinkles vs drive:

  • chat has NO *.png ignore rule, so the generated icon binaries commit normally — no .gitignore negations needed (unlike drive).
  • chat had no public/ directory — created it so the maskable PNGs land at the served root (the manifest references /icon-192.png and /icon-512.png).
  • Tier 3 surface is the home page header, not a masthead/footer (chat has neither).

🤖 Generated with Claude Code

rep0x and others added 3 commits June 21, 2026 15:54
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>
The 0.7.0 bump updated package.json but not the npm lockfile, leaving
it pinned to 0.4.0 (npm ci would fail). Regenerate the lockfile.

Refs #29

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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 79e8ff5 into main Jun 21, 2026
1 check passed
@rep0x
rep0x deleted the chore/brand-wave2-chat 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