-
Notifications
You must be signed in to change notification settings - Fork 32
🤖 feat: add workspace archiving support #1267
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Replace delete with archive in the sidebar for a safe, reversible operation. Archived workspaces are hidden from the sidebar but visible on the welcome page where they can be restored or permanently deleted. Changes: - Add archived/archivedAt fields to workspace schemas - Add archive/unarchive API endpoints and handlers - Update ProjectSidebar to archive instead of delete - Filter archived workspaces from sidebar display - Add ArchivedWorkspaces component for welcome page - Add custom ArchiveIcon/ArchiveRestoreIcon SVG components - Remove ForceDeleteModal from sidebar (archiving is safe) --- _Generated with `mux` • Model: `anthropic:claude-opus-4-5` • Thinking: `high`_
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| // Filter out archived workspaces from the sidebar | ||
| const allWorkspaces = ( | ||
| sortedWorkspacesByProject.get(projectPath) ?? [] | ||
| ).filter((w) => !w.archived); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Propagate archived flag to metadata or sidebar filter is a no-op
The sidebar now hides archived workspaces via !w.archived, but archive() only updates config and getAllWorkspaceMetadata() (src/node/config.ts) never copies archived/archivedAt into the WorkspaceMetadata it returns. That means w.archived is always undefined in the frontend list API, so archived workspaces still appear in the sidebar and the welcome-page archived list never renders. This breaks the core “archive hides from sidebar” behavior after the commit.
Useful? React with 👍 / 👎.
Extract workspace creation + archived workspaces into a dedicated ProjectPage component that shows when a project is selected but no workspace is active. - Creates ProjectPage.tsx combining ChatInput (creation) with ArchivedWorkspaces - Simplifies App.tsx by delegating to ProjectPage - Removes unused imports and refs from App.tsx
- Filter archived workspaces out of workspaceMetadata map during load - Backend workspace.list now filters by archived status (archivedOnly param) - ProjectPage fetches archived workspaces separately via API - Add onWorkspacesChanged callback to refresh after unarchive/delete - Remove redundant sidebar filter (archived already excluded from map)
Replace delete with archive in the sidebar for a safe, reversible operation.
Archived workspaces are hidden from the sidebar but visible on the welcome
page where they can be restored or permanently deleted.
Changes
archived/archivedAtfields to workspace schemasarchive/unarchiveAPI endpoints and handlersBehavior
Generated with
mux• Model:anthropic:claude-opus-4-5• Thinking:high