Plan mode

Plan mode (Cmd+3) is the workspace for the work that happens around the prose: who is in the book, where it happens, what is hidden under the surface, and what the world looks like. The mode is a three-pane reading-and-editing surface; the editor stays out of the way until you cross back into Workshop.

The three panes

  • Sections rail (left) - fixed plan groups plus writer-created story sections. Entities covers characters, locations, and objects. Project covers world, factions, cosmology, timeline, glossary, and events. Story lists arc, lifelines, spine, pinboard, and mystery sections from .novelty/plan.json. The number to the right of each row is the count of items in that section.
  • Entry index (middle) - the list of entries inside the active section. A search field narrows by name or alias; the origin chips below it filter to all, file-backed (a real reference markdown file backs the entry), or synthesized (the AI built a stub but no file exists yet). Synthesized entries show a hollow dot beside the name; file-backed entries show a filled dot. Story sections drag-reorder in place — grab any plan-instance row and drop it where you want; the new order persists immediately.
  • Article (right) - the open entry, rendered as a single continuous document. Frontmatter table, prose body, voice samples, mentions, relations, world context, backlinks, and history all read top-to-bottom so the entry feels like one essay, not a dashboard.

The sections and entries chips in the header collapse those panes independently. Collapse both to give the open article the full Plan-mode width, then use the same chips to bring either nav back.

Editing

Click any frontmatter row to edit it inline. Click edit under the prose body to rewrite the description. Every save lands as a row in the entry’s history with a small mark: ai for AI-authored changes, you for manual ones. Hit revert on any row to undo it; un-revert puts it back. Underneath, every save goes through the same JSON-patch and audit-log pipeline the inspector has used since M17.

+ new character / + new location / + new object in the entry index opens the same New Entity dialog the sidebar uses — pre-pinned to the right kind. Submit a name (and optional role / kind / appearance) and the dialog drops a reference file into reference/<kind>/, splices the entry into Plan, and selects it; a background build fills in mentions and voice samples a moment later. The reference file does not auto-open in the editor while you are in Plan mode.

+ term (glossary), + event (events), and + subsection (world / factions / cosmology / timeline) open a small dialog scoped to the project codex. Glossary terms patch in under /glossary/<term>; events append to /events/-; world-style subsections append a ## heading\n\nbody block to the field’s prose. Each save lands as a manual audit row, so any of them is reversible from the entry’s history.

When you select a story section, the entry index gives you + beat / + note / + event / + row / + mystery (whichever fits the section’s type) — clicking adds a default-shaped item to the section’s editor in the right pane, where you fill in the details. The small in the header opens the same section in a standalone window if you want more room than the workshop allows.

+ section at the foot of the sections rail opens a small popover anchored above the trigger. The list shows the typed picks — arc, lifelines, spine, pinboard, mysteries. Each is repeatable, so the popover keeps showing them — you can have multiple pinboards (Themes, Worldbuilding, Character ideas), multiple spines for parallel timelines, etc. A custom-name input at the bottom creates a pinboard with the title you type (same shape, pre-named). Double-click any story-section title in the rail to rename it inline; Enter or blur saves, Escape cancels. Click outside the popover or press Escape to dismiss it.

Autosave indicator

The dot in the project header reports the persistence state of the workspace’s most recent edit:

  • A filled dot labelled saved means every plan / beat / codex mutation has flushed to disk.
  • The dot becomes a small spinner labelled saving while a mutation is in flight.
  • A warning dot labelled retry means the last mutation rejected; hover the dot for the error message. Edits are not silently dropped — re-trying the action usually clears the state once the underlying issue (file permission, disk full, etc.) is fixed.

There is no manual save button. The chip is observational.

Cross-codex drift and AI sync

Editing one entity often invalidates assumptions in another — change a character’s affiliation and every related character’s bible may now contradict the new fact. Plan mode runs a passive drift check across every codex on disk:

  • The drift chip (next to the autosave indicator) shows how many entries have related codices with audit edits newer than the entry’s own last consistency check. The chip stays hidden when there is no drift.
  • Click the chip to open the drift drawer. Each row names the drifted entry and lists the triggers — the related entries whose recent edits flagged it.
  • Sync runs an Opus continuity pass on that target: the model reads the target’s bible plus each trigger entry’s bible and either reports “no contradictions” (which marks the entry as freshly checked) or proposes a JSON patch that resolves the contradiction. Applied patches land as audit rows just like manual edits, so they are reversible from the entry’s history.
  • Dismiss marks the target as freshly checked without an AI call — for the case where you’ve already resolved the contradiction by hand.
  • Sync all at the top of the drawer iterates the same pass over every drifted entry. The chip count drains to zero as each one finishes.

Drift refreshes on every plan change, on window focus, and once a minute while the workspace is open.

Ask AI

Open the plan.entry.ask-ai command from the palette (or click the ask AI button in the article’s breadcrumb bar) to start a freeform Q&A session about the selected entry. The entry’s full bible is sent as a cached prefix so follow-up turns inherit the context for free; the same cached prefix is reused if you keep the overlay open across multiple questions.

Each section also has a ⋯ AI menu in its header with a small fixed catalogue of structured passes:

  • ActsSuggest next beat, Tighten beat list, Critique tension curve.
  • PinboardSummarize notes, Group related.
  • SpineFind chronology gaps.
  • LifelinesCheck presence consistency.
  • MysteriesAudit setup/payoff balance.

Picking a pass auto-submits a structured prompt against the section’s serialized contents. The same passes are also registered as palette commands (Plan: …) for keyboard-only flow.

Each entry’s article ends with a backlinks section listing every [[…]] reference across the project that targets the entry’s name or one of its aliases. The list re-scans on every entry change; new manuscript edits show up the next time you open the entry. The display uses the same shape as the mentions list above it — same source line, line number, and snippet — but draws from the explicit wiki-link index rather than from name-fuzzy mention extraction.

Rebuild

Each entry has a rebuild button in its breadcrumb bar. Rebuild scans the manuscript and reference, regenerates mentions and relations, re-extracts voice samples for characters, and carves a fresh world-context slice. Project entries (world, factions, cosmology, timeline) do the same at the whole-project level; the model rewrites the prose using the manuscript as ground truth.

Legacy boards, notebook, atlas

The previous Plan layouts (Boards / Notebook / Atlas) are now palette-only. Open the command palette (Cmd+K) and search for legacy plan to launch any of them in their own window. The active workspace stays put; switching legacy views from the palette does not displace what you are reading.

Keyboard

  • Cmd+3 opens Plan mode.
  • Cmd+K opens the palette; Plan: next section / Plan: previous section cycle the rail. Plan: new entry opens the right adder for the active section (New Entity dialog for entity sections, the project-codex dialog for glossary / events / world-style subsections). Plan: new section opens the rail’s + section popover. Plan: toggle sections nav and Plan: toggle entries nav collapse the two navigation panes. Plan: rebuild current entry re-runs the build for whatever you are looking at. Plan: ask AI about current entry opens the Ask-AI overlay for the open entry. Plan: revert most recent edit rolls back the newest history row.
  • Plan: show drifted entries opens the drift drawer; Plan: sync all drifted entries runs the continuity pass over every drifted target.
  • The per-section AI passes are also exposed as palette commands: Plan: suggest next beat (acts), Plan: tighten beat list (acts), Plan: critique tension curve (acts), Plan: summarize pinned notes, Plan: group related notes, Plan: find chronology gaps (timeline), Plan: check presence consistency (lifelines), Plan: audit setup/payoff balance (mysteries). Each runs against the active plan section if its type matches.
  • Cmd+Shift+C still opens the legacy Codex inspector tab in the active pane; the per-tab Codex inspector is intentionally distinct from Plan mode (Workshop keeps it for when you want the inspector on top of the editor).