Commit Graph
12224 Commits
Author SHA1 Message Date
Garrett Delfosse 953a6159a4 fix: increase retry attempts for builtin postgres port conflicts (#21796)
## Summary

Fixes flaky `TestServer/BuiltinPostgres` test caused by port conflicts
in CI.

## Fix

Increase retry attempts from 3 to 10 for better odds when port conflicts
occur.

Fixes https://github.com/coder/internal/issues/1017
2026-02-05 13:36:32 -05:00
Jon Ayers 11e17b3de9 chore: log the OS signal prior to exiting in agent (#21941)
Adds additional logs for determining what signal the agent receives
prior to shut down. Also helps distinguish whether the signal originated
at the agent or reaper.
2026-02-05 12:32:07 -06:00
david-fraley 549bb95bea chore: fix docs link (#21950)
## Description

The public changelog URL changed so updating here.
2026-02-05 16:55:47 +00:00
Susana Ferreira e3f78500e7 docs: add AI Bridge Proxy client configuration (#21904)
## Description

This PR adds documentation for configuring clients to work with AI
Bridge via AI Bridge Proxy, specifically GitHub Copilot.

Preview:
https://coder.com/docs/@docs-aibridge-proxy-client-config/ai-coder/ai-bridge/ai-bridge-proxy/setup#client-configuration

## Changes

* Add Client Configuration section to
`docs/ai-coder/ai-bridge/ai-bridge-proxy/setup.md` covering proxy and CA
certificate configuration
* Add `docs/ai-coder/ai-bridge/clients/copilot.md` with configuration
instructions for: Copilot CLI, VS Code Copilot Extension, JetBrains IDEs
* Update `docs/ai-coder/ai-bridge/clients/index.md`:
  * Add introduction explaining base URL vs proxy-based integration
  * Add GitHub Copilot to compatibility table

Related to: https://github.com/coder/internal/issues/1188
2026-02-05 16:54:26 +00:00
Jake Howell 2265df51b4 feat: refactor <NotificationsPage /> (#21937) 2026-02-06 00:53:00 +11:00
Mathias Fredriksson 4bcd2b90b4 test(cli): fix context timeout in task tests (#21945)
Context was created before expensive setup operations (building
workspaces, starting agents), leaving insufficient time for the actual
command execution. Split into setupCtx for setup and a fresh ctx for
the command to ensure both get the full timeout.
2026-02-05 12:29:16 +00:00
Mathias Fredriksson 96695edfed fix(coderd/database): correct task pending status logic (#21886)
Previously, tasks with pending provisioner jobs (not yet picked up)
were incorrectly reported as "initializing".

Refs #21887
2026-02-05 14:08:03 +02:00
blinkagent[bot] 90faf513c9 docs: clarify Tasks availability in Community and Premium deployments (#21943) 2026-02-05 11:01:16 +00:00
Sas Swart c166457cde fix: update AI Bridge to preserve stream property in 'chat/completions' calls (#21926)
Update AI Bridge to apply this fix:
https://github.com/coder/aibridge/pull/164
2026-02-05 12:44:09 +02:00
Rowan Smith e3ce3c342a feat: add organization delete command to cli (#21940)
The API endpoints existed for this already, so this PR just adds CLI
functionality which uses those API endpoints.

closes #21891 

Generated with the help of Mux
2026-02-05 19:35:20 +11:00
Ethan dc633e22a3 ci: add setup-gnu-tools action for macOS runners (#21938)
macOS runners lack GNU toolchain dependencies (bash 4+, GNU getopt, make
4+) required by `scripts/lib.sh`. When any script sources `lib.sh`, it
checks for these dependencies and fails if they're missing.

This caused consistent failures in the `test-go-pg (macos-latest)` job
in `nightly-gauntlet.yaml`, which didn't have the GNU tools setup that
`ci.yaml` had. Commit 9a417df ("ci: add retry logic for Go module
operations") added a macOS GNU tools step to `ci.yaml`, but
`nightly-gauntlet.yaml` was not updated.

This PR adds a reusable `setup-gnu-tools` action and uses it
consistently across all workflows with macOS jobs, replacing the inline
brew install steps.

Closes https://github.com/coder/internal/issues/1133
2026-02-05 05:06:10 +00:00
Ethan 20785580d1 fix(site): use valid status enum in connection log preset (#21936)
The Connection Log page has a preset filter "Active SSH connections"
that was using `status:connected`, but the only valid status enum values
are `completed` and `ongoing`. This caused the preset to generate an
invalid query.

This changes the preset to use `status:ongoing type:ssh` and adds a
typed helper function so that invalid enum values will be caught at
compile time.

---
PR generated by [mux](https://mux.coder.com), but reviewed by a human.
2026-02-05 15:59:41 +11:00
Jon Ayers e914576167 fix: fix panic in agentsocket.SyncReady (#21913) 2026-02-04 20:48:45 -06:00
Jon Ayers 22ece10a4a feat: add healthy filter for workspace queries (#21743)
Adds support for filtering workspaces by health status using
healthy:true or healthy:false in the search query.

This is done by changing `has-agent` to accept a list of statuses and
aliasing `health:true` to `has-agent:connected` and `healthy:false` to
`has-agent:timeout,disconnected`.

Fixes #21623
2026-02-04 20:48:27 -06:00
david-fraley 984e363180 chore: update docs for new release (#21929) 2026-02-04 20:06:23 +00:00
Ehab Younes d5ae72d5e2 feat(site): add pause/resume action buttons to tasks table (#21728)
Add the ability to pause and resume tasks directly from the Tasks table,
allowing users to manage workspace resources without navigating to
individual task pages.
2026-02-04 22:30:44 +03:00
Jake Howell ac18b2995b feat: implement icon to template in /tasks (#21928)
This pull-request adds the icon to the templates for `/tasks` in a
similar fashion to #21694.

<img width="1326" height="868" alt="CleanShot 2026-02-05 at 05 14 16@2x"
src="https://github.com/user-attachments/assets/2686344a-146d-43c9-ac91-3c8ed5774b00"
/>
2026-02-05 05:40:19 +11:00
Jake Howellandcoder-tasks[bot] 849eaccd78 feat: implement OAuth2App* page permissions (#21911)
This pull-request implements various permission checks to the
`<OAuth2App* />` stories and components. We're trying to ensure that
we're actually allowed to `create`/`view`/`delete` on both Secrets and
Applications before showing them to the user/allowing action.

Furthermore, I've added various stories to catch when a user lacks these
permissions.

I noticed this particularly because I'm only an `Auditor` on our DEV
instance and can't see these fields.

---------

Co-authored-by: coder-tasks[bot] <254784001+coder-tasks[bot]@users.noreply.github.com>
2026-02-05 05:05:17 +11:00
Danielle Maywood af0e171595 feat(coderd/agentapi): support terraform-defined subagent ids (#21837)
Update `coderd/agentapi` to handle pre-created sub agents
2026-02-04 15:33:48 +00:00
Danny Kopping 29b1aea736 chore: make AI code review opt-in (#21883)
The comments generated are too noisy and not of sufficiently high signal
that we should automatically opt every PR in.

This PR moves the trigger to the `code-review` label _only_.

Signed-off-by: Danny Kopping <danny@coder.com>
2026-02-04 17:23:23 +02:00
Steven Masley fd00958520 test: drop windows for TestGetModulesArchive due to flakiness (#21897)
Coder is run in a linux container almost always anyway

Closes https://github.com/coder/internal/issues/1325
2026-02-04 08:30:03 -06:00
Steven Masley a4ffafd46d test: remove provisioner heartbeat from 'AllProvisionersStale' (#21903)
Provisioner async heartbeat will mark the 'stale' provisioner as ready

closes https://github.com/coder/internal/issues/1288
2026-02-04 08:29:44 -06:00
Jake Howell 9d887f2aac fix: resolve heading sizing (#21914)
This pull-request addresses heading sizing inline with Figma. This means
that our headings are all uniformly `font-weight` and `font-size`.
Furthermore, we've dropped the `font-size` of the descriptions below the
headings.

### Comparison

| Old | New |
| --- | --- |
| <img width="474" height="290" alt="OLD_HEADING_PAGE"
src="https://github.com/user-attachments/assets/d6f2ca0e-d1ea-45a2-ad8f-634ecf10c722"
/> | <img width="474" height="290" alt="NEW_HEADING_PAGE"
src="https://github.com/user-attachments/assets/3a44963e-1808-4ad6-9b13-601c4ef11510"
/> |

This one is harder to see, but its mild spacing resolution 🙂 

<img width="474" height="290" alt="COMPARISON_HEADING_SETTING"
src="https://github.com/user-attachments/assets/ed387f97-90b3-4a6b-92ab-63f0b7f3eb39"
/>
2026-02-04 21:44:28 +11:00
Jake Howell c2d74c8ed7 feat: persist email through <RequestOTP /> (#21912)
This pull-request implements a super simple change, essentially when we
fail to login we'd like to persist the `email` used when attempting to
sign-in. This just speeds up the flow rather than having to type the
email in again.
2026-02-04 21:27:39 +11:00
Jake Howell ad1cdb3a1c feat: implement <DropdownRadio* /> to <PresetMenu /> (#21910)
This pull-request implements a `<CheckboxRadioGroup />` and
`<CheckboxRadioItem />` to our filtering menus. This means that people
will be able to actively see what preset filter is applied when opening
the filtering dropdown menu.

| Old | New | 
| --- | --- |
| <img width="286" height="407" alt="OLD_FILTER_MENU"
src="https://github.com/user-attachments/assets/791ba518-a949-4f69-b0e7-ad09ec521971"
/> | <img width="286" height="407" alt="NEW_FILTER_MENU"
src="https://github.com/user-attachments/assets/7e789d75-cb4c-4ad0-8c32-5a7087fb1626"
/> |
2026-02-04 21:27:11 +11:00
blinkagent[bot]andblink-so[bot] 83f9d0dcd7 chore(site): increase schedule icon button size to match icon button style sm (#21829)
This PR increases the size of the schedule increment/decrement buttons
([-] [+]) to match the icon button style at size `sm` (same as the Stop,
Restart buttons).

## Changes
- Button dimensions: 20×20px → 32×32px
- Icon size: `size-icon-xs` → `size-icon-sm`
- Border radius: 4px → 6px (consistent with other icon buttons)

## Before
The [-] [+] buttons were tiny (20×20px) and difficult to click.

## After
The buttons now match the icon button style at size `sm` (32×32px),
consistent with other topbar buttons.

---
Created on behalf of @christin

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
2026-02-04 02:20:10 -05:00
Jake Howell b0c09eab03 feat: implement proper <GlobalLayout /> (#21823)
> [!NOTE]  
> It should be noted that these #21781 #21807 #21809 pull-request are
required before we can merge this. This will stop us to battling the
`z-index` that is provided by MUI.

This is avoiding the changes that would be required in #21819

This pull-request removes on our reliance to control the scroll from
within another`<div />`, this means that we can actively make use of
`<ScrollRestoration />` where the page will return the top of the page
when you navigate to a new URL.
2026-02-04 13:12:42 +11:00
Jake Howell 014693ba34 feat: refactor <UserDropdown /> (#21809)
This pull-request takes our `<UserDropdown />` component and converts it
to a `<DropdownMenu />`. This is done so that we can more easily
standardise the content among multiple Dropdown's, and as an added bonus
helps us to remove MUI dependencies (win win).

<img
src="https://github.com/user-attachments/assets/1168ece2-b514-4b91-8cfd-4baf2744eb38"
/>


> [!NOTE]  
> I removed the avatar here whilst we debate internally on how we show
the user account. This differs from the screenshot below 🙂

| Old | New |
| --- | --- |
| <img
src="https://github.com/user-attachments/assets/d1fe8bcc-bdbb-4366-9ceb-39a63bd09da3"
/> | <img
src="https://github.com/user-attachments/assets/89252765-4203-433e-8b25-3087fd2fd754"
/> |
2026-02-04 13:08:10 +11:00
Jake Howell 62ba27b08f feat: add organization_icon to <TemplatesPageView /> (#21816) 2026-02-04 12:39:50 +11:00
99d8b7f8d0 docs: update multi-model support to use provider names (#21905)
Updates the multi-model support description in the Coder Research docs
to reference provider companies (Anthropic, xAI, OpenAI) instead of
specific model names (Claude sonnet-4/opus-4, Grok, GPT-5).

This makes the docs more stable as model names change frequently, while
provider names remain constant.

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: Matt Vollmer <matthewjvollmer@outlook.com>
2026-02-03 16:36:15 -05:00
Steven Masley b1e18f2398 fix: use dynamic parameter resolution in the cli (#21734)
Uses dynamic parameters EvaluateTemplateVersion vs TemplateVersionRichParameters to determine initial parameter state.

Closes https://github.com/coder/coder/issues/19879
2026-02-03 14:10:49 -06:00
Steven Masley 6759b51cd6 feat: add endpoint to fetch singular org member (#21732) 2026-02-03 12:48:25 -06:00
1e2d2b92af chore: update AI governance docs for v2.30 release (#21870)
- remove beta labels
- clarify how AWB is measured
- reassurance of no downtimes when limit is reached

---------

Co-authored-by: Atif Ali <atif@coder.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Matt Vollmer <matthewjvollmer@outlook.com>
2026-02-03 13:42:27 -05:00
Cian Johnston 91be688e39 chore(coderd/database): remove deprecated db2sdk.List(Lazy)? methods (#21902)
Removes deprecated methods db2sdk.List and db2sdk.ListLazy.
2026-02-03 17:52:07 +00:00
Matt Vollmer 2add69a33e fix(docs): update AI Governance Add-On licensing information (#21899)
This change better informs users and Blink.
2026-02-03 12:08:20 -05:00
Jake Howell d11f9bf094 fix: resize !size-icon-lg in <ProxyMenu /> (#21900)
This pull-request changes the size of our `▼` / downwards chevron to
match that update in #21781 . This was incorrectly changed in #21807.

| Old | New |
| --- | --- |
| <img
src="https://github.com/user-attachments/assets/a5ea1fbf-ac3e-44f8-8e6b-afd3d0dab28f"
/> | <img
src="https://github.com/user-attachments/assets/dffe408d-47a5-4c45-ad78-939663327695"
/> |
2026-02-03 16:46:31 +00:00
ケイラ 7fd13019e5 fix: disable task sharing (#21867) 2026-02-03 09:43:40 -07:00
Steven Masley a16debee76 test: template import should never complete, use Plan over apply (#21895)
Closes https://github.com/coder/internal/issues/1221
2026-02-03 10:16:53 -06:00
Sas Swart a502640431 chore: update aibridge (#21892)
Our dependency on AIBridge was already pointing to this commit. We now
have a tag for it, so its cleaner to point to the tag.
2026-02-03 18:10:17 +02:00
Michael Suchacz f7f025343f chore(dogfood): add project to mux module (#21894)
Adds `add-project` to the `mux` module in the dogfood Coder template so
Mux opens the cloned repo by default.

- Uses `local.repo_dir` (defaults to `/home/coder/coder`) so it stays
correct if the repo base dir parameter changes.

Testing:
- `terraform fmt -check dogfood/coder/main.tf`
2026-02-03 16:46:06 +01:00
Michael Suchacz b955e102ff docs: add Mux client configuration (#21888)
Adds a new AI Bridge client configuration page for **Mux** and lists it
in the client compatibility table.

- Add `docs/ai-coder/ai-bridge/clients/mux.md` with a short intro, UI +
env var + `~/.mux/providers.jsonc` examples
- Add Mux to the AI Bridge client compatibility table
- Add the new page to `docs/manifest.json`

Refs: https://mux.coder.com/config/providers#environment-variables
2026-02-03 15:42:58 +00:00
Jake Howell efe4cb1f66 feat: refactor Admin Settings (#21781)
This pull-request ensures that we're using `<DropdownMenu />` in the
`Admin Settings` button as things weren't uniform before. This is inline
with the Figma design with the darker ("black") background. This has an
added side-benefit of removing some MUI-specific code.

<img
src="https://github.com/user-attachments/assets/4eb9136b-91b3-44ac-81a0-5abd1cf2cdf2"
/>
2026-02-04 00:28:38 +11:00
dependabot[bot] f72f09c110 chore: bump otelhttp from 0.62.0 to 0.64.0 (#21568)
Bumps
[go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp](https://github.com/open-telemetry/opentelemetry-go-contrib)
from 0.62.0 to 0.64.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/releases">go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp's
releases</a>.</em></p>
<blockquote>
<h2>Release
v1.39.0/v2.1.0/v0.64.0/v0.33.0/v0.19.0/v0.14.0/v0.12.0/v0.11.0</h2>
<h2>Overview</h2>
<h3>Added</h3>
<ul>
<li><code>ParseYAML</code> in
<code>go.opentelemetry.io/contrib/otelconf</code> now supports
environment variables substitution in the format
<code>${[env:]VAR_NAME[:-defaultvalue]}</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/6215">#6215</a>)</li>
<li>Add the <code>http.route</code> metric attribute to
<code>go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/7966">#7966</a>)</li>
<li>Support <code>db.client.operation.duration</code> metric for
<code>go.opentelemetry.io/contrib/instrumentation/go.mongodb.org/mongo-driver/v2/mongo/otelmongo</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/7983">#7983</a>)</li>
<li>Add a <code>WithSpanNameFormatter</code> option to
<code>go.opentelemetry.io/contrib/instrumentation/go.mongodb.org/mongo-driver/v2/mongo/otelmongo</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/7986">#7986</a>)</li>
<li>WithOnError option for otelecho middleware in
<code>go.opentelemetry.io/contrib/instrumentation/github.com/labstack/echo/otelecho</code>
to specify the behavior when an error occurs. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8025">#8025</a>)</li>
<li>Updated <code>go.opentelemetry.io/contrib/otelconf</code> to include
the <a
href="https://github.com/open-telemetry/opentelemetry-configuration/releases/tag/v1.0.0-rc.2">v1.0.0-rc2</a>
release candidate of schema which includes backwards incompatible
changes. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8026">#8026</a>)</li>
<li>Introduce v1.0.0-rc.2 model in
<code>go.opentelemetry.io/contrib/otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8031">#8031</a>)</li>
<li>Add unmarshaling and validation for <code>CardinalityLimits</code>
and <code>SpanLimits</code> to v1.0.0 model in
<code>go.opentelemetry.io/contrib/otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8043">#8043</a>)</li>
<li>Add unmarshaling and validation for
<code>BatchLogRecordProcessor</code>, <code>BatchSpanProcessor</code>,
and <code>PeriodicMetricReader</code> to v1.0.0 model in
<code>go.opentelemetry.io/contrib/otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8049">#8049</a>)</li>
<li>Add unmarshaling and validation for <code>TextMapPropagator</code>
to v1.0.0 model in <code>go.opentelemetry.io/contrib/otelconf</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8052">#8052</a>)</li>
<li>Add
<code>jaeger.sampler.type</code>/<code>jaeger.sampler.param</code>
attributes for adaptive sampling support and option
<code>WithAttributesDisabled</code> in
<code>go.opentelemetry.io/contrib/samplers/jaegerremote</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8073">#8073</a>)</li>
<li>Add support for <code>OTEL_EXPERIMENTAL_CONFIG_FILE</code> via the
<code>NewSDK</code> function in
<code>go.opentelemetry.io/contrib/otelconf</code> (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8106">#8106</a>)</li>
<li>Add unmarshaling and validation for <code>OTLPHttpExporter</code>,
<code>OTLPGrpcExporter</code>, <code>OTLPGrpcMetricExporter</code> and
<code>OTLPHttpMetricExporter</code> to v1.0.0 model in
<code>go.opentelemetry.io/contrib/otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8112">#8112</a>)</li>
<li>Add unmarshaling and validation for <code>AttributeType</code>,
<code>AttributeNameValue</code>, <code>SimpleSpanProcessor</code>,
<code>SimpleLogRecordProcessor</code>, <code>ZipkinSpanExporter</code>,
<code>NameStringValuePair</code>, <code>InstrumentType</code>,
<code>ExperimentalPeerInstrumentationServiceMappingElem</code>,
<code>ExporterDefaultHistogramAggregation</code>,
<code>PullMetricReader</code> to v1.0.0 model in
<code>go.opentelemetry.io/contrib/otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8127">#8127</a>)</li>
<li>Add support for <code>container</code>, <code>host</code>,
<code>process</code> resource detectors in
<code>go.opentelemetry.io/contrib/otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8180">#8180</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Improve performance by reducing allocations in the gRPC stats
handler in
<code>go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8035">#8035</a>)</li>
<li>Export the <code>ReadEvents</code> and <code>WriteEvents</code>
constants in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code>
so they can be used in <code>WithMessageEvents</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8153">#8153</a>)</li>
<li>Switched the default for <code>OTEL_SEMCONV_STABILITY_OPT_IN</code>
to emit the v1.37.0 semantic conventions by default in
<code>go.opentelemetry.io/contrib/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo</code>.
Use the environment variable <code>OTEL_SEMCONV_STABILITY_OPT_IN</code>
to configure duplication with old semantic conventions if needed (i.e.
<code>OTEL_SEMCONV_STABILITY_OPT_IN=&quot;database/dup&quot;</code>).
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8230">#8230</a>)</li>
</ul>
<h3>Deprecated</h3>
<ul>
<li><code>WithRouteTag</code> in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code>
is deprecated. The route is already added automatically for spans. For
metrics, the alternative is to use the
<code>WithMetricAttributesFn</code> option. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8117">#8117</a>)</li>
<li><code>WithPublicEndpoint</code> in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code>
is deprecated. Use <code>WithPublicEndpointFn</code> instead. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8152">#8152</a>)</li>
<li><code>DefaultClient</code>, <code>Get</code>, <code>Head</code>,
<code>Post</code>, and <code>PostForm</code> in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code>
are deprecated. Use a custom <code>*http.Client</code> with
<code>otelhttp.NewTransport(http.DefaultTransport)</code> instead. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8140">#8140</a>,
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8201">#8201</a>)</li>
</ul>
<h3>Removed</h3>
<ul>
<li>Drop support for <a href="https://go.dev/doc/go1.23">Go 1.23</a>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/7831">#7831</a>)</li>
<li>Remove deprecated
<code>go.opentelemetry.io/contrib/detectors/aws/ec2</code> module,
please use <code>go.opentelemetry.io/contrib/detectors/aws/ec2/v2</code>
instead. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/7841">#7841</a>)</li>
<li>Remove the deprecated <code>Extract</code> and <code>Inject</code>
functions from
<code>go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/7952">#7952</a>)</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>chore(deps): update go-openapi packages by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/7830">open-telemetry/opentelemetry-go-contrib#7830</a></li>
<li>chore(deps): update module github.com/spf13/pflag to v1.0.9 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/7833">open-telemetry/opentelemetry-go-contrib#7833</a></li>
<li>fix(deps): update module github.com/shirou/gopsutil/v4 to v4.25.8 by
<a href="https://github.com/renovate"><code>@​renovate</code></a>[bot]
in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/7834">open-telemetry/opentelemetry-go-contrib#7834</a></li>
<li>Remove support for Go 1.23 by <a
href="https://github.com/MrAlias"><code>@​MrAlias</code></a> in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/7831">open-telemetry/opentelemetry-go-contrib#7831</a></li>
<li>fix(deps): update golang.org/x by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/7733">open-telemetry/opentelemetry-go-contrib#7733</a></li>
<li>chore(deps): update googleapis to ef028d9 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/7835">open-telemetry/opentelemetry-go-contrib#7835</a></li>
<li>chore(deps): update module github.com/securego/gosec/v2 to v2.22.8
by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/7836">open-telemetry/opentelemetry-go-contrib#7836</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/blob/main/CHANGELOG.md">go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp's
changelog</a>.</em></p>
<blockquote>
<h2>[1.39.0/2.1.0/0.64.0/0.33.0/0.19.0/0.14.0/0.12.0/0.11.0] -
2025-12-08</h2>
<h3>Added</h3>
<ul>
<li><code>ParseYAML</code> in
<code>go.opentelemetry.io/contrib/otelconf</code> now supports
environment variables substitution in the format
<code>${[env:]VAR_NAME[:-defaultvalue]}</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/6215">#6215</a>)</li>
<li>Add the <code>http.route</code> metric attribute to
<code>go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/7966">#7966</a>)</li>
<li>Support <code>db.client.operation.duration</code> metric for
<code>go.opentelemetry.io/contrib/instrumentation/go.mongodb.org/mongo-driver/v2/mongo/otelmongo</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/7983">#7983</a>)</li>
<li>Add a <code>WithSpanNameFormatter</code> option to
<code>go.opentelemetry.io/contrib/instrumentation/go.mongodb.org/mongo-driver/v2/mongo/otelmongo</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/7986">#7986</a>)</li>
<li>WithOnError option for otelecho middleware in
<code>go.opentelemetry.io/contrib/instrumentation/github.com/labstack/echo/otelecho</code>
to specify the behavior when an error occurs. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8025">#8025</a>)</li>
<li>Updated <code>go.opentelemetry.io/contrib/otelconf</code> to include
the <a
href="https://github.com/open-telemetry/opentelemetry-configuration/releases/tag/v1.0.0-rc.2">v1.0.0-rc2</a>
release candidate of schema which includes backwards incompatible
changes. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8026">#8026</a>)</li>
<li>Introduce v1.0.0-rc.2 model in
<code>go.opentelemetry.io/contrib/otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8031">#8031</a>)</li>
<li>Add unmarshaling and validation for <code>CardinalityLimits</code>
and <code>SpanLimits</code> to v1.0.0 model in
<code>go.opentelemetry.io/contrib/otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8043">#8043</a>)</li>
<li>Add unmarshaling and validation for
<code>BatchLogRecordProcessor</code>, <code>BatchSpanProcessor</code>,
and <code>PeriodicMetricReader</code> to v1.0.0 model in
<code>go.opentelemetry.io/contrib/otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8049">#8049</a>)</li>
<li>Add unmarshaling and validation for <code>TextMapPropagator</code>
to v1.0.0 model in <code>go.opentelemetry.io/contrib/otelconf</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8052">#8052</a>)</li>
<li>Add
<code>jaeger.sampler.type</code>/<code>jaeger.sampler.param</code>
attributes for adaptive sampling support and option
<code>WithAttributesDisabled</code> in
<code>go.opentelemetry.io/contrib/samplers/jaegerremote</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8073">#8073</a>)</li>
<li>Add support for <code>OTEL_EXPERIMENTAL_CONFIG_FILE</code> via the
<code>NewSDK</code> function in
<code>go.opentelemetry.io/contrib/otelconf</code> (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8106">#8106</a>)</li>
<li>Add unmarshaling and validation for <code>OTLPHttpExporter</code>,
<code>OTLPGrpcExporter</code>, <code>OTLPGrpcMetricExporter</code> and
<code>OTLPHttpMetricExporter</code> to v1.0.0 model in
<code>go.opentelemetry.io/contrib/otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8112">#8112</a>)</li>
<li>Add unmarshaling and validation for <code>AttributeType</code>,
<code>AttributeNameValue</code>, <code>SimpleSpanProcessor</code>,
<code>SimpleLogRecordProcessor</code>, <code>ZipkinSpanExporter</code>,
<code>NameStringValuePair</code>, <code>InstrumentType</code>,
<code>ExperimentalPeerInstrumentationServiceMappingElem</code>,
<code>ExporterDefaultHistogramAggregation</code>,
<code>PullMetricReader</code> to v1.0.0 model in
<code>go.opentelemetry.io/contrib/otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8127">#8127</a>)</li>
<li>Add support for <code>container</code>, <code>host</code>,
<code>process</code> resource detectors in
<code>go.opentelemetry.io/contrib/otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8180">#8180</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Improve performance by reducing allocations in the gRPC stats
handler in
<code>go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8035">#8035</a>)</li>
<li>Export the <code>ReadEvents</code> and <code>WriteEvents</code>
constants in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code>
so they can be used in <code>WithMessageEvents</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8153">#8153</a>)</li>
<li>Switched the default for <code>OTEL_SEMCONV_STABILITY_OPT_IN</code>
to emit the v1.37.0 semantic conventions by default in
<code>go.opentelemetry.io/contrib/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo</code>.
Use the environment variable <code>OTEL_SEMCONV_STABILITY_OPT_IN</code>
to configure duplication with old semantic conventions if needed (i.e.
<code>OTEL_SEMCONV_STABILITY_OPT_IN=&quot;database/dup&quot;</code>).
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8230">#8230</a>)</li>
</ul>
<h3>Deprecated</h3>
<ul>
<li><code>WithRouteTag</code> in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code>
is deprecated.
The route is already added automatically for spans.
For metrics, the alternative is to use the
<code>WithMetricAttributesFn</code> option. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8117">#8117</a>)</li>
<li><code>WithPublicEndpoint</code> in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code>
is deprecated.
Use <code>WithPublicEndpointFn</code> instead. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8152">#8152</a>)</li>
<li><code>DefaultClient</code>, <code>Get</code>, <code>Head</code>,
<code>Post</code>, and <code>PostForm</code> in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code>
are deprecated.
Use a custom <code>*http.Client</code> with
<code>otelhttp.NewTransport(http.DefaultTransport)</code> instead. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8140">#8140</a>,
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8201">#8201</a>)</li>
</ul>
<h3>Removed</h3>
<ul>
<li>Drop support for [Go 1.23]. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/7831">#7831</a>)</li>
<li>Remove deprecated
<code>go.opentelemetry.io/contrib/detectors/aws/ec2</code> module,
please use <code>go.opentelemetry.io/contrib/detectors/aws/ec2/v2</code>
instead. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/7841">#7841</a>)</li>
<li>Remove the deprecated <code>Extract</code> and <code>Inject</code>
functions from
<code>go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/7952">#7952</a>)</li>
</ul>
<h2>[1.38.0/2.0.0/0.63.0/0.32.0/0.18.0/0.13.0/0.11.0/0.10.0] -
2025-08-29</h2>
<p>This release is the last to support [Go 1.23].
The next release will require at least [Go 1.24].</p>
<h3>Added</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/9a6a4d7dec6c950b12977cb166e1954bc74e8777"><code>9a6a4d7</code></a>
Release v1.39.0 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8261">#8261</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/14c6a7a655bb5d915dc3939aef2cff9df65c3a6c"><code>14c6a7a</code></a>
chore(deps): update module golang.org/x/sys to v0.39.0 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8260">#8260</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/829f498cc49a4879c523efc3496d019b0a5f5d55"><code>829f498</code></a>
chore(deps): update module golang.org/x/sync to v0.19.0 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8259">#8259</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/a77cddabf6f6861e701fcf976b1ad1f048f4d308"><code>a77cdda</code></a>
chore(deps): update module golang.org/x/oauth2 to v0.34.0 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8257">#8257</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/a98be56f3747cab50e0ba0c32d74cf56fcba17fe"><code>a98be56</code></a>
chore(deps): update module github.com/go-git/go-billy/v5 to v5.7.0 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8255">#8255</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/4385fbc6db3f5e4d63c5e927232f3498f737a48f"><code>4385fbc</code></a>
chore(deps): update github/codeql-action action to v4.31.7 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8253">#8253</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/3c3e7b27aff9b9c702e6411944b6ecef3292cd1c"><code>3c3e7b2</code></a>
otelconf: add support for parsing resource detectors (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8180">#8180</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/6497853d28a651d83bf8940f1f44326555d0cdb1"><code>6497853</code></a>
otelconf: add support for OTEL_EXPERIMENTAL_CONFIG_FILE (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8106">#8106</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/3f4d49c3dbd3a20a62736a9b385c885671e926ba"><code>3f4d49c</code></a>
Fix flaky canceled context in otelconf/trace test (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8250">#8250</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/3ce5839c9632d2c0f8fa71efc7cb5c38e81ba9fc"><code>3ce5839</code></a>
fix(deps): update module github.com/golangci/golangci-lint/v2 to v2.7.1
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8252">#8252</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/compare/zpages/v0.62.0...zpages/v0.64.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp&package-manager=go_modules&previous-version=0.62.0&new-version=0.64.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-03 13:01:14 +00:00
Danielle Maywood 2de8cdf160 feat(agent): add subagent ID fields to devcontainers in manifest (#21848)
Update the agent protobuf schema (agent/proto/agent.proto) to include:
- subagent_id field in WorkspaceAgentDevcontainer message
- id field in CreateSubAgentRequest message

Bump the Agent API version from v2.7 to v2.8 and update all client
references throughout the codebase (ConnectRPC27 -> ConnectRPC28,
DRPCAgentClient27 -> DRPCAgentClient28).
2026-02-03 12:37:30 +00:00
Susana Ferreira 28b4e6413d docs: add AI Bridge Proxy documentation (#21801)
## Description

Add documentation for AI Bridge Proxy.

## Changes

This PR adds documentation for AI Bridge Proxy under
`docs/ai-coder/ai-bridge/ai-bridge-proxy/`:
* `index.md`: Overview of AI Bridge Proxy, how it works (MITM vs tunnel
modes), and when to use it
* `setup.md`: Setup guide covering:
  * Proxy configuration and required settings
  * Security considerations and deployment options
  * CA certificate generation (self-signed and organization-signed)
  * Upstream proxy chaining configuration

Note: TODO comments in the documentation will be addressed in follow-up
PRs.

Related to: https://github.com/coder/internal/issues/1188
2026-02-03 12:29:17 +00:00
Jake Howell 912fbab11a feat: refactor <ProxyMenu /> (#21807)
This pull-request takes the old `<ProxyMenu />` in the header and makes
it so that we're inline with the latest and greatest of components from
codebase rather than MUI. Furthermore, we're reintroducing the
`<DropdownRadioGroup />` and `<DropdownRadioItem />` components.

<img width="3516" height="2390" alt="CleanShot 2026-01-31 at 13 49
28@2x"
src="https://github.com/user-attachments/assets/7f8de8e9-7645-446e-9495-0b20194cc759"
/>

### Preview

| Old | New |
| --- | --- |
| <img width="418" height="499" alt="LATENCY_OLD"
src="https://github.com/user-attachments/assets/86e9166a-7045-48c9-91f1-4593f85274d4"
/> | <img width="418" height="499" alt="LATENCY_NEW"
src="https://github.com/user-attachments/assets/a1cf80af-d11f-4bc7-99fd-a41c54a7b153"
/> |
2026-02-03 23:16:55 +11:00
Jake Howell 4fe64213c3 feat: refactor <Filter /> with alignment to design (#21780)
This pull-request refactors filter-related dropdown and input components
from MUI to our Tailwind-based design system. This is more inline with
the Figma design, controversially we are changing the button group for
canned filters and input to two seperate components.

- **InputGroup**: Complete rewrite to a compound component pattern
(`InputGroup`, `InputGroupAddon`, `InputGroupInput`, `InputGroupButton`)
using Tailwind and CVA, replacing the old CSS-in-JS approach
- **SearchField**: Migrated from MUI TextField to use the new InputGroup
components, with a simplified API and proper ref forwarding
- **Filter/PresetMenu**: Replaced MUI Menu with our DropdownMenu
component, and updated icon to `SlidersHorizontal`

### Changes

| Component | Before | After |
|-----------|--------|-------|
| InputGroup | CSS-in-JS with MUI margin hacks | Compound component with
Tailwind group states |
| SearchField | MUI TextField + InputAdornment | InputGroup +
InputGroupAddon composition |
| PresetMenu | MUI Menu/MenuItem | DropdownMenu/DropdownMenuItem |
| MenuSearch | Complex CSS overrides | Single Tailwind class |

<img
src="https://github.com/user-attachments/assets/5b819027-2dca-4dcc-b6d6-7096fa3775c0"
/>
2026-02-03 23:04:02 +11:00
72e89d3901 docs: add CLI method for retrieving session token (#21875)
Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: Atif Ali <atif@coder.com>
2026-02-03 17:02:32 +05:00
Danny Kopping 24b20df7d5 fix: use os.Pipe implementation for Windows CLI tests to reduce flakiness (#21874)
On Windows, `pty.New()` was creating a `ConPTY` (`PseudoConsole`) even
when no process would be attached. `ConPTY` requires a real process to
function correctly - without one, the pipe handles become invalid
intermittently, causing flaky test failures like `read |0: The handle is
invalid.`
This affected tests using the `ptytest.New()` + `Attach()` pattern for
in-process CLI testing.
The fix splits Windows PTY creation into two paths:
- `newPty()` now returns a simple pipe-based PTY for the `Attach()` use
case
- `newConPty()` creates a real `ConPTY`, called by `Start()` when a
process will be attached
AFAICT this will result in no change in behaviour outside of tests.

Fixes coder/internal#1277   

_Disclaimer: investigated and implemented by Claude Opus 4.5, reviewed
by me._

---------

Signed-off-by: Danny Kopping <danny@coder.com>
2026-02-03 11:50:28 +02:00
Cian JohnstonandClaude 353ebd9664 feat: add link for viewing raw build logs in workspace and template build jobs (#21727)
* Adds support for parameter `format=text` in the following API routes:
  * `/api/v2/workspaceagents/:id/logs`
  * `/api/v2/workspacebuilds/:id/logs`
  * `/api/v2/templateversions/:id/logs` 
  * `/api/v2/templateversions/:id/dry-run/:id/logs` 

* Adds links to view raw logs on the following pages:
  * Workspace build page
  * Template editor page
  * Template version page

* Refactors existing log formatting in `cli/logs.go` to live in `codersdk`.

🤖 Generated with Claude Opus 4.5, reviewed by me.

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-02-03 09:45:23 +00:00