atriumatrium

Library & Vault

Save, recall, and restore rooms, panes, and full-app snapshots.

The Library is atrium's recall surface — a popover that holds saved layouts and a history of recently-closed rooms and panes, plus the Vault: a tab listing every full-app snapshot the system has committed. Open it with Cmd+Shift+L or the toolbar button.

The popover has three tabs:

TabWhat's there
SavedRooms and panes you explicitly saved with Save to Library or Cmd+Shift+S.
HistoryAutomatically captured when you close a room or pane — a few minutes of "undo close" so you can pull recently-closed work back.
SnapshotsThe Vault: every full-app snapshot committed by the snapshot scheduler.
Within Saved and History, filter chips narrow the list to All / Rooms / Panes. Search filters by name within the active tab.

Saving

A library entry captures everything the regular workspace snapshot captures — the same TabSnapshot / PaneSnapshot payload journaled by the workspace persister. For panes that means the pane type, scalar fields, the state:* projections (editor scroll/cursor, adapter session id, terminal runtime, browser nav state, idle-screenshot), and a fresh scrollback capture. For rooms it adds the mosaic tree and subtab grouping.

  • Save current room — Library popover footer, or assign a keybinding to save-current-room.
  • Save current pane — pane header menu, or save-current-pane.
  • Save on close — closing a room or pane that has a saved Library entry prompts Save / Discard / Cancel: overwrite the saved version with current state, close without updating, or bail out. When a room contains multiple saved panes, the prompt fires once per saved pane so partial changes never get silently dropped.
  • Pin — a saved entry can be pinned so it stays at the top of the list and gets a 📌 marker.

Materializing

Click any entry to materialize it into the active workspace. The Library decides what to do based on entry kind and what's currently focused:

  • Room → opens as a new room.
  • Pane → opens beside the focused pane (or as a new room if no pane is focused).
  • Drag an entry out of the popover onto a split zone or another pane's header to materialize directly into that drop target — same drop semantics as a file from Finder.
Materializing a room from History rebuilds the full mosaic, restores the subtab groups, replays the scrollback into terminals, restores Monaco scroll/cursor, and resumes adapter sessions through the same code path the workspace journal uses on restart.

Snapshots tab — the Vault

The Snapshots tab shows the full-app snapshot history committed by the snapshot scheduler. Each row shows the trigger (Interval, Shutdown, Pre-update, Manual, Pre-restore, or an Event(*) cause), timestamp, and a per-snapshot summary.

  • Take snapshot now commits a Manual snapshot of current state.
  • Inspect opens a snapshot diff viewer that semantically diffs the snapshot against current state — JSON for workspaces, row-by-row for tasks.db, byte-by-byte for opaque blobs — so you can preview exactly what restoring would change.
  • Restore triggers the restore dialog. atrium commits a Pre-restore safety-net snapshot first, then swaps state and re-launches the relevant panes through the same restore engine that runs on a clean app start. The shutdown gate prevents the app from exiting mid-restore.

Vault search

Beyond saved layouts and snapshots, the Vault is a searchable index of your past agent sessions — the transcript content of every adapter's history on disk, not just atrium's own captures. It answers "which session was it where we fixed the popover?" without you remembering the room, the date, or the adapter.

Two surfaces query the same index:

  • The Library's "Search vault…" box — type a phrase; entries come back ranked by content match, with the matching snippet highlighted.
  • The new-room session picker — the search field above the adapter tiles searches the full session corpus; click a result to resume that session.
Matching is forgiving: prefix, synonym, and edit-distance fuzzy matching all count, and results from the active workspace get a relevance boost so local work surfaces first. The index updates live as new sessions are written, so a session you closed minutes ago is already searchable. Settings → Vault tunes the index:
  • Indexing depthQuick (~5 MB), Standard (~150 MB, the default), or Deep (~500 MB). Deeper indexes more transcript history at the cost of disk.
  • Time horizonAll time, Last year, or Last 90 days, capping how far back the index reaches.
  • Per-workspace excludes — drop specific workspaces out of the index entirely.
  • Manual reindex — rebuild the whole index, or reindex a single adapter, without leaving Settings.
The atrium edits <file> CLI queries this same index from the shell, listing every past session that touched a given file.

Retention and dedup

The retention engine keeps the Library bounded:

  • History is FIFO. The most recent N close-events stick; older ones are pruned. Saved entries are unaffected.
  • Snapshots are tier-pruned — recent commits dense, older commits sparse — so the Vault stays useful without growing unbounded.
  • The snapshot store is content-addressed, so re-snapshotting unchanged state is essentially free.

Constraints

  • The Library is workspace-scoped: saved rooms and panes only show up when the workspace they were saved in is active. (Snapshots are global because they capture the whole app.)
  • The old per-pane Resume / Template matrix from the previous Library design is not present in this build; "open with custom settings" is on the roadmap.
  • Bulk-deleting Library entries fires an Event(LibraryBulkDelete) snapshot first, so you can undo the bulk delete by restoring from that snapshot.