Refine archived settings panel UX#3552
Conversation
- Group archived threads by project with collapsible sections - Add sortable archived/created columns and inline row actions - Support direct delete and bulk project actions with confirmation
|
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 |
ApprovabilityVerdict: Needs human review This PR introduces new user-facing features for archived thread management including search/filter, sorting, and bulk unarchive/delete actions. While well-structured and tested, new feature scope warrants human review. You can customize Macroscope's approvability policy. Learn more. |
- Replace inline project-level unarchive/delete buttons with a right-click menu - Keep the existing confirmation flow for bulk archived-thread actions
- Add case-insensitive search across archived thread titles - Rank exact phrase, full-term, and partial matches; auto-expand matching projects - Update archive empty states and preserve project actions under search
- Use filtered archive rows for project actions during search
- Use the full project archive list for bulk context actions - Keep search filtering from narrowing project-wide confirmations
- Limit project archive actions to filtered visible threads - Add archive search ranking tests
Selective archive-settings portion of main commit 1c6f66b. Keeps the branch-local extracted search-ranking helper and tests while preserving the project header interaction cleanup.
- Move archived search and grouping into logic helpers - Share bulk action and sort helpers with the panel - Add tests for grouping, sorting, and bulk action concurrency
- Wait for active bulk-action workers before rethrowing - Assert archived project bulk actions cover queued threads
- Aggregate archived bulk action errors - Index archived threads by project - Strengthen archived settings logic tests
- Skip local dialog confirmation when no local API is available
- Encode environment and project ids as tuple keys - Cover colon-containing ids in archive grouping tests
- Reuse canonical archive group keys in panel state - Cover colon-containing project key collisions in tests
- Split archived thread UI into its own component - Re-export the panel from the settings entrypoint
- Keep archived delete confirmations when browser APIs are used - Add an explicit project actions menu button
- Add the project action spacer column to archived thread rows
- Restore no-local-api confirmation behavior - Share interrupted failure handling for archive menus - Surface multiple archived bulk action errors
- Require confirmation when local API is unavailable
Summary
This updates the Archive settings panel from a flat settings-row list into a compact project-grouped archive browser. Archived conversations are grouped by project, projects can be expanded or collapsed, the list can be searched by title, and visible rows can be sorted by archived or created time.
Archive management actions are available directly in the archive view, including per-thread unarchive/delete actions and project-level bulk unarchive/delete actions. Bulk actions are scoped to the currently visible matching rows during search, so filtered archive management does not affect hidden conversations.
Review follow-up commits keep archived delete confirmation behavior aligned with the existing
confirmThreadDeletepreference, skip archived confirmation dialogs when no local API is available, keep search-forced project expansion from mutating saved collapse state, make partial bulk-action failure toasts account for interrupted operations, surface unexpected bulk-action exceptions as incomplete operations while refreshing the archive list, keep archive project grouping plus UI keys collision-free when environment or project ids contain colons, fetch archived snapshots for every configured environment rather than only environments with active projects, and label filtered bulk context-menu actions as matching-row actions.The latest upstream merge split more settings surfaces into dedicated modules, so this branch now keeps the Archive settings UI in
apps/web/src/components/settings/ArchiveSettings.tsx.SettingsPanels.tsxstill re-exportsArchivedThreadsPanelfor the existing route, and the archive grouping/search/sort/bulk-action logic remains inSettingsPanels.logic.ts.What Changed
confirmThreadDelete, plus shared toast reporting for action failures.ArchiveSettings.tsxwhile preserving the existingArchivedThreadsPanelroute export throughSettingsPanels.tsx.Why
The previous archive settings view did not scale well for users with many archived conversations because every archived thread appeared as a full settings row. Grouping by project, ranking search results, collapsing inactive groups, exposing sortable dates, and keeping actions close to each row makes the archive easier to scan and manage without leaving the settings surface.
Validation
pnpm exec vp checkpassed with exit 0. The command reported existing lint warnings outside the touched archive settings files.pnpm exec vp run typecheckpassed with exit 0.pnpm exec vp test run apps/web/src/components/settings/SettingsPanels.logic.test.tspassed with exit 0.git diff --checkpassed with exit 0 after theArchiveSettings.tsxextraction.0d07f3a14and resolved.10632e199.26eea31c7.pnpm exec vp test run apps/web/src/components/settings/SettingsPanels.logic.test.tspassed with exit 0 after the environment-list fix.pnpm exec vp run typecheckpassed with exit 0 after the environment-list fix.pnpm exec vp checkpassed with exit 0 after the environment-list fix, with existing lint warnings outside the touched archive settings file.git diff --checkpassed with exit 0 after the environment-list fix.pnpm exec vp test run apps/web/src/components/settings/SettingsPanels.logic.test.ts,pnpm exec vp run typecheck,pnpm exec vp check, andgit diff --checkpassed with exit 0 after the filtered context-menu label fix.Proof
Note
Medium Risk
Bulk and per-thread delete permanently clear conversation history; behavior is gated by confirmations and existing thread actions, but mistakes or partial bulk failures are user-visible data operations.
Overview
Replaces the flat archived-threads settings list with a project-grouped archive browser in
ArchiveSettings.tsx, and wires the/settings/archivedroute to that module instead ofSettingsPanels.tsx.The new UI adds title search (shared ranking helpers), sortable archived/created columns, expand/collapse per project, and inline/context-menu actions for unarchive and delete. Project-level bulk unarchive/delete runs on all threads in a group or only search-matching rows, with confirmations that honor
confirmThreadDelete, local-API/window.confirmfallbacks, and toasts for partial or unexpected failures.SettingsPanels.logic.tsnow owns grouping (JSON tuple keys so environment/project ids with colons stay distinct), search scoring, sort toggles, and a concurrency-limited bulk action runner; tests cover these behaviors. Archived snapshots are loaded for every configured environment viauseEnvironments(), not only environments that still have active projects.Reviewed by Cursor Bugbot for commit 26eea31. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Refine archived threads settings panel with search, sort, and bulk actions
ArchivedThreadsPanelfrom SettingsPanels.tsx into a new ArchiveSettings.tsx with significantly expanded functionality.archivedThreadSearchScore, with results grouped and ranked by relevance per project.compareArchivedThreadsandnextArchivedThreadSortStateto control ordering.runArchivedProjectThreadActionswithAggregateErroron failures.Macroscope summarized 26eea31.