[RC] Changelog
Note
This is a release candidate. It is not intended for production use. Please test and report issues.
BREAKING CHANGES
- chore!: remove members' ability to read their own interceptions; rationalize RBAC requirements (#23320, dba9f68) (@dannykopping)
- fix(cli)!:
coder groups list -o jsonreturns empty values (#22923, a46336c) (@zedkipp)
Features
- Add AI Bridge request logs model filter (#22230, d2787df) (@jakehwll)
- Migrate from
<GlobalSnackbar />tosonner(#22258, 15a2bab) (@jakehwll) - Add animation to copy button
<Check />s (#22319, dbc0daa) (@jakehwll) - Remove mui from
<AppearanceSettingsPage />(#22368, c6638f5) (@jakehwll) - Implement file icons in
<TemplateFiles />(#22369, d204e6f) (@jakehwll) - Implement toast on failure to export template (#22376, 7a3a228) (@jakehwll)
- Implement
invalidateQueriesinstead oflocation.reload()(#22377, 39093db) (@jakehwll) - Update aibride library to 1.0.7 (#22381, 2b0535b) (@pawbana)
- Implement error message on failure to popup (#22380, 358f521) (@jakehwll)
- Add permission check around
<AppearanceSettingsPage />(#22383, 0bafc05) (@jakehwll) - Add Mux icon to client column in AI Bridge request log page (#22386, 6c09779) (@pawbana)
- Add experimental agents support (#22290, edee917) (@kylecarbs)
- Add pagination and popularity sorting to chattool list_templates (#22398, 59cec5b) (@kylecarbs)
- Include OS and working directory in workspace agent prompt injection (#22399, 344d11f) (@kylecarbs)
- Add line-based read_file tool with safety limits (#22400, b65c076) (@kylecarbs)
- feat(chats): archive chats instead of hard-deleting them (#22406, 1208344) (@kylecarbs)
- Dashboard: Add keyboard shortcuts to agents page (#22417, 5fb644a) (@kylecarbs)
- Add diff_status_change event to /chats/watch pubsub stream (#22419, 4b5ec8a) (@kylecarbs)
- feat(chatd): add LLM stream retry with exponential backoff (#22418, 2bdacae) (@kylecarbs)
- Require typed confirmation for license removal (#22082, f95ae63) (@jaaydenh)
- feat(chatd): persist last_error on chats table (#22436, 0ad2f9e) (@kylecarbs)
- Agent: Add process execution API and rewrite execute tool (#22416, a621c3c) (@kylecarbs)
- Agent: Add fuzzy whitespace matching to edit_files tool (#22446, 5945feb) (@kylecarbs)
- Dashboard: Replace Agent chat textarea with Lexical editor (#22449, 897f178) (@kylecarbs)
- Agent: Add plocate-lite file finder package (#22453, 68e4155) (@kylecarbs)
- Agent: Add desktop notifications via VAPID web push (#22454, c9ed1e1) (@kylecarbs)
- feat(rbac): add AsChatd subject to replace AsSystemRestricted in chatd (#22487, a62f2fb) (@johnstcn)
- Dashboard: Add smooth streaming text engine for LLM responses (#22503, c4a4ad6) (@kylecarbs)
- Add confirmation dialog when archiving chat with workspace (#22524, b8a74a4) (@kylecarbs)
- Dashboard: Add Open Terminal and Copy SSH Command to agent chat TopBar (#22529, 3c4a416) (@johnstcn)
- Implement new default monospace font
Geist Mono(#22081, 8aebd73) (@jakehwll) <RequestLogsPage />not enabled message (#22546, 0232860) (@jakehwll)- Dashboard: Add collapsible archived agents section to sidebar (#22551, cdb7145) (@DanielleMaywood)
- Add TagV2 BoundaryMessage envelope protocol (#22520, 66954ae) (@zedkipp)
- Validate prebuild presets using dynamic parameter validation (#21858, bca638a) (@Emyrk)
- Dashboard: Restyle agents sidebar New Agent button (#22555, c05fbfe) (@kylecarbs)
- Store tool call IDs to determine interception lineage (#22246, 1b08bc7) (@dannykopping)
- Store tool call IDs to determine interception lineage (#22246, 9b5573d) (@dannykopping)
- Add Prometheus metrics for boundary log drop reporting (#22521, 5b7377c) (@zedkipp)
- Refactor the agents admin UI layout (#22567, 810b509) (@kylecarbs)
- SDK: Generate chat model provider options schema from Go structs (#22568, f758443) (@kylecarbs)
- Agent: Add unarchive agent support (#22579, 90f686d) (@DanielleMaywood)
- feat(chatd): use lightweight model candidates for title generation (#22605, ec89abd) (@kylecarbs)
- Dashboard: Add completion chime for agent tasks (#22608, 474e80b) (@DanielleMaywood)
- Dashboard: Improve agent chat header design (#22621, e4bdfbe) (@kylecarbs)
- Dashboard: Add specialized renderer for process_output tool in agent chats (#22628, 0ccfc4d) (@kylecarbs)
- Move
<UserAutocomplete />to<Combobox />(#22590, 3fca20d) (@jakehwll) - Defer api key generation with mutation (#22318, f609de8) (@jakehwll)
- Add TLS listener support to aibridgeproxyd (#22411, 21c91ce) (@ssncferreira)
- Dashboard: Searchable workspace selector in agent chat input (#22656, b0e1040) (@DanielleMaywood)
- Dashboard: Polish right panel tabs, diff stats, and file headers (#22636, 76076de) (@kylecarbs)
- Dashboard: Add PWA manifest and mobile meta tags for agents page (#22650, f1b3eef) (@kylecarbs)
- feat(chatd): add start_workspace tool to agent flow (#22646, 6520159) (@kylecarbs)
- feat(chatd): navigate to specific chat on push notification click (#22668, 0ec27e3) (@DanielleMaywood)
- Add
<ErrorAlert />debug details (#22462, dba6886) (@jakehwll) - Add workspace acls to task rbac objects (#22311, 56bdea7) (@aslilac)
- Add Prometheus collector for DERP server expvar metrics (#22583, 6c44de9) (@sreya)
- Agents git watch backend (#22565, 48ab492) (@hugodutka)
- Dashboard: Suppress push notifications when agents page is visible (#22667, 957fb55) (@DanielleMaywood)
- feat(chatd): add tag-based dedup to push notifications (#22669, ffb47ce) (@DanielleMaywood)
- Allow sending follow-up prompts to a task when resuming (#22302, 4e781c9) (@SasSwart)
- Track client sessions (#22470, 13e3df6) (@dannykopping)
- feat(namesgenerator): expand auto-generated name digit suffix to 00-99 (#22665, c0ef354) (@kacpersaw)
- Agents git watch frontend (#22570, 6665944) (@hugodutka)
- Add file/image attachment support to chat input (#22604, a104d60) (@mafredri)
- Make
coder task sendresume paused tasks (#22203, 4cf8d44) (@DanielleMaywood) - Dashboard: Add diff line reference and annotation system for agents chat (#22697, 2ad0e74) (@kylecarbs)
- Dashboard: Rewrite localhost URLs in agent chat to port-forward links (#22891, b898e45) (@kylecarbs)
- Server: Add pagination to chat list endpoint (#22887, e18ce50) (@kylecarbs)
- feat(chatd): use last assistant message as push notification summary (#22671, 6489d6f) (@DanielleMaywood)
- feat(chatd): add user-level custom prompt for agent chats (#22896, b6d1a11) (@kylecarbs)
- Add codersdk constructor that uses an independent transport (#22282, c2534c1) (@cstyan)
- Add workspace sharing buttons to tasks (#22729, cbe46c8) (@aslilac)
- Server: Refactors github pr sync functionality (#22715, bc27274) (@johnstcn)
- Agent: Unify settings dialog for users and admins (#22914, e7f8dfb) (@kylecarbs)
- feat(db): add created_by column to chat_messages table (#22940, bb59477) (@kylecarbs)
- Server: Add q search parameter to chats endpoint (#22913, 196c670) (@kylecarbs)
- Agent: Add PR title, draft, and status icons to sidebar (#22952, 7a83d82) (@kylecarbs)
- Backend support for creating and storing service accounts (#22698, e5c19d0) (@geokat)
- feat(scripts): add develop.sh port flag (#22961, 5119874) (@ibetitsmike)
- feat(chatd): add provider-native web search tools to chats (#22909, 57dc23f) (@kylecarbs)
- Agent: Replace Show More with infinite scroll and add archived filter dropdown (#22960, 4d7eb2a) (@kylecarbs)
- Agent: Add chat model pricing metadata (#22959, fba00a6) (@ibetitsmike)
- feat(scripts/githooks): restore pre-push hook with allowlist (#22980, 660a3da) (@mafredri)
- feat(chatd): set User-Agent on all outgoing LLM requests (#22965, 7777072) (@matifali)
- Dashboard: Add voice-to-text input to agent chat (#23022, 0e7e0a9) (@kylecarbs)
- Move chat messages to dedicated /chats/{id}/messages endpoint (#23021, 690e3a8) (@kylecarbs)
- feat(dogfood): clean up named Docker volumes and Go build cache cron (#23026, 836a211) (@mafredri)
- Server: Add consolidated /debug/profile endpoint for pprof collection (#22892, df2360f) (@kacpersaw)
- Server: Unify chat storage on SDK parts and fix file-reference rendering (#22958, bdbcd34) (@mafredri)
- Add chat cost analytics backend (#23036, c3b6284) (@ibetitsmike)
- Chat desktop backend (#23005, 8452739) (@hugodutka)
- Dashboard: Add chat cost analytics frontend (#23037, eacabd8) (@ibetitsmike)
- Chat desktop frontend (#23006, 8550973) (@hugodutka)
- feat(gitsync): enrich PR status with author, base branch, review info (#23038, c5b8611) (@kylecarbs)
- Add WatchAllWorkspaceBuilds endpoint for autostart scaletests (#22057, 36665e1) (@cstyan)
- Dashboard: Improve cost analytics view (#23069, 969066b) (@ibetitsmike)
- Add head_branch to pull request diff status (#23076, 0d3e39a) (@kylecarbs)
- Dashboard: Improve DERP health page readability (#22984, ae8bed4) (@johnstcn)
- Dashboard: Render computer tool screenshots as images in chat UI (#23074, d630646) (@ThomasK33)
- Paginate chat messages endpoint with cursor-based infinite scroll (#23083, 741af05) (@kylecarbs)
- Add VS Code iframe embed auth bootstrap (#23060, c188414) (@ThomasK33)
- Dashboard: Add Early Access notice below agents chat input (#23130, b2d8b67) (@mattvollmer)
- Track ai seat usage (#22682, abf59ee) (@Emyrk)
- CLI: Add --no-wait flag to coder create (#22867, 3f76f31) (@zedkipp)
- Render file references inline in user messages (#23131, 7b0aa31) (@kylecarbs)
- Add agent chat spend limiting (backend) (#23071, 1031da9) (@ibetitsmike)
- Dashboard: Add chat spend limit UI (#23072, 7cca2b6) (@ibetitsmike)
- Record model thoughts (#22676, 365de3e) (@dannykopping)
- Add starter template option and Coder Desktop URLs to scripts/develop (#23149, a797a49) (@mafredri)
- feat(dogfood): add the portabledesktop module (#23165, b7e0f42) (@hugodutka)
- Dashboard: Move Settings and Analytics from dialogs to sidebar sub-navigation (#23126, 635c5d5) (@DanielleMaywood)
- Render file references inline in user messages (#23174, 497e1e6) (@kylecarbs)
- Dashboard: Improve edit-message UX with dedicated button and confirmation (#23172, 41d12b8) (@DanielleMaywood)
- Add service_accounts workspace sharing mode (#23093, 91ec0f1) (@geokat)
- Expose PromptCacheKey in OpenAI model config form (#23185, f9c265c) (@ibetitsmike)
- Add support for creating service accounts (#23140, 49e5547) (@aslilac)
- Add --service-account to cli user creation (#23186, 903cfb1) (@code-asher)
- Virtual desktop settings toggle backend (#23171, 2cf47ec) (@hugodutka)
- Virtual desktop settings toggle frontend (#23173, 817fb4e) (@hugodutka)
- Expose MCP tool annotations for tool grouping (#23195, bd5b62c) (@matifali)
- Dashboard: Show PR link in TopBar header (#23178, 62144d2) (@ibetitsmike)
- Documentation: Update aibridge docs for codex to use model_provider (#23199, d697213) (@35C4n0r)
- Dashboard: Include chatId in editor deep links (#23214, 20ac96e) (@ThomasK33)
- Configure acquire chat batch size (#23196, fc3508d) (@ethanndickson)
- Add workspace awareness system message on chat creation (#23213, b83b93e) (@kylecarbs)
- Add merge_strategy support for coder_env resources (#23107, 1e07ec4) (@kacpersaw)
- Track step runtime_ms on chat messages (#23219, 4dd8531) (@kylecarbs)
- Add PR insights analytics dashboard (#23215, d6fef96) (@kylecarbs)
- Replace InsertChatMessage with batch InsertChatMessages (#23220, 483adc5) (@kylecarbs)
- Add deleted flag to chat messages for soft-delete (#23223, 1f0d896) (@kylecarbs)
- Bump workspace last_used_at on chat heartbeat (#23205, 14ed3e3) (@johnstcn)
- Add endpoint and CLI for users to view their own OIDC claims (#23053, be1c06d) (@johnstcn)
- Dashboard: Add scroll-to-bottom button to agent chat (#23212, 0339c08) (@DanielleMaywood)
- Add MCP server configuration backend for chats (#23227, d8ff67f) (@kylecarbs)
- Add token-to-cookie endpoint for embedded chat WebSocket auth (#23280, 83809bb) (@ThomasK33)
- Add confirmation dialog to archive & delete workspace action (#23150, c107d2b) (@johnstcn)
- Dashboard: Add @storybook/addon-vitest for local story testing (#23303, 3ef13f5) (@mafredri)
- Dashboard: Add MCP server admin UI (#23301, 7db77bb) (@kylecarbs)
- Dashboard: Add usage indicator to agents sidebar (#23307, 4da273b) (@kylecarbs)
- Block CONNECT tunnels to private/reserved IP ranges (#23109, 139594a) (@ssncferreira)
- Make process output blocking-capable (#23312, 41e15ae) (@mafredri)
- Smart file-based target selection for scripts/githooks (#23358, 23542cb) (@mafredri)
- Display the addon license UI (#22948, 6f244cd) (@jaaydenh)
- Server: Connect to external MCP servers for chat tool invocation (#23333, e388a88) (@kylecarbs)
- Add global chat workspace TTL setting (#23265, ff8dcca) (@johnstcn)
- Dashboard: Opt AgentsPage and ai-elements into React Compiler (#23371, 599f21a) (@DanielleMaywood)
- Add new group members endpoint with filtering and pagination (#23067, 24ab216) (@code-asher)
- Add inline editing of usage limit overrides (#23380, b8a5344) (@ibetitsmike)
- Dashboard: Add date filtering to settings usage page (#23381, cf24c59) (@ibetitsmike)
- Add filtering and pagination to group members page (#23392, 4b70751) (@code-asher)
- Add filtering to org members (#23334, 47daca6) (@code-asher)
- Add user:read scope (#23348, b763b72) (@keremkacel)
- Pass session token as query param on agent chat WebSockets (#23405, ea37f1f) (@ThomasK33)
- Dashboard: Enable intra-file virtualization in DiffViewer (#23363, 470e6c7) (@DanielleMaywood)
- Add page for editing users (#23328, 4c9e37b) (@aslilac)
- Allow restricting sharing to service accounts (#23327, d2afda8) (@aslilac)
- Auto-discover OAuth2 config for MCP servers via RFC 7591 DCR (#23406, acbfb90) (@kylecarbs)
- Per-user per-model chat compaction threshold overrides (#23412, 82f965a) (@ibetitsmike)
- Session list API (#23202, 43a1af3) (@dannykopping)
- Add bar charts for premium and AI governance add-on license usage (#23442, 245ce91) (@jaaydenh)
- Dashboard: Add MCP server picker to agent chat UI (#23470, f62f2ff) (@kylecarbs)
- Add propose_plan tool for markdown plan proposals (#23452, 19e8662) (@ibetitsmike)
- Convert large pasted text into file attachments (#23379, 5eb0981) (@ibetitsmike)
- feat(.agents/skills): add deep-review skill for multi-reviewer code review (#23500, f71e897) (@mafredri)
- Add filtering by service account (#23468, 81188b9) (@code-asher)
Bug fixes
- Log WARN on ErrConnectionClosed in tailnet.Controller.Run (#22293, 43b8df8) (@sreya)
- Server: Add organization_name label to insights Prometheus metrics (#22296, 4057363) (@f0ssel)
- Add
getValidationErrorMessage()togetErrorDetail()(#22229, 1dec1ec) (@jakehwll) - Remove mui components from
<TagInput/>(#22234, 98587cf) (@jakehwll) - Remove mui components from
<LicenseCard />(#22236, b0b9ea6) (@jakehwll) - Move baseline css from mui to
index.css(#22238, 1c4d8fa) (@jakehwll) - Use time.Equal() for external auth token expiry comparison (#22295, 2bac4eb) (@zedkipp)
- Server: Bump taskname default model from Claude 3.5 Haiku to Claude Haiku 4.5 (#22304, d140920) (@app/blinkagent)
- Add provision/tags to prebuilds scenario (#22294, 4e365e5) (@sreya)
- Save empty template files (#22202, 77006f2) (@jeremyruppel)
- Dashboard: Scope TemplateSettingsPage validation error assertion to form (#22308, 4f1ddee) (@zedkipp)
- Avoid derp-related panic during wsproxy registration (#22322, bef7eb9) (@deansheather)
- CLI: Reuse multi-select parameter values on workspace update (#22261, ab28ecd) (@kacpersaw)
- Resolve borders on
<WorkspaceProxyRow />(#22345, 54a7ec4) (@jakehwll) - Migrate
<TemplatePermissionsPageView />out of mui (#22363, 9cce241) (@jakehwll) - Center
view raw logsbutton in<WorkspaceBuildPage />(#22362, fb154cb) (@jakehwll) - Marshal
convertLicenses()into a[]instead ofnil(#22366, a51eb40) (@jakehwll) - Dashboard: Use cross-browser compatible assertions in MonacoEditor story (#22337, e161083) (@jeremyruppel)
- Resolve double border on
<WorkspaceBuildPageView />(#22374, 6364cfa) (@jakehwll) - Restore dividing line in
<BuildParametersPopover />(#22373, 173299f) (@jakehwll) - Dashboard: Await dialog close after publish to prevent act() warnings (#22334, dea451d) (@jeremyruppel)
- Mark presets as validation_failed to prevent endless prebuild retries (#22085, ca234f3) (@ssncferreira)
- Restore emptystate to
<OrganizationProvisionerKeysPageView />(#22372, 12372c4) (@jakehwll) - Resolve stability in
scrollbar-gutter: stable(#22387, 6f3385d) (@jakehwll) - Resolve entitlement check on ai bridge settings/view (#22385, bcb5b43) (@jakehwll)
- fix(stringutil): operate on runes instead of bytes in Truncate (#22388, 0cfa037) (@johnstcn)
- Auto-scroll to bottom when switching chats on agents page (#22397, 7043e77) (@kylecarbs)
- Update document title when switching agents on the agents page (#22401, d4cfb24) (@kylecarbs)
- Re-read chat before publishing status event to preserve AI title (#22402, ff687aa) (@kylecarbs)
- Respect light/dark theme in agents FilesChangedPanel diff viewer (#22403, 7e8559a) (@DanielleMaywood)
- fix(chatd): recover stale chats after coderd redeployment (#22405, f509c84) (@kylecarbs)
- Server: Allow non-admin users to list chat model configs (#22407, bb97ba7) (@kylecarbs)
- Dashboard: Prevent race conditions when switching chats on agents page (#22404, 1a87e74) (@kylecarbs)
- fix(e2e): fix flaky verifyParameters assertion in updateWorkspace test (#22413, 8bb80b0) (@app/blinkagent)
- fix(chatd): publish streaming message_part events during compaction (#22410, 360df1d) (@kylecarbs)
- Server: Refresh OAuth token before GitHub API calls in chat diff (#22415, 52dad56) (@kylecarbs)
- Dashboard: Optimistic message on agent chat submit (#22422, b0c6a6d) (@kylecarbs)
- Add sticky headers to the git diff (#22425, 256284b) (@kylecarbs)
- Dashboard: Fix double-tap required to open chat on mobile (#22430, 60793aa) (@mattvollmer)
- Dashboard: Wrap long lines in agents diff panel (#22414, 31ad3cd) (@DanielleMaywood)
- Dashboard: Filter agents workspace dropdown to owner and show owner/name format (#22409, bde772c) (@DanielleMaywood)
- Dashboard: Remove optimistic message when real server message arrives on agents page (#22432, 607c25b) (@DanielleMaywood)
- fix(chat): fix stream state discrepancies between frontend and backend (#22437, c561974) (@kylecarbs)
- Dashboard: Add chromatic ignore to shimmer component (#22439, eec0b29) (@kylecarbs)
- fix(chatd): improve subagent tool descriptions and strip tools from child agents (#22441, c316d0a) (@kylecarbs)
- fix(chatd): clear stream buffer after each step is persisted (#22445, 22d4539) (@kylecarbs)
- Return in-flight chats to pending on server shutdown (#22443, 2abe555) (@kylecarbs)
- Workspace auto-refresh during the chat flow (#22447, 1c71fd6) (@kylecarbs)
- Resolve chat title update race conditions and improve resilience (#22450, 533b90a) (@kylecarbs)
- Agent: Wire updateCommandEnv into process manager (#22451, fb6bf3a) (@kylecarbs)
- Dashboard: Preserve running spinner on agents sidebar row hover (#22452, a6d2462) (@kylecarbs)
- Dashboard: Prevent layout shift when opening dropdowns on /agents page (#22448, 17d3d8a) (@DanielleMaywood)
- fix(dogfood): rename mux module input
add-projecttoadd_project(#22459, d033487) (@app/blinkagent) - SDK: Use header auth for non-browser websocket dials (#22461, 552f342) (@ethanndickson)
- Dashboard: Scope chevron to icon hover when any child is running (#22456, ebe8c8a) (@kylecarbs)
- Remove extra left border from diff panel header on agents detail page (#22489, f2e5636) (@DanielleMaywood)
- Initialize API key LastUsed to Unix epoch instead of zero time (#22327, 8cfb294) (@kacpersaw)
- fix(chats): archive chat tree with single query instead of loop (#22496, 0908505) (@kylecarbs)
- fix(chatd): prevent chat re-acquisition during server shutdown (#22497, a33ca95) (@kylecarbs)
- fix(chatd): increase title generation timeout from 10s to 30s (#22501, 7aef0bf) (@kylecarbs)
- Raise diff panel drag handle z-index above sticky file headers (#22504, bdc1a0e) (@kylecarbs)
- Dashboard: Stay on archived chat instead of redirecting (#22505, 2f68400) (@kylecarbs)
- Server: Fix error handling in deleteUserWebpushSubscription (#22500, d787b3c) (@johnstcn)
- Dashboard: Move gradient mask below title bar in agent detail (#22515, e3c5d73) (@kylecarbs)
- Use cursor-based query for chat stream notifications (#22510, 5eebd38) (@kylecarbs)
- Dashboard: Roll back optimistic message when server queues it (#22522, 7e0895a) (@kylecarbs)
- fix(chatd): harden cross-replica relay for chat stream parts (#22533, b7a7683) (@kylecarbs)
- Disable sharing ui when sharing is unavailable (#22390, 2bdf80d) (@aslilac)
- Scope git askpass diff status updates to initiating chat (#22534, 56f95a3) (@kylecarbs)
- fix(dogfood): upgrade Rust from apt (1.75) to rustup stable (#22458, 2203b25) (@ibetitsmike)
- Resolve
<Avatar />incorrect sizes (#22538, aa9fafa) (@jakehwll) - Dashboard: Cap chat input height and make it scrollable (#22545, 2a3b664) (@DanielleMaywood)
- Resolve
<Checkbox />classes (#22540, b4a53ac) (@jakehwll) - Remove opacity-50 from agents page logo so it renders black (#22547, 17f5fa4) (@DanielleMaywood)
- Remove mui components from
<WorkspaceScheduleForm />(#22232, e2a3b99) (@jakehwll) - Register task pause/resume routes under /api/v2 (#22544, 9d2aed8) (@EhabY)
- fix(chatd): return chat to pending when server shuts down during successful completion (#22559, 059ed7a) (@kylecarbs)
- Dashboard: Remove ugly webpush button (#22560, 8a095ae) (@johnstcn)
- Dashboard: Eagerly fetch API key for Open in Cursor/VS Code buttons (#22554, 2ceac31) (@kylecarbs)
- Wire agents-tab-visible metadata to experiments flag (#22553, 6acdd6c) (@DanielleMaywood)
- Dashboard: Remove stale ArchivedAgentsSearchAutoExpands story (#22573, 8a26352) (@kylecarbs)
- Add archived query parameter to chat list endpoint (#22562, d2d956e) (@DanielleMaywood)
- fix(chatd): start stream buffering before publishing running status (#22571, 5b1cf4a) (@kylecarbs)
- Dashboard: Open View Workspace link in new window on agents page (#22578, 39bde16) (@mattvollmer)
- Dashboard: Request notification permission before push subscription (#22576, 4ee5306) (@kylecarbs)
- Dashboard: Move chat input outside flex-col-reverse scroller (#22585, 2882e36) (@DanielleMaywood)
- User status change chart accommodates DST (#22191, cfcb81f) (@SasSwart)
- Dashboard: Refactor agents sidebar timestamp/action cell (#22595, a0b3a32) (@DanielleMaywood)
- Agent: Remove optimistic message rendering and fix auto-promote delivery (#22588, 012a049) (@kylecarbs)
- Server: Use WaitSuperLong in TestReinitializeAgent (#22593, 8c09df5) (@SasSwart)
- Persist draft message in localStorage on agent detail page (#22600, 1635b18) (@kylecarbs)
- Dashboard: Replace modal delete confirmation with inline UI in agents admin (#22587, f56563b) (@kylecarbs)
- fix(chatd): block subagents from spawning workspaces (#22603, f4a7fa5) (@kylecarbs)
- Documentation: Reorder Coder Agents section in manifest.json (#22604, 8a1dd51) (@mattvollmer)
- Dashboard: Disable chat input editor on archived agent chats (#22609, 619023f) (@DanielleMaywood)
- Dashboard: Resolve WS/HTTP race condition on workspace parameters page (#22556, 17d214b) (@kylecarbs)
- Remove queue message button and clear localStorage draft on submit (#22615, 9db39fb) (@kylecarbs)
- Database: Prevent cross-test job stealing in WorkspaceBuildBuilder (#22598, c7dd429) (@mafredri)
- Show a notice when workspace sharing is disabled globally in organization settings (#22580, e35717b) (@aslilac)
- Dashboard: Only play completion chime for top-level chat agents (#22623, 93e5d04) (@DanielleMaywood)
- Dashboard: Add optimistic updates for chat archive/unarchive (#22622, 96926cf) (@DanielleMaywood)
- fix(chatd): fix relay race conditions, extract enterprise relay logic, move pubsub to OSS (#22589, 30d534b) (@kylecarbs)
- CLI: Bypass access URL redirect for inter-replica chat relay (#22635, a6b9a25) (@kylecarbs)
- Server: Fix flaky TestGetUserStatusCounts timezone boundary (#22639, d50fc37) (@kylecarbs)
- fix(chatd): sanitize \u0000 from JSON before JSONB insertion (#22637, 27f0f29) (@kylecarbs)
- SDK: Propagate HTTPClient to websocket.Dial for TLS relay (#22642, 63b6868) (@kylecarbs)
- fix(chatd): enable compaction between steps and re-enter after summarization (#22640, 5630390) (@kylecarbs)
- Server: Poll for metrics in TestWorkspaceProvisionerdServerMetrics (#22644, 219d02b) (@kylecarbs)
- fix(chatd): extract session token from cookie for relay header (#22649, 94a2e44) (@kylecarbs)
- Skip web push notification when chat is interrupted (#22630, 7bcd9f6) (@kylecarbs)
- fix(chatd): wait for startup scripts before returning from create_workspace (#22498, 4d0d187) (@johnstcn)
- Use testutil.Eventually in chatd interrupt test (#22653, d0a51e1) (@johnstcn)
- Dashboard: Convert div role="button" to native button in ai-elements tools (#22631, 024d073) (@DanielleMaywood)
- Dashboard: Prevent dropdown portal flash in agents sidebar (#22632, 076a482) (@DanielleMaywood)
- Dashboard: Improve git diff number contrast on light theme in agents sidebar (#22661, c308db8) (@DanielleMaywood)
- Dashboard: Add WebSocket reconnection with exponential backoff to chat stream (#22662, 0d8a0af) (@kylecarbs)
- Refocus chat input after message send completes (#22666, be1d58b) (@kylecarbs)
- CLI: Add trailing dot to Coder Connect hostname to prevent DNS search domain expansion (#22607, 5a5828b) (@ethanndickson)
- Replace padded apple-touch-icon with resized PWA icon (#22674, 8d3d537) (@kylecarbs)
- CLI: Apply defaults when rendering select prompts (#22093, 5dd570f) (@geokat)
- Render +0 -0 diff stats for zero-line changes (e.g. images) (#22678, 51f298f) (@kylecarbs)
- Agent: Prevent updated_at regression causing sidebar group flicker (#22672, 9f6f4ba) (@DanielleMaywood)
- Clear agents page draft from localStorage after chat creation (#22691, d034903) (@kylecarbs)
- Server: Use dbtime.Now() instead of time.Now() in test assertions against DB timestamps (#22685, 8146832) (@johnstcn)
- Use Eventually for web push dispatch assertion in chatd test (#22700, d91d971) (@DanielleMaywood)
- Upgrade docker provider to v3.6.2 (#22701, ecf3dcc) (@dannykopping)
- Emit Responses API lifecycle events in mock OpenAI server (#22702, f989141) (@DanielleMaywood)
- Dashboard: Send web push notification when browser is unfocused on agent page (#22710, eb1d194) (@DanielleMaywood)
- Bump aibridge to include forward Anthropic-Beta header upstream fix (#22711, d06bf5c) (@ssncferreira)
- Dashboard: WCAG 2.1 AA accessibility remediation for core frontend flows (#22673, ec48636) (@jaaydenh)
- Early oidc refresh with fake idp tests (#22712, 537260a) (@Emyrk)
- Resolve bugs in pubsub and codersdk chat packages (#22717, 30a736c) (@kylecarbs)
- Always open git panel from the right, full width on mobile (#22718, 5712faa) (@kylecarbs)
- Dashboard: Center image attachment icon in chat input button (#22725, 09aa7b1) (@mafredri)
- Resolve bugs in AgentsPage chat streaming (#22719, b9b3c67) (@kylecarbs)
- Resolve bugs in chat frontend ChatContext and streamState (#22721, 2cd871e) (@kylecarbs)
- Resolve bugs in chatd streaming system (#22720, eecb7d0) (@kylecarbs)
- Dashboard: Polish agents diff panel UI (#22723, b199ef1) (@DanielleMaywood)
- Agent: Use git cli instead of go-git (#22730, 4afdfc5) (@hugodutka)
- CLI: Use :0 for http-address in proxy server tests (#22726, 338d30e) (@mafredri)
- Resolve bugs in chat HTTP handlers (#22722, f404463) (@kylecarbs)
- Dashboard: Prevent stale title clobber in sidebar from watchChats race (#22734, 8c52e15) (@kylecarbs)
- fix(chat): fix streaming bugs in edit notifications, persist race, and frontend reconnect (#22737, 9bd7120) (@kylecarbs)
- fix(chatd): queue interrupt messages to preserve conversation order (#22736, b9c7294) (@kylecarbs)
- Update offlinedocs/next-env.d.ts to match Next.js 15 output (#22739, 4c83a70) (@mafredri)
- Dashboard: Fix flaky TemplateVariablesPage submit test (#22740, 4e50ca6) (@kylecarbs)
- Prevent agents right panel from covering chat on mobile (#22744, 3608064) (@kylecarbs)
- Agent: Close subscribe-before-listen race in handleWatch (#22747, 703629f) (@hugodutka)
- Dashboard: Replace agent chime with original Blink completion sound (#22748, 77ca772) (@mattvollmer)
- Dashboard: Add missing aria-labels to AgentsPage icon buttons (#22817, c01430e) (@DanielleMaywood)
- Dashboard: Use declarative title elements in AgentsPage (#22806, 6509fb2) (@DanielleMaywood)
- Update the compaction message to be the "user" role (#22819, aba3832) (@kylecarbs)
- Dashboard: Only use git watcher when workspace agent connected (#22714, 5b7ba93) (@johnstcn)
- fix(Makefile): align test-race with CI configuration (#22727, a48e4a4) (@mafredri)
- fix(scripts/githooks): prevent agents from bypassing git hooks (#22825, dd34e3d) (@mafredri)
- Dashboard: Remove duplicate image rendering in chat messages (#22826, 7154864) (@mafredri)
- Rate limit by user instead of IP for authenticated requests (#22049, 4900668) (@kacpersaw)
- Skip redundant navigate in service worker notificationclick handler (#22836, 2eb3ab4) (@DanielleMaywood)
- Dashboard: Clear stream state on WebSocket reconnect to prevent text duplication (#22838, a072d54) (@mafredri)
- Server: Use clock.Since instead of time.Since in flush (#22841, 95bd099) (@mafredri)
- Agent SSH: Make X11 max port configurable to fix test timeout (#22840, 4957888) (@mafredri)
- Dashboard: Remove orphaned DiffStatsInline story (#22846, 5dfd563) (@DanielleMaywood)
- Mark context limit as required in model form (#22845, f4ab854) (@app/blinkagent)
- Server: Speed up TestRolePermissions to reduce Windows CI timeout (#22657, ff715c9) (@DanielleMaywood)
- Dashboard: Inject permissions and organizations metadata to eliminate loading spinners (#22741, 47846c0) (@kylecarbs)
- fix(scripts): handle ignored enc.Encode error in telemetry server (#22855, 9e7125f) (@mafredri)
- Agent: Stop reaper goroutine in tests to prevent ECHILD race (#22844, 6e9e39a) (@mafredri)
- Dashboard: Increase webServer timeout to 120s (#22731, f466925) (@mafredri)
- Server: Use dbtime.Now() for tailnet telemetry timestamps (#22861, f07e266) (@johnstcn)
- Optimize GetProvisionerJobsByIDsWithQueuePosition query (#22724, e7ea649) (@sreya)
- CLI: Fix
coder login tokenfailing without --url flag (#22742, 14341ed) (@zedkipp) - CLI: Error when CODER_SESSION_TOKEN env var is set during login (#22879, d936a99) (@dannykopping)
- CLI: Handle ignored errors in ssh and scaletest commands (#22852, 41c505f) (@mafredri)
- CLI: Fix flaky TestGitSSH/Local_SSH_Keys on Windows CI (#22883, 73bf847) (@mafredri)
- Dashboard: Remove redundant success toasts from agents feature (#22884, b850d40) (@DanielleMaywood)
- fix(chatd): update the spawn_agent tool description (#22880, 45f62d1) (@hugodutka)
- Dashboard: Fix chat input button icon sizing and centering (#22882, 3167908) (@mafredri)
- Agent: Persist system prompt server-side instead of localStorage (#22857, c933ddc) (@johnstcn)
- fix(chatd): preserve context.Canceled in persistStep during shutdown (#22890, f35b99a) (@kylecarbs)
- CLI: Skip CODER_SESSION_TOKEN check when --use-token-as-session is set (#22888, 2948400) (@dannykopping)
- Agent: Handle ignored filepath.Walk error in filefinder (#22853, beed379) (@mafredri)
- Dashboard: Polish agent UI styling (#22889, 8c70170) (@kylecarbs)
- Dashboard: Upgrade @pierre/diffs to 1.1.0-beta.19 (#22895, ba764a2) (@kylecarbs)
- fix(chatd): fix flaky TestCloseDuringShutdownContextCanceledShouldRetryOnNewReplica (#22893, fee5cc5) (@kylecarbs)
- Agent: Write WebSocket cache updates to infinite query key (#22905, 01f25dd) (@kylecarbs)
- Agent: Persist right panel open/closed state to localStorage (#22906, 30a6300) (@kylecarbs)
- Increase migration lock timeout to prevent flaky parallel test (#22910, 8cc6473) (@kylecarbs)
- Dashboard: Correct stale queued messages when switching back to a chat (#22911, b74d60e) (@kylecarbs)
- fix(chatd): harden title generation prompt to prevent conversational responses (#22912, 983f362) (@kylecarbs)
- fix(workspaceapps): use fresh context in LastUsedAt assertions (#22863, 4c63ed7) (@johnstcn)
- Filter sub-agents from build duration metric (#22732, 22a87f6) (@sreya)
- Use signal-based sync instead of time.Sleep in sync test (#22918, 33136df) (@mafredri)
- fix(externalauth): prevent race condition in token refresh with optimistic locking (#22904, 53e52ae) (@kylecarbs)
- Show inline validation errors for URL-prefilled workspace names (#22347, bfc58c8) (@app/blinkagent)
- Prevent emitting build duration metric for devcontainer subagents (#22929, f2eb6d5) (@sreya)
- Dashboard: Lift ConfigureAgentsDialog out of AgentCreateForm (#22928, c24b240) (@DanielleMaywood)
- Dashboard: Improve markdown rendering and top bar styling in agent chat (#22939, f766ad0) (@kylecarbs)
- Dashboard: Include diff length in cache key to prevent stale highlight reuse (#22942, c72d3e4) (@kylecarbs)
- CLI: Don't run Windows keyring tests in parallel (#22937, 71b132b) (@kylecarbs)
- Dashboard: Fix file tree click not scrolling to file section (#22924, c7c789f) (@david-fraley)
- Dashboard: Match Local tab scroll layout with Remote tab in Git panel (#22949, ac791e5) (@kylecarbs)
- Provisioner: Make coder_env and coder_script iteration deterministic (#22706, 9d2643d) (@kacpersaw)
- Dashboard: Prevent vertical scrollbar caused by deployment banner (#22877, 2f2ba0e) (@tracyjohnsonux)
- Dashboard: Remove custom li override to fix loose list paragraph nesting (#22951, 40114b8) (@kylecarbs)
- Dashboard: Restore Add model button and fix header in Models/Providers sections (#22953, c33dc3e) (@kylecarbs)
- Avoid mutating proto App.Healthcheck in insertAgentApp (#22954, d39f69f) (@kylecarbs)
- Server: Consolidate chat diff refresh paths through Worker.RefreshChat (#22938, 77d53d2) (@kylecarbs)
- fix(nix): bump macOS SDK to 12.3 for Go 1.26 compatibility (#22963, fc607cd) (@zedkipp)
- Grant chatd ActionReadPersonal on User and parallelize runChat DB calls (#22970, 58f2950) (@kylecarbs)
- Dashboard: Standardize PR status icon colors to match diff colors (#22971, 45c32d6) (@DanielleMaywood)
- Dashboard: Include archived filter in q param for agents list (#22973, a342fc4) (@DanielleMaywood)
- Dashboard: Deduplicate agent chime across browser tabs (#22972, d495a4e) (@kylecarbs)
- Disallow deselecting dynamic dropdown value (#22931, 53304df) (@code-asher)
- fix(chatd): skip provider-executed tools in message repair (#22976, 3325b86) (@kylecarbs)
- Networking: Retry after transport dial timeouts (#22977, 5130404) (@ethanndickson)
- fix(chatd): improve compaction prompt to preserve forward momentum (#22989, 53bfbf7) (@kylecarbs)
- fix(dogfood): remove subdomain from coder_app with command (#22990, fd63462) (@ethanndickson)
- Dashboard: Avoid duplicating bin download headers (#22981, 2b70122) (@ethanndickson)
- fix(chatd): keep provider-executed tool results in assistant content (#22991, c3923f2) (@kylecarbs)
- Dashboard: Prevent layout shift when agent chat right panel loads (#22983, 3aada03) (@DanielleMaywood)
- fix(scripts/develop.sh): handle SIGHUP and prevent SIGPIPE during shutdown (#22994, 2bb483b) (@mafredri)
- Use quartz clock in task status test (#22969, 5cb8203) (@zedkipp)
- fix(chatd): fix PE tool result persistence via fantasy bump (#22996, a6697b1) (@kylecarbs)
- fix(chatd): handle soft-deleted workspaces in chattool start/create (#22997, fc9e04d) (@kylecarbs)
- fix(gitsync): concurrent refresh, decoupled timeout, and no-token backoff (#23004, b1e80e6) (@kylecarbs)
- Agent: Use direct concatenation for completed message text blocks (#23009, 1ac5418) (@kylecarbs)
- Only show subagent chevron on icon hover, not full row hover (#23010, 3407fa8) (@kylecarbs)
- Agent: Don't overwrite existing vscode git auth settings (#22871, 2488cf0) (@zedkipp)
- fix(chatloop): keep provider-executed tool results in assistant message (#23012, 072e9a2) (@kylecarbs)
- fix(chatd): persist interrupted tool call steps instead of losing them (#23011, 42c1217) (@kylecarbs)
- Prevent ui error when last org member is removed (#22975, 4b8c079) (@rowansmithau)
- Agent: Add model form footer bottom padding (#23002, 322a94b) (@DanielleMaywood)
- Agent: Reap exited processes and scope process list by chat ID (#22944, 0e1846f) (@kylecarbs)
- Hide web_search tool — preserve ProviderExecuted on DB-loaded tool results (#23014, 84dc1a3) (@kylecarbs)
- Adjust highlight colors to pass WCAG AA contrast ratio (#22823, f6f33fa) (@chrifro)
- Server: Downgrade heartbeat ping errors for closed connections to debug (#23025, 8714aa4) (@johnstcn)
- Dashboard: WCAG 2.1 AA remediation — landmarks, semantics, and a11y tooling (#22746, 4e2640e) (@jaaydenh)
- Database: Move context creation to first use in migration tests (#23032, ff15677) (@mafredri)
- fix(scripts): allow graceful shutdown when --debug/dlv is used in develop.sh (#23023, cc6716c) (@mafredri)
- Dashboard: Fix speech recognition race condition and silent errors (#23043, 1152b61) (@kylecarbs)
- Agent: Run reaper tests in isolated subprocesses (#22894, efe1141) (@mafredri)
- Server: Strip markdown code fences from Anthropic task name responses (#23024, 03d0fc4) (@johnstcn)
- Server: Handle ignored errors across coderd packages (#22851, 9d33c34) (@mafredri)
- Dashboard: Allow microphone access for Web Speech API on agents page (#23046, 67f5494) (@app/blinkagent)
- Server: Improve error handling in chattest, chattool, and chats (#23047, 72689c2) (@mafredri)
- Fork gvisor to avoid integer overflow (#23055, f714f58) (@sreya)
- Dashboard: Prevent infinite scroll from spamming duplicate chat list requests (#23075, ddd1e86) (@kylecarbs)
- fix(chats): enforce desktop connect authorization (#23073, 3f7f25b) (@ThomasK33)
- Dashboard: Prevent duplicate chat in agents sidebar on creation (#23077, ff9d061) (@kylecarbs)
- Agent: Narrow chat mutation query invalidation (#23078, 83e4f9f) (@kylecarbs)
- Agent: Skip reaper tests in CI (#23068, 1adc22f) (@mafredri)
- Server: Remove false devcontainers early access warning (#23056, 703b974) (@mafredri)
- Server: Require ssh access for workspace chats (#23094, 069d3e2) (@ThomasK33)
- Dashboard: Inject time via prop for deterministic analytics story snapshots (#23092, cb05419) (@ibetitsmike)
- Dashboard: Right-align admin badge in agent settings nav tabs (#23104, 68fd82e) (@DanielleMaywood)
- Server: Make chat cost summary tests deterministic (#23097, fbc8930) (@ibetitsmike)
- Remove stray whitespace in agents UI (#23110, 08107b3) (@DanielleMaywood)
- Improve push notification message shown on subscribe (#23052, f8dff3f) (@johnstcn)
- Update sidebar diff status on WebSocket events (#23116, 6f97539) (@kylecarbs)
- Disable agent notification chime by default (#23124, af1be59) (@kylecarbs)
- Server: Render HTML error page for OIDC email validation failures (#23059, e94de0b) (@angrycub)
- Error on ambiguous matches in edit_files tool (#23125, 32a894d) (@kylecarbs)
- Dashboard: Scope chat cache helpers to chat-list queries only (#23134, b7eab35) (@kylecarbs)
- Improve background process handling for agent tools (#23132, 6972d07) (@kylecarbs)
- fix(cored): fix flaky TestInterruptAutoPromotionIgnoresLaterUsageLimitIncrease (#23147, 5d0eb77) (@ibetitsmike)
- Dashboard: Fix chat image paste bugs and refactor queued message display (#22735, 524bca4) (@mafredri)
- Skip input refocus after send on mobile viewports (#23141, eb828a6) (@kylecarbs)
- Provisioner: Skip duplicate-env-keys in generate.sh (#23155, 7946dc6) (@kacpersaw)
- Dashboard: Move analytics date range above cards (#23158, abee77a) (@deansheather)
- Dashboard: Balance sidebar header spacing in agents page (#23163, 3c430a6) (@deansheather)
- Dashboard: Add left offset to agents sidebar user dropdown (#23162, 87d4a29) (@deansheather)
- Unify sidebar Git/Desktop tab styles with GitPanel tabs (#23164, ca5158f) (@kylecarbs)
- Dashboard: Use theme-aware git tokens for PR status badges (#23148, 33a47fc) (@DanielleMaywood)
- Dashboard: Stop spamming chats list endpoint on diff_status_change events (#23167, a40716b) (@kylecarbs)
- fix(scripts/develop): skip build on Windows via build tag (#23118, 144b32a) (@mafredri)
- Use SQL-level auth filtering for chat listing (#23159, b779c9e) (@kylecarbs)
- Dashboard: Strip SVN-style Index headers from diffs before parsing (#23179, cd163d4) (@DanielleMaywood)
- fix(scripts/develop): allow empty access-url for devtunnel (#23166, c2243ad) (@mafredri)
- Resolve chat message pagination scroll issues (#23169, 6fc9f19) (@kylecarbs)
- Dashboard: Align workspace combobox styling with model selector (#23181, 6b76e30) (@DanielleMaywood)
- Open coder_app links in new tab when open_in is tab (#23000, d3c9469) (@angrycub)
- Dashboard: Restore gap between agent chat messages (#23188, 22a4a33) (@DanielleMaywood)
- Dashboard: Symmetric horizontal padding on agents sidebar chat rows (#23187, a65a31a) (@DanielleMaywood)
- fix(dogfood/coder): suppress du stderr in docker usage metadata (#23200, 563c00f) (@mafredri)
- Dashboard: Use ExternalImage for preset icons in task prompt (#23206, 4f566f9) (@DanielleMaywood)
- Polish agents UI (sidebar width, combobox, limits padding, back button) (#23204, aa3cee6) (@DanielleMaywood)
- Persist partial assistant response when chat is interrupted mid-stream (#23193, d42008e) (@kylecarbs)
- fix(dogfood): chrome desktop icons with compatibility flags (#23209, 0d0c6c9) (@hugodutka)
- Allow member users to generate support bundles (#23040, fe82d0a) (@johnstcn)
- Balance visual padding on agent chat sidebar items (#23211, d69dcf1) (@DanielleMaywood)
- Dashboard: Normalize chat message spacing for visual consistency (#23222, 3bcb7de) (@DanielleMaywood)
- Renumber duplicate migration 000444 to 000445 (#23229, a130a7d) (@kylecarbs)
- Agent: Default process working directory to agent dir or $HOME (#23224, 119030d) (@mafredri)
- Dashboard: Use correct /api/experimental endpoint for PR insights (#23235, 2577d16) (@kylecarbs)
- Address review comments on InsertChatMessages (#23239, d4a072b) (@kylecarbs)
- Show accurate error message when startup script fails instead of misleading "agents not connected" (#22843, 4ce9fbe) (@app/blinkagent)
- Rename chat logger from coderd.chats.chat-processor to coderd.chatd.processor (#23246, 0b13ba9) (@johnstcn)
- Make reasoning part text optional in generated types (#23249, dbb7aee) (@mafredri)
- Encode non-ASCII filenames in chat file upload header (#23241, cbe29e4) (@kylecarbs)
- Remove omitempty from required ChatMessagePart fields (#23250, fb61c48) (@mafredri)
- Deduplicate PR insights, fix cost computation, simplify UI (#23251, 147d627) (@kylecarbs)
- Run stop build before starting a workspace with a failed start (#22925, eba7d94) (@sreya)
- Handle null bytes in chat messages (#22946, d285a3e) (@hugodutka)
- Dashboard: Fix browser back navigation between agents settings pages (#23254, 2245612) (@kylecarbs)
- Dashboard: Guard malformed agent model refs (#23252, 5b9a9e5) (@ibetitsmike)
- Server: Gate OAuth2 well-known endpoints behind experiment flag (#23278, 7a98b4a) (@EhabY)
- Dashboard: Update editing message in agents chat input (#23283, d0f93f0) (@mattvollmer)
- Show promoted queued message in chat timeline immediately (#23232, f31a827) (@mafredri)
- Improve inline file reference chip contrast and spacing (#23285, 1840d6f) (@DanielleMaywood)
- Prevent git diff panel scroll jumps on chat updates (#23243, 635ce1f) (@mafredri)
- Diff panel follow-ups from #23243 (#23247, c424c31) (@mafredri)
- Make TestInterruptAutoPromotionIgnoresLaterUsageLimitIncrease deterministic (#23279, 6d21464) (@ibetitsmike)
- Dashboard: Prevent rehype-raw from swallowing JSX in chat output (#23293, ca57a0b) (@mafredri)
- Update fantasy to fix OpenAI reasoning replay with Store enabled (#23297, 86cb313) (@kylecarbs)
- Dashboard: Show PR number instead of title on mobile top bar (#23296, 62cf884) (@ibetitsmike)
- Place diff comment box at end of selection and highlight selected lines (#23288, 31fe588) (@DanielleMaywood)
- Filter empty text/reasoning parts before sending to LLM (#23284, 742694e) (@kylecarbs)
- Dashboard: Use search params for model edit/add navigation (#23277, 84f032d) (@DanielleMaywood)
- Dashboard: Don't wipe stream state when non-assistant message arrives (#23295, bb7c5f9) (@mafredri)
- Dashboard: Sync skeleton layouts with real components (#23304, 0176a5d) (@DanielleMaywood)
- Dashboard: Remove stale NoDiffUrl story (#23306, 436a17f) (@DanielleMaywood)
- Dashboard: Add inline decorator spacing to chat input via Lexical theme (#23308, 748022f) (@DanielleMaywood)
- Dashboard: Reserve scrollbar gutter in chat skeleton (#23310, b4b562d) (@DanielleMaywood)
- Dashboard: Prevent scroll overshoot in diff viewer end spacer (#23305, a908d51) (@johnstcn)
- Dashboard: Retry chat list query after window refocus (#23321, 999bbf9) (@DanielleMaywood)
- Dashboard: Hoist model queries out of AgentDetail (#23324, cf0c4d0) (@DanielleMaywood)
- Server: Bump workspace autostop deadline on chat heartbeat (#23314, 2f50e89) (@johnstcn)
- Server: Exclude |& from background detection, add tests (#23313, 6afc1ba) (@mafredri)
- Search usage by name or username (#23317, 0c9771a) (@mattvollmer)
- Fix data race in fakeContainerCLI test helper (#23335, c2bc2c5) (@zedkipp)
- Agent: Atomic writes and permission preservation (#23336, de4e568) (@mafredri)
- Agent: Enforce chat ID isolation on output and signal endpoints (#23316, 6edcbdb) (@mafredri)
- Dashboard: Reduce unnecessary re-renders and network calls (#23341, 2544571) (@DanielleMaywood)
- Dashboard: Pre-compute selectedLines to avoid busting LazyFileDiff memo (#23353, 484f637) (@DanielleMaywood)
- CLI: Exorcise the DERP healthcheck demon from TestSupportBundle (#23337, 06c50d1) (@johnstcn)
- Dashboard: Allow diff comments on cross-side selections (#23322, e08c3c1) (@DanielleMaywood)
- Server: Rate-limit stream drop WARN logs to avoid log spam (#23340, d8cad81) (@johnstcn)
- Dashboard: Make Base URL placeholder provider-aware (#23350, 186424b) (@ethanndickson)
- Server: Return human-readable error when deleting chat provider with active chats (#23347, 2a3be30) (@ethanndickson)
- fix(chatd): deliver retry control events via pubsub (#23349, a1e912a) (@ethanndickson)
- Agent: Downgrade script completion error log to warn (#23369, ac51610) (@spikecurtis)
- Use upstream fantasy fix for store=false replay (#23368, a6ba61e) (@ibetitsmike)
- Use auto-retrying assertion for bool parameter verification (#23315, 13703fb) (@jeremyruppel)
- Agent: Use Create-style permissions for temp files (#23339, f3b91b7) (@mafredri)
- Resolve flaky TestAgent_Session_TTY_MOTD_Update (#23375, c60a356) (@mafredri)
- StatusWriter Unwrap and process output error recovery (#23383, 4aa94fc) (@mafredri)
- Dashboard: Add top margin to chat stream error alert (#23382, 32021b3) (@DanielleMaywood)
- Limit calls to GetWorkspaceAgentByID in agentapi (#23015, f135ffd) (@sreya)
- Dashboard: Prevent infinite desktop reconnect loop on exit code 1006 (#23401, ecc28a6) (@DanielleMaywood)
- Dashboard: Fix desktop reconnect loop by moving connection lifecycle into hook (#23404, a08b684) (@DanielleMaywood)
- Dashboard: Stabilize date params to break infinite query loop on
agents/analytics(#23414, 0f3d40b) (@ethanndickson) - Dashboard: Fix flaky UsageUserDrillIn story assertion (#23416, 69d430f) (@ethanndickson)
- Return 409 Conflict instead of 502 when task agent is busy (#23424, 75f5b60) (@mafredri)
- Dashboard: Enable word-level inline diff highlighting in DiffViewer (#23423, eca2257) (@DanielleMaywood)
- Bump agents desktop resolution to 1920x1080 (#23425, 3163e74) (@hugodutka)
- Dashboard: Stop hijacking navigation after archive-and-delete settles (#23372, ab86ed0) (@johnstcn)
- Server: Preserve identifiers in chat title generation (#23436, 1ad3c89) (@mafredri)
- Dashboard: Replace navigating buttons with anchor tags (#23426, ee9b46f) (@DanielleMaywood)
- Scale Testing: Handle ignored io.ReadAll error in bridge runner (#22850, c49170b) (@mafredri)
- Dashboard: Focus chat input after submitting diff comment (#23440, edd1348) (@DanielleMaywood)
- Dashboard: Add chat input skeleton to prevent layout shift on agent detail (#23439, 522288c) (@DanielleMaywood)
- Dashboard: Unify diff header styling between conversation and panel viewers (#23422, 9753737) (@DanielleMaywood)
- Dashboard: Add collapse button to settings sidebar panel (#23438, 86d8b6d) (@DanielleMaywood)
- Improve process tool descriptions to prefer foreground execution (#23395, 138bc41) (@mafredri)
- Server: Stabilize auto-promotion flake (#23448, c389c2b) (@ibetitsmike)
- fix(Makefile): install playwright browsers before storybook tests (#23456, 145817e) (@mafredri)
- Dashboard: Improve mobile layout for settings and analytics (#23460, c344d7c) (@DanielleMaywood)
- Dashboard: Isolate draft prompts per conversation (#23469, a8e7cc1) (@DanielleMaywood)
- Server: Return 500 for internal auth errors (#23352, c1474c7) (@ethanndickson)
- Make LicenseCard stories use deterministic dates (#23437, 3d5d58e) (@jaaydenh)
- Dashboard: Diff viewer virtualizer buffer fix and styling polish (#23462, 5d0734e) (@DanielleMaywood)
- Dashboard: Use HttpResponse constructor for binary mock response (#23474, 56e80b0) (@ethanndickson)
- Make terraform ConvertState fully deterministic (#23459, b23aed0) (@mafredri)
- Agent: Follow symlinks in write_file and edit_files (#23478, 16edcbd) (@mafredri)
- Agent: Fix replace_all in fuzzy matching mode (#23480, 1c0442c) (@mafredri)
- Database: Fall back to model names in PR insights (#23490, 405d81b) (@ibetitsmike)
- Use actual config ID in MCP OAuth2 redirect URI during auto-discovery (#23491, 631e444) (@kylecarbs)
- Server: Use dedicated HTTP transport per MCP connection (#23494, 13241a5) (@kylecarbs)
- Dashboard: Improve Workspace Autostop Fallback UX on agents settings page (#23465, 0857700) (@mattvollmer)
- Dashboard: Stabilize remote diff cache keys (#23487, 803cfeb) (@ibetitsmike)
- Use previous_response_id chaining for OpenAI store=true follow-ups (#23450, 02356c6) (@ibetitsmike)
- Dashboard: Preserve chat scroll position when away from bottom (#23451, be5e080) (@ibetitsmike)
- Database: Skip Accounting check when sub-test filtering (#23281, fd1e2f0) (@johnstcn)
- Server: Add PKCE support to MCP server OAuth2 flow (#23503, e87ea1e) (@kylecarbs)
- Dashboard: Clamp SmoothText dtMs to prevent animation budget inflation (#23498, 42fdd5e) (@mafredri)
- Sidebar and analytics UI tweaks (#23499, 0a5b28c) (@mattvollmer)
- Server: Normalize OAuth2 token type to canonical Bearer case (#23516, e341629) (@kylecarbs)
Documentation
- Add AI Bridge structured logging section to setup page (#22361, 24ab520) (@app/blinkagent)
- docs(.claude/docs): add modern Go reference for AI agents (#22558, 96cfb7d) (@mafredri)
- Add task lifecycle and agent compatibility pages (#22222, 13411c8) (@mafredri)
- Add Coder Agents overview page (#22584, 77c80c3) (@mattvollmer)
- Tasks vscode extension update (#22582, 9bd5a8d) (@david-fraley)
- Add Coder Agents architecture deep-dive page (#22625, 28d99e8) (@mattvollmer)
- Add Models page and restructure agents docs into directory (#22643, c0995ed) (@mattvollmer)
- Agent: Convert markdown images to HTML img tags (#22647, 06105c9) (@mattvollmer)
- Add TLS listener configuration for AI Bridge Proxy (#22548, 9f83eb1) (@ssncferreira)
- Add jail type to boundary config docs + sort config options (#22629, 26205b9) (@zedkipp)
- Add process priority management documentation (#22626, 25dac6e) (@sreya)
- Add platform controls page for Coder Agents (#22680, fd60fa7) (@mattvollmer)
- Documentation: Upgrade Codex to full resume support (#22594, 9bc884d) (@mafredri)
- Add Early Access page under Coder Agents (#22872, 72fb0cd) (@mattvollmer)
- Remove experimental chat API from generated docs (#22897, 12bdbc6) (@johnstcn)
- Add early access state to agent child pages and fix video URL (#22908, f22450f) (@mattvollmer)
- Remove Coder Research page and nav entry (#22947, 7b846fb) (@mattvollmer)
- Move IDE clarification to 'what agents is and isn't' section (#22982, c7abfc6) (@mattvollmer)
- Add updated grafana dashboard with Client information (#23027, a5400b2) (@matifali)
- docs(ai-coder): add enablement instructions for agents experiment (#23057, 59553b8) (@mattvollmer)
- Update release calendar for v2.31 (#23113, 3704e93) (@app/blinkagent)
- Add Chat API page under Coder Agents (#22898, 3c64456) (@mattvollmer)
- Rename Chat API to Chats API (#23121, 115011b) (@mattvollmer)
- Add agent workspaces best practices guide (#23142, 665db7b) (@mattvollmer)
- Rename "Template Routing" to "Template Optimization" (#23192, 9df7fda) (@mattvollmer)
- Clarify agent permission inheritance and default security posture (#23194, 481c132) (@mattvollmer)
- Update Install to support AWS Marketplace Coder Community Edition (#22314, a685632) (@greg-the-coder)
- Remove EC2 install guide and rename AWS marketplace doc (#23298, 00d292d) (@bpmct)
- Dashboard: Add frontend agent guidelines from PR review analysis (#23299, bb6e826) (@ibetitsmike)
- Updated AWS Reference Arch to support black background (#23311, 176f57b) (@greg-the-coder)
- Document smart hook file classification in CONTRIBUTING (#23370, 89eaf6a) (@mafredri)
- Remove hardcoded AI attribution template from PR style guide (#23384, a85800c) (@ibetitsmike)
- Add Agents Getting Started enablement page (#23244, 5335037) (@david-fraley)
- Update JetBrains client downloader link (#23287, 2dc3466) (@rudskoy)
- Soften security implications intro wording (#23492, 76eac82) (@mattvollmer)
- Add explicit read instructions for non-Claude-Code agents (#23403, 7eb0d08) (@mafredri)
Code refactoring
- Dashboard: Use dedicated task pause/resume API endpoints (#22303, bf639d0) (@EhabY)
- Dashboard: Simplify AgentChatInput into a controlled component (#22426, 1dec6da) (@DanielleMaywood)
- Dashboard: Use
difflibrary for inline tool diffs (#22423, d412972) (@DanielleMaywood) - Dashboard: Refactor AgentsPage createPortal soup (#22438, 7860b99) (@DanielleMaywood)
- Dashboard: Add tabbed layout for single group page (#22486, 3daac86) (@jaaydenh)
- refactor(chatd): replace fantasy.Agent with custom agent loop (#22507, ddfe630) (@kylecarbs)
- refactor(webpush): use RequireExperimentWithDevBypass middleware (#22525, 517cb0c) (@johnstcn)
- Dashboard: Convert archive agent callbacks to React Query mutations (#22542, c483bfa) (@DanielleMaywood)
- Dashboard: Use
buttoninstead ofdiv role="button"(#22575, f98761f) (@DanielleMaywood) - Dashboard: Replace bespoke chat model provider UI with schema-driven rendering (#22577, 47199ab) (@kylecarbs)
- Dashboard: Replace DiffRightPanel with generic tabbed RightPanel (#22633, 6afcc7b) (@kylecarbs)
- Clarify MITM certificate naming in aibridgeproxyd (#22408, c79e8f2) (@ssncferreira)
- Dashboard: Extract renderSchemaField into SchemaField component (#22818, 7d6fde3) (@DanielleMaywood)
- Dashboard: Replace double-negation with Boolean() in AgentsPage (#22814, 4b3ed61) (@DanielleMaywood)
- Dashboard: Add readonly to array props in AgentsPage (#22815, 69a4a88) (@DanielleMaywood)
- Dashboard: Extract shared WebSocket reconnect utility (#22809, 667d501) (@DanielleMaywood)
- Dashboard: Standardize AgentsPage props to use interface (#22810, 896c43d) (@DanielleMaywood)
- Unify agent sidebar into generic tabbed panel with Git sub-views (#22837, 3f93937) (@kylecarbs)
- Dashboard: Compute selected model as derived state in AgentDetail (#22816, 26adc26) (@DanielleMaywood)
- Dashboard: Use standard Spinner in AgentsPage (#22811, c6b68b2) (@DanielleMaywood)
- Dashboard: Separate AgentsPage and AgentDetail into container/view pairs (#22812, d61772d) (@DanielleMaywood)
- Dashboard: Extract AgentCreateForm from AgentsPage (#22903, 8b72fee) (@DanielleMaywood)
- Remove reasoning title extraction from chat pipeline (#22926, 0a026fd) (@kylecarbs)
- refactor(healthcheck): reduce test boilerplate with healthyChecker helper (#23028, 6104a00) (@johnstcn)
- Add chat_message_role enum and content_version column (#23042, 4a79af1) (@mafredri)
- Dashboard: Consolidate Git panel diff viewers and polish UI (#23080, 266c611) (@kylecarbs)
- Rewrite develop.sh orchestrator in Go (#23054, 3a3537a) (@mafredri)
- Remove /diff-status endpoint, include diff_status in chat payload (#23082, 27cbf54) (@kylecarbs)
- Dashboard: Use ChatMessagePart for editingFileBlocks (#23151, 4e2d7ff) (@mafredri)
- Consolidate experimental chats API types (#23143, 075dfec) (@kylecarbs)
- Make ChatMessagePart a discriminated union in TypeScript (#23168, 66f8093) (@mafredri)
- Dashboard: Clean up RenderBlock types and dead fields (#23175, 488ceb6) (@mafredri)
- Type both chat message parsers (#23176, 8b4d357) (@mafredri)
- Consolidate chat streaming endpoints under /stream (#23248, 90cf4f0) (@kylecarbs)
- Dashboard: Remove derivable useEffect antipatterns (#23267, 9ba8226) (@jeremyruppel)
- Extract test helpers in coderd/jobreaper to reduce duplication (#23001, 7c3c7bb) (@johnstcn)
- Deduplicate utility helpers across the codebase (#23338, f1d333f) (@johnstcn)
- Dashboard: Restructure agents routing and directory layout (#23408, b871710) (@DanielleMaywood)
- Dashboard: Move experimental endpoints to ExperimentalApiMethods (#23449, ed19a3a) (@DanielleMaywood)
- Replace sort.Strings with slices.Sort (#23457, 147df5c) (@mafredri)
- Dashboard: Replace react-date-range with shadcn Calendar + DateRangePicker (#23495, def4f93) (@DanielleMaywood)
- Dashboard: Remove redundant memo and Context.Provider (#23507, d126a86) (@mafredri)
Performance improvements
- Dashboard: Improve FilesChangedPanel rendering for large diffs (#22610, ac298a2) (@DanielleMaywood)
- perf(ci): use fast zstd compression for non-release CI builds (#22907, d3986b5) (@kylecarbs)
- perf(chatd): fix six scale bottlenecks identified by benchmarking (#22957, 1f37df4) (@kylecarbs)
- Database: Skip redundant chat row update in InsertChatMessage (#23111, c4db03f) (@ethanndickson)
- Server: Reduce duplicated reads in push and webpush paths (#23115, 04fca84) (@ethanndickson)
- Server: Reuse workspace context within a turn (#23145, a33605d) (@ethanndickson)
- perf(chatd): remove redundant chat rereads (#23161, 41bd7ac) (@ethanndickson)
- Server: Reduce lock contention in instruction cache and persistStep (#23144, 11481d7) (@ethanndickson)
- Server: Skip same-replica stream DB rereads (#23218, cda460f) (@ethanndickson)
Tests
- Server: Remove provisioner daemon from SendToNonActiveStates test (#22298, d2f3393) (@mafredri)
- Dashboard: Add comprehensive ChatContext store and integration tests (#22444, 948fd0f) (@kylecarbs)
- CLI: Fix flaky TestProvisioners_Golden (#22491, b80dbd2) (@mafredri)
- Reduce Await* polling interval from 250ms to 25ms (#22536, 10a33eb) (@kylecarbs)
- Reduce unnecessary sleep durations in tests (#22552, 2d7009e) (@kylecarbs)
- Server: Parallelize TestRolePermissions subtests (#22259, f28f56d) (@DanielleMaywood)
- Remove unnecessary dbauthz.AsSystemRestricted calls in tests (#22663, f91475c) (@DanielleMaywood)
- Dashboard: Add missing stories for AgentsPage components (#22808, b33b8e4) (@DanielleMaywood)
- Add testutil.WaitBuffer and replace time.Sleep in tests (#22922, 57af7ab) (@mafredri)
- Log DERP debug in CI (#23041, 5745ff7) (@spikecurtis)
- test(chats): verify cost summaries survive model deletion (#23051, cbb3841) (@ibetitsmike)
- Provisioner: Add subagent_id to UUID preservation and regenerate (#23122, fa86936) (@mafredri)
- Stabilize AgentsPageView analytics story date (#23216, 81dba9d) (@ethanndickson)
- Remove classic params from ephemeral params test (#23302, 91d7516) (@Emyrk)
- Server: Add P0 coverage tests for subagent auth and panic recovery (#23309, 0a0c976) (@mafredri)
- Share coderdtest instances to stop paying the startup tax 22 times (#23454, 956f6b2) (@johnstcn)
- Share coderdtest instances in OAuth2 validation tests (#23455, 9e4c283) (@johnstcn)
- Migrate TestResourcesMonitor to mocked db instances (#23464, b9f0c47) (@Emyrk)
Builds
- build(Makefile): enable parallel
make -j genwith correct dependency graph (#22612, a6a8fd9) (@mafredri) - build(Makefile): use atomic writes for remaining gen targets (#22670, 719c248) (@mafredri)
- Add pre-commit/push hooks mirroring CI checks (#22705, 752e6ec) (@mafredri)
- Remove defunct test-postgres rule (#22839, a96ec4c) (@mafredri)
- build(Makefile): harden make pre-push (#22849, 1a2eea5) (@mafredri)
- build(Makefile): add per-target timing via SHELL wrapper (#22862, 5696058) (@mafredri)
- build(Makefile): fix lint/go recipe by using bash subshell (#22874, abdfadf) (@mafredri)
- build(Makefile): capture pre-commit output to log files (#22978, e7e2de9) (@mafredri)
- build(scripts/lib): allow MAKE_TIMED=1 to show last 20 lines of failed jobs (#22985, 3bd840f) (@mafredri)
Continuous integration
- Add temporary deploy override (#22378, 67da4e8) (@johnstcn)
- Remove ci action to push schema to sqlc cloud (#22572, 8ea0c2f) (@Emyrk)
- Remove sqlc push to cloud (#22574, f6b4b7e) (@Emyrk)
- Remove dylib build pipeline (#22592, e738ff5) (@ethanndickson)
- Remove temporary deploy override (#22389, 9c91f47) (@johnstcn)
- Add lint check to prevent single quotes in bootstrap scripts (#22664, ba05188) (@kacpersaw)
- Remove unnecessary
brew install google-chromefrom macOS CI (#22835, 51a627c) (@ethanndickson) - Documentation: Rewrite same-repo links to PR head SHA in linkspector (#22995, c8079a5b8) (@mafredri)
- Split build artifacts into per-platform uploads (#23081, 3d9628c) (@kylecarbs)
- Add conventional commit PR title linting (#23096, aa6f301) (@mafredri)
- Fix build job disk exhaustion on Depot runners (#23136, 89bb5bb) (@kylecarbs)
- Add verbose flag to flux reconcile and increase helmrelease timeout (#23240, 4b8a5e2) (@dannykopping)
- Update linear-release-action to version 0.5.0 (#23342, 135c4d0) (@matifali)
- Add triage workflow using Coder Chat API (#23154, 03a1653) (@david-fraley)
- Disable go cache for build jobs to prevent disk space exhaustion (#23484, cbd56d3) (@johnstcn)
- Yeet depot runners in favour of GitHub runners (#23508, 5544a60) (@johnstcn)
- Bump runner sizes (#23514, 32acc73) (@johnstcn)
Chores
- Use header auth over cookies for agents (#22226, 3353e68) (@Emyrk)
- Migrate workspace agent row styling to Tailwind (#22195, 4e1cedf) (@jaaydenh)
- chore(dogfood): bump Mux to 1.3.0, use next channel and bun runner (#22357, 5194cc8) (@ibetitsmike)
- chore(dogfood): set OPENAI_BASE_URL and OPENAI_API_KEY if aibridge is enabled (#22364, b9fd9bc) (@matifali)
- Update setup-go action to fix Go download failures (#22306, 2b9baff) (@zedkipp)
- chore(dogfood): update Rust from 1.86.0 to 1.93.1 (#22344, 6248520) (@ibetitsmike)
- chore(db): remove workspace_agent_id from chats table (#22442, 34d9392) (@kylecarbs)
- Replace mux■ icon with m■ icon (#22460, 451dedc) (@app/blinkagent)
- Version is 2.31 not 1.31 (#22494, 7bc454e) (@Emyrk)
- Update test directions in AGENTS.md (#22490, 49aefdd) (@johnstcn)
- Also proxy coder_session_token headers for websockets (#22499, 583e6da) (@Emyrk)
- Add GitHub Action to build+deploy coder.com whenever docs paths change (#22283, ef2e408) (@aqandrew)
- Misc improvements to compose.dev.yaml (#22541, 88465ea) (@johnstcn)
- Enable agent socket by default (#22352, 56eb57c) (@spikecurtis)
- Prematurely refresh oidc token near expiry during workspace build (#22502, f49dea6) (@Emyrk)
- chore(deps): bump clistat to v1.2.1 (#22599, 52a42af) (@kacpersaw)
- Expose UpdateAppStatus on agentsocket (#22353, 7cc2b22) (@spikecurtis)
- Use agentsocket for task status updates in MCP server (#22354, 1a30ca1) (@spikecurtis)
- Mark PatchAppStatus as deprecated in agentsdk (#22355, 8327e1f) (@spikecurtis)
- Modify task status scaletest to use Agent API dRPC (#22356, fda181b) (@spikecurtis)
- Bump boundary version to capture dropped logs (#22618, be019d9) (@zedkipp)
- CLI: Fix flaky temporal assertion in TestTokens (#22654, 89cee2d) (@johnstcn)
- CLI: Fix TestTokens harder (#22684, 0b1e488) (@johnstcn)
- Remove
needs-triagelabel from bug template (#22679, 71ac484) (@matifali) - Setting time forward for expiration math (#22687, c805c8c) (@Emyrk)
- chore(dogfood): pin coderd provider to >= 0.0.13 (#22704, 24c7a09) (@app/blinkagent)
- Add Linear release integration workflow (#22310, e698364) (@matifali)
- chore(ci): tighten permissions for AI workflows (#22471, a21f00d) (@matifali)
- chore(dogfood): bump mux to 1.4.0 (#22899, f5e5bd2) (@ibetitsmike)
- Update coder/preview to 1.0.8 (#22859, b44a421) (@Emyrk)
- chore(httpapi): do not log context.Canceled as error (#22933, 2d7dd73) (@johnstcn)
- chore(githooks): remove pre-push hook (#22956, e96cd5c) (@ThomasK33)
- Update-browerslist-db (#23007, d21a937) (@aslilac)
- chore(db): remove 23 unused database methods (#22999, e9025f9) (@johnstcn)
- Deprecate injected MCP approach in AI Bridge (#23031, 8705832) (@dannykopping)
- chore(dogfood): add Google Chrome to dogfood image (#23063, b492c42) (@kylecarbs)
- chore(dogfood): bump mux to 1.4.3 (#23039, f6976fd) (@ibetitsmike)
- Update deploy to use EKS (#23084, a2b8564) (@deansheather)
- Remove swagger annotations from experimental chat endpoints (#23120, 5308728) (@kylecarbs)
- Randomize task status update times in load generator (#23058, 4fdd48b) (@spikecurtis)
- Implement database crud for AI seat usage (#22681, cabb611) (@Emyrk)
- Add audit log entry when ai seat is consumed (#22683, 93b9d70) (@Emyrk)
- Dashboard: Improve mobile layout for agent chat (#23139, b69631c) (@kylecarbs)
- Agent: Remove portabledesktop download logic (#23128, fdb1205) (@hugodutka)
- Update coder/tailscale fork to 33e050fd4bd9 (#23191, f3bf5ba) (@bpmct)
- Label community PRs on open (#23157, 677f90b) (@matifali)
- Dashboard: Remove experiment label from agents virtual desktop (#23217, 014e5b4) (@hugodutka)
- Add tallyman events for ai seat tracking (#22689, 84de391) (@Emyrk)
- Add new interactive release package (#22624, 1f5f6c9) (@f0ssel)
- Extract testutil.FakeSink for slog test assertions (#23208, 65b7658) (@johnstcn)
- Update coder/trivy override (#23230, c46136f) (@Emyrk)
- chore(dogfood): add gh CLI wrapper for automatic auth via coder external-auth (#23234, f395e2e) (@app/blinkagent)
- Update fantasy dep to rebased cj/go1.25 branch (#23242, fdc2366) (@kylecarbs)
- Force deploying to dogfood from main (#23290, 8f78c51) (@deansheather)
- Apply monotonic validation to workspace builds (#23180, cc6766e) (@Emyrk)
- Attempt to nudge agents away from dbauthz.AsSystemRestricted (#23326, c8e5857) (@johnstcn)
- Add pull-requests agent skill (#23364, 3014376) (@ibetitsmike)
- Evict trivy from the dogfood Dockerfile (#23367, 4c9041b) (@johnstcn)
- Dashboard: Update streamdown from 2.2.0 to 2.5.0 (#23407, bf702cc) (@DanielleMaywood)
- Remove trivy GHA job (#23415, b8e09d0) (@jdomeracki-coder)
- Move chat methods to ExperimentalClient (#23441, ef14654) (@johnstcn)
- Move chatd and related packages to /x/ subpackage (#23445, 80a172f) (@johnstcn)
- chore(dogfood): evict 22 freeloading tools from the Dockerfile (#23378, 3b268c9) (@johnstcn)
- Begin modernizing typescript imports (#23509, b06d183) (@aslilac)
Reverts
- "ci: add verbose flag to flux reconcile and increase helmrelease timeout" (#23276, 2ee90df) (@dannykopping)
Other changes
- fix: remove double border
<BuildParametersPopover />(#22367, 900f6ef) (@jakehwll) - Revert "fix(chatd): sanitize \u0000 from JSON before JSONB insertion" (#22645, b28958c) (@kylecarbs)
- Do not use bridge config vars for models (#22392, 0252205) (@kylecarbs)
- Add language to mention disruptive nature of cookie host prefix (#22384, 21bc185) (@Emyrk)
- Increase test timeout for TemplateVersionEditorPage tests (#22412, 816d99e) (@jeremyruppel)
- Verify parameters in parallel in e2e tests (#22557, b73f216) (@jeremyruppel)
- Add page event logging to e2e tests (#22569, f07fdce) (@jeremyruppel)
- Re-enable 'TestReinitializeAgent' on Windows (#22488, e563766) (@SasSwart)
Compare: v2.31.5...v2.32.0-rc.0
Container image
docker pull ghcr.io/coder/coder:2.32.0-rc.0
Install/upgrade
Refer to our docs to install or upgrade Coder, or use a release asset below.