Skip to content

Releases: mrigankad/Novel-OS

v0.3.0 — Novel OS became a studio

Choose a tag to compare

@mrigankad mrigankad released this 09 Aug 06:09

Novel OS became a studio

v0.2.0 was a multi-agent CLI with a dashboard. This release adds the writing
surface, the world model behind it, and a way to get a finished book out the
other end.

Revise mode: continuity findings with a This is intentional dismissal


✍️ A real manuscript editor

Final is now a ProseMirror document — inline images, and comments anchored to
positions that survive edits. Agents still read a markdown projection, so not
one agent prompt changed.

Track changes ships with it: suggest mode turns typing into proposals and
deleting into struck text, with per-change or bulk accept/reject. A pending
suggestion is never exported or handed to an agent as accepted prose — the
projection is the reject-all view, enforced in storage rather than in the UI.

🧭 Three modes, not four stages

Writers move between planning, writing and revising constantly, and rarely in
order. ⌘1 ⌘2 ⌘3 re-lay out the studio around whichever you're in. The
pipeline's four stages remain, as provenance rather than a workflow.

Write mode gets out of the way: both rails collapse, continuity runs
silently, nothing volunteers itself, and there is no token meter anywhere near
the page. Select a passage and one bar offers the only four things worth doing.

🛡️ The continuity engine grew teeth

Twelve deterministic checks now, including relationship integrity,
since-anachronisms, contradictory bonds, and dead characters reappearing.

Two additions matter more than the count:

  • "This is intentional." A checker cannot tell an unreliable narrator from a
    mistake, so every finding can be dismissed with a reason that persists — keyed
    to the fact, not the wording. The Guardian reads those exemptions too, so the
    AI never re-litigates a call you've already made.
  • The stall detector. Sagging middles decompose into things the state already
    records; three consecutive chapters that change nothing get reported as a
    reactive protagonist, and the shape-of-the-book strip shows it at a glance.
    No model is asked whether your book drags.

✨ Import a manuscript, keep your afternoon

Codex auto-extract proposes your cast, places and world entries from the prose
itself
— deterministic, instant, and never written without confirmation. The
worst hour in this category is re-typing what's already in your draft.

📤 Compile: DOCX · EPUB · HTML · Markdown

Named styles drive the output — change what "Block Quote" means once and the
whole book follows.

Both binary formats are written directly, with no new dependencies. DOCX and
EPUB are ZIP-of-XML, so a writer who exports twice a year carries no document
library to do it.


🐛 Fixed — one of these was eating prose

  • Scene breaks were destroyed on save. The house-style pass collapsed a ---
    thematic break into " - " and ate the newlines around it, welding two scenes
    into one paragraph.
  • Saving re-parsed the document's own markdown, which would have discarded
    every pending track change on the first save.
  • Continuity checks could report on the wrong chapter — arity was chosen by
    catching TypeError, so a TypeError raised inside a check silently re-ran
    it against the default chapter.
  • CORS allowed exactly one hardcoded origin; Write mode didn't collapse its rails
    on a fresh load; 39 lint errors and a broken production build.

⚡ Faster

Opening a chapter no longer downloads the editor before anything paints —
593 kB → 166 kB for the chapter route.


374 Python tests · 70 TypeScript tests · production build and lint clean.

Full detail in CHANGELOG.md.
Design reasoning in the author's-workflow spec.

Full changelog: v0.2.0...v0.3.0

v0.2.0 — Run on your Claude subscription, zero-config setup

Choose a tag to compare

@mrigankad mrigankad released this 10 Jun 13:57

@

Highlights

Novel OS now adapts to whatever you already have — no API key required.

🆕 Key-free Claude Code backend (claude_cli)

Run the entire pipeline on your Claude subscription via the Claude Code CLI — no API key, no per-token billing. Auto-selected when no paid key is configured; just claude login and go. Explicit config and paid API keys always take precedence, so power users are never surprised.

🧙 Setup wizard (python core/orchestrator.py setup)

Zero-config onboarding that detects what you have — the CLI, any provider API key, or a local server (Ollama / LM Studio) — runs a live connection test, and writes your .env for you without clobbering existing settings. Run a writing command with nothing configured and it offers the wizard automatically.

✅ Tested

  • 17 unit tests covering backend behavior, provider precedence, detection, and .env persistence.
  • Verified end-to-end: a full chapter drafted through claude_cli with no API key.

Notes

  • Supported providers now: Claude Code CLI, Anthropic, OpenAI, Azure, Gemini, plus any OpenAI-compatible endpoint (Kimi, Groq, Together, OpenRouter, DeepSeek, Mistral, Fireworks, NVIDIA, Ollama, LM Studio).

Full changelog: v0.1.0...v0.2.0
@

v0.1.0: Initial Release

Choose a tag to compare

@mrigankad mrigankad released this 23 May 05:48

Novel OS v0.1.0: Initial Release

Novel OS is a stateful, provider-agnostic, and auditable multi-agent fiction writing framework. It treats a novel like a build pipeline where discrete agents perform specialized passes, mutating a central state file with deterministic checks gating progression.

🌟 Key Features

🎭 The Five Specialized Agents (agents/)

  • 🏗️ Architect: Handles story planning, 3-act structure mapping, narrative beats, and chapter outlines.
  • ✍️ Scribe: Writes chapter drafts in deep POV, emitting structured updates for state capture.
  • 🔍 Editor: Refines prose with support for line editing, developmental structuring, pacing calibration, dialogue polishing, and tension calibration.
  • 🛡️ Continuity Guardian: Fact-checks and enforces consistency across character files, timelines, world rules, and active plot threads.
  • 🎨 Style Curator: Ensures voice consistency, genre adherence, prose rhythm, and vocabulary targets.

⚙️ Robust Core Engine (core/)

  • LLM Provider Layer (llm_client.py): Native support for Anthropic, OpenAI, Azure, and Gemini. Integrates seamlessly with OpenAI-compatible endpoints like NVIDIA NIM, Kimi, Groq, Together, OpenRouter, DeepSeek, Mistral, and Fireworks.
  • Persistent State Manager (state_manager.py): Centralizes the story bible, characters, plot threads, chapters, timeline, and style profile in a single JSON schema.
  • Parser & State Applier (state_parser.py): Extracts machine-parseable blocks from agent outputs ([SCRIBE_STATE_UPDATE], [CONTINUITY_REPORT], etc.) to update the persistent state.
  • Deterministic Continuity Engine (continuity_engine.py): Offers cost-free, instant validation checks (e.g., overdue/dormant plot threads, missing manuscripts, character absence).
  • CLI Orchestrator (orchestrator.py): Directs the entire pipeline from project init, character tracking, and outline planning to iterative agent execution (drafting, editing, validation, approval, and manuscript exporting).

🚀 Quick Start

  1. Install dependencies:
    pip install -r requirements.txt
  2. Set up environment variables by copying .env.example to .env.
  3. Run the CLI pipeline:
    python core/orchestrator.py init --title "My Novel" --genre "Sci-Fi"
    python core/orchestrator.py character add --name "Lena" --role protagonist
    python core/orchestrator.py plan outline --chapters 32
    python core/orchestrator.py plan chapter --number 1 --pov "Lena"
    python core/orchestrator.py write --chapter 1