Inkswell

by Dan King
5
4
3
2
1
Score: 52/100

Description

Plan, draft, track, revise, and publish longform fiction entirely inside your Obsidian vault using a single host view that organizes Home, Plan, Write, Revise, Publish plus Codex and Track tools.

Reviews

No reviews yet.

Stats

7
stars
1,965
downloads
2
forks
47
days
2
days
3
days
17
total PRs
0
open PRs
1
closed PRs
16
merged PRs
8
total issues
1
open issues
7
closed issues
170
commits

Latest Version

4 days ago

Changelog

Fixed

  • Your codex now follows you into new drafts. Creating a new draft no longer presents an empty codex: characters, concepts, locations, and every other entry scoped to the book are visible from all of its drafts (the codex describes the story, not one draft of it). This also works retroactively — entries that "disappeared" after making a draft reappear on update, with no changes to your files. Entries created while a later draft was active are likewise visible from the original, and the scene inspector's character/location pickers offer them from any draft.
  • New drafts no longer nest inside each other. Creating a draft while a copied draft was active used to bury it at Drafts/Draft 2/Drafts/Draft 3/…; every new draft now lands in the story's one flat Drafts/ folder, whichever draft you copied it from. Existing nested drafts keep working where they are.
  • Draft-aware consistency fixes across the app. The codex scope dropdown now lists each book once instead of listing every draft as a separate book; new codex files created alongside a book land in the story's folder, never inside a draft copy's folder; "Appears in" lists each scene once instead of once per draft (this also fixes existing duplicates for series-scoped entries); the "Set word target" command now saves to the same place the progress bars read from (previously, with a revision draft active, it silently saved where nothing read it); adding a book to a series from a revision draft now tags the book itself, so the series no longer "loses" the book when you switch drafts; series-wide search no longer returns every result twice per draft; and Track → Targets measures progress against the draft you're actually writing instead of the frozen original.
  • The plot grid no longer jumps back to the top when you tag a scene. Tagging or untagging a scene, dragging a chip, renaming/recoloring/deleting a plotline, or dropping a card on the Board now refreshes the grid in place — scroll position (vertical and horizontal) and any focused field survive, instead of the whole panel rebuilding and landing you back at the top.
  • The same "editing something scrolled you back to the top" fix, applied everywhere it existed. Every panel with autosaving fields now refreshes in place after its own saves instead of rebuilding the whole view: Plan → Overview fields, the Beats sheet, Revise → Audit checklists (whose progress counters previously could also fail to update), the Publish checklist / launch trackers / compile settings, the Home hero card (logline, theme, target, cover), the word-target dialog, and the scene row menus (synopsis, rename, remove from project). Long forms keep their scroll position and open sections; the field you were editing keeps its caret.

Added

  • Daily backups of the plugin's own data file. Obsidian's File Recovery protects your notes but never sees the plugin's data.json — which holds your settings, writing history, sprints, and ideas inbox. Inkswell now keeps a daily copy (the last 7 days) in .obsidian/plugins/inkswell/backups/, captured at load before the session writes anything. To restore one: disable Inkswell, copy the backup over data.json, re-enable.
  • A "Your data & backups" section in Help (and the README) documenting where everything is stored — most importantly that plan data (beats, goals, revision log, checklists) lives in the project index note's frontmatter, so File Recovery searches for it by your project's name — plus the "Inkswell conflicts" folder and the new data.json backups.

README file from

Github

Inkswell

A local-first writer's suite for longform fiction in Obsidian. Plan, draft, track, revise, and prepare to publish with Inkswell. My goal is to build the best end-to-end plugin toolkit for writers, especially those working on large series longform projects.

Inkswell — Plan · Write · Track · Revise · Publish, all inside Obsidian

Why Inkswell

  • You can handle nearly the entire writing process just with Inkswell. Inkswell organizes the entire arc of a novel — Plan · Write · Revise · Publish, plus a cross-cutting Codex and Track dashboard — into a single host view. Inkswell can get you from your first story ideas to a finished manuscript, with unique and powerful tools at each stage.
  • Focus on UX with only the features you need. I have noticed a trend in other writing tools to add every possible feature under the sun. For some writers, this may be what they want, but my experience is that those tools often try to do too many things, and it makes it challenging to use them effectively. Inkswell is built with user experience at the forefront - I have made a huge effort to deliver the most vital features for each stage of the writing journey, in order to get the most streamlined workflows possible without being overly opinionated. (I hope!) And when a surface isn't for you, hide it — Settings → Features (or right-click the tab) turns off optional tools like the board, plot grid, beats, or the publishing checklist, losslessly, so the app stays as lean as your workflow.
  • Local-first. No AI. Inkswell makes no network calls, collects no telemetry, and does not generate any text. Your manuscript lives in your vault's frontmatter and the notes you write. Inkswell is built to make it easier for you to write, not do the writing for you.
  • Drop-in for Longform users. I am a long time fan of the Longform plugin, so I made Inkswell compatible with that format. Inkswell reads and writes the same longform frontmatter, so existing projects load with zero migration. Inkswell-only data lives under a separate inkswell key to avoid collisions.

What's inside

Five pipeline phases — Home · Plan · Write · Revise · Publish — plus two cross-cutting tools, Codex and Track, that you reach for at any stage.

Surface What it's for
Home Projects, a nestable scene tree, a cover-art hero card (logline / theme / word-target progress), multiple drafts per story, ideas inbox + quick capture, and series grouping for multi-book worlds.
Plan Overview fields, beat sheets (7 templates incl. Save the Cat!), and Structure — the outline tree, a Kanban board, and a plotline × chapter grid, behind one Tree / Board / Grid switcher.
Write A distraction-light Live-Preview editor, writing prompts, fast-drafting inline markers, and timed sprints.
Revise An Audit toolkit, a unified To-dos worklist (draft markers left in prose + logged revision decisions), and manuscript Analysis.
Publish A configurable compile/export pipeline plus a self-publishing checklist and launch planner.
Codex A story bible — characters, locations, worlds, factions, items, events, and concepts — with scene linking and mention auto-detect.
Track Word goals, streaks, a GitHub-style heatmap, lifetime records, a deadline pace calculator, and milestone zones.

Home — organize the whole world

Projects and a nestable scene tree, an ideas inbox with quick capture, and series grouping for multi-book worlds, all behind a global project switcher. Select a project to open a hero card — attach cover art and see the logline, theme, and a progress bar tracking words toward the target. A story can hold multiple drafts (a first draft, an editor pass…), switchable from the header, each a full independent copy of the manuscript and its planning.

Home: project list, nestable scene tree, and project switcher

Plan — structure before you draft

A three-step flow: Overview (novel-level fields and long-form prose), Beats (7 outline templates incl. Save the Cat!, with scene scaffolding), and Structure — the same scenes seen three ways behind a Tree | Board | Grid switcher: the authoritative Act › Chapter › Scene outline tree, a Kanban board (by status / act / chapter / POV), and a plotline × chapter plot grid.

Plan: Kanban board with colored scene cards grouped by status

Write — draft fast, fix later

A distraction-light, Live-Preview manuscript editor with writing prompts and timed sprints. Five fast-drafting inline markers — for to-dos, research questions, dialogue gaps, missing scenes, and notes — highlight as you type (e.g. [RESEARCH: what did 1920s lamplighters earn?]), so you can mark a gap and keep moving forward. Find them all later in Revise → To-dos.

Write: Live-Preview editor with highlighted draft markers and a running sprint timer

Revise — from draft to book

  • Audit — per-scene and project revision checklists, a scene-purpose lift-out test, scene-opening variety, a character-arc grid, a side-character roster, and a style-sheet consistency scan.
  • To-dos — everything left to fix in one scene-grouped worklist: every draft marker left in the prose (to-dos, research questions, …), plus your invisible-revision decisions — capture "from now on, assume X" rulings (e.g. "the inn is now called the Gilded Wren") as typed, prioritized entries and keep drafting forward instead of breaking flow to backfill earlier chapters.
  • Analysis — readability, overused words, echoes, and composition mix.

Revise: the Audit toolkit — character-arc grid and revision checklists

Publish — manuscript to market

A configurable compile/export pipeline (Markdown & HTML built in; .docx / .pdf / .epub via pandoc when installed) with a step editor, chapter grouping, and a pre-export check. Plus a self-publishing Checklist (master checklist + book-metadata worksheet) and a Launch planner — pre-order timeline, budget, cover, marketing, and ARC trackers.

Publish: compile step editor and the self-publishing launch planner

Codex — your story bible

Characters, locations, worlds, factions, items, events, and concepts, each with its own profile. Every entry automatically lists the scenes that mention it — by name or alias, for any category — so your canon stays consistent as the manuscript grows. Can be scoped for single writing projects, or shared across a series.

Codex: a character profile in the story bible with linked scenes

Track — view stats, keep pace, achieve goals

Daily / weekly / monthly word goals, habit streaks, a GitHub-style heatmap, lifetime records, a writing-history chart, sprint stats, a deadline pace calculator (required daily words, ahead / on-track / behind), draft-milestone zones, and an optional daily mood. Goals only count writing in your projects — by default just manuscript scenes, with settings toggles to also count planning notes, codex notes, or other project notes. Notes elsewhere in the vault never count.

Track: heatmap, streak, progress rings, and writing-history chart

Privacy & dependencies

  • Local-first. No network calls, no telemetry, no account. Everything is stored in your vault's frontmatter and the plugin's local data.json.
  • No AI. By design — Inkswell is tooling around your writing. It cannot generate any text.
  • Optional pandoc. Exporting to .docx / .pdf / .epub shells out to a pandoc binary on your machine. It's feature-detected and disabled gracefully when pandoc isn't present; Markdown and HTML export need nothing extra.
  • Runs on mobile. Inkswell installs on Obsidian mobile. On tablets and iPad the full suite is available with a responsive layout; on phones it focuses on drafting (a single-column editor with a slide-in scene list), while the planning/reference/publish surfaces point you to a larger screen. The only desktop-only piece is pandoc-based .docx / .pdf / .epub export, which disables itself gracefully elsewhere.

Where your data lives — backups & recovery

Everything Inkswell stores is plain text you can inspect, sync, and back up like any other note:

Data Where it lives
Scene prose Ordinary notes in your project's scene folder
Plan data — beats, outline structure, goals, revision log, audit checklists, compile & publishing settings Frontmatter of the project index note (the note named after your project)
Codex entries Ordinary notes with a codex frontmatter key
Plugin settings, writing history, sprints, ideas inbox The plugin's data.json (inside .obsidian/plugins/inkswell/)

Recovery options, should anything ever go wrong:

  • Obsidian's File Recovery (Settings → File Recovery → View) keeps periodic snapshots of every note that changes — including plugin-written ones. The search is by file name: for plan data (beats, goals, revision log), search for your project's name and look at the index note's snapshots; for prose, search the scene's name.
  • The "Inkswell conflicts" folder: whenever Inkswell must displace a version of your text (resolving an editor/disk conflict, or overwriting a file during compile at your request), the displaced version is saved there first — nothing is ever silently discarded.
  • Daily data.json backups: on each load, Inkswell keeps a daily copy of its data.json in .obsidian/plugins/inkswell/backups/ (the last 7 days). To restore one: disable Inkswell, copy the backup over data.json, re-enable.

Install

Requirements: Obsidian 1.7.4+ (pandoc optional, for .docx / .pdf / .epub).

  • Community plugins: Settings → Community pluginsBrowse → search Inkswell → Install → Enable.
  • Manual: download main.js, manifest.json, and styles.css from the latest release into <vault>/.obsidian/plugins/inkswell/, then enable Inkswell in Community plugins.

Open Inkswell from the pen-tip ribbon icon or the "Open Inkswell" command.

Try it: the sample vault

examples/sample-vault/ is a complete, openable vault containing a mid-draft novel — The Lamplighter's Archive — wired up to exercise every Inkswell surface: beats, scenes, Codex, a populated Track dashboard, the revision audit, a compile recipe, and the self-publishing planner. Run npm run build:sample, then Open folder as vault on examples/sample-vault. See examples/README.md for details.

Development

npm install
npm run dev      # watch build into main.js
npm run build    # typecheck + production bundle
npm test         # unit tests (vitest)

Copy main.js, manifest.json, and styles.css into <vault>/.obsidian/plugins/inkswell/ to test in a real vault. Architecture, conventions, and the compile/version workflows are documented in AGENTS.md.

AI disclosure

This plugin was developed with the assistance of agentic AI coding tools and practices. I have a mandate at work to learn AI tooling, and I wanted to channel that practice into something useful for a community I love - hopefully this counts as that. Direction, architecture, scope, and review are all handled by me; much of the implementation was AI-assisted under that direction. That said, there is absolutely NO AI-generation in the plugin itself. I used agents to help build it, but the plugin itself has a strict "No AI" policy and no AI or word generation features will ever be added.

License

MIT © Daniel King