Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Session

A session in Xenocept is the persisted artifact created when you press Submit. It is the immutable record of one capture + annotation + comment cycle. The in-progress canvas state inside the overlay is not itself persisted — only Submit writes a session to disk.

The Two States

StateWhat it isWhere it lives
Live canvasThe active drawing/annotation state inside the overlay.In-memory only, held by the <xenocept-canvas> web component.
Submitted sessionThe persisted result of pressing Submit./sessions/{session-id}/ inside the AeorDB store.

The transition between them is one user action — pressing the Submit button — and is one-way.

What’s In a Submitted Session

/sessions/{session-id}/ contains:

session.json # the structured metadata
screenshot.png # the (possibly session-area-cropped) submitted screenshot
screenshot-clean.png # optional — background-only, no markup (frontend may or may not send)
focus-0.png # one per Note
focus-1.png
...

session.json carries:

{
  "id": "session-2026-05-15-18-30-00.123",
  "created_at": "2026-05-15T18:30:00.123Z",
  "screenshot": "screenshot.png",
  "comments": [ /* Note entries — see Note page */ ],
  "bubbles": [ /* Bubble anchors */ ],
  "texts": [ /* freestanding text objects */ ],
  "canvas_objects": [ /* verbatim canvas objects, used to reconstruct for edit mode */ ]
}

Notably not in the schema:

  • schema_version
  • snapshot_id (the id is just id, and it’s a timestamp string, not a ULID)
  • A workspace block
  • A metadata block with platform / display server / version
  • A monitors array
  • bounds / capture / annotated per comment

The id is generated as chrono::Utc::now.format("session-%Y-%m-%d-%H-%M-%S%.3f").

The Live Canvas, Briefly

While the overlay is open, the live canvas accumulates objects (strokes, shapes, Notes, bubbles, text, blur, emoji). The canvas state is mutable. Ctrl+Z and Ctrl+Shift+Z walk the undo/redo stacks. None of that state is persisted to disk while in progress.

When the overlay is hidden (by Esc or by another hotkey press that toggles it off), the Tauri window survives but the canvas state still lives in memory in that window. The user just can’t see it.

When the overlay is shown again by a fresh hotkey press, the canvas state is reset before the new screenshot is installed — the object list, undo stack, and redo stack are all cleared. The previous live canvas is gone. There is no auto-resume.

If you want to keep your work, Submit it. Submit is the only path that persists the work; everything else is throwaway.

Multiple Sessions

There is one Xenocept process at a time — the app is single-instance. Within that process there is also at most one live canvas (there’s only one overlay window).

Submitted sessions accumulate in /sessions/ and don’t conflict — each gets its own timestamp-derived id.

Editing a Past Session

The main Xenocept window’s Sessions list lets you open a past session in edit mode. The frontend reconstructs the canvas from session.json and the stored PNGs, and Submit will create a new session — the original stays as it was. There is no in-place mutation of submitted sessions.