WorldScript Studio aims to become the leading open-source platform for AI-assisted creative writing β offline-first, privacy-friendly, and extensible.
Benchmarks from the UI/PWA deep-dive (implemented in repo, no new mandatory docs):
- Core paths: Welcome β Blank/Demo β Manuscript / Writer β Export β Settings β navigation via Sidebar, Command Palette and consistent glossary terms (
docs/BEST-PRACTICES.md). - Responsive: Mobile-shell E2E
tests/e2e/mobile-shell.spec.ts; small viewports tested manually for Bottom Sheet and Writer split. - Design tokens: Hotspots migrated incrementally to
--sc-*/--ring-focus(docs/Design-System.md); legacy bridge inindex.cssuntil migration is complete. - Deep links:
?view=is validated against valid views on startup (hooks/useApp.ts); PWA shortcuts in the manifest point to the same keys (public/manifest.json). - Share target: GET parameters
share_title/share_text/share_urlβ Toast +sessionStorage+ URL cleanup (App.tsx). - Service Worker:
APP_VERSIONfollowspackage.jsonviascripts/sync-sw-version.mjs(predev/prebuild); Network-only for AI and local inference hosts (public/sw.js); precache only viainstall+ injected__WB_MANIFEST(no second parallelprecacheAndRoutetrack). - HTML
lang: follows the selected UI language (App.tsx).
Current sprint tasks β
TODO.mdCompleted items archive βdocs/history/
Desktop runtime β Qt 6 + GPUI native strategy (PLANNED β Rust Core prerequisite work not yet started)
WorldScript Studio's desktop runtime plan is React/PWA (first-class web product) β Tauri 2
(transitional only, retired once Qt reaches Stable) β an authoritative Rust Core β Qt 6/Qt Quick
(QML) as the primary native desktop product β GPUI admitted later as a secondary native product
behind a strict gate. CEF was evaluated and retired from the target architecture because Crashpad
cannot produce sandboxed-renderer crash dumps under Linux's default Yama ptrace_scope=1 without
weakening the sandbox β R-19. Not part of the v2.0 Foundation scope below, tracked separately. Full
strategy, waves, and gates:
ADR-0021 Β·
docs/native/ROADMAP-QT-GPUI-DESKTOP.md. Superseded CEF
decision record: ADR-0019 Β·
docs/historical/cef/README.md.
Forward-looking work carried out of the v1.24 cycle (i18n expansion and the six-PR hardening sequence below both shipped in v1.24.0/v1.24.1; the worker-generation-duplication item deferred in v1.24.2 shipped as the v1.24.3 WorkerBus v2 consolidation β see the RELEASED sections):
- Coverage targets: lift toward Lβ₯85 % / Bβ₯75 % / Fβ₯80 % β focus on AI routing, Voice, Copilot.
- Local AI & Voice hardening: Whisper/Kokoro on low-end devices, model-integrity checks, Eco-Mode.
- Error boundaries + structured logging for AI/worker failures.
- Accessibility deep-dive: manual keyboard + screen-reader passes.
- Plugin Registry Beta: graduate from the sandbox-hardening phase.
- Bundle optimisation: further code-splitting for heavy chunks.
- Local-first: advance ADR-0008 β B2.1 Y.Text migration β B2.2 SoT flip behind
enableLocalFirstSync. - i18n human native review: 14 Beta/RTL locales (all except de/en/es/fr/it) are machine-translated to ~96-100 %; native-speaker review still open (checklist in
docs/TRANSLATION-GUIDE.md). Seedocs/LANGUAGE-EXPANSION-2026.md.
Status: Merged (5 stacked PRs #286β288/#290β291, plus independent #289) and tagged. See
CHANGELOG.md [1.24.3] and ADR-0015
for the full decision record.
- Closed out the v1/WorkerBus-v2 duplication flagged as tracked debt in v1.24.2: DuckDB analytics,
local embeddings, and local NLP now all route through the shared WorkerBus v2 pool instead of
dedicated
new Worker(...)instances per service. - Recovered a merge queue interrupted mid-session by a local editor crash β all five PRs required a fresh sync-merge conflict resolution against accumulated fixes before landing.
- Fixed a DuckDB abort-listener leak and hardened WorkerBus re-registration failure handling.
- Paused Vercel auto-deploy mid-term after 2 undiagnosed preview-deployment failures (GitHub Pages and Cloudflare Pages remain live and unaffected).
Status: Merged (PR #284) and tagged. See CHANGELOG.md [1.24.2],
AUDIT.md "Audit 2026-07-29 β CSP / Crypto / Truth" for the full finding table and
post-mortem, and docs/audit/WS-RUN-LOG-2026-07-29.md for
the per-workstream execution record.
- CSP functional-truth restored:
'wasm-unsafe-eval'had been missing on all 5 deployment surfaces for two months, silently blocking the entire advertised local-inference stack (WebLLM, ONNX Runtime Web, Transformers.js, DuckDB-WASM, Whisper-STT, Kokoro-TTS) in every deployed Chromium browser. New 3-layer CSP test architecture so this class of defect can't recur silently. - Desktop API-key encryption hardened from an unsalted single-SHA-256 scheme to PBKDF2 600k + salt.
- DuckDB-WASM self-hosted, replacing an unversioned, already-unreachable third-party CDN.
- Doc-truth fixes (fabricated OS-keychain claim removed, canonical production URL unified with a new drift gate) and CI housekeeping (Storybook build dedup + a genuinely broken test-runner invocation fixed; coverage ratchet raised to CI-measured values).
- Worker-generation duplication (v1 vs. WorkerBus v2, both live) documented as tracked debt β consolidation is out of scope here, deferred to a dedicated migration sprint.
Status: β
Released β see CHANGELOG.md [1.24.1].
- Local-AI reliability: desktop Ollama/LM Studio/vLLM discovery fixes, corrected a misleading browser AI-status badge.
- AI heuristic-fallback foundation (ADR-0011) + per-feature generators for Outline, Character, World profiles, and Plot Board "suggest next beat" β offline-capable degradation when cloud/local AI is unavailable.
- Real self-hosted LanguageTool grammar/spelling integration (privacy-first, replaces a placeholder typo list).
- 20-PR Dependabot backlog triage (16 merged, 4 closed as superseded after root-causing AI SDK v4/Biome 2.5.x/dev-tooling blockers).
- Issue #60 vendor-fork audit closeout (
packages/collab-transportvs. upstream y-webrtc 10.3.0). - Security/build hardening:
persist-credentials(CWE-522), a Tailwindltr/rtlfix, 3 ineffective dynamic imports, 2 CWE-209 fixes.
Status: β
Released β see CHANGELOG.md [1.24.0].
- Six stacked PRs: privacy, experimental-feature labeling, coverage, voice consent, local-AI, and doc/hygiene hardening.
- i18n expansion: added
fi/sv/hu/is/eu(Beta) +fa(RTL, Persian) β 11β17 locales at release time;ru/kofollowed in a later v1.24.x patch, bringing the current total to 19. Priority chrome hand-translated; remaining modules machine-translated (glossary v2.0, placeholder-masked) to ~96-100 % across all Beta locales.
Status: β
Released β see CHANGELOG.md [1.23.0].
- Rebrand StoryCraft β WorldScript Studio: repository metadata, build/URLs/PWA, Tauri identity, storage keys, UI components, i18n values and placeholder assets (8-phase sweep, PRs #142β#148); WorldScript "W" 8-bit monogram icons.
- AI error taxonomy + fail-fast retry classification: localized Copilot/Writer error messages, AI request correlation IDs, transient-vs-fatal retry gating.
- Local-first data foundation (ADR-0008): A0.1 perf harness β B0.1 PoC β ADR-0008 β B1.1 Yjs shadow sync, all behind
enableLocalFirstSync(Redux stays source of truth). - Plug-and-play Local AI settings: capability detection, model downloads, storage management, fallback.
- OpenRouter + AI Execution Mode settings sections: localized, modernized (Card + radiogroup), reactive cloud-policy block.
- Bundle split & budget tightening (PR #130): named
vendor-webllm/vendor-onnx/vendor-transformerschunks; ceilings6200 KB / 2500 KB entry. - i18n interpolation bug-class fix +
i18nPlaceholdersregression guard. - Tauri blank-screen fix + updater asset-URL normalization.
- i18n: 2 709 keys Γ 11 locales.
Manual rebrand smoke-test sign-off matrix:
docs/V1.23-REBRAND-SMOKE-TEST.md(human-only step).
Status: β
Released β siehe CHANGELOG.md [1.22.0].
- OpenRouter provider (Cloud 5): Unified Gateway zu 100+ Open-Source-Modellen mit Circuit-Breaker, RPM-Tracking und Free-Tier-Katalog.
- AI Execution Modes:
hybrid|cloud|local|ecoβ vier Routing-Strategien in Settings β AI & Models;AiModeIndicatorim Copilot-Header. - Ultimate Copilot AI v2: Markdown-Rendering (DOMPurify), Sidebar/Dialog-Mode, Apply-to-Chapter (Undo),
InlineAnnotationLayer, ProForge Ask-Copilot-Chip. - WebLLM Worker Offload:
@mlc-ai/web-llmlΓ€uft im dedizierten WorkerBus-v2-Pool mit automatischem Main-Thread-Fallback. - Whisper WASM STT End-to-End: Deterministische Deep-E2E-Suite fΓΌr Model-Download, STTβIntentβCommand und Stop-Listening.
- Prompt-Injection & Plugin-Isolation Hardening (PR #114): C0-Control-Character-Filter, DOMPurify-HΓ€rtung, Plugin-Storage-Key-Validierung, Worker-Sandbox mit
Function/eval/WebAssembly-Guards. - i18n: 2 594 Keys Γ 11 Locales.
Status: β
Released β siehe CHANGELOG.md [1.21.0].
- CSP
connect-srcOption B: redundante Cloud-Endpoints entfernt, intentionalhttps:fΓΌr BYOK behalten; ADR-0004 + Regressionstest. - Suppression-Debt Ratchet Gate:
scripts/check-suppressions.mjsmit Baseline 159 in CI; erste Abatement-Tranche (22noExplicitAny). - Bundle-Budget Single Source of Truth:
package.jsonbundle:budget=--max-kb 6500 --max-entry-kb 4000(later tightened to6200 / 2500in PR #130, 2026-06-14). - Whisper WASM STT Download UI + VADβWhisper Bridge:
VoiceModelDownloadModal,VoiceActivityCoordinator. - Sepia Dark Mode β "Candlelit Manuscript" als vierter Theme-Variant.
- Deep E2E Coverage Layer: Feature-Flag-Matrix + Error-Path-Specs.
- Coverage Batches AβC: Thresholds gehalten bei L74/B60/F67/S72.
Status: β
Released β siehe CHANGELOG.md [1.20.0].
- Tauri Desktop Pipeline repariert: pnpm-Config-Migration, Signing-Fix, Native File Associations (
.worldscript/.scst), Single-Instance, Deep-Link-Handler. - UI Modernization Phase 1:
LanguageSelector,RadioGroup,Tabs,ToggleSwitch. - Phase 3 i18n Expansion:
ja/zh/pt/elBeta-Sprachen + Intl APIs (PluralRules,NumberFormat,RelativeTimeFormat,Collator,ListFormat,DisplayNames). - Coverage C-7: +96 Tests; Thresholds angehoben.
- Quality Gates stabil: lint β Β· typecheck β Β· i18n:check β Β· parity:check β Β· bundle:budget β Β· smoke:prod β .
v1.19.0 β Phase 2: Security, Voice WASM, Collab Transport, A11y Gate, RTL Beta (RELEASED 2026-05-28)
Status: β
Released β siehe CHANGELOG.md [1.19.0] und docs/SPRINT-HANDOFF-2026-05-28.md.
- B-1 β IDB At-Rest Encryption: AES-256-GCM passphrase-derived encryption, PBKDF2 600k iter,
{ extractable: false }. - B-2 β Voice WASM Scaffold: Whisper.cpp WASM STT + Silero VAD v4 via ONNX Runtime Web.
- B-3 β collab-transport Vendor Fork: y-webrtc 10.3.0 mit RTCDataChannel E2E encryption.
- B-4 β axe-core E2E Accessibility Gate: 8-view WCAG 2.2 AA Scan, zero violations.
- B-5 β RTL Layout Beta:
ar/heLocale Stubs +enableRtlLayoutFlag. - B-6 β StructuredLogger: IDB + Tauri JSONL sinks, GDPR
sanitizeLogContext. - B-7 β Coverage Thresholds Raised: L71/F63/B57/S69; gemessen L73/F65/B59/S71.
- B-8 β Stryker Gate Raised:
break70 β 75; 40 Mutations-Targets.
Status: β
Released β commit 60f12fd, siehe CHANGELOG.md [1.18.0].
- Phase H: Author-facing Labels, "context passages" Rename, Feature-Flag-Beschreibungen, behavioral tests.
- Phase A:
BaseAgentAbstract Class,aiConstants.ts,addDebouncedListenerFactory. - Phase P:
SupervisorAgent,executeStageWithSupervision,BaseAgent.selfReflect(), Honest Fallbacks,PipelineReviewPanelRedesign. - Phase X: Settings-Nav Semantische Gruppierung, Flow Mode, Empty States.
Status: β
Released β siehe CHANGELOG.md [1.17.0].
- Engine-Abstraktionen (
SttEngine,TtsEngine,VadEngine,WakeWordEngine,IntentEngine). - Web Speech API Fallbacks, Hybrid Intent Engine,
VoiceCommandService,voiceSlice. - React Hooks (
useVoice,usePushToTalk,useVoiceDictation,useVoiceAccessibility). - UI Components (
VoiceIndicator,VoiceControlPanel,VoiceSettingsSection). - Audio Navigator + Feedback Service; 83 Voice-Unit-Tests.
Status: β Completed (see docs/history/completed-v1.1.md for details)
All critical, high, and most medium-priority items have been completed, including:
- ManuscriptView resize-listener cleanup (AbortController + throttle)
- Feature-flag system (localStorage-based, UI in Settings)
- DevContainer configuration
- Request deduplication (abort-previous pattern in aiThunkUtils.ts)
- Self-hosted fonts (no CDN, no Google Fonts)
Status: β Completed
- codexService infinite-loop fix (while+continue β for...of matchAll)
- Modal focus-trap cleanup consolidated (fragile 2-return β single cleanup)
- FOUC theme-init fixed (inline script + localStorage mirror)
- Untranslated languages (FR/ES/IT) removed from selector
- Dead code removed (buildDeduplicationKey, persist/PERSIST)
Status: β
Released as v1.3.0 (2026-05-08) β see CHANGELOG.md, AUDIT.md (Follow-up 2026-05-08).
- Legacy β dual IndexedDB migration, Story Bible / Codex feature flags, scene visualization,
@google/genaiv2, Stryker + Playwright visual/a11y harness, Biome--error-on-warnings. - Documentation (2026-05-06): Complete 15-file inventory + README Documentation Hub incl.
.github/ACTIONS-OPTIMIZATIONS.md; CI/Copilot texts on dual-DB and E2E helpers β seeAUDIT.mdβMarkdown corpusβ andCHANGELOG.md[Unreleased].
Status: β Completed (security hardening, Tauri parity, i18nΓ5, Spotlight tour β see CHANGELOG [1.2.0])
- β
CryptoKey non-extractable (
crypto.subtle.generateKey()) - β
CSP img-src hardening (
frame-ancestors 'none',upgrade-insecure-requests) - β Import JSON schema validation with Valibot
- β Collaboration awareness-state validation
- β communityTemplateService β local static asset path
- β OpenAI stream abort-check, silent model-downgrade stopped
- β Gemini connection test (real API call)
- β
Documentation 2026-05:
docs/CI.md, README βDocumentation Hubβ, CONTRIBUTING (Biome/Node 22/Vite 8), Copilot/CLAUDE/AUDIT synchronized with current workflow - β Coverage config migrated to glob patterns
- β
TypeScript 6.0 adopted (
stableTypeOrdering, nativeRegExp.escape) - β Project/settings save listeners separated (performance)
- β SettingsView.tsx split into 8 section components (2116 LOC β ~234 LOC)
- β constants.tsx split into icons/defaults/index
- β projectSlice.ts split into 6 thunk domain files (777 β 248 LOC)
- β Lighthouse CI hard-fail enabled
- β Test suite expanded to 160+ tests (CI green on Node LTS + Node 24)
- β
StorageBackend interface β
storageBackend.ts, strictStoryProjecttypes on proxy
- β
fileSystemService: retry logic, LZ-string compression, numeric snapshot IDs,
deleteImage(),hasSavedData(), auto-snapshot (5 min, max 20) - β
Story Codex + RAG vectors: file-per-project storage (
projects/{id}/codex/) - β
storageService/codexServiceroute everything through theStorageBackendinterface
Architecture: aiProviderService.ts β ollamaService.ts (HTTP client for localhost:11434)
| Model | Parameters | VRAM (min) | Strengths | Recommendation |
|---|---|---|---|---|
| Qwen3 8B | 8B | 6 GB | Multilingual, Reasoning | β Primary |
| DeepSeek V3.2 7B | 7B | 6 GB | Coding, Reasoning | Alternative |
| Llama 4 Scout 17B | 17B | 12 GB | Multilingual, long-context | Power user |
| Gemma 3 4B | 4B | 4 GB | Compact, fast | Low-end |
| Mistral Small 3.2 24B | 24B | 16 GB | Multilingual Instruction | High-end |
| Phi-4 Mini 3.8B | 3.8B | 4 GB | Reasoning, compact | Low-end |
| GLM-4 9B | 9B | 8 GB | Chinese+English | Niche |
| Kimi K2 Instruct | 32B (MoE) | 16 GB+ | Agentic, Tool-Use | Experimental |
Hardware matrix:
- Minimum (4 GB VRAM): Gemma 3 4B, Phi-4 Mini β basic text generation
- Recommended (8 GB VRAM): Qwen3 8B, DeepSeek V3.2 β complete toolchain
- Optimal (16+ GB VRAM): Llama 4 Scout, Mistral Small β long manuscripts, complex analysis
UX specification:
Settings β AI Provider β [Gemini Cloud | Ollama Local]
β³ If Ollama: model dropdown (auto-detect via GET /api/tags)
β³ Server URL: localhost:11434 (configurable)
β³ Status indicator: π’ Connected / π΄ Unreachable
Implementation steps: β all completed
- β
services/ollamaService.tsβ HTTP client (/api/generate,/api/chat,/api/tags) - β
aiProviderService.tsβ provider registry with fallback chain (Gemini fallback on Ollama error) - β
features/settings/settingsSlice.tsβadvancedAi.provider,advancedAi.model,advancedAi.ollamaBaseUrl - β
components/settings/AiProviderCard.tsx+AiSections.tsxβ provider toggle, model auto-detect, status indicator - β
Prompt adapter β
sanitizeOllamaPrompt+buildOllamaPromptinollamaService.ts - β
Default model: Qwen3 8B (
ollama/qwen3:8b)
Automatic extraction and maintenance of a βStory Bibleβ from the manuscript:
- RAG enhancement: Entities (characters, locations, objects) are automatically extracted while writing
- Knowledge graph: Visualize and maintain relationships between entities
- Contradiction detection: Real-time consistency check against the Codex
- Foundation: Existing RAG vector store in IndexedDB v5
Simplified automatic consistency checking:
- Character profiles are matched against manuscript mentions
- Warnings on name changes, age inconsistencies, location shifts
- Timeline view for chronological consistency
- Gemini image generation already implemented (character portraits, world ambiance)
- Extension: βVisualize sceneβ button in Writer view
- Optional: Stable Diffusion via Ollama/ComfyUI for local image generation
Status: π Planned (required before first Tauri release)
- β
StorageBackend interface β
storageBackend.ts, strictStoryProjecttypes on proxy - β
Guided tour (Spotlight with
driver.js, Dashboard + Help as entry point) - β
Tauri release pipeline: GitHub Release with installers on
v*tags βdocs/TAURI-CI.md/tauri-build.yml - β¬ Tauri v2 auto-update (
tauri-plugin-updater) + code signing β deferred to dedicated PR - β
FR/ES/IT key parity + CI gate (
pnpm run i18n:check) β qualitative translations iterative - β
Bundle size budgets + rollup analysis as CI (
pnpm run bundle:budget,analyzeartifact β seedocs/CI.md); optional LHCI performance budget still roadmap-open
Status: β
Released as v1.4.0 (2026-05-12) β see CHANGELOG.md
- Command Center:
services/commands/registry +CommandPalette.tsx(fuzzy search, recent/pinned, AI suggestions);CommandExecutorProvider; global shortcuts (services/keyboard/,useGlobalKeyboardShortcuts.ts); Settings β Shortcuts - Settings hub: search over control hints; settings JSON import/export
- Gold-Standard author pipeline: Binder, research split, compile profile, Pandoc EPUB, VC word-level diff, scene timeline, readability sampling, LanguageTool, local RAG rebuild, WebGPU leader election
- Hybrid-AI: local backend presets (Ollama/LM Studio/vLLM), OpenAI-compatible base URL, configurable fallback chain, desktop port scan
- Security: all GitHub Actions pinned to SHA, CodeQL SAST, OpenSSF Scorecard, gitleaks, SLSA attestation, Dependabot, branch protection
- Quality: pnpm strict config, Lighthouse accessibility error gate (WCAG 2.2)
Status: β
Completed (2026-05-16) β partial release of v1.4.0 cycle; details in CHANGELOG.md and TODO.md.
- 178 test files, totaling 2 024 tests (v1.6.2); Vitest thresholds at 63/62/48/54 (Lines/Statements/Branches/Functions)
- Measured coverage (2026-05-20, v1.6.2): 65.91 % Lines Β· 50.59 % Branches Β· 56.74 % Functions Β· 64.25 % Statements β all thresholds green
services/crossProjectSearchService.ts:searchAcrossProjects()viafuzzyScore, 5 locales (8 keys),transientUiStoreintegration (isCrossProjectSearchOpen), command palette command- v1 scope: single project (multi-project requires DB_VERSION bump)
WEBLLM_SUPPORTED_MODELS(4 MLC checkpoints: Llama 3.2 1B/3B, Phi-3.5 Mini, Gemma 2 2B),modelId/onProgressparameters, Settings UI with dropdown + WCAG progress indicator (role="progressbar",useRefmounted guard)- Localized in all 5 languages (3 new keys per locale in
settings.json)
CollaborationPanel.tsx: security warning banner (role="alert",aria-live="polite", WCAG 2.2 AA) visible before connection establishment
stryker.conf.json: 3 additional mutation targets (fuzzyScore.ts,palettePreferences.ts,commandBuilder.ts)tests/e2e/commands.spec.ts(palette Ctrl+K, "dashboard" search, fuzzy "wrt", Enter-navigate)tests/e2e/collaboration.spec.ts(security warning banner before connection)
services/libraryBackupService.ts: encrypted ZIP export (AES-GCM, META.json + vault.bin) β Settings β Data
Status: β Released 2026-05-19
- β WorkerBus v2, GpuResourceManager, EcoModeService, InferenceProgressEmitter
- β Active ONNX + Transformers.js inference (worker-offloaded)
- β LocalEmbeddingService (MiniLM-L6-v2), LocalNlpService (sentiment / summary / topics)
- β Hybrid RAG service (lexical + semantic + recency, 60/30/10)
- β Cross-Project Search v2 (privacy-preserving IDB index, two-phase search)
- β Yjs AES-256-GCM encryption foundation
- β Tauri v2 auto-updater pipeline + signing pipeline
- β Mobile PointerEvent resize, useLongPress, useSwipeGesture, BottomSheet, useHaptics
- β PromptLibrary + StyleTransfer / PlotHoleFix / ChapterAutoGeneration prompts
- β PluginRegistry + UsageAnalyticsService (opt-in)
- β 1 851 tests / 166 files; coverage 64.68 % lines / 49.06 % branches / 54.10 % functions
Status: β Released 2026-05-19
- β Plot-Board v2 β free-form canvas, SVG connections (5 types), subplot system, tension curve, beat-sheet overlays, snap-to-grid, mobile pinch/pan gestures
- β Real-Time Book Preview β scrollable Scrivener-style book view, live TOC, fullscreen, font controls
- β Reference Panel / Split-View β 6-tab panel (Characters, World, Notes, Binder, Comments, Revisions)
- β Per-Scene Revision History β IDB-backed snapshots, word-level diff, two-step restore
- β Threaded Comments β resolve/unresolve, nested replies, unresolved badge
- β Progress Tracker Dashboard β circular progress ring, live session timer, 30-day velocity chart, 12-week heatmap, streak system
- β Mobile Polish β foldable layout hook (Device Posture API), URL hash deep-linking, named haptic pattern library
- β 2 024 tests / 178 files; coverage 65.91% lines / 50.59% branches; lint β typecheck β i18n 1590 keys β
Status: π‘ Vision (partial delivery in v1.19.0 Phase 2)
Full E2E encryption for P2P collaboration (RTCDataChannel in-flight encryption)β Done in B-3 (packages/collab-transport)- Community model list (curated Ollama models for creative writing)
- RTL language support β ar/he stubs in B-5; full translation content + Persian still v2.0
- Fine-tuning/LoRA support for personalized writing styles
- Cloud sync option (optional, E2E-encrypted)
- Plugin system for custom AI tools (build on PluginRegistry)
- AI creativity presets per project (not global)
- Visual regression tests (Playwright screenshots + Storybook Chromatic)
- Privacy: All data stays local
- No costs: No API fees after hardware investment
- Flexibility: Any GGUF model usable
- Offline: Works without internet connection
- Complexity: Yjs document encryption requires a key-exchange protocol
- Pragmatism: PSK-based room isolation already provides good protection
- Scope: Focus on writing UX rather than crypto infrastructure