Files
replypier/design/brand-refresh/DESIGN.md

39 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Paper Boat / 纸舟
Selected direction: round 3, option 2 / Paper Boat. Confirmed by user.
## Visual specification
- Preserve the existing dashboard and widget layout, typography, product naming and third-party logos.
- Primary symbol: folded boat, three solid facets, no gradients, thin details, outline or lettering. Celadon `#2E6A5C`, sage `#8BB49C`, fold `#568B73`.
- Small-size mark uses the same silhouette with stronger separation between hull facets; native SVG at 16–32px. Install icons have warm porcelain `#F4F1EB` background and sufficient maskable safe area.
- Human presets: twelve editorial cut-paper portraits, consistent close crop, muted circular background, diverse adults. Replace the bundled preset images; preserve uploaded personal photos.
- AI presets: ten vector paper-craft emblems (boat, letter, pinwheel, book, plane, kite, folded heart, house, leaf, boat in ink). Replace generated orb rendering while retaining stored variant indexes. Existing terminal option remains available with a muted celadon accent.
- Shared brand SVG component for dashboard/chat footer marks; the standalone loader uses the same boat geometry.
## Element inventory / asset loop
| Element | Decision | Format / location | Consumers |
| --- | --- | --- | --- |
| Selected board | reuse, reference only | `reference-paper-boat.png` | design reference |
| Primary boat mark | export as native vector | existing logo SVG paths | logo, favicon, footer |
| App/install icons | export from boat vector | existing public PNG/ICO paths | PWA, iOS, notification badge |
| Twelve human headshots | generate sheet, extract individual cells | existing `src/assets/avatars/avatar-*.png` | preset picker and uploaded preset selections |
| Ten AI paper emblems | export native vector | `src/assets/avatars/paper-*.svg` | legacy orb variants, preview, widget |
| Existing UI and uploaded photos | reuse | unchanged | all existing callers |
State: COMPLETE. Direction confirmation, asset creation, implementation and visual QA passed. Asset inventory and consumer paths are in `asset-manifest.json`. The local dashboard, widget and standalone loader have been rebuilt and the existing browser's PWA update has been activated.
## Acceptance
- `npm run type-check`: passed.
- `./deploy/local/local.sh build`: passed for dashboard, widget and loader. Production loader also regenerated with `scripts/build-webclient-prod.ts`.
- Targeted Vitest suites: 76 tests passed across the avatar, upload URL, loader lifecycle/identity, startup refusal, login, sidebar and dashboard paths. On this machine, use `NODE_OPTIONS=--no-experimental-webstorage` so Node 26's Web Storage global does not mask jsdom storage.
- Browser inspection: favicon, sidebar mark, all preset thumbnails, preview avatar/header/message bubbles and actual embedded widget footer/header/message avatars. Selected a human preset, verified its upload and preview, then restored the demo's selected paper boat and inspected the real widget.
- Updated the dashboard badge test's stale `.notification-badge` selector to the existing `.topbar .badge-float` markup; notification behavior was unchanged.
- No browser relaunch or new debugging socket, service restart or database migration was needed.
## Compatibility
Keep `avatar_style: orb`, `orb_variant` and the existing utility exports as storage/API compatibility names. Generated orb data URIs are replaced at render time from metadata, without modifying customer uploads or database history. No database migration is needed.