3.5 KiB
3.5 KiB
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
#F4F1EBbackground 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 withscripts/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-webstorageso 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-badgeselector to the existing.topbar .badge-floatmarkup; 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.