SPB Git

spb/zyquo-cloud-web

Public MIT

Zyquo Cloud Web — every cloud model, one beautiful chat, entirely in your browser.

phase6: personas + 56-template library, slash commands, command palette, compare mode, KaTeX/Mermaid, dictation, auto-trim, conversation tools

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Simon-Pierre Boucher committed (Jul 31, 2026) parent 898fa7e Browse files

20 changed files +3,356 −141

modified docs/PLAN.md +22 −1
@@ -124,7 +124,28 @@ icon (Big Sur squircle, sky gradient, white Z with block caret) as its PWA
124 identity, matching the Dock/home-screen look of the macOS app. Favicon, 124 identity, matching the Dock/home-screen look of the macOS app. Favicon,
125 apple-touch, maskable, OG image and social meta are all in place. 125 apple-touch, maskable, OG image and social meta are all in place.
126 126
127−## Phase 6 — Features — pending 127+## Phase 6 — Features
128+
129+- [x] Personas: all 8 native personas ported verbatim (`features/personasData.ts`); apply via palette or slash menu (system prompt + personaID per conversation)
130+- [x] Prompt Library: all 56 native templates ported verbatim (8 categories × 7, `features/promptLibraryData.ts`), `{{input}}` substitution
131+- [x] Slash commands: `/` in the input → menu with quick tools (/summarize /translate /rewrite /explain), full template library, personas; keyboard-driven
132+- [x] Command palette (⌘K): actions (new chat, compare, switch model, settings, focus mode, summarize, duplicate), jump-to-conversation, models, personas, templates
133+- [x] Multi-model compare: 2–4 columns, per-column model chip/stream/stop/copy/regenerate, broadcast prompt, **promote answer into thread**
134+- [x] Branching/variants (Phase 4 store): regenerate keeps prior answer as a variant with ‹ › switcher; branch-from-message forks a conversation; edit & fork
135+- [x] Rich rendering: GFM + tables + task lists (Phase 4) + **KaTeX math** + **Mermaid diagrams** (lazy-loaded ~1MB chunk, strict security level)
136+- [x] Read-aloud (Web Speech TTS) + dictation (SpeechRecognition, mic button)
137+- [x] Continue generation (last assistant message action), Stop, live elapsed + tok/s
138+- [x] Token/cost HUD + context bar (Phase 4) + **auto-trim oldest turns** at 90% of the window (system prompt kept, toast informs)
139+- [x] Conversation tools: summarize (cheapest model), duplicate, export MD/JSON, undo delete, pin, rename, search
140+- [x] QoL: retry w/ backoff (Phase 2), human error toasts naming the provider + CORS hint, autosave everywhere, PWA shell precache trimmed 4.7MB → 1.15MB (mermaid/katex runtime-cached)
141+- [x] Coherence sweep #2: headers ✓, storage/network layering ✓, accent hexes moved to design/accents.ts
142+
143+**Phase 6 summary.** Full feature parity plus the web-specific extras: the
144+native personas and 56-template library are ported verbatim and surfaced
145+through both the ⌘K palette and a `/` slash menu; compare mode broadcasts to
146+up to four independently streaming columns with promote-to-thread; math and
147+diagrams render (lazily); reading aloud, dictation, auto-trim, and conversation
148+tools round out the spec. Sweep clean, `npm run check` green.
128 149
129 ## Phase 7 — Verification — pending 150 ## Phase 7 — Verification — pending
130 151
modified package-lock.json +1516 −110
Large diff (1,941 lines) is not loaded by default to keep the page fast.Load diff
modified package.json +4 −0
Large diff (15 lines) is not loaded by default to keep the page fast.Load diff
modified src/App.tsx +19 −1
Large diff (40 lines) is not loaded by default to keep the page fast.Load diff
modified src/components/ChatView.tsx +2 −1
Large diff (14 lines) is not loaded by default to keep the page fast.Load diff
added src/components/CommandPalette.tsx +294 −0
Large diff (294 lines) is not loaded by default to keep the page fast.Load diff
added src/components/CompareView.tsx +327 −0
Large diff (327 lines) is not loaded by default to keep the page fast.Load diff
modified src/components/InputBar.tsx +73 −2
Large diff (101 lines) is not loaded by default to keep the page fast.Load diff
modified src/components/Markdown.tsx +24 −3
Large diff (50 lines) is not loaded by default to keep the page fast.Load diff
added src/components/Mermaid.tsx +62 −0
Large diff (62 lines) is not loaded by default to keep the page fast.Load diff
modified src/components/MessageBubble.tsx +12 −0
Large diff (31 lines) is not loaded by default to keep the page fast.Load diff
modified src/components/SettingsModal.tsx +7 −14
Large diff (39 lines) is not loaded by default to keep the page fast.Load diff
added src/components/SlashMenu.tsx +199 −0
Large diff (199 lines) is not loaded by default to keep the page fast.Load diff
added src/design/accents.ts +21 −0
Large diff (21 lines) is not loaded by default to keep the page fast.Load diff
added src/features/conversationTools.ts +94 −0
Large diff (94 lines) is not loaded by default to keep the page fast.Load diff
added src/features/personasData.ts +80 −0
Large diff (80 lines) is not loaded by default to keep the page fast.Load diff
added src/features/promptLibraryData.ts +564 −0
Large diff (564 lines) is not loaded by default to keep the page fast.Load diff
modified src/state/store.ts +11 −4
Large diff (27 lines) is not loaded by default to keep the page fast.Load diff
modified tsconfig.app.tsbuildinfo +1 −1
Large diff (4 lines) is not loaded by default to keep the page fast.Load diff
modified vite.config.ts +24 −4
Large diff (37 lines) is not loaded by default to keep the page fast.Load diff
Menu

Theme