Goal
A dedicated frame that surfaces what the user has been looking at — visited nodes, currently selected/focused nodes, and a digest of their annotations — so they maintain context across long exploration sessions.
What to do
Session history
- Track visited node IDs in order (capped at last 50) in a new
history-store or as an addition to selection-store
- "Visited" = any node that was
focused (single-click selected) during the session
- History persists within the session but not across reloads
SummaryFrame layout (three sections)
- History — scrollable list of visited nodes (most recent first), each showing
deriveLabel, type badge, and a click-to-refocus action
- Current selection — derived labels + annotation chips for all nodes in
selection-store.selected; if > 5 nodes selected, show count summary ("12 chunks across 3 documents")
- Context digest — aggregate annotation summary for the current selection:
- Temporal span: earliest → latest date across all temporal annotations
- Geographic spread: list of unique location names (top 5 by occurrence)
- Top entities: person/org names sorted by co-occurrence count
Registration
- Register
'summary' in frame registry and add to ADDABLE_FRAMES in App.tsx
Acceptance criteria
- History list updates as user navigates between nodes
- Clicking a history item refocuses that node across all frames
- Selection digest updates within 100ms of selection change
- Shows meaningful content (not IDs) using
deriveLabel
Goal
A dedicated frame that surfaces what the user has been looking at — visited nodes, currently selected/focused nodes, and a digest of their annotations — so they maintain context across long exploration sessions.
What to do
Session history
history-storeor as an addition toselection-storefocused(single-click selected) during the sessionSummaryFrame layout (three sections)
deriveLabel, type badge, and a click-to-refocus actionselection-store.selected; if > 5 nodes selected, show count summary ("12 chunks across 3 documents")Registration
'summary'in frame registry and add toADDABLE_FRAMESin App.tsxAcceptance criteria
deriveLabel