Skip to content

feat(session,app,tui): restore and browse archived sessions#18

Merged
shoootyou merged 4 commits into
devfrom
feat/unarchive-sessions
Jun 14, 2026
Merged

feat(session,app,tui): restore and browse archived sessions#18
shoootyou merged 4 commits into
devfrom
feat/unarchive-sessions

Conversation

@shoootyou

Copy link
Copy Markdown
Owner

Internal fork PR — merges feat/unarchive-sessions into dev.

Upstream contribution: anomalyco#32337

Closes anomalyco#24153 · anomalyco#26078 · anomalyco#13463 · anomalyco#29517 | Fixes anomalyco#24850

shoootyou and others added 4 commits June 14, 2026 13:19
Widen the unarchive path so a null/cleared archived timestamp reactivates a
session end to end: UpdatePayload accepts time.archived = null, setArchived
converts null to undefined before patch/publish, the core projector coerces
time_archived to null on update, and the app event-reducer increments
sessionTotal exactly once per stable root id on unarchive (and decrements
idempotently on archive), tracked via a new optional State.archivedRoots map.

Co-authored-by: yui-soul <yui-soul@users.noreply.github.com>
Add an unarchive action across the app and TUI: the layout exposes a shared
unarchiveSession helper that clears the archived timestamp and navigates to the
restored session, wired into the file picker and session list. Includes i18n
strings for all locales and the supporting layout helpers.

Co-authored-by: yui-soul <yui-soul@users.noreply.github.com>
Add a global discovery dialog that lists archived sessions across all projects
and restores one on selection. The cross-project list is fetched once on open
and cached, with a distinct loading state, an explicit in-dialog error surface,
and a single error toast per failure.

Co-authored-by: yui-soul <yui-soul@users.noreply.github.com>
listByProject (the instance-scoped Session.list used by the sidebar) had no
time_archived filter, so archived sessions consumed LIMIT-window slots and
pushed active sessions out of the sidebar (anomalyco#24850). Add an archived?: boolean
to ListInput and filter out archived sessions unless explicitly requested,
mirroring the existing guard in listGlobal.

Closes anomalyco#24850

Co-authored-by: yui-soul <yui-soul@users.noreply.github.com>
@shoootyou shoootyou merged commit 19e6bbc into dev Jun 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant