Temporal Markers
Annotate your prose with time references — dates, named events, relative offsets, and relationship lifecycle markers — that Skribex indexes and surfaces across the application.
What it does
Temporal markers are inline chips you place in your manuscript text using ~-mention syntax. They record when things happen in your story's timeline. Skribex indexes every marker on save and uses them to power the timeline sidebar, the markers panel, and temporal badges on entity relationships.
There are two separate time-tracking mechanisms:
- Chapter-level time — a single time value set on each chapter via the hourglass button in the toolbar. Provides the global time context for the chapter (shown in the rolodex sidebar).
- Inline temporal markers —
~-mentions placed anywhere in the prose text. These mark specific moments, transitions, or relationships within a chapter.
Inline markers — full syntax
Type ~ to open a hint menu showing all available patterns. Select one or keep typing freely. The time part inside [brackets] is free-typed — you can use any format (dates, durations, fantasy calendars). Press space after the closing ] to create the chip.
Absolute time
Mark a specific point in time.
| You type | Chip shows | Colour |
|---|---|---|
~[1942-06-15] |
1942-06-15 |
Blue |
~[Dawn, third day] |
Dawn, third day |
Blue |
Named time markers
Link a time to a named reference. Type ( after the time to open the reference dropdown.
| You type | Chip shows | Colour |
|---|---|---|
~[June 1942](the_wedding |
June 1942 (The Wedding) |
Blue |
~(the_coronation |
The Coronation |
Blue |
Named markers are saved to your book's timeline store (timeline.json) and become available as suggestions everywhere — in other ~-mentions, in the relationship "Starting from" / "Ending at" dropdowns, and in the sidebar markers panel.
The dropdown suggests from four sources:
- Timeline markers (committed named anchors)
- Cached markers (named temporals from previous saves)
- Event entities (entities of type "event")
- Structure elements (chapters, sections, parts)
Relative references
Position an event relative to another named moment.
| You type | Chip shows | Colour |
|---|---|---|
~before:(the_trial |
before: The Trial |
Teal |
~after:[3 days](the_battle |
after: 3 days (The Battle) |
Teal |
~during:(the_siege |
during: The Siege |
Amber |
~simultaneous:(the_escape |
simultaneous: The Escape |
Amber |
~elapsed:[6 months] |
elapsed: 6 months |
Teal |
Narrative devices
Mark analepsis (flashback) and prolepsis (flashforward).
| You type | Chip shows | Colour |
|---|---|---|
~flashback:[1920] |
flashback: 1920 |
Purple, italic |
~flashback:(the_memory |
flashback: The Memory |
Purple, italic |
~flashforward:[2050] |
flashforward: 2050 |
Purple, italic |
Ranges and durations
| You type | Chip shows | Colour |
|---|---|---|
~[1940]-[1945] |
1940 – 1945 |
Blue |
~[start]-(end_event |
start – End Event |
Blue |
~duration:[2 hours] |
duration: 2 hours |
Blue |
Fantasy calendars
Use dnp: (do-not-parse) for time systems Skribex shouldn't try to interpret.
| You type | Chip shows | Colour |
|---|---|---|
~dnp:[3rd moon of Kryos] |
3rd moon of Kryos |
Muted, italic |
Relationship lifecycle markers
Create or end entity relationships directly from the prose. Type ~begins:( or ~ends:( to start a three-step guided dropdown:
- Select source entity — type to search, pick from suggestions
- Select relationship type — filtered by the entity's type (e.g. character sees kinship/social types)
- Select target entity — filtered by the relationship's range
Each step is separated by · in the query.
| You type | Chip shows | Colour |
|---|---|---|
~begins:(Kael · parentOf · Arin) |
▸ Kael parentOf Arin |
Green |
~ends:(Kael · basedIn · Aldenmere) |
◂ Kael basedIn Aldenmere |
Red |
On save:
~begins:creates a relationship edge with the marker name as "Starting from"~ends:terminates the matching active edge with the marker name as "Ending at"
Sync policy: Deleting a ~begins: or ~ends: chip from the text does not delete the relationship. The relationship persists on the entity page — manage it there if you want to remove it.
Chapter-level time
Click the hourglass icon (⏳) in the editor toolbar to set a global time for the focused chapter.
- A popover appears with a text input — type any time string (e.g. "June 15, 1942", "Day 3", "Third Age, Year 2941").
- Press Enter or click Set to save. Click Clear to remove.
- The chapter time appears in the Timeline rolodex in the right sidebar.
- It provides context for relative
~before:and~after:references within the chapter.
Where markers appear
Right sidebar — Timeline section
A 3D rolodex showing the previous, current, and next chapter with their chapter-level times. Updates as you scroll through chapters.
Right sidebar — Markers section
Color-coded dots for every inline ~-mention in the currently visible chapter. Dot colours match chip colours:
- Blue — absolute, named
- Teal — before, after, elapsed
- Amber — during, simultaneous
- Purple — flashback, flashforward
- Green — begins (relationship start)
- Red — ends (relationship end)
- Grey — unknown/unparsed
Entity page — relationship badges
When a relationship has temporal markers, the entity page shows:
- "since [marker name]" — next to the relationship
- "until [marker name]" — next to terminated relationships
Entity page — add relationship form
Click "link to timeline..." to reveal optional "Starting from" and "Ending at" dropdowns that suggest the same sources as the inline dropdown (markers, events, elements).
How it works under the hood
- Chips are TipTap inline nodes (
skribexTemporal) — atomic, non-editable. Delete with backspace or select+delete. - On each autosave, all temporal nodes are extracted from the document and indexed in a SQLite cache (
temporal_indextable). - Named markers are also written to
timeline.jsonin your book's.skribex/directory (committed to git). - Relationship lifecycle markers (
begins/ends) trigger edge creation or termination inrelationships.jsonon save. - Markers do not export to EPUB — they are stripped during export.
Tips
- Use named markers for important story events — they become reusable anchors across the entire book.
- Combine chapter-level time with inline markers: set the chapter time for the broad context ("Chapter 5: June 1942"), then use inline markers for specific moments within it.
- Fantasy authors: use
~dnp:[...]freely — Skribex stores the text as-is without trying to parse it as a date. - The
~begins:/~ends:syntax is fastest for authors who think about relationships while writing. For retrospective relationship management, use the entity page form instead.