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>
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>
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 chat repo. Pattern from the approved drive pilot (drive#17). 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)mind/chattext 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.Logoadded to the@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. 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.ts—name: "Mind Chat",short_name: "Chat", Chat description,theme_color: "#16B88A",background_color: "#07080b".src/app/opengraph-image.tsx— dark green-glow share card with theMIND_MARK_SVGmark + Chat wordmark and Chat-appropriate copy. Deterministic (default font, no remote fetch).package.json—+ "gen:icons"script,+ sharp ^0.34.5devDependency (npm / package-lock.json).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 the drive pilot; OG image still generates.Note
Wave 2 fan-out, pattern from drive#17. Repo-specific wrinkles vs drive:
*.pngignore rule, so the generated icon binaries commit normally — no.gitignorenegations needed (unlike drive).public/directory — created it so the maskable PNGs land at the served root (the manifest references/icon-192.pngand/icon-512.png).🤖 Generated with Claude Code