AI-Powered Novel Writing Assistant
English | 简体中文
QuillForge is a desktop application for web novel authors, combining a rich text editor with AI-assisted writing capabilities. It supports multiple LLM providers (OpenAI, Anthropic, Ollama, and OpenAI-compatible APIs), stores all data locally with encrypted credentials, and features an inline ghost-text completion system inspired by modern code editors.
Latest: v1.2 — AI Rewrite · Outline Dialog · Templates · Snapshots · Writing Goals · Chapter Status — AI rewrite with auto-apply, restructured prompt template architecture, snapshot title/delete support, outline management with chapter linking, redesigned create-book wizard, track daily word count progress with streak streaks, color-coded chapter status (draft/revising/completed/frozen) with filtering, and automatic writing time tracking.
|
Hierarchical organization: books → chapters, with per-book world settings, story outlines, and character profiles that serve as AI context. |
Select text and receive grammar, pacing, character consistency, and plot logic feedback with one click. |
|
Describe your current plot point and get 3–5 creative directions, informed by your book's established world and characters. |
AI-generated prose appears as ghost text directly in the editor. Tab to accept, Esc to dismiss — just like IDE code completion. |
|
Generate full chapters from scratch with length control. Supports regeneration and re-apply without creating duplicate chapters. |
Rewrite selected text or full chapter with custom instructions. Auto-saves a snapshot before applying, supports regeneration with different styles. |
|
Per-chapter outline with drag-to-reorder, chapter linking, and AI-assisted outline generation. Outline context is fed to AI review & consistency checks. |
Describe your novel idea and AI generates title, description, world setting, and character profiles. Preview and edit before creating. |
|
Built-in & custom prompt templates for each AI action. Templates append as style modifiers without overriding output format control. Import/export support. |
Manual & auto snapshots per chapter. Snapshots store title + content. Preview, restore, or delete individual snapshots. |
|
Chinese (简体中文) and English. Switch on the fly from the toolbar. |
One-click toggle. Follows system preference by default. |
|
Sentence length distribution, dialogue ratio, readability score, word frequency, and per-book statistics. |
TipTap with bubble menu formatting, focus mode, reading time estimate, spell check, and version snapshots. |
|
Set daily word count targets, track progress with a live progress bar, monitor writing streaks (🔥 consecutive days), and automatic session time tracking. |
Color-coded status tags ( |
- API keys are encrypted with AES-256-GCM and stored in the Tauri secure store
- Keys never leave the Rust backend — the frontend only knows whether a key is configured
- All LLM HTTP requests are proxied through the Rust layer
| Layer | Stack |
|---|---|
| Desktop Shell | Tauri 2.x |
| Frontend | Vue 3 + TypeScript + Vite |
| State | Pinia |
| Editor | TipTap (ProseMirror) |
| i18n | vue-i18n |
| Backend | Rust — reqwest, tokio, aes-gcm |
- Node.js ≥ 18
- Rust ≥ 1.70
- Platform-specific Tauri dependencies
# Install dependencies
npm install
# Start development
npm run tauri dev
# Production build
npm run tauri build├── src/ # Vue 3 frontend
│ ├── components/
│ │ ├── ai/ # AiPanel, ReviewResult, IdeaResult, ContinueResult, RewriteResult, ConsistencyResult, GenChapterResult, TemplateSelector
│ │ ├── analytics/ # AnalyticsPanel (writing statistics dashboard)
│ │ ├── common/ # AppLayout, TitleBar, LoadingDots, ModalDialog, SearchDialog, CreateBookDialog, OutlineDialog
│ │ ├── editor/ # NovelEditor, BubbleMenu, BookSidebar, ChapterHistory, EditorToolbar, BookSettingsPanel, CharacterPanel
│ │ └── settings/ # SettingsDialog, ProviderCard, ApiKeyInput
│ ├── stores/ # Pinia (book, editor, settings, template, theme, i18n)
│ ├── commands/ # Tauri invoke wrappers (by domain)
│ │ ├── ai.ts # AI messages & connection check
│ │ ├── history.ts # Version snapshots (in-memory, persisted with book data)
│ │ ├── keys.ts # API key management
│ │ ├── search.ts # Full-text search index & query
│ │ ├── storage.ts # Persistence, providers, export
│ │ └── index.ts # Re-exports all commands
│ ├── extensions/ # TipTap extensions (GhostText, SpellCheck)
│ ├── i18n/locales/ # zh-CN, en-US
│ └── types/ # TypeScript definitions
│
├── src-tauri/ # Rust backend
│ └── src/
│ ├── commands/ # Tauri commands (by domain)
│ │ ├── mod.rs # Module declarations & re-exports
│ │ ├── ai.rs # AI message & connection check
│ │ ├── keys.rs # API key CRUD
│ │ ├── books.rs # Book persistence & export
│ │ ├── history.rs # Version snapshots (filesystem, fallback)
│ │ ├── search.rs # Full-text search (Tantivy)
│ │ ├── spell.rs # Spell check (Hunspell)
│ │ └── helpers.rs # Internal helpers
│ ├── crypto.rs # AES-256-GCM encrypt/decrypt
│ └── llm/ # Provider implementations (OpenAI, Anthropic, Ollama, compat)
│
├── index.html
├── vite.config.ts
├── tsconfig.json
└── package.json
MIT © 2026 oxroot & Claude
Built with ❤️ by oxroot & Claude