Add thread archiving and settings navigation#1359
Add thread archiving and settings navigation#1359shivamhwp wants to merge 32 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
- add migration for `projection_threads(project_id, archived_at)` - reuse shared storage resolution for web persistence - simplify terminal state storage handling
- Centralize post-delete navigation in `useThreadActions` - Keep settings redirect from adding an extra history entry
- Route git prompts through Claude CLI alongside Codex - Thread model selection and fast-mode/reasoning settings through UI and server - Add coverage for CLI wiring and output validation
- 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
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
- Filter archived threads before project/thread ordering - Move provider last-checked display into a dedicated component - Add coverage for archived-thread sorting behavior






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 plus DB migrations to persist
archivedAt, so mistakes could affect thread visibility/state replay and existing projection data. UI/routing refactors and new shared thread actions also change navigation and destructive flows (archive/delete).Overview
Adds durable thread archiving end-to-end: new
thread.archive/thread.unarchivecommands/events with invariants, projector/projection pipeline support, snapshot/query plumbing, andprojection_threads.archived_atpersistence (with new migrations + index).Updates the web UI to hide archived threads from the main sidebar, add an inline archive action (optionally requiring confirmation via a migrated
confirmThreadArchivesetting), and introduce a new Settings sectioned experience with/settings/generaland/settings/archived(including an archived-threads management panel). Thread archive/unarchive/delete behavior is centralized into a newuseThreadActionshook, and context menus now support disabled items in both Electron and the web fallback.Written by Cursor Bugbot for commit 2f539e9. This will update automatically on new commits. Configure here.
Note
Add thread archiving and settings navigation with archived threads panel
thread.archiveandthread.unarchivecommands/events through the full stack: contracts, decider, projector, projection pipeline, and persistence layer (migrations 17–18 addarchived_atcolumn and index toprojection_threads).confirmThreadArchivesetting); archived threads are hidden from the sidebar./settings/generaland/settings/archivedroutes;/settingsnow redirects to/settings/general. The archived threads panel lets users view and restore archived threads.useThreadActionshook, removing that responsibility fromSidebar.AppSidebarLayoutto consolidate sidebar rendering and desktopopen-settingsmenu action handling, replacing duplicated layout code in the chat route./_chat/settingsto/settings/*with child routes.Macroscope summarized 2f539e9.