Add thread archiving and settings navigation#1359
Add thread archiving and settings navigation#1359shivamhwp wants to merge 36 commits intopingdotgg:mainfrom
Conversation
- persist archivedAt in orchestration and projection storage - add archive/unarchive commands and thread filtering - split settings UI into dedicated panels and sidebar nav
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
- Switch thread draft cleanup to `clearDraftThread` - Keep thread actions aligned with the renamed store API
- Drop the unused About settings route - Add inline unarchive actions in Archived Threads - Keep thread deletion routing behavior aligned with archive changes
- Propagate disabled context menu items through desktop IPC and fallback UI - Prevent archiving active threads and open a new thread after archive/delete
- Treat threads as running only when the session is active and has a live turn - Prevent archive actions from targeting stale or closed sessions
- trigger a remount when settings are restored - centralize custom model defaults in settings panels
- Preserve the outlet remount behavior - Let settings content lay out vertically
|
sure working on it !! |
- Hide archived threads from the sidebar - Add archive action UX with confirm setting - Backfill archived_at migration and test updates
- Reflow Sidebar.tsx imports and JSX for consistency - Keep behavior unchanged while reducing formatting noise
- add in-memory fallbacks when browser storage is unavailable - include diff line wrapping in settings restore tracking - update tests for the new storage and model selection shape
- Add a settings toggle for wrapping long diff lines - Wire reset behavior to the default preference
- Restore back navigation in settings to the previous page - Add shared settings route helpers and register migration 19
- Fix legacy project events lacking `defaultModelSelection` - Preserve null and non-null model payloads while removing deprecated fields
- Delete obsolete settings route parsing and return-to normalization - Consolidate navigation logic elsewhere during settings overhaul
# Conflicts: # apps/web/src/appSettings.test.ts # apps/web/src/appSettings.ts # apps/web/src/components/Sidebar.tsx # apps/web/src/composerDraftStore.ts # apps/web/src/routes/_chat.settings.tsx
- Group archived threads by project with project favicon headers - Simplify thread rows and keep archive actions accessible
apps/server/src/persistence/Migrations/019_FixProjectDefaultModelSelection.ts
Outdated
Show resolved
Hide resolved
- Filter archived threads before project/thread ordering - Move provider last-checked display into a dedicated component - Add coverage for archived-thread sorting behavior
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
- Render the app sidebar shell once at the root - Simplify chat and settings route layouts
- Show folder icon until project favicon loads - Wrap drainable worker queue and counters in transactions
- Use direct TxRef and TxQueue operations - Replace transaction wrappers with tx helpers - Return queue offers directly from enqueue






What Changed
Added durable thread archiving to the orchestration model with new
thread.archiveandthread.unarchivecommands/events.Persisted archive state in the server projection layer and exposed it through the orchestration snapshot/read model.
Hid archived threads from the main project/thread sidebar and added archive/unarchive flows to the thread management UI.
Overhauled settings into section-based routes under
/settings/*with sidebar navigation forGeneral,Models,Advanced,Archived Threads, andAbout.Added an archived threads settings panel for viewing, opening, unarchiving, and deleting archived threads.
Adjusted the settings UI styling and navigation behavior:
Fixes
Why
Thread archiving needs to be durable and server-backed because thread visibility is currently derived from orchestration state, not local UI state. Making archive status first-class in the event/projection pipeline keeps behavior consistent across refreshes, restarts, and clients.
The settings UI changes were needed to support archived thread management cleanly and to make settings navigation behave more like the rest of the app. Splitting settings into section routes also makes the UX more predictable and easier to extend without keeping everything in one long page.
UI Changes
Archived ThreadsandAboutentries to settings navigation.Settings > Archived Threads.Screen.Recording.2026-03-24.at.4.13.25.PM.mov
Checklist
Note
Medium Risk
Adds new orchestration commands/events and persists
archived_atvia DB migrations, so deploys must run migrations before relying on the updated projection/read model. Also restructures routing/UI for settings and sidebar behavior, which could impact navigation and thread visibility if edge cases are missed.Overview
Adds durable thread archiving end-to-end: new
thread.archive/thread.unarchivecommands with invariants, decider+projector+projection pipeline support, and persistence ofarchived_atinprojection_threads(plus an index) surfaced through snapshot/read-model queries.Updates the web UI to hide archived threads from the main sidebar, adds an inline archive affordance (optional two-step confirmation), and introduces an archived-threads settings panel for unarchiving/deleting; thread archive/delete logic is centralized in a new
useThreadActionshook.Refactors settings into a dedicated
/settings/*route hierarchy with sidebar navigation and wraps routed content in a reusableAppSidebarLayoutso the resizable sidebar persists across settings pages. Context menus (desktop + web fallback) now support adisabledflag.Written by Cursor Bugbot for commit 85dd359. This will update automatically on new commits. Configure here.
Note
Add thread archiving and settings navigation with sidebar refactor
thread.archiveandthread.unarchivecommands through the full stack: contracts, orchestration decider/projector, persistence layer, and UI, witharchivedAtpersisted toprojection_threads.archived_atvia migrations 17 and 18.useThreadActionshook consolidating archive, unarchive, delete, and confirm+delete behaviors (including session cleanup, navigation fallback, and worktree removal) and moves this logic out of the sidebar.confirmThreadArchiveclient setting._chat.tsxinto a newAppSidebarLayoutwrapping all routes; settings sidebar now showsSettingsSidebarNavwith General and Archived threads sections./settings/generaland/settings/archivedroutes (replacing/_chat/settings), with/settingsredirecting to/settings/general.AppSidebarLayout, changing the layout structure for every route.Macroscope summarized 85dd359.