feat(workspace): Workspace sidebar + remove catalog + Chat button (#457, #215) - #495
Merged
Merged
Conversation
Purge the legacy UX3 session catalog UI that predates the vault-backed CatalogStore (Q94/Q95, packages/amico-run). The CATALOG activity-bar tab (SessionCatalogTree → amicode.catalog, amicode.catalog.save/refresh/remove, catalogCard webview + catalogcard component) is superseded by the mount stack + pack interface (WS1 #391) and is also slated for removal in opencode#215 AC7. - package.json: drop amicode.catalog view + catalog commands/menus - trees.ts: delete SessionCatalogTree/CATALOG_KEY, keep armonia placeholder (will be replaced by Workspace tree per 215) - extension.ts: remove registerCatalogCard + catalog save/refresh/remove wiring, simplify amicode.savePulse to file-only Save dialog, drop demo promote-to-catalog prompt, remove runs_manager promote-to- catalog prompt (now info-only) - esbuild.config.mjs: drop catalog_card_webview bundle - delete catalog_card_shell/webview, media catalogcard, test suite Pulse save stays via Save to file… → savePulseTo; vault CatalogStore (packages/amico-run) untouched. Closes #457
Add WorkspaceTreeProvider — renders all workspace folders as collapsible roots, expands recursively via vscode.workspace.fs.readDirectory(), respects files.exclude, shows theme icons via resourceUri, opens files on click, context menus (Copy Path, Reveal), and live-updates via FileSystemWatcher. Replaces amicode.armonia placeholder; Catalog already removed in #457. package.json: rename amicode.armonia → amicode.workspace ("Workspace"), keep runInspector, update activationEvents onView:workspace, add view/item/context for workspace files. Follows opencode#215 decision surface: Location.Ref.directories carries all roots, no external-directory prompts, instructions stacked per dir. Pairs with opencode PR #219 (engine: schema + boundary + env + instruction multi-root + DB).
Add New File/Folder, Rename, Delete, Copy Path/Relative, Reveal, Open in Terminal to amicode.workspace viewItem context. Ensures AC6 full context-menu coverage; Run Inspector stays as separate webview (amicode.runInspector) not a directory in the tree.
…rom Workspace - Add 'Chat with Amico' as first tree item with custom yellow SVG icon that mutes (gray) when a chat tab is open - Register custom workspace commands (newFile, newFolder, rename, delete, copyPath, copyRelativePath, revealInOS, openInTerminal, openToSide, removeFromWorkspace, addFolder) since built-in explorer.* commands don't fire in custom tree views - Remove stale amicode.runInspector webview declaration (provider was deleted in PR #351, only the package.json entry remained) - Add viewsWelcome for empty workspace state - Listen to onDidChangeWorkspaceFolders to keep tree in sync - Add ChatPanel.onLiveChange callback for cross-component state tracking - Fix credential_scanner e2e test: guard opencode-provider assertion (machine may have creds under different provider names) - Add comprehensive test suite for workspace tree and context-menu commands (24 tests covering tree rendering, all commands, muted state)
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (2)
📒 Files selected for processing (14)
📝 WalkthroughWalkthroughThe extension removes the catalog UI and catalog-card flow. It adds a workspace tree with file and folder operations, updates activation and context-menu contributions, tracks chat panel activity, and adjusts pulse-save behavior and tests. ChangesWorkspace sidebar migration
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant User
participant WorkspaceTreeView
participant WorkspaceTreeProvider
participant VSCodeWorkspace
User->>WorkspaceTreeView: open workspace view
WorkspaceTreeView->>WorkspaceTreeProvider: request roots and children
WorkspaceTreeProvider->>VSCodeWorkspace: read workspace folders and directory entries
VSCodeWorkspace-->>WorkspaceTreeProvider: return filesystem entries
WorkspaceTreeProvider-->>WorkspaceTreeView: render workspace items
User->>WorkspaceTreeView: select file or folder command
WorkspaceTreeView->>VSCodeWorkspace: create, rename, delete, copy, or open item
Suggested reviewers: ✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Consolidates PRs #458 (remove catalog) and #459 (workspace sidebar), rebased onto main, with 6 bug fixes and new features.
What changed
Remove catalog (#457)
amicode.armonia+amicode.catalogview declarationsWorkspace sidebar (opencode#215 AC6)
WorkspaceTreeProviderrenders workspace folders, respects files.exclude, hides .gitviewsWelcomefor empty workspace stateamicode.runInspectordeclaration (provider deleted in Inspectors → Work Column: retire the bottom panel #351)Chat with Amico button
ChatPanel.onLiveChangecallback for cross-component state trackingBug fixes (from Raghav's original code)
.startsWith('.git')filter was hiding .gitignore/.github — now only hides the .git directory itselfamicode.workspace.*commandsonDidChangeWorkspaceFolders— removing a folder left the sidebar staleTests
Closes #457. Part of opencode#215.
Summary by CodeRabbit
New Features
Changes