Plotra Docs
Guide

Canon and the spoiler horizon

Keep a long story consistent and spoiler-safe. The world bible, canon status, releases, reveals, the spoiler horizon, who knows what, and continuity checks.

This is the part of Plotra that other writing tools don't have. It answers three questions that get harder with every book: what is actually true in this world, what has the audience been told so far, and who in the story knows it. With those answered in the project, a series stays consistent without you rereading it, and a contradiction is found by you, not by a reader.

These tools belong to two modules.

ModuleWhat it adds
World bibleEntity types of your own, canon status and retcon history, the Continuity view with its checks and character sheets.
Releases & revealsReleases, reveals and channels, the spoiler horizon, the Release roadmap and Secrets & setups views.

A tabletop RPG project starts with both on. A franchise project starts with World bible. Every other type starts with neither: turn them on in the Modules tab of Project settings, which needs someone who manages the project. Turning a module off hides its tools and keeps everything you recorded. See Modules.

Everyone who can open the project can read all of this. Changing it needs edit access: viewers and commenters see the same views with the controls switched off.

The world bible

Characters and locations are built in. For everything else, define your own entity types: a faction, an object, a species, a magic system, a legal case. Each type has its own name, icon, colour and fields.

Every page of a type is an ordinary note, a World entry. It has a body, tags, a synopsis and a canon status, it can be linked with [[, it has backlinks, and it appears in the graph. Its fields show in the Properties panel. The Codex view (⌘⇧C) lists the pages by type; see World views.

The types you start with

The first time the project is opened with World bible on, it gets nine types. Rename, reshape or delete any of them.

TypeFields
FactionKind (Nation, Organisation, Guild, Family, Cult, Company), Leader (a character), Based in (a location), Goal
ObjectOwner (a character), Kept at (a location), Significance
EventStory date, Location (a location), Participants (several characters)
SpeciesHabitat, Lifespan, Sapient (a checkbox)
CultureHomeland (a location), Values
LanguageFamily, Script
ReligionDeities, Tenets
SystemSource, Limits & costs
ThemeStatement

With the Interactive narrative module on, a Quest type is added too. See Interactive narrative.

A project with no types at all gets the nine again the next time it is opened. Keep at least one type if you don't want them back.

Creating and editing a type

Open the type dialog from either place:

  • the Codex view: New type… at the bottom of the list of types, or the pencil beside a type (Edit type and fields);
  • Project settings, the Kinds tab: New kind…, or Edit beside a kind.
FieldWhat it does
NameWhat one page is called: "Faction". Required, up to 80 characters. It is the name used in the binder's New… menu and in Change kind.
PluralThe heading of its section in the Codex. Left empty, it is the name with an "s".
IconOne of 24 icons.
ColourThe colour of the icon in the binder, the Codex and the graph.
FieldsThe properties every page of this type has.

Each field has a name (up to 60 characters) and a type:

Field typeHolds
TextA line of text.
NumberA number.
DateA date.
SelectOne choice from a list. Type the Choices, separated by commas.
Multi-selectSeveral choices from a list.
Link to noteAnother note. Under Links to, tick the kinds it may point at (none ticked means any note). Tick Several to let it hold more than one.
CheckboxYes or no.
URLA web address.

Use the arrows to reorder fields and the bin to remove one. Add a field adds a row. A field with no name is dropped when you save.

Things to know about fields:

  • A field's type can't be changed once the type has been saved. Remove the field and add a new one.
  • Removing a field hides its values; it doesn't erase them. Add a field with the same name again and they come back.
  • A field that links to a note counts as a link: the page it points at lists this one under Backlinks.
  • Limits: 40 fields per type, 100 choices per list, 60 types per project.

Delete type removes the type after a confirmation. Its pages stay in the binder as plain notes, with their text untouched.

Creating a page

With World bible on, each type has an entry in the binder's New… menu. In the Codex, select the type and press the plus beside the search box. To turn an existing note into a page of a type, right-click it and choose Change kind. See The vault and the binder.

Canon status

Every note has a canon status. A new note is Draft.

StatusMeaning
CanonEstablished. It is true in the story.
DraftStill being worked out.
SpeculativeAn idea that may or may not make it in.
RetconnedWas canon, then changed. The old version is kept.
Non-canonOutside the story's continuity.

Set it in the Story tab of the inspector, under Canon: click a status and it applies at once. The Codex shows the status as a badge on each page.

Canon status is used in three places:

  • the continuity checks warn when a canon scene links to something retconned or non-canon;
  • the published wiki can be limited to Only canon pages and passages, see Publishing;
  • the AI agent is told to respect it, and asks before changing it.

A note that is locked for review can't have its canon status or its reveal changed until it is unlocked.

Retcons keep their history

Choosing Retconned opens a short form instead of applying straight away.

  1. Say what changed and why: "Her brother survives: Book 3 needs him." The reason is required.
  2. Optionally pick the release it changed in, under Changed in…. The list appears once the project has releases.
  3. Press Retcon.

Plotra saves the note's text as it stands as a named version, "Before retcon:" followed by your reason, and adds an entry to the retcon history under the status buttons. Each entry shows the reason, the release it changed in, what the status was before, who did it and when. old text in History opens the History panel, where the saved version is kept. See Version history.

A note can be retconned more than once; every entry is kept, newest first. Moving a note away from Retconned later doesn't remove its history.

One block can differ from its note

A character page can be canon while one line on it is still speculative. Put the cursor in a block and press ⌘⌥T to give that block its own canon status. See Block tags.

Releases

A release is whatever your story ships in: a book, a chapter of a web serial, an episode, a season, an issue, a game patch, a campaign session. Releases have an order, and the order is what "before" and "after" mean everywhere on this page.

The Release roadmap view

Open it from the ribbon (Releases) or with "Open release roadmap" in the command palette. It needs the Releases & reveals module.

The toolbar:

ControlWhat it does
ReleaseAdds a release at the end of the list.
ChannelsOpens Project settings, where the reveal channels are edited in the Reveals & languages tab.
World as ofSets the spoiler horizon.

Below it is a table: one row for each release, one column for each channel. A cell lists what the audience learns in that release, through that channel.

A release

A new release is named after its kind and its number ("Book 3", "Session 4"). Its kind starts as the one that suits the project type: a book for a novel, a session for a campaign, an episode for a screenplay. See Project types.

Everything about a release is edited in its row:

PartWhat it does
TitleClick to rename. Up to 80 characters.
Earlier / LaterThe arrows move the release up or down the order.
Delete releaseRemoves it, after a confirmation.
KindBook, Chapter, Episode, Season, Issue, Volume, Patch, Session, Marketing beat or Release. A label only: it changes nothing else.
DateThe planned or actual date. Optional.
ShipsA folder or chapter from the binder: "this folder is Book 2". Everything inside it is then revealed by this release, with no further tagging. "nothing from the binder" is the default.

When a release ships a folder, the row shows the folder's word count and a button that opens it. If two releases ship the same folder, the earlier one counts.

A Released badge appears once the release has been cut in the Review & editorial module, which snapshots every note for the changelog. See Review and editorial.

A project can hold 500 releases.

Deleting a release. Notes tagged as revealed by it go back to not revealed. Passages tagged with it keep the tag, shown as "A removed release": they stay hidden under every horizon and are left out of exports until you retag them.

Reveals

A reveal says when the audience learns something, and optionally where.

Revealing a note

In the Story tab of the inspector, under Revealed to the audience:

ControlWhat it does
The first listThe release that reveals the note: "In Book 2". The empty choice reads "Not revealed yet", or "With its folder (Book 2)" when a folder above the note already reveals it.
The second listThe channel: where the audience learns it. Shown once the note is revealed. "Channel not specified" is the default.
Truth / BeliefThe knowledge layer. See Who knows what.

Until the project has a release, this section offers a link to the roadmap instead.

The roadmap sets the same thing from the other side:

  • Reveal a note in a cell picks a note and tags it with that release and channel.
  • The cross beside a note in a cell (Remove from this release) clears its reveal.
  • The Not revealed yet list at the bottom has a Reveal in… menu on each note. It lists the first 60 notes and counts the rest. Folders, chapters, canvases and timelines are not listed.

Channels

A channel is where a reveal happens: the chapter text, a trailer, an interview, a handout to your players. A project starts with Main text, Trailer, Interview, Social post and Supplementary story. Change them in Project settings, the Reveals & languages tab: up to 20, each up to 40 characters. See Project settings.

Channels are labels for planning. They don't change what the spoiler horizon hides. A reveal with no channel, or with a channel that has since been removed, appears in a No channel column at the end of the roadmap.

How Plotra decides when a note is revealed

Nearest rule first:

  1. The note's own reveal tag.
  2. Otherwise, the closest note above it in the binder that has a reveal tag or that a release ships. A scene inside the "Book 2" folder is revealed by Book 2.
  3. Otherwise, it is not revealed. The audience hasn't been told.

A block inside a revealed note is revealed with it, unless the block has its own tag: a later release, or "never".

In the campaign sample, each session is a release that ships that session's folder, so its scenes need no tags. The reeve's character page is revealed in Session 1, the paragraph about his second ledger is tagged for Session 3, and the game master's notes on how he behaves when cornered are tagged Never.

Block tags

A block tag gives one block, or several, settings of its own. It is how you mark a secret inside a page the audience otherwise knows.

To tag:

  1. Put the cursor in a block, or select several.
  2. Press ⌘⌥T, run "Tag block (canon, reveal, fact-check)…" from the command palette, or use Tag the selected block in the Story tab.
  3. Set the fields and press Apply.

The dialog shows only the fields of the modules that are on. With none of the three on, it says so and offers nothing to set.

FieldModuleChoices
CanonWorld bible"Same as the note", or any canon status.
RevealedReleases & reveals"With the note", "Never (the audience isn't told)", or a release.
WhereReleases & revealsThe channel. Shown only when a release is chosen.
LayerReleases & revealsTruth, or Belief: what people are led to believe.
Fact-checkResearch & sources"Not a claim", Unverified, Verified or Disputed, and then a Source. See Research and sources.

Anything left at its first choice follows the note. Clear tags removes every tag from the selected blocks. With several blocks selected, the dialog opens with the first block's tags and Apply writes them to all of them.

A tagged block has a coloured line down its left side and small labels at its right: the canon status, the release and channel or "Never revealed", "Belief", and the fact-check status. Click a label to open the dialog for that block.

The Story tab lists the note's tagged blocks under Tagged passages, each with the start of its text and its tags. Click one to edit it; the note has to be open.

Things to know:

  • Tags belong to the block. They travel with it when it is moved, copied or restored from a version.
  • Tagging needs edit access to the note. Tags are applied directly, even in suggesting mode.
  • The roadmap, the Story tab and Secrets & setups read tags from the saved copy of the note, which is updated a few seconds after you stop typing. A new tag takes that long to appear there.
  • Up to 500 tagged blocks per note are indexed.

The spoiler horizon

The spoiler horizon shows the project as the audience knows it once a given release is out. Everything revealed by that release or an earlier one is known; everything else is not.

Setting it

Choose a release under World as of in the Release roadmap toolbar. "Everything (no spoiler filter)" turns it off.

While a horizon is on:

  • the status bar shows World as of and the release's title. Click the name to open the roadmap; click the cross to show the whole world again;
  • the release's row in the roadmap is tinted and marked with an eye.

The horizon is remembered in your browser, for each project. Your co-writers set their own, and so does each of your devices. If the release is deleted, the horizon turns off.

What it hides

WhereWhat happens
BinderNotes the audience doesn't know are dimmed and marked with a closed eye. A folder stays lit if anything inside it is known. Dimmed notes still open.
EditorA block tagged for a later release, or Never, is blurred. Hover over it or put the cursor in it to read and edit it.
OutlineLists only known notes and the folders that hold them.
Codex, Graph, TimelineLeave out notes the audience doesn't know.
Quest designerLeaves out quests the audience doesn't know.
ReadLeaves out unknown notes, and blocks tagged for later or never. A folder shown only for what is inside it keeps its title and loses its own text.
Secrets & setupsThe middle column of Knowledge layers becomes "Told by this point".
ExportThe export dialog says "As of" the release and exports only what is revealed by then, in every format.
PublishThe Publish view starts from the same release, and has its own World as of choice. See Publishing.
AI agentAnswers "as of" a release when you ask it to. See The AI agent.

What it does not hide

  • The text of a dimmed note. Open a note the audience doesn't know and its text is there, unblurred. Only blocks with their own later or "never" tag are veiled in the editor.
  • The Corkboard, Plot grid, Manuscript, Relationships and Canvas views. They show everything.
  • Search, the quick switcher, the link picker and the Links tab. They find and list every note.
  • The Release roadmap and the Continuity view. They always work on the whole project.
  • Anything from another person. See the warning below.

Passages marked Never

A block tagged Never is hidden under every horizon. It is also left out of every file export and of the published wiki when no horizon is on, as is a block tagged with a release that has been deleted. The Read view with no horizon shows them, and so does a PDF, which is printed from the Read view: set a horizon before printing a copy for someone else.

What it is for

  • Writing a recap or a blurb for Book 2 without a detail from Book 4 slipping in.
  • Writing the next book with a clear view of what the reader already knows.
  • Running a tabletop campaign: set the horizon to the last session and you see what your players know. Build the wiki in the Publish view at that horizon and hand it to them: that is the player-safe version.
  • A public wiki that only contains what has been revealed.

The horizon is a way of looking, not a lock

The spoiler horizon filters what you see while you work, and what goes into an export or a published wiki. It is not a permission. Someone you share the project with as a viewer can read all of it, and so can anyone with the project's read-only link, passages marked Never included. To keep unrevealed material from a person, give them the wiki or an export made at the horizon, or keep the secrets in a separate project.

Who knows what

The Secrets & setups view tracks knowledge inside the story. Open it from the ribbon (Secrets) or with "Open secrets & setups" in the command palette. It needs the Releases & reveals module. It has three tabs.

Knowledge layers

A fact can be the truth, or a belief: a false version that people are led to believe, such as a lie, propaganda or an unreliable narrator. Set the layer of a note with the Truth / Belief buttons in the Story tab, and of a block in the tag dialog. Everything is truth until you say otherwise.

The tab sorts the world into three columns:

ColumnHolds
True, but untoldWhat is the case and the audience doesn't know yet.
Told to the audienceEverything a release reveals. Under a spoiler horizon it is Told by this point: what the audience knows as of that release.
BelievedNotes and blocks on the belief layer.

Each entry shows the note, the start of the text for a tagged block, and the release that reveals it. Click one to open the note. Folders, chapters, scenes, canvases, timelines and dialogues are not listed as notes, though their tagged blocks are. Each column shows up to 200 entries.

Who knows what

For each secret, record which characters know it and the scene where they learn it. This is what catches "how does she know that?" in chapter 20.

To track a secret, fill in the line at the top, "A secret (any note)… is known by a character…", and press Track. A secret is any note that isn't a folder; it is usually a note written for the purpose, or a world entry.

Secrets are listed with the characters who know them. For each character:

ColumnWhat it records
Learned inThe scene or chapter where they find out. "Knew all along" is the default.
What they know"The truth", or "A false version".
NoteHow they find out, or what they think instead.

The cross removes the entry. In the campaign sample, Sister Wenna learns who set the fire in the mill scene ("Saw him leave the yard with a lantern"), while the guard captain holds a false version: he was told it was an accident.

These entries feed the continuity check "Knows something before learning it" and the Learns column of the character sheets.

Setups and payoffs

Track what you plant and where it pays off. Setup in the toolbar adds a row.

ColumnWhat it holds
KindForeshadowing, Chekhov's gun, Clue, Red herring or Mystery.
WhatA name for it: "Lamp oil on the reeve's cuffs". Up to 80 characters.
Set up inThe note where it is planted. "Not planted yet" until you choose.
Pays off inThe note where it pays off. "No payoff yet" until you choose.
StatusOpen, Paid off or Dropped. Choosing a payoff marks the setup Paid off.
NotesAnything else.

An open setup shows how long it has been waiting: "open for 12 scenes" counts the scenes after the one it was planted in. Only what's still open hides the rest. The bin deletes a row.

Open setups, and payoffs that come before their setup, are also reported by the continuity checks.

Continuity checks

The Continuity view runs a set of plain rules over the project. Open it from the ribbon or with "Open continuity" in the command palette. It needs the World bible module. There is no AI in it, nothing leaves your project, and the same project always gives the same answer.

What the checks read

  • Scenes: the Story date, Duration, POV and Location properties.
  • Characters: the Born, Died, Age and First appearance properties.
  • Links: every [[ link, embed and note-valued property.
  • Plot threads: which scenes are in a thread, and the scene it is Resolved in, from the Plot grid. See Planning views.
  • Who knows what and Setups and payoffs, from Secrets & setups.
  • Canon status.

A character is in a scene when they are its POV, or the scene links to them.

Write story dates as YYYY-MM-DD, with a time if you need one. In a project with a calendar of its own, month names work too ("4 Frostmonth 312"). When the project has custom calendars, a Calendar menu in the toolbar chooses the one dates are read in. It starts as the calendar of the project's timeline and is remembered in your browser. See Timeline and canvas.

The checks can't find a problem in something you haven't recorded, and they don't read your prose. The line under the toolbar shows how many scenes have a story date.

The rules

Results are grouped as Contradictions, Worth a look and Notes.

RuleGroupTriggered when
Appears after deathContradictionsA character is in a scene whose story date is after their Died date.
In two places at onceContradictionsA character is in two dated scenes that overlap in time, counting each scene's Duration, and the scenes have different Location values.
Appears before birthWorth a lookA character is in a scene that ends before their Born date.
Age doesn't match the timelineWorth a lookA character's Age is a number that differs from the years between Born and their First appearance scene, or their earliest dated scene if that isn't set. Also when Died is before Born.
Closed plot thread referenced againWorth a lookA scene is in a plot thread and comes later in the binder than the scene the thread was resolved in.
Knows something before learning itWorth a lookA scene links to a secret, its POV character is recorded as learning that secret in another scene, and this scene comes first. Order is by story date when both scenes have one, otherwise by binder order.
Payoff comes before its setupWorth a lookA setup's payoff note comes before its setup note in the binder.
Canon scene relies on something that isn't canonWorth a lookA scene with the status Canon links to a note that is Retconned or Non-canon.
Setup still openNotesA setup with the status Open has a note it is planted in. The message counts the scenes since.
Story date can't be readNotesA scene's Story date is filled in and isn't a date in the chosen calendar.

Scenes without a story date are skipped by the date rules. Two scenes need a location each to count as two places.

Working through the results

Each result names its rule, explains the problem and has a button for each note involved: click one to open it. After fixing something, press Check again in the toolbar.

  • Rule filters the list to one rule. It appears when more than one rule has results.
  • Dismiss, shown when you hover over a result, hides one that is intentional. Dismissals are stored in your browser for that project: they are not shared with co-writers and don't follow you to another device.
  • Show dismissed brings them back into the list, faded, each with a Restore button.

A dismissed result stays dismissed for as long as the same notes are involved.

Continuity sheets

The Character sheets tab builds a sheet for each character from what the project already holds. Pick a character from the list on the left.

The heading shows their birth and death dates and how many scenes they are in. Open page opens the character's note.

Through the story lists every scene they are in, plus any scene where they learn something:

ColumnShows
SceneThe scene, with a POV badge when they are its point of view.
WhenThe scene's story date.
AgeTheir age then, from Born. "dead" in red if the scene is after their death.
WhereThe scene's location.
LearnsThe secrets they learn in that scene, marked "(a false version)" when it is one, with your note.

The scenes are in story order when every one of them has a date, and in binder order otherwise; the heading says which. Below the table, Knew from the start lists secrets with no scene, and Track what … knows opens Secrets & setups.

Beside the table are the character's properties and their relationships from the Relationships view; click a related character to see their sheet.

The Story tab

The Story tab of the inspector gathers a note's canon and reveal settings. It appears when World bible, Releases & reveals or Research & sources is on. "Show canon and reveals" in the command palette opens it.

SectionNeedsCovered in
Canon and the retcon historyWorld bibleCanon status
Revealed to the audience: release, channel, Truth / BeliefReleases & revealsReveals
Tagged passages and Tag the selected blockAny of the threeBlock tags

Under the reveal, two lines explain the effect: which horizons hide the note, and, for a note with others inside it, that everything inside is revealed with it unless it has its own tag.

Things to know

  • Block tags are indexed a few seconds after you stop typing, so the views lag slightly behind the editor.
  • Releases, reveals, who-knows-what entries and setups are shared with everyone on the project. The spoiler horizon, dismissed continuity results and the continuity calendar are stored in your browser.
  • Deleting a note for good removes its who-knows-what entries. A setup that pointed at it stays, with that side empty.
  • A shared world lends its characters, places and entries to another project. It doesn't lend its releases: the borrowing project's horizon doesn't apply to shared pages.

On this page