Files
waggle-os/docs/briefs/2026-04-29-ui-ux-component-inventory.md
Oleg Maslov 0c3e2ead3b
Some checks failed
Installer Smoke / installer-smoke (push) Has been cancelled
moving
2026-09-02 10:10:29 +02:00

407 lines
28 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.
# Waggle UI/UX Component Inventory — 2026-04-29
**Purpose:** Brief Claude Design (explore + research mode) on the current UI/UX state of Waggle so it can produce a polish pass without re-discovering the surface area.
**Scope:** Read-only scan. No code changes performed. Sources of truth cited at the end so Claude Design can pull primary artifacts directly.
**Reading order for Claude Design:**
1. §1 — Two distinct UI surfaces exist (do not conflate)
2. §2§3 — Surface inventories (Landing → OS Shell)
3. §4 — Cross-surface design system tokens (single source of truth)
4. §5 — Drift / open issues / polish opportunities
5. §6 — Source artifacts to consume (priority-ranked)
---
## §1. Two distinct UI surfaces
Waggle has two physically separate UI codebases with different chrome paradigms, different tech stacks, and different design maturity. **They share only the design tokens.**
| Surface | Repo path | Purpose | Stack | Maturity |
|---|---|---|---|---|
| **A. Marketing landing** | `D:/Projects/waggle-os/apps/www` | waggle-os.ai marketing site (download CTA, pricing, persona narrative) | Vite + React 19, **pure CSS with custom properties** (no Tailwind in `apps/www` despite v2.3 spec calling for Tailwind 4), `lucide-react` icons | Legacy v0/v1 implementation present; v2.3 spec authored but **not yet generated** (output pending claude.ai/design `ea934a60` paste) |
| **B. OS shell / desktop app** | `D:/Projects/waggle-os/apps/web` | macOS-style desktop inside Tauri 2.0 native window — 25 OS apps + dock + menubar + ⌘K | Vite + React + Tailwind + shadcn/ui (60+ primitives) + `framer-motion` + `lucide-react` | Paradigm correction in flight (DS audit v2 issued 2026-04-23). Chrome scaffolding built; per-app polish needed. Bees confirmed landing-only. |
`apps/web` runs inside the Tauri shell as the desktop app. `apps/www` is the public marketing site. Do not mix patterns between the two.
---
## §2. Surface A — Marketing landing (`apps/www`)
### §2.1 Tech stack — actual
- Entry: `apps/www/src/main.tsx``App.tsx`
- Styles: `apps/www/src/styles/globals.css` (96 lines, **pure CSS custom properties**, no Tailwind)
- Components: `apps/www/src/components/*.tsx` (10 files, 1,003 LOC total)
- Tests: `apps/www/__tests__/BrandPersonasCard.test.tsx`
- Data: `apps/www/src/data/personas.ts`
**Drift from spec:** v2.3 brief (`briefs/2026-04-28-claude-design-landing-v2.3-prompt.md` §5) prescribes Tailwind 4 utilities. Reality is inline styles + CSS custom properties. Polish should reconcile (either keep pure CSS for substrate independence, or migrate; do not author against a missing Tailwind config).
### §2.2 Implemented components — current `App.tsx` mount sequence
Order of mount in `apps/www/src/App.tsx`:
| # | Component | File | LOC | Status / notes |
|---|---|---|---|---|
| 1 | `Navbar` | `components/Navbar.tsx` | 77 | Implemented |
| 2 | `Hero` | `components/Hero.tsx` | 50 | Implemented — uses `bee-orchestrator-dark.png` directly in hero (legacy art-direction; v2.3 spec moves bees to footer mark only) |
| 3 | `Features` | `components/Features.tsx` | 58 | Implemented |
| 4 | `CrownJewels` | `components/CrownJewels.tsx` | 93 | Implemented (legacy "Crown Jewels" framing — not in v2.3 spec; likely candidate for replacement by Proof/SOTA band) |
| 5 | `HowItWorks` | `components/HowItWorks.tsx` | 51 | Implemented |
| 6 | `Pricing` | `components/Pricing.tsx` | 134 | Implemented (3-tier or 4-tier — verify against v2.3 4-tier spec: Free/Pro/Teams/Enterprise) |
| 7 | `Enterprise` | `components/Enterprise.tsx` | 34 | Implemented (KVARK bridge) |
| 8 | `BetaSignup` | `components/BetaSignup.tsx` | 62 | Implemented (legacy beta CTA; v2.3 spec removes BetaSignup entirely — Download is the conversion) |
| 9 | `Footer` | `components/Footer.tsx` | 26 | Implemented |
### §2.3 Orphan / unmounted components
| Component | File | LOC | State |
|---|---|---|---|
| `BrandPersonasCard` | `components/BrandPersonasCard.tsx` | **419** | **Implemented but NOT imported into `App.tsx`** — orphan. Has its own test file. Per v1.1 LOCKED wireframe + LOCKED 2026-04-22 personas decisions, this is the canonical 13-bee `6+6+1` personas grid component. Polish target: re-mount in correct slot per v2.3 (4×4 + Coordinator callout — note v2.3 evolved away from 13 bees toward 17 agent personas, see drift in §5). |
### §2.4 Components specified in v2.3 but not yet implemented
Per `briefs/2026-04-28-claude-design-landing-v2.3-prompt.md` §3 + §5, the v2.3 ship version requires these components which do **not** exist in `apps/www/src/components/`:
| Spec'd component | Spec section | Notes |
|---|---|---|
| `<Hero variant="A\|B">` with variant resolver | §3 SECTION 1 | Hero exists but not as variant component; `lib/hero-headline-resolver.ts` not present |
| `<ProofPointsBand>` (5-card elastic grid) | §3 SECTION 2 | Not implemented; replaces `CrownJewels` semantically |
| `<HarvestBand>` (11 logo tiles + 2 sync-mode callouts + feature stripe) | §3 SECTION 3 | Not implemented |
| `<MultiAgentRoom>` (window mockup + persona tiles + message bus + code snippet) | §3 SECTION 4 | Not implemented |
| `<HowItWorks>` 3-step variant | §3 SECTION 5 | Existing `HowItWorks` is 5-step from v1.1 wireframe — v2.3 simplified to 3 steps. Reconciliation needed. |
| `<PersonasGrid>` 4×4 + Coordinator sidebar | §3 SECTION 6 | `BrandPersonasCard` is the closest — but it implements 13-bee `6+6+1` from LOCKED 2026-04-22 IA, not the 4×4+1 agent-personas grid v2.3 ships |
| `<PricingTiers>` 4-tier (Free/Pro/Teams/Enterprise) + billing toggle + collapsible compare | §3 SECTION 7 | `Pricing.tsx` exists; verify tier count + billing toggle implementation |
| `<TrustBand>` (5 trust signals + Egzakta spine + hex-texture bg + MCP one-line) | §3 SECTION 8 | Not implemented |
| `<FinalCTA>` + KVARK bridge | §3 SECTION 9 | Partial via `Enterprise`; not in canonical FinalCTA shape |
| Updated `Footer` 5-column layout | §3 SECTION 10 | Existing 26-LOC `Footer.tsx` likely needs full rebuild |
| `lib/hero-headline-resolver.ts` | §5 | Variant gate for `?p=` / `utm_source` |
| `data/proof-points.ts` | §5 | 5 entries, ordered |
| `data/harvest-adapters.ts` | §5 | 11 entries |
| `data/pricing.ts` | §5 | 4 tiers |
| Event taxonomy (`landing.*` events) | §5 | Stub only required pre-launch |
### §2.5 Design tokens (canonical: `apps/www/src/styles/globals.css`)
This file is the **single source of truth** for landing tokens. Mirror these into Claude Design's token panel before iterating.
```css
:root {
/* Hive neutral ladder — 12 stops */
--hive-50: #f0f2f7;
--hive-100: #dce0eb;
--hive-200: #b0b7cc;
--hive-300: #7d869e;
--hive-400: #5a6380;
--hive-500: #3d4560;
--hive-600: #2a3044;
--hive-700: #1f2433;
--hive-800: #171b26;
--hive-850: #11141c;
--hive-900: #0c0e14;
--hive-950: #08090c; /* canonical dark ground */
/* Honey accent ladder — 4 stops + 2 glow tokens */
--honey-300: #fcd34d;
--honey-400: #f5b731;
--honey-500: #e5a000; /* primary CTA fill */
--honey-600: #b87a00;
--honey-glow: rgba(229, 160, 0, 0.12);
--honey-pulse: rgba(229, 160, 0, 0.06);
/* Status accents (sparingly) */
--status-ai: #a78bfa; /* violet — synthesis / AI activity */
--status-healthy: #34d399; /* mint — done / healthy */
/* Elevation */
--shadow-honey: 0 0 24px rgba(229,160,0,0.12), 0 0 4px rgba(229,160,0,0.08);
--shadow-elevated: 0 4px 16px rgba(0,0,0,0.5), 0 2px 4px rgba(0,0,0,0.3);
}
```
**Typography:**
- Primary: `Inter` (variable), system-ui fallback
- Code: `JetBrains Mono` (per spec; verify in landing — code blocks rare on landing)
- Anti-aliasing: `-webkit-font-smoothing: antialiased`
- Selection color: `rgba(229, 160, 0, 0.3)` on `--hive-50`
- Headline scale per v2.3 spec: hero 4864px, section 3648px, subhead 2432px
- Body: 1618px, caption 14px
- Letter-spacing on display: `-0.02em`
**Motion utilities (defined in `globals.css`):**
- `@keyframes float` — translateY ±8px, 3s ease-in-out infinite
- `@keyframes honey-pulse` — opacity 0.4↔0.8 + scale 1↔1.05, 3s
- `@keyframes card-enter` — opacity + 20px translateY, 0.6s ease-out
- Stagger classes: `.card-enter-1` through `.card-enter-4` (0.1s steps)
- Hover affordance: `.card-lift` (translateY -2px + shadow-honey + honey-500 border)
- Active feedback: `.btn-press` (scale 0.97)
- Background: `.honeycomb-bg` — inline SVG hex pattern at `#1f2433` 15% opacity
**Breakpoints (per v1.1 wireframe spec):** `sm` 640 / `md` 768 / `lg` 1024 / `xl` 1280. Desktop-first; every section must collapse cleanly at `sm`.
### §2.6 Brand assets
| Asset | Location | Usage rules (v2.3 LOCKED) |
|---|---|---|
| `waggle-logo.svg` | `apps/www/public/brand/` | Header + footer ONLY |
| 13 × `bee-*-dark.png` (orchestrator, hunter, researcher, analyst, connector, architect, builder, writer, marketer, team, celebrating, confused, sleeping) | `apps/www/public/brand/` + reference copies in `D:/Projects/PM-Waggle-OS/_generated/bee-assets/` | **Landing-restricted.** v2.3 says: NOT in primary sections; reserved for loading skeletons, 404 page, and optional small monochrome footer mark. Do NOT inject into OS shell chrome. |
| `hex-texture-dark.png` honeycomb pattern | `apps/www/public/brand/` | Trust band background ONLY at 812% opacity, soft-light blend (per v2.3 §3 SECTION 8) |
| `bee-builder-dark-v1.png` + 2k variant | `_generated/bee-assets/` | Reference renders; latest builder-bee from 2026-04-21 regen |
**Conflict to resolve:** current `Hero.tsx` mounts `bee-orchestrator-dark.png` at 176×176 in hero center — directly contradicts v2.3 anti-pattern. Polish pass should remove or relocate.
### §2.7 Anti-patterns (v2.3 binding — surface to Claude Design)
Generation will fail pre-launch review if any of these are present. Pulling the most polish-relevant entries:
- NO blue accent — locked palette is honey + violet + mint
- NO LoCoMo / Opus / SOTA performance numbers (held until benchmark publishes)
- NO competitor names (Cowork, Mem0, Letta, Notion AI, Cursor as competitor, etc.)
- NO bee mascot grid as primary section; bees footer-mark only on landing
- NO "mind" as user-facing vocabulary — use "memory" or "knowledge graph"
- NO "cognitive layer" jargon in first 3 scroll viewports
- NO trust-logos carousel, NO CEO quote carousel, NO feature-icon grid
- NO scroll-triggered storytelling motion — hover micro-interactions only
- NO 5+ tier pricing — exactly 4 tiers (Free / Pro / Teams / Enterprise)
- NO `github.com` URL until repo migrates to egzakta org
Full list: `briefs/2026-04-28-claude-design-landing-v2.3-prompt.md` §4 (correctness, voice, hygiene tiers).
---
## §3. Surface B — OS shell / desktop app (`apps/web`)
### §3.1 Tech stack — actual
- Entry: `apps/web/src/main.tsx``App.tsx``pages/Index.tsx`
- Tailwind: `apps/web/tailwind.config.ts` (configured)
- shadcn/ui: 60+ primitives in `apps/web/src/components/ui/`
- Animation: `framer-motion`
- Icons: `lucide-react`
- State: hooks pattern (`hooks/useWindowManager`, `useWaggleDance`, `useKnowledgeGraph`, `useOnboarding`, etc.)
- Adapter: `lib/adapter.ts` (Tauri ↔ web stub)
### §3.2 Chrome layer (`apps/web/src/components/os/`)
These define the macOS-paradigm shell that wraps every app window.
| Component | File | Role |
|---|---|---|
| `Desktop` | `Desktop.tsx` (497 LOC) | Top-level shell — wallpaper, window manager host, app config map, overlay coordination, status bar focus |
| `Dock` | `Dock.tsx` (170 LOC) | Tier-aware dock with zone-based trays (`getDockForTier(tier, billingTier)`) — handles open/minimized indicators, escape-to-close, dock labels (`useDockLabels`) |
| `DockTray` | `DockTray.tsx` | Tray panel that pops out from a dock zone |
| `AppWindow` | `AppWindow.tsx` | Draggable / resizable / minimize / maximize panel — traffic-light controls per macOS convention |
| `StatusBar` | `StatusBar.tsx` | Top bar — status cluster (provider pill, cost meter, policy indicator, clock, ⌘K trigger) |
| `BootScreen` | `BootScreen.tsx` | Tauri cold-boot splash |
| `ContextMenu` | `ContextMenu.tsx` | Right-click menus on dock + windows |
| `ErrorBoundary` | `ErrorBoundary.tsx` | Per-app crash containment |
| `LockedFeature` | `LockedFeature.tsx` | Tier-gate stub |
| `ModelSelector` / `ModelPilotCard` | `ModelSelector.tsx` / `ModelPilotCard.tsx` | LLM provider pickers |
| `WorkspaceBriefing` | `WorkspaceBriefing.tsx` | Workspace landing card |
**Wallpaper:** `apps/web/src/assets/wallpaper.jpg` (dark) + `wallpaper-light.jpg` — desktop-background brand-defining surface (DS audit v2 calls for 2535% honeycomb texture overlay; verify current opacity).
**Logo asset:** `apps/web/src/assets/waggle-logo.jpeg` (dark) + `.png` (light).
### §3.3 OS Apps (25 implemented in `apps/web/src/components/os/apps/`)
The DS audit v2 references "24 OS Apps" per `docs/WAGGLE-SYSTEM-VISUAL.html:684`. Current count is **25 app components**:
| # | Component file | Likely app id | Per DS-audit MVP first-launch dock? |
|---|---|---|---|
| 1 | `ChatApp.tsx` + `ChatWindowInstance.tsx` | chat | ✅ |
| 2 | `DashboardApp.tsx` | dashboard | (Cockpit superset) |
| 3 | `CockpitApp.tsx` | cockpit | ✅ |
| 4 | `MemoryApp.tsx` | memory | ✅ |
| 5 | `AgentsApp.tsx` | agents | ✅ |
| 6 | `RoomApp.tsx` | room (multi-agent) | ✅ (likely) |
| 7 | `WaggleDanceApp.tsx` | waggle-dance | ✅ (likely) |
| 8 | `MissionControlApp.tsx` | mission-control | (probably gated) |
| 9 | `ConnectorsApp.tsx` | connectors | (Providers superset) |
| 10 | `CapabilitiesApp.tsx` | capabilities | (Skills/policy area) |
| 11 | `MarketplaceApp.tsx` | marketplace | |
| 12 | `FilesApp.tsx` + `FilesAppTabs.tsx` | files | ✅ |
| 13 | `VaultApp.tsx` | vault | |
| 14 | `EventsApp.tsx` | events | |
| 15 | `TimelineApp.tsx` | timeline | |
| 16 | `TelemetryApp.tsx` | telemetry | |
| 17 | `BackupApp.tsx` | backup | |
| 18 | `SettingsApp.tsx` | settings | ✅ |
| 19 | `UserProfileApp.tsx` | user-profile | |
| 20 | `ApprovalsApp.tsx` | approvals | |
| 21 | `ScheduledJobsApp.tsx` | scheduled-jobs | |
| 22 | `TeamGovernanceApp.tsx` | team-governance | (Teams tier) |
| 23 | `VoiceApp.tsx` | voice | |
| (sub) | `agents/`, `chat-blocks/`, `cockpit/`, `connectors/`, `files/`, `memory/` | per-app sub-component folders | — |
**Apps named in DS audit v2 not directly visible as top-level files (likely under sub-folders or pending):** Graph, Provenance, Providers, Policy, Preferences, Wiki, Skills, Scopes, Tasks, Audit, Prompts, Search, Terminal, Notes, Export, About. Polish step: reconcile against `lib/dock-tiers.ts` to confirm canonical AppId set.
### §3.4 Overlays (13 implemented in `apps/web/src/components/os/overlays/`)
System-level layer between windows and ⌘K palette.
| Component | Role |
|---|---|
| `GlobalSearch.tsx` | **⌘K Spotlight equivalent** — launch app, search memory, invoke command. DS audit v2 confirms this survives paradigm shift. |
| `OnboardingWizard.tsx` + `OnboardingTooltips.tsx` + `onboarding/` subfolder | First-run guided tour |
| `LoginBriefing.tsx` | Post-login briefing card |
| `WorkspaceSwitcher.tsx` + `CreateWorkspaceDialog.tsx` | Workspace switcher + creator |
| `PersonaSwitcher.tsx` | Active persona switcher |
| `SpawnAgentDialog.tsx` | Spawn-agent shortcut from dock |
| `NotificationInbox.tsx` | Notification center |
| `KeyboardShortcutsHelp.tsx` | `?` overlay listing shortcuts |
| `ContextRail.tsx` | Side rail for active-app context (knowledge graph, memory frames, etc.) |
| `UpgradeModal.tsx` + `TrialExpiredModal.tsx` | Tier-gate modals |
### §3.5 shadcn/ui primitive library (60 + components in `components/ui/`)
Full shadcn surface installed: `accordion`, `alert`, `alert-dialog`, `aspect-ratio`, `avatar`, `badge`, `breadcrumb`, `button`, `calendar`, `card`, `carousel`, `chart`, `checkbox`, `collapsible`, `command`, `context-menu`, `dialog`, `drawer`, `dropdown-menu`, `form`, `hint-tooltip`, `hover-card`, `input`, `input-otp`, `label`, `menubar`, `navigation-menu`, `pagination`, `popover`, `progress`, `radio-group`, `resizable`, `scroll-area`, `select`, `separator`, `sheet`, `sidebar`, `skeleton`, `slider`, `sonner`, `switch`, `table`, `tabs`, `textarea`, `toast`, `toaster`, `toggle`, `toggle-group`, `tooltip`.
**Polish implication:** the design system primitives are already standardized; the polish pass operates one layer up — composed components, density, state coverage, motion, micro-interactions.
### §3.6 Hooks (state surface visible in `Desktop.tsx`)
`useWorkspaces`, `useMemory`, `useEvents`, `useAgentStatus`, `useNotifications`, `useKeyboardShortcuts`, `useOnboarding`, `useOfflineStatus`, `useKnowledgeGraph`, `useWaggleDance`, `useWindowManager`, `useOverlayState`, `useDockNudge`, `useDockLabels`, `useToast`. Knowing these helps Claude Design design loading / empty / error states with the actual data shapes available.
### §3.7 Paradigm correction status (DS audit v2, 2026-04-23)
Per `briefs/2026-04-23-ds-audit-v2-macOS-paradigm-correction.md`, the previous DS mockup (left HIVE/SCOPES/SETTINGS sidebar + central Memories canvas) was diagnosed as Linear/Notion SaaS dashboard, not OS. The correction calls for:
| Paradigm element | Required state | Implementation evidence |
|---|---|---|
| Menubar (top, fixed) | Logo + system menus + status cluster + ⌘K | `StatusBar.tsx` exists; verify menu items wired |
| Dock (24 apps) | Hover tooltip, running-app indicator, magnification, separators | `Dock.tsx` + `DockTray.tsx` present, tier-filtered via `dock-tiers.ts` |
| App windows | Draggable / resizable / minimize / maximize, traffic-lights left, multi-window z-order | `AppWindow.tsx` present; `useWindowManager` hook live |
| Desktop background | Honeycomb texture **2535%** overlay/soft-light (brand-defining canvas) | `wallpaper.jpg` present; **opacity verification needed** |
| ⌘K palette | Modal layer above windows, launch app / search memory / invoke command | `GlobalSearch.tsx` overlay present |
| Overlays layer | Between windows and palette: OnboardingWizard, modals, toasts, alerts | 13 overlays implemented |
Texture opacity ramp (DS audit v2 §"Honeycomb texture"): Desktop BG 2535% / Window BG 48% / Empty states 1520% / Menubar+Dock chrome 03%. **Polish target — verify and tune.**
**Reserved bee usage in OS shell:** loading skeletons, 404 page, optional small footer brand mark. Bees never decorate app chrome.
---
## §4. Cross-surface design system
Both surfaces share **only** the token vocabulary. They diverge on chrome paradigm.
### §4.1 Color (locked palette)
- Ground: `--hive-950` `#08090c` (dark-first locked across both surfaces; light mode is v3 stretch)
- Accent: honey 400/500/600 (CTA, focus rings, brand emphasis)
- Status: violet `#a78bfa` (AI activity, synthesis pulse) + mint `#34d399` (healthy, done state)
- **No blue** — explicit anti-pattern
- Hex texture: `#1f2433` at 15% opacity in `.honeycomb-bg` SVG
### §4.2 Typography
- Display + body: `Inter` variable (400700)
- Monospace: `JetBrains Mono` (code blocks, tool names, file paths)
- Headline scale: 4864 hero / 3648 section / 2432 subhead
- Body: 1618 / caption 14
- Letter-spacing on display: `-0.02em`
### §4.3 Motion
- Hover micro-interactions only (no scroll-triggered storytelling per v2.3 anti-pattern)
- `prefers-reduced-motion: reduce` mandatory on hero MPEG-4 loop
- Easing: ease-out for entrances, ease-in-out for loops
### §4.4 Iconography
- Primary library: `lucide-react` (used in both `apps/www` and `apps/web`)
- DS bee illustrations are landing-only
### §4.5 Iconic moments to preserve in polish
- Honey-pulse halo behind hero CTA (`apps/www/Hero.tsx` lines 812)
- Card lift hover (`apps/www/globals.css` `.card-lift`)
- Honeycomb SVG background pattern
- Floating bee animation (landing only)
---
## §5. Drift / open issues / polish opportunities
These are the gaps a polish pass should close. Ranked rough-priority.
### §5.1 Critical drift (ship-blocking)
1. **Landing section sequence mismatch.** `App.tsx` mounts a 9-section legacy layout (Navbar / Hero / Features / CrownJewels / HowItWorks / Pricing / Enterprise / BetaSignup / Footer). v2.3 ship spec requires (Hero / Proof / Harvest / MultiAgent / How / Personas / Pricing / Trust / FinalCTA / Footer). Five new sections need to land; two legacy sections (`CrownJewels`, `BetaSignup`) need to be retired or reframed.
2. **Personas grid model conflict.** v1.1 LOCKED wireframe (2026-04-22) ships **13 brand bees in `6+6+1`** geometry via `BrandPersonasCard` (orphan in code). v2.3 ship brief (2026-04-28) replaces with **17 agent personas in `4×4 + Coordinator sidebar`** (text-only tiles, no bee mascots). PM ratification trail favors v2.3. Polish must pick one — and `BrandPersonasCard.tsx` either rebuilds or retires.
3. **Hero copy + art-direction.** Current `Hero.tsx` shows "Your AI Operating System" / "AI Agents That Remember" with bee-orchestrator center. v2.3 requires variant A (Marcus default) "Your AI doesn't reset. Your work doesn't either." + variant B (Klaudia/regulated) "AI workspace that satisfies your CISO." with NO bee in primary content. Hero variant resolver also missing.
4. **Pricing tier count.** v2.3 mandates **4 tiers** (Free / Pro / Teams / Enterprise). Verify `Pricing.tsx` matches; in v1.1 the spec said 3 tiers (Solo / Pro / Teams + KVARK in Enterprise tier card). Drift between locked decisions is real and PM ratification trail favors v2.3 4-tier.
### §5.2 Important drift (polish-grade)
5. **Tailwind absent on landing.** v2.3 §5 prescribes Tailwind 4 utilities; reality is inline styles + CSS custom properties. Decide: keep pure CSS (substrate independence) or migrate. Mixed approach will rot.
6. **Bee-on-hero violation.** `Hero.tsx` line 16 mounts a 176px bee illustration centrally — directly contradicts v2.3 binding rule "bee illustrations: NOT in primary sections."
7. **`HowItWorks` step count.** v1.1 wireframe locks 5 steps (Capture / Encode / Retrieve / Reason / Audit). v2.3 collapses to 3 steps (Install once / Work normally / Compound). Decide and align.
8. **OS shell texture opacity.** DS audit v2 calls for 2535% honeycomb on desktop background. Verify `wallpaper.jpg` overlay matches; if not, this is the single highest-leverage brand moment in the entire OS shell.
9. **OS shell missing apps from canonical 24-list.** Top-level component files do not include explicit `Graph`, `Provenance`, `Providers`, `Policy`, `Preferences`, `Wiki`, `Audit`, `Prompts`, `Search`, `Terminal`, `Notes`, `Export`, `About`. Reconcile against `lib/dock-tiers.ts` — some may live in sub-folders.
### §5.3 Polish-only (no architectural change)
10. Empty states across all 25 OS apps need persona-illustration + 1520% texture per DS audit v2 ramp.
11. Window state matrix coverage: spec calls for normal / focused / blurred / minimized-preview / maximized variants — verify `AppWindow.tsx` renders all five distinguishable.
12. Loading skeletons should use bee-* mascots (the only sanctioned non-landing bee usage).
13. Status bar density tuning (2832px height per DS audit v2; "tanka, elegantna, bez texture").
14. Dock magnification on hover — DS audit calls it "opciono ali poželjno"; check current implementation.
15. ⌘K palette (`GlobalSearch.tsx`) already polished per DS audit; preserve in any iteration.
16. Footer needs 5-column rebuild (Product / Research / OSS / Company / Legal) per v2.3 §3 SECTION 10.
17. Trust band hex-texture-dark.png at 812% soft-light blend, not yet implemented (no Trust component).
18. Pricing billing toggle (Monthly / Annual save ~17%) — verify presence in `Pricing.tsx`.
---
## §6. Source artifacts (priority-ranked for Claude Design)
Read these in order. The first three are the **canonical** sources; everything below is supporting evidence or audit trail.
### §6.1 Canonical (read in full)
1. `D:/Projects/PM-Waggle-OS/strategy/landing/landing-wireframe-spec-v1.1-LOCKED-2026-04-22.md` — 65KB, 7-section landing wireframe with locked component contracts, copy keys, measurability, anti-patterns. Authoritative for any section v2.3 hasn't changed.
2. `D:/Projects/PM-Waggle-OS/briefs/2026-04-28-claude-design-landing-v2.3-prompt.md` — 36KB, **ship version** for landing v2 generation. Contains the 9-section + footer brief, palette lock, anti-patterns, 22 PASS/FAIL signals.
3. `D:/Projects/PM-Waggle-OS/briefs/2026-04-23-ds-audit-v2-macOS-paradigm-correction.md` — 12KB, OS shell paradigm correction with paste-ready DS chat prompt for menubar / dock / windows / desktop / palette / overlays.
### §6.2 Supporting (skim or query)
4. `D:/Projects/PM-Waggle-OS/strategy/landing/information-architecture-2026-04-19.md` — 50KB master IA (9 sections; v1.1 simplified to 7; v2.3 evolved to 9 again).
5. `D:/Projects/PM-Waggle-OS/strategy/landing/persona-research-2026-04-18-rev1.md` — 84KB persona research, 7 archetypes for v2.3 hero variant gating.
6. `D:/Projects/PM-Waggle-OS/briefs/2026-04-28-landing-copy-v4-waggle-product.md` — 31KB latest landing copy v4.
7. `D:/Projects/PM-Waggle-OS/briefs/2026-04-22-claude-design-landing-brief.md` — original Claude Design landing brief (audit trail; superseded by v2.3).
8. `D:/Projects/PM-Waggle-OS/briefs/2026-04-22-brand-bee-personas-card-spec.md` — 6.6KB, 13-bee persona card component spec.
9. `D:/Projects/PM-Waggle-OS/briefs/2026-04-22-cc-personas-card-component-parallel.md` — 11KB, parallel implementation brief that produced `BrandPersonasCard.tsx`.
10. `D:/Projects/PM-Waggle-OS/briefs/2026-04-22-personas-card-copy-refinement.md` — 9.9KB, locked persona copy.
11. `D:/Projects/PM-Waggle-OS/decisions/2026-04-22-h-audit-1-design-ratified.md` — design ratification decision log.
12. v2.0 / v2.1 / v2.2 prompt history under `briefs/` — audit trail for how v2.3 evolved (do not reuse).
### §6.3 Repo references (verify against)
- `D:/Projects/waggle-os/apps/www/src/styles/globals.css` — canonical token source for landing.
- `D:/Projects/waggle-os/apps/www/src/components/*.tsx` — current implementation (10 components).
- `D:/Projects/waggle-os/apps/www/src/data/personas.ts` — persona data (13-bee shape).
- `D:/Projects/waggle-os/apps/web/src/components/os/` — OS shell + 25 apps + 13 overlays + 60+ shadcn primitives.
- `D:/Projects/waggle-os/apps/web/tailwind.config.ts` — Tailwind config (OS shell only).
- `D:/Projects/waggle-os/apps/web/src/lib/dock-tiers.ts` — canonical dock AppId list + tier filtering rules.
- `D:/Projects/waggle-os/docs/WAGGLE-SYSTEM-VISUAL.html` — architectural diagram referenced by DS audit v2.
- `D:/Projects/waggle-os/CLAUDE.md` + `docs/ARCHITECTURE.md` — package + persona canonical lists.
### §6.4 Brand assets (binary references)
- `D:/Projects/waggle-os/apps/www/public/brand/``waggle-logo.svg`, 13 × `bee-*-dark.png`, `hex-texture-dark.png`.
- `D:/Projects/PM-Waggle-OS/_generated/bee-assets/` — latest builder-bee renders (v1, 2k variant).
- `D:/Projects/waggle-os/apps/web/src/assets/``wallpaper.jpg` (dark) + `wallpaper-light.jpg`, `waggle-logo.jpeg/.png`.
---
## §7. Polish-pass instruction shape (suggested — for Claude Design briefing)
Suggested framing for the Claude Design exploration prompt:
> Audit Waggle's two UI surfaces (`apps/www` landing and `apps/web` OS shell) against the v1.1 wireframe spec, the v2.3 ship brief, and the DS audit v2 paradigm correction. Reconcile drift between implemented components (per §2.2 and §3.2§3.4 of `briefs/2026-04-29-ui-ux-component-inventory.md`) and the locked targets. Output: (a) a polish backlog grouped by surface and severity, (b) targeted Figma / claude.ai/design iterations for the top 5 highest-leverage gaps, (c) per-app empty/loading/error state coverage matrix for the 25 OS apps. Honor the locked palette (honey + violet + mint, no blue), the bee-usage rules (landing-only, footer-mark only on landing primary, never on app chrome), the macOS desktop paradigm in the shell, and the dark-first ground at `--hive-950` `#08090c`.
---
**End of inventory.**
Generated 2026-04-29 from read-only scan. No code or repo files modified.