feat(workspaces): prototype the panel components on the UI tree - #1077
Draft
EhabY wants to merge 3 commits into
Draft
feat(workspaces): prototype the panel components on the UI tree#1077EhabY wants to merge 3 commits into
EhabY wants to merge 3 commits into
Conversation
MVP for DEVEX-621: render the Workspaces panel in the experimental coder.workspacesPanel webview using the @repo/ui Tree from #1065 so the row and panel components can be exercised with mock data before the real IPC wiring lands. - WorkspacesPanel with SearchInput live filtering and the Mine / All / Shared WorkspaceFilterSelect (Shared gated by isOwner) - Workspace and agent rows as rich Tree labels with status pills and hover-revealed inline actions - Inline App Statuses and Agent Metadata sections under agents, with a collected-at tooltip on metadata values - Loading / error / empty state panels over the mock data - @repo/ui becomes a webview dependency; the shared Vite config aliases its TypeScript source and package-internal subpath imports This pull request description was generated by Coder Agents.
Keep the native My/Shared/All Workspaces views registered so both implementations stay visible side by side while the prototype is tested.
… matches - Row labels are flex rows; each child shrank and truncated on its own, splitting the ellipsis across words. Only the name span truncates now; owner text and pills keep their natural width. - Search now marks the first case-insensitive match in workspace and agent names, mirroring the native views' highlight.
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.
Prototype for DEVEX-621 on top of the Tree suite (#1065): the Workspaces panel rendered in the experimental
coder.workspacesPaneltest webview with mock data, so the row/panel components can be exercised before the real IPC wiring lands.What's in the MVP
WorkspacesPanel— toolbar + tree + state panels; owns the filter/search state. No IPC yet.WorkspaceFilterSelect— Mine / All / Shared radio menu on a secondaryButton; Shared gated byisOwner.Treelabels with statusStatusPills and hover-revealed inline actions (open/dashboard/settings; terminal/logs).Tooltip.SearchInput, plusLoadingState/ErrorState/EmptyStatebranches.mockData.ts(local fixtures;@repo/mocksis lint-restricted from runtime code).Notes
@repo/uibecomes a webview dependency — this webview is its first production bundler. The shared Vite config aliases its TypeScript source and#cx/#codiconssubpath imports;index.cssimports the UI codicon stylesheet and tokens (theme-matched via--vscode-*).useWorkspaceData/IPC, Storybook stories, welcome/auth states, keyboard-nav acceptance tests — all belong to the full DEVEX-621 implementation.Validation
pnpm typecheck,pnpm lint,pnpm format:checkpnpm build(all webviews + extension)pnpm test:webview— 46 files, 388 tests passed (incl. newWorkspacesPanel.test.tsx)pnpm test:extension— 119 files, 2098 tests passedImplementation plan
Decisions (confirmed)
feat/ui-tree-suite(PR feat(ui): add accessible VS Code-parity Tree #1065).packages/workspaces(coder.workspacesPanel), whoseApp.tsxwas aTODOplaceholder.feat/ui-tree-suite.Changes
Wiring
packages/workspaces: add@repo/uidependency; add@repo/uitsconfig path;index.cssimports codicon/tokens CSS;index.tsxwraps inTooltipProvider.packages/webview-shared/createWebviewConfig.ts: alias@repo/uisource and its package-internal subpath imports for bundlers.vitest.config.mts+test/tsconfig.json:@repo/workspacespath for tests.Prototype components (
packages/workspaces/src/)mockData.ts— local SDK-typed fixtures (own/shared/other-owner workspaces, agents with apps/statuses/metadata).WorkspacesPanel.tsx— top level; filter/search state, mock→TreeNode[]mapping, toolbar +Tree(sticky scroll) + state panels.WorkspaceFilterSelect.tsx— Mine / All / Shared radio menu.rows.tsx—workspaceNode/agentNode/appStatusSection/metadataSectionbuilders with rich labels, pills, and hover actions.WorkspacesPanel.css— toolbar/tree layout.Tests
test/webview/workspaces/WorkspacesPanel.test.tsx— tree rendering, filter select, live search, empty/loading/error states, inline sections, hover actions.Not in scope (MVP)
useWorkspaceData/ handler wiring.This pull request was created by Coder Agents on behalf of @EhabY.