Files
archy/loop/plan.md
T
DorianandClaude Opus 4.6 d7d1f1df37 docs: mark M11 complete and pass TEST:M11 gate
74 tests pass, 0 typecheck errors, 0 lint errors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 00:31:23 +00:00

15 KiB
Raw Blame History

AIUI Plan 2 — Automated Loop Task List

Format: - [ ] = pending, - [x] = done. Make at least 30 attempts on any difficult task before moving on. Loop reads this file. Specs are in PLAN2.md. Design rules are in loop/prompt.md.

M8: Chat UX Polish

  • M8.1 — Message editing & regeneration (pencil icon on hover, re-send clears subsequent messages)
  • M8.2 — Conversation branching (fork from any message, branch switcher pill, each branch stored in IDB)
  • M8.3 — Reply-to threading (quoted excerpt in input, thread line visual, prepend > quote to message)
  • M8.4 — Conversation search (Cmd+F glass panel, real-time highlight, up/down to jump between matches)
  • M8.5 — Auto-title generation (background AI call after first exchange, silently replaces "New Chat")
  • M8.6 — Context window visualiser (slim progress bar, token estimate, orange → red > 80%)
  • M8.7 — Conversation export (Markdown / JSON / plain text, File System Access API + <a download> fallback)
  • M8.8 — Import conversations (drag-and-drop JSON, AIUI format + Claude.ai export format, merge into IDB)
  • M8.9 — Long-press / right-click context menus (messages + content cards, ContextMenu.vue glass-card)
  • M8.10 — Scroll position memory (restore per conversation ID, works with virtual scroller)
  • TEST:M8 — Run pnpm test and pnpm typecheck && pnpm lint. Fix all failures before proceeding.

M9: AI Experience

  • M9.1 — Multi-model comparison mode (split-screen same prompt → 2 models, swipeable on mobile)
  • M9.2 — System prompt editor / personas (named personas, model preference, accent, per-conversation)
  • M9.3 — Prompt template library (/ command palette, {{variable}} substitution, IDB-persisted)
  • M9.4 — Vision input (drag-and-drop image, base64 in message content, only when model supports vision)
  • M9.5 — Response feedback (thumbs up/down per message, stored in IDB, exported with conversations)
  • M9.6 — Token & cost estimator (badge per message, running total in context bar, model pricing table)
  • M9.7 — AI memory panel (pinned facts injected into every system prompt, encrypted IDB, max 20 items)
  • M9.8 — Model capabilities badge (Vision / Tools / Long context badges in model selector)
  • M9.9 — Temperature & params sliders (temperature, max tokens, top-P, persisted per conversation)
  • M9.10 — Stop sequence configuration (comma-separated stop sequences in advanced settings)
  • TEST:M9 — Run pnpm test and pnpm typecheck && pnpm lint. Fix all failures before proceeding.

M10: Advanced Content Renderers

  • M10.1 — Full article renderer (TOC sidebar, reading time, font-size control, print mode, markdown-it)
  • M10.2 — PDF viewer (pdfjs-dist lazy loaded, page nav, zoom, text selection, page 1 thumbnail preview)
  • M10.3 — Map renderer (Leaflet + OpenStreetMap lazy loaded, pins for all places, cluster > 10, fullscreen)
  • M10.4 — Recipe renderer (new recipe content type, ingredients checklist, numbered steps, scale slider)
  • M10.5 — Event renderer (new event content type, countdown, ICS download, Google Calendar URL)
  • M10.6 — Math renderer (KaTeX lazy loaded, $...$ inline + $$...$$ block, batch render on stream end)
  • M10.7 — Mermaid diagram renderer (lazy loaded, dark theme, flowchart/sequence/gantt, pan/zoom mobile)
  • M10.8 — Audio waveform player (WaveSurfer.js lazy loaded, orange waveform, click-to-seek)
  • M10.9 — Table renderer (sortable columns, row filter, CSV export, virtualise > 500 rows)
  • M10.10 — Timeline renderer (new timeline content type, vertical layout, animate in during streaming)
  • M10.11 — Code runner (HTML/CSS/JS sandboxed iframe, sandbox="allow-scripts", output console)
  • M10.12 — Video renderer (native <video>, HLS.js lazy loaded, YouTube nocookie embed fallback)
  • TEST:M10 — Run pnpm test and pnpm typecheck && pnpm lint. Fix all failures before proceeding.

M11: Nostr Ecosystem

  • M11.1 — Publish Nostr notes (compose panel, sign via NIP-07, broadcast to relays, per-relay status)
  • M11.2 — Nostr DMs NIP-17 (encrypted DMs, inbox tab, contact list, store in IDB)
  • M11.3 — Relay management UI (add/remove relays, latency column, read/write toggle, import NIP-65)
  • M11.4 — Nostr profile editor (display name, bio, avatar, NIP-05, Lightning address, publish kind:0)
  • M11.5 — Zaps NIP-57 ( button on notes/profiles, sat amount input, LNURL-pay flow, QR + deep-link)
  • M11.6 — NIP-05 verification badge (✓ badge, fetch from NIP-05 domain, cache 24h in IDB)
  • M11.7 — Nostr search NIP-50 (search input, send REQ with search to NIP-50 relays, filter by type)
  • M11.8 — Thread view (fetch root + replies via #e tag, render threaded tree, max 5 levels deep)
  • M11.9 — Nostr lists NIP-51 (follow/mute/pin/bookmark lists, kind:3/10000/10001/10003, add/remove)
  • M11.10 — Long-form content NIP-23 (kind:30023 articles, article renderer, discovery tab, share button)
  • TEST:M11 — Run pnpm test and pnpm typecheck && pnpm lint. Fix all failures before proceeding.

M12: Bitcoin Ecosystem

  • M12.1 — On-chain address display (bech32 + legacy detect, QR, mempool.space link, copy button)
  • M12.2 — Fedimint ecash display (detect token format, amount in sats, "Receive in Fedi" deep-link)
  • M12.3 — BOLT12 offers (detect lno1..., decoded amount, description, QR, "Pay with wallet" deep-link)
  • M12.4 — Nostr Wallet Connect NWC (NIP-47, paste connection string, check balance, pay with confirmation)
  • M12.5 — LNURL-auth login (generate LNURL-auth QR, scan with wallet, set persistent Lightning identity)
  • M12.6 — Live sat/fiat price (mempool.space /api/v1/prices, 60s refresh, useBitcoinPrice composable)
  • M12.7 — Mempool.space tx viewer (detect txid/block height, confirmations, fee rate, live WebSocket)
  • M12.8 — BOLT11 decoder card (amount, description, expiry countdown, red when < 5min, NWC pay button)
  • TEST:M12 — Run pnpm test and pnpm typecheck && pnpm lint. Fix all failures before proceeding.

M13: Content Discovery

  • M13.1 — "For You" feed (frequency map from favorites + history, local only, refreshes on app open)
  • M13.2 — Content tagging (user tags on any item, stored in IDB, filter grids by tag, tag cloud in favorites)
  • M13.3 — Smart playlists (recently played, most played, by genre, by decade — computed IDB views)
  • M13.4 — Similar content (background AI call per item, 3 suggestions, cached 7 days in IDB)
  • M13.5 — Recently viewed history (last 50 items any type, "Recent" tab in content panel, stored IDB)
  • M13.6 — Content collections (user-curated mixed-type lists, mosaic thumbnail grid, shareable NIP-51)
  • M13.7 — Trending in conversations (most-referenced items across 30 days, "referenced N times" badge)
  • M13.8 — Share content to Nostr (generate note with title + AI description + tag URL, sign via NIP-07)
  • TEST:M13 — Run pnpm test and pnpm typecheck && pnpm lint. Fix all failures before proceeding.

M14: Plugin Marketplace

  • M14.1 — Plugin discovery UI (fetch static registry JSON, list with name/type/author/version, install button)
  • M14.2 — Plugin settings panel (PluginSettingsForm.vue renders JSON Schema, stored encrypted IDB)
  • M14.3 — Plugin permissions UI (permissions dialog on install, grant/deny per capability, stored per plugin)
  • M14.4 — Plugin dev mode (VITE_PLUGIN_DEV=true, hot-reload from src/plugins/dev/, error inspector)
  • M14.5 — Built-in plugin: Wikipedia (/wiki {query}, Wikipedia REST API, returns article card)
  • M14.6 — Built-in plugin: OpenLibrary (/book {query}, openlibrary.org, returns book_ext cards)
  • M14.7 — Plugin import by URL (paste GitHub raw URL or IPFS CID, validate manifest, permissions dialog)
  • M14.8 — Plugin versioning & auto-update (check registry on start, badge when updates available, changelog)
  • TEST:M14 — Run pnpm test and pnpm typecheck && pnpm lint. Fix all failures before proceeding.

M15: Settings & Personalisation

  • M15.1 — Accent colour picker (colour wheel + presets, updates --color-accent CSS var, IDB-persisted)
  • M15.2 — Glass intensity slider (Subtle/Default/Strong presets, blur + opacity CSS vars, live preview)
  • M15.3 — Font size settings (Compact 13px / Default 15px / Large 17px, sets --font-size-base)
  • M15.4 — Content type visibility (toggle each of 11 renderers, hidden types still extract, just not shown)
  • M15.5 — Keyboard shortcut map (list all shortcuts, click to rebind, conflict detection, IDB-persisted)
  • M15.6 — Browser push notifications (opt-in, "Generation complete" while backgrounded, SW notification)
  • M15.7 — Auto-archive old conversations (7/30/90/never slider, "Archive" IDB store, unarchive per item)
  • M15.8 — Full data export (JSON archive of all IDB stores, optional encryption, GDPR compliant)
  • M15.9 — Data wipe (two-step confirm, clears IDB + SW cache + localStorage, checkbox for API key vault)
  • M15.10 — Default conversation settings (model, persona, web search, token counts — applies to new convos)
  • TEST:M15 — Run pnpm test and pnpm typecheck && pnpm lint. Fix all failures before proceeding.

M16: Mobile UX Polish

  • M16.1 — Bottom sheet component (BottomSheet.vue, gesture drag, 40%/80%/100% snap points, backdrop)
  • M16.2 — Swipe to navigate conversations (swipe left/right in chat, slide transition, 80px + 0.3 velocity)
  • M16.3 — Pull-to-refresh on content panels (glass spinner, re-fetch context, haptic on release)
  • M16.4 — Haptic feedback (useHaptics() composable, navigator.vibrate(), settings toggle to disable)
  • M16.5 — Web Share API (native navigator.share(), fallback glass share sheet, copy/Nostr options)
  • M16.6 — Pinch-to-zoom on images & maps (usePinchZoom() composable, 1×–4×, double-tap reset)
  • M16.7 — iOS PWA polish (apple-mobile-web-app meta tags, safe area insets, splash screens)
  • M16.8 — Long-press context menus mobile (500ms trigger, opens as BottomSheet, haptic on trigger)
  • M16.9 — Scroll position memory per route (session Map, works across tab switches and back navigation)
  • M16.10 — Landscape mode optimisation (50/50 split layout, minimal player bar, smooth rotate transition)
  • TEST:M16 — Run pnpm test and pnpm typecheck && pnpm lint. Fix all failures before proceeding.

M17: Accessibility & Internationalisation

  • M17.1 — Keyboard navigation audit (Tab order, focus trap in modals, Escape closes, arrow key grids)
  • M17.2 — ARIA audit (aria-label all icon buttons, aria-live dynamic content, dialog roles)
  • M17.3 — High contrast mode (prefers-contrast: more + Settings toggle, higher border/text opacity)
  • M17.4 — Automated accessibility tests (axe-core in Playwright, pnpm test:a11y, fail on critical)
  • M17.5 — i18n foundation (vue-i18n, extract strings to en.json, add es.json + fr.json)
  • M17.6 — RTL layout support (dir="rtl" for Arabic/Hebrew, logical CSS properties throughout)
  • M17.7 — Dyslexia-friendly font (OpenDyslexic WOFF2 self-hosted, Settings → Appearance → Font)
  • M17.8 — Skip navigation link (hidden "Skip to main content" visible on Tab focus, jumps to <main>)
  • TEST:M17 — Run pnpm test, pnpm test:a11y, and pnpm typecheck && pnpm lint. Fix all failures.

M18: Performance

  • M18.1 — Bundle analysis & splitting (vite-bundle-visualizer, identify eager loads, add route chunks)
  • M18.2 — Image lazy loading with blur-up (loading="lazy", 16×16 base64 placeholder, CSS transition)
  • M18.3 — Request deduplication (useFetch() composable, in-flight Promise sharing, AbortController)
  • M18.4 — Web Worker for heavy tasks (heavy.worker.ts via Comlink, contentExtraction + crypto)
  • M18.5 — Prefetch on hover (mouseenter/touch-hold, pre-fetch detail data, 5-min short-lived cache)
  • M18.6 — Memory leak audit (onUnmounted cleanup for all intervals/listeners/WebSockets/observers)
  • M18.7 — Background sync queue (queue failed IDB saves, retry on visibilitychange, warn badge)
  • M18.8 — OPFS storage backend (SQLite WASM via @sqlite.org/sqlite-wasm, VITE_STORAGE=opfs flag)
  • TEST:M18 — Run pnpm test, pnpm build, verify gzipped bundle < 250 KB. Fix if over budget.

M19: Developer Experience & Quality

  • M19.1 — Storybook 8 (stories for all ui/ components, dark glass canvas, pnpm storybook)
  • M19.2 — Visual regression tests (Playwright screenshots for key views, fail on > 0.5% pixel diff)
  • M19.3 — Bundle size CI gate (bundlesize, fail if > 250 KB gzipped, PR comment with diff)
  • M19.4 — Comprehensive mock data (20+ items per content type, mock Nostr relay, mock TMDB)
  • M19.5 — E2E cross-browser matrix (Chromium + Firefox + WebKit, mobile viewports iPhone 14 + Galaxy S21)
  • M19.6 — Proxy integration tests (mock Anthropic API, assert SSE format, tool_use, error codes, disconnect)
  • M19.7 — Lighthouse CI (LCP < 3s, CLS < 0.15, scores posted as PR comment, stored in reports/)
  • M19.8 — Dependency audit (pnpm audit + license-checker, weekly job, block on critical vulns)
  • TEST:M19 — Run full suite: pnpm test && pnpm test:e2e && pnpm typecheck && pnpm lint. All must pass.

M20: Collaboration & Sharing

  • M20.1 — Share conversation via Nostr (export as kind:30023 long-form article, sign NIP-07, optional encrypt)
  • M20.2 — Read-only conversation viewer (/view/:nostrAddr route, renders shared Nostr conversation)
  • M20.3 — Collaborative playlist NIP-51 (shared kind:30004 list, invite by npub, merge contributions)
  • M20.4 — Conversation templates (pre-built starters as glass cards, system prompt + first message, NIP share)
  • M20.5 — Export as audio podcast (Web Speech API TTS, WAV export via Web Audio, optional music mix)
  • M20.6 — Community content packs (import curated JSON from GitHub/IPFS, listed in plugin marketplace)
  • TEST:M20 — Run pnpm test && pnpm typecheck && pnpm lint. All green before proceeding.

Final Sign-off

  • FINAL — Run pnpm test && pnpm test:e2e && pnpm typecheck && pnpm lint && pnpm build. All pass. Update PROGRESS.md with completion summary. Tag release v2.0.0.

Notes

(Claude adds brief completion notes here as tasks finish.)