Updated automatically with every release

What's new in BookForge.

Every shipped release, in chronological order. The same notes appear in the desktop app's "What's new" modal after an update.

Polish — disabled UX, health banner, live cost & velocity

v1.17.12 · 2026-04-24

Improvement
  • If your account is paused server-side, you now see a friendly "account disabled" panel with a contact link instead of being silently bounced to the sign-in form.
  • A new top banner lights up amber when BookForge servers are slow and red when you appear to be offline, so you know up front whether a failed action is your network or ours.
  • The Agent Monitor footer now shows a cumulative cost tally across every running step and a live tokens/sec readout in the per-agent header, so you can spot stalled or runaway turns at a glance.

Email comms — welcome, feedback ack, admin reply

v1.17.11 · 2026-04-25

Feature
  • New users get a welcome email on signup with getting-started guidance.
  • When you submit feedback through the in-app button, you now get an automatic acknowledgement so you know it landed somewhere a human reads.
  • Admin (operator-only): the feedback panel grew a reply box — typing a message and clicking "Send reply" emails the user directly. "Send + resolve" does both in one click.

Friendlier failures — Claude CLI, auth, skill warnings

v1.17.10 · 2026-04-25

Improvement
  • When Claude Code CLI is missing or fails to spawn, BookForge now shows a clear top banner with a help link to install Claude Code, instead of burying the error in a tiny step-history box.
  • When Claude returns an auth or quota error, you get a specific banner (sign in to Claude Code / check billing) instead of a generic "step failed".
  • "Skill missing" warnings are now sticky — they stay visible until you dismiss them, so silently degraded output never scrolls past unnoticed. "Skill fallback" still auto-dismisses after 12s.

Admin tools — top-level access + per-user drill-down

v1.17.9 · 2026-04-25

Feature
  • Admins now get a top-level "Admin" sidebar entry, no more hunting through Settings → Usage to triage.
  • User table has Disable / Enable / Delete / View buttons — no more SSH-and-psql for account changes or GDPR deletion requests.
  • Click "View" on any user to see their full activity timeline (runs, errors, feedback) merged chronologically.

Better bug-triage signals

v1.17.8 · 2026-04-25

Improvement
  • Crash reports and feedback now include the pipeline run + step you were on, so the support team can see what you were doing when something broke.
  • When a skill fails to load from the cloud, the warning is now uploaded — silent quality degradation is no longer invisible.
  • When a pipeline step lands in failed state, its error message is mirrored to the support dashboard automatically (in addition to the in-app step history).

Account profile + periodic access check

v1.17.7 · 2026-04-25

Feature
  • New profile card in Settings → Account & Privacy: editable display name, plan badge, email verification state, join date.
  • Sidebar user row now shows your actual display name and plan/role instead of a hardcoded "Administrator" label, and clicking it opens Settings.
  • Every 15 minutes the app silently re-verifies your session with the server. If your account is deactivated server-side, you're signed out immediately instead of staying in the app until the next restart.
  • Server: users can now be soft-disabled without deleting them. Attempting to sign in to a disabled account returns the same error as a wrong password (no account-status leakage).

Settings cleanup — remove stale "install skills" flow

v1.17.6 · 2026-04-24

Improvement
  • Settings → System renamed from "System & Skills". The "Install Skills to Claude CLI" button is replaced by a "Refresh skills" button that syncs your local cache from the Synaptrix cloud instead of copying bundled files into ~/.claude/skills.
  • OnboardingWizard no longer asks for a "skills folder" — skills are fetched from the server and cached automatically, no user path configuration needed.
  • Skill-sync result display simplified: no more references to "bundled skills" or "drifted from bundle" (concepts that disappeared in 1.17.4).

Version display fixes

v1.17.5 · 2026-04-24

Fix
  • Settings → About now shows the actual running app version instead of a stale placeholder.
  • What’s New modal now reports the correct current version — the 1.17.4 build had a build-order hiccup where the modal still showed 1.17.3.

Multi-user polish + security hardening

v1.17.4 · 2026-04-24

Improvement
  • Default organization name is no longer pre-filled — new users enter their own imprint name instead of inheriting a placeholder.
  • Settings now has an Account & Privacy section: signed-in email, current tier, and one-click support requests for password change, data export, or account deletion (per the privacy policy).
  • Crash reporter scrubs more Windows path variants (including UNC extended paths) before uploading stack traces.
  • Installer metadata (publisher, app ID, copyright) is unified under Synaptrix AI across package.json, electron-builder, LICENSE, and the server.
  • Settings → About now shows the actual running version instead of a stale placeholder.
  • Server security: JWT sessions now expire in 7 days (down from 30), password minimum raised to 12 characters, brute-force rate limits on auth and feedback endpoints.

Settings save coalescing + internal cleanup

v1.17.3 · 2026-04-19

Improvement
  • Settings page now coalesces rapid field changes: tabbing through three fields triggers one `settings:update` round-trip with all three values, not three separate saves that could race. A live "Saving…" pill (amber, pulsing) appears whenever a save is in flight, followed by a "Saved" pill for 4 seconds once it completes.
  • Beta-invite chapter expansion is now a single typed Drizzle JOIN (volumes × chapters) instead of a raw-SQL-then-Drizzle two-pass. Half the DB round trips and full TypeScript coverage.
  • schema.ts `cost_usd_micros` column picked up an explicit units-warning comment — the TS field name (`costUsd`) hides the fact that the stored value is integer micros (1 USD = 1,000,000), so every call site must assume micros until a coordinated rename is done.

Polish — settings auto-expand when customised, editor-handoff auto-clear

v1.17.2 · 2026-04-19

Improvement
  • Settings → Per-step parallelism section now auto-expands when you have any step overrides in place, so you see your customisations at a glance instead of hunting for a Configure button.
  • Editor handoff import success strip now auto-dismisses after 20 seconds (matching Beta Readers). Per-row `importCount` and `lastImportAnnotationCount` badges keep the information available for later lookup.
  • schema.ts now opens with an architectural note explaining its intentional partial-mirror relationship with connection.ts — so future contributors know to update both files in lockstep when adding schema changes.

Internal refactor — shared Claude CLI helpers

v1.17.1 · 2026-04-19

Improvement
  • Nine services (audiobook, beat-proposer, copilot, entity-extract, recap, research-extract, research-ingest, serial-publishing, style-guide) no longer duplicate `resolveClaudeBinary` / `resolveSkillPath` / `hasSkillFolders` — they now import from a single `src/main/utils/claude-cli.ts`. A future Claude Code install-path change is now a one-file fix.
  • Fixed a latent bug in `research-ingest` along the way: the local `resolveClaudeBinary` fallback returned the bare name "claude" on Windows instead of "claude.cmd". Now uses the unified platform-aware fallback.
  • Patcher skill documentation heading renamed from "Error Handling" to "Self-check before emitting" so the skill's name-the-case guidance reads consistently with other sidecar-aware skills.

Skip onboarding, undo settings reset, focus-aware modals

v1.17.0 · 2026-04-19

Feature
  • Onboarding wizard now has a "Skip for now" button on every step. Accepts the auto-detected defaults (projects folder, Claude model, concurrency) and marks onboarding complete so first-launch users who don't yet know their preferences aren't hard-blocked from the dashboard. You can tune anything in Settings later.
  • Settings → Reset to Defaults now keeps the old configuration recoverable: after you confirm, a 15-second "Undo" toast appears. Click Undo to put every field back verbatim — no more "oops I hit reset" data loss.
  • Toast stack gained a first-class action button + custom TTL, so any call site can offer "Undo" / "Open" / "Retry" on a toast.
  • Modals now focus the first interactive element inside the dialog (input / button / textarea / select / explicit `autofocus`), not the dialog div itself. Keyboard users can start typing immediately instead of having to Tab once first.
  • Diff viewer now shows a friendly "Binary file differs" notice for non-text files (docx, PDF, images), instead of rendering raw garbled bytes. Detection is based on git's own "Binary files … differ" marker.
  • Tool cards in the Tools tab now clamp long descriptions to two lines with break-words — no more layout jumps at narrow widths.

Polish sweep — dates, avatars, animations, edge-case guards

v1.16.9 · 2026-04-19

Improvement
  • Serial publishing cadence preview now formats dates as "Mon, Apr 19, 2026" (locale-aware, UTC-anchored) instead of raw YYYY-MM-DD strings.
  • Audiobook Prep pronunciation guide now shows a "1–50 of N" hint above the preview table when the guide has more than 50 entries.
  • Team page avatars now fall back through name → email → "?" so a partially-hydrated user row or empty-name entry never crashes the initial.
  • Onboarding wizard progress bar now animates smoothly between steps (500ms ease-out) instead of snapping.
  • Sidebar "What's New" badge: dismissing the modal now always drops the dot, even if the localStorage write fails (private mode / quota) — previously the dot could stay lit until next launch.
  • Beta Readers import success strip auto-dismisses after 20s so it doesn't linger across sessions. The invite rows still carry per-reader importCount badges for lookup.
  • Citation picker button tooltip now documents the full keyboard flow (↑/↓ wraps, Enter inserts, Esc cancels).
  • Onboarding wizard progress bar + project tablist now include proper ARIA semantics (progressbar, tablist, aria-valuenow, aria-selected).
  • CLAUDE.md architecture note updated to reflect the current 17 IPC module layout (was stale "5 IPC modules").

Polish sweep — a11y, header overflow, clearer onboarding

v1.16.8 · 2026-04-19

Improvement
  • Long project titles now truncate cleanly in the header with an ellipsis + full-title tooltip, instead of stretching the layout.
  • Project tabs are now a proper `role="tablist"` — screen readers announce which tab is selected, badges have `aria-label="N pending"`, and tab navigation respects `tabIndex`.
  • Timeline bars got `role="img"` + aria-label so screen readers announce each run as "A1: Writer — 42s" instead of reading the container's cryptic colour class.
  • Audiobook Prep per-chapter re-export / open-file icon buttons got descriptive aria-labels and tooltips.
  • Search modal: the arrow-key highlighted row now has a brand accent bar on the left + a stronger background tint, so you can see which result Enter will open. Arrow keys also wrap at the list ends.
  • Style Guide textarea got an aria-label and the voice-intent input now has a proper `htmlFor`/`id` pairing.
  • Typography panel loading state now uses a real `<Spinner />` + the shared text treatment instead of a plain sentence.
  • Onboarding wizard: the "Global parallelism ceiling" field is now "How many Claude runs at once (max)" with a one-sentence plain-language hint — no more CS jargon on first launch.
  • Settings saved-toast now displays for 4s (was 2s) — long enough to notice on wider monitors.
  • Series attach button now guards against double-clicks before `busy` state has flushed.
  • WhatsNewModal has a defensive empty state if the changelog is ever emptied, so the modal never renders blank.

Polish sweep — search highlights, sort, persistence, live badges

v1.16.7 · 2026-04-19

Improvement
  • Guide page search now highlights every match in the rendered body with an amber background — no more scrolling the section wondering where the term actually appears.
  • Pipeline matrix phase collapse state is persisted per project in localStorage. Your collapsed layout survives page reloads and stays scoped to the active project.
  • Pipeline matrix "to review" badge now updates live the moment a step finishes in needs_review state — you see the new count without waiting to switch tabs.
  • Sidebar project status dots got a legend tooltip: hover the ⓘ chip next to "Active Projects" to see what each colour means (Discovery / Production / Visual / Post-production / Complete / Archived).
  • Create Project modal now previews the exact folder path where the new project will land ("Will land at: .../Projects/{derived_name}") so you can verify the root before committing.
  • Citation picker arrow-key navigation now wraps — ↓ at the last result jumps to the first, ↑ at the first jumps to the last.
  • Voice Monitor chapter-metrics table: click any column header to sort by that metric (asc/desc toggle, indicator arrows).
  • Guide keyboard-shortcuts reference expanded — Ctrl+. (co-pilot), Ctrl+Shift+[ (citation picker), and the Agent Monitor `/` search shortcut are now documented.

Bug-fix sweep — service corner cases + outline modal fix

v1.16.6 · 2026-04-19

Fix
  • Beta invite default expiry now snaps to midnight UTC N days out, consistent with every other date field in the DB. Previously stamped with a precise millisecond which rendered inconsistently against day-only dates elsewhere.
  • Series creation now refuses to silently orphan a row if the organization hasn't been set up yet — a clear error asks the user to finish the welcome screen first.
  • Recap generator now reads project + series together in a single query so a concurrent series detach/delete between the earlier project read and the recap run can't leave the generator pointing at stale data.
  • Pacing dashboard: `computeTempo` now coerces NaN inputs to 0 so a zero-length chapter or punctuation-only paragraph can't crash the sparkline with a non-numeric score.
  • Editor handoff: the token-recovery regex is now derived from the same `TOKEN_BYTES` constant that generates it, so the generator and import paths can't drift. Paragraphs clipped at 2000 chars in the change annotation now include a "⚠ clipped — open the source docx" note so reviewers know to check the original.
  • Audiobook SSML export: the generation timestamp comment was removed — re-exporting an unchanged chapter now produces an identical file (no more git churn on idempotent exports). Phoneme injection count + source kind are now recovered from the file header in `listExportedSSML`, so the Audiobook Prep panel shows accurate metadata for past exports.
  • Co-pilot: if a chapter brief file exists on disk but its content is empty/unreadable, the main-process log now warns so a silently corrupted brief doesn't produce surprising rewrites without any trail.
  • Outline → Beat form modal: `projectId` is now actually used to hydrate the entity bible for POV/location pickers when the user opens the modal without visiting Bible first. The dead placeholder comment is gone.

Bug-fix sweep — dropdowns, approvals, autoscroll, git retry

v1.16.5 · 2026-04-19

Fix
  • Review Center: the approve-error strip now has a ✕ dismiss button and auto-clears after 12s, so a stale failure message no longer lingers on a card that's since been fixed.
  • Agent Monitor transcript: autoscroll during rapid event bursts is now coalesced into a single requestAnimationFrame per frame — no more jitter when a Claude run produces dozens of deltas per tick.
  • Print Spec Calculator: page count is now clamped to the KDP valid range (24–828), shows a live amber border when out of range, and snaps to the window on blur.
  • Image Rights license dropdown expanded from 5 to 10 options: added CC0, CC-BY-ND, CC-BY-NC, In-house, and All rights reserved alongside the existing set.
  • Translation Memory language dropdown expanded from 3 to 31 options: every major European, East Asian, South Asian, Middle Eastern, and Nordic language covered, with PT/ZH locale splits.
  • Chapter Brief: save now emits a green success toast (in addition to the inline "Saved" flash), so users get confident feedback even when not looking at the header.
  • Git Panel: failed init now surfaces the real error inline with a ✕ dismiss and the primary button re-labels to "Retry Initialize", so users aren't stuck staring at an inscrutable uninitialized state.

Bug-fix sweep — races, search, setup errors, path validation

v1.16.4 · 2026-04-19

Fix
  • Comparison mode: file-swap no longer races with the previous in-flight load. A request-id guard discards any stale response, so swapping or repicking quickly can't splice mismatched contents across the two panes.
  • Tools tab → Quick AI actions: every one-shot Claude run now reports success (green toast) or failure (red toast with the actual error). Previously both outcomes looked identical to the user.
  • Import-result banners (Dashboard + Project Library): now three-tone — red for pure failure, amber for partial / skip-only, emerald for pure success. No more guessing why the banner is grey.
  • Voice Samples panel fetches the sample list exactly once on mount (was doing two round-trips).
  • Style Guide panel: the main editor textarea is now locked while AI generation is running, so edits typed mid-generation can't get silently overwritten when the model returns.
  • Image Rights + Translation Memory: both tables now have a search input in the header (filters across filename / source / attribution / license / status for images; source term / target term / context for translations), with a "N of M" counter and a "no matches" empty state.
  • Setup screen: a failed `setupOrganization` call now surfaces a red error strip with the real reason instead of silently re-enabling the button.
  • Settings → Default Projects Folder: the path you type or Browse to is now checked against the filesystem (exists / is a folder / is read-writable). Invalid paths show an inline amber warning before the next project-creation fails.

Bug-fix sweep — cross-project isolation + launch curve + create-project guard

v1.16.3 · 2026-04-19

Fix
  • Switching projects now resets every per-project store (Entity Bible candidates, Beats, Pacing, Beta invites, Editor handoffs, Audiobook, Serial, Launch plans, Research). Stale candidates and drafts from a previous project can no longer bleed into the new one.
  • Serial publishing: the "generating newsletter" flag is now keyed by `projectId:chapterId` composite, so two projects that happen to share a chapter UUID can't collide.
  • Launch planner: projections for books launching outside the 24-month window now return a clean zero-curve early, and the main loop now starts at the launch month instead of skipping months with a continue.
  • Create Project: submit now requires either a title or a template selection, with an inline red error strip explaining why. Prevents the mystery untitled-no-template rows.

Bug-fix sweep — beta bundle hardening, silent serial errors

v1.16.2 · 2026-04-19

Fix
  • Beta reader HTML bundles are now injection-proof: all values embedded into the bundle's inline `<script>` tag (reader name, chapter titles, invite token) are escaped so a `</script>` substring or exotic whitespace in a chapter title can no longer break the bundle's annotation capture.
  • Markdown headings in `.md`/`.txt` chapters packaged into beta bundles are now detected and stripped with the same regex; `####NoSpace` is no longer half-recognised.
  • Serial publishing panel: Apply-cadence, Save-cadence, and Export-CSV no longer fail silently — rejections now surface in the bottom-right toast stack.
  • Editor handoff store: `pickAndImport` / `importFromPath` now throw a descriptive error if called without a projectId, preventing the `lastImportByProject` map from getting a corrupt key.

Bug-fix sweep — destructive confirms, visible errors, C10 graph fix

v1.16.1 · 2026-04-19

Fix
  • Destructive actions now ask before destroying: deleting a Translation Memory entry, an Image-Rights row, or an Annotation prompts with a descriptive confirm; advancing a Discovery phase asks before writing the phase artefact.
  • Silent IPC failures are now visible. A new global toast stack (bottom-right) surfaces errors from Pipeline cell clicks, Agent stop, Deliverables open-file, Timeline load, and Diff viewer — no more clicks that quietly do nothing.
  • Review Center: the Approve button now shows "Approving…" and is disabled while an approval is in-flight, preventing double-clicks from firing two approvals.
  • Project Settings: "Sync from book.project.md" shows "Syncing…" and is disabled while running.
  • Pipeline graph: C10 (Final Edition) now correctly depends on C9.6 (Apply Galley Remarks) instead of C9.5 (Galley Proof) — so typesetting picks up the applied patches, not just the report.

Tools tab — new left-rail layout

v1.16.0 · 2026-04-20

Improvement
  • Tools tab is now a two-pane layout: a categorised left rail lists all 15 tools grouped into 6 sections (Writing & Voice / Quality audits / Collaboration / Production prep / Distribution / Quick AI actions); the right pane shows one tool at a time.
  • No more 14-section scroll. Each tool gets its own page with a proper header (icon + title + one-line description) and breathing room to work.
  • Left-rail search filters tools by name, description, or category — find Pacing or Launch planner in one keystroke.
  • The last-selected tool is remembered per session (localStorage `bookforge.tools.activeTool`), so coming back to Tools returns you to the same surface.
  • Per-tool error boundaries: if one tool panel crashes it shows an inline red card with the error + stack + Retry button; the other 14 keep working.
  • Quick AI actions (the 6 one-shot Claude runs — marketing kit, cross-refs, reader persona, export package, organize files, sync blueprint) now live under their own "Quick AI actions" tool item.

Serial / episodic mode — publish schedule + newsletter drafts

v1.15.0 · 2026-04-20

Feature
  • Tools tab → Serial publishing: pick a cadence (weekly / biweekly / monthly), set a start date, click Apply — BookForge stamps a publish date on every chapter in reading order.
  • Per-chapter row with inline date picker, platform badge, newsletter button, and cliffhanger chip sourced live from the Pacing Dashboard (green ≥60, amber 30–59, red <30) so you see weak chapter endings before they ship.
  • One-click Newsletter draft per chapter: an AI skill reads the chapter's opening paragraphs + your prior newsletters for voice continuity, then writes a subject line, preview text, spoiler-free hook, CTA, and PS prompt — under 250 words, tuned for Substack / Royal Road / Wattpad / custom.
  • CSV export of the full schedule for planning outside the app.
  • With this slice, the original 17-item author-craft roadmap is complete: research, bible, outline, co-pilot, dialogue, sensitivity, legal, accessibility, beta reader, co-author, editor handoff, series bible, recap, launch, audiobook prep, serial mode.

Audiobook prep — pronunciation guide + SSML export

v1.14.0 · 2026-04-20

Feature
  • Tools tab → Audiobook prep: two deliverables for sending a manuscript to a narrator or TTS service.
  • Pronunciation guide generator reads your entity bible + a sample of chapter prose and produces a markdown table of every proper noun, invented word, and technical term with respelling + IPA + usage notes.
  • Per-chapter SSML export converts each chapter's latest working file to an .ssml document with paragraph breaks, emphasis for bold/italic, and — crucially — <phoneme> tags for every term in the pronunciation guide, so TTS services pronounce "Elara Voss" the way you wrote her.
  • Batch "Export all chapters" action for when the whole manuscript is ready to send.
  • Audiobook track lives under `<project>/audiobook/` alongside the manuscript — independent from the main PDF/EPUB pipeline.

Longitudinal launch planner

v1.13.0 · 2026-04-20

Feature
  • Tools tab → Launch planner: map out release dates, pricing, and projected revenue curves across every book in a series.
  • Per-book controls: launch date, list price, royalty rate, first-month units, monthly decay — editable inline with instant chart updates.
  • Combined 24-month SVG revenue chart with a per-book coloured line plus a bold white aggregate line on top.
  • Aggregate strip shows books scheduled, year-1 combined revenue, and peak month.
  • Clamps every input to sane ranges and flags unscheduled books + mixed-currency series in amber warnings. Treat as a sanity check, not a forecast.

Series recap generator

v1.12.0 · 2026-04-20

Feature
  • Project Settings → Series recap: one-click "previously on…" recap drafted from every prior volume in the series.
  • Reads each sibling project's blueprint and chapter summaries (ordered by creation date) plus the series-shared cast from the bible.
  • Four tone options — narrative / first-person / in-universe chronicle / neutral summary — and a configurable word target from 200–1200.
  • Writes to `planning/recap.md` alongside the other planning artefacts; open in your editor for final polish, paste into front matter.
  • Hard constraint: the recap never spoils the new book. It covers prior volumes only and flags gaps when source material is thin.

Series bible — share entities across volumes

v1.11.0 · 2026-04-20

Feature
  • New Series concept: attach a project to a Series in Project Settings, and entities you "promote to series" appear in every other project in the same series automatically.
  • Recurring characters, locations, magic systems, and concepts in a multi-volume series no longer need to be duplicated chapter-by-chapter — write them once, share everywhere.
  • EntityBible shows a ✨ Series-shared badge on shared entities; sibling-project entities surface read-only with a "from sibling project" hint so it's always clear who owns what.
  • A1 / A3 prose prompts pick up series-shared entities automatically — no skill changes needed; the bible-prompt builder merges them transparently.
  • Detaching a project from a series demotes its shared entities back to project-only so you never end up with orphaned series references.

Editor / proofreader handoff

v1.10.0 · 2026-04-20

Feature
  • Tools tab → Editor handoff: export a chapter as a stamped .docx, email it to a human copyeditor or proofreader, and import their edited file back to surface every change as an annotation.
  • Each changed paragraph lands in the AnnotationSidebar with a ✏️ EDITOR badge, before/after text in the comment, and the editor's name as the author.
  • The filename carries a short token so the importer auto-matches the returned file to the right handoff — no manual selection needed.
  • Works regardless of whether the editor used Word's tracked-changes feature — the importer diffs the returned text against a snapshot taken at export time.
  • Editor notes flow into the next AI editing pass's editorial brief alongside native and beta reader notes.

Co-author workflow

v1.9.0 · 2026-04-19

Feature
  • New Team tab (replacing the "Coming in Phase 4" placeholder) — add, edit, and remove authors, editors, designers, and other collaborators.
  • Every chapter now has an owner picker in the Volumes & Chapters tab. Assigning a chapter to a co-author routes AI voice samples through that author's register automatically.
  • Voice Samples panel gains a scope selector: Shared (house voice) or per-author. Files dropped into an author's scope apply to chapters owned by them.
  • A1 (writer) and A4 (humanizer) now prefer the chapter owner's voice samples first, then fall back to shared — so a single project with multiple co-authors can keep distinct voices chapter by chapter.
  • Folder layout: `voice_samples/*.md` for shared, `voice_samples/<userId>/*.md` for per-author. Existing projects continue to work unchanged (all samples stay shared).

Beta reader invites

v1.8.0 · 2026-04-19

Feature
  • Tools tab → Beta Readers: create time-boxed invites, export a self-contained HTML bundle, email it to a beta reader, and import their annotations back when they return the JSON — no server, no accounts.
  • The exported HTML opens in any browser with an inline annotation UI (text selection → comment modal → per-reader sidebar); the reader clicks "Download annotations" and emails the JSON back.
  • Imported annotations land in the existing annotations table tagged with `source: beta` and `beta_invite_id`, and flow into editorial briefs alongside your own notes.
  • AnnotationSidebar now shows a BETA · reader-name badge on every beta-sourced note, so you always know who said what.
  • Invites carry expiry, revoke, import-count, and scope (whole project or specific chapters); revoked / expired invites refuse new imports while keeping prior work intact.

Plain-language accessibility version

v1.7.0 · 2026-04-19

Feature
  • New optional step E4 runs after A5.5 copyedit and produces a parallel plain-language version of each chapter at roughly CEFR A2–B1 reading level.
  • Designed for dyslexic readers, cognitive-accessibility audiences, ESL readers, and statutory easy-read requirements (EU Accessibility Act, June 2025).
  • The main manuscript is never touched — plain-language output lives in its own folder (Volume_N/plain_language/) alongside the literary original.
  • Preserves every fact, named entity, date, frozen block, and citation token verbatim; simplification is limited to register, not content.

Legal / libel pre-screen

v1.6.0 · 2026-04-19

Feature
  • New optional pipeline pair E3 (audit) + E3.A (apply) runs between A5 and A5.5 — flags real-name references, unverified statements of fact about identifiable people, reputational-risk language, private facts, trademark issues, and unsourced quotations.
  • Designed to prep manuscripts for counsel review — every flag explains the specific legal concept (defamation, privacy, trademark) and calibrates public-figure vs. private-individual standards.
  • Every rationale ends with "This is a legal-risk heuristic, not legal advice — consult counsel"; every severity ≥ error routes to counsel before applying.
  • Supports both paragraph rephrase and exact name-anonymisation swaps via the existing patcher + patch-journal review flow.

Sensitivity / bias audit

v1.5.0 · 2026-04-19

Feature
  • New optional pipeline pair E2 (audit) + E2.A (apply) runs between A5 and A5.5 — flags stereotypes, ableist language, cultural bias, gendered defaults, and outdated terminology.
  • Advisory only: every flag names a specific group and a specific harm, and every remark carries `requiresHumanConfirmation: true` so nothing auto-applies.
  • Supports both paragraph-scoped rephrase and exact terminology swaps (e.g. "stewardess" → "flight attendant"), routed through the existing patcher.
  • Conservative severity tiers and a 10-remark-per-chapter cap — signal over noise.

Pacing dashboard

v1.4.0 · 2026-04-19

Feature
  • Tools tab → Pacing Dashboard: seven per-chapter stylometric sparklines across the whole volume.
  • Tracks avg sentence length, rhythm (sentence-length σ), dialogue density, emotion density, hook strength, cliffhanger strength, and tempo.
  • Outlier dots are colour-coded by direction-of-better (green/red for directional metrics, amber for neutral).
  • Pure text analysis — no LLM calls, no cost. Recompute on demand after any edit.

Dialogue sculpting pass

v1.3.0 · 2026-04-19

Feature
  • New optional pipeline pair E1 (audit) + E1.A (apply) runs between A5 and A5.5.
  • Extracts every dialogue line, attributes it to a speaker, and flags lines where the character drifts from their established bible voice attributes.
  • Rephrase-only remarks route through the existing patcher with the standard ±20% diff gate and token preservation.
  • Paired with the bible: accuracy scales with the quality of your primary-cast `voice` attributes.

AI beat proposer

v1.2.0 · 2026-04-19

Feature
  • Outline tab → ✨ Propose with AI: the proposer reads your blueprint, primary cast, and existing beats, then drops 4–8 candidate beats into a review strip for you to accept or dismiss one-by-one.
  • Never invents characters — POV names must match a primary-cast character in the bible (case-insensitive); misses save the beat unlinked.
  • Seven beat kinds covered (fiction scene/beat, non-fiction argument/evidence/counter/synthesis, plus notes).
  • Re-running is safe: the proposer sees already-accepted beats and fills gaps rather than re-proposing.

Inline AI co-pilot in the editor

v1.1.0 · 2026-04-18

Feature
  • Select a passage in any chapter, hit Ctrl+. (or click the ✨ Co-pilot chip in the toolbar) to get a single candidate rewrite.
  • Seven modes: Rewrite, Tighten, Expand, Raise tension, Soften, Plain language, and Custom (type your own instruction).
  • Preserves [[claim:id]] tokens and {{frozen}}…{{/frozen}} markers; flags warnings if the model drifts.
  • Works in both CodeMirror (plain-text) and TipTap (DOCX rich-text) editor modes. Accept replaces the range in place, undoable with Ctrl+Z.

Initial release

v1.0.0 · 2026-04-17

Feature
  • 40+ "book production" skills spawning through the Claude Code CLI, orchestrated by a dependency-aware pipeline runner with review gates and auto-continue.
  • Research library with claim citation, Entity bible with primary-cast voice attributes, Chapter outline with seven beat kinds.
  • Structured remarks sidecars + patch journals for galley proofing, reader-panel synthesis, and any future audit-and-apply flow.
  • Live Scribe agent monitor, typography studio, print spec calculator, translation memory, image rights manager.