Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: coder/vscode-coder
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v1.16.2
Choose a base ref
...
head repository: coder/vscode-coder
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v1.16.3
Choose a head ref
  • 10 commits
  • 133 files changed
  • 3 contributors

Commits on Aug 25, 2026

  1. fix: skip Pixel-flaky menu/spinner/icon/progress-bar motion, fix VSCo…

    …deParity Menu capture (#1085)
    EhabY authored Aug 25, 2026
    Configuration menu
    Copy the full SHA
    3449c8b View commit details
    Browse the repository at this point in the history

Commits on Sep 4, 2026

  1. docs: remove Coder Tasks mention from README (#1104)

    Removes the **Coder Tasks** bullet from the Features list in the README.
    
    > 🤖 This PR was created with the help of Coder Agents, and needs a human
    review. 🧑💻
    matifali authored Sep 4, 2026
    Configuration menu
    Copy the full SHA
    4a8c25b View commit details
    Browse the repository at this point in the history

Commits on Sep 8, 2026

  1. feat(ui): add an accessible VS Code-parity Tree (#1065)

    Adds a controlled, accessible Tree to `@repo/ui` that follows current VS Code workbench behavior and visuals. Every visible node renders as a flat `treeitem` row with declared `aria-level`, `posinset`, and `setsize`, while keyboard navigation keeps DOM focus on the container and names the active row with `aria-activedescendant`. Focus and selection stay independent, as they do natively. The model, input policy, and interaction transitions are pure modules, with `useTreeAdapter` as the only place React state and the DOM meet — keeping rows as memoized presentation so a keystroke only re-renders the rows it touched.
    
    - Flat, data-driven row projection with `aria-activedescendant`
    - Independent focus and selection, including hidden selection behavior
    - Single selection, cleared by Escape before the key returns to the host
    - Arrow, Home, and End navigation, into and out of branches
    - Single-click and double-click expansion modes, twistie isolated from selection
    - Explorer styling, indent guides, row actions, high-contrast support, and Storybook coverage
    EhabY authored Sep 8, 2026
    Configuration menu
    Copy the full SHA
    be8c406 View commit details
    Browse the repository at this point in the history
  2. feat(ui): add tree multi-select, type navigation, paging, and sticky …

    …scroll (#1079)
    
    Second of three stacked PRs (#1065 -> this one -> #1078), adding the interaction VS Code trees support beyond moving and selecting one row at a time. Multi-selection puts a range anchor in the interaction state alongside focus and selection, and sticky scroll needs the pointer policy to know which surface a click originated from, which is why these land together rather than as separate PRs. Multi-select, Ctrl/Cmd+A scoping, type navigation, and paging build on the pure model, policy, and transition layers from #1065, while sticky scroll adds its own pinned region with independent tab-stop behavior.
    
    - Multi-selection with selectedItemIds, anchored ranges, and modifier toggling (multiSelectModifier: "ctrlCmd" or "alt")
    - Ctrl/Cmd+A scoped the way list.selectAll scopes it for a tree: visible descendants of the focused row's parent, widening once fully selected
    - Buffered prefix and fuzzy type navigation, with an 800ms buffer expiry and repeated-key cycling
    - PageUp and PageDown measured against the scroller's viewport
    - Sticky scroll with stickyScrollMaxItemCount and 40% viewport caps, per-level indentation, and its own keyboard tab stop
    - 1,916 lines added / 149 deleted, generalizing single-selection shapes into multi-select-capable discriminated unions
    EhabY authored Sep 8, 2026
    Configuration menu
    Copy the full SHA
    7ad09c3 View commit details
    Browse the repository at this point in the history
  3. feat(ui): add native-style shared hovers for tree rows and actions (#…

    …1078)
    
    Give tree labels and icon buttons VS Code-style tooltips without mounting a tooltip root for every row. A shared tree widget handles placement, timing, and dismissal, while keeping visual stories focused on presentation and regression coverage in unit tests.
    
    - Default tree tooltips to the row’s text value and icon-button tooltips to their accessible label, with custom content and `null` opt-out support.
    - Position label hovers relative to the cursor and action hovers beneath their buttons, matching native placement.
    - Apply the configured hover delay between targets and allow instant transitions within the same row’s action bar.
    - Support Ctrl+K Ctrl+I to show the focused row’s tooltip and dismiss it immediately on subsequent keyboard input or focus loss.
    - Cancel pending and visible tree hovers on pointer presses, including actions that stop propagation, and reject hidden or detached targets before showing.
    - Keep tooltips above sticky tree rows and provide fallback tooltip context for standalone trees and icon buttons.
    - Restore the menu-parity positioning anchor and clean up tree-story pointer state to prevent unintended visual changes.
    - Add concise, parameterized hover regressions and validate affected visual states across all four themes.
    EhabY authored Sep 8, 2026
    Configuration menu
    Copy the full SHA
    d9b0131 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    3618d71 View commit details
    Browse the repository at this point in the history

Commits on Sep 10, 2026

  1. feat(workspaces): IPC API and extension-side data layer for the panel (

    …#1099)
    
    Adds the typed IPC contract and extension-side data layer for the experimental Workspaces panel (behind `coder.experimental.workspacesPanel`), porting the tree views' polling and metadata logic to push state through IPC. No UI yet, the webview just prints the pushed state to verify the data flow.
    
    - Defines the contract in `packages/shared/src/workspaces`: a single `stateChanged` notification carries the whole `WorkspacesState`; `ready`, `openWorkspace`, `viewInDashboard`, `refresh`, `setFilter`, and `watchAgents` flow back from the webview
    - `WorkspaceStore` owns the active filter, its list, selectable filters (minus any the deployment rejected via HTTP 400, until a refresh re-validates), and watched agents — pushes full state only when something changed, skipping the push otherwise
    - Adds `Poller` (`src/util/poller.ts`), running one cancellable task at a time with backoff-capped retries
    - Adds `AgentMetadataTracker` (`src/workspace/agentMetadataTracker.ts`) to manage watched agents and their sockets, with a short linger on release
    - Moves filter definitions into `src/workspace/filters.ts`, shared with the tree views via a `WorkspaceFilter` type (replacing the `WorkspaceQuery` enum)
    - Adds `dispatchWebviewMessage` in `src/webviews/dispatch.ts`, shared routing for the Tasks, Workspaces, and result panels
    - Adds `WorkspacesPanelProvider`, tracking view visibility via `syncVisibility` and pushing store changes to the retained view
    - Relocates `isOwner` to `api-helper.ts`; adds `openWorkspaceFromSidebar`/`openWorkspaceInDashboard` to `Commands`, shared with tree sidebar commands
    - Shares a mock `WebviewView` helper (`testHelpers.createMockWebviewView`) between the Workspaces and Tasks panel tests
    
    Closes DEVEX-622.
    EhabY authored Sep 10, 2026
    Configuration menu
    Copy the full SHA
    a91ae70 View commit details
    Browse the repository at this point in the history

Commits on Sep 14, 2026

  1. feat(ui): add form controls for webview parameter forms (#1101)

    Adds the form-control vocabulary packages/ui needs for the #972 dynamic-parameter webview form: Input (text / number / password with reveal toggle), Textarea, Checkbox, Select (Radix), and Field/Label. Controls render like VS Code's settings editor rather than the dashboard, so richer dashboard form_types map onto this vocabulary (input+mask, textarea, dropdown/radio, checkbox/switch, slider, multi-select, tag-select).
    
    - Input/Textarea are controlled with value + onChange(next); Checkbox uses checked + onChange(next). Select preserves Radix controlled and uncontrolled modes with flat compound exports.
    - Shared text-control.css paints Input, SearchInput, and Textarea from one set of ui-text-control rules; new --ui-checkbox-*, --ui-dropdown-*, and --ui-list-focus-* tokens with high-contrast fallbacks.
    - Fixed select value clipping (trigger line-height) and a duplicate --ui-list-focus-outline declaration that painted a focus outline on highlighted rows in regular themes.
    - Split PasswordInput out of Input and unified overlay row styles between Menu and Select.
    - Behavior covered by per-component unit tests consolidated into forms.test.tsx; Pixel-snapshot stories drive state only, with separate unfocused/Focused variants per control.
    EhabY authored Sep 14, 2026
    Configuration menu
    Copy the full SHA
    41fa903 View commit details
    Browse the repository at this point in the history
  2. feat: default coder.useKeyring to true and harden shared credential h…

    …andling (#1107)
    
    Session tokens now also go to the OS keyring through the Coder CLI on macOS and Windows, so the terminal `coder` shares the extension's session. The extension's own secret storage is unchanged. Sharing the CLI's store made sign-out, missing-binary, and redirect handling explicit, and the CLI store model is now a single `CliAuth` type that every CLI call derives its flags from.
    
    - Default `coder.useKeyring` to `true`; Linux and CLIs below 2.29 keep using a file. Pass `--use-keyring` explicitly and honor `CODER_CONFIG_DIR`.
    - Ask at logout whether to sign the CLI out too when it holds the same token; leave a CLI signed in with another token alone, and always log the extension's own store out to revoke the token.
    - Ask before adopting the CLI's session for a different user.
    - Skip CLI credential steps with one info line when the binary is not downloaded yet; connect stores the token.
    - Pass `--allow-redirects` to CLI 2.38+ so redirected deployment URLs keep working; require CLI 2.32 for CLI token reads.
    - Cache `coder version` per binary and skip CLI reads when settings rule out the CLI's own store; run the logout check under cancellable progress.
    - Show the CLI's error with Open Settings when storing fails, and Show Output when logout cannot remove every credential.
    - Telemetry: `cli_token` replaces `keyring_token`; credential spans carry `store` and `outcome`; `auth.logout` gains `user_dismissed`.
    
    Closes #1106
    EhabY authored Sep 14, 2026
    Configuration menu
    Copy the full SHA
    fdabe5e View commit details
    Browse the repository at this point in the history
  3. chore: group the workspaces overflow menu and release v1.16.3 (#1111)

    Group the workspaces view's "..." menu so Switch Deployment and Logout come first, with Network Check on its own. Bump the version to 1.16.3 and add the changelog section covering the keyring default and the --allow-redirects fix from #1107
    EhabY authored Sep 14, 2026
    Configuration menu
    Copy the full SHA
    96dd908 View commit details
    Browse the repository at this point in the history
Loading