Compare commits

...

1481 Commits

Author SHA1 Message Date
Steven Masley db9274f8aa feat: purge expired api keys in dbpurge (#20863) (#21040)
Backport of https://github.com/coder/coder/pull/20863
2025-12-01 15:25:58 -06:00
Danny Kopping a75205a559 fix: remove a sensitive field from an agent log line (#20968) (#20970)
Backport of #20968

Co-authored-by: Sas Swart <sas.swart.cdk@gmail.com>
2025-11-27 17:35:00 +02:00
Cian Johnston 41dfbc7f1d chore: update Go to 1.24.10 (#20684) (#20707)
(cherry picked from commit 81c3375670)

Signed-off-by: Danny Kopping <danny@coder.com>
Co-authored-by: Danny Kopping <danny@coder.com>
2025-11-10 10:54:57 -06:00
Dean Sheather ee8e8cb805 fix: initialize pseudo console with default size for SSH sessions [2.26] (#20491)
> Resolved an invalid parameter error (-2147024809) during PTY creation
on Windows 11 22H2 (but not only) when connecting via JetBrains Toolbox
which spawns the native SSH client with `-tt` forcing PTY allocation
even though there is no "terminal" on the client side to query its size.
>
> CreatePseudoConsole doesn't accept a 0x0 (zero width and zero height)
console size and unfortunately, there is NO explicit documentation in
the official Microsoft documentation that states the minimum valid
values or explicitly prohibits 0x0.
>
> Looking at real-world implementations in the search results, all
examples use reasonable non-zero values.
>
> I tested this with a local Windows VM registered to dev.coder.com i.e.
externally managed workspace.

Relates to #20468

Co-authored-by: Faur Ioan-Aurel <fioan89@gmail.com>
2025-10-28 22:47:03 +11:00
Danielle Maywood 4793806569 chore: upgrade coder/clistat to v1.1.1 (#20322) (#20324)
coder/clistat has received a handful of bug fixes so we're back-porting
these bug fixes to 2.26

---

Cherry-picked from 9bef5de30d
2025-10-16 15:29:05 +01:00
Dean Sheather 03440f6ae2 fix: avoid connection logging crashes in agent [2.26] (#20306)
# For release 2.26

- Ignore errors when reporting a connection from the server, just log
them instead
- Translate connection log IP `localhost` to `127.0.0.1` on both the
server and the agent
- Temporary fix: convert invalid IPs to `127.0.0.1` since the database
forbids NULL

Relates to #20194
2025-10-16 01:28:10 +11:00
Cian Johnston 7afe6c813b fix(coderd): ensure agent WebSocket conn is cleaned up (#19711) (#20094)
Co-authored-by: Danielle Maywood <danielle@themaywoods.com>
2025-10-01 15:37:56 -05:00
Kacper Sawicki 536920459d [2.26 backport] perf(enterprise): remove expensive GetWorkspaces query from entitlements (#19747) (#19756)
This PR addresses the significant database load issue where the
GetWorkspaces query was causing performance problems in the license
entitlements code.

cherry picked from commit 3074547
2025-09-11 09:48:32 +02:00
Kacper Sawicki c0f1b9d73e [2.26 backport] fix: pin pg_dump version when generating schema (#19696) (#19765)
This is required by #19756 

The latest release of all `pg_dump` major versions, going back to 13,
started inserting `\restrict` `\unrestrict` keywords into dumps. This
currently breaks sqlc in `gen/dump` and our check migration script. Full
details of the postgres change are available here:
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=575f54d4c

To fix, we'll always use the `pg_dump` in our postgres 13.21 docker
image for schema dumps, instead of what's on the runner/local machine.

Coder doesn't restore from postgres dumps, so we're not vulnerable to
attacks that would be patched by the latest postgres version.
Regardless, we'll unpin ASAP.

Once sqlc is updated to handle these keywords, we need to start
stripping them when comparing the schema in the migration check script,
and then we can unpin the pg_dump version. This is being tracked at
https://github.com/coder/internal/issues/965

Co-authored-by: Ethan <39577870+ethanndickson@users.noreply.github.com>
2025-09-11 09:32:58 +02:00
Stephen Kirby a056cb6577 chore: add last commit from cherry-pick list for release (#19679)
Co-authored-by: Spike Curtis <spike@coder.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-02 19:19:04 -05:00
Stephen Kirby 0a73f842b3 fix: merge cherry-picked items for v2.26.0 (#19678)
Co-authored-by: Cian Johnston <cian@coder.com>
Co-authored-by: Mathias Fredriksson <mafredri@gmail.com>
Co-authored-by: Hugo Dutka <hugo@coder.com>
Co-authored-by: Kacper Sawicki <kacper@coder.com>
Co-authored-by: Atif Ali <atif@coder.com>
Co-authored-by: Danielle Maywood <danielle@themaywoods.com>
Co-authored-by: Susana Ferreira <susana@coder.com>
Co-authored-by: Brett Kolodny <brettkolodny@gmail.com>
Co-authored-by: Dean Sheather <dean@deansheather.com>
Co-authored-by: Steven Masley <Emyrk@users.noreply.github.com>
2025-09-02 16:19:17 -05:00
Cian Johnston 8083d9d5c8 fix(cli): attach org option to task create (#19554)
Attaches the org context options to the exp task create cmd
2025-08-26 19:42:02 +01:00
Callum Styan f0cf0adcc8 feat: log additional known non-sensitive query param fields in the httpmw logger (#19532)
Blink helped here but it's suggestion was to have a set map of sensitive
fields based on predefined constants in various files, such as the api
token string names. For now we'll add additional query param logging for fields we know are safe/that we want to log, such as query pagination/limit fields and ID list counts which may help identify P99 DB query latencies.

---------

Signed-off-by: Callum Styan <callumstyan@gmail.com>
2025-08-26 11:14:53 -07:00
Brett Kolodny d274f832b3 chore: improve scroll behavior of DashboardLayout wrapped pages (#19396)
Updates the the `DashboardLayout` to create a singular scroll area
between the top nav bar and the deployment banner on the bottom. Also
improves the scroll behavior of the org settings pages.

<img width="2122" height="1413" alt="CleanShot 2025-08-18 at 13 53 01"
src="https://github.com/user-attachments/assets/a9920509-69e7-471d-ac0d-853cb212fcae"
/>




https://github.com/user-attachments/assets/128be43d-433f-4a0f-af5b-bbfb7d646345
2025-08-26 14:14:44 -04:00
Bruno Quaresma 59525f879b feat: display startup script logs while agent is starting (#19530)
Closes https://github.com/coder/coder/issues/19363

**Screenshot:**

<img width="1318" height="753" alt="Screenshot 2025-08-25 at 11 02 25"
src="https://github.com/user-attachments/assets/6fa1d4c7-dddb-4db9-a9f0-86986b3628d8"
/>

**Demo:**


https://github.com/user-attachments/assets/07a68e30-b776-44f9-b4ca-e2dd8d124281
2025-08-26 12:45:07 -03:00
Bruno Quaresma a1546b5414 refactor: replace task prompt by workspace name in the topbar (#19531)
Fixes https://github.com/coder/coder/issues/19524

**Screenshot:**

<img width="1512" height="773" alt="Screenshot 2025-08-25 at 14 59 11"
src="https://github.com/user-attachments/assets/5d958302-04b3-4cd6-8e59-41a3048798be"
/>

**Demo:**


https://github.com/user-attachments/assets/040490ea-b276-48d7-9f3a-d8261d982bb5

**Changes:**
- Change "View workspace" button to icon + "Workspace"
- Updated the title to use the workspace name instead of the prompt
- Added a prompt button, so the user can see what is the prompt that is
running + copy it easily
2025-08-26 12:24:52 -03:00
Cian Johnston 5baaf2747d feat(cli): implement exp task status command (#19533)
Closes https://github.com/coder/internal/issues/900

- Implements `coder exp task status`
- Adds `testutil.MustURL` helper
2025-08-26 16:01:35 +01:00
Danielle Maywood c19f430f35 fix(cli): display workspace created at time instead of current time (#19553)
Applying a suggestion from
https://github.com/coder/coder/pull/19492#discussion_r2301175791
2025-08-26 15:57:44 +01:00
Steven Masley ef0d74fb75 chore: improve performance of 'GetLatestWorkspaceBuildsByWorkspaceIDs' (#19452)
Closes https://github.com/coder/internal/issues/716

This prevents a scan over the entire `workspace_build` table by removing
a `join`. This is still imperfect as we are still scanning over the
number of builds for the workspaces in the arguments. Ideally we would
have some index or something precomputed. Then we could skip scanning
over the builds for the correct workspaces that are not the latest.
2025-08-26 09:26:11 -05:00
Danielle Maywood 63c1325ad5 feat(cli): add exp task create command (#19492)
Partially implements https://github.com/coder/internal/issues/893

This isn't the full implementation of `coder exp tasks create` as
defined in the issue, but it is the minimum required to create a task.
2025-08-26 15:24:42 +01:00
dependabot[bot] 73544a1cc8 chore: bump github.com/mark3labs/mcp-go from 0.37.0 to 0.38.0 (#19544)
Bumps [github.com/mark3labs/mcp-go](https://github.com/mark3labs/mcp-go)
from 0.37.0 to 0.38.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mark3labs/mcp-go/releases">github.com/mark3labs/mcp-go's
releases</a>.</em></p>
<blockquote>
<h2>Release v0.38.0</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: resolve stdio transport race condition for concurrent tool
calls by <a href="https://github.com/ezynda3"><code>@​ezynda3</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/529">mark3labs/mcp-go#529</a></li>
<li>fix CallToolResult json marshaling and unmarshaling: need
structuredC… by <a
href="https://github.com/sunfuze"><code>@​sunfuze</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/523">mark3labs/mcp-go#523</a></li>
<li>feat: refactor constants for resource content types by <a
href="https://github.com/CocaineCong"><code>@​CocaineCong</code></a> in
<a
href="https://redirect.github.com/mark3labs/mcp-go/pull/489">mark3labs/mcp-go#489</a></li>
<li>feat: add missing SetPrompts, DeleteResources, and SetResources
methods by <a
href="https://github.com/vasayxtx"><code>@​vasayxtx</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/445">mark3labs/mcp-go#445</a></li>
<li>feat: support creating tools using go-struct-style input schema by
<a href="https://github.com/Grivn"><code>@​Grivn</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/534">mark3labs/mcp-go#534</a></li>
<li>fix: remove duplicate methods server.SetPrompts &amp;
server.SetResources by <a
href="https://github.com/matthisholleville"><code>@​matthisholleville</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/542">mark3labs/mcp-go#542</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/sunfuze"><code>@​sunfuze</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/523">mark3labs/mcp-go#523</a></li>
<li><a href="https://github.com/Grivn"><code>@​Grivn</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/534">mark3labs/mcp-go#534</a></li>
<li><a
href="https://github.com/matthisholleville"><code>@​matthisholleville</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/542">mark3labs/mcp-go#542</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.37.0...v0.38.0">https://github.com/mark3labs/mcp-go/compare/v0.37.0...v0.38.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/35ebaa54ae30076f93c4beb1f7269004cf0e90be"><code>35ebaa5</code></a>
Add releases notification</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/9f16336f83e17d0659fc49798f233f9dcd910da0"><code>9f16336</code></a>
fix: remove duplicate methods server.SetPrompts &amp;
server.SetResources (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/542">#542</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/8a18f594dd9ec9df1daa382aa611d83eba8f809c"><code>8a18f59</code></a>
feat: support creating tools using go-struct-style input schema (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/534">#534</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/a3d34d980b9a6bfbbaa78cfc0cfb9c78d9b6f7da"><code>a3d34d9</code></a>
feat: add missing SetPrompts, DeleteResources, and SetResources methods
(<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/445">#445</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/8a88d013b3bf38cc37f0ef7fa0b4d7b957b8a6fc"><code>8a88d01</code></a>
feat:add constants for resource content types (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/489">#489</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/9c5d30312932f87f51257af2575936976d1c1622"><code>9c5d303</code></a>
fix CallToolResult json marshaling and unmarshaling: need structuredC…
(<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/523">#523</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/93935261086dda133e3e4b6447304e24deb56a21"><code>9393526</code></a>
fix: resolve stdio transport race condition for concurrent tool calls
(<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/529">#529</a>)</li>
<li>See full diff in <a
href="https://github.com/mark3labs/mcp-go/compare/v0.37.0...v0.38.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/mark3labs/mcp-go&package-manager=go_modules&previous-version=0.37.0&new-version=0.38.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>
2025-08-25 22:36:38 +00:00
dependabot[bot] 7b0a2dc2a0 chore: bump github.com/valyala/fasthttp from 1.64.0 to 1.65.0 (#19539)
Bumps [github.com/valyala/fasthttp](https://github.com/valyala/fasthttp)
from 1.64.0 to 1.65.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/valyala/fasthttp/releases">github.com/valyala/fasthttp's
releases</a>.</em></p>
<blockquote>
<h2>v1.65.0</h2>
<h2>‼️ ⚠️ backwards incompatibility! ⚠️ ‼️</h2>
<p>In this version of fasthttp, headers delimited by just
<code>\n</code> (instead of <code>\r\n</code>) are no longer
supported!</p>
<h2>What's Changed</h2>
<ul>
<li>Rewrite header parsing to improve spec compliance by <a
href="https://github.com/erikdubbelboer"><code>@​erikdubbelboer</code></a>
in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2030">valyala/fasthttp#2030</a></li>
<li>Simplify Client.Do function and lock usage by <a
href="https://github.com/byte0o"><code>@​byte0o</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2038">valyala/fasthttp#2038</a></li>
<li>chore(deps): bump securego/gosec from 2.22.5 to 2.22.7 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2039">valyala/fasthttp#2039</a></li>
<li>Fix trailer security by <a
href="https://github.com/erikdubbelboer"><code>@​erikdubbelboer</code></a>
in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2043">valyala/fasthttp#2043</a></li>
<li>Fix RequestHeader.ContentLength() if disableSpecialHeader is true by
<a
href="https://github.com/erikdubbelboer"><code>@​erikdubbelboer</code></a>
in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2042">valyala/fasthttp#2042</a></li>
<li>Add reuseport support for Solaris by <a
href="https://github.com/jwntree"><code>@​jwntree</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2046">valyala/fasthttp#2046</a></li>
<li>test: replace atomic operations with atomic types by <a
href="https://github.com/alexandear"><code>@​alexandear</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2048">valyala/fasthttp#2048</a></li>
<li>chore(deps): bump golang.org/x/net from 0.42.0 to 0.43.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2049">valyala/fasthttp#2049</a></li>
<li>Optimize fs to have 0 allocations by <a
href="https://github.com/erikdubbelboer"><code>@​erikdubbelboer</code></a>
in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2052">valyala/fasthttp#2052</a></li>
<li>chore(deps): bump actions/checkout from 4 to 5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2055">valyala/fasthttp#2055</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/jwntree"><code>@​jwntree</code></a> made
their first contribution in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2046">valyala/fasthttp#2046</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/valyala/fasthttp/compare/v1.64.0...v1.65.0">https://github.com/valyala/fasthttp/compare/v1.64.0...v1.65.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/valyala/fasthttp/commit/f9d84d7c5242423b3ddac7ce6c671ff817274296"><code>f9d84d7</code></a>
Rewrite header parsing to improve spec compliance (<a
href="https://redirect.github.com/valyala/fasthttp/issues/2030">#2030</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/89010cb2c614d1b0454440ffd4fe54e9d08505b4"><code>89010cb</code></a>
chore(deps): bump actions/checkout from 4 to 5 (<a
href="https://redirect.github.com/valyala/fasthttp/issues/2055">#2055</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/1828bd4eee29b489a516b8c01446e621b3a6953e"><code>1828bd4</code></a>
Optimize fs to have 0 allocations (<a
href="https://redirect.github.com/valyala/fasthttp/issues/2052">#2052</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/81ebee8c79ae193cb2e30ed2b326ece3681278a8"><code>81ebee8</code></a>
Fix PeekKeys()</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/c20414a496d520c50299276aab29b43261e54d7c"><code>c20414a</code></a>
Remove BenchmarkCoarseTimeNow</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/3f641c3246225546dc80ffbdffaafb7ac38e4b82"><code>3f641c3</code></a>
chore(deps): bump golang.org/x/net from 0.42.0 to 0.43.0 (<a
href="https://redirect.github.com/valyala/fasthttp/issues/2049">#2049</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/51b494732003f551d59bf466e3927d9986f96eae"><code>51b4947</code></a>
test: replace atomic operations with atomic types (<a
href="https://redirect.github.com/valyala/fasthttp/issues/2048">#2048</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/1d8fe19359b6f308806a2773713bfde7f13ddf29"><code>1d8fe19</code></a>
Add reuseport support for Solaris (<a
href="https://redirect.github.com/valyala/fasthttp/issues/2046">#2046</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/01d533ad1561d9f2b8878f14e2267e12fc37db1a"><code>01d533a</code></a>
Fix RequestHeader.ContentLength() if disableSpecialHeader is true (<a
href="https://redirect.github.com/valyala/fasthttp/issues/2042">#2042</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/a1c842f19eda39be4b4a60b9d5989aa41e0ba166"><code>a1c842f</code></a>
Fix trailer security (<a
href="https://redirect.github.com/valyala/fasthttp/issues/2043">#2043</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/valyala/fasthttp/compare/v1.64.0...v1.65.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/valyala/fasthttp&package-manager=go_modules&previous-version=1.64.0&new-version=1.65.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>
2025-08-25 22:14:41 +00:00
dependabot[bot] 2c1406ffe2 chore: bump github.com/brianvoe/gofakeit/v7 from 7.3.0 to 7.4.0 (#19537)
Bumps
[github.com/brianvoe/gofakeit/v7](https://github.com/brianvoe/gofakeit)
from 7.3.0 to 7.4.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/brianvoe/gofakeit/commit/e2348ee0ad38880e92a28467eefeea73e83bea49"><code>e2348ee</code></a>
address - added unit</li>
<li><a
href="https://github.com/brianvoe/gofakeit/commit/4f7e2ec5cb004701c50b8552eb7a2f7ac4f8453e"><code>4f7e2ec</code></a>
Merge pull request <a
href="https://redirect.github.com/brianvoe/gofakeit/issues/384">#384</a>
from Kzamirtay/fix-iso4217</li>
<li><a
href="https://github.com/brianvoe/gofakeit/commit/de10081cdaf64c754743d8e16356e8ab49697059"><code>de10081</code></a>
fix wrong codes data currency by iso 4217</li>
<li><a
href="https://github.com/brianvoe/gofakeit/commit/08d115b2b7886c80aa1024449e6f8f915964f6d0"><code>08d115b</code></a>
readme - added merch link</li>
<li><a
href="https://github.com/brianvoe/gofakeit/commit/13e15a3392936b0c3f94d408f95562dd991c7577"><code>13e15a3</code></a>
image - merch image</li>
<li><a
href="https://github.com/brianvoe/gofakeit/commit/6b938f8ba0fd43d6f76a4340889c4a3f6ec2b66c"><code>6b938f8</code></a>
readme - added isbn</li>
<li>See full diff in <a
href="https://github.com/brianvoe/gofakeit/compare/v7.3.0...v7.4.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/brianvoe/gofakeit/v7&package-manager=go_modules&previous-version=7.3.0&new-version=7.4.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>
2025-08-25 22:10:15 +00:00
dependabot[bot] 8416882ebb chore: bump go.uber.org/mock from 0.5.0 to 0.6.0 (#19538)
Bumps [go.uber.org/mock](https://github.com/uber/mock) from 0.5.0 to
0.6.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/uber/mock/releases">go.uber.org/mock's
releases</a>.</em></p>
<blockquote>
<h2>v0.6.0</h2>
<h2>0.6.0 (18 Aug 2025)</h2>
<h3>Added</h3>
<ul>
<li><a
href="https://redirect.github.com/uber/mock/issues/258">#258</a>[]:
Archive mode: a new mockgen mode that generates mocks out of archive
files.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><a
href="https://redirect.github.com/uber/mock/issues/276">#276</a>[]:
Fixed mockgen errors with go1.25 due to outdated golang.org/x/tools
dependency.</li>
</ul>
<p><a href="https://redirect.github.com/uber/mock/issues/258">#258</a>:
<a
href="https://redirect.github.com/uber-go/mock/pull/258">uber-go/mock#258</a>
<a href="https://redirect.github.com/uber/mock/issues/276">#276</a>: <a
href="https://redirect.github.com/uber-go/mock/pull/276">uber-go/mock#276</a></p>
<h2>v0.5.2</h2>
<h2>0.5.2 (28 Apr 2025)</h2>
<h3>Fixed</h3>
<ul>
<li><a
href="https://redirect.github.com/uber/mock/issues/248">#248</a>[]:
Fixed an issue with type aliases not being included in generated code
correctly.</li>
</ul>
<p><a href="https://redirect.github.com/uber/mock/issues/248">#248</a>:
<a
href="https://redirect.github.com/uber-go/mock/pull/248">uber-go/mock#248</a></p>
<h2>v0.5.1</h2>
<h2>0.5.1 (7 Apr 2025)</h2>
<h3>Fixed</h3>
<ul>
<li><a
href="https://redirect.github.com/uber/mock/issues/220">#220</a>[]:
Package mode will now generate code that uses aliases of types
when they are used in the source.</li>
<li><a
href="https://redirect.github.com/uber/mock/issues/219">#219</a>[]:
Fixed a collision between function argument names and package names
in generated code.</li>
<li><a
href="https://redirect.github.com/uber/mock/issues/165">#165</a>[]:
Fixed an issue where aliases specified by <code>-imports</code> were not
being
respected in generated code.</li>
</ul>
<p><a href="https://redirect.github.com/uber/mock/issues/220">#220</a>:
<a
href="https://redirect.github.com/uber-go/mock/pull/220">uber-go/mock#220</a>
<a href="https://redirect.github.com/uber/mock/issues/219">#219</a>: <a
href="https://redirect.github.com/uber-go/mock/pull/219">uber-go/mock#219</a>
<a href="https://redirect.github.com/uber/mock/issues/165">#165</a>: <a
href="https://redirect.github.com/uber-go/mock/pull/165">uber-go/mock#165</a></p>
<p>Thanks to <a
href="https://github.com/mtoader"><code>@​mtoader</code></a> and <a
href="https://github.com/bstncartwright"><code>@​bstncartwright</code></a>
for their contributions to this release.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/uber-go/mock/blob/main/CHANGELOG.md">go.uber.org/mock's
changelog</a>.</em></p>
<blockquote>
<h2>0.6.0 (18 Aug 2025)</h2>
<h3>Added</h3>
<ul>
<li><a
href="https://redirect.github.com/uber/mock/issues/258">#258</a>[]:
Archive mode: a new mockgen mode that generates mocks out of archive
files.</li>
<li><a
href="https://redirect.github.com/uber/mock/issues/262">#262</a>[]:
Support for specifying mock names when using the
<code>_gomock_archive</code> bazel rule.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><a
href="https://redirect.github.com/uber/mock/issues/276">#276</a>[]:
Fixed mockgen errors with go1.25 due to outdated golang.org/x/tools
dependency.</li>
</ul>
<p><a href="https://redirect.github.com/uber/mock/issues/258">#258</a>:
<a
href="https://redirect.github.com/uber-go/mock/pull/258">uber-go/mock#258</a>
<a href="https://redirect.github.com/uber/mock/issues/262">#262</a>: <a
href="https://redirect.github.com/uber-go/mock/pull/262">uber-go/mock#262</a>
<a href="https://redirect.github.com/uber/mock/issues/276">#276</a>: <a
href="https://redirect.github.com/uber-go/mock/pull/276">uber-go/mock#276</a></p>
<h2>0.5.2 (28 Apr 2025)</h2>
<h3>Fixed</h3>
<ul>
<li><a
href="https://redirect.github.com/uber/mock/issues/248">#248</a>[]:
Fixed an issue with type aliases not being included in generated code
correctly.</li>
</ul>
<p><a href="https://redirect.github.com/uber/mock/issues/248">#248</a>:
<a
href="https://redirect.github.com/uber-go/mock/pull/248">uber-go/mock#248</a></p>
<h2>0.5.1 (7 Apr 2025)</h2>
<h3>Fixed</h3>
<ul>
<li><a
href="https://redirect.github.com/uber/mock/issues/220">#220</a>[]:
Package mode will now generate code that uses aliases of types
when they are used in the source.</li>
<li><a
href="https://redirect.github.com/uber/mock/issues/219">#219</a>[]:
Fixed a collision between function argument names and package names
in generated code.</li>
<li><a
href="https://redirect.github.com/uber/mock/issues/165">#165</a>[]:
Fixed an issue where aliases specified by <code>-imports</code> were not
being
respected in generated code.</li>
</ul>
<p><a href="https://redirect.github.com/uber/mock/issues/220">#220</a>:
<a
href="https://redirect.github.com/uber-go/mock/pull/220">uber-go/mock#220</a>
<a href="https://redirect.github.com/uber/mock/issues/219">#219</a>: <a
href="https://redirect.github.com/uber-go/mock/pull/219">uber-go/mock#219</a>
<a href="https://redirect.github.com/uber/mock/issues/165">#165</a>: <a
href="https://redirect.github.com/uber-go/mock/pull/165">uber-go/mock#165</a></p>
<p>Thanks to <a
href="https://github.com/mtoader"><code>@​mtoader</code></a> and <a
href="https://github.com/bstncartwright"><code>@​bstncartwright</code></a>
for their contributions to this release.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/uber-go/mock/commit/2d1c58167e30f380cf78e44a43b100a14767e817"><code>2d1c581</code></a>
Prepare release v0.6.0 (<a
href="https://redirect.github.com/uber/mock/issues/278">#278</a>)</li>
<li><a
href="https://github.com/uber-go/mock/commit/c65419553997ae71c1542dc7733358c020d03880"><code>c654195</code></a>
Update CI to run 1.24/1.25 (<a
href="https://redirect.github.com/uber/mock/issues/277">#277</a>)</li>
<li><a
href="https://github.com/uber-go/mock/commit/5900c74f02ff1a28eeb59f3e2a0ef6c27e217148"><code>5900c74</code></a>
update golang.org/x/tools to v0.36.0 (<a
href="https://redirect.github.com/uber/mock/issues/276">#276</a>)</li>
<li><a
href="https://github.com/uber-go/mock/commit/6a0445c87f2d82e304033c553dadd34d2a1a8120"><code>6a0445c</code></a>
feat(bazel): mock_names flag support in archive mode (<a
href="https://redirect.github.com/uber/mock/issues/262">#262</a>)</li>
<li><a
href="https://github.com/uber-go/mock/commit/aa11bfcd02f7339576f4cef5b8c697f980f607d2"><code>aa11bfc</code></a>
feat(bazel): support archive mode (<a
href="https://redirect.github.com/uber/mock/issues/259">#259</a>)</li>
<li><a
href="https://github.com/uber-go/mock/commit/359202c7b2fe16fad86eae73a0ff732f8cb363b9"><code>359202c</code></a>
Support for archive mode (<a
href="https://redirect.github.com/uber/mock/issues/258">#258</a>)</li>
<li><a
href="https://github.com/uber-go/mock/commit/871d86bb6f8b22d0c4d250ebca1f9d674f6e6d1e"><code>871d86b</code></a>
Back to development (<a
href="https://redirect.github.com/uber/mock/issues/251">#251</a>)</li>
<li><a
href="https://github.com/uber-go/mock/commit/0b8095f698fe3b6414a8d1321e990100ba8ce5bc"><code>0b8095f</code></a>
Prepare release v0.5.2 (<a
href="https://redirect.github.com/uber/mock/issues/250">#250</a>)</li>
<li><a
href="https://github.com/uber-go/mock/commit/8ce01ac54df4c2f4443bbe7de345188289af8c4e"><code>8ce01ac</code></a>
Bump go.mod to 1.23 and remove alias replacements (<a
href="https://redirect.github.com/uber/mock/issues/248">#248</a>)</li>
<li><a
href="https://github.com/uber-go/mock/commit/6568d888c79f7c03d45c396af40b608782fae4df"><code>6568d88</code></a>
Back to development. (<a
href="https://redirect.github.com/uber/mock/issues/242">#242</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/uber/mock/compare/v0.5.0...v0.6.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=go.uber.org/mock&package-manager=go_modules&previous-version=0.5.0&new-version=0.6.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>
2025-08-25 22:09:46 +00:00
dependabot[bot] df28da677a chore: bump github.com/aws/aws-sdk-go-v2 from 1.37.2 to 1.38.1 (#19536)
Bumps
[github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2)
from 1.37.2 to 1.38.1.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/ba4ee4da236306b260326a7a913f61cb19355110"><code>ba4ee4d</code></a>
Release 2025-08-21</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/40e3d871f1507d7b7a10b101dd65c5c85ec183c2"><code>40e3d87</code></a>
Regenerated Clients</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/b2be01902dbbdbdec11e3fe7a9ca56aa45c9edcd"><code>b2be019</code></a>
Update partitions file</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/dece4e78c3752a54cc2393bf375672ca7b66b260"><code>dece4e7</code></a>
Update endpoints model</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/294af1979f20160f82f273fd00790466bc8f7daa"><code>294af19</code></a>
Update API model</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/0df860a876d097b792f61fd35caea13c86247d46"><code>0df860a</code></a>
changelog</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/df2bca243bed6101bdee10478def6146a7f7e647"><code>df2bca2</code></a>
feature(s3/manager): add option to control default checksums (<a
href="https://redirect.github.com/aws/aws-sdk-go-v2/issues/3151">#3151</a>)</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/315de9ca18b06a3bc807313c9f79b56e2956009a"><code>315de9c</code></a>
Release 2025-08-20</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/1a9d79d3c8d2dcf70265875f2ed6a8af678454d5"><code>1a9d79d</code></a>
Regenerated Clients</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/79594120103fbf7a5aa836f8c640b9c255453835"><code>7959412</code></a>
Update endpoints model</li>
<li>Additional commits viewable in <a
href="https://github.com/aws/aws-sdk-go-v2/compare/v1.37.2...v1.38.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2&package-manager=go_modules&previous-version=1.37.2&new-version=1.38.1)](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>
2025-08-25 22:02:36 +00:00
dependabot[bot] f008b599f9 chore: bump google.golang.org/grpc from 1.74.2 to 1.75.0 (#19535)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from
1.74.2 to 1.75.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/grpc/grpc-go/releases">google.golang.org/grpc's
releases</a>.</em></p>
<blockquote>
<h2>Release 1.75.0</h2>
<h1>Behavior Changes</h1>
<ul>
<li>xds: Remove support for GRPC_EXPERIMENTAL_XDS_FALLBACK environment
variable. Fallback support can no longer be disabled. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8482">#8482</a>)</li>
<li>stats: Introduce <code>DelayedPickComplete</code> event, a type
alias of <code>PickerUpdated</code>. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8465">#8465</a>)
<ul>
<li>This (combined) event will now be emitted only once per call, when a
transport is successfully selected for the attempt.</li>
<li>OpenTelemetry metrics will no longer have multiple &quot;Delayed LB
pick complete&quot; events in Go, matching other gRPC languages.</li>
<li>A future release will delete the <code>PickerUpdated</code>
symbol.</li>
</ul>
</li>
<li>credentials: Properly apply <code>grpc.WithAuthority</code> as the
highest-priority option for setting authority, above the setting in the
credentials themselves. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8488">#8488</a>)
<ul>
<li>Now that this <code>WithAuthority</code> is available, the
credentials should not be used to override the authority.</li>
</ul>
</li>
<li>round_robin: Randomize the order in which addresses are connected to
in order to spread out initial RPC load between clients. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8438">#8438</a>)</li>
<li>server: Return status code INTERNAL when a client sends more than
one request in unary and server streaming RPC. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8385">#8385</a>)
<ul>
<li>This is a behavior change but also a bug fix to bring gRPC-Go in
line with the gRPC spec.</li>
</ul>
</li>
</ul>
<h1>New Features</h1>
<ul>
<li>dns: Add an environment variable
(<code>GRPC_ENABLE_TXT_SERVICE_CONFIG</code>) to provide a way to
disable TXT lookups in the DNS resolver (by setting it to
<code>false</code>). By default, TXT lookups are enabled, as they were
previously. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8377">#8377</a>)</li>
</ul>
<h1>Bug Fixes</h1>
<ul>
<li>xds: Fix regression preventing empty node IDs in xDS bootstrap
configuration. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8476">#8476</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/davinci26"><code>@​davinci26</code></a></li>
</ul>
</li>
<li>xds: Fix possible panic when certain invalid resources are
encountered. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8412">#8412</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/wooffie"><code>@​wooffie</code></a></li>
</ul>
</li>
<li>xdsclient: Fix a rare panic caused by processing a response from a
closed server. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8389">#8389</a>)</li>
<li>stats: Fix metric unit formatting by enclosing non-standard units
like <code>call</code> and <code>endpoint</code> in curly braces to
comply with UCUM and gRPC OpenTelemetry guidelines. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8481">#8481</a>)</li>
<li>xds: Fix possible panic when clusters are removed from the xds
configuration. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8428">#8428</a>)</li>
<li>xdsclient: Fix a race causing &quot;resource doesn not exist&quot;
when rapidly subscribing and unsubscribing to the same resource. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8369">#8369</a>)</li>
<li>client: When determining the authority, properly percent-encode (if
needed, which is unlikely) when the target string omits the hostname and
only specifies a port
(<code>grpc.NewClient(&quot;:&lt;port-number-or-name&gt;&quot;)</code>).
(<a
href="https://redirect.github.com/grpc/grpc-go/issues/8488">#8488</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/grpc/grpc-go/commit/b9788ef265596eda98a4391079c70c3992ed47cb"><code>b9788ef</code></a>
Change version to 1.75.0 (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8493">#8493</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/2bd74b28f5a7d464de4ed6927aef4b69abc0d3af"><code>2bd74b2</code></a>
credentials: fix behavior of grpc.WithAuthority and credential handshake
prec...</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/9fa3267859958a7fa0141a8180102850f3d5842c"><code>9fa3267</code></a>
xds: remove xds client fallback environment variable (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8482">#8482</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/62ec29fd9b3f9ea3cea6dc08a31e837aa92678b7"><code>62ec29f</code></a>
grpc: Fix cardinality violations in non-client streaming RPCs. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8385">#8385</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/85240a5b02defe7b653ccba66866b4370c982b6a"><code>85240a5</code></a>
stats: change non-standard units to annotations (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8481">#8481</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/ac13172781fae5593fd97ce07c3019c4044a71cd"><code>ac13172</code></a>
update deps (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8478">#8478</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/0a895bc971a89c68c00070f792a28cc533846780"><code>0a895bc</code></a>
examples/opentelemetry: use experimental metrics in example (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8441">#8441</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/8b61e8f7b8fe9b0a4217336f6a4a31731338c3b2"><code>8b61e8f</code></a>
xdsclient: do not process updates from closed server channels (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8389">#8389</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/7238ab1822875fdc2864e06fb224236dc7cbf3bf"><code>7238ab1</code></a>
Allow empty nodeID (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8476">#8476</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/9186ebd774370e3b3232d1b202914ff8fc2c56d6"><code>9186ebd</code></a>
cleanup: use slices.Equal to simplify code (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8472">#8472</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/grpc/grpc-go/compare/v1.74.2...v1.75.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/grpc&package-manager=go_modules&previous-version=1.74.2&new-version=1.75.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>
2025-08-25 21:20:40 +00:00
blink-so[bot] 9b7d41dbea chore: update terraform to 1.13.0 (#19509)
Co-authored-by: Jon Ayers <jon@coder.com>
2025-08-25 10:06:06 -07:00
Bruno Quaresma e7591aa453 chore: preload inter and ibm mono fonts in storybook (#19455)
This aims to solve font rendering issues in Storybook like the
inconsistent snapshot below.

**Inconsistent snapshot:**
<img width="3022" height="1552" alt="image"
src="https://github.com/user-attachments/assets/ad0e1060-89cc-4255-b601-97ed59286080"
/>


**References:**
-
https://www.chromatic.com/docs/troubleshooting-snapshots/#why-are-fonts-in-my-graph-component-rendering-inconsistently
- https://fontsource.org/docs/getting-started/preload
2025-08-25 10:41:16 -03:00
Mathias Fredriksson 836324e641 feat(cli): add coder exp tasks list (#19496)
Fixes coder/internal#892
Fixes coder/internal#896

Example output:

```
❯ coder exp task list
ID                                    NAME                         STATUS   STATE  STATE CHANGED  MESSAGE
a7a27450-ca16-4553-a6c5-9d6f04808569  task-hardcore-herschel-bd08  running  idle   5h22m3s ago    Listed root directory contents, working directory reset
50f92138-f463-4f2b-abad-1816264b065f  task-musing-dewdney-f058     running  idle   6h3m8s ago     Completed arithmetic calculation
```
2025-08-25 13:03:32 +00:00
Ethan cef2904108 chore(scaletest): use random deployment password (#19516)
Closes https://github.com/coder/internal/issues/932
2025-08-25 22:31:54 +10:00
ケイラ d7ee1019c0 feat: add endpoint for retrieving workspace acl (#19375)
Implements `/acl [get]` for workspaces, with tests.
Blocked by experiment enablement
2025-08-25 07:11:18 -05:00
ケイラ 86e401d85a chore: remove kirby button (#19501) 2025-08-25 07:09:55 -05:00
Ethan fe8ca2a440 chore(scaletest): add deployment name to all metrics (#19479)
If multiple of `alpha`, `bravo` or `charlie` are running simultaneously, we'll have trouble differentiating the metrics. To fix this, we'll add that name to all metrics. 
<img width="1051" height="113" alt="image" src="https://github.com/user-attachments/assets/618c0105-0668-46ba-af3f-13cce3d5d512" />
2025-08-25 12:45:31 +10:00
Ethan 6132cd5eba refactor(scaletest): use vpc for networking infrastructure (#19464)
This PR refactors the scaletest infrastructure to use a dedicated VPC for each deployment (i.e. alpha, bravo, charlie). It then peers that VPC with the observability VPC, and the Cloud SQL database. It also sets up subnetting for and within each deployment.

With this deployed, I was able to get the scaletest running with metrics flowing into `scaletest.cdr.dev`.

Co-authored-by: Dean Sheather <dean@deansheather.com>
2025-08-25 12:35:32 +10:00
Ethan 5145cd002d chore(scaletest): add tls to infrastructure (#19412)
Closes https://github.com/coder/internal/issues/850

This PR has the scaletest infrastructure retrieve and use TLS certificates from the persistent observability cluster.

To support creating multiple instances of the infrastructure simultaneously, `var.name` can be set to `alpha`, `bravo` or `charlie`, which retrieves the corresponding certificates.

Also:
- Adds support for wildcard apps.
- Retrieves the Cloudflare token from GCP secrets.
2025-08-25 12:25:09 +10:00
dependabot[bot] 236844e5cc chore: bump coder/cursor/coder from 1.3.0 to 1.3.1 in /dogfood/coder (#19514)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/cursor/coder&package-manager=terraform&previous-version=1.3.0&new-version=1.3.1)](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>
2025-08-25 01:33:01 +00:00
dependabot[bot] 3fadf1ae6e chore: bump coder/vscode-web/coder from 1.3.1 to 1.4.1 in /dogfood/coder (#19513)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/vscode-web/coder&package-manager=terraform&previous-version=1.3.1&new-version=1.4.1)](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>
2025-08-25 01:31:29 +00:00
dependabot[bot] 7977fa87aa chore: bump coder/claude-code/coder from 2.0.7 to 2.1.0 in /dogfood/coder (#19512)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/claude-code/coder&package-manager=terraform&previous-version=2.0.7&new-version=2.1.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>
2025-08-25 01:30:33 +00:00
Atif Ali 2b3ae549ca chore: rename docker-compose.yaml to compose.yaml (#19480)
Docker recommends using a `compose.yaml` file.
2025-08-23 11:32:14 +05:00
ケイラ 3b6c85a3f9 chore: add @Parkreiner as site/ CODEOWNER (#19502) 2025-08-22 13:40:24 -06:00
Bruno Quaresma cde5b624f4 feat: display the number of idle tasks in the navbar (#19471)
Depends on: https://github.com/coder/coder/pull/19377

Closes https://github.com/coder/coder/issues/19323

**Screenshot:**

<img width="1511" height="777" alt="Screenshot 2025-08-21 at 11 52 21"
src="https://github.com/user-attachments/assets/be04e507-bf04-47d0-8748-2f71b93b5685"
/>

**Screen recording:**


https://github.com/user-attachments/assets/f70b34fe-952b-427b-9bc9-71961ca23201



<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- New Features
- Added a Tasks navigation item showing a badge with the number of idle
tasks and a tooltip: “You have X tasks waiting for input.”

- Improvements
  - Fetches per-user tasks with periodic refresh for up-to-date counts.
- Updated active styling for the Tasks link for clearer navigation
state.
  - User menu now always appears on medium+ screens.

- Tests
- Expanded Storybook with preloaded, user-filtered task scenarios to
showcase idle/task states.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-08-22 15:24:32 -03:00
DevCats 6fbe777317 chore: add auggie icon (#19500)
add auggie icon
2025-08-22 12:53:33 -05:00
ケイラ 7e23081c2f chore: fix vite types (#19477) 2025-08-22 09:00:03 -06:00
Mathias Fredriksson 427b23f49a feat(coderd): add tasks list and get endpoints (#19468)
Fixes coder/internal#899

Example API response:

```json
{
  "tasks": [
    {
      "id": "a7a27450-ca16-4553-a6c5-9d6f04808569",
      "organization_id": "241e869f-1a61-42c9-ae1e-9d46df874058",
      "owner_id": "9e9b9475-0fc0-47b2-9170-a5b7b9a075ee",
      "name": "task-hardcore-herschel-bd08",
      "template_id": "accab607-bbda-4794-89ac-da3926a8b71c",
      "workspace_id": "a7a27450-ca16-4553-a6c5-9d6f04808569",
      "initial_prompt": "What directory are you in?",
      "status": "running",
      "current_state": {
        "timestamp": "2025-08-22T10:03:27.837842Z",
        "state": "working",
        "message": "Listed root directory contents, working directory reset",
        "uri": ""
      },
      "created_at": "2025-08-22T09:21:39.697094Z",
      "updated_at": "2025-08-22T09:21:39.697094Z"
    },
    {
      "id": "50f92138-f463-4f2b-abad-1816264b065f",
      "organization_id": "241e869f-1a61-42c9-ae1e-9d46df874058",
      "owner_id": "9e9b9475-0fc0-47b2-9170-a5b7b9a075ee",
      "name": "task-musing-dewdney-f058",
      "template_id": "accab607-bbda-4794-89ac-da3926a8b71c",
      "workspace_id": "50f92138-f463-4f2b-abad-1816264b065f",
      "initial_prompt": "What is 1 + 1?",
      "status": "running",
      "current_state": {
        "timestamp": "2025-08-22T09:22:33.810707Z",
        "state": "idle",
        "message": "Completed arithmetic calculation",
        "uri": ""
      },
      "created_at": "2025-08-22T09:18:28.027378Z",
      "updated_at": "2025-08-22T09:18:28.027378Z"
    }
  ],
  "count": 2
}
```
2025-08-22 17:11:31 +03:00
Cian Johnston fe36e9c120 fix(dogfood/coder): allow mutable ai_prompt parameter (#19493) 2025-08-22 15:08:42 +01:00
Edward Angert 49f32d14eb docs: add dev containers and scheduling to prebuilt workspaces known issues (#18816)
closes #18806 

- [x] scheduling limitation
- [x] dev containers limitation
- [x] edit intro


[preview](https://coder.com/docs/@18806-prebuilds-known-limits/admin/templates/extending-templates/prebuilt-workspaces)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Documentation**
* Clarified the introduction and administrator responsibilities for
prebuilt workspaces.
* Integrated compatibility information about DevContainers and workspace
scheduling more contextually.
* Added explicit notes on limitations with dev containers integration
and workspace autostart/autostop features.
* Improved configuration examples and clarified scheduling instructions.
* Enhanced explanations of scheduling behavior and lifecycle steps for
better understanding.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
Co-authored-by: Sas Swart <sas.swart.cdk@gmail.com>
Co-authored-by: Susana Ferreira <susana@coder.com>
2025-08-22 15:54:28 +02:00
Cian Johnston 5e49d8c569 chore: reduce execution time of TestProvisionerJobs (#19475)
Note: this commit was partially authored by AI.

- Replaces coderdtest.CreateTemplate/TemplateVersion() with direct dbgen
calls. We do not need a fully functional template for these tests.
- Removes provisioner daemon creation/cleanup. We do not need a running
provisioner daemon here; this functionality is tested elsewhere.
  - Simplifies provisioner job creation test helpers.

This reduces the test runtime by over 50%:

Old:
```
time go test -count=100 ./cli -test.run=TestProvisionerJobs
ok      github.com/coder/coder/v2/cli   50.149s
```

New:
```
time go test -count=100 ./cli -test.run=TestProvisionerJobs
ok      github.com/coder/coder/v2/cli   21.898
```
2025-08-22 13:40:06 +01:00
Danny Kopping 4970da433c chore: remove coderabbit (#19491) 2025-08-22 13:28:40 +02:00
Danny Kopping e549084b7f chore: add pull request template for AI guidelines (#19487) 2025-08-22 12:07:01 +02:00
Cian Johnston 213fffbfa6 chore: add git-config module to dogfood template (#19489)
As a developer, I want to be immediately able to run `git commit` in a
fresh workspace.
2025-08-22 09:37:48 +01:00
Dean Sheather 82f2e15974 chore: add unknown usage event type error (#19436)
- Adds `usagetypes.UnknownEventTypeError` type, which is returned by
`ParseEventWithType`
- Changes `ParseEvent` to not be a generic function since it doesn't
really need it
- Adds `User-Agent` to tallyman requests
2025-08-22 16:32:35 +10:00
Spike Curtis b90bc7c398 feat: use cloud secret for DNS token in scaletest TF (#19466)
Removes the requirement to obtain a Cloudflare DNS token from our scaletest/terraform/action builds. Instead, by default, we pull the token from Google Secrets Manager and use the `scaletest.dev` DNS domain.

Removes cloudflare_email as this was unneeded.  
  
Removes the cloudflare_zone_id and instead pulls it from a data source via the Cloudflare API.  
  
closes https://github.com/coder/internal/issues/839
2025-08-22 07:41:49 +02:00
Ethan a71e5cc8b0 test: add increasing integer to GetRandomNameHyphenated (#19481)
Fixes flakes like the following:
```
workspaces_test.go:4938: 
	Error Trace:	/home/runner/work/coder/coder/coderd/coderdtest/coderdtest.go:1279
											/home/runner/work/coder/coder/coderd/workspaces_test.go:4938
											/home/runner/work/coder/coder/coderd/workspaces_test.go:5044
	Error:      	Received unexpected error:
								POST http://127.0.0.1:42597/api/v2/users/me/workspaces: unexpected status code 409: Workspace "romantic-mcclintock" already exists.
									name: This value is already in use and should be unique.
	Test:       	TestWorkspaceCreateWithImplicitPreset/SinglePresetWithParameters
```

https://github.com/coder/coder/actions/runs/17142665868/job/48633017007?pr=19464
 
Which are caused by insufficient randomness when creating multiple
workspaces with random names. Two words is not enough to avoid flakes.
We have a `testutil.GetRandomName` function that appends a monotonically
increasing integer, but this alternative function that uses hyphens
doesn't add that integer. This PR fixes that by just
`testutil.GetRandomName`
2025-08-22 12:20:03 +10:00
Andrew Aquino 9a872f903e feat: show workspace health error alert above agents in WorkspacePage (#19400)
closes #19338 

<img width="1840" height="1191" alt="image"
src="https://github.com/user-attachments/assets/eeefda13-88d1-4a26-ba57-9749abda3f17"
/>
2025-08-21 17:22:25 -07:00
Rafael Rodriguez ad5e6785f4 feat: add filtering options to provisioners list (#19378)
## Summary

In this pull request we're adding support for additional filtering
options to the `provisioners list` CLI command and the
`/provisionerdaemons` API endpoint.

Resolves: https://github.com/coder/coder/issues/18783

### Changes

#### Added CLI Options

- `--show-offline`: When this option is provided, all provisioner
daemons will be returned. This means that when `--show-offline` is not
provided only `idle` and `busy` provisioner daemons will be returned.
- `--status=<list_of_statuses>`: When this option is provided with a
comma-separated list of valid statuses (`idle`, `busy`, or `offline`)
only provisioner daemons that have these statuses will be returned.
- `--max-age=<duration>`: When this option is provided with a valid
duration value (e.g., `24h`, `30s`) only provisioner daemons with a
`last_seen_at` timestamp within the provided max age will be returned.

#### Query Params

- `?offline=true`: Include offline provisioner daemons in the results.
Offline provisioner daemons will be excluded if `?offline=false` or if
offline is not provided.
- `?status=<list_of_statuses>`: Include provisioner daemons with the
specified statuses.
- `?max_age=<duration>`: Include provisioner daemons with a
`last_seen_at` timestamp within the max age duration.

#### Frontend

- Since offline provisioners will not be returned by default anymore
(`--show-offline` has to be provided to see them), a checkbox was added
to the provisioners list page to allow for offline provisioners to be
displayed
- A revamp of the provisioners page will be done in:
https://github.com/coder/coder/issues/17156, this checkbox change was
just added to maintain currently functionality with the backend updates

Current provisioners page (without checkbox)

<img width="1329" height="574" alt="Screenshot 2025-08-20 at 10 51
00 AM"
src="https://github.com/user-attachments/assets/77b73650-0b62-44f0-a77f-acbe5710809f"
/>

Provisioners page with checkbox (unchecked)

<img width="1314" height="626" alt="Screenshot 2025-08-20 at 10 48
40 AM"
src="https://github.com/user-attachments/assets/7ba164ad-6d3f-417b-bd39-338c0161b145"
/>

Provisioner page with checkbox (checked) and URL updated with query
parameters

<img width="1306" height="597" alt="Screenshot 2025-08-20 at 10 50
14 AM"
src="https://github.com/user-attachments/assets/e78d0986-bbf8-491b-9d56-b682973237a0"
/>

### Show Offline vs Offline Status

To list offline provisioner daemons, users can either:

1. Include the `--show-offline` option

OR

2. Include `offline` in the list of values provided to the `--status`
option
2025-08-21 16:03:34 -04:00
Bruno Quaresma d77c3d0226 feat: filter tasks that are waiting for user input (#19377)
Closes https://github.com/coder/coder/issues/19324

<img width="1624" height="974" alt="Screenshot 2025-08-15 at 14 45 39"
src="https://github.com/user-attachments/assets/a738d9af-f548-413b-a0e7-3f311cb997ee"
/>

---------

Co-authored-by: ケイラ <mckayla@hey.com>
2025-08-21 15:06:11 -03:00
Callum Styan 014a2d5b0f perf: don't call GetUserByID unnecessarily for Agents metrics loops (#19395)
At the moment, the loop which retrieves and updates the values of the
agents metrics excessively calls `GetUserByID` (a DB query). First it
retrieves a list of all workspaces, filtering out inactive agents (not
entirely clear to me whether this is non-running workspaces, or just
dead agents), and then iterates over those workspaces to get the rest of
the relevant data for the metrics. The next call is `GetUserByID` for
`workspace.OwnerID`. This is unnecessary because the `workspaces_visible` view we pull workspaces from has already been joined with the users table to get the username/name/etc.

This should at least partially resolve
https://github.com/coder/internal/issues/726 
---------

Signed-off-by: Callum Styan <callumstyan@gmail.com>
2025-08-21 11:01:32 -07:00
Bruno Quaresma 8aafbcb3be feat: show workspace build logs during tasks creation (#19413)
This is part of https://github.com/coder/coder/issues/19363

**Screenshot:**
<img width="1610" height="974" alt="Screenshot 2025-08-19 at 12 32 54"
src="https://github.com/user-attachments/assets/c7435b67-49ac-4b88-ae2d-014787cea5f2"
/>


**Video demo:**


https://github.com/user-attachments/assets/2249affd-3d51-4ff0-8a5f-a0358a90d659
2025-08-21 15:01:03 -03:00
Bruno Quaresma 54440af953 fix: fix workspaces pagination (#19448)
Fixes #18707 

**Before:**


https://github.com/user-attachments/assets/6d4fba3e-0f24-4f60-adb6-d48d73b720ff

**After:**


https://github.com/user-attachments/assets/483dad99-3095-4647-990d-8386dd0c4d75
2025-08-21 14:59:37 -03:00
Cian Johnston 86f9bed608 chore: fix TestCheckInactiveUsers flake (#19469)
THIS CODE WAS NOT WRITTEN BY A HUMAN.
Use a fixed time interval to avoid timing flakes.
2025-08-21 16:35:31 +01:00
dependabot[bot] fe289e8824 chore: bump github.com/go-viper/mapstructure/v2 from 2.3.0 to 2.4.0 (#19470)
Bumps
[github.com/go-viper/mapstructure/v2](https://github.com/go-viper/mapstructure)
from 2.3.0 to 2.4.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/go-viper/mapstructure/releases">github.com/go-viper/mapstructure/v2's
releases</a>.</em></p>
<blockquote>
<h2>v2.4.0</h2>
<h2>What's Changed</h2>
<ul>
<li>refactor: replace interface{} with any by <a
href="https://github.com/sagikazarmark"><code>@​sagikazarmark</code></a>
in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/115">go-viper/mapstructure#115</a></li>
<li>build(deps): bump github/codeql-action from 3.29.0 to 3.29.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/114">go-viper/mapstructure#114</a></li>
<li>Generic tests by <a
href="https://github.com/sagikazarmark"><code>@​sagikazarmark</code></a>
in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/118">go-viper/mapstructure#118</a></li>
<li>Fix godoc reference link in README.md by <a
href="https://github.com/peczenyj"><code>@​peczenyj</code></a> in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/107">go-viper/mapstructure#107</a></li>
<li>feat: add StringToTimeLocationHookFunc to convert strings to
*time.Location by <a
href="https://github.com/ErfanMomeniii"><code>@​ErfanMomeniii</code></a>
in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/117">go-viper/mapstructure#117</a></li>
<li>feat: add back previous StringToSlice as a weak function by <a
href="https://github.com/sagikazarmark"><code>@​sagikazarmark</code></a>
in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/119">go-viper/mapstructure#119</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/ErfanMomeniii"><code>@​ErfanMomeniii</code></a>
made their first contribution in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/117">go-viper/mapstructure#117</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/go-viper/mapstructure/compare/v2.3.0...v2.4.0">https://github.com/go-viper/mapstructure/compare/v2.3.0...v2.4.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/go-viper/mapstructure/commit/b9794a5f0e73d425210d6614ed833067029155f5"><code>b9794a5</code></a>
Merge pull request <a
href="https://redirect.github.com/go-viper/mapstructure/issues/119">#119</a>
from go-viper/string-to-weak-slice</li>
<li><a
href="https://github.com/go-viper/mapstructure/commit/17cdcb0741054e2a33938adf6bd1f2a5c0aa8f30"><code>17cdcb0</code></a>
feat: add back previous StringToSlice as a weak function</li>
<li><a
href="https://github.com/go-viper/mapstructure/commit/3caca3614c3ab2c5b5d359c44fdcd72058887b19"><code>3caca36</code></a>
Merge pull request <a
href="https://redirect.github.com/go-viper/mapstructure/issues/117">#117</a>
from ErfanMomeniii/main</li>
<li><a
href="https://github.com/go-viper/mapstructure/commit/9a861bc115f2b54ed4e494662f29c172d9ef046a"><code>9a861bc</code></a>
Merge pull request <a
href="https://redirect.github.com/go-viper/mapstructure/issues/107">#107</a>
from peczenyj/patch-2</li>
<li><a
href="https://github.com/go-viper/mapstructure/commit/86ed5b59da0615fb8c3a413f401cdf0231f1234c"><code>86ed5b5</code></a>
refactor: update</li>
<li><a
href="https://github.com/go-viper/mapstructure/commit/ace5b4e8b3dec99468ffa9498e42fb09d177b0a6"><code>ace5b4e</code></a>
chore: add interface any linter</li>
<li><a
href="https://github.com/go-viper/mapstructure/commit/1a4f1aef38bfa8549762aaf42c7c18a5d268e76e"><code>1a4f1ae</code></a>
Merge pull request <a
href="https://redirect.github.com/go-viper/mapstructure/issues/118">#118</a>
from go-viper/generic-tests</li>
<li><a
href="https://github.com/go-viper/mapstructure/commit/a2689090ed4348033c36724d866faf1f911a9f63"><code>a268909</code></a>
fix: lint</li>
<li><a
href="https://github.com/go-viper/mapstructure/commit/17f1fd44eb7606b109c9bb017c0a1c6d3e93b5cd"><code>17f1fd4</code></a>
test: add more comments</li>
<li><a
href="https://github.com/go-viper/mapstructure/commit/b48c8566836bf291bfee2b217d51fc36e8e61f6f"><code>b48c856</code></a>
test: expand tests</li>
<li>Additional commits viewable in <a
href="https://github.com/go-viper/mapstructure/compare/v2.3.0...v2.4.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/go-viper/mapstructure/v2&package-manager=go_modules&previous-version=2.3.0&new-version=2.4.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)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/coder/coder/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-21 15:08:50 +00:00
Callum Styan bcdade7d8c fix: add database constraint to enforce minimum username length (#19453)
Username length and format, via regex, are already enforced at the
application layer, but we have some code paths with database queries
where we could optimize away many of the DB query calls if we could be
sure at the database level that the username is never an empty string.

For example: https://github.com/coder/coder/pull/19395

---------

Signed-off-by: Callum Styan <callumstyan@gmail.com>
2025-08-21 07:56:41 -07:00
Spike Curtis 72f58c0483 fix: limit test parallelism in make test (#19465)
In order to get `make test` to reliably pass again on our dogfood
workspaces, we're having to resort to setting parallelism.

It also reworks our CI to call the `make test` target, instead of
rolling a different command.

Behavior changes:
 * sets 8 packages x 8 tests in parallel by default on `make test`
* by default, removes the `-short` flag. In my testing it makes only a
few seconds difference on ~200s, or 1-2%
* by default, removes the `-count=1` flag that busts Go's test cache.
With a fresh cache and no code changes, `make test` executes in ~15
seconds.

Signed-off-by: Spike Curtis <spike@coder.com>
2025-08-21 16:37:31 +04:00
Dean Sheather 8d0bc485df chore: add actionlint and zizmor linters (#19459) 2025-08-21 22:14:43 +10:00
Danny Kopping 338e8b5161 fix: use new http transport for webhook handler (#19462) 2025-08-21 12:08:32 +02:00
Danielle Maywood 2521e732be refactor: generate task name fallback on coderd (#19447)
Instead of generating the fallback task name on the website, we instead
generate it on coderd.
2025-08-21 11:06:30 +01:00
Atif Ali 62fa731b34 chore(dogfood): add IDE selection parameter (#19194)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-21 13:32:45 +05:00
Ethan 444874d9db ci: add check-build job to require make build to pass on prs (#19460)
We've had `build` fail on main one or two times, and it's easily
preventable by just running `make build` on PRs.

I didn't add `build` to required as it's already pretty complex, and
we'd be making it more complex by skipping half of it when not on
coder/coder main.
2025-08-21 17:59:18 +10:00
Spike Curtis 229d05193d fix: speed up GetTailnetTunnelPeerBindings query (#19444)
relates to: https://github.com/coder/internal/issues/718

Optimizes the GetTailnetTunnelPeerBindings query to reduce its execution time.

Before: https://explain.dalibo.com/plan/c2fd53f913aah21c

After: https://explain.dalibo.com/plan/6bc67d323g7afh61

At a high level, we first assemble the total list of peer IDs needed by the query, and only then go into the `tailnet_peers` table to extract their info. This saves us some time instead of hashing the entire `tailnet_peers` table.
2025-08-21 07:53:56 +02:00
Ethan 51d8a05301 test: disable direct connections for a deterministic reachable peers metric (#19458)
closes https://github.com/coder/internal/issues/921

Not sure what I was thinking when I wrote this test case, but it was
relying on the connection being p2p on every ping, which is technically
and evidently not always the case. Instead we'll require a DERP peer,
and block direct connections.
2025-08-21 11:46:56 +10:00
Dean Sheather bfd392b0bf fix: use int64 in publisher delay (#19457) 2025-08-21 11:23:50 +10:00
Rowan Smith baf30679e0 chore: fix typo in clientNetcheckSummary for support bundle command (#19441)
This PR fixes a typo in the original support bundle implementation for
the `clientNetcheckSummary` var.
2025-08-21 10:08:51 +10:00
Brett Kolodny ee789dac9a fix: redirect users to /login if their oauth token is invalid (#19429)
[As mentioned in the
issue](https://github.com/coder/coder/issues/12056#issuecomment-3206975879)
the problem here is the fact this endpoint is returning a 401 instead of
a 200 in this specific case.

Since we actually have enough information before performing this
mutation to know that it'll fail in the case of a bad auth token we'd
ideally re-work the code not to call the mutation on logout and just
perform the local clean up. Unfortunately it seems like the interactions
that this mutation is having with React Query at large is necessary for
our code to work as intended and thus it's not currently possible to
move the local clean up (the code inside of the `onSuccess`) outside of
the mutation. Shout out to @Parkreiner for helping me confirm this.

So until we can re-work the `AuthProvider` to be less brittle this PR
changes `onSuccess` to `onSettled` so that while the mutation still
fails with a 401, the local clean up still runs.

Closes #12056
2025-08-20 15:04:57 -04:00
Benjamin Peinhardt 02fc173df4 fix: fix flake due to two time.Now() calls (#19450)
fixes https://github.com/coder/internal/issues/559

This test is looking to see that after calling `coder schedule extend
<workspace> 10h`, the scheduled stop time of the workspace is updated
appropriately (or at least that the information printed to the terminal
indicates that).

By using two `time.Now()` calls for the current time and the expected
time, there was the possibility that the second call just barely crossed
over the hour mark. This is shown in the error message when the test
would flake: `wanted "2025-04-07T22:"; got " 2025-04-07T23:00:00+05:30
\r\n"` (the 00:00 letting us know we just barely crossed the hour).

Using the same time object to construct the expected time should fix the
issue.
2025-08-20 12:12:02 -05:00
Cian Johnston 9ad124d489 feat(coderd/telemetry): track AI task usage (#19418)
Relates to https://github.com/coder/internal/issues/868
2025-08-20 17:59:09 +01:00
Rafael Rodriguez 5b1e809862 fix: support oidc group allowlist in oss (#19430)
## Summary

In this pull request we're adding support for OIDC allowed groups in the
OSS version as part of work for
https://github.com/coder/coder/issues/17027.

### Changes

- Restored support for parsing group allow list in OSS code

### Testing

- Added tests for OSS code
- Tested allowed/prohibited group OIDC flows in premium and OSS
2025-08-20 10:09:13 -05:00
Steven Masley a19dfa9a0a docs: add generative ai contribution guidelines (#19427)
Initial language that gives us something to point to if needed.
2025-08-20 09:13:40 -05:00
Hugo Dutka d536b91bfc chore(coderd/database/dbauthz): migrate more tests to mocked db (#19300)
Related to https://github.com/coder/internal/issues/869

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: Steven Masley <stevenmasley@gmail.com>
2025-08-20 14:10:18 +00:00
Jakub Domeracki fc7f53ffce chore: update monaco-editor to resolve DOMPurify CVEs #19445 (#19446)
https://github.com/coder/coder/issues/19445
2025-08-20 16:00:10 +02:00
Susana Ferreira 5b08f8b4a0 fix: change createWorkspace to use dbtime.Time (#19414)
The `createWorkspace` function was updated to use an injected Clock,
which makes it possible to mock time in tests:
https://github.com/coder/coder/pull/19264/files#diff-46f90baab52ea3ad914acbde30d656dbc8e46f5918d19bc056c445a1dc502482R1130
For database operations, however, it is recommended to use `dbtime.Time`
since it rounds to the microsecond, the smallest unit of precision
supported by Postgres.
2025-08-20 14:58:00 +01:00
Dean Sheather 1a601c30ad chore: move usage types to new package (#19103) 2025-08-20 23:48:38 +10:00
Dean Sheather 6eb02d1c2a chore: wire up usage tracking for managed agents (#19096)
Wires up the usage collector and publisher to coderd.

Relates to coder/internal#814
2025-08-20 23:38:09 +10:00
Garrett Delfosse dd867bd743 fix: fix jetbrains toolbox connection tracking (#19348)
Fixes https://github.com/coder/coder/issues/18350

I attempted the route of relying on just the session env vars, in hopes
that this issue was fixed in Toolbox and the process name matching was
no longer need, but it was not a fruitful endeavor and it seems to be
using the same connection logic as it did in gateway, just with new
binary and flag names.
2025-08-20 08:39:08 -04:00
Susana Ferreira 560cf84251 fix: prevent activity bump for prebuilt workspaces (#19263)
## Description

This PR ensures that activity-based deadline extensions ("activity
bumping") are not applied to prebuilt workspaces. Prebuilds are managed
by the reconciliation loop and must not have `deadline` or
`max_deadline` values set or extended, as they are not part of the
regular lifecycle executor path.

## Changes

- Update `ActivityBumpWorkspace` SQL query to discard prebuilt
workspaces
- Update application layer to avoid calling activity bump logic on
prebuilt workspaces

Related with: 
* Issue: https://github.com/coder/coder/issues/18898
* PR: https://github.com/coder/coder/pull/19252
2025-08-20 12:19:14 +01:00
Kacper Sawicki cd1faffeff docs: re-add missing Templates and Modules entries to manifest.json (#19442) 2025-08-20 09:14:41 +00:00
Sas Swart f9a6adc704 feat: claim prebuilds based on workspace parameters instead of preset id (#19279)
Closes https://github.com/coder/coder/issues/18356.

This change finds and selects a matching preset if one was not chosen
during workspace creation. This solidifies the relationship between
presets and parameters.

When a workspace is created without in explicitly chosen preset, it will
now still be eligible to claim a prebuilt workspace if one is available.
2025-08-20 11:02:53 +02:00
Danielle Maywood 5e84d257b7 refactor: convert workspacesdk.AgentConn to an interface (#19392)
Fixes https://github.com/coder/internal/issues/907

We convert `workspacesdk.AgentConn` to an interface and generate a mock
for it. This allows writing `coderd` tests that rely on the agent's HTTP
api to not have to set up an entire tailnet networking stack.
2025-08-20 10:00:44 +01:00
Danielle Maywood 23c494f36b fix(agent/agentcontainers): resolve symlink in tests (#19440)
Fixes https://github.com/coder/internal/issues/917
2025-08-20 09:32:28 +01:00
Dean Sheather 67da780ce4 fix: avoid error when AI usage is zero (#19388)
Fixes a bug that prevents the managed AI agent usage from showing in the
licenses page of the dashboard when the usage is zero. Adds a story with
this case as well.
2025-08-20 07:22:42 +00:00
Ethan c310a3202b ci: ping blink on slack on ci failures (#19435)
im experimenting with getting blink to track flakes for us in
coder/internal, it worked when kyle and I pinged it by hand, so let's
try this too.
2025-08-20 06:19:29 +00:00
dependabot[bot] 60d611fc78 chore: bump github.com/hashicorp/go-getter from 1.7.8 to 1.7.9 (#19433)
Bumps
[github.com/hashicorp/go-getter](https://github.com/hashicorp/go-getter)
from 1.7.8 to 1.7.9.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/hashicorp/go-getter/releases">github.com/hashicorp/go-getter's
releases</a>.</em></p>
<blockquote>
<h2>v1.7.9</h2>
<h2>What's Changed</h2>
<ul>
<li>Speed up XZ decompression by 5x with bufio wrapper by <a
href="https://github.com/vsarunas"><code>@​vsarunas</code></a> in <a
href="https://redirect.github.com/hashicorp/go-getter/pull/520">hashicorp/go-getter#520</a></li>
<li>Fix CI Workflow by <a
href="https://github.com/mohanmanikanta2299"><code>@​mohanmanikanta2299</code></a>
in <a
href="https://redirect.github.com/hashicorp/go-getter/pull/522">hashicorp/go-getter#522</a></li>
<li>test: Remove use of &quot;mitchellh/go-testing-interface&quot; for
stdlib by <a
href="https://github.com/jrasell"><code>@​jrasell</code></a> in <a
href="https://redirect.github.com/hashicorp/go-getter/pull/523">hashicorp/go-getter#523</a></li>
<li>fix: url redact of multiple sshkey by <a
href="https://github.com/dduzgun-security"><code>@​dduzgun-security</code></a>
in <a
href="https://redirect.github.com/hashicorp/go-getter/pull/528">hashicorp/go-getter#528</a></li>
<li>Publish arm binaries by <a
href="https://github.com/sethvargo"><code>@​sethvargo</code></a> in <a
href="https://redirect.github.com/hashicorp/go-getter/pull/525">hashicorp/go-getter#525</a></li>
<li>fix errcheck lint errors and run it as part of pr checks by <a
href="https://github.com/abhijeetviswa"><code>@​abhijeetviswa</code></a>
in <a
href="https://redirect.github.com/hashicorp/go-getter/pull/530">hashicorp/go-getter#530</a></li>
<li>fix additional lint errors and increase linter scope by <a
href="https://github.com/abhijeetviswa"><code>@​abhijeetviswa</code></a>
in <a
href="https://redirect.github.com/hashicorp/go-getter/pull/531">hashicorp/go-getter#531</a></li>
<li>IND-3728 enabling dependabot by <a
href="https://github.com/KaushikiAnand"><code>@​KaushikiAnand</code></a>
in <a
href="https://redirect.github.com/hashicorp/go-getter/pull/529">hashicorp/go-getter#529</a></li>
<li>fix: go-getter subdir paths by <a
href="https://github.com/dduzgun-security"><code>@​dduzgun-security</code></a>
in <a
href="https://redirect.github.com/hashicorp/go-getter/pull/540">hashicorp/go-getter#540</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/vsarunas"><code>@​vsarunas</code></a>
made their first contribution in <a
href="https://redirect.github.com/hashicorp/go-getter/pull/520">hashicorp/go-getter#520</a></li>
<li><a href="https://github.com/jrasell"><code>@​jrasell</code></a> made
their first contribution in <a
href="https://redirect.github.com/hashicorp/go-getter/pull/523">hashicorp/go-getter#523</a></li>
<li><a href="https://github.com/sethvargo"><code>@​sethvargo</code></a>
made their first contribution in <a
href="https://redirect.github.com/hashicorp/go-getter/pull/525">hashicorp/go-getter#525</a></li>
<li><a
href="https://github.com/abhijeetviswa"><code>@​abhijeetviswa</code></a>
made their first contribution in <a
href="https://redirect.github.com/hashicorp/go-getter/pull/530">hashicorp/go-getter#530</a></li>
<li><a
href="https://github.com/KaushikiAnand"><code>@​KaushikiAnand</code></a>
made their first contribution in <a
href="https://redirect.github.com/hashicorp/go-getter/pull/529">hashicorp/go-getter#529</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/hashicorp/go-getter/compare/v1.7.8...v1.7.9">https://github.com/hashicorp/go-getter/compare/v1.7.8...v1.7.9</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/hashicorp/go-getter/commit/e70221100018573cdc74411c95c19b2a372f6728"><code>e702211</code></a>
Merge pull request <a
href="https://redirect.github.com/hashicorp/go-getter/issues/532">#532</a>
from hashicorp/dependabot/github_actions/actions-8948...</li>
<li><a
href="https://github.com/hashicorp/go-getter/commit/df0a14fa67f2921eabff8fbdb51445ac03daeb87"><code>df0a14f</code></a>
[chore] : Bump the actions group with 8 updates</li>
<li><a
href="https://github.com/hashicorp/go-getter/commit/87541b2501c00df5eaedea6acc61a2a4a4efa5b7"><code>87541b2</code></a>
fix: go-getter subdir paths (<a
href="https://redirect.github.com/hashicorp/go-getter/issues/540">#540</a>)</li>
<li><a
href="https://github.com/hashicorp/go-getter/commit/37130302313c9294df898ac96e2565a65369ec68"><code>3713030</code></a>
[Compliance] - PR Template Changes Required</li>
<li><a
href="https://github.com/hashicorp/go-getter/commit/af2dd3ca2764281bf6b7468e05028a8b114c63a7"><code>af2dd3c</code></a>
Merge pull request <a
href="https://redirect.github.com/hashicorp/go-getter/issues/529">#529</a>
from hashicorp/dependabot-intge</li>
<li><a
href="https://github.com/hashicorp/go-getter/commit/bf526297fa4cd429fcf31da9e4a6bf6a0b512026"><code>bf52629</code></a>
updating dependabot.yml</li>
<li><a
href="https://github.com/hashicorp/go-getter/commit/1f63e10d3b421544473bf52103b41eb423e2c897"><code>1f63e10</code></a>
changelog added, updated dependabot.yaml</li>
<li><a
href="https://github.com/hashicorp/go-getter/commit/45af45918c6958be58f87d1576ac4a0b32f7eb4b"><code>45af459</code></a>
fix additional lint errors and increase linter scope</li>
<li><a
href="https://github.com/hashicorp/go-getter/commit/c8c6aba0f7ad4e3937ef7cfcb50627520e498252"><code>c8c6aba</code></a>
fix errcheck lint errors and run it as part of pr checks</li>
<li><a
href="https://github.com/hashicorp/go-getter/commit/9b76f983e594375fdef9e231822c805c82ec9ed7"><code>9b76f98</code></a>
copywrite header added</li>
<li>Additional commits viewable in <a
href="https://github.com/hashicorp/go-getter/compare/v1.7.8...v1.7.9">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/hashicorp/go-getter&package-manager=go_modules&previous-version=1.7.8&new-version=1.7.9)](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)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/coder/coder/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-20 03:11:11 +00:00
Bruno Quaresma c70a786e07 chore: ignore dynamic expiration date on story (#19425)
Fixes https://github.com/coder/coder/issues/19410
2025-08-19 16:09:07 -03:00
DevCats 7bcbb83c7c feat: add amp logo sourced from presskit (#19421)
Added logo sourcegraph-amp.svg to site/static/icon
Add icon to icons.json

Logo is sourced from: https://ampcode.com/press-kit
2025-08-19 13:58:17 -05:00
Cian Johnston c978ab99b5 fix(scripts/check_unstaged.sh): modify shebang (#19419) 2025-08-19 19:24:20 +01:00
Callum Styan f2ee89c36a fix: fix more TestWorkspaceAutobuild flakes (#19417)
made these commits yesterday but apparently I forgot to push so they got
missed in https://github.com/coder/coder/pull/19398

---------

Signed-off-by: Callum Styan <callumstyan@gmail.com>
2025-08-19 10:24:40 -07:00
Callum Styan 9e5c83ae0d fix: fix flakes in TestWorkspaceAutobuild due to incorrect tick time (#19398)
we missed these in the previous PR, we find `tickTime2`
and pass it to the `tickCh`, but we were incorrectly passing `tickTime`
to `UpdateProvisionerLastSeenAt` in some places

Signed-off-by: Callum Styan <callumstyan@gmail.com>
2025-08-19 09:24:40 -07:00
Phorcys b6abcba942 chore: correct template API docs (#19228) 2025-08-19 15:14:25 +00:00
Danielle Maywood 655377165b feat(coderd): generate task names based on their prompt (#19335)
Closes https://github.com/coder/coder/issues/18159

If an Anthropic API key is available, we call out to Claude to generate
a task name based on the user-provided prompt instead of our random name
generator.
2025-08-19 14:56:37 +01:00
Kacper Sawicki c4290201c3 fix(enterprise): update external agent instructions in cli (#19411)
### Description

The command for agent instructions was incorrectly displayed in the CLI.
2025-08-19 13:54:42 +00:00
Susana Ferreira d79a7797c2 fix: exclude prebuilt workspaces from template-level lifecycle updates (#19265)
## Description

This PR ensures that lifecycle-related changes made via template
schedule updates do **not affect prebuilt workspaces**. Since prebuilds
are managed by the reconciliation loop and do not participate in the
regular lifecycle executor flow, they must be excluded from any updates
triggered by template configuration changes.

This includes changes to TTL, dormant-deletion scheduling, deadline and
autostart scheduling.

## Changes

- Updated SQL query `UpdateWorkspacesTTLByTemplateID` to exclude
prebuilt workspaces
- Updated SQL query `UpdateWorkspacesDormantDeletingAtByTemplateID` to
exclude prebuilt workspaces
- Updated application-layer logic to skip any updates to lifecycle
parameters if a workspace is a prebuild
- Preserved all existing update behavior for regular user workspaces

This change guarantees that only lifecycle-managed workspaces are
affected when template-level configurations are modified, preserving
strict boundaries between prebuild and user workspace lifecycles.

Related with: 
* Issue: https://github.com/coder/coder/issues/18898
* PR: https://github.com/coder/coder/pull/19252
2025-08-19 13:08:01 +01:00
Danielle Maywood e8795269e4 fix: resolve TestAPI/Error/DuringInjection flake (#19407)
Resolves https://github.com/coder/internal/issues/905
2025-08-19 12:23:37 +01:00
Kacper Sawicki c7cfa65961 fix(enterprise): correct order for external agent init cmd (#19408)
### Description

`CODER_AGENT_TOKEN` env variable was incorrectly being passed to the
curl command instead of the executed script during agent initialization.

Fixed the command order to ensure `CODER_AGENT_TOKEN` is properly passed
to the script execution context rather than the download command.
2025-08-19 11:00:40 +00:00
Kacper Sawicki 7f7206770b feat(site): add support for external agents in the UI and extend CodeExample (#19288)
This pull request introduces support for external workspace management, allowing users to register and manage workspaces that are provisioned and managed outside of the Coder.

* Added a new component AgentExternal which shows instructions for connecting external agents.
* Added redacted fields to CodeExample so you can now hide specific parts of the code instead of the full line
* Hides workspace actions if workspace is using external agent.

<img width="1719" height="646" alt="image" src="https://github.com/user-attachments/assets/45b7bfae-7006-461f-a96d-e61f97084819" />
2025-08-19 11:00:32 +02:00
Kacper Sawicki 7b1dcd9846 feat(cli): add enterprise external-workspaces CLI command (#19287)
This pull request introduces support for external workspace management, allowing users to register and manage workspaces that are provisioned and managed outside of the Coder.

* coder external-workspaces create - Creates a new external workspace (this command extends coder create)
  * Example: coder external-workspaces create ext-workspace --template=externally-managed-workspace -y
  * Checks if template has coder_external_agent resource before creating a workspace
* coder external-workspaces list - Lists all external workspaces
* coder external-workspaces agent-instructions <workspace name> <agent name> - Retrieves agent connection instruction
  * Example: coder external-workspaces agent-instructions ext-workspace main --output=json
2025-08-19 10:52:31 +02:00
Kacper Sawicki 9edceef0bf feat(coderd): add support for external agents to API's and provisioner (#19286)
This pull request introduces support for external workspace management, allowing users to register and manage workspaces that are provisioned and managed outside of the Coder.

Depends on: https://github.com/coder/terraform-provider-coder/pull/424

* GET /api/v2/init-script - Gets the agent initialization script
  * By default, it returns a script for Linux (amd64), but with query parameters (os and arch) you can get the init script for different platforms
* GET /api/v2/workspaces/{workspace}/external-agent/{agent}/credentials - Gets credentials for an external agent **(enterprise)**
* Updated queries to filter workspaces/templates by the has_external_agent field
2025-08-19 10:41:33 +02:00
Cian Johnston f085c37af3 fix(dogfood/coder): fix env var for exp mcp configure claude-code (#19404)
`coder exp mcp configure claude-code` will read the API key for
claude-code from the environment variable `CLAUDE_API_KEY`. Claude will
also happily read `ANTHROPIC_API_KEY` but will ask you to confirm first,
which is problematic in an automated setup.

Also bumps claude-code module.
2025-08-19 09:40:49 +01:00
Kacper Sawicki 5e4aa79a9d feat(coderd): add has_external_agent flag to template_versions and workspace_builds (#19285)
This pull request introduces support for external workspace management, allowing users to register and manage workspaces that are provisioned and managed outside of the Coder.

* Added has_external_agent field to workspace builds and template versions
2025-08-19 10:29:51 +02:00
ケイラ e67f0f6f52 chore: convert emotion styles to tailwind (#19347) 2025-08-18 16:16:21 -06:00
Steven Masley 42c4792f24 test: add sub claim field to static id claims in testidp (#19399) 2025-08-18 15:20:10 -05:00
Brett Kolodny 95388f7576 chore: convert emotion styles to tailwind (#19357) 2025-08-18 15:00:58 -04:00
Cian Johnston 3e7c8c9052 feat(scripts): add fixtures.sh to add license to dev deployment (#19374)
Adds `scripts/fixtures.sh` with initial support for adding license.
Future improvements may involve adding + breaking out:
- User creation
- Template creation/import
- Org creation
2025-08-18 17:32:53 +01:00
Dean Sheather c6c8b00b07 chore: require nolint for testutil.RunRetry (#19394) 2025-08-19 00:48:10 +10:00
Dean Sheather e2ba9e7d62 chore: retry TestAgent_Dial subtests (#19387)
Closes https://github.com/coder/internal/issues/595
2025-08-18 13:51:19 +00:00
Danielle Maywood a8c89a120f fix: increase timeout for watch workspace agent devcontainers test (#19390)
Relates to https://github.com/coder/internal/issues/907

The test can take around 10s when it is the only one running, so in a
constrained environment like CI it makes sense that it still hits the 25
second timeout. For now we up the limit to 60 seconds until the test is
rewritten to greatly reduce the time taken.
2025-08-18 09:56:39 +01:00
Ethan fdc9dfae89 test(coderd/database/dbpurge): use mock db in TestPurge (#19386)
Closes https://github.com/coder/internal/issues/906

This test was using dbmem until we removed it. The test just makes sure the background job runs at all, so a mock db continues to be fine here.

No other tests in this package used dbmem, so this is the only test I've changed.
2025-08-18 15:25:52 +10:00
Rowan Smith 0a815029e9 chore: fix incorrect ordering of OS options in docs (#19384)
On https://coder.com/docs/install/uninstall at present we order the top
OS listing as "Linux | macOS | Windows", while in the `Coder settings,
cache, and the optional built-in PostgreSQL database` paragraph towards
the bottom of the page we change to using "macOS | Linux | Windows" for
some reason. This PR moves Linux to be listed first instead of macOS in
the bottom paragraph to match the ordering of the top section.
2025-08-18 14:31:06 +10:00
Dean Sheather 8f9f0cda11 chore: avoid DNS lookups for DERP in tests (#19385)
Closes https://github.com/coder/internal/issues/886
2025-08-18 03:44:37 +00:00
Rowan Smith 93279dff24 chore: change format of key from uuid to string to fix swagger issue (#19380)
ref: https://codercom.slack.com/archives/C014JH42DBJ/p1755192759211289

this change allows api keys to be deleted via swagger
2025-08-18 12:37:51 +10:00
dependabot[bot] 4da0cfbe83 chore: bump coder/jetbrains/coder from 1.0.2 to 1.0.3 in /dogfood/coder (#19383)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/jetbrains/coder&package-manager=terraform&previous-version=1.0.2&new-version=1.0.3)](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>
2025-08-18 01:05:32 +00:00
dependabot[bot] 95db8d437b chore: bump coder/cursor/coder from 1.2.1 to 1.3.0 in /dogfood/coder (#19382)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/cursor/coder&package-manager=terraform&previous-version=1.2.1&new-version=1.3.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>
2025-08-18 01:05:01 +00:00
dependabot[bot] 29479c28d7 chore: bump coder/zed/coder from 1.0.1 to 1.1.0 in /dogfood/coder (#19381)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/zed/coder&package-manager=terraform&previous-version=1.0.1&new-version=1.1.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>
2025-08-18 01:04:46 +00:00
Bruno Quaresma bed4e12b93 chore: fix storybook flakes (#19366)
Close https://github.com/coder/coder/issues/19365
2025-08-15 16:07:33 -03:00
Danielle Maywood 4ca69af867 fix: increase timeout for watch workspace agent devcontainers test (#19376) 2025-08-15 19:11:19 +01:00
Cian Johnston 2ea807fde1 feat(dogfood/coder): integrate tasks support into "Write Coder on Coder" template (#19320)
Updates https://github.com/coder/internal/issues/836

- Adds an optional AI prompt parameter
- Conditionally adds the following resources if "AI Prompt" is provided:
  - `claude-code` module if AI prompt is provided
  - auto-restarting instance of `develop.sh` running in screen
  - a "preview" app that shows the local development server
2025-08-15 17:47:31 +01:00
Callum Styan 6c902a7410 fix: don't create autostart workspace builds with no available provisioners (#19067)
This should fix https://github.com/coder/coder/issues/17941 by introducing a check for whether there are any valid (non-stale provisioners for a job in the autobuild executor code path.

---------

Signed-off-by: Callum Styan <callumstyan@gmail.com>
2025-08-15 08:50:51 -07:00
Dean Sheather a25d85631b chore: add usage tracking package (#19095)
Not used in coderd yet, see stack.

Adds two new packages:
- `coderd/usage`: provides an interface for the "Collector" as well as a stub implementation for AGPL
- `enterprise/coderd/usage`: provides an interface for the "Publisher" as well as a Tallyman implementation

Relates to https://github.com/coder/internal/issues/814
2025-08-16 01:31:00 +10:00
Steven Masley e92af2b050 chore: set editorconfig to use tabs instead of spaces for sql files (#19344) 2025-08-15 08:02:32 -05:00
Danielle Maywood 205eb29e60 fix: stop reading closed channel for /watch devcontainers endpoint (#19373)
Fixes https://github.com/coder/coder/issues/19372

We increase the read limit to 4MiB (we use this limit elsewhere). We
also make sure to stop sending messages when `containersCh` becomes
closed.
2025-08-15 12:32:33 +01:00
Sas Swart a9f607afd8 test: add an ergonomic way to access the test database for debugging (#19371)
Accessing the database during debugging currently requires either
spinning up a separate PostgreSQL instance or inspecting memory to
retrieve the DSN—both of which add unnecessary friction. While the test
suite already provisions a database by default, connecting to it for
manual inspection or debugging is not straightforward.

This change introduces a clearer and more accessible way to surface the
DSN during debugging sessions, allowing developers to connect to the
test database directly without relying on external infrastructure or ad
hoc methods.

Expected Usage:
1. Debug using dlv or the IDE.
2. Step through line by line and determine that a query isn't doing what
you'd expect
3. No further insight to be gained at the Go level
4. The next place to test is to connect directly to the database while
it is in the exact state that the test has produced just before running
the query
5. Rerun the test with this option enabled and your breakpoint set right
before the questionable query runs
6. Connect to the database and inspect or troubleshoot as you need to
2025-08-15 11:25:20 +02:00
Ethan d7bdb3cdef ci: add paralleltestctx to lint/go (#19369)
Closes https://github.com/coder/internal/issues/884

We're adding this as a `go run` in `lint/go` for now, since adding it to
golangci-lint ourselves involves recompiling golangci-lint and then
running that new binary. I'll look into proposing it being added to the
public golangci-lint linters.

Doesn't appear to cause the lint ci job to take any longer, which is
nice.
2025-08-15 16:16:18 +10:00
Bruno Quaresma 1d1a16ea01 chore: update storybook config to use TS (#19343) 2025-08-14 17:05:16 -06:00
ケイラ ac40c4b828 chore: fix biome when running locally (#19367) 2025-08-14 16:42:45 -06:00
ケイラ bb0e407660 chore: remove some usage of useClassName (#19346) 2025-08-14 15:53:29 -06:00
Bruno Quaresma accdcb8b77 chore: upgrade biome to v2 (#19362)
Guide for migration: https://biomejs.dev/guides/upgrade-to-biome-v2/
2025-08-14 18:25:15 -03:00
ケイラ 167522e5ae fix: fix storybook when using coder desktop (#19364) 2025-08-14 14:13:10 -06:00
Brett Kolodny 362c78a705 fix: ensure deployment banner is always on the bottom (#19361) 2025-08-14 15:35:42 -04:00
Bruno Quaresma 9cde6e6608 chore: remove turbosnap plugin (#19341)
Turbosnap plugin is included by default in Storybook 8, so we can remove
it from our configuration.

> Found 'rollup-plugin-turbosnap' which is now included by default in
Storybook 8.
Removing from your plugins list. Ensure you pass `--stats-json` to
generate stats.

> For more information, see
https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#turbosnap-vite-plugin-is-no-longer-needed
2025-08-14 12:39:13 -03:00
Steven Masley 4926410146 feat: keep original token refresh error in external auth (#19339)
External auth refresh errors lose the original error thrown on the first
refresh. This PR saves that error to the database to be raised on
subsequent refresh attempts
2025-08-14 09:50:31 -05:00
Brett Kolodny 5b5fbbed33 fix: implement proper overflow behavior for workspace history (#19340)
Before:


https://github.com/user-attachments/assets/2f1ff75c-4916-4d0a-a657-004d46691ea0


After:


https://github.com/user-attachments/assets/a8e575b5-84f9-4eea-b318-93d2a3d60aa5

Also converts a lot of emotion components to tailwind
2025-08-14 09:26:20 -04:00
Susana Ferreira 734299de71 fix: disallow lifecycle endpoints for prebuilt workspaces (#19264)
## Description

This PR updates the API to prevent lifecycle configuration endpoints
from being used on prebuilt workspaces. Since prebuilds are managed by
the reconciliation loop and do not participate in the regular workspace
lifecycle, they must not support per-workspace overrides for fields like
deadline, TTL, autostart, or dormancy.

Attempting to use these endpoints on a prebuilt workspace will now
return a clear validation error (`409 Conflict`) with an appropriate
explanation. This prevents accidental misconfiguration and preserves the
lifecycle separation between prebuilds and regular workspaces.

## Changes

The following endpoints now return an error if the target workspace is a
prebuild:

* `PUT /workspaces/{workspace}/extend`
* `PUT /workspaces/{workspace}/ttl`
* `PUT /workspaces/{workspace}/autostart`
* `PUT /workspaces/{workspace}/dormant`

Update endpoints logic to use the API clock in order to allow time
mocking in tests.

Related with: 
* Issue: https://github.com/coder/coder/issues/18898
* PR: https://github.com/coder/coder/pull/19252
2025-08-14 11:30:19 +01:00
Hugo Dutka af97b78e76 chore(coderd/database/dbauthz): migrate TestTemplate to use mocked DB (#19304)
Related to https://github.com/coder/internal/issues/869

---------

Co-authored-by: Steven Masley <stevenmasley@gmail.com>
2025-08-14 11:32:53 +02:00
Ethan b2b3edf0f1 test(codersdk/toolsdk): skip coder_workspace_bash tool test on windows (#19351)
Fixes flakes on the nightly-gauntlet like:
https://github.com/coder/coder/actions/runs/16955654896
since there's no `bash` on windows...
```
=== Failed
=== FAIL: codersdk/toolsdk  (0.00s)
PASS
The following tools were not tested:
 - coder_workspace_bash
Please ensure that all tools are tested using testTool().
If you just added a new tool, please add a test for it.
NOTE: if you just ran an individual test, this is expected.
FAIL	github.com/coder/coder/v2/codersdk/toolsdk	4.185s
```
2025-08-14 15:49:48 +10:00
Ethan c6d62e2de1 docs: update coder desktop + corporate vpn issue (#19353)
I missed this in my first PR 😮‍💨. We already include the
version requirements for the VPN fix in the `Known Issues` section.
2025-08-14 15:06:41 +10:00
Michael Smith 0c203b0cf8 fix: correct markup for Abbr component (#19317)
Fixes some accidental styling issues introduced in #19242

## Changes made
- Updated styles
- Added support for `className` prop so that we can override the styles
as needed
- Removed the aria-label in favor of injecting the main text directly

## Notes
- This feels like a case where the changes in the previous PR were
actually *correct overall*, but something with our MUI+Tailwind setup
created conflicting styles, and we accidentally introduced an underline
style that shouldn't be there
- Removed the Aria label because I've realized in the past year that
Aria is really easy to misuse, and it's best just to do things with the
base HTML features as much as possible. There's a risk that the old code
had compliance issues with certain types of screen readers (even though
it worked fine when I did manual testing back in 2023). These changes
hopefully remove those risks completely
2025-08-14 00:20:00 -04:00
Ethan 1ffc5a0e97 docs: update status of coder desktop + corporate vpn issue (#19350)
A customer read this on the docs and thought the issue was still
unresolved.
2025-08-14 04:17:25 +00:00
Michael Smith 193c7ce91b fix(site): tighten interface design for various frontend utility functions (#18894)
Precursor to https://github.com/coder/coder/pull/18895
Splitting this off so that the changes are easier to review.

## Changes made
- Improve type-safety for the `withQuery` Storybook decorator
- Centralized almost all queries that deal with template versions to use
a shared, exported query key prefix
- Updated `useFilter` and `usePagination` to have much more strict
return types, and decoupled them from React Router at the interface
level
- Also added some extra input validation and performance optimizations
to `useFilter` and `usePagination`
- Removed a stale data when working with checked workspaces for the
`/workspaces` page
- Removed hacky `useEffect` call for syncing URL state to checked
workspaces, in favor of explicit state syncs
- Did some extra cleanup and removed unused values

## Notes
- Many of the changes here were in service of the main PR. I'll try to
highlight notable areas, but if there's anything that's not clear, feel
free to post a comment in this PR. Ideally you shouldn't really have to
look at the other PR to understand this one, so if something's
confusing, that's a sign that something's wrong

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Refactor**
* Improved handling of URL search parameters and state synchronization
in filter and pagination features across multiple pages.
* Centralized and clarified state management for workspace selection and
batch actions on the Workspaces page.
* Enhanced type safety and naming consistency in batch actions and
filter components.
* Updated filter and pagination hooks to accept explicit parameters and
callbacks for better maintainability.
* Streamlined prop naming and menu handling in workspace filter
components for clarity.

* **Bug Fixes**
* Prevented unnecessary state updates when filter values remain
unchanged.

* **Tests**
  * Updated tests for improved type safety and more precise assertions.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-08-14 00:06:15 -04:00
ケイラ 2180d17f7d chore: upgrade to pnpm 10 (#19327)
pnpm 9 yells pretty loudly about being out of date. also, pnpm 10 no
longer runs untrusted `postinstall`/`prepare` scripts by default, which,
_finally_.
2025-08-13 15:39:10 -04:00
Susana Ferreira 92d505c52b feat(cli): prevent coder schedule command on prebuilt workspaces (#19259)
## Description

This PR adds CLI-side validation to prevent the use of the `coder
schedule` command (including both `start` and `stop` subcommands) on
prebuilt workspaces.

Prebuilt workspaces are scheduled independently by the reconciliation
loop, based on template and preset-level configuration. They do not
participate in the regular user workspace lifecycle, and cannot be
configured via the `coder schedule` CLI command. This change ensures
that attempting to configure scheduling on a prebuilt workspace results
in a clear CLI error.

## Changes

- `coder schedule start` — now returns an error if the target workspace
is a prebuild
- `coder schedule stop` — now returns an error if the target workspace
is a prebuild

Related with: 
* Issue: https://github.com/coder/coder/issues/18898
* **Depends on PR**: https://github.com/coder/coder/pull/19252
2025-08-13 18:15:53 +01:00
Hugo Dutka e10f29c481 chore(coderd/database/dbauthz): migrate File, Group, APIKey, AuditLogs, and ConnectionLogs tests to mocked db (#19299)
Related to https://github.com/coder/internal/issues/869

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: Steven Masley <stevenmasley@gmail.com>
2025-08-13 09:30:48 -05:00
Jash Ambaliya a556324c93 chore(site): add postgres icon (#19210)
added pgadmin logo as mentioned in review:
<img width="1200" height="394" alt="image"
src="https://github.com/user-attachments/assets/4f536037-e496-4048-b70f-7c915dc82afc"
/>

I have read the CLA Document and I hereby sign the CLA

---------

Co-authored-by: DevCats <christofer@coder.com>
Co-authored-by: ケイラ <mckayla@hey.com>
2025-08-13 09:22:56 -05:00
Susana Ferreira 8567ecbe52 fix: set prebuilds lifecycle parameters on creation and claim (#19252)
## Description

This PR ensures that prebuilt workspaces are properly excluded from the
lifecycle executor and treated as a separate class of workspaces, fully
managed by the prebuild reconciliation loop.

It introduces two lifecycle guarantees:
* When a prebuilt workspace is created (i.e., when the workspace build
completes), all lifecycle-related fields are unset, ensuring the
workspace does not participate in TTL, autostop, autostart, dormancy, or
auto-deletion logic.
* When a prebuilt workspace is claimed, it transitions into a regular
user workspace. At this point, all lifecycle fields are correctly
populated according to template-level configurations, allowing the
workspace to be managed by the lifecycle executor as expected.

## Changes

* Prebuilt workspaces now have all lifecycle-relevant fields unset
during creation
* When a prebuild is claimed:
* Lifecycle fields are set based on template and workspace level
configurations. This ensures a clean transition into the standard
workspace lifecycle flow.
* Updated lifecycle-related SQL update queries to explicitly exclude
prebuilt workspaces.

## Relates 

Related issue: https://github.com/coder/coder/issues/18898

To reduce the scope of this PR and make the review process more
manageable, the original implementation has been split into the
following focused PRs:
* https://github.com/coder/coder/pull/19259
* https://github.com/coder/coder/pull/19263
* https://github.com/coder/coder/pull/19264
* https://github.com/coder/coder/pull/19265

These PRs should be considered in conjunction with this one to
understand the complete set of lifecycle separation changes for prebuilt
workspaces.
2025-08-13 12:45:46 +01:00
Cian Johnston f17ab92798 chore: improve message when running develop.sh multiple times (#19333)
`develop.sh` checks for existing processes listening on port 3000 or
8080.
We can check if it's the development server to avoid confusion.

---------

Co-authored-by: Mathias Fredriksson <mafredri@gmail.com>
2025-08-13 11:49:00 +01:00
Ethan 791d39c261 test(coderd/database): use seperate context for subtests to fix flake (#19330)
Fixes flakes like
https://github.com/coder/coder/actions/runs/16927282256/job/47965470039

https://coder.com/blog/go-testing-contexts-and-t-parallel

...I'm going to take a stab at turning this into a lint rule. I think
it's possible by just reading the AST?
2025-08-13 14:45:35 +10:00
Rowan Smith 117fa05063 chore: update docs to mention debug logging config explicitly (#19329)
From https://coder.com/docs/admin/monitoring/logs#coderd-logs

It wasn't overly clear what was needed to get debug logs, this PR adds a
mention explaining it.
2025-08-13 14:26:45 +10:00
Jon Ayers e99c33e0d1 chore: restrict who can make releases (#19326)
This PR confines who can run the `Release` action to members with
`maintain` or above
2025-08-12 23:43:28 -04:00
ケイラ 17fa1a4e22 refactor(site): migrate ActiveUserChart from emotion to tailwind styling (#19244) 2025-08-12 15:20:43 -06:00
DevCats ea7025b562 docs(admin/users): add google provider-specific guide (#19309)
## Summary
- Add a provider-specific guide for configuring Google as an OIDC
provider
- Document refresh token setup via CODER_OIDC_AUTH_URL_PARAMS
- Add page to docs navigation under Users → OIDC Authentication

## Test plan
- Docs site builds: `docs/admin/users/oidc-auth/google.md` renders
- Nav shows 'Google' under OIDC Authentication
- Links to OIDC overview and refresh tokens work

Fixes #13508

---------

Co-authored-by: Atif Ali <atif@coder.com>
2025-08-12 13:02:40 -05:00
Steven Masley f4f4e52173 docs: remove beta badge from docs about dynamic parameters (#19325) 2025-08-12 17:59:47 +00:00
Rafael Rodriguez aab2ccdb38 fix!: support empty or default fields when updating templates (#19256)
Breaking change: Field types in `codersdk.UpdateTemplateMeta` for
`Icon`, `Description`, and `DisplayName` moved to `*string`

## Summary

In this pull request we're updating the `UpdateTemplateMeta` struct to
allow `DisplayName`, `Description`, and `Icon` to be set as empty `""`
or default to the value from the template if not provided in an update
call.

Fixes https://github.com/coder/coder/issues/19036

### The bug

The reported bug occurred when clients were attempting to update a
metadata field in a template via an edit call. When the request was
decoded into an `UpdateTemplateMeta` struct the default values for
fields in the struct were used to update the template even if they
weren't provided. This led to fields like `Icon` being set to `""` (the
default value).

### Changes

To allow for specific fields to be set to `""` these fields were updated
to be `*string` as opposed to `string`. This allows for clients to set
these fields as `""` in an update request or they will default to the
template value if they are not provided in the update request (will be
`nil`).

Added tests to confirm empty and nil values and updated other tests that
use these fields.
2025-08-12 11:37:44 -05:00
Jon Ayers 064436a300 chore: fix formdata for apidocgen (#19319) 2025-08-12 12:30:09 -04:00
Danny Kopping 67e1567b47 chore: specify packageManager explicitly to match pinned version in Dockerfile (#19311) 2025-08-12 16:55:59 +02:00
Ethan fb8036a154 ci: fix gcp service accounts (#19312)
Service accounts got deleted, oops
2025-08-12 22:02:56 +10:00
ケイラ 64f0aaa2b4 chore: skip flaking classic parameters test (#19308)
Causing test-js failures on main
2025-08-12 14:38:20 +04:00
Danielle Maywood f349edcc3c refactor: create tasks in coderd instead of frontend (#19280)
Instead of creating tasks with a specialized call to `CreateWorkspace`
on the frontend, we instead lift this to the backend and allow the
frontend to simply call `CreateAITask`.
2025-08-12 11:23:55 +01:00
Hugo Dutka cda1a3a593 chore(coderd/database/dbauthz): migrate TestUser to mocked db (#19305)
Related to https://github.com/coder/internal/issues/869

---------

Co-authored-by: Steven Masley <stevenmasley@gmail.com>
2025-08-12 09:20:12 +00:00
Jaayden Halko 0bfe0d63ae feat: add tests for dynamic parameters (#18679)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added support for a new testing attribute to the multi-select combobox
component, improving testability.
* Expanded mock data for dynamic parameters, covering a wider range of
input types and validation scenarios.

* **Bug Fixes**
* Improved loader and error handling on the experimental workspace
creation page to better display WebSocket errors.

* **Tests**
* Introduced comprehensive tests for the experimental workspace creation
page, including dynamic parameter updates, error handling, and form
submission scenarios.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Michael Smith <throwawayclover@gmail.com>
2025-08-11 15:43:50 -04:00
Andrew Aquino b8c9192d0b fix: generalize password invalid message (#19307)
fixes #19044 

password over 64 characters means it's _too_ strong; now the error
message is applicable to this case
2025-08-11 12:20:02 -07:00
Michael Suchacz 94bf1e3ae2 chore: symlink CLAUDE.md to AGENTS.md for Codex usage (#19298) 2025-08-11 20:32:17 +02:00
dependabot[bot] 4238b38c4c chore: bump github.com/coder/terraform-provider-coder/v2 from 2.9.0 to 2.10.0 (#19296)
Bumps
[github.com/coder/terraform-provider-coder/v2](https://github.com/coder/terraform-provider-coder)
from 2.9.0 to 2.10.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/coder/terraform-provider-coder/releases">github.com/coder/terraform-provider-coder/v2's
releases</a>.</em></p>
<blockquote>
<h2>v2.10.0</h2>
<h2>What's Changed</h2>
<ul>
<li>feat(coder-attach): add coder_external_agent resource by <a
href="https://github.com/kacpersaw"><code>@​kacpersaw</code></a> in <a
href="https://redirect.github.com/coder/terraform-provider-coder/pull/424">coder/terraform-provider-coder#424</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/kacpersaw"><code>@​kacpersaw</code></a>
made their first contribution in <a
href="https://redirect.github.com/coder/terraform-provider-coder/pull/424">coder/terraform-provider-coder#424</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/coder/terraform-provider-coder/compare/v2.9.0...v2.10.0">https://github.com/coder/terraform-provider-coder/compare/v2.9.0...v2.10.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/coder/terraform-provider-coder/commit/e04ea9c09cae938ca568a14aadc5e65e1ac97026"><code>e04ea9c</code></a>
feat(coder-attach): add coder_external_agent resource (<a
href="https://redirect.github.com/coder/terraform-provider-coder/issues/424">#424</a>)</li>
<li>See full diff in <a
href="https://github.com/coder/terraform-provider-coder/compare/v2.9.0...v2.10.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/coder/terraform-provider-coder/v2&package-manager=go_modules&previous-version=2.9.0&new-version=2.10.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>
2025-08-11 16:58:46 +00:00
dependabot[bot] 8008c08893 chore: bump cloud.google.com/go/compute/metadata from 0.7.0 to 0.8.0 (#19297)
Bumps
[cloud.google.com/go/compute/metadata](https://github.com/googleapis/google-cloud-go)
from 0.7.0 to 0.8.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-cloud-go/releases">cloud.google.com/go/compute/metadata's
releases</a>.</em></p>
<blockquote>
<h2>compute/metadata: v0.8.0</h2>
<h2><a
href="https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.7.0...compute/metadata/v0.8.0">0.8.0</a>
(2025-08-06)</h2>
<h3>Features</h3>
<ul>
<li><strong>compute/metadata:</strong> Add Options.UseDefaultClient (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/12657">#12657</a>)
(<a
href="https://github.com/googleapis/google-cloud-go/commit/1a8820900f20e038291c4bb2c5284a449196e81f">1a88209</a>),
refs <a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/11078">#11078</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-cloud-go/blob/main/CHANGES.md">cloud.google.com/go/compute/metadata's
changelog</a>.</em></p>
<blockquote>
<h2>v0.8.0</h2>
<ul>
<li>profiler package added.</li>
<li>storage:
<ul>
<li>Retry Objects.Insert call.</li>
<li>Add ProgressFunc to WRiter.</li>
</ul>
</li>
<li>pubsub: breaking changes:
<ul>
<li>Publish is now asynchronous (<a
href="https://groups.google.com/d/topic/google-api-go-announce/aaqRDIQ3rvU/discussion">announcement</a>).</li>
<li>Subscription.Pull replaced by Subscription.Receive, which takes a
callback (<a
href="https://groups.google.com/d/topic/google-api-go-announce/8pt6oetAdKc/discussion">announcement</a>).</li>
<li>Message.Done replaced with Message.Ack and Message.Nack.</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/googleapis/google-cloud-go/commit/e11d9d1a1722e191d3d017c08077f2c15189769a"><code>e11d9d1</code></a>
rpcreplay: file format and I/O</li>
<li><a
href="https://github.com/googleapis/google-cloud-go/commit/f5c3fe2352c8d679cfc47d2f102449571022c323"><code>f5c3fe2</code></a>
profiler: Add Cloud Profiler runtime agent for Go.</li>
<li><a
href="https://github.com/googleapis/google-cloud-go/commit/87cc1d286587530f709063127a1faef4ed8431c5"><code>87cc1d2</code></a>
rpcreplay: package doc</li>
<li><a
href="https://github.com/googleapis/google-cloud-go/commit/b4e9a381a01e953e880e6d2cf7fd02d412977cae"><code>b4e9a38</code></a>
storage: retry Objects.Insert call</li>
<li><a
href="https://github.com/googleapis/google-cloud-go/commit/9a04fc8dc5de830157ea2887ab5565f964c311a7"><code>9a04fc8</code></a>
trace: respond with trace context to report the sampling options</li>
<li><a
href="https://github.com/googleapis/google-cloud-go/commit/e8b5f2cc58266b603c1d7dc9f6ac0f254d1670df"><code>e8b5f2c</code></a>
spanner: Increased the maximum allowed sending and recieving msg size to
100 MB</li>
<li><a
href="https://github.com/googleapis/google-cloud-go/commit/dd88571a2747f25e093c425b9a598db5bec04e57"><code>dd88571</code></a>
bigtable: Fix documentation for timestamp range filters</li>
<li><a
href="https://github.com/googleapis/google-cloud-go/commit/c60d02f3cdeb4bf91d4810e9e505800cad03ce9f"><code>c60d02f</code></a>
pubsub: clarify that Topic is goroutine-safe</li>
<li><a
href="https://github.com/googleapis/google-cloud-go/commit/69931d826ffbbcb4f8451b42d5cf7fc2ac6c7443"><code>69931d8</code></a>
bigquery: get streaming buffer info</li>
<li><a
href="https://github.com/googleapis/google-cloud-go/commit/7d132fead24899d37a2aef0112d06b9d5b891d19"><code>7d132fe</code></a>
bigtable: Fix GCRuleToString when GcRule is nil</li>
<li>Additional commits viewable in <a
href="https://github.com/googleapis/google-cloud-go/compare/v0.7.0...v0.8.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=cloud.google.com/go/compute/metadata&package-manager=go_modules&previous-version=0.7.0&new-version=0.8.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>
2025-08-11 16:58:19 +00:00
dependabot[bot] cbcdda25dc ci: bump the github-actions group with 8 updates (#19293)
Bumps the github-actions group with 8 updates:

| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `4.2.2` |
`4.3.0` |
| [actions/cache](https://github.com/actions/cache) | `4.2.3` | `4.2.4`
|
| [crate-ci/typos](https://github.com/crate-ci/typos) | `1.34.0` |
`1.35.3` |
| [docker/login-action](https://github.com/docker/login-action) |
`3.4.0` | `3.5.0` |
|
[google-github-actions/setup-gcloud](https://github.com/google-github-actions/setup-gcloud)
| `2.1.5` | `2.2.0` |
|
[actions/download-artifact](https://github.com/actions/download-artifact)
| `4.3.0` | `5.0.0` |
|
[tj-actions/changed-files](https://github.com/tj-actions/changed-files)
| `c2ca2493190021783138cb8aac49bcee14b4bb89` |
`f963b3f3562b00b6d2dd25efc390eb04e51ef6c6` |
| [github/codeql-action](https://github.com/github/codeql-action) |
`3.29.7` | `3.29.8` |

Updates `actions/checkout` from 4.2.2 to 4.3.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/releases">actions/checkout's
releases</a>.</em></p>
<blockquote>
<h2>v4.3.0</h2>
<h2>What's Changed</h2>
<ul>
<li>docs: update README.md by <a
href="https://github.com/motss"><code>@​motss</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li>Add internal repos for checking out multiple repositories by <a
href="https://github.com/mouismail"><code>@​mouismail</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li>Documentation update - add recommended permissions to Readme by <a
href="https://github.com/benwells"><code>@​benwells</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
<li>Adjust positioning of user email note and permissions heading by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2044">actions/checkout#2044</a></li>
<li>Update README.md by <a
href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li>
<li>Update CODEOWNERS for actions by <a
href="https://github.com/TingluoHuang"><code>@​TingluoHuang</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2224">actions/checkout#2224</a></li>
<li>Update package dependencies by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li>
<li>Prepare release v4.3.0 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2237">actions/checkout#2237</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/motss"><code>@​motss</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li><a href="https://github.com/mouismail"><code>@​mouismail</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li><a href="https://github.com/benwells"><code>@​benwells</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
<li><a href="https://github.com/nebuk89"><code>@​nebuk89</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li>
<li><a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v4...v4.3.0">https://github.com/actions/checkout/compare/v4...v4.3.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>V4.3.0</h2>
<ul>
<li>docs: update README.md by <a
href="https://github.com/motss"><code>@​motss</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li>Add internal repos for checking out multiple repositories by <a
href="https://github.com/mouismail"><code>@​mouismail</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li>Documentation update - add recommended permissions to Readme by <a
href="https://github.com/benwells"><code>@​benwells</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
<li>Adjust positioning of user email note and permissions heading by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2044">actions/checkout#2044</a></li>
<li>Update README.md by <a
href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li>
<li>Update CODEOWNERS for actions by <a
href="https://github.com/TingluoHuang"><code>@​TingluoHuang</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2224">actions/checkout#2224</a></li>
<li>Update package dependencies by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li>
</ul>
<h2>v4.2.2</h2>
<ul>
<li><code>url-helper.ts</code> now leverages well-known environment
variables by <a href="https://github.com/jww3"><code>@​jww3</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/1941">actions/checkout#1941</a></li>
<li>Expand unit test coverage for <code>isGhes</code> by <a
href="https://github.com/jww3"><code>@​jww3</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1946">actions/checkout#1946</a></li>
</ul>
<h2>v4.2.1</h2>
<ul>
<li>Check out other refs/* by commit if provided, fall back to ref by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1924">actions/checkout#1924</a></li>
</ul>
<h2>v4.2.0</h2>
<ul>
<li>Add Ref and Commit outputs by <a
href="https://github.com/lucacome"><code>@​lucacome</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1180">actions/checkout#1180</a></li>
<li>Dependency updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>- <a
href="https://redirect.github.com/actions/checkout/pull/1777">actions/checkout#1777</a>,
<a
href="https://redirect.github.com/actions/checkout/pull/1872">actions/checkout#1872</a></li>
</ul>
<h2>v4.1.7</h2>
<ul>
<li>Bump the minor-npm-dependencies group across 1 directory with 4
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1739">actions/checkout#1739</a></li>
<li>Bump actions/checkout from 3 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1697">actions/checkout#1697</a></li>
<li>Check out other refs/* by commit by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1774">actions/checkout#1774</a></li>
<li>Pin actions/checkout's own workflows to a known, good, stable
version. by <a href="https://github.com/jww3"><code>@​jww3</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1776">actions/checkout#1776</a></li>
</ul>
<h2>v4.1.6</h2>
<ul>
<li>Check platform to set archive extension appropriately by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1732">actions/checkout#1732</a></li>
</ul>
<h2>v4.1.5</h2>
<ul>
<li>Update NPM dependencies by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1703">actions/checkout#1703</a></li>
<li>Bump github/codeql-action from 2 to 3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1694">actions/checkout#1694</a></li>
<li>Bump actions/setup-node from 1 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1696">actions/checkout#1696</a></li>
<li>Bump actions/upload-artifact from 2 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1695">actions/checkout#1695</a></li>
<li>README: Suggest <code>user.email</code> to be
<code>41898282+github-actions[bot]@users.noreply.github.com</code> by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1707">actions/checkout#1707</a></li>
</ul>
<h2>v4.1.4</h2>
<ul>
<li>Disable <code>extensions.worktreeConfig</code> when disabling
<code>sparse-checkout</code> by <a
href="https://github.com/jww3"><code>@​jww3</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1692">actions/checkout#1692</a></li>
<li>Add dependabot config by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1688">actions/checkout#1688</a></li>
<li>Bump the minor-actions-dependencies group with 2 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1693">actions/checkout#1693</a></li>
<li>Bump word-wrap from 1.2.3 to 1.2.5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1643">actions/checkout#1643</a></li>
</ul>
<h2>v4.1.3</h2>
<ul>
<li>Check git version before attempting to disable
<code>sparse-checkout</code> by <a
href="https://github.com/jww3"><code>@​jww3</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1656">actions/checkout#1656</a></li>
<li>Add SSH user parameter by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1685">actions/checkout#1685</a></li>
<li>Update <code>actions/checkout</code> version in
<code>update-main-version.yml</code> by <a
href="https://github.com/jww3"><code>@​jww3</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1650">actions/checkout#1650</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/checkout/commit/08eba0b27e820071cde6df949e0beb9ba4906955"><code>08eba0b</code></a>
Prepare release v4.3.0 (<a
href="https://redirect.github.com/actions/checkout/issues/2237">#2237</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/631c7dc4f80f88219c5ee78fee08c6b62fac8da1"><code>631c7dc</code></a>
Update package dependencies (<a
href="https://redirect.github.com/actions/checkout/issues/2236">#2236</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/8edcb1bdb4e267140fa742c62e395cd74f332709"><code>8edcb1b</code></a>
Update CODEOWNERS for actions (<a
href="https://redirect.github.com/actions/checkout/issues/2224">#2224</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/09d2acae674a48949e3602304ab46fd20ae0c42f"><code>09d2aca</code></a>
Update README.md (<a
href="https://redirect.github.com/actions/checkout/issues/2194">#2194</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/85e6279cec87321a52edac9c87bce653a07cf6c2"><code>85e6279</code></a>
Adjust positioning of user email note and permissions heading (<a
href="https://redirect.github.com/actions/checkout/issues/2044">#2044</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/009b9ae9e446ad8d9b8c809870b0fbcc5e03573e"><code>009b9ae</code></a>
Documentation update - add recommended permissions to Readme (<a
href="https://redirect.github.com/actions/checkout/issues/2043">#2043</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/cbb722410c2e876e24abbe8de2cc27693e501dcb"><code>cbb7224</code></a>
Update README.md (<a
href="https://redirect.github.com/actions/checkout/issues/1977">#1977</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/3b9b8c884f6b4bb4d5be2779c26374abadae0871"><code>3b9b8c8</code></a>
docs: update README.md (<a
href="https://redirect.github.com/actions/checkout/issues/1971">#1971</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/checkout/compare/11bd71901bbe5b1630ceea73d27597364c9af683...08eba0b27e820071cde6df949e0beb9ba4906955">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/cache` from 4.2.3 to 4.2.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/cache/releases">actions/cache's
releases</a>.</em></p>
<blockquote>
<h2>v4.2.4</h2>
<h2>What's Changed</h2>
<ul>
<li>Update README.md by <a
href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
href="https://redirect.github.com/actions/cache/pull/1620">actions/cache#1620</a></li>
<li>Upgrade <code>@actions/cache</code> to <code>4.0.5</code> and move
<code>@protobuf-ts/plugin</code> to dev depdencies by <a
href="https://github.com/Link"><code>@​Link</code></a>- in <a
href="https://redirect.github.com/actions/cache/pull/1634">actions/cache#1634</a></li>
<li>Prepare release <code>4.2.4</code> by <a
href="https://github.com/Link"><code>@​Link</code></a>- in <a
href="https://redirect.github.com/actions/cache/pull/1636">actions/cache#1636</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/nebuk89"><code>@​nebuk89</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/cache/pull/1620">actions/cache#1620</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/cache/compare/v4...v4.2.4">https://github.com/actions/cache/compare/v4...v4.2.4</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/actions/cache/blob/main/RELEASES.md">actions/cache's
changelog</a>.</em></p>
<blockquote>
<h1>Releases</h1>
<h3>4.2.4</h3>
<ul>
<li>Bump <code>@actions/cache</code> to v4.0.5</li>
</ul>
<h3>4.2.3</h3>
<ul>
<li>Bump <code>@actions/cache</code> to v4.0.3 (obfuscates SAS token in
debug logs for cache entries)</li>
</ul>
<h3>4.2.2</h3>
<ul>
<li>Bump <code>@actions/cache</code> to v4.0.2</li>
</ul>
<h3>4.2.1</h3>
<ul>
<li>Bump <code>@actions/cache</code> to v4.0.1</li>
</ul>
<h3>4.2.0</h3>
<p>TLDR; The cache backend service has been rewritten from the ground up
for improved performance and reliability. <a
href="https://github.com/actions/cache">actions/cache</a> now integrates
with the new cache service (v2) APIs.</p>
<p>The new service will gradually roll out as of <strong>February 1st,
2025</strong>. The legacy service will also be sunset on the same date.
Changes in these release are <strong>fully backward
compatible</strong>.</p>
<p><strong>We are deprecating some versions of this action</strong>. We
recommend upgrading to version <code>v4</code> or <code>v3</code> as
soon as possible before <strong>February 1st, 2025.</strong> (Upgrade
instructions below).</p>
<p>If you are using pinned SHAs, please use the SHAs of versions
<code>v4.2.0</code> or <code>v3.4.0</code></p>
<p>If you do not upgrade, all workflow runs using any of the deprecated
<a href="https://github.com/actions/cache">actions/cache</a> will
fail.</p>
<p>Upgrading to the recommended versions will not break your
workflows.</p>
<h3>4.1.2</h3>
<ul>
<li>Add GitHub Enterprise Cloud instances hostname filters to inform API
endpoint choices - <a
href="https://redirect.github.com/actions/cache/pull/1474">#1474</a></li>
<li>Security fix: Bump braces from 3.0.2 to 3.0.3 - <a
href="https://redirect.github.com/actions/cache/pull/1475">#1475</a></li>
</ul>
<h3>4.1.1</h3>
<ul>
<li>Restore original behavior of <code>cache-hit</code> output - <a
href="https://redirect.github.com/actions/cache/pull/1467">#1467</a></li>
</ul>
<h3>4.1.0</h3>
<ul>
<li>Ensure <code>cache-hit</code> output is set when a cache is missed -
<a
href="https://redirect.github.com/actions/cache/pull/1404">#1404</a></li>
<li>Deprecate <code>save-always</code> input - <a
href="https://redirect.github.com/actions/cache/pull/1452">#1452</a></li>
</ul>
<h3>4.0.2</h3>
<ul>
<li>Fixed restore <code>fail-on-cache-miss</code> not working.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/cache/commit/0400d5f644dc74513175e3cd8d07132dd4860809"><code>0400d5f</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/cache/issues/1636">#1636</a>
from actions/Link-/release-4.2.4</li>
<li><a
href="https://github.com/actions/cache/commit/374a27f26986edd8c430f386d152a856e179c0ae"><code>374a27f</code></a>
Prepare release 4.2.4</li>
<li><a
href="https://github.com/actions/cache/commit/358a7306cd9d78ceffc19271e69cd8528462fccf"><code>358a730</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/cache/issues/1634">#1634</a>
from actions/Link-/optimise-deps</li>
<li><a
href="https://github.com/actions/cache/commit/2ee706ef74683b68fd97d45e549070fc28642768"><code>2ee706e</code></a>
Fix with another approach</li>
<li><a
href="https://github.com/actions/cache/commit/94f7b5d9135a3af2d928e87120da293c9a920f90"><code>94f7b5d</code></a>
Fix bundle exec</li>
<li><a
href="https://github.com/actions/cache/commit/c36116c3f4852e9868973e98be949d101f296afa"><code>c36116c</code></a>
Fix the workflow to use licensed from source</li>
<li><a
href="https://github.com/actions/cache/commit/320fe7d56bfd8d9e7b7694dce399643f5b61d580"><code>320fe7d</code></a>
Update the licensed workflow to use the latest version</li>
<li><a
href="https://github.com/actions/cache/commit/d81cc477d92d48462edee5b1e53b15613993e818"><code>d81cc47</code></a>
Add licensed output</li>
<li><a
href="https://github.com/actions/cache/commit/de243982c557f21f36de55f0c01cd6a8e7a6aa71"><code>de24398</code></a>
Add licensed output</li>
<li><a
href="https://github.com/actions/cache/commit/e7b6a9cc9d34d03fd2bf2834b35a8b9e82faa8e5"><code>e7b6a9c</code></a>
<code>@​protobuf-ts/plugin</code> to dev dependencies</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/cache/compare/5a3ec84eff668545956fd18022155c47e93e2684...0400d5f644dc74513175e3cd8d07132dd4860809">compare
view</a></li>
</ul>
</details>
<br />

Updates `crate-ci/typos` from 1.34.0 to 1.35.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/releases">crate-ci/typos's
releases</a>.</em></p>
<blockquote>
<h2>v1.35.3</h2>
<h2>[1.35.3] - 2025-08-08</h2>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>ratatui</code> in Rust files</li>
</ul>
<h2>v1.35.2</h2>
<h2>[1.35.2] - 2025-08-07</h2>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>unmarshaling</code></li>
</ul>
<h2>v1.35.1</h2>
<h2>[1.35.1] - 2025-08-04</h2>
<h3>Fixes</h3>
<ul>
<li>Fix typo in correction to <code>apostroph</code></li>
<li>Fix typo in correction to <code>cordinate</code></li>
<li>Fix typo in correction to <code>reproduceability</code></li>
<li>Fix typo in correction to <code>revolutionss</code></li>
<li>Fix typo in correction to <code>transivity</code></li>
</ul>
<h2>v1.35.0</h2>
<h2>[1.35.0] - 2025-08-04</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1331">July
2025</a> changes</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/blob/master/CHANGELOG.md">crate-ci/typos's
changelog</a>.</em></p>
<blockquote>
<h1>Change Log</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>The format is based on <a href="http://keepachangelog.com/">Keep a
Changelog</a>
and this project adheres to <a href="http://semver.org/">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased] - ReleaseDate</h2>
<h2>[1.35.3] - 2025-08-08</h2>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>ratatui</code> in Rust files</li>
</ul>
<h2>[1.35.2] - 2025-08-07</h2>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>unmarshaling</code></li>
</ul>
<h2>[1.35.1] - 2025-08-04</h2>
<h3>Fixes</h3>
<ul>
<li>Fix typo in correction to <code>apostroph</code></li>
<li>Fix typo in correction to <code>cordinate</code></li>
<li>Fix typo in correction to <code>reproduceability</code></li>
<li>Fix typo in correction to <code>revolutionss</code></li>
<li>Fix typo in correction to <code>transivity</code></li>
</ul>
<h2>[1.35.0] - 2025-08-04</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1331">July
2025</a> changes</li>
</ul>
<h2>[1.34.0] - 2025-06-30</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1309">June
2025</a> changes</li>
</ul>
<h2>[1.33.1] - 2025-06-02</h2>
<h3>Fixes</h3>
<ul>
<li><em>(dict)</em> Don't correct <code>wasn't</code> to
<code>wasm't</code></li>
</ul>
<h2>[1.33.0] - 2025-06-02</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/crate-ci/typos/commit/52bd719c2c91f9d676e2aa359fc8e0db8925e6d8"><code>52bd719</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/c6f77dda9e9bf82551f03a500347eb06ce8a90b1"><code>c6f77dd</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/crate-ci/typos/commit/e35d08c453d5ac2a4630b633dbb63e819b129193"><code>e35d08c</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1353">#1353</a>
from Rolv-Apneseth/ratatui</li>
<li><a
href="https://github.com/crate-ci/typos/commit/9d6691bc8cf087436d192d03414b9c2420570343"><code>9d6691b</code></a>
fix: Ignore <code>ratatui</code> in Rust files</li>
<li><a
href="https://github.com/crate-ci/typos/commit/f1231bc2bcc92b2b18da70a877cf89afce08dd42"><code>f1231bc</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/66def6387b9bb7954423333521eed23e75651f6e"><code>66def63</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/crate-ci/typos/commit/623f09b5bc658227e7e051fc494f3af24030d1cf"><code>623f09b</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/1080316783320230c1f65e1c374e44dfc13829c6"><code>1080316</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/442605b52920ac6faab2e457d3bafc0a6d05a5d1"><code>442605b</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1352">#1352</a>
from epage/marshaling</li>
<li><a
href="https://github.com/crate-ci/typos/commit/983f866bac2164c77fc4ad8a06cdb0738c38ddba"><code>983f866</code></a>
fix(dict): Don't correct marshaling</li>
<li>Additional commits viewable in <a
href="https://github.com/crate-ci/typos/compare/392b78fe18a52790c53f42456e46124f77346842...52bd719c2c91f9d676e2aa359fc8e0db8925e6d8">compare
view</a></li>
</ul>
</details>
<br />

Updates `docker/login-action` from 3.4.0 to 3.5.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/docker/login-action/releases">docker/login-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.5.0</h2>
<ul>
<li>Support dual-stack endpoints for AWS ECR by <a
href="https://github.com/Spacefish"><code>@​Spacefish</code></a> <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/login-action/pull/874">docker/login-action#874</a>
<a
href="https://redirect.github.com/docker/login-action/pull/876">docker/login-action#876</a></li>
<li>Bump <code>@​aws-sdk/client-ecr</code> to 3.859.0 in <a
href="https://redirect.github.com/docker/login-action/pull/860">docker/login-action#860</a>
<a
href="https://redirect.github.com/docker/login-action/pull/878">docker/login-action#878</a></li>
<li>Bump <code>@​aws-sdk/client-ecr-public</code> to 3.859.0 in <a
href="https://redirect.github.com/docker/login-action/pull/860">docker/login-action#860</a>
<a
href="https://redirect.github.com/docker/login-action/pull/878">docker/login-action#878</a></li>
<li>Bump <code>@​docker/actions-toolkit</code> from 0.57.0 to 0.62.1 in
<a
href="https://redirect.github.com/docker/login-action/pull/870">docker/login-action#870</a></li>
<li>Bump form-data from 2.5.1 to 2.5.5 in <a
href="https://redirect.github.com/docker/login-action/pull/875">docker/login-action#875</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/login-action/compare/v3.4.0...v3.5.0">https://github.com/docker/login-action/compare/v3.4.0...v3.5.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/docker/login-action/commit/184bdaa0721073962dff0199f1fb9940f07167d1"><code>184bdaa</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/878">#878</a>
from docker/dependabot/npm_and_yarn/aws-sdk-dependenc...</li>
<li><a
href="https://github.com/docker/login-action/commit/5c6bc94683baa064818f51e7417087c2ac58b32c"><code>5c6bc94</code></a>
chore: update generated content</li>
<li><a
href="https://github.com/docker/login-action/commit/caf405864315c6006c5581b540e5047cf728b4e7"><code>caf4058</code></a>
build(deps): bump the aws-sdk-dependencies group with 2 updates</li>
<li><a
href="https://github.com/docker/login-action/commit/ef38ec311a7df3f01475313e7c5bb584b74b112a"><code>ef38ec3</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/860">#860</a>
from docker/dependabot/npm_and_yarn/aws-sdk-dependenc...</li>
<li><a
href="https://github.com/docker/login-action/commit/d52e8ef81c0de894e9c95bed8de0ee5955ec7eb7"><code>d52e8ef</code></a>
chore: update generated content</li>
<li><a
href="https://github.com/docker/login-action/commit/9644ab7025be3206ff4b12f1531a1b6919022b00"><code>9644ab7</code></a>
build(deps): bump the aws-sdk-dependencies group with 2 updates</li>
<li><a
href="https://github.com/docker/login-action/commit/7abd1d512621d8896b31f4ea992d207f15915ad6"><code>7abd1d5</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/875">#875</a>
from docker/dependabot/npm_and_yarn/form-data-2.5.5</li>
<li><a
href="https://github.com/docker/login-action/commit/1a81202c4fda440f3b33eca3381d5d39c7efe85e"><code>1a81202</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/876">#876</a>
from crazy-max/aws-public-dual-stack</li>
<li><a
href="https://github.com/docker/login-action/commit/d1ab30dc54161cbfd704562857677edf4dd7837a"><code>d1ab30d</code></a>
chore: update generated content</li>
<li><a
href="https://github.com/docker/login-action/commit/f25ff28d1c8cd9a7c35896711238fed682755e1c"><code>f25ff28</code></a>
support dual-stack for aws public ecr</li>
<li>Additional commits viewable in <a
href="https://github.com/docker/login-action/compare/74a5d142397b4f367a81961eba4e8cd7edddf772...184bdaa0721073962dff0199f1fb9940f07167d1">compare
view</a></li>
</ul>
</details>
<br />

Updates `google-github-actions/setup-gcloud` from 2.1.5 to 2.2.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/google-github-actions/setup-gcloud/releases">google-github-actions/setup-gcloud's
releases</a>.</em></p>
<blockquote>
<h2>v2.2.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Introduce an option to skip the tool cache by <a
href="https://github.com/sethvargo"><code>@​sethvargo</code></a> in <a
href="https://redirect.github.com/google-github-actions/setup-gcloud/pull/718">google-github-actions/setup-gcloud#718</a></li>
<li>Release: v2.2.0 by <a
href="https://github.com/google-github-actions-bot"><code>@​google-github-actions-bot</code></a>
in <a
href="https://redirect.github.com/google-github-actions/setup-gcloud/pull/719">google-github-actions/setup-gcloud#719</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/google-github-actions/setup-gcloud/compare/v2.1.5...v2.2.0">https://github.com/google-github-actions/setup-gcloud/compare/v2.1.5...v2.2.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/google-github-actions/setup-gcloud/commit/cb1e50a9932213ecece00a606661ae9ca44f3397"><code>cb1e50a</code></a>
Release: v2.2.0 (<a
href="https://redirect.github.com/google-github-actions/setup-gcloud/issues/719">#719</a>)</li>
<li><a
href="https://github.com/google-github-actions/setup-gcloud/commit/ef52f8c087fe78d43262625448b746144fe6448c"><code>ef52f8c</code></a>
Introduce an option to skip the tool cache (<a
href="https://redirect.github.com/google-github-actions/setup-gcloud/issues/718">#718</a>)</li>
<li>See full diff in <a
href="https://github.com/google-github-actions/setup-gcloud/compare/6a7c903a70c8625ed6700fa299f5ddb4ca6022e9...cb1e50a9932213ecece00a606661ae9ca44f3397">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/download-artifact` from 4.3.0 to 5.0.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/download-artifact/releases">actions/download-artifact's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update README.md by <a
href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
href="https://redirect.github.com/actions/download-artifact/pull/407">actions/download-artifact#407</a></li>
<li>BREAKING fix: inconsistent path behavior for single artifact
downloads by ID by <a
href="https://github.com/GrantBirki"><code>@​GrantBirki</code></a> in <a
href="https://redirect.github.com/actions/download-artifact/pull/416">actions/download-artifact#416</a></li>
</ul>
<h2>v5.0.0</h2>
<h3>🚨 Breaking Change</h3>
<p>This release fixes an inconsistency in path behavior for single
artifact downloads by ID. <strong>If you're downloading single artifacts
by ID, the output path may change.</strong></p>
<h4>What Changed</h4>
<p>Previously, <strong>single artifact downloads</strong> behaved
differently depending on how you specified the artifact:</p>
<ul>
<li><strong>By name</strong>: <code>name: my-artifact</code> → extracted
to <code>path/</code> (direct)</li>
<li><strong>By ID</strong>: <code>artifact-ids: 12345</code> → extracted
to <code>path/my-artifact/</code> (nested)</li>
</ul>
<p>Now both methods are consistent:</p>
<ul>
<li><strong>By name</strong>: <code>name: my-artifact</code> → extracted
to <code>path/</code> (unchanged)</li>
<li><strong>By ID</strong>: <code>artifact-ids: 12345</code> → extracted
to <code>path/</code> (fixed - now direct)</li>
</ul>
<h4>Migration Guide</h4>
<h5> No Action Needed If:</h5>
<ul>
<li>You download artifacts by <strong>name</strong></li>
<li>You download <strong>multiple</strong> artifacts by ID</li>
<li>You already use <code>merge-multiple: true</code> as a
workaround</li>
</ul>
<h5>⚠️ Action Required If:</h5>
<p>You download <strong>single artifacts by ID</strong> and your
workflows expect the nested directory structure.</p>
<p><strong>Before v5 (nested structure):</strong></p>
<pre lang="yaml"><code>- uses: actions/download-artifact@v4
  with:
    artifact-ids: 12345
    path: dist
# Files were in: dist/my-artifact/
</code></pre>
<blockquote>
<p>Where <code>my-artifact</code> is the name of the artifact you
previously uploaded</p>
</blockquote>
<p><strong>To maintain old behavior (if needed):</strong></p>
<pre lang="yaml"><code>&lt;/tr&gt;&lt;/table&gt; 
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/download-artifact/commit/634f93cb2916e3fdff6788551b99b062d0335ce0"><code>634f93c</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/download-artifact/issues/416">#416</a>
from actions/single-artifact-id-download-path</li>
<li><a
href="https://github.com/actions/download-artifact/commit/b19ff4302770b82aa4694b63703b547756dacce6"><code>b19ff43</code></a>
refactor: resolve download path correctly in artifact download tests
(mainly ...</li>
<li><a
href="https://github.com/actions/download-artifact/commit/e262cbee4ab8c473c61c59a81ad8e9dc760e90db"><code>e262cbe</code></a>
bundle dist</li>
<li><a
href="https://github.com/actions/download-artifact/commit/bff23f9308ceb2f06d673043ea6311519be6a87b"><code>bff23f9</code></a>
update docs</li>
<li><a
href="https://github.com/actions/download-artifact/commit/fff8c148a8fdd56aa81fcb019f0b5f6c65700c4d"><code>fff8c14</code></a>
fix download path logic when downloading a single artifact by id</li>
<li><a
href="https://github.com/actions/download-artifact/commit/448e3f862ab3ef47aa50ff917776823c9946035b"><code>448e3f8</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/download-artifact/issues/407">#407</a>
from actions/nebuk89-patch-1</li>
<li><a
href="https://github.com/actions/download-artifact/commit/47225c44b359a5155efdbbbc352041b3e249fb1b"><code>47225c4</code></a>
Update README.md</li>
<li>See full diff in <a
href="https://github.com/actions/download-artifact/compare/d3f86a106a0bac45b974a628896c90dbdf5c8093...634f93cb2916e3fdff6788551b99b062d0335ce0">compare
view</a></li>
</ul>
</details>
<br />

Updates `tj-actions/changed-files` from
c2ca2493190021783138cb8aac49bcee14b4bb89 to
f963b3f3562b00b6d2dd25efc390eb04e51ef6c6
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tj-actions/changed-files/blob/main/HISTORY.md">tj-actions/changed-files's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.4...v46.0.5">46.0.5</a>
- (2025-04-09)</h1>
<h2><!-- raw HTML omitted -->⚙️ Miscellaneous Tasks</h2>
<ul>
<li><strong>deps:</strong> Bump yaml from 2.7.0 to 2.7.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2520">#2520</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/ed68ef82c095e0d48ec87eccea555d944a631a4c">ed68ef8</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump typescript from 5.8.2 to 5.8.3 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2516">#2516</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/a7bc14b808f23d3b467a4079c69a81f1a4500fd5">a7bc14b</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump <code>@​types/node</code> from
22.13.11 to 22.14.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2517">#2517</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/3d751f6b6d84071a17e1b9cf4ed79a80a27dd0ab">3d751f6</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump eslint-plugin-prettier from 5.2.3 to
5.2.6 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2519">#2519</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/e2fda4ec3cb0bc2a353843cae823430b3124db8f">e2fda4e</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump ts-jest from 29.2.6 to 29.3.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2518">#2518</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/0bed1b1132ec4879a39a2d624cf82a00d0bcfa48">0bed1b1</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump github/codeql-action from 3.28.12 to
3.28.15 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2530">#2530</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/68024587dc36f49685c96d59d3f1081830f968bb">6802458</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump tj-actions/branch-names from 8.0.1 to
8.1.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2521">#2521</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/cf2e39e86bf842d1f9bc5bca56c0a6b207cca792">cf2e39e</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump tj-actions/verify-changed-files from
20.0.1 to 20.0.4 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2523">#2523</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/6abeaa506a419f85fa9e681260b443adbeebb3d4">6abeaa5</a>)
- (dependabot[bot])</li>
</ul>
<h2><!-- raw HTML omitted -->⬆️ Upgrades</h2>
<ul>
<li>Upgraded to v46.0.4 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2511">#2511</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot]
&lt;41898282+github-actions[bot]<a
href="https://github.com/users"><code>@​users</code></a>.noreply.github.com&gt;
(<a
href="https://github.com/tj-actions/changed-files/commit/6f67ee9ac810f0192ea7b3d2086406f97847bcf9">6f67ee9</a>)
- (github-actions[bot])</p>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.3...v46.0.4">46.0.4</a>
- (2025-04-03)</h1>
<h2><!-- raw HTML omitted -->🐛 Bug Fixes</h2>
<ul>
<li>Bug modified_keys and changed_key outputs not set when no changes
detected (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2509">#2509</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/6cb76d07bee4c9772c6882c06c37837bf82a04d3">6cb76d0</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->📚 Documentation</h2>
<ul>
<li>Update readme (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2508">#2508</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/b74df86ccb65173a8e33ba5492ac1a2ca6b216fd">b74df86</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->⬆️ Upgrades</h2>
<ul>
<li>Upgraded to v46.0.3 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2506">#2506</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot]
&lt;41898282+github-actions[bot]<a
href="https://github.com/users"><code>@​users</code></a>.noreply.github.com&gt;
Co-authored-by: Tonye Jack <a
href="mailto:jtonye@ymail.com">jtonye@ymail.com</a> (<a
href="https://github.com/tj-actions/changed-files/commit/27ae6b33eaed7bf87272fdeb9f1c54f9facc9d99">27ae6b3</a>)
- (github-actions[bot])</p>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.2...v46.0.3">46.0.3</a>
- (2025-03-23)</h1>
<h2><!-- raw HTML omitted -->🔄 Update</h2>
<ul>
<li>Updated README.md (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2501">#2501</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot]
&lt;41898282+github-actions[bot]<a
href="https://github.com/users"><code>@​users</code></a>.noreply.github.com&gt;
(<a
href="https://github.com/tj-actions/changed-files/commit/41e0de576a0f2b64d9f06f2773f539109e55a70a">41e0de5</a>)
- (github-actions[bot])</p>
<ul>
<li>Updated README.md (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2499">#2499</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot]
&lt;41898282+github-actions[bot]<a
href="https://github.com/users"><code>@​users</code></a>.noreply.github.com&gt;
(<a
href="https://github.com/tj-actions/changed-files/commit/945787811a795cd840a1157ac590dd7827a05c8e">9457878</a>)
- (github-actions[bot])</p>
<h2><!-- raw HTML omitted -->📚 Documentation</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tj-actions/changed-files/commit/f963b3f3562b00b6d2dd25efc390eb04e51ef6c6"><code>f963b3f</code></a>
chore(deps-dev): bump <code>@​types/node</code> from 24.1.0 to 24.2.0
(<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2640">#2640</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/f956744105e18d78bba3844a1199ce43d6503017"><code>f956744</code></a>
chore(deps): bump actions/download-artifact from 4.3.0 to 5.0.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2641">#2641</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/9009babdfafec9874564eacad3fb7006205ba31a"><code>9009bab</code></a>
chore(deps): bump yaml from 2.8.0 to 2.8.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2642">#2642</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/2ecafed8a9a7bcf95ff103a3753b27e044af2736"><code>2ecafed</code></a>
chore(deps-dev): bump eslint-plugin-prettier from 5.5.3 to 5.5.4 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2643">#2643</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/8cdfb7636d150253dee416a80f11c67f5ba7e9be"><code>8cdfb76</code></a>
chore(deps): bump tj-actions/eslint-changed-files from 25.3.1 to 25.3.2
(<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2638">#2638</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/087c158d0f1269d7ac8571378b39f3130f96a736"><code>087c158</code></a>
chore(deps-dev): bump ts-jest from 29.4.0 to 29.4.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2639">#2639</a>)</li>
<li>See full diff in <a
href="https://github.com/tj-actions/changed-files/compare/c2ca2493190021783138cb8aac49bcee14b4bb89...f963b3f3562b00b6d2dd25efc390eb04e51ef6c6">compare
view</a></li>
</ul>
</details>
<br />

Updates `github/codeql-action` from 3.29.7 to 3.29.8
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.29.8</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.29.8 - 08 Aug 2025</h2>
<ul>
<li>Fix an issue where the Action would autodetect unsupported languages
such as HTML. <a
href="https://redirect.github.com/github/codeql-action/pull/3015">#3015</a></li>
</ul>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.29.8/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<p>No user facing changes.</p>
<h2>3.29.8 - 08 Aug 2025</h2>
<ul>
<li>Fix an issue where the Action would autodetect unsupported languages
such as HTML. <a
href="https://redirect.github.com/github/codeql-action/pull/3015">#3015</a></li>
</ul>
<h2>3.29.7 - 07 Aug 2025</h2>
<p>This release rolls back 3.29.6 to address issues with language
autodetection. It is identical to 3.29.5.</p>
<h2>3.29.6 - 07 Aug 2025</h2>
<ul>
<li>The <code>cleanup-level</code> input to the <code>analyze</code>
Action is now deprecated. The CodeQL Action has written a limited amount
of intermediate results to the database since version 2.2.5, and now
automatically manages cleanup. <a
href="https://redirect.github.com/github/codeql-action/pull/2999">#2999</a></li>
<li>Update default CodeQL bundle version to 2.22.3. <a
href="https://redirect.github.com/github/codeql-action/pull/3000">#3000</a></li>
</ul>
<h2>3.29.5 - 29 Jul 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.22.2. <a
href="https://redirect.github.com/github/codeql-action/pull/2986">#2986</a></li>
</ul>
<h2>3.29.4 - 23 Jul 2025</h2>
<p>No user facing changes.</p>
<h2>3.29.3 - 21 Jul 2025</h2>
<p>No user facing changes.</p>
<h2>3.29.2 - 30 Jun 2025</h2>
<ul>
<li>Experimental: When the <code>quality-queries</code> input for the
<code>init</code> action is provided with an argument, separate
<code>.quality.sarif</code> files are produced and uploaded for each
language with the results of the specified queries. Do not use this in
production as it is part of an internal experiment and subject to change
at any time. <a
href="https://redirect.github.com/github/codeql-action/pull/2935">#2935</a></li>
</ul>
<h2>3.29.1 - 27 Jun 2025</h2>
<ul>
<li>Fix bug in PR analysis where user-provided <code>include</code>
query filter fails to exclude non-included queries. <a
href="https://redirect.github.com/github/codeql-action/pull/2938">#2938</a></li>
<li>Update default CodeQL bundle version to 2.22.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2950">#2950</a></li>
</ul>
<h2>3.29.0 - 11 Jun 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.22.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2925">#2925</a></li>
<li>Bump minimum CodeQL bundle version to 2.16.6. <a
href="https://redirect.github.com/github/codeql-action/pull/2912">#2912</a></li>
</ul>
<h2>3.28.21 - 28 July 2025</h2>
<p>No user facing changes.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/76621b61decf072c1cee8dd1ce2d2a82d33c17ed"><code>76621b6</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3019">#3019</a>
from github/update-v3.29.8-679a40d33</li>
<li><a
href="https://github.com/github/codeql-action/commit/29ac3cefbb645d41622f6f9baa1415e06d73cf06"><code>29ac3ce</code></a>
Add release notes for 3.29.7</li>
<li><a
href="https://github.com/github/codeql-action/commit/737cfdebe687c6e720fb99761f23d89751c3b93a"><code>737cfde</code></a>
Update changelog for v3.29.8</li>
<li><a
href="https://github.com/github/codeql-action/commit/679a40d337fedd9b7318253dd72bfe7dc6d1886c"><code>679a40d</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3014">#3014</a>
from github/henrymercer/rebuild-dispatch</li>
<li><a
href="https://github.com/github/codeql-action/commit/6fe50b283a3d2e5533299f72d99216cd8815500f"><code>6fe50b2</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3015">#3015</a>
from github/henrymercer/language-autodetection-worka...</li>
<li><a
href="https://github.com/github/codeql-action/commit/6bc91d64f66d435200c8ba85c64878c3cbfad33b"><code>6bc91d6</code></a>
Add changelog note</li>
<li><a
href="https://github.com/github/codeql-action/commit/6b4fedca4f3428195d7ba1ca7c7404f9ea472911"><code>6b4fedc</code></a>
Bump Action patch version</li>
<li><a
href="https://github.com/github/codeql-action/commit/5794ffcb4ab0e87e4b8a8446ef048488303db295"><code>5794ffc</code></a>
Fix auto-detection of extractors that aren't languages</li>
<li><a
href="https://github.com/github/codeql-action/commit/bd62bf449cd8695f818546752cc8157693e1716c"><code>bd62bf4</code></a>
Finish in-progress merges</li>
<li><a
href="https://github.com/github/codeql-action/commit/2afb4e6f3c84ec0534284f2b47ae8206dcb401bf"><code>2afb4e6</code></a>
Avoid specifying branch unnecessarily</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/51f77329afa6477de8c49fc9c7046c15b9a4e79d...76621b61decf072c1cee8dd1ce2d2a82d33c17ed">compare
view</a></li>
</ul>
</details>
<br />

<details>
<summary>Most Recent Ignore Conditions Applied to This Pull
Request</summary>

| Dependency Name | Ignore Conditions |
| --- | --- |
| crate-ci/typos | [>= 1.30.a, < 1.31] |
</details>


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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-11 16:10:46 +00:00
dependabot[bot] 331f85e0ac chore: bump github.com/chromedp/chromedp from 0.13.3 to 0.14.1 (#19292)
Bumps
[github.com/chromedp/chromedp](https://github.com/chromedp/chromedp)
from 0.13.3 to 0.14.1.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/chromedp/chromedp/commit/422fa06290cda228e5712bdda55fbf7a0f6c8466"><code>422fa06</code></a>
fix(allocator): Set --enable-unsafe-swiftshader with --disable-gpu</li>
<li><a
href="https://github.com/chromedp/chromedp/commit/c34c35fb81d21803824f9f298d9eac740bcfde9e"><code>c34c35f</code></a>
Fixing issue with page.Navigate calls</li>
<li><a
href="https://github.com/chromedp/chromedp/commit/c3337896f2239c5b7715a424c13f14d95d3dc4a3"><code>c333789</code></a>
allocator: fix race that causes workgroup panic</li>
<li><a
href="https://github.com/chromedp/chromedp/commit/2f3596f46c773ec5af6eb10e5fdfee9a4b2f6688"><code>2f3596f</code></a>
Run modernize -fix -test ./...</li>
<li><a
href="https://github.com/chromedp/chromedp/commit/743c1e442dd5e0536d46c64bb2d6360bec0ac082"><code>743c1e4</code></a>
Fix CreateTarget call</li>
<li><a
href="https://github.com/chromedp/chromedp/commit/a2c672facedf743ba9f9cea01151358ca30f3be2"><code>a2c672f</code></a>
fix: <a
href="https://redirect.github.com/chromedp/chromedp/issues/1448">#1448</a></li>
<li><a
href="https://github.com/chromedp/chromedp/commit/5a4d7c0955a049d70f219b181d78302525f9ef63"><code>5a4d7c0</code></a>
Updating cdproto</li>
<li>See full diff in <a
href="https://github.com/chromedp/chromedp/compare/v0.13.3...v0.14.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/chromedp/chromedp&package-manager=go_modules&previous-version=0.13.3&new-version=0.14.1)](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>
2025-08-11 15:37:04 +00:00
dependabot[bot] 39bcd819cc chore: bump github.com/aws/aws-sdk-go-v2/feature/rds/auth from 1.5.1 to 1.6.2 (#19291)
Bumps
[github.com/aws/aws-sdk-go-v2/feature/rds/auth](https://github.com/aws/aws-sdk-go-v2)
from 1.5.1 to 1.6.2.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/aws/aws-sdk-go-v2/blob/service/pi/v1.6.2/CHANGELOG.md">github.com/aws/aws-sdk-go-v2/feature/rds/auth's
changelog</a>.</em></p>
<blockquote>
<h1>Release (2021-10-11)</h1>
<h2>General Highlights</h2>
<ul>
<li><strong>Dependency Update</strong>: Updated to the latest SDK module
versions</li>
</ul>
<h2>Module Highlights</h2>
<ul>
<li><code>github.com/aws/aws-sdk-go-v2/feature/ec2/imds</code>: <a
href="https://github.com/aws/aws-sdk-go-v2/blob/service/pi/v1.6.2/feature/ec2/imds/CHANGELOG.md#v160-2021-10-11">v1.6.0</a>
<ul>
<li><strong>Feature</strong>: Respect passed in Context
Deadline/Timeout. Updates the IMDS Client operations to not override the
passed in Context's Deadline or Timeout options. If an Client operation
is called with a Context with a Deadline or Timeout, the client will no
longer override it with the client's default timeout.</li>
<li><strong>Bug Fix</strong>: Fix IMDS client's response handling and
operation timeout race. Fixes <a
href="https://redirect.github.com/aws/aws-sdk-go-v2/issues/1253">#1253</a></li>
</ul>
</li>
<li><code>github.com/aws/aws-sdk-go-v2/service/amplifybackend</code>: <a
href="https://github.com/aws/aws-sdk-go-v2/blob/service/pi/v1.6.2/service/amplifybackend/CHANGELOG.md#v150-2021-10-11">v1.5.0</a>
<ul>
<li><strong>Feature</strong>: API client updated</li>
</ul>
</li>

<li><code>github.com/aws/aws-sdk-go-v2/service/applicationautoscaling</code>:
<a
href="https://github.com/aws/aws-sdk-go-v2/blob/service/pi/v1.6.2/service/applicationautoscaling/CHANGELOG.md#v170-2021-10-11">v1.7.0</a>
<ul>
<li><strong>Feature</strong>: API client updated</li>
</ul>
</li>
<li><code>github.com/aws/aws-sdk-go-v2/service/apprunner</code>: <a
href="https://github.com/aws/aws-sdk-go-v2/blob/service/pi/v1.6.2/service/apprunner/CHANGELOG.md#v130-2021-10-11">v1.3.0</a>
<ul>
<li><strong>Feature</strong>: API client updated</li>
</ul>
</li>
<li><code>github.com/aws/aws-sdk-go-v2/service/backup</code>: <a
href="https://github.com/aws/aws-sdk-go-v2/blob/service/pi/v1.6.2/service/backup/CHANGELOG.md#v160-2021-10-11">v1.6.0</a>
<ul>
<li><strong>Feature</strong>: API client updated</li>
</ul>
</li>
<li><code>github.com/aws/aws-sdk-go-v2/service/chime</code>: <a
href="https://github.com/aws/aws-sdk-go-v2/blob/service/pi/v1.6.2/service/chime/CHANGELOG.md#v1110-2021-10-11">v1.11.0</a>
<ul>
<li><strong>Feature</strong>: API client updated</li>
</ul>
</li>
<li><code>github.com/aws/aws-sdk-go-v2/service/codebuild</code>: <a
href="https://github.com/aws/aws-sdk-go-v2/blob/service/pi/v1.6.2/service/codebuild/CHANGELOG.md#v1110-2021-10-11">v1.11.0</a>
<ul>
<li><strong>Feature</strong>: API client updated</li>
</ul>
</li>
<li><code>github.com/aws/aws-sdk-go-v2/service/databrew</code>: <a
href="https://github.com/aws/aws-sdk-go-v2/blob/service/pi/v1.6.2/service/databrew/CHANGELOG.md#v1100-2021-10-11">v1.10.0</a>
<ul>
<li><strong>Feature</strong>: API client updated</li>
</ul>
</li>
<li><code>github.com/aws/aws-sdk-go-v2/service/ec2</code>: <a
href="https://github.com/aws/aws-sdk-go-v2/blob/service/pi/v1.6.2/service/ec2/CHANGELOG.md#v1190-2021-10-11">v1.19.0</a>
<ul>
<li><strong>Feature</strong>: API client updated</li>
</ul>
</li>
<li><code>github.com/aws/aws-sdk-go-v2/service/efs</code>: <a
href="https://github.com/aws/aws-sdk-go-v2/blob/service/pi/v1.6.2/service/efs/CHANGELOG.md#v180-2021-10-11">v1.8.0</a>
<ul>
<li><strong>Feature</strong>: API client updated</li>
</ul>
</li>

<li><code>github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2</code>:
<a
href="https://github.com/aws/aws-sdk-go-v2/blob/service/pi/v1.6.2/service/elasticloadbalancingv2/CHANGELOG.md#v190-2021-10-11">v1.9.0</a>
<ul>
<li><strong>Feature</strong>: API client updated</li>
</ul>
</li>
<li><code>github.com/aws/aws-sdk-go-v2/service/firehose</code>: <a
href="https://github.com/aws/aws-sdk-go-v2/blob/service/pi/v1.6.2/service/firehose/CHANGELOG.md#v170-2021-10-11">v1.7.0</a>
<ul>
<li><strong>Feature</strong>: API client updated</li>
</ul>
</li>
<li><code>github.com/aws/aws-sdk-go-v2/service/frauddetector</code>: <a
href="https://github.com/aws/aws-sdk-go-v2/blob/service/pi/v1.6.2/service/frauddetector/CHANGELOG.md#v1100-2021-10-11">v1.10.0</a>
<ul>
<li><strong>Feature</strong>: API client updated</li>
</ul>
</li>
<li><code>github.com/aws/aws-sdk-go-v2/service/fsx</code>: <a
href="https://github.com/aws/aws-sdk-go-v2/blob/service/pi/v1.6.2/service/fsx/CHANGELOG.md#v1100-2021-10-11">v1.10.0</a>
<ul>
<li><strong>Feature</strong>: API client updated</li>
</ul>
</li>
<li><code>github.com/aws/aws-sdk-go-v2/service/glue</code>: <a
href="https://github.com/aws/aws-sdk-go-v2/blob/service/pi/v1.6.2/service/glue/CHANGELOG.md#v1120-2021-10-11">v1.12.0</a>
<ul>
<li><strong>Feature</strong>: API client updated</li>
</ul>
</li>
<li><code>github.com/aws/aws-sdk-go-v2/service/grafana</code>: <a
href="https://github.com/aws/aws-sdk-go-v2/blob/service/pi/v1.6.2/service/grafana/CHANGELOG.md#v100-2021-10-11">v1.0.0</a>
<ul>
<li><strong>Release</strong>: New AWS service client module</li>
<li><strong>Feature</strong>: API client updated</li>
</ul>
</li>
<li><code>github.com/aws/aws-sdk-go-v2/service/iotevents</code>: <a
href="https://github.com/aws/aws-sdk-go-v2/blob/service/pi/v1.6.2/service/iotevents/CHANGELOG.md#v180-2021-10-11">v1.8.0</a>
<ul>
<li><strong>Feature</strong>: API client updated</li>
</ul>
</li>
<li><code>github.com/aws/aws-sdk-go-v2/service/kendra</code>: <a
href="https://github.com/aws/aws-sdk-go-v2/blob/service/pi/v1.6.2/service/kendra/CHANGELOG.md#v1120-2021-10-11">v1.12.0</a>
<ul>
<li><strong>Feature</strong>: API client updated</li>
</ul>
</li>
<li><code>github.com/aws/aws-sdk-go-v2/service/kms</code>: <a
href="https://github.com/aws/aws-sdk-go-v2/blob/service/pi/v1.6.2/service/kms/CHANGELOG.md#v170-2021-10-11">v1.7.0</a>
<ul>
<li><strong>Feature</strong>: API client updated</li>
</ul>
</li>
<li><code>github.com/aws/aws-sdk-go-v2/service/lexmodelsv2</code>: <a
href="https://github.com/aws/aws-sdk-go-v2/blob/service/pi/v1.6.2/service/lexmodelsv2/CHANGELOG.md#v190-2021-10-11">v1.9.0</a>
<ul>
<li><strong>Feature</strong>: API client updated</li>
</ul>
</li>
<li><code>github.com/aws/aws-sdk-go-v2/service/lexruntimev2</code>: <a
href="https://github.com/aws/aws-sdk-go-v2/blob/service/pi/v1.6.2/service/lexruntimev2/CHANGELOG.md#v160-2021-10-11">v1.6.0</a>
<ul>
<li><strong>Feature</strong>: API client updated</li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/26a9df85b9bd8b23a4a0db1bc2f14ef88a1234e7"><code>26a9df8</code></a>
Release 2021-10-11</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/29c9052835b1a9ac5d9f3833a7d549cbd8a50ea4"><code>29c9052</code></a>
update api models (<a
href="https://redirect.github.com/aws/aws-sdk-go-v2/issues/1455">#1455</a>)</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/0d3bd7a3ee7b0eda33531db18f4aa404225381e0"><code>0d3bd7a</code></a>
feature/ec2/imds: Fix Client's response handling and operation timeout
race (...</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/f1baf2dc6d42d48d46bc079d574f60f7a92a223b"><code>f1baf2d</code></a>
Update stale_issue.yml (<a
href="https://redirect.github.com/aws/aws-sdk-go-v2/issues/1447">#1447</a>)</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/74bf5cfb9e3108a48d95e23ca00901cb50cdba2f"><code>74bf5cf</code></a>
Update SDK to use shared tooling for changelog and release handling (<a
href="https://redirect.github.com/aws/aws-sdk-go-v2/issues/1431">#1431</a>)</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/f7e09fbe15942bd0bcff35620a0c099109e5fdd0"><code>f7e09fb</code></a>
Fix a typo in the Retryer docs (<a
href="https://redirect.github.com/aws/aws-sdk-go-v2/issues/1441">#1441</a>)</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/654440450eb02e128d94dd3aa4ac690a80aabc3a"><code>6544404</code></a>
Release 2021-09-30</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/54c5dd79da51255301812dfabd37f90818a2316c"><code>54c5dd7</code></a>
update endpoint for cloud control (<a
href="https://redirect.github.com/aws/aws-sdk-go-v2/issues/1444">#1444</a>)</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/f70d329ff8d41fd0602cd370516d41a5b2c28000"><code>f70d329</code></a>
update models (<a
href="https://redirect.github.com/aws/aws-sdk-go-v2/issues/1443">#1443</a>)</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/cc132614991d2e36a7b5ca8685aea13bf1337224"><code>cc13261</code></a>
Release 2021-09-24</li>
<li>Additional commits viewable in <a
href="https://github.com/aws/aws-sdk-go-v2/compare/service/pi/v1.5.1...service/pi/v1.6.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2/feature/rds/auth&package-manager=go_modules&previous-version=1.5.1&new-version=1.6.2)](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>
2025-08-11 15:34:43 +00:00
dependabot[bot] 894a80b86b chore: bump github.com/mark3labs/mcp-go from 0.36.0 to 0.37.0 (#19290)
Bumps [github.com/mark3labs/mcp-go](https://github.com/mark3labs/mcp-go)
from 0.36.0 to 0.37.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mark3labs/mcp-go/releases">github.com/mark3labs/mcp-go's
releases</a>.</em></p>
<blockquote>
<h2>Release v0.37.0</h2>
<h2>⚠️ Breaking Changes</h2>
<p>The <code>Result.Meta</code> field type has changed from
<code>map[string]any</code> to <code>*Meta</code>. Code that directly
accesses or sets this field will need to be updated:</p>
<pre lang="go"><code>// Before (v0.36.0 and earlier):
result.Meta = map[string]any{&quot;key&quot;: &quot;value&quot;}
<p>// After (v0.37.0):
result.Meta = &amp;mcp.Meta{AdditionalFields:
map[string]any{&quot;key&quot;: &quot;value&quot;}}
</code></pre></p>
<h2>What's Changed</h2>
<ul>
<li>Replace Prompts/Resources/Resource Templates by <a
href="https://github.com/dgageot"><code>@​dgageot</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/518">mark3labs/mcp-go#518</a></li>
<li>Update server.go race condition by <a
href="https://github.com/outofthisworld"><code>@​outofthisworld</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/524">mark3labs/mcp-go#524</a></li>
<li>task: add _meta field to relevant types as defined in MCP
specification by <a
href="https://github.com/buraksenn"><code>@​buraksenn</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/429">mark3labs/mcp-go#429</a></li>
<li>feat: implement sampling support for Streamable HTTP transport by <a
href="https://github.com/andig"><code>@​andig</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/515">mark3labs/mcp-go#515</a></li>
<li>Fix SSE transport not properly handling HTTP/2 NO_ERROR
disconnections by <a
href="https://github.com/okoshi-f"><code>@​okoshi-f</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/509">mark3labs/mcp-go#509</a></li>
<li>feat: add thread-safe <code>SetExpectedState</code> for
cross-request OAuth flows by <a
href="https://github.com/sd2k"><code>@​sd2k</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/500">mark3labs/mcp-go#500</a></li>
<li>feat: allow to set a custom logger in the SSE and STDIO clients by
<a href="https://github.com/caarlos0"><code>@​caarlos0</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/525">mark3labs/mcp-go#525</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/outofthisworld"><code>@​outofthisworld</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/524">mark3labs/mcp-go#524</a></li>
<li><a href="https://github.com/buraksenn"><code>@​buraksenn</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/429">mark3labs/mcp-go#429</a></li>
<li><a href="https://github.com/andig"><code>@​andig</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/515">mark3labs/mcp-go#515</a></li>
<li><a href="https://github.com/okoshi-f"><code>@​okoshi-f</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/509">mark3labs/mcp-go#509</a></li>
<li><a href="https://github.com/caarlos0"><code>@​caarlos0</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/525">mark3labs/mcp-go#525</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.36.0...v0.37.0">https://github.com/mark3labs/mcp-go/compare/v0.36.0...v0.37.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/6da5cd164852f4d90c39c4ce70dc3dd0aed906f2"><code>6da5cd1</code></a>
feat: allow to set a custom logger in the SSE and STDIO clients (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/525">#525</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/9259d32af54f69fbdc8c69b762c6a9449f0413b1"><code>9259d32</code></a>
feat: add thread-safe <code>SetExpectedState</code> for cross-request
OAuth flows (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/500">#500</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/a63f10e5b74cf6cfe2fa59b07b8e3f54a69366b9"><code>a63f10e</code></a>
Fix SSE transport not properly handling HTTP/2 NO_ERROR disconnections
(<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/509">#509</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/fda6b38ed3a514e7943b46d46fcac27a71204e67"><code>fda6b38</code></a>
feat: implement sampling support for Streamable HTTP transport (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/515">#515</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/6e5d6fd976451bc1a1cc32e26cababce562c0ceb"><code>6e5d6fd</code></a>
fix unmarshalling error for Meta property</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/57740b672a283f27346158289449b1d8f0c31a59"><code>57740b6</code></a>
task: add _meta field to relevant types (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/429">#429</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/96de11276c5934385ce4b95f493fcef172f438de"><code>96de112</code></a>
Update server.go race condition (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/524">#524</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/4cca302f5eac488b407d87ac58fffd63517e6af6"><code>4cca302</code></a>
Replace Prompts/Resources/Resource Templates (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/518">#518</a>)</li>
<li>See full diff in <a
href="https://github.com/mark3labs/mcp-go/compare/v0.36.0...v0.37.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/mark3labs/mcp-go&package-manager=go_modules&previous-version=0.36.0&new-version=0.37.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>
2025-08-11 15:32:14 +00:00
dependabot[bot] 2a81449b75 chore: bump the x group with 7 updates (#19289)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps the x group with 7 updates:

| Package | From | To |
| --- | --- | --- |
| [golang.org/x/crypto](https://github.com/golang/crypto) | `0.40.0` |
`0.41.0` |
| [golang.org/x/mod](https://github.com/golang/mod) | `0.26.0` |
`0.27.0` |
| [golang.org/x/net](https://github.com/golang/net) | `0.42.0` |
`0.43.0` |
| [golang.org/x/sys](https://github.com/golang/sys) | `0.34.0` |
`0.35.0` |
| [golang.org/x/term](https://github.com/golang/term) | `0.33.0` |
`0.34.0` |
| [golang.org/x/text](https://github.com/golang/text) | `0.27.0` |
`0.28.0` |
| [golang.org/x/tools](https://github.com/golang/tools) | `0.35.0` |
`0.36.0` |

Updates `golang.org/x/crypto` from 0.40.0 to 0.41.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/crypto/commit/ef5341b70697ceb55f904384bd982587224e8b0c"><code>ef5341b</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="https://github.com/golang/crypto/commit/b999374650442ee37e9bbd97d6a11ad7ed999b98"><code>b999374</code></a>
acme: fix pebble subprocess output data race</li>
<li><a
href="https://github.com/golang/crypto/commit/c247dead11de7671a21a6c5169555e2aa5313caa"><code>c247dea</code></a>
x509roots/fallback: store bundle certs directly in DER</li>
<li><a
href="https://github.com/golang/crypto/commit/1fda73153feef7b246f24005838c387e354e5e3b"><code>1fda731</code></a>
acme: increase pebble test waitForServer attempts</li>
<li><a
href="https://github.com/golang/crypto/commit/1b4c3d2e8c8be172c6af8f2f72778e69e74d2e78"><code>1b4c3d2</code></a>
x509roots/fallback: update bundle</li>
<li><a
href="https://github.com/golang/crypto/commit/b903b535d3ef82fab12a9cc0fa50fccc396ced55"><code>b903b53</code></a>
acme: capture pebble test subprocess stdout/stderr</li>
<li>See full diff in <a
href="https://github.com/golang/crypto/compare/v0.40.0...v0.41.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `golang.org/x/mod` from 0.26.0 to 0.27.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/mod/commit/f8a9fe217cff893cb67f4acad96a0021c13ee6e7"><code>f8a9fe2</code></a>
go.mod: update golang.org/x dependencies</li>
<li>See full diff in <a
href="https://github.com/golang/mod/compare/v0.26.0...v0.27.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `golang.org/x/net` from 0.42.0 to 0.43.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/net/commit/e74bc31d69f225b635e065a602db3fbfa9850f93"><code>e74bc31</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="https://github.com/golang/net/commit/af6926ea18d0703b9f24713074bc7079cf50a744"><code>af6926e</code></a>
http2: remove references to defunct http2.golang.org test server</li>
<li>See full diff in <a
href="https://github.com/golang/net/compare/v0.42.0...v0.43.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `golang.org/x/sys` from 0.34.0 to 0.35.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/sys/commit/5b936e1f126baa13682eff91c2e4d5d9e3a0b71d"><code>5b936e1</code></a>
unix/linux: update to Linux kernel 6.16, Go to 1.24.5</li>
<li><a
href="https://github.com/golang/sys/commit/3a827038f29dfeda71ad5d6fdba5cef0b5720a97"><code>3a82703</code></a>
unix: remove redundant xnu version check for {p}readv/{p}writev</li>
<li><a
href="https://github.com/golang/sys/commit/9920300fc80d500263287b0b4906010f81e3acc4"><code>9920300</code></a>
unix: add missing nft conntrack constants</li>
<li><a
href="https://github.com/golang/sys/commit/ad4e0fcb710c6502fe5d4dba89040508f45ba069"><code>ad4e0fc</code></a>
unix: remove redundant word in comment</li>
<li><a
href="https://github.com/golang/sys/commit/084ad875b3b515f8e782e5bf42ce40e316126e9e"><code>084ad87</code></a>
unix: fix //sys decl after CL 548795</li>
<li>See full diff in <a
href="https://github.com/golang/sys/compare/v0.34.0...v0.35.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `golang.org/x/term` from 0.33.0 to 0.34.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/term/commit/a35244d18d7756b12deca31a518c0fa1327d050a"><code>a35244d</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="https://github.com/golang/term/commit/4f53e0cd3924d70667107169374a480bfd208348"><code>4f53e0c</code></a>
term: allow multi-line bracketed paste to not create single line with
verbati...</li>
<li><a
href="https://github.com/golang/term/commit/27f29d8328742b97c08c2186027d32cdc438345c"><code>27f29d8</code></a>
term: remove duplicate flag and add comment on windows</li>
<li>See full diff in <a
href="https://github.com/golang/term/compare/v0.33.0...v0.34.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `golang.org/x/text` from 0.27.0 to 0.28.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/text/commit/425d715b4a85c7698cedf621412bb53794cbda53"><code>425d715</code></a>
go.mod: update golang.org/x dependencies</li>
<li>See full diff in <a
href="https://github.com/golang/text/compare/v0.27.0...v0.28.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `golang.org/x/tools` from 0.35.0 to 0.36.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/tools/commit/44d18e11572cd133e1eec6811ba57d78ff20addf"><code>44d18e1</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="https://github.com/golang/tools/commit/52b9c68d0135f3d3c2dd2ebdabdfea7e1891fd20"><code>52b9c68</code></a>
go/ast/inspector: remove obsolete unsafe import</li>
<li><a
href="https://github.com/golang/tools/commit/b155480fce19b20e4598a0b8ca83620f1724b7f2"><code>b155480</code></a>
gopls/doc/features: add &quot;MCP&quot; to index.</li>
<li><a
href="https://github.com/golang/tools/commit/992bf9c2a4c3c32dc19e4e6df9bbc255c1808af0"><code>992bf9c</code></a>
gopls/internal/golang/hover: show alias real type decl for types
only</li>
<li><a
href="https://github.com/golang/tools/commit/861996a8e6524e998ff987217493af5fbd9e5793"><code>861996a</code></a>
go/ssa: pass GOEXPERIMENT=aliastypeparams only on Go 1.23</li>
<li><a
href="https://github.com/golang/tools/commit/528efdabbedbd4f98749aa907b412900f5bc3ee5"><code>528efda</code></a>
gopls/internal/analysis/modernize/forvar: provide fix for second loop
var</li>
<li><a
href="https://github.com/golang/tools/commit/bdddfd54ae82000b66cfeadfe6849bdcfefb35cf"><code>bdddfd5</code></a>
gopls/internal/server: add counters for add and remove struct tags</li>
<li><a
href="https://github.com/golang/tools/commit/23dd839aec5d324ef8d353e1bb7163a9d4e63803"><code>23dd839</code></a>
gopls/internal/filewatcher: fix race condition on watcher shutdown</li>
<li><a
href="https://github.com/golang/tools/commit/3a8978cc911172228fd3f5ecb8205d095fea5f05"><code>3a8978c</code></a>
cmd/digraph: fix bug in allpaths</li>
<li><a
href="https://github.com/golang/tools/commit/bae51bdd6e039c826b91c579f4db0294cfb9a5f7"><code>bae51bd</code></a>
gopls/internal/server: add windsurf and cursor as language client</li>
<li>Additional commits viewable in <a
href="https://github.com/golang/tools/compare/v0.35.0...v0.36.0">compare
view</a></li>
</ul>
</details>
<br />


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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-11 15:31:01 +00:00
dependabot[bot] ddf3a50ac0 chore: bump google.golang.org/api from 0.242.0 to 0.246.0 (#19284)
Bumps
[google.golang.org/api](https://github.com/googleapis/google-api-go-client)
from 0.242.0 to 0.246.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-api-go-client/releases">google.golang.org/api's
releases</a>.</em></p>
<blockquote>
<h2>v0.246.0</h2>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.245.0...v0.246.0">0.246.0</a>
(2025-08-06)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3261">#3261</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/b792200673836a4a042bb48938dff17ee6a0954f">b792200</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong>idtoken:</strong> Don't assume DefaultTransport is a
http.Transport (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3263">#3263</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/61fba51991b51d84065a1c66e4a49434462d2c94">61fba51</a>),
refs <a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3260">#3260</a></li>
</ul>
<h2>v0.245.0</h2>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.244.0...v0.245.0">0.245.0</a>
(2025-08-05)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3252">#3252</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/07167280e3c760ca963632dc541e9c1428c639b9">0716728</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3254">#3254</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/702998a9a8285e1093886fc1b0fdfbcc8112fd6f">702998a</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3255">#3255</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/0f103667e9560e28646edc7aa03e47e71983aae5">0f10366</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3256">#3256</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/83176a94b64c04b46b4926f41f5f87d7a54f71f6">83176a9</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3257">#3257</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/efc337167473eb103dbd70f9b5f9491ec1cff75c">efc3371</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3259">#3259</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/bf38d3ad99d570f956658f9f63209a5143f94703">bf38d3a</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong>gensupport:</strong> Fix transferChunk race condition by
returning response with non-cancelled context. (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3258">#3258</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/091d42217a08f1a5873cc13cfb51d4275b18e2e6">091d422</a>)</li>
</ul>
<h2>v0.244.0</h2>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.243.0...v0.244.0">0.244.0</a>
(2025-07-30)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3241">#3241</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/2c204857ee78454d1e2cafb5df2bc3720fc0afbc">2c20485</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3243">#3243</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/cac72a14582b9675f5889a346f4f195988a2c9b5">cac72a1</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3244">#3244</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/e6b1c8715fbffd4598a9c80c21c274f858ea2cfe">e6b1c87</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3245">#3245</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/2c1ff18dfc5f5c9e422ed03c8daf571264eaec4c">2c1ff18</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3247">#3247</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/09e5c0743dfa02b62cf54c797725b5c09744ec65">09e5c07</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3249">#3249</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/214eb4ea568f09bb4b874216e1b4084acb93de49">214eb4e</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3250">#3250</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/ce50789a30c76512543819a36eb0fb91b86edc44">ce50789</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3251">#3251</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/e5c3e1801eaa85fa23ee046f1ffe8193c282b6fd">e5c3e18</a>)</li>
</ul>
<h2>v0.243.0</h2>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.242.0...v0.243.0">0.243.0</a>
(2025-07-22)</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md">google.golang.org/api's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.245.0...v0.246.0">0.246.0</a>
(2025-08-06)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3261">#3261</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/b792200673836a4a042bb48938dff17ee6a0954f">b792200</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong>idtoken:</strong> Don't assume DefaultTransport is a
http.Transport (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3263">#3263</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/61fba51991b51d84065a1c66e4a49434462d2c94">61fba51</a>),
refs <a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3260">#3260</a></li>
</ul>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.244.0...v0.245.0">0.245.0</a>
(2025-08-05)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3252">#3252</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/07167280e3c760ca963632dc541e9c1428c639b9">0716728</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3254">#3254</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/702998a9a8285e1093886fc1b0fdfbcc8112fd6f">702998a</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3255">#3255</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/0f103667e9560e28646edc7aa03e47e71983aae5">0f10366</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3256">#3256</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/83176a94b64c04b46b4926f41f5f87d7a54f71f6">83176a9</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3257">#3257</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/efc337167473eb103dbd70f9b5f9491ec1cff75c">efc3371</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3259">#3259</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/bf38d3ad99d570f956658f9f63209a5143f94703">bf38d3a</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong>gensupport:</strong> Fix transferChunk race condition by
returning response with non-cancelled context. (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3258">#3258</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/091d42217a08f1a5873cc13cfb51d4275b18e2e6">091d422</a>)</li>
</ul>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.243.0...v0.244.0">0.244.0</a>
(2025-07-30)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3241">#3241</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/2c204857ee78454d1e2cafb5df2bc3720fc0afbc">2c20485</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3243">#3243</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/cac72a14582b9675f5889a346f4f195988a2c9b5">cac72a1</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3244">#3244</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/e6b1c8715fbffd4598a9c80c21c274f858ea2cfe">e6b1c87</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3245">#3245</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/2c1ff18dfc5f5c9e422ed03c8daf571264eaec4c">2c1ff18</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3247">#3247</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/09e5c0743dfa02b62cf54c797725b5c09744ec65">09e5c07</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3249">#3249</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/214eb4ea568f09bb4b874216e1b4084acb93de49">214eb4e</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3250">#3250</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/ce50789a30c76512543819a36eb0fb91b86edc44">ce50789</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3251">#3251</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/e5c3e1801eaa85fa23ee046f1ffe8193c282b6fd">e5c3e18</a>)</li>
</ul>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.242.0...v0.243.0">0.243.0</a>
(2025-07-22)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3233">#3233</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/a269dca39e5315e9bfc77cc05b3dbd64af9baa25">a269dca</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3235">#3235</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/b656000d19f9627de3e2817451f82c339ce4e4bb">b656000</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/3341cca405908a19792c898b585a27ae245ed368"><code>3341cca</code></a>
chore(main): release 0.246.0 (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3262">#3262</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/61fba51991b51d84065a1c66e4a49434462d2c94"><code>61fba51</code></a>
fix(idtoken): don't assume DefaultTransport is a http.Transport (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3263">#3263</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/b792200673836a4a042bb48938dff17ee6a0954f"><code>b792200</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3261">#3261</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/ed4d4caf7f9e4cb29e0d5f629e1b3ab623f0d982"><code>ed4d4ca</code></a>
chore(main): release 0.245.0 (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3253">#3253</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/091d42217a08f1a5873cc13cfb51d4275b18e2e6"><code>091d422</code></a>
fix(gensupport): fix transferChunk race condition by returning response
with ...</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/bf38d3ad99d570f956658f9f63209a5143f94703"><code>bf38d3a</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3259">#3259</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/efc337167473eb103dbd70f9b5f9491ec1cff75c"><code>efc3371</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3257">#3257</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/83176a94b64c04b46b4926f41f5f87d7a54f71f6"><code>83176a9</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3256">#3256</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/0f103667e9560e28646edc7aa03e47e71983aae5"><code>0f10366</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3255">#3255</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/702998a9a8285e1093886fc1b0fdfbcc8112fd6f"><code>702998a</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3254">#3254</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/googleapis/google-api-go-client/compare/v0.242.0...v0.246.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/api&package-manager=go_modules&previous-version=0.242.0&new-version=0.246.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>
2025-08-11 15:28:32 +00:00
Mathias Fredriksson 1b66495b70 fix(coderd/prometheusmetrics)!: filter deleted wsbuilds to reduce db load (#19197)
This change removes the `GetLatestWorkspaceBuilds` query which includes
all workspaces for all time (including deleted). This allows us to also
stop using `GetProvisionerJobsByIDs` for said builds as the job status
is included in `GetWorkspaces` called separately.

**BREAKING CHANGE**: The `coderd_api_workspace_latest_build` Prometheus
metric no longer includes builds belonging to deleted workspaces, as
such, this metric will show fewer statuses.

Fixes coder/internal#717
2025-08-11 14:48:31 +03:00
Cian Johnston 060fb57d28 chore(enterprise/coderd): ignore log errors in TestGetCryptoKeys/Unauthorized (#19282)
Fixes https://github.com/coder/internal/issues/797
2025-08-11 12:32:29 +01:00
Jakub Domeracki 5d42b1861e fix: upload the slim binaries from the build directory to the GCS bucket (#19281)
Updated the upload script to copy the slim binaries from the ./build
directory to the GCS bucket (instead of the ./site/out/bin directory)
2025-08-11 12:54:44 +02:00
Thomas Kosiewski b7e026682a fix: skip bash tests on Windows (#19277)
Adds Windows compatibility to toolsdk tests

This PR adds Windows compatibility to the toolsdk tests by:

1. Adding build constraints to exclude bash_test.go from running on
Windows
2. Skipping the WorkspaceSSHExec test on Windows platforms with a clear
message

These changes ensure tests run properly across all supported platforms.

Related to https://github.com/coder/internal/issues/798

Signed-off-by: Thomas Kosiewski <tk@coder.com>
2025-08-11 11:43:25 +02:00
Rowan Smith dadeab881b docs: fix broken link (#19275)
Fixed a broken link to the coder registry so that it correctly loads
agent modules

https://coder.com/docs/ai-coder/custom-agents
2025-08-11 13:27:30 +10:00
dependabot[bot] ab41e98180 chore: bump coder/slackme/coder from 1.0.30 to 1.0.31 in /dogfood/coder-envbuilder (#19274)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/slackme/coder&package-manager=terraform&previous-version=1.0.30&new-version=1.0.31)](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>
2025-08-11 00:47:58 +00:00
dependabot[bot] 99f252f2d1 chore: bump coder/dotfiles/coder from 1.2.0 to 1.2.1 in /dogfood/coder-envbuilder (#19273)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/dotfiles/coder&package-manager=terraform&previous-version=1.2.0&new-version=1.2.1)](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>
2025-08-11 00:46:54 +00:00
dependabot[bot] acb38b1a7e chore: bump coder/jetbrains/coder from 1.0.0 to 1.0.2 in /dogfood/coder (#19272)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/jetbrains/coder&package-manager=terraform&previous-version=1.0.0&new-version=1.0.2)](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>
2025-08-11 00:46:38 +00:00
dependabot[bot] 7b877310b5 chore: bump coder/git-clone/coder from 1.1.0 to 1.1.1 in /dogfood/coder (#19271)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/git-clone/coder&package-manager=terraform&previous-version=1.1.0&new-version=1.1.1)](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>
2025-08-11 00:46:13 +00:00
ケイラ 4f1db8b866 chore: upgrade to storybook 9 (#18983) 2025-08-08 14:36:27 -06:00
Steven Masley ce935657f6 test: start migrating dbauthz tests to mocked db (#19257)
This PR adds a framework to move to a mocked db. And therefore massively speed up these tests.
2025-08-08 13:46:24 -05:00
Cian Johnston 155c7bbc65 chore(coderd/provisionerdserver): avoid fk error on invalid ai_task_sidebar_app_id (#19253)
This is a workaround for https://github.com/coder/coder/issues/18776

We avoid the foreign key issue by checking the previously inserted
workspace applications before calling UpdateWorkspaceAITask. Now,
affected workspaces will show as "not running an AI task" on the single
task view, which is technically correct.

We also insert a provisioner job log at WARN level to ensure that the
user sees some information that they have run into this issue, as well
as logging on the server side.

Longer term, we plan to modify how the workspace tasks view is
presented. This is a stopgap measure until we solidify that plan.

NOTE: this does **not** address the fact that stopping a workspace with
`has_ai_task: true` will result in the completed stop build no longer
having `has_ai_task: true`, resulting in tasks "disappearing" on stop.
2025-08-08 18:06:32 +01:00
Cian Johnston afb54f6884 chore: revert feat(enterprise/coderd): allow system users to be added to groups (#19254)
This reverts commit b200fc8e67
(https://github.com/coder/coder/pull/18341).
2025-08-08 12:18:07 +01:00
Sas Swart b200fc8e67 feat(enterprise/coderd): allow system users to be added to groups (#18341)
closes https://github.com/coder/coder/issues/18274

This pull request makes system users visible in various group related
queries so that they can be added to and removed from groups. This
allows system user quotas to be configured. System users are still
ignored in certain queries, such as when license seat consumption is
determined.

This pull request further ensures the existence of a
"coder_prebuilt_workspaces" group in any organization that needs
prebuilt workspaces

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **New Features**
  * Organization and group member listings now include system users.
* **Bug Fixes**
* Updated tests to reflect the inclusion of system users in member and
group queries.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-08-08 11:03:17 +02:00
Rowan Smith bdde9828b4 docs: fix marketplace links for GCP (#19250) 2025-08-08 16:00:09 +10:00
ケイラ 7bb52e1f8a test: add tests for updating workspace acl (#19240) 2025-08-07 17:09:46 -06:00
ケイラ d1e64affd6 refactor: migrate Abbr to Tailwind (#19242) 2025-08-07 15:27:49 -06:00
Michael Smith 5225c5671d fix(site): add tests for createMockWebSocket (#19172)
Needed for https://github.com/coder/coder/pull/19126 and
https://github.com/coder/coder/pull/18679

## Changes made
- Moved `createWebSocket` to dedicated file and addressed edge cases for
making it a reliable mock
- Added test cases to validate mock functionality
2025-08-07 16:54:50 -04:00
Steven Masley 0a3afeddc8 chore: add more pprof labels for various go routines (#19243)
- ReplicaSync
- Notifications
- MetricsAggregator
- DBPurge
2025-08-07 20:05:32 +00:00
Yevhenii Shcherbina c65996a041 feat: add user_secrets table (#19162)
Closes https://github.com/coder/internal/issues/780

## Summary of changes:
- added `user_secrets` table
- `user_secrets` table contains `env_name` and `file_path` fields which
are not used at the moment, but will be used in later PRs
- `user_secrets` table doesn't contain `value_key_id`, I will add it in
a separate migration in a dbcrypt PR
- on one hand I don't want to add fields which are not used (because
it's a risk smth may change in implementation later), on the other hand
I don't want to add too many migrations for user secrets table
- added unique sql indexes
- added sql queries for CRUD operations on user-secrets
- introduced new `ResourceUserSecret` resource
- basic unit-tests for CRUD ops and authorization behavior
- Role updates:
  - owner:
    - remove `ResourceUserSecret` from site-wide perms
    - add `ResourceUserSecret` to user-wide perms
   - orgAdmin
- remove `ResourceUserSecret` from org-wide perms; seems it's not
strictly required, because `ResourceUserSecret` is not tied to
organization in dbauthz wrappers?
   - memberRole
- no need to change memberRole because it implicitly has access to
user-secrets thanks to the `allPermsExcept`
   - is it enough changes to roles?
   
Main questions:
- [ ] We will have 2 migrations for user-secrets:
  - initial migration (in current PR)
  - adding `value_key_id` in dbcrypt PR
  - is this approach reasonable?
- [ ] Are changes to roles's permissions are correct?
- [ ] Are changes in roles_test.go are correct?

---------

Co-authored-by: Steven Masley <Emyrk@users.noreply.github.com>
2025-08-07 15:58:59 -04:00
Steven Masley 34c46c0748 chore: rename service -> coder_service, remove agent_id label (#19241)
Pyroscope uses `service` tag for top level distinction. So move our
`service` -> `coder_service`
2025-08-07 13:58:39 -05:00
Andrew Aquino b8851f03e3 fix: prevent horizontal form section info from overlapping form fields (#19189)
...on screens that are not wide enough to accommodate 2-column layout.

closes #19055 

Sticky positioning on form section info still works as expected on
desktop:


https://github.com/user-attachments/assets/e8f5b364-d20e-4248-acc6-848293947c92

Sticky positioning is no longer applied to form section info on
tablet/mobile:


https://github.com/user-attachments/assets/c52c6b04-7b73-457e-9d9e-0b461fff56ac
2025-08-07 11:08:23 -07:00
Steven Masley 8ba8b4f061 chore: add profiling labels for pprof analysis (#19232)
PProf labels segment the code into groups for determing the source of
cpu/memory profiles. Since the web server and background jobs share a
lot of the same code (eg wsbuilder), it helps to know if the load is
user induced, or background job based.
2025-08-07 11:21:17 -05:00
ケイラ 26458cd6f0 refactor: consolidate template and workspace acl validation (#19192) 2025-08-07 10:14:58 -06:00
Danielle Maywood 02de067d46 refactor(site): remove usage of throw in TaskApps.tsx (#19235) 2025-08-07 17:03:51 +01:00
Danielle Maywood ffbd58336a fix(site): fix render crash when no embedded apps are defined for task (#19215)
Fixes https://github.com/coder/coder/issues/19101

We now gracefully handle the scenario where there are no embedded apps
defined for a task.
2025-08-07 14:24:23 +01:00
Spike Curtis 6ba55213fb test: fix timeout on TestServer_X11_EvictionLRU (#19217)
fixes https://github.com/coder/internal/issues/878

On my dev system it takes 900ms, but looking at timestamps in CI it took
25 seconds. Bumping timeout to 60s.

Also fixes the segfault.
2025-08-07 16:40:38 +04:00
Marcin Tojek 2851d9f3ea fix: return empty array if no option multi-selected (#19224)
Related: https://github.com/coder/coder/issues/19145
2025-08-07 11:37:58 +00:00
Spike Curtis 91780db1fe fix: upgrade to 1.24.6 to fix race in lib/pq queries (#19214)
fixes: https://github.com/coder/internal/issues/731

THIS IS A SECURITY FIX

upgrade to go 1.24.6 to avoid https://github.com/golang/go/issues/74831 (CVE-2025-47907)

Also points to a new version of our lib/pq fork that worked around the Go issue, which should restore better performance.
2025-08-07 13:49:51 +04:00
Dean Sheather 82d5a20762 fix: fix flake in workspace TTL test caused by new constraint (#19213) 2025-08-07 07:16:01 +00:00
Ethan 99d75cc000 fix: use system context for querying workspaces when deleting users (#19211)
Closes #19209.

In `templates.go`, we do this to make sure we count ALL workspaces for a template before we try and delete that template:
https://github.com/coder/coder/blob/dc598856e3be0926573dbbe2ec680e95a139093a/coderd/templates.go#L81-L99

However, we weren't doing the same when attempting to delete users, leading to the linked issue. We can solve the issue the same way as we do for templates.
2025-08-07 16:31:27 +10:00
Dean Sheather 9edca92c74 fix: fix incorrect migration in constraint (#19212) 2025-08-07 06:19:00 +00:00
Dean Sheather dc598856e3 chore: improve build deadline code (#19203)
- Adds/improves a lot of comments to make the autostop calculation code
clearer
- Changes the behavior of the enterprise template schedule store to
match the behavior of the workspace TTL endpoint when the new TTL is
zero
- Fixes a bug in the workspace TTL endpoint where it could unset the
build deadline, even though a max_deadline was specified
- Adds a new constraint to the workspace_builds table that enforces the
deadline is non-zero and below the max_deadline if it is set
- Adds CHECK constraint enum generation to scripts/dbgen, used for
testing the above constraint
- Adds Dean and Danielle as CODEOWNERS for the autostop calculation code
2025-08-07 11:00:31 +10:00
Steven Masley ec3b8cea91 chore: add quick filter option for authored templates (#19206) 2025-08-06 17:26:17 -05:00
Marcin Tojek a7fac302bb feat: implement rich multi-selector (#19201)
Fixes: https://github.com/coder/coder/issues/19182
2025-08-06 23:03:51 +02:00
Stephen Kirby 9505ecc73d feat(docs): promote dynamic parameters doc to GA (#19171) 2025-08-06 14:21:58 -05:00
Steven Masley a2e8aa9c28 chore: update coder/preview to v1.0.3 to fix nil ptr deref (#19205)
Woul happen in empty plans, AKA templates with 0 terraform content
2025-08-06 12:40:09 -05:00
Danielle Maywood 1c70d32ef3 fix(site): hide "Show parent apps" when no running or starting devcontainers (#19200)
Fixes https://github.com/coder/coder/issues/19199

We now hide the "Show parent apps" button when there are no running or
starting devcontainers.
2025-08-06 18:24:38 +01:00
Steven Masley 3024bdebcb chore: support 'me' as the username for template author (#19204)
`author:me` to find my templates. Much nicer than knowing my own
username
2025-08-06 11:45:07 -05:00
Steven Masley 5b80c47e8c feat: add author filter command to template filtering (#19202)
Can do `author:username` to filter templates created by a certain
author. Adding to help clean out some templates that I created on our
dev instance. This makes sorting a bit easier.
2025-08-06 10:41:01 -05:00
Jakub Domeracki 408e19fd98 fix: adjust the condition to actually run this step from release branches (#19187)
fix: adjust the condition to actually run this step from release branches
2025-08-06 10:06:23 +02:00
ケイラ 5c88d93207 chore: update to node 20.19.4 (#19188) 2025-08-06 08:19:02 +02:00
Stephen Kirby a2fc26114c chore(docs): update calendar and helm install docs for v2.25.0 (#19186)
Co-authored-by: M Atif Ali <atif@coder.com>
2025-08-06 02:40:40 +00:00
Steven Masley 4ba93824f9 chore(helm): make coder pprof endpoint available externally (#19185)
PProf is still disabled by default
2025-08-05 14:19:57 -05:00
Danielle Maywood cc609cbd53 fix(site): display tasks link when no templates contain an AI task (#19184)
Fixes https://github.com/coder/coder/issues/19059

This change ensures we always show the "Tasks" link, even when a deployment doesn't yet have a tasks template set up.
2025-08-05 19:30:17 +01:00
Danielle Maywood 760dc8b467 fix(agent/agentcontainers): fix TestDevcontainerDiscovery/AutoStart flake (#19179)
Fixes https://github.com/coder/internal/issues/864
2025-08-05 13:58:55 +01:00
Ethan 8b66a5ad59 chore(codersdk/workspacesdk): make dialer fail fast for authnz errors (#19173)
Closes #18599.

The linked issue was created due to me assuming the dialer didn't fail fast at all. In reality, it does fail fast, but only for a select few status codes. Auth[n|z] errors aren't any of those status codes, despite being 'permanent' in the same way a `400` is.
This PR makes 401* and 403 'permanent' errors, meaning the dialer will give up immediately after receiving them from coderd.

*One reason to receive a 401 is when the supplied resume_token is invalid. These are not permanent errors, and when we encounter those the dialer will retain the existing behaviour of unsetting the resume token and retrying.
2025-08-05 17:52:22 +10:00
Spike Curtis 7eb41193f8 test: fix TestSSHServer_ClosesStdin to handle non-atomic write (#19174)
fixes https://github.com/coder/internal/issues/863

We read an output file in a loop, but this could lead to races where the other process has created the file but not written, or a partial write in progress.  Fix is to retry if the content is shorter than we expect.
2025-08-05 11:36:21 +04:00
Cian Johnston b0ba798f78 chore(coderd/provisionerdserver): remove dangerous usage of dbtestutil.DisableForeignKeysAndTriggers (#19122)
May have caught https://github.com/coder/coder/issues/18776
2025-08-04 21:51:33 +01:00
Jakub Domeracki d05a15cb12 fix: adjust the kubectl exec example (#19148)
Current example fails since kubectl version 1.31:
```sh
$ kubectl exec -it deployment/coder /bin/bash -n coder
error: exec [POD] [COMMAND] is not supported anymore. Use exec [POD] -- [COMMAND] instead
```

The legacy syntax was removed in:
https://github.com/kubernetes/kubernetes/pull/125437
2025-08-04 21:24:09 +02:00
Hugo Dutka c94333d9b5 docs: oauth2-provider fixes (#19170)
Adds the oauth2-provider doc page to the manifest so it's rendered in
the docs, fixes formatting in the oauth2-provider doc, and links to it
from the MCP doc.

To see the formatting issues, visit
https://coder.com/docs/@4bcf44a/admin/integrations/oauth2-provider. To
see the doc after the fixes, visit
https://coder.com/docs/@f05969a/admin/integrations/oauth2-provider.
2025-08-04 21:20:51 +02:00
Thomas Kosiewski 247efc0dcc docs: add OAuth2 provider experimental feature documentation (#19165)
# Add OAuth2 Provider Documentation

This PR adds comprehensive documentation for the experimental OAuth2
Provider feature, which allows Coder to function as an OAuth2
authorization server. The documentation covers:

- Feature overview and experimental status warning
- Setup requirements and enabling the feature
- Methods for creating OAuth2 applications (UI and API)
- Integration patterns including standard OAuth2 and PKCE flows
- Discovery endpoints and token management
- Testing and development guidance
- Troubleshooting common issues
- Security considerations and current limitations

The documentation is marked as experimental and includes appropriate
warnings about production usage.

Signed-off-by: Thomas Kosiewski <tk@coder.com>
2025-08-04 20:17:47 +02:00
35C4n0r dc395c3b51 chore: add openai icon (#19118)
Co-authored-by: ケイラ <mckayla@hey.com>
2025-08-04 11:42:16 -06:00
Hugo Dutka a02d1c1e59 docs: document how to start a remote MCP Coder server (#19150)
Document how to start a remote MCP Coder server. Addresses
https://github.com/coder/internal/issues/823.
2025-08-04 18:53:12 +02:00
Phorcys 75749efec7 chore: update diagrams to meet new branding (#19164) 2025-08-04 16:52:51 +00:00
Jon Ayers 8a8c13382e feat: update form-data dependency to 4.0.4 (#19128) 2025-08-04 12:42:50 -04:00
dependabot[bot] 06eaa006ea chore: bump github.com/prometheus/client_golang from 1.22.0 to 1.23.0 (#19159)
Bumps
[github.com/prometheus/client_golang](https://github.com/prometheus/client_golang)
from 1.22.0 to 1.23.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/prometheus/client_golang/releases">github.com/prometheus/client_golang's
releases</a>.</em></p>
<blockquote>
<h2>v1.23.0 - 2025-07-30</h2>
<ul>
<li>[CHANGE] Minimum required Go version is now 1.23, only the two
latest Go versions are supported from now on. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1812">#1812</a></li>
<li>[FEATURE] Add WrapCollectorWith and WrapCollectorWithPrefix <a
href="https://redirect.github.com/prometheus/client_golang/issues/1766">#1766</a></li>
<li>[FEATURE] Add exemplars for native histograms <a
href="https://redirect.github.com/prometheus/client_golang/issues/1686">#1686</a></li>
<li>[ENHANCEMENT] exp/api: Bubble up status code from writeResponse <a
href="https://redirect.github.com/prometheus/client_golang/issues/1823">#1823</a></li>
<li>[ENHANCEMENT] collector/go: Update runtime metrics for Go v1.23 and
v1.24 <a
href="https://redirect.github.com/prometheus/client_golang/issues/1833">#1833</a></li>
<li>[BUGFIX] exp/api: client prompt return on context cancellation <a
href="https://redirect.github.com/prometheus/client_golang/issues/1729">#1729</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md">github.com/prometheus/client_golang's
changelog</a>.</em></p>
<blockquote>
<h2>1.23.0 / 2025-07-30</h2>
<ul>
<li>[CHANGE] Minimum required Go version is now 1.23, only the two
latest Go versions are supported from now on. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1812">#1812</a></li>
<li>[FEATURE] Add WrapCollectorWith and WrapCollectorWithPrefix <a
href="https://redirect.github.com/prometheus/client_golang/issues/1766">#1766</a></li>
<li>[FEATURE] Add exemplars for native histograms <a
href="https://redirect.github.com/prometheus/client_golang/issues/1686">#1686</a></li>
<li>[ENHANCEMENT] exp/api: Bubble up status code from writeResponse <a
href="https://redirect.github.com/prometheus/client_golang/issues/1823">#1823</a></li>
<li>[ENHANCEMENT] collector/go: Update runtime metrics for Go v1.23 and
v1.24 <a
href="https://redirect.github.com/prometheus/client_golang/issues/1833">#1833</a></li>
<li>[BUGFIX] exp/api: client prompt return on context cancellation <a
href="https://redirect.github.com/prometheus/client_golang/issues/1729">#1729</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/prometheus/client_golang/commit/e4b2208dd8cb6d1425f00250db842ec3c1e8749e"><code>e4b2208</code></a>
Cut v1.23.0 (<a
href="https://redirect.github.com/prometheus/client_golang/issues/1848">#1848</a>)</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/d9492afd3a6f2e9782a7fc10363281bfd5b743bb"><code>d9492af</code></a>
cut v1.23.0-rc.1 (<a
href="https://redirect.github.com/prometheus/client_golang/issues/1842">#1842</a>)</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/aeae8a0b4f54a8fa720d19b88638a2d048596f82"><code>aeae8a0</code></a>
Cut v1.23.0-rc.0 (<a
href="https://redirect.github.com/prometheus/client_golang/issues/1837">#1837</a>)</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/b157309b723f0b8588ea604bb78dbbba196803f2"><code>b157309</code></a>
Update common Prometheus files (<a
href="https://redirect.github.com/prometheus/client_golang/issues/1832">#1832</a>)</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/a704e287f467b79744c30af996b7d710d4c6900d"><code>a704e28</code></a>
build(deps): bump the github-actions group with 3 updates (<a
href="https://redirect.github.com/prometheus/client_golang/issues/1826">#1826</a>)</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/c7743110ad2c599de3d8c23682d978a12f9f36d1"><code>c774311</code></a>
Fix errNotImplemented reference (<a
href="https://redirect.github.com/prometheus/client_golang/issues/1835">#1835</a>)</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/db4db7bb0065a76c75b7df6f61d2cf183ecfc473"><code>db4db7b</code></a>
Update runtime metrics for Go v1.23 and v1.24 (<a
href="https://redirect.github.com/prometheus/client_golang/issues/1833">#1833</a>)</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/99d380ebfe865ae2c973c80184bc97ac0d98f083"><code>99d380e</code></a>
Update common Prometheus files (<a
href="https://redirect.github.com/prometheus/client_golang/issues/1831">#1831</a>)</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/f3ef320dcde30f31188c577ad71e6480e91bf464"><code>f3ef320</code></a>
Merge pull request <a
href="https://redirect.github.com/prometheus/client_golang/issues/1828">#1828</a>
from prometheus/dependabot/go_modules/exp/github.com...</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/520c91ae841ff7264b5379fe85e6215fc62734a6"><code>520c91a</code></a>
build(deps): bump github.com/prometheus/common in /exp</li>
<li>Additional commits viewable in <a
href="https://github.com/prometheus/client_golang/compare/v1.22.0...v1.23.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/prometheus/client_golang&package-manager=go_modules&previous-version=1.22.0&new-version=1.23.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>
2025-08-04 15:57:47 +00:00
dependabot[bot] 83aafd8238 chore: bump google.golang.org/grpc from 1.73.0 to 1.74.2 (#19158)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from
1.73.0 to 1.74.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/grpc/grpc-go/releases">google.golang.org/grpc's
releases</a>.</em></p>
<blockquote>
<h2>Release 1.74.2</h2>
<h1>New Features</h1>
<ul>
<li>grpc: introduce new <code>DialOptions</code> and
<code>ServerOptions</code> (<code>WithStaticStreamWindowSize</code>,
<code>WithStaticConnWindowSize</code>,
<code>StaticStreamWindowSize</code>, <code>StaticConnWindowSize</code>)
that force fixed window sizes for all HTTP/2 connections. By default,
gRPC uses dynamic sizing of these windows based upon a BDP estimation
algorithm. The existing options (<code>WithInitialWindowSize</code>,
etc) also disable BDP estimation, but this behavior will be changed in a
following release. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8283">#8283</a>)</li>
</ul>
<h1>API Changes</h1>
<ul>
<li>balancer: add <code>ExitIdle</code> method to <code>Balancer</code>
interface. Earlier, implementing this method was optional. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8367">#8367</a>)</li>
</ul>
<h1>Behavior Changes</h1>
<ul>
<li>xds: Remove the <code>GRPC_EXPERIMENTAL_ENABLE_LEAST_REQUEST</code>
environment variable that allows disabling the least request balancer
with xDS. Least request was made available by default with xDS in
v1.72.0. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8248">#8248</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/atollena"><code>@​atollena</code></a></li>
</ul>
</li>
<li>server: allow 0s grpc-timeout header values, which older gRPC-Java
versions could send. This restores the behavior of grpc-go before
v1.73.0. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8439">#8439</a>)</li>
</ul>
<h1>Bug Fixes</h1>
<ul>
<li>googledirectpath: avoid logging the error message <code>Attempt to
set a bootstrap configuration...</code> when creating multiple
directpath channels. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8419">#8419</a>)</li>
</ul>
<h1>Performance Improvements</h1>
<ul>
<li>transport: reduce heap allocations by pooling objects and avoiding
method-to-closure conversions. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8361">#8361</a>)</li>
<li>transport: reduce heap allocations by re-using
<code>mem.Reader</code> objects. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8360">#8360</a>)</li>
</ul>
<h1>Documentation</h1>
<ul>
<li>examples: add examples to demonstrate enabling experimental metrics
using the OpenTelemetry plugin. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8388">#8388</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/vinothkumarr227"><code>@​vinothkumarr227</code></a></li>
</ul>
</li>
</ul>
<h2>Release 1.74.1</h2>
<p>Version 1.74.1 retracts release v1.74.0 and itself. Release 1.74.0
was accidentally tagged on the wrong commit and should not be used.
Version 1.73.0 should be used until 1.74.2 is released.</p>
<p>Release 1.74.0 was accidentally tagged on the wrong commit and should
not be used. Version 1.73.0 should be used until 1.74.1 is released.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/grpc/grpc-go/commit/e9e00cb28e350d6440145d883d1d6cf675f3c0f3"><code>e9e00cb</code></a>
Change version to 1.74.2 (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8470">#8470</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/bd7cb0a95b518e3f987cccbc44b4ba9a0e51eb80"><code>bd7cb0a</code></a>
Change version to 1.74.2-dev (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8461">#8461</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/002a22c03ed5cb1068ab800fc329c1f199037b63"><code>002a22c</code></a>
Change version to 1.74.1 (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8455">#8455</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/6e8e7e48d13e1891e0f3b5df22f16746edb6e788"><code>6e8e7e4</code></a>
Retract v1.74.0 and v1.74.1 (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8457">#8457</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/48c9e4d1eee9b075a1855dadc24f66157dbf60b3"><code>48c9e4d</code></a>
Change version to 1.74.1-dev (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8408">#8408</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/b8b6cffbb2a9c5dc41fd7ab902b4a0cc37c05b19"><code>b8b6cff</code></a>
Change version to 1.74.0 (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8407">#8407</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/077e2c37bd9f14b1300e3d1feedd431d105895c0"><code>077e2c3</code></a>
Cherry-pick <a
href="https://redirect.github.com/grpc/grpc-go/issues/8411">#8411</a>,
<a
href="https://redirect.github.com/grpc/grpc-go/issues/8419">#8419</a>,
<a
href="https://redirect.github.com/grpc/grpc-go/issues/8422">#8422</a>,
<a href="https://redirect.github.com/grpc/grpc-go/issues/8445">#8445</a>
and <a
href="https://redirect.github.com/grpc/grpc-go/issues/8451">#8451</a> to
v1.74.x (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8454">#8454</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/b34f845d7056a2e052ddb4e99d9d691bf69159bf"><code>b34f845</code></a>
server: allow 0s grpc-timeout header values, as java is known to be able
to s...</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/1787f9427568898e905841f40798bbb78c8dd52c"><code>1787f94</code></a>
xdsclient: export genericResourceTypeDecoder (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8406">#8406</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/15299ccca32bba47c533b0a8e8ba2564a29d71db"><code>15299cc</code></a>
xdsclient: make a function to return the supported resource type
implementati...</li>
<li>Additional commits viewable in <a
href="https://github.com/grpc/grpc-go/compare/v1.73.0...v1.74.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/grpc&package-manager=go_modules&previous-version=1.73.0&new-version=1.74.2)](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>
2025-08-04 15:46:34 +00:00
dependabot[bot] 1ae5cac7b6 chore: bump github.com/aws/aws-sdk-go-v2/config from 1.29.14 to 1.30.2 (#19154)
Bumps
[github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2)
from 1.29.14 to 1.30.2.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/383fd26928547348efed0ee1f8914d9e7a1b0287"><code>383fd26</code></a>
Release 2024-07-10</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/4a055f9d9e17eb7ef2206e8e37ba98d661d13e6a"><code>4a055f9</code></a>
Regenerated Clients</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/e3457953351e6993f57f5ab8e373af8af70be45b"><code>e345795</code></a>
Update endpoints model</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/52a10ac239cc1aab2d070fbb004f6445ca0ddcc0"><code>52a10ac</code></a>
Update API model</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/adab0de9e4ae75aee4f894c99fd1e2ce2de0035e"><code>adab0de</code></a>
remove unused jmespath dependency from main module (<a
href="https://redirect.github.com/aws/aws-sdk-go-v2/issues/2707">#2707</a>)</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/0e07cc82b25692dce8f68e0b5bd0d0c5cdbcd279"><code>0e07cc8</code></a>
Release 2024-07-09</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/5e3583451cd8a91dbca2cc22672c2cfa0c7860cf"><code>5e35834</code></a>
Regenerated Clients</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/a2a28a1eec2a1b6f12f813e4900430a9cc79b6c2"><code>a2a28a1</code></a>
Update endpoints model</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/f5489732257180b7c19456abb050214c2f5cac26"><code>f548973</code></a>
Update API model</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/e7aad565a65dab9b37da7b49c1c79a699c49d85e"><code>e7aad56</code></a>
Release 2024-07-08</li>
<li>Additional commits viewable in <a
href="https://github.com/aws/aws-sdk-go-v2/compare/config/v1.29.14...v1.30.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2/config&package-manager=go_modules&previous-version=1.29.14&new-version=1.30.2)](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>
2025-08-04 15:34:39 +00:00
dependabot[bot] 181c2f00ae chore: bump github.com/coreos/go-oidc/v3 from 3.14.1 to 3.15.0 (#19156)
Bumps [github.com/coreos/go-oidc/v3](https://github.com/coreos/go-oidc)
from 3.14.1 to 3.15.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/coreos/go-oidc/releases">github.com/coreos/go-oidc/v3's
releases</a>.</em></p>
<blockquote>
<h2>v3.15.0</h2>
<h2>What's Changed</h2>
<ul>
<li>oidc: verify the ID Token's signature before processing claims by <a
href="https://github.com/ericchiang"><code>@​ericchiang</code></a> in <a
href="https://redirect.github.com/coreos/go-oidc/pull/464">coreos/go-oidc#464</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/coreos/go-oidc/compare/v3.14.1...v3.15.0">https://github.com/coreos/go-oidc/compare/v3.14.1...v3.15.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/coreos/go-oidc/commit/8d1e57e7e7fb4db0bac61cc200d43846ba071977"><code>8d1e57e</code></a>
oidc: verify the ID Token's signature before processing claims</li>
<li>See full diff in <a
href="https://github.com/coreos/go-oidc/compare/v3.14.1...v3.15.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/coreos/go-oidc/v3&package-manager=go_modules&previous-version=3.14.1&new-version=3.15.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>
2025-08-04 15:29:10 +00:00
dependabot[bot] ce9b20867d chore: bump github.com/fergusstrange/embedded-postgres from 1.31.0 to 1.32.0 (#19155)
Bumps
[github.com/fergusstrange/embedded-postgres](https://github.com/fergusstrange/embedded-postgres)
from 1.31.0 to 1.32.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/fergusstrange/embedded-postgres/releases">github.com/fergusstrange/embedded-postgres's
releases</a>.</em></p>
<blockquote>
<h2>v1.32.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Ensure target directories exist before extraction and add test for
runtime path creation by <a
href="https://github.com/fergusstrange"><code>@​fergusstrange</code></a>
in <a
href="https://redirect.github.com/fergusstrange/embedded-postgres/pull/158">fergusstrange/embedded-postgres#158</a></li>
<li>Add support for Postgres 17 and update default version by <a
href="https://github.com/fergusstrange"><code>@​fergusstrange</code></a>
in <a
href="https://redirect.github.com/fergusstrange/embedded-postgres/pull/159">fergusstrange/embedded-postgres#159</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/fergusstrange/embedded-postgres/compare/v1.31.0...v1.32.0">https://github.com/fergusstrange/embedded-postgres/compare/v1.31.0...v1.32.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/fergusstrange/embedded-postgres/commit/0c7d03d6005dda276bcf9041c9be89ebe86c34e1"><code>0c7d03d</code></a>
Add support for Postgres 17 and update default version (<a
href="https://redirect.github.com/fergusstrange/embedded-postgres/issues/159">#159</a>)</li>
<li><a
href="https://github.com/fergusstrange/embedded-postgres/commit/bab016e3d52239a871b12798f6ddbeefc9d2045a"><code>bab016e</code></a>
Ensure target directories exist before extraction and add test for
runtime pa...</li>
<li>See full diff in <a
href="https://github.com/fergusstrange/embedded-postgres/compare/v1.31.0...v1.32.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/fergusstrange/embedded-postgres&package-manager=go_modules&previous-version=1.31.0&new-version=1.32.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>
2025-08-04 15:26:10 +00:00
dependabot[bot] b4f241391b chore: bump github.com/aws/aws-sdk-go-v2 from 1.36.4 to 1.37.1 (#19151)
Bumps
[github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2)
from 1.36.4 to 1.37.1.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/67148dbe156c9519ccc35f7e46f1df7367c67b81"><code>67148db</code></a>
Release 2025-07-30</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/b21029eeb2699fcba879fd3639464fbb887c0178"><code>b21029e</code></a>
Regenerated Clients</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/6c2dde6522c75df1cfeb807e6f7823f644298d78"><code>6c2dde6</code></a>
Update endpoints model</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/7b710ac3e2a805dc0c2efa8bead2abb66bfe6169"><code>7b710ac</code></a>
Update API model</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/179df1ca8e873d6374f4739e6bab67f3ed62a3c0"><code>179df1c</code></a>
update CONTRIBUTING.md</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/456e51a2895e2ce6c712cebacebb10ad5a8f359e"><code>456e51a</code></a>
fix changelog</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/4ce8fece3fe625af2d8db3d673fcc8265af50485"><code>4ce8fec</code></a>
Join errors when retry token is unavailable (<a
href="https://redirect.github.com/aws/aws-sdk-go-v2/issues/3121">#3121</a>)</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/1eea3dbe07dffcef2fdba6f8e2206b32b91d8a83"><code>1eea3db</code></a>
Release 2025-07-29</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/b63d556f10e3a6a6a48458eeaf5b288feef79c58"><code>b63d556</code></a>
Regenerated Clients</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/1258955cdd238d60ed14ed5ce44cedd6e514f41c"><code>1258955</code></a>
Update endpoints model</li>
<li>Additional commits viewable in <a
href="https://github.com/aws/aws-sdk-go-v2/compare/v1.36.4...v1.37.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2&package-manager=go_modules&previous-version=1.36.4&new-version=1.37.1)](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>
2025-08-04 15:21:27 +00:00
Danielle Maywood b8e2344ef5 chore(agent/agentcontainers): disable project autostart by default (#19114)
We disable the logic that allows autostarting discovered devcontainers
by default. We want this behavior to be opt-in rather than opt-out.

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-04 16:21:13 +01:00
dependabot[bot] 8f538d4412 chore: bump github.com/mark3labs/mcp-go from 0.34.0 to 0.36.0 (#19152)
Bumps [github.com/mark3labs/mcp-go](https://github.com/mark3labs/mcp-go)
from 0.34.0 to 0.36.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mark3labs/mcp-go/releases">github.com/mark3labs/mcp-go's
releases</a>.</em></p>
<blockquote>
<h2>Release v0.36.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Add defs field to ToolsInputSchema by <a
href="https://github.com/ostafen"><code>@​ostafen</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/488">mark3labs/mcp-go#488</a></li>
<li>Remove <code>sampling_server</code> binary file by <a
href="https://github.com/JeffreyCA"><code>@​JeffreyCA</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/512">mark3labs/mcp-go#512</a></li>
<li>chore: remove comments related to JSON-Batching by <a
href="https://github.com/cryo-zd"><code>@​cryo-zd</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/514">mark3labs/mcp-go#514</a></li>
<li>feat: support structured content and output schema by <a
href="https://github.com/pottekkat"><code>@​pottekkat</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/460">mark3labs/mcp-go#460</a></li>
<li>Hide error log when it's not useful by <a
href="https://github.com/dgageot"><code>@​dgageot</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/517">mark3labs/mcp-go#517</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/ostafen"><code>@​ostafen</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/488">mark3labs/mcp-go#488</a></li>
<li><a href="https://github.com/JeffreyCA"><code>@​JeffreyCA</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/512">mark3labs/mcp-go#512</a></li>
<li><a href="https://github.com/dgageot"><code>@​dgageot</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/517">mark3labs/mcp-go#517</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.35.0...v0.36.0">https://github.com/mark3labs/mcp-go/compare/v0.35.0...v0.36.0</a></p>
<h2>Release v0.35.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Http headers by <a
href="https://github.com/adityamj"><code>@​adityamj</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/480">mark3labs/mcp-go#480</a></li>
<li>fix: check if resp is nil on error for initialize methods by <a
href="https://github.com/pottekkat"><code>@​pottekkat</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/492">mark3labs/mcp-go#492</a></li>
<li>Fix race condition in stdio.SendRequest with canceled context by <a
href="https://github.com/ezynda3"><code>@​ezynda3</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/503">mark3labs/mcp-go#503</a></li>
<li>Embed client capabilities into the Session by <a
href="https://github.com/ardaguclu"><code>@​ardaguclu</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/491">mark3labs/mcp-go#491</a></li>
<li>enhc(server): allow adding multiple resource templates at once by <a
href="https://github.com/rafaeljusto"><code>@​rafaeljusto</code></a> in
<a
href="https://redirect.github.com/mark3labs/mcp-go/pull/483">mark3labs/mcp-go#483</a></li>
<li>Get rid of binary file. by <a
href="https://github.com/wkoszek"><code>@​wkoszek</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/505">mark3labs/mcp-go#505</a></li>
<li>feat: implement protocol version negotiation by <a
href="https://github.com/ezynda3"><code>@​ezynda3</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/502">mark3labs/mcp-go#502</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/adityamj"><code>@​adityamj</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/480">mark3labs/mcp-go#480</a></li>
<li><a href="https://github.com/ardaguclu"><code>@​ardaguclu</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/491">mark3labs/mcp-go#491</a></li>
<li><a
href="https://github.com/rafaeljusto"><code>@​rafaeljusto</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/483">mark3labs/mcp-go#483</a></li>
<li><a href="https://github.com/wkoszek"><code>@​wkoszek</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/505">mark3labs/mcp-go#505</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.34.0...v0.35.0">https://github.com/mark3labs/mcp-go/compare/v0.34.0...v0.35.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/cf352645f0aee9b9fb3dc1f735e7c5c9419a1a56"><code>cf35264</code></a>
Merge pull request <a
href="https://redirect.github.com/mark3labs/mcp-go/issues/517">#517</a>
from dgageot/remote-context-cancelled-log</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/8f9d5387d8726529763739007590b2baa380bdd2"><code>8f9d538</code></a>
feat: support structured content and output schema (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/460">#460</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/a43b1048c0c78263858b33129575e9b6c04dad4c"><code>a43b104</code></a>
chore: remove comments related to JSON-Batching (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/514">#514</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/e327695b8b1f5d84c28959fde844f67c432eb3de"><code>e327695</code></a>
Hide error when it's not useful</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/617fcf1f1599ba269e22490d291c77f0fa6a2894"><code>617fcf1</code></a>
Remove <code>sampling_server</code> binary file (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/512">#512</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/5ad6c8d86c75da25113c8a2f843cbbc0a994ba03"><code>5ad6c8d</code></a>
Add defs field to ToolsInputSchema (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/488">#488</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/3964d510cd31aada6eb553fc3d286d4842a28a56"><code>3964d51</code></a>
feat: implement protocol version negotiation (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/502">#502</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/38ac77cf9f42386f1beea4f224fa45eb9b08a926"><code>38ac77c</code></a>
Get rid of binary file. (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/505">#505</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/722d95462707280068b05f33fbd6f5ec5dba6228"><code>722d954</code></a>
enhc(server): allow adding multiple resource templates at once (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/483">#483</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/cc3f765e152630f88f224c4ba3fe867bc5bef598"><code>cc3f765</code></a>
Embed client capabilities into the Session (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/491">#491</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/mark3labs/mcp-go/compare/v0.34.0...v0.36.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/mark3labs/mcp-go&package-manager=go_modules&previous-version=0.34.0&new-version=0.36.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>
2025-08-04 15:21:04 +00:00
dependabot[bot] 5df3bf713c ci: bump the github-actions group with 6 updates (#19149)
Bumps the github-actions group with 6 updates:

| Package | From | To |
| --- | --- | --- |
|
[step-security/harden-runner](https://github.com/step-security/harden-runner)
| `2.12.2` | `2.13.0` |
| [chromaui/action](https://github.com/chromaui/action) | `13.1.2` |
`13.1.3` |
|
[google-github-actions/auth](https://github.com/google-github-actions/auth)
| `2.1.11` | `2.1.12` |
|
[tj-actions/changed-files](https://github.com/tj-actions/changed-files)
| `055970845dd036d7345da7399b7e89f2e10f2b04` |
`c2ca2493190021783138cb8aac49bcee14b4bb89` |
| [tj-actions/branch-names](https://github.com/tj-actions/branch-names)
| `8.2.1` | `9.0.2` |
| [github/codeql-action](https://github.com/github/codeql-action) |
`3.29.3` | `3.29.5` |

Updates `step-security/harden-runner` from 2.12.2 to 2.13.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/step-security/harden-runner/releases">step-security/harden-runner's
releases</a>.</em></p>
<blockquote>
<h2>v2.13.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Improved job markdown summary</li>
<li>Https monitoring for all domains (included with the enterprise
tier)</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/step-security/harden-runner/compare/v2...v2.13.0">https://github.com/step-security/harden-runner/compare/v2...v2.13.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/step-security/harden-runner/commit/ec9f2d5744a09debf3a187a3f4f675c53b671911"><code>ec9f2d5</code></a>
Merge pull request <a
href="https://redirect.github.com/step-security/harden-runner/issues/565">#565</a>
from step-security/rc-24</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/04bcbc31cfcefe0cf4720832008735021cec5ec4"><code>04bcbc3</code></a>
update agent</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/7c7a56fcaa124ab72fff1cc3e81257f264fd7317"><code>7c7a56f</code></a>
feat: get job summary from API</li>
<li>See full diff in <a
href="https://github.com/step-security/harden-runner/compare/v2.12.2...ec9f2d5744a09debf3a187a3f4f675c53b671911">compare
view</a></li>
</ul>
</details>
<br />

Updates `chromaui/action` from 13.1.2 to 13.1.3
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/chromaui/action/commit/58d9ffb36c90c97a02d061544ecc849cc4a242a9"><code>58d9ffb</code></a>
v13.1.3</li>
<li>See full diff in <a
href="https://github.com/chromaui/action/compare/4d8ebd13658d795114f8051e25c28d66f14886c6...58d9ffb36c90c97a02d061544ecc849cc4a242a9">compare
view</a></li>
</ul>
</details>
<br />

Updates `google-github-actions/auth` from 2.1.11 to 2.1.12
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/google-github-actions/auth/releases">google-github-actions/auth's
releases</a>.</em></p>
<blockquote>
<h2>v2.1.12</h2>
<h2>What's Changed</h2>
<ul>
<li>Add retries for getIDToken by <a
href="https://github.com/sethvargo"><code>@​sethvargo</code></a> in <a
href="https://redirect.github.com/google-github-actions/auth/pull/502">google-github-actions/auth#502</a></li>
<li>Release: v2.1.12 by <a
href="https://github.com/google-github-actions-bot"><code>@​google-github-actions-bot</code></a>
in <a
href="https://redirect.github.com/google-github-actions/auth/pull/503">google-github-actions/auth#503</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/google-github-actions/auth/compare/v2.1.11...v2.1.12">https://github.com/google-github-actions/auth/compare/v2.1.11...v2.1.12</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/google-github-actions/auth/commit/b7593ed2efd1c1617e1b0254da33b86225adb2a5"><code>b7593ed</code></a>
Release: v2.1.12 (<a
href="https://redirect.github.com/google-github-actions/auth/issues/503">#503</a>)</li>
<li><a
href="https://github.com/google-github-actions/auth/commit/c1ee334b4fb145a02e9d8343bb2e9f0dd06e586b"><code>c1ee334</code></a>
Add retries for getIDToken (<a
href="https://redirect.github.com/google-github-actions/auth/issues/502">#502</a>)</li>
<li>See full diff in <a
href="https://github.com/google-github-actions/auth/compare/140bb5113ffb6b65a7e9b937a81fa96cf5064462...b7593ed2efd1c1617e1b0254da33b86225adb2a5">compare
view</a></li>
</ul>
</details>
<br />

Updates `tj-actions/changed-files` from
055970845dd036d7345da7399b7e89f2e10f2b04 to
c2ca2493190021783138cb8aac49bcee14b4bb89
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tj-actions/changed-files/blob/main/HISTORY.md">tj-actions/changed-files's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.4...v46.0.5">46.0.5</a>
- (2025-04-09)</h1>
<h2><!-- raw HTML omitted -->⚙️ Miscellaneous Tasks</h2>
<ul>
<li><strong>deps:</strong> Bump yaml from 2.7.0 to 2.7.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2520">#2520</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/ed68ef82c095e0d48ec87eccea555d944a631a4c">ed68ef8</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump typescript from 5.8.2 to 5.8.3 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2516">#2516</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/a7bc14b808f23d3b467a4079c69a81f1a4500fd5">a7bc14b</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump <code>@​types/node</code> from
22.13.11 to 22.14.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2517">#2517</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/3d751f6b6d84071a17e1b9cf4ed79a80a27dd0ab">3d751f6</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump eslint-plugin-prettier from 5.2.3 to
5.2.6 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2519">#2519</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/e2fda4ec3cb0bc2a353843cae823430b3124db8f">e2fda4e</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump ts-jest from 29.2.6 to 29.3.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2518">#2518</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/0bed1b1132ec4879a39a2d624cf82a00d0bcfa48">0bed1b1</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump github/codeql-action from 3.28.12 to
3.28.15 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2530">#2530</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/68024587dc36f49685c96d59d3f1081830f968bb">6802458</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump tj-actions/branch-names from 8.0.1 to
8.1.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2521">#2521</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/cf2e39e86bf842d1f9bc5bca56c0a6b207cca792">cf2e39e</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump tj-actions/verify-changed-files from
20.0.1 to 20.0.4 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2523">#2523</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/6abeaa506a419f85fa9e681260b443adbeebb3d4">6abeaa5</a>)
- (dependabot[bot])</li>
</ul>
<h2><!-- raw HTML omitted -->⬆️ Upgrades</h2>
<ul>
<li>Upgraded to v46.0.4 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2511">#2511</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot]
&lt;41898282+github-actions[bot]<a
href="https://github.com/users"><code>@​users</code></a>.noreply.github.com&gt;
(<a
href="https://github.com/tj-actions/changed-files/commit/6f67ee9ac810f0192ea7b3d2086406f97847bcf9">6f67ee9</a>)
- (github-actions[bot])</p>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.3...v46.0.4">46.0.4</a>
- (2025-04-03)</h1>
<h2><!-- raw HTML omitted -->🐛 Bug Fixes</h2>
<ul>
<li>Bug modified_keys and changed_key outputs not set when no changes
detected (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2509">#2509</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/6cb76d07bee4c9772c6882c06c37837bf82a04d3">6cb76d0</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->📚 Documentation</h2>
<ul>
<li>Update readme (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2508">#2508</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/b74df86ccb65173a8e33ba5492ac1a2ca6b216fd">b74df86</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->⬆️ Upgrades</h2>
<ul>
<li>Upgraded to v46.0.3 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2506">#2506</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot]
&lt;41898282+github-actions[bot]<a
href="https://github.com/users"><code>@​users</code></a>.noreply.github.com&gt;
Co-authored-by: Tonye Jack <a
href="mailto:jtonye@ymail.com">jtonye@ymail.com</a> (<a
href="https://github.com/tj-actions/changed-files/commit/27ae6b33eaed7bf87272fdeb9f1c54f9facc9d99">27ae6b3</a>)
- (github-actions[bot])</p>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.2...v46.0.3">46.0.3</a>
- (2025-03-23)</h1>
<h2><!-- raw HTML omitted -->🔄 Update</h2>
<ul>
<li>Updated README.md (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2501">#2501</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot]
&lt;41898282+github-actions[bot]<a
href="https://github.com/users"><code>@​users</code></a>.noreply.github.com&gt;
(<a
href="https://github.com/tj-actions/changed-files/commit/41e0de576a0f2b64d9f06f2773f539109e55a70a">41e0de5</a>)
- (github-actions[bot])</p>
<ul>
<li>Updated README.md (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2499">#2499</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot]
&lt;41898282+github-actions[bot]<a
href="https://github.com/users"><code>@​users</code></a>.noreply.github.com&gt;
(<a
href="https://github.com/tj-actions/changed-files/commit/945787811a795cd840a1157ac590dd7827a05c8e">9457878</a>)
- (github-actions[bot])</p>
<h2><!-- raw HTML omitted -->📚 Documentation</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tj-actions/changed-files/commit/c2ca2493190021783138cb8aac49bcee14b4bb89"><code>c2ca249</code></a>
test: manual triggered workflows (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2637">#2637</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/94d97fe3f88298bf8b2f2db6fa2ab150f3c1ab77"><code>94d97fe</code></a>
chore(deps): bump tj-actions/branch-names from 9.0.1 to 9.0.2 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2636">#2636</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/18b05b98fcd9dc0bd3870d7a6571535999ba0c3f"><code>18b05b9</code></a>
chore(deps): bump github/codeql-action from 3.29.4 to 3.29.5 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2635">#2635</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/db8d0bfea5a44e51abd5dc1454386c668ae901f9"><code>db8d0bf</code></a>
chore(deps): bump tj-actions/git-cliff from 1.5.0 to 2.0.2 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2632">#2632</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/0e2e8f70c5c6854ee9ff9f94bc2f1b9e7fcead78"><code>0e2e8f7</code></a>
chore(deps): bump tj-actions/branch-names from 8.2.1 to 9.0.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2633">#2633</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/5f2e971c1fcf53fda99e27a542f5e79cff0e7059"><code>5f2e971</code></a>
chore(deps-dev): bump <code>@​types/node</code> from 24.0.15 to 24.1.0
(<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2626">#2626</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/498cf3f89140b3c7b8353c5ae1354765717026ad"><code>498cf3f</code></a>
chore(deps-dev): bump jest from 30.0.4 to 30.0.5 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2627">#2627</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/8378ac87b7b199cd230495c133c4f6b19215e757"><code>8378ac8</code></a>
chore(deps): bump github/codeql-action from 3.29.3 to 3.29.4 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2628">#2628</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/4bfe3cb5bd6f0db4dc8668c4d6bef45ccf2b8ab5"><code>4bfe3cb</code></a>
chore(deps): bump nrwl/nx-set-shas from 4.3.0 to 4.3.3 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2630">#2630</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/a0370f61698fcac830a08949da9fdf96ea0f3ab7"><code>a0370f6</code></a>
chore(deps): bump github/codeql-action from 3.29.2 to 3.29.3 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2625">#2625</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tj-actions/changed-files/compare/055970845dd036d7345da7399b7e89f2e10f2b04...c2ca2493190021783138cb8aac49bcee14b4bb89">compare
view</a></li>
</ul>
</details>
<br />

Updates `tj-actions/branch-names` from 8.2.1 to 9.0.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tj-actions/branch-names/releases">tj-actions/branch-names's
releases</a>.</em></p>
<blockquote>
<h2>v9.0.2</h2>
<h2>What's Changed</h2>
<ul>
<li>Upgraded to v9.0.1 by <a
href="https://github.com/github-actions"><code>@​github-actions</code></a>[bot]
in <a
href="https://redirect.github.com/tj-actions/branch-names/pull/424">tj-actions/branch-names#424</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/tj-actions/branch-names/compare/v9...v9.0.2">https://github.com/tj-actions/branch-names/compare/v9...v9.0.2</a></p>
<h2>v9.0.1</h2>
<h2>What's Changed</h2>
<ul>
<li>build(deps): bump tj-actions/git-cliff from 1.5.0 to 2.0.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/tj-actions/branch-names/pull/422">tj-actions/branch-names#422</a></li>
<li>build(deps): bump codacy/codacy-analysis-cli-action from 4.4.5 to
4.4.7 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/tj-actions/branch-names/pull/421">tj-actions/branch-names#421</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/tj-actions/branch-names/compare/v9.0.0...v9.0.1">https://github.com/tj-actions/branch-names/compare/v9.0.0...v9.0.1</a></p>
<h2>v9.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Upgraded to v8.2.1 by <a
href="https://github.com/github-actions"><code>@​github-actions</code></a>[bot]
in <a
href="https://redirect.github.com/tj-actions/branch-names/pull/417">tj-actions/branch-names#417</a></li>
<li>chore: update action.yml by <a
href="https://github.com/jackton1"><code>@​jackton1</code></a> in <a
href="https://redirect.github.com/tj-actions/branch-names/pull/418">tj-actions/branch-names#418</a></li>
<li>Updated README.md by <a
href="https://github.com/github-actions"><code>@​github-actions</code></a>[bot]
in <a
href="https://redirect.github.com/tj-actions/branch-names/pull/419">tj-actions/branch-names#419</a></li>
<li>security: fix unsafe outputs by <a
href="https://github.com/jackton1"><code>@​jackton1</code></a> in <a
href="https://redirect.github.com/tj-actions/branch-names/pull/420">tj-actions/branch-names#420</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/tj-actions/branch-names/compare/v8...v9.0.0">https://github.com/tj-actions/branch-names/compare/v8...v9.0.0</a></p>
<h2>v9</h2>
<h1>Changes in v9.0.2</h1>
<h2>What's Changed</h2>
<ul>
<li>Upgraded to v9.0.1 by <a
href="https://github.com/github-actions"><code>@​github-actions</code></a>[bot]
in <a
href="https://redirect.github.com/tj-actions/branch-names/pull/424">tj-actions/branch-names#424</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/tj-actions/branch-names/compare/v9...v9.0.2">https://github.com/tj-actions/branch-names/compare/v9...v9.0.2</a></p>
<hr />
<h1>Changes in v9.0.1</h1>
<h2>What's Changed</h2>
<ul>
<li>build(deps): bump tj-actions/git-cliff from 1.5.0 to 2.0.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/tj-actions/branch-names/pull/422">tj-actions/branch-names#422</a></li>
<li>build(deps): bump codacy/codacy-analysis-cli-action from 4.4.5 to
4.4.7 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/tj-actions/branch-names/pull/421">tj-actions/branch-names#421</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/tj-actions/branch-names/compare/v9.0.0...v9.0.1">https://github.com/tj-actions/branch-names/compare/v9.0.0...v9.0.1</a></p>
<hr />
<h1>Changes in v9.0.0</h1>
<h2>What's Changed</h2>
<ul>
<li>Upgraded to v8.2.1 by <a
href="https://github.com/github-actions"><code>@​github-actions</code></a>[bot]
in <a
href="https://redirect.github.com/tj-actions/branch-names/pull/417">tj-actions/branch-names#417</a></li>
<li>chore: update action.yml by <a
href="https://github.com/jackton1"><code>@​jackton1</code></a> in <a
href="https://redirect.github.com/tj-actions/branch-names/pull/418">tj-actions/branch-names#418</a></li>
<li>Updated README.md by <a
href="https://github.com/github-actions"><code>@​github-actions</code></a>[bot]
in <a
href="https://redirect.github.com/tj-actions/branch-names/pull/419">tj-actions/branch-names#419</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tj-actions/branch-names/blob/main/HISTORY.md">tj-actions/branch-names's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h1><a
href="https://github.com/tj-actions/branch-names/compare/v9.0.1...v9.0.2">9.0.2</a>
- (2025-07-31)</h1>
<h2><!-- raw HTML omitted -->🔄 Update</h2>
<ul>
<li>Update update-readme.yml (<a
href="https://github.com/tj-actions/branch-names/commit/5250492686b253f06fa55861556d1027b067aeb5">5250492</a>)
- (Tonye Jack)</li>
<li>Update update-readme.yml (<a
href="https://github.com/tj-actions/branch-names/commit/a2bc4958de72a5590a03c317bcb11581ae7866e7">a2bc495</a>)
- (Tonye Jack)</li>
<li>Update README.md (<a
href="https://github.com/tj-actions/branch-names/commit/169ddc10b28b8cbc75996ee56c1dbf4448ca6f06">169ddc1</a>)
- (Tonye Jack)</li>
<li>Update README.md (<a
href="https://github.com/tj-actions/branch-names/commit/4d35052be347a49c829b8a8e9855f40f14a00be6">4d35052</a>)
- (Tonye Jack)</li>
<li>Updated README.md (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/423">#423</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot]
&lt;41898282+github-actions[bot]<a
href="https://github.com/users"><code>@​users</code></a>.noreply.github.com&gt;
(<a
href="https://github.com/tj-actions/branch-names/commit/6be34a848cdd6067dda01ded8bd9b0853bbe3b23">6be34a8</a>)
- (github-actions[bot])</p>
<h2><!-- raw HTML omitted -->⬆️ Upgrades</h2>
<ul>
<li>Upgraded from v9.0.0 -&gt; v9.0.1 (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/424">#424</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot]
&lt;41898282+github-actions[bot]<a
href="https://github.com/users"><code>@​users</code></a>.noreply.github.com&gt;
(<a
href="https://github.com/tj-actions/branch-names/commit/c0714e7ecc0a7baec34a69b87df070fa6a823e7f">c0714e7</a>)
- (github-actions[bot])</p>
<h1><a
href="https://github.com/tj-actions/branch-names/compare/v9.0.0...v9.0.1">9.0.1</a>
- (2025-07-26)</h1>
<h2><!-- raw HTML omitted -->👷 CI/CD</h2>
<ul>
<li><strong>deps:</strong> Bump codacy/codacy-analysis-cli-action from
4.4.5 to 4.4.7 (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/421">#421</a>)
(<a
href="https://github.com/tj-actions/branch-names/commit/386e117ea34339627a40843704a60a3bc9359234">386e117</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump tj-actions/git-cliff from 1.5.0 to 2.0.2
(<a
href="https://redirect.github.com/tj-actions/branch-names/issues/422">#422</a>)
(<a
href="https://github.com/tj-actions/branch-names/commit/2114174008e541048c2313bfc2c296a484785f14">2114174</a>)
- (dependabot[bot])</li>
</ul>
<h1><a
href="https://github.com/tj-actions/branch-names/compare/v8.2.1...v9.0.0">9.0.0</a>
- (2025-07-25)</h1>
<h2><!-- raw HTML omitted -->🔄 Update</h2>
<ul>
<li>Updated README.md (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/419">#419</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot]
&lt;41898282+github-actions[bot]<a
href="https://github.com/users"><code>@​users</code></a>.noreply.github.com&gt;
(<a
href="https://github.com/tj-actions/branch-names/commit/f904073f20285d3ff38d2dedb647c7e81ab9ccc6">f904073</a>)
- (github-actions[bot])</p>
<h2><!-- raw HTML omitted -->⚙️ Miscellaneous Tasks</h2>
<ul>
<li>Update action.yml (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/418">#418</a>)
(<a
href="https://github.com/tj-actions/branch-names/commit/c81796132291bcac45a405bba3ff42c5c0c2a3e2">c817961</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->🛡️ Security</h2>
<ul>
<li>Fix unsafe outputs (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/420">#420</a>)
(<a
href="https://github.com/tj-actions/branch-names/commit/e497ceb8ccd43fd9573cf2e375216625bc411d1f">e497ceb</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->⬆️ Upgrades</h2>
<ul>
<li>Upgraded from v8.2.0 -&gt; v8.2.1 (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/417">#417</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot]
&lt;41898282+github-actions[bot]<a
href="https://github.com/users"><code>@​users</code></a>.noreply.github.com&gt;
(<a
href="https://github.com/tj-actions/branch-names/commit/46ae71df6d27dd78ff96d2aaf0a59411f9c19e4e">46ae71d</a>)
- (github-actions[bot])</p>
<h1><a
href="https://github.com/tj-actions/branch-names/compare/v8.2.0...v8.2.1">8.2.1</a>
- (2025-04-11)</h1>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tj-actions/branch-names/commit/5250492686b253f06fa55861556d1027b067aeb5"><code>5250492</code></a>
Update update-readme.yml</li>
<li><a
href="https://github.com/tj-actions/branch-names/commit/a2bc4958de72a5590a03c317bcb11581ae7866e7"><code>a2bc495</code></a>
Update update-readme.yml</li>
<li><a
href="https://github.com/tj-actions/branch-names/commit/169ddc10b28b8cbc75996ee56c1dbf4448ca6f06"><code>169ddc1</code></a>
Update README.md</li>
<li><a
href="https://github.com/tj-actions/branch-names/commit/4d35052be347a49c829b8a8e9855f40f14a00be6"><code>4d35052</code></a>
Update README.md</li>
<li><a
href="https://github.com/tj-actions/branch-names/commit/c0714e7ecc0a7baec34a69b87df070fa6a823e7f"><code>c0714e7</code></a>
Upgraded from v9.0.0 -&gt; v9.0.1 (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/424">#424</a>)</li>
<li><a
href="https://github.com/tj-actions/branch-names/commit/6be34a848cdd6067dda01ded8bd9b0853bbe3b23"><code>6be34a8</code></a>
Updated README.md (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/423">#423</a>)</li>
<li><a
href="https://github.com/tj-actions/branch-names/commit/386e117ea34339627a40843704a60a3bc9359234"><code>386e117</code></a>
build(deps): bump codacy/codacy-analysis-cli-action from 4.4.5 to 4.4.7
(<a
href="https://redirect.github.com/tj-actions/branch-names/issues/421">#421</a>)</li>
<li><a
href="https://github.com/tj-actions/branch-names/commit/2114174008e541048c2313bfc2c296a484785f14"><code>2114174</code></a>
build(deps): bump tj-actions/git-cliff from 1.5.0 to 2.0.2 (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/422">#422</a>)</li>
<li><a
href="https://github.com/tj-actions/branch-names/commit/e497ceb8ccd43fd9573cf2e375216625bc411d1f"><code>e497ceb</code></a>
security: fix unsafe outputs (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/420">#420</a>)</li>
<li><a
href="https://github.com/tj-actions/branch-names/commit/f904073f20285d3ff38d2dedb647c7e81ab9ccc6"><code>f904073</code></a>
Updated README.md (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/419">#419</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tj-actions/branch-names/compare/dde14ac574a8b9b1cedc59a1cf312788af43d8d8...5250492686b253f06fa55861556d1027b067aeb5">compare
view</a></li>
</ul>
</details>
<br />

Updates `github/codeql-action` from 3.29.3 to 3.29.5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.29.5</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.29.5 - 29 Jul 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.22.2. <a
href="https://redirect.github.com/github/codeql-action/pull/2986">#2986</a></li>
</ul>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.29.5/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
<h2>v3.29.4</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.29.4 - 23 Jul 2025</h2>
<p>No user facing changes.</p>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.29.4/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<p>No user facing changes.</p>
<h2>3.29.5 - 29 Jul 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.22.2. <a
href="https://redirect.github.com/github/codeql-action/pull/2986">#2986</a></li>
</ul>
<h2>3.29.4 - 23 Jul 2025</h2>
<p>No user facing changes.</p>
<h2>3.29.3 - 21 Jul 2025</h2>
<p>No user facing changes.</p>
<h2>3.29.2 - 30 Jun 2025</h2>
<ul>
<li>Experimental: When the <code>quality-queries</code> input for the
<code>init</code> action is provided with an argument, separate
<code>.quality.sarif</code> files are produced and uploaded for each
language with the results of the specified queries. Do not use this in
production as it is part of an internal experiment and subject to change
at any time. <a
href="https://redirect.github.com/github/codeql-action/pull/2935">#2935</a></li>
</ul>
<h2>3.29.1 - 27 Jun 2025</h2>
<ul>
<li>Fix bug in PR analysis where user-provided <code>include</code>
query filter fails to exclude non-included queries. <a
href="https://redirect.github.com/github/codeql-action/pull/2938">#2938</a></li>
<li>Update default CodeQL bundle version to 2.22.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2950">#2950</a></li>
</ul>
<h2>3.29.0 - 11 Jun 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.22.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2925">#2925</a></li>
<li>Bump minimum CodeQL bundle version to 2.16.6. <a
href="https://redirect.github.com/github/codeql-action/pull/2912">#2912</a></li>
</ul>
<h2>3.28.21 - 28 July 2025</h2>
<p>No user facing changes.</p>
<h2>3.28.20 - 21 July 2025</h2>
<ul>
<li>Remove support for combining SARIF files from a single upload for
GHES 3.18, see <a
href="https://github.blog/changelog/2024-05-06-code-scanning-will-stop-combining-runs-from-a-single-upload/">the
changelog post</a>. <a
href="https://redirect.github.com/github/codeql-action/pull/2959">#2959</a></li>
</ul>
<h2>3.28.19 - 03 Jun 2025</h2>
<ul>
<li>The CodeQL Action no longer includes its own copy of the extractor
for the <code>actions</code> language, which is currently in public
preview.
The <code>actions</code> extractor has been included in the CodeQL CLI
since v2.20.6. If your workflow has enabled the <code>actions</code>
language <em>and</em> you have pinned
your <code>tools:</code> property to a specific version of the CodeQL
CLI earlier than v2.20.6, you will need to update to at least CodeQL
v2.20.6 or disable
<code>actions</code> analysis.</li>
<li>Update default CodeQL bundle version to 2.21.4. <a
href="https://redirect.github.com/github/codeql-action/pull/2910">#2910</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/51f77329afa6477de8c49fc9c7046c15b9a4e79d"><code>51f7732</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2997">#2997</a>
from github/update-v3.29.5-80a09d7b0</li>
<li><a
href="https://github.com/github/codeql-action/commit/8e90243ddbe0de3f12f4fa361675387b7f94c48d"><code>8e90243</code></a>
Update changelog for v3.29.5</li>
<li><a
href="https://github.com/github/codeql-action/commit/80a09d7b0b5468297f127c81b43cb7335eed0f30"><code>80a09d7</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2996">#2996</a>
from github/dependabot/npm_and_yarn/npm-240ab9fad0</li>
<li><a
href="https://github.com/github/codeql-action/commit/8388115dc8d6af25bf915cc8455a7d6a77253970"><code>8388115</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2994">#2994</a>
from github/mergeback/changelog/v3.28.21</li>
<li><a
href="https://github.com/github/codeql-action/commit/401ecaf503b1a19fc0fbd253cc5afe7759870068"><code>401ecaf</code></a>
Merge branch 'main' into mergeback/changelog/v3.28.21</li>
<li><a
href="https://github.com/github/codeql-action/commit/ab5c0c5fa56442a68c2d51b194ccc93faaaaa639"><code>ab5c0c5</code></a>
Merge branch 'main' into dependabot/npm_and_yarn/npm-240ab9fad0</li>
<li><a
href="https://github.com/github/codeql-action/commit/cd264d4dcdc5ee89d8590821e29c66a1bdcaa968"><code>cd264d4</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2986">#2986</a>
from github/update-bundle/codeql-bundle-v2.22.2</li>
<li><a
href="https://github.com/github/codeql-action/commit/4599055b1e273f63344615ade2c46c852c6d5c63"><code>4599055</code></a>
Merge branch 'main' into update-bundle/codeql-bundle-v2.22.2</li>
<li><a
href="https://github.com/github/codeql-action/commit/fd7ad511e6bd5985ebbc84944e0e173d39a968b8"><code>fd7ad51</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2971">#2971</a>
from github/update-supported-enterprise-server-versions</li>
<li><a
href="https://github.com/github/codeql-action/commit/ac0c9bfe1e34d6a76860325c1b4abe8208ce98a6"><code>ac0c9bf</code></a>
Merge branch 'main' into
update-supported-enterprise-server-versions</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/d6bbdef45e766d081b84a2def353b0055f728d3e...51f77329afa6477de8c49fc9c7046c15b9a4e79d">compare
view</a></li>
</ul>
</details>
<br />


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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-04 14:57:47 +00:00
Jon Ayers 2a2851e494 chore: check integrity of Go in Dockefile (#19130) 2025-08-04 08:27:27 -04:00
Jon Ayers 40dbc557bd fix: ignore goroutine leak for protocol lookup on windows (#19131) 2025-08-04 08:26:56 -04:00
Hugo Dutka 79cd80e5ca feat: add MCP tools for ChatGPT (#19102)
Addresses https://github.com/coder/internal/issues/772.

Adds the toolset query parameter to the `/api/experimental/mcp/http` endpoint, which, when set to "chatgpt", exposes new `fetch` and `search` tools compatible with ChatGPT, as described in the
[ChatGPT docs](https://platform.openai.com/docs/mcp). These tools are
exposed in isolation because in my usage I found that ChatGPT refuses to
connect to Coder if it sees additional MCP tools.

<img width="1248" height="908" alt="Screenshot 2025-07-30 at 16 36 56"
src="https://github.com/user-attachments/assets/ca31e57b-d18b-4998-9554-7a96a141527a"
/>
2025-08-04 14:11:22 +02:00
Spike Curtis d4b44185da chore: add database dump and dbfake logging (#19144)
relates to  #778

Somehow in `TestWorkspaceAgent` the agent with the test instance identifier is not being added to the database, or is getting deleted.

I'm adding some additional logging to `dbfake` and setting the affected tests to dump postgres on error, to see if we can get to the bottom of the issue.
2025-08-04 13:22:04 +04:00
Spike Curtis e80f91e900 chore: add small scenario to scaletest (#19110)
Relaxes the `terraform` version constraint to be at least 1.9, since
1.12 is installed in our Dogfood image

Adds a `small` scenario to keep costs down while we continue to develop
capabilities.
2025-08-04 10:04:44 +04:00
Ethan b95cf47f99 ci: set valid xcode version in release script (#19143)
16.0.0 was yanked from the macOS runners, so this will likely need cherry picking into the upcoming release branch.

We've already checked everything builds fine on #19125.

In a few releases we'll stop building the dylib and also therefore remove xcode as a dependency on coder/coder altogether.
2025-08-04 15:01:24 +10:00
Ethan decd9b7818 ci: conditionally disable spotlight indexing on nightly gauntlet (#19142)
Same as #19124
2025-08-04 15:01:01 +10:00
dependabot[bot] 719c9cc409 chore: bump coder/filebrowser/coder from 1.1.1 to 1.1.2 in /dogfood/coder-envbuilder (#19140)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/filebrowser/coder&package-manager=terraform&previous-version=1.1.1&new-version=1.1.2)](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>
2025-08-04 01:22:36 +00:00
dependabot[bot] c849a9579d chore: bump coder/filebrowser/coder from 1.1.1 to 1.1.2 in /dogfood/coder (#19139)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/filebrowser/coder&package-manager=terraform&previous-version=1.1.1&new-version=1.1.2)](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>
2025-08-04 01:14:08 +00:00
dependabot[bot] a512f1a055 chore: bump coder/dotfiles/coder from 1.2.0 to 1.2.1 in /dogfood/coder (#19138)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/dotfiles/coder&package-manager=terraform&previous-version=1.2.0&new-version=1.2.1)](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>
2025-08-04 01:14:00 +00:00
dependabot[bot] b605569929 chore: bump coder/slackme/coder from 1.0.30 to 1.0.31 in /dogfood/coder (#19136)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/slackme/coder&package-manager=terraform&previous-version=1.0.30&new-version=1.0.31)](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>
2025-08-04 01:10:46 +00:00
dependabot[bot] 206b5683f9 chore: bump coder/coder-login/coder from 1.0.30 to 1.0.31 in /dogfood/coder-envbuilder (#19137)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/coder-login/coder&package-manager=terraform&previous-version=1.0.30&new-version=1.0.31)](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>
2025-08-04 01:10:31 +00:00
dependabot[bot] e8ca4f8cf4 chore: bump coder/zed/coder from 1.0.0 to 1.0.1 in /dogfood/coder (#19135)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/zed/coder&package-manager=terraform&previous-version=1.0.0&new-version=1.0.1)](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>
2025-08-04 01:07:55 +00:00
dependabot[bot] 369a74a566 chore: bump coder/coder-login/coder from 1.0.30 to 1.0.31 in /dogfood/coder (#19134)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/coder-login/coder&package-manager=terraform&previous-version=1.0.30&new-version=1.0.31)](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>
2025-08-04 01:06:53 +00:00
dependabot[bot] 9626a2bafe chore: bump coder/personalize/coder from 1.0.30 to 1.0.31 in /dogfood/coder-envbuilder (#19133)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/personalize/coder&package-manager=terraform&previous-version=1.0.30&new-version=1.0.31)](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>
2025-08-04 01:06:14 +00:00
dependabot[bot] 0c761792ae chore: bump coder/personalize/coder from 1.0.30 to 1.0.31 in /dogfood/coder (#19132)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/personalize/coder&package-manager=terraform&previous-version=1.0.30&new-version=1.0.31)](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>
2025-08-04 01:05:17 +00:00
Jon Ayers c9ed0dd927 chore: pin dependencies in Dockerfiles (#19129) 2025-08-03 18:26:41 -04:00
Cian Johnston 0d7cc5c156 ci: bump xcode version to 16.1.0 (#19125) 2025-08-03 20:53:04 +01:00
Cian Johnston 6a35400f67 ci: conditionally disable spotlight indexing (#19124)
Work around for following issue:
```
Run sudo mdutil -a -i off
  sudo mdutil -a -i off
  sudo mdutil -X /
  sudo launchctl bootout system /System/Library/LaunchDaemons/com.apple.metadata.mds.plist
  shell: /bin/bash -e {0}
4 files/directories removed
Boot-out failed: 5: Input/output error
```

This can happen if spotlight has already been disabled.
2025-08-02 18:23:46 +01:00
Garrett Delfosse 6ba4b5bbc9 docs: update module registry URLs to correct path structure (#18681)
## Summary
- Updated documentation references to use the correct registry path
structure
- Changed URLs from incorrect paths to the correct format:
  - Modules main page: registry.coder.com/modules
  - Specific modules: registry.coder.com/modules/coder/{module-name}

## Test plan
- Verify that all documentation links to modules point to the correct
URL structure

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Edward Angert <EdwardAngert@users.noreply.github.com>
2025-08-02 06:03:15 +05:00
Danielle Maywood a185d3a2c3 fix(site): ensure notification settings page follows RBAC correctly (#19097)
Ensure template admin and user admins are able to see the correct
notification groups on the notification settings page.

---------

Co-authored-by: ケイラ <mckayla@hey.com>
2025-07-31 21:20:27 +01:00
Eric Paulsen 8b43503aaf docs: remove deprecated JFrog Xray integration documentation (#19113) 2025-07-31 18:46:39 +01:00
ケイラ 1cffd11619 feat: add workspace sharing page (#19107) 2025-07-31 15:05:09 +00:00
Danielle Maywood ddb5b87815 chore(agent/agentcontainers): test current prebuilds integration (#19074)
As it turns out, prebuilds + devcontainers appear to already work
together. This PR has created a test that simulates a prebuild claim
happening to `agentcontainers.API`, to see how we handle it.
2025-07-31 15:31:44 +01:00
ケイラ ed62ddc38e chore: add workspace-sharing experiment (#19106) 2025-07-31 07:52:57 -06:00
Danielle Maywood cc4f8da6e1 fix(agent/agentcontainers): fix devcontainer integration tests (#19109)
It appears we accidentally merged a change that broke our devcontainer
integration tests https://github.com/coder/coder/pull/18570.
2025-07-31 13:24:23 +01:00
Benjamin Peinhardt e4dc2d9418 fix: add constraint and runtime check for provisioner logs size limit (#18893)
This PR sets a constraint of 1MB on the provisioner job logs written to
the database. This is consistent with the constraint we place on
workspace agent logs:
https://github.com/coder/coder/blob/4ac6be6d835dc36c242e35a26b584b784040bf28/coderd/database/dump.sql#L2030

It also adds a message printed to the front end about the provisioner
log overflow, and updates the message printed to the front end when
workspace startup logs exceed the max, as it was causing some customers
to think their startup script had failed to run.
2025-07-30 19:09:53 -05:00
ケイラ eeb0bbefb9 feat: implement acl for workspaces (#19094) 2025-07-30 17:02:51 -06:00
Callum Styan d736af1fa3 fix: handle potential DB conflict due to concurrent upload requests in postFile (#19005)
This issue manifests when users have multiple templates which rely on
the same files, for example see:
https://github.com/coder/coder/issues/17442

---------

Signed-off-by: Callum Styan <callumstyan@gmail.com>
2025-07-30 13:55:30 -07:00
Callum Styan ffbfaf2a6f feat: allow bypassing current CORS magic based on template config (#18706)
Solves https://github.com/coder/coder/issues/15096

This is a slight rework/refactor of the earlier PRs from @dannykopping
and @Emyrk:
- https://github.com/coder/coder/pull/15669
- https://github.com/coder/coder/pull/15684
- https://github.com/coder/coder/pull/17596

Rather than having a per-app CORS behaviour setting and additionally a
template level setting for ports, this PR adds a single template level
CORS behaviour setting that is then used by all apps/ports for
workspaces created from that template.

The main changes are in `proxy.go` and `request.go` to:
a) get the CORS behaviour setting from the template
b) have `HandleSubdomain` bypass the CORS middleware handler if the
selected behaviour is `passthru`
c) in `proxyWorkspaceApp`, do not modify the response if the selected
behaviour is `passthru`

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added support for configuring CORS behavior ("simple" or "passthru")
at the template level for all shared ports.
* Introduced a new "CORS Behavior" setting in the template creation and
settings forms.
* API endpoints and responses now include the optional `cors_behavior`
property for templates.
* Workspace apps and proxy now honor the specified CORS behavior,
enabling conditional CORS middleware application.
* Enhanced workspace app tests with comprehensive scenarios covering
CORS behaviors and authentication states.

* **Bug Fixes**
  * None.

* **Documentation**
* Updated API and admin documentation to describe the new
`cors_behavior` property and its usage.
* Added examples and schema references for CORS behavior in relevant API
docs.

* **Tests**
* Extended automated tests to cover different CORS behavior scenarios
for templates and workspace apps.

* **Chores**
* Updated audit logging to track changes to the `cors_behavior` field on
templates.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Callum Styan <callumstyan@gmail.com>
2025-07-30 13:42:39 -07:00
Susana Ferreira 96e32d60a2 chore(site): add preset combobox to dynamic parameters page (#19100)
## Description

This PR updates the `CreateWorkspacePageViewExperimental` page to use
the `Combobox` React component for preset selection. This aligns it with
the implementation used in the standard `CreateWorkspacePageView`,
ensuring consistency in UI behavior and component usage across both
pages.

<img width="2084" height="792" alt="Screenshot 2025-07-30 at 13 58 23"
src="https://github.com/user-attachments/assets/b8e4ed37-9c59-499f-b4e3-7aaca847eaa1"
/>

Related to `CreateWorkspacePageView` changes:
https://github.com/coder/coder/pull/19063
2025-07-30 18:02:59 +01:00
Edward Angert 998fbdfbb3 docs: use CODER_LOG_FILTER instead of CODER_VERBOSE (#19105)
closes #18833

replace suggestions to use the now-deprecated `CODER_VERBOSE` with more
specific `CODER_LOG_FILTER`

thanks @UnicornyRainbow!

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-07-30 12:35:45 -04:00
Edward Angert 428ec351fe docs: add code-server/vs code web comparison table (#19104)
closes #18815 

adds a doc with comparison table and links to main documentation for
code-server


[preview](https://coder.com/docs/@18815-code-server-vs/user-guides/workspace-access/code-server)

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-07-30 12:35:27 -04:00
Sas Swart f256a23a77 feat: validate presets on template import (#18844)
Typos and other errors often result in invalid presets in a template.
Coder would import these broken templates and present them to users when
they create workspaces. An unsuspecting user who chooses a broken preset
would then experience a failed workspace build with no obvious error
message.

This PR adds additional validation beyond what is possible in the
Terraform provider schema. Coder will now present a more helpful error
message to template authors when they upload a new template version:

<img width="1316" height="286" alt="Screenshot 2025-07-14 at 12 22 49"
src="https://github.com/user-attachments/assets/7f5f778f-d9ae-487a-95e2-f6f1ca604a9c"
/>

The frontend warning is less helpful right now, but I'd like to address
that in a follow-up since I need frontend help:

<img width="1102" height="616" alt="image"
src="https://github.com/user-attachments/assets/e838ffc8-ef4f-428d-9280-74fa0c491666"
/>

closes https://github.com/coder/coder/issues/17333


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **New Features**
* Improved validation and error reporting for template presets,
providing clearer feedback when presets cannot be parsed or reference
undefined parameters.

* **Bug Fixes**
* Enhanced error handling during template version creation to better
detect and report issues with presets.

* **Tests**
* Added new tests to verify validation of both valid and invalid
Terraform presets during template version creation.
* Improved test reliability by enabling dynamic control over error
injection in database-related tests.

* **Chores**
* Updated a dependency to the latest version for improved stability and
features.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-07-30 15:28:56 +02:00
Cian Johnston 26d232da6f fix(site): hide preset selector in TasksPage if no presets available (#19099) 2025-07-30 11:18:12 +01:00
Susana Ferreira 101351f502 chore: update dogfood coder template presets with description and icon (#19084)
## Description

This PR updates the dogfood template presets to include a description
and a icon.
Requires [terraform-provider-coder
v2.9.0](https://github.com/coder/terraform-provider-coder/releases/tag/v2.9.0).

Related to:
* https://github.com/coder/coder/pull/18977
* https://github.com/coder/coder/pull/19063
2025-07-30 11:00:33 +01:00
Susana Ferreira 44d9356985 fix(site): remove redundant alt text to prevent duplicated accessible names (#19087)
## Description

Removes the redundant `alt` text in the `Combobox` component to prevent
screen readers from announcing duplicated names (e.g. "Rust Rust").

## Changes
* Remove redundant `alt` text from `Combobox` `ExternalImage`
* Update `Combobox` tests accordingly

Related to:
https://github.com/coder/coder/pull/19063#discussion_r2240459424
2025-07-30 09:54:43 +01:00
ケイラ 4bced62bf1 chore: add site/ CODEOWNERS (#19086) 2025-07-29 12:26:32 -06:00
Atif Ali 3a3972c44d chore: add catalog-info.yaml for backstage integration (#19085) 2025-07-29 22:56:53 +05:00
Asher 558e25d591 feat: support shift+enter in terminal (#19021)
It acts the same alt+enter, but is more familiar to users.

Closes #18864
2025-07-29 09:27:11 -08:00
Susana Ferreira 71738f6db9 feat(site): support icon and description in preset (#19063)
## Description

This PR updates the `CreateWorkspacePageView` to use the `Combobox`
React component instead of `SelectFilter` for the Preset selection.

## Changes

* Updated `CreateWorkspacePageView` to use the `Combobox` component in
place of `SelectFilter`.
* Modified the `Combobox` component to render preset icons using
`ExternalImage` instead of `Avatar`.

<img width="2172" height="1138" alt="Screenshot 2025-07-29 at 12 27 14"
src="https://github.com/user-attachments/assets/2ef8342f-7927-4430-bf87-bc93c47d2980"
/>

<img width="2176" height="1112" alt="Screenshot 2025-07-29 at 12 27 21"
src="https://github.com/user-attachments/assets/863089a6-dcfd-46ed-8b85-68838ee04f28"
/>

Follow-up from: https://github.com/coder/coder/pull/18977

---------

Co-authored-by: Jaayden Halko <jaayden.halko@gmail.com>
2025-07-29 17:45:32 +01:00
Danielle Maywood 219d1b4101 chore(agent/agentcontainers): skip part of test if on darwin (#19081) 2025-07-29 17:06:17 +01:00
Ethan 6147da58dd chore: add vpn-daemon run command for macos (#19080)
Continues to address https://github.com/coder/coder-desktop-macos/issues/201

Identical to the windows command, except we don't write to stdio. We're retaining the system we have for logging on macOS, where we push logs over the tunnel and use the OS logger. 

I've tested that a build with this command works end-to-end with my new version of Coder Desktop macOS.

Also brings in the soft net isolation changes from `main` of coder/tailscale.
2025-07-30 02:03:20 +10:00
Susana Ferreira 4e7331a9c4 feat(cli): support description in create and presets list CLI commands (#19079)
## Description

This PR improves the `coder templates presets` and `coder create` CLI
commands to include preset descriptions.

## Changes

* Added a `description` column to the `coder templates presets list` CLI
command.
* Fixed the `-o json` output for `coder templates presets list` to
correctly include and format data.
* Updated the `coder create` CLI command to display the preset's
description in the selection menu.

Follow-up from: 
* https://github.com/coder/coder/pull/18910 
* https://github.com/coder/coder/pull/18912
* https://github.com/coder/coder/pull/18977
2025-07-29 16:59:26 +01:00
Ethan 415273f648 ci: sign macos slim binaries on dogfood builds (#19077)
This will be necessary for future versions of Coder Desktop to connect to dogfood.
2025-07-30 01:22:16 +10:00
35C4n0r 0ef7720f8c feat: add tmux and gemini icons (#19031)
Related PRs: #246 #229

---------

Co-authored-by: DevCats <christofer@coder.com>
2025-07-29 19:49:17 +05:00
Cian Johnston 812d72c5bb fix: sanitize app status summary (#19075)
Fixes https://github.com/coder/coder/issues/18875
2025-07-29 15:24:11 +01:00
Jaayden Halko 29486f9d4e fix: fix e2e tests (#19076)
Closes https://github.com/coder/internal/issues/824
2025-07-29 10:23:57 -04:00
Hugo Dutka b666d52171 feat(codersdk/toolsdk): add MCP workspace bash background parameter (#19034)
Addresses coder/internal#820

---------

Signed-off-by: Thomas Kosiewski <tk@coder.com>
Co-authored-by: Thomas Kosiewski <tk@coder.com>
2025-07-29 16:20:02 +02:00
Dean Sheather bf78966256 chore: remove soft isolation configurability (#19069)
Undoes a lot of the changes in 5319d47dfa

Keeps the `netns.SetCoderSoftIsolation()` call, but always sets it to
`true` when using a TUN device.
2025-07-29 22:30:17 +10:00
Jaayden Halko 1320b8d5be feat: make dynamic parameters opt-in by default for new templates (#19006)
resolves #18975 

---------

Co-authored-by: Steven Masley <stevenmasley@gmail.com>
Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
2025-07-28 20:41:49 -05:00
Austen Bruhn faac75389b feat(helm): add pod-level securityContext support for certificate mounting (#19041)
**Add pod-level securityContext support to Coder Helm chart**

Adds `coder.podSecurityContext` field to enable pod-level security
settings, primarily to solve TLS certificate mounting permission issues.

**Problem**: When mounting TLS certificates from Kubernetes secrets, the
Coder process (UID 1000) cannot read the files due to restrictive
permissions.

**Solution**: Setting `podSecurityContext.fsGroup: 1000` ensures
Kubernetes sets group ownership of mounted volumes to GID 1000, allowing
the Coder process to read certificate files.

**Changes**:
- Added `podSecurityContext` field to values.yaml with documentation
- Updated `_coder.yaml` template to include pod-level security context
- Added test case and golden files
- Maintains backward compatibility (opt-in feature)

**Usage**:
```yaml
coder:
  podSecurityContext:
    fsGroup: 1000  # Enables TLS cert access
```

Fixes #19038
2025-07-28 20:41:32 -04:00
Andrew Aquino 72b8ab530e fix(docs): add missing GFM alert directives to blockquotes (#19042)
I just added support for rendering GFM alerts inside of numbered lists
in coder.com (see https://github.com/coder/coder.com/pull/328), and
noticed that these plain blockquotes should probably be alerts.

This should cover all the missing alerts. I found them by searching for
the regex `^\s*>\s` within docs/**/*.md

Is `[!NOTE]` the correct type for these? Or do we want to use
tip/important/etc?

- @mtojek CONTRIBUTING.md
- @johnstcn support-bundle.md
- @matifali gateway.md
2025-07-28 15:00:56 -07:00
Michael Suchacz 36d2e01471 chore: add managed ai usage consumption to license view (#18934)
Customers with licenses not supporting managed AI agents will receive
the following information:
<img width="597" height="261" alt="image"
src="https://github.com/user-attachments/assets/b794a9f2-bca8-494e-a8d1-cc6e6bc43bfe"
/>

Customers with active licenes for managed AI agents will see:
<img width="604" height="293" alt="image"
src="https://github.com/user-attachments/assets/7ce8931c-05c6-4e64-a5a1-2e9364e99de2"
/>

Closes https://github.com/coder/internal/issues/813

---------

Co-authored-by: McKayla Washburn <mckayla@hey.com>
2025-07-28 20:27:49 +02:00
Susana Ferreira 0672bf5084 feat: support icon and description in preset (#18977)
## Description 

This PR adds support for `description` and `icon` fields to
`template_version_presets`. These fields will allow displaying richer
information for presets in the UI, improving the user experience when
creating a workspace.
Both fields are optional, non-nullable, and default to empty strings.

## Changes

* Database migration with the addition of `description VARCHAR(128)` and
`icon VARCHAR(256)` columns to the `template_version_presets` table.
* Updated the `CreateWorkspacePageView` in the UI

Note: UI changes will be addressed in a separate PR
2025-07-28 15:02:26 +01:00
Jaayden Halko 58123e17ca fix: fix to display tooltip on hover (#19058) 2025-07-28 10:00:41 -04:00
Susana Ferreira b975d6d9b3 feat(cli): add CLI support for creating a workspace with preset (#18912)
## Description 

This PR introduces a `--preset` flag for the `create` command to allow
users to apply a predefined preset to their workspace build.

## Changes

- The `--preset` flag on the `create` command integrates with the
parameter resolution logic and takes precedence over other sources
(e.g., CLI/env vars, last build, etc.).
- Added internal logic to ensure that preset parameters override
parameters values during resolution.
- Updated tests and added new ones to cover these flows.

## Implementation logic

* If a template has presets and includes a default, the CLI will
automatically use the default when `--preset` is not specified.
* If a template has presets but no default, the CLI will prompt the user
to select one when `--preset` is not specified.
* If a template does not have presets, the CLI will not prompt the user
for a preset.
* If the user specifies a preset using the `--preset` flag, that preset
will be used.
* If the user passes `--preset None`, no preset will be applied.

This logic aligns with the behavior in the UI for consistency.

```
> coder create --help

USAGE:
  coder create [flags] [workspace]

  Create a workspace

    - Create a workspace for another user (if you have permission):

        $ coder create <username>/<workspace_name>

OPTIONS:
      (...)

      --preset string, $CODER_PRESET_NAME
          Specify the name of a template version preset. Use 'none' to explicitly indicate that no preset should be used.

      (...)

  -y, --yes bool
          Bypass prompts.
```

## Breaking change

**Note:** This is a breaking change to the create CLI command. If a
template includes presets and the user does not provide a `--preset`
flag, the CLI will now prompt the user to select one. This behavior may
break non-interactive scripts or automated workflows.


Relates to PR: https://github.com/coder/coder/pull/18910 - please
consider both PRs together as they’re part of the same workflow
Relates to issue: https://github.com/coder/coder/issues/16594
2025-07-28 14:46:04 +01:00
Danielle Maywood 66cf90c736 feat(agent/agentcontainers): allow auto start for discovered containers (#19040)
Closes https://github.com/coder/internal/issues/711

When a `devcontainer.json` has been found and it has `.customizations.coder.autoStart = true`, we will now auto start this dev container.
2025-07-28 12:30:52 +01:00
Thomas Kosiewski 398e80f003 feat: add timeout support to workspace bash tool (#19035)
# Add timeout support to workspace bash tool

This PR adds a timeout feature to the workspace bash tool, allowing
users to specify a maximum execution time for commands. Key changes
include:

- Added a `timeout_ms` parameter to control command execution time
(defaults to 60 seconds, with a maximum of 5 minutes)
- Implemented a new `executeCommandWithTimeout` function that properly
handles command timeouts
- Added proper output capturing during timeout scenarios, returning all
output collected before the timeout
- Updated documentation to explain the timeout feature and provide usage
examples
- Added comprehensive tests for the timeout functionality, including
integration tests

When a command times out, the tool now returns all captured output up to
that point along with a cancellation message, making it clear to users
what happened.

Signed-off-by: Thomas Kosiewski <tk@coder.com>
2025-07-28 11:25:43 +02:00
Thomas Kosiewski d1595781e1 fix: fix nil pointer dereference in ReportTask (#19045)
This pull request addresses a bug related to a nil pointer dereference
in the task reporting functionality.

### Bug Fixes and Error Handling:

* Updated `RegisterTools` in `mcp.go` to skip registering the
`ReportTask` tool in the remote MCP context when a task reporter is not
configured, preventing potential nil pointer dereference panics.
* Added a check in `toolsdk.go` to ensure task reporting dependencies
are available before invoking the reporter, returning an appropriate
error if not.

### Test Coverage:

* Added `TestReportTaskNilPointerDeref` in `toolsdk_test.go` to verify
that the system does not panic when task reporting dependencies are
missing and instead returns a clear error message.
* Added `TestReportTaskWithReporter` in `toolsdk_test.go` to validate
correct behavior when a task reporter is configured, ensuring the
handler processes the request as expected.

Signed-off-by: Thomas Kosiewski <tk@coder.com>
2025-07-28 11:23:29 +02:00
Cian Johnston 6bf2ec3eb1 chore: fix unbound variable in develop.sh (#19043)
Missed this in https://github.com/coder/coder/pull/18991
2025-07-28 09:20:35 +01:00
Dean Sheather 2a430ab435 fix: avoid duplicating logs on Coder Connect Windows (#19052)
The sinks are already added to the logger above, so they're just getting duplicated
2025-07-28 14:02:00 +10:00
dependabot[bot] 8d6cc51da9 chore: bump coder/code-server/coder from 1.3.0 to 1.3.1 in /dogfood/coder-envbuilder (#19050)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)



[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/code-server/coder&package-manager=terraform&previous-version=1.3.0&new-version=1.3.1)](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>
2025-07-28 00:32:41 +00:00
dependabot[bot] d0a7d84191 chore: bump coder/cursor/coder from 1.2.0 to 1.2.1 in /dogfood/coder (#19047)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/cursor/coder&package-manager=terraform&previous-version=1.2.0&new-version=1.2.1)](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>
2025-07-28 00:32:32 +00:00
dependabot[bot] 10b8610045 chore: bump coder/code-server/coder from 1.3.0 to 1.3.1 in /dogfood/coder (#19049)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/code-server/coder&package-manager=terraform&previous-version=1.3.0&new-version=1.3.1)](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>
2025-07-28 00:32:24 +00:00
dependabot[bot] 355dd9c119 chore: bump coder/vscode-web/coder from 1.3.0 to 1.3.1 in /dogfood/coder (#19048)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/vscode-web/coder&package-manager=terraform&previous-version=1.3.0&new-version=1.3.1)](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>
2025-07-28 00:32:15 +00:00
dependabot[bot] c2a271ffda chore: bump coder/windsurf/coder from 1.1.0 to 1.1.1 in /dogfood/coder (#19046)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/windsurf/coder&package-manager=terraform&previous-version=1.1.0&new-version=1.1.1)](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>
2025-07-28 00:32:08 +00:00
Steven Masley 38755e204d chore: remove actDef function, had no value (#19019) 2025-07-24 14:52:03 -05:00
Cian Johnston 9a05a8a28a feat: add preset selector in TasksPage (#19012)
* Adds a preset selector in TasksPage with the default preset pre-selected and at the top of the list.
* If no default preset exists, the user is prompted to select one.
* If a preset defines an AI Prompt, it will override the textarea.
2025-07-24 20:19:33 +01:00
ケイラ 5c31b983e5 chore: update logo in index.html (#19017) 2025-07-24 09:48:05 -06:00
Susana Ferreira 931b97caab feat(cli): add CLI support for listing presets (#18910)
## Description 

This PR introduces a new `list presets` command to display the presets
associated with a given template.
By default, it displays the presets for the template's active version,
unless a `--template-version` flag is provided.

## Changes

* Added a new `list presets` command under `coder templates presets` to
display presets associated with a template.
* By default, the command lists presets from the template’s active
version.
* Users can override the default behavior by providing the
`--template-version` flag to target a specific version.

```
> coder templates versions presets list --help

USAGE:
  coder templates presets list [flags] <template>

  List all presets of the specified template. Defaults to the active template version.

OPTIONS:
  -O, --org string, $CODER_ORGANIZATION
          Select which organization (uuid or name) to use.

  -c, --column [name|parameters|default|desired prebuild instances] (default: name,parameters,default,desired prebuild instances)
          Columns to display in table output.

  -o, --output table|json (default: table)
          Output format.

      --template-version string
          Specify a template version to list presets for. Defaults to the active version.
```

Related PR: https://github.com/coder/coder/pull/18912 - please consider
both PRs together as they’re part of the same workflow
Relates to issue: https://github.com/coder/coder/issues/16594

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added CLI commands to manage and list presets for specific template
versions, supporting tabular and JSON output.
* Introduced a new CLI subcommand group for template version presets,
including detailed help and documentation.
* Added support for displaying and managing the desired number of
prebuild instances for presets in CLI, API, and UI.

* **Documentation**
* Updated and expanded CLI and API documentation to describe new
commands, options, and the desired prebuild instances field in presets.
* Added new help output and reference files for template version presets
commands.

* **Bug Fixes**
* Ensured correct handling and display of the desired prebuild instances
property for presets across CLI, API, and UI.

* **Tests**
* Introduced end-to-end tests for listing template version presets,
covering scenarios with and without presets.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-07-24 16:44:36 +01:00
Susana Ferreira 070178c454 chore: bump github.com/coder/terraform-provider-coder/v2 from 2.8.0 to 2.9.0 (#19032)
Bumps
[github.com/coder/terraform-provider-coder/v2](https://github.com/coder/terraform-provider-coder)
from 2.8.0 to 2.9.0.

Release:
https://github.com/coder/terraform-provider-coder/releases/tag/v2.9.0
2025-07-24 12:17:21 +01:00
Danielle Maywood 25d70ce7bc fix(agent/agentcontainers): respect ignore files (#19016)
Closes https://github.com/coder/coder/issues/19011

We now use
[go-git](https://pkg.go.dev/github.com/go-git/go-git/v5@v5.16.2/plumbing/format/gitignore)'s
`gitignore` plumbing implementation to parse the `.gitignore` files and
match against the patterns generated. We use this to ignore any ignored
files in the git repository.

Unfortunately I've had to slightly re-implement some of the interface
exposed by `go-git` because they use `billy.Filesystem` instead of
`afero.Fs`.
2025-07-24 12:12:05 +01:00
Ethan 5c1bf1d46c test(coderd/database): use seperate context for subtests to fix flake (#19029)
Fixes flakes like https://github.com/coder/coder/actions/runs/16487670478/job/46615625141, caused by the issue described in https://coder.com/blog/go-testing-contexts-and-t-parallel

It'd be cool if we could lint for this? That a context from an outer test isn't used in a subtest if that subtest calls `t.Parallel`.
2025-07-24 20:07:54 +10:00
Dean Sheather 9a05b4679b chore: fix TestManagedAgentLimit flake (#19026)
Closes https://github.com/coder/internal/issues/812
2025-07-24 05:13:15 +00:00
Dean Sheather 5319d47dfa chore: add support for tailscale soft isolation in VPN (#19023) 2025-07-24 04:18:29 +00:00
blink-so[bot] 28789d7204 feat: add View Source button for template administrators in workspace creation (#18951) 2025-07-23 11:16:53 -06:00
Cian Johnston bb83071b5f chore: override codersdk.SessionTokenCookie in develop.sh (#18991)
Updates `develop.sh`, `coder-dev.sh` and `build_go.sh` to conditionally override `codersdk.SessionTokenCookie` for usage in nested development scenario.
2025-07-23 12:48:15 +01:00
Danielle Maywood f41275eb39 feat(agent/agentcontainers): auto detect dev containers (#18950)
Relates to https://github.com/coder/internal/issues/711

This PR implements a project discovery mechanism that searches for any
dev container projects and makes them visible in the UI so that they can
be started. To make the wording on the site more clear, "Rebuild" has
been changed to "Start" when there is no container associated with a
known dev container configuration. I've also made it so that site will
show the dev container config path when there is no other name
available.

### Design decisions

Just want to ensure my explanation for a few design decisions are noted
down:
- We only search for dev container configurations inside git
repositories
- We only search for these git repositories if they're at the top level
or a direct child of the agent directory.

This limited approach is to reduce the amount of files we ultimately
walk when trying to find these projects. It makes sense to limit it to
only the agent directory, although I'm open to expanding how deep we
search.
2025-07-22 19:02:43 +01:00
Thomas Kosiewski c6efe64a65 fix: handle nil writer in bash MCP tool (#18978)
- Refactors the bash tool to use `io.Discard` instead of nil to avoid panics.

- Enhances panic recovery in `codersdk/toolsdk/toolsdk.go` by adding stack trace information in development builds. When a panic occurs in a tool handler:
   - In development builds: The error includes the full stack trace for easier debugging
   - In production builds: A simpler error message is shown without the stack trace
2025-07-22 18:03:26 +02:00
Jaayden Halko dd2fb896eb fix: debounce slider to avoid laggy behavior (#18980)
resolves #18856 
resolves coder/internal#753
2025-07-22 11:15:43 -04:00
Steven Masley 99adb4a15b chore: update codeowners to include emyrk specific features (#18974) 2025-07-22 08:56:56 -05:00
Dean Sheather 62dc8310d1 fix: use httponly flag on coder_signed_app_token cookie (#18989) 2025-07-22 22:44:20 +10:00
Cian Johnston c4b69bbe63 fix: prioritise human-initiated builds over prebuilds (#18933)
Continues from https://github.com/coder/coder/pull/18882

- Reverts extraneous changes
- Adds explicit `ORDER BY initiator_id = $PREBUILDS_USER_ID` to
`AcquireProvisionerJob`
- Improves test added for above PR

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: kylecarbs <7122116+kylecarbs@users.noreply.github.com>
2025-07-22 13:03:50 +01:00
Marcin Tojek e98dce7f99 fix: mute Claude API key warning if Bedrock in use (#18988)
Fixes: https://github.com/coder/coder/issues/17402
2025-07-22 13:56:20 +02:00
Kacper Sawicki 482463c51a feat: extend workspace build reasons to track connection types (#18827)
This PR introduces new build reason values to identify what type of
connection triggered a workspace build, helping to troubleshoot
workspace-related issues.

## Database Migration
Added migration 000349_extend_workspace_build_reason.up.sql that extends
the build_reason enum with new values:
```
dashboard, cli, ssh_connection, vscode_connection, jetbrains_connection
```

## Implementation
The build reason is specified through the API when creating new
workspace builds:

- Dashboard: Automatically sets reason to `dashboard` when users start
workspaces via the web interface
- CLI `start` command: Sets reason to `cli` when workspaces are started
via the command line
- CLI `ssh` command: Sets reason to ssh_connection when workspaces are
started due to SSH connections
- VS Code connections: Will be set to `vscode_connection` by the VS Code
extension through CLI hidden flag
(https://github.com/coder/vscode-coder/pull/550)
- JetBrains connections: Will be set to `jetbrains_connection` by the
Jetbrains Toolbox
(https://github.com/coder/coder-jetbrains-toolbox/pull/150) and
Jetbrains Gateway extension
(https://github.com/coder/jetbrains-coder/pull/561)

## UI Changes:
* Tooltip with reason in Build history
<img width="309" height="457" alt="image"
src="https://github.com/user-attachments/assets/bde8440b-bf3b-49a1-a244-ed7e8eb9763c"
/>

* Reason in Audit Logs Row tooltip
<img width="906" height="237" alt="image"
src="https://github.com/user-attachments/assets/ebbb62c7-cf07-4398-afbf-323c83fb6426"
/>

<img width="909" height="188" alt="image"
src="https://github.com/user-attachments/assets/1ddbab07-44bf-4dee-8867-b4e2cd56ae96"
/>
2025-07-22 13:11:27 +02:00
Dean Sheather 0ebd4356a0 fix: use system context for managed agent count query (#18985) 2025-07-22 06:03:35 +00:00
Dean Sheather 9a6dd73f68 feat: add managed agent license limit checks (#18937)
- Adds a query for counting managed agent workspace builds between two
timestamps
- The "Actual" field in the feature entitlement for managed agents is
now populated with the value read from the database
- The wsbuilder package now validates AI agent usage against the limit
when a license is installed

Closes coder/internal#777
2025-07-22 13:39:26 +10:00
blink-so[bot] aa1a985381 docs: update DX integration title from 'DX Data Cloud' to 'DX' (#18981)
Simplifies the title to reduce customer confusion as requested by
@kylejaggi.

The DX platform covers all products, not just Data Cloud. This change
makes the documentation clearer for customers who might get confused
about which DX product the integration refers to.

**Changes:**
- Updated page title from "DX Data Cloud" to "DX" in
`docs/admin/integrations/dx-data-cloud.md`

**Testing:**
- Verified the markdown renders correctly
- No functional changes, documentation-only update

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: bpmct <22407953+bpmct@users.noreply.github.com>
2025-07-21 22:02:44 +00:00
ケイラ 19afeda98a feat: improve workspace upgrade flow when template parameters change (#18917) 2025-07-21 15:42:04 -06:00
Jaayden Halko d7b12535db chore: remove beta labels for dynamic parameters (#18976)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Style**
* Removed the "beta" badge from various workspace and template settings
pages. The "Dynamic parameters" feature no longer displays a beta label
in the interface.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-07-21 16:16:33 -04:00
Thomas Kosiewski 326c02459f feat: add workspace SSH execution tool for AI SDK (#18924)
# Add SSH Command Execution Tool for Coder Workspaces

This PR adds a new AI tool `coder_workspace_ssh_exec` that allows executing commands in Coder workspaces via SSH. The tool provides functionality similar to the `coder ssh <workspace> <command>` CLI command.

Key features:
- Executes commands in workspaces via SSH and returns the output and exit code
- Automatically starts workspaces if they're stopped
- Waits for the agent to be ready before executing commands
- Trims leading and trailing whitespace from command output
- Supports various workspace identifier formats:
  - `workspace` (uses current user)
  - `owner/workspace`
  - `owner--workspace`
  - `workspace.agent` (specific agent)
  - `owner/workspace.agent`

The implementation includes:
- A new tool definition with schema and handler
- Helper functions for workspace and agent discovery
- Workspace name normalization to handle different input formats
- Comprehensive test coverage including integration tests

This tool enables AI assistants to execute commands in user workspaces, making it possible to automate tasks and provide more interactive assistance.

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

* **New Features**
  * Introduced the ability to execute bash commands inside a Coder workspace via SSH, supporting multiple workspace identification formats.
* **Tests**
  * Added comprehensive unit and integration tests for executing bash commands in workspaces, including input validation, output handling, and error scenarios.
* **Chores**
  * Registered the new bash execution tool in the global tools list.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-07-21 21:24:00 +02:00
blink-so[bot] 75c124013f fix: remove remaining v prefixes from all module versions in dogfood directory (#18971)
This PR completes the fix for Dependabot version prefix issues by
removing the remaining `v` prefixes that weren't caught in the previous
merge.

**Fixed modules:**

**dogfood/coder-envbuilder/main.tf:**
- slackme: `v1.0.30` → `1.0.30`
- dotfiles: `v1.2.0` → `1.2.0` 
- personalize: `v1.0.30` → `1.0.30`
- code-server: `v1.3.0` → `1.3.0`
- filebrowser: `v1.1.1` → `1.1.1`
- coder-login: `v1.0.30` → `1.0.30`

**dogfood/coder/main.tf:**
- dotfiles: `v1.2.0` → `1.2.0`
- git-clone: `v1.1.0` → `1.1.0`
- vscode-web: `v1.3.0` → `1.3.0`
- coder-login: `v1.0.30` → `1.0.30`
- cursor: `v1.2.0` → `1.2.0`

Now **all** modules in the dogfood directory use consistent version
formatting without the `v` prefix.

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: matifali <10648092+matifali@users.noreply.github.com>
2025-07-21 13:45:04 -05:00
Thomas Kosiewski 1db096d8f9 chore: fix CodeRabbit config to disable review status (#18973)
Disable review status in CodeRabbit configuration

Change-Id: I0ee266e0b284832b65762a4f7a3f26d56af53e86
Signed-off-by: Thomas Kosiewski <tk@coder.com>
2025-07-21 20:26:01 +02:00
Steven Masley aedc019b4e feat: include template variables in dynamic parameter rendering (#18819)
Closes https://github.com/coder/coder/issues/18671

Template variables now loaded into dynamic parameters.
2025-07-21 13:02:31 -05:00
Jon Ayers 40a6367d4b chore: update CLAUDE.md to discourage time.Sleep (#18967) 2025-07-21 12:55:16 -04:00
blink-so[bot] 6d335910ea Update dogfood envbuilder template to use dev.registry.coder.com (#18968)
Updates the dogfood envbuilder template to pull modules from
`dev.registry.coder.com` instead of `registry.coder.com` to match the
regular dogfood template.

This ensures consistency between both dogfood templates and uses the
development registry for testing new module versions.

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: matifali <10648092+matifali@users.noreply.github.com>
2025-07-21 16:51:05 +00:00
dependabot[bot] b181644930 chore: bump coder/coder-login/coder from 1.0.15 to v1.0.30 in /dogfood/coder-envbuilder (#18962)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/coder-login/coder&package-manager=terraform&previous-version=1.0.15&new-version=v1.0.30)](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>
2025-07-21 16:32:01 +00:00
dependabot[bot] 1a3c1d0533 chore: bump coder/dotfiles/coder from 1.0.29 to v1.2.0 in /dogfood/coder-envbuilder (#18965)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/dotfiles/coder&package-manager=terraform&previous-version=1.0.29&new-version=v1.2.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>
2025-07-21 16:31:55 +00:00
dependabot[bot] 56c6b0f939 chore: bump coder/filebrowser/coder from 1.0.31 to v1.1.1 in /dogfood/coder-envbuilder (#18963)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/filebrowser/coder&package-manager=terraform&previous-version=1.0.31&new-version=v1.1.1)](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>
2025-07-21 16:31:47 +00:00
dependabot[bot] 9d60acbfc3 chore: bump coder/code-server/coder from 1.2.0 to v1.3.0 in /dogfood/coder-envbuilder (#18960)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/code-server/coder&package-manager=terraform&previous-version=1.2.0&new-version=v1.3.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>
2025-07-21 16:27:18 +00:00
dependabot[bot] b05574ba53 chore: bump coder/windsurf/coder from 1.0.0 to 1.1.0 in /dogfood/coder (#18958)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/windsurf/coder&package-manager=terraform&previous-version=1.0.0&new-version=1.1.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>
2025-07-21 16:27:13 +00:00
dependabot[bot] 235bb5b279 chore: bump coder/personalize/coder from 1.0.2 to v1.0.30 in /dogfood/coder-envbuilder (#18959)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)



[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/personalize/coder&package-manager=terraform&previous-version=1.0.2&new-version=v1.0.30)](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>
2025-07-21 16:27:06 +00:00
dependabot[bot] 90eb5c3d6f chore: bump coder/slackme/coder from 1.0.2 to 1.0.30 in /dogfood/coder (#18956)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/slackme/coder&package-manager=terraform&previous-version=1.0.2&new-version=1.0.30)](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>
2025-07-21 16:27:02 +00:00
dependabot[bot] 8c68961a1c chore: bump coder/slackme/coder from 1.0.2 to v1.0.30 in /dogfood/coder-envbuilder (#18961)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/slackme/coder&package-manager=terraform&previous-version=1.0.2&new-version=v1.0.30)](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>
2025-07-21 16:26:56 +00:00
dependabot[bot] 847373aba1 chore: bump coder/personalize/coder from 1.0.2 to 1.0.30 in /dogfood/coder (#18957)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/personalize/coder&package-manager=terraform&previous-version=1.0.2&new-version=1.0.30)](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>
2025-07-21 16:26:44 +00:00
ケイラ a9b110df68 chore: remove site/ CODEOWNERS entry (#18954) 2025-07-21 10:04:44 -06:00
dependabot[bot] e6b3b5900f chore: bump github.com/go-chi/chi/v5 from 5.1.0 to 5.2.2 (#18475) 2025-07-21 17:53:28 +02:00
Thomas Kosiewski 4ac6be6d83 chore: add CodeRabbit config with disabled auto-reviews (#18949) 2025-07-21 15:51:48 +01:00
dependabot[bot] b235f8cfeb chore: bump coder/git-clone/coder from 1.0.18 to v1.1.0 in /dogfood/coder (#18947)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/git-clone/coder&package-manager=terraform&previous-version=1.0.18&new-version=v1.1.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>
2025-07-21 14:40:23 +00:00
dependabot[bot] be672682f5 chore: bump coder/vscode-web/coder from 1.2.0 to v1.3.0 in /dogfood/coder (#18946)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/vscode-web/coder&package-manager=terraform&previous-version=1.2.0&new-version=v1.3.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>
2025-07-21 14:40:12 +00:00
dependabot[bot] d86dcdbb92 chore: bump coder/cursor/coder from 1.1.0 to v1.2.0 in /dogfood/coder (#18944)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/cursor/coder&package-manager=terraform&previous-version=1.1.0&new-version=v1.2.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>
2025-07-21 14:39:58 +00:00
dependabot[bot] dc5399d261 chore: bump coder/dotfiles/coder from 1.0.29 to v1.2.0 in /dogfood/coder (#18943)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/dotfiles/coder&package-manager=terraform&previous-version=1.0.29&new-version=v1.2.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>
2025-07-21 14:39:48 +00:00
dependabot[bot] 79f4d262a6 chore: bump coder/coder-login/coder from 1.0.15 to v1.0.30 in /dogfood/coder (#18945)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=coder/coder-login/coder&package-manager=terraform&previous-version=1.0.15&new-version=v1.0.30)](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>
2025-07-21 14:39:42 +00:00
dependabot[bot] a10f25659c chore: bump google.golang.org/api from 0.241.0 to 0.242.0 (#18941)
Bumps
[google.golang.org/api](https://github.com/googleapis/google-api-go-client)
from 0.241.0 to 0.242.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-api-go-client/releases">google.golang.org/api's
releases</a>.</em></p>
<blockquote>
<h2>v0.242.0</h2>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.241.0...v0.242.0">0.242.0</a>
(2025-07-16)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3226">#3226</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/9bd47c484b01476118eee059103a36373a6e560b">9bd47c4</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3228">#3228</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/2ee2e31870227ca989696c35f57be0b616a4fea2">2ee2e31</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3229">#3229</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/6fdc3ebb204a9a3275ccca159be884ec387848ac">6fdc3eb</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3230">#3230</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/d5fa61e954f9ccd53074a67b223a5af0a6446970">d5fa61e</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3231">#3231</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/96d4d98a3d73775fa606b8dbdc6f900287f335be">96d4d98</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3232">#3232</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/2ab275bbcb1a8c206099ca7b2e66bd5d0c0b9eac">2ab275b</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md">google.golang.org/api's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.241.0...v0.242.0">0.242.0</a>
(2025-07-16)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3226">#3226</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/9bd47c484b01476118eee059103a36373a6e560b">9bd47c4</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3228">#3228</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/2ee2e31870227ca989696c35f57be0b616a4fea2">2ee2e31</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3229">#3229</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/6fdc3ebb204a9a3275ccca159be884ec387848ac">6fdc3eb</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3230">#3230</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/d5fa61e954f9ccd53074a67b223a5af0a6446970">d5fa61e</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3231">#3231</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/96d4d98a3d73775fa606b8dbdc6f900287f335be">96d4d98</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3232">#3232</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/2ab275bbcb1a8c206099ca7b2e66bd5d0c0b9eac">2ab275b</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/16277b75e6b0b8146ea1f462a5f007b9f76fbe6b"><code>16277b7</code></a>
chore(main): release 0.242.0 (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3227">#3227</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/2ab275bbcb1a8c206099ca7b2e66bd5d0c0b9eac"><code>2ab275b</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3232">#3232</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/96d4d98a3d73775fa606b8dbdc6f900287f335be"><code>96d4d98</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3231">#3231</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/d5fa61e954f9ccd53074a67b223a5af0a6446970"><code>d5fa61e</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3230">#3230</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/6fdc3ebb204a9a3275ccca159be884ec387848ac"><code>6fdc3eb</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3229">#3229</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/2ee2e31870227ca989696c35f57be0b616a4fea2"><code>2ee2e31</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3228">#3228</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/9bd47c484b01476118eee059103a36373a6e560b"><code>9bd47c4</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3226">#3226</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/f1d0fc0610cf1185bb9a705b04bdd4e8a26c5963"><code>f1d0fc0</code></a>
test(transport): replaced deprecated grpc.WithInsecure code</li>
<li>See full diff in <a
href="https://github.com/googleapis/google-api-go-client/compare/v0.241.0...v0.242.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/api&package-manager=go_modules&previous-version=0.241.0&new-version=0.242.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>
2025-07-21 14:33:16 +00:00
Cian Johnston 198d50dbc2 chore: replace original GetPrebuiltWorkspaces with optimized version (#18832)
Fixes https://github.com/coder/internal/issues/715

Follow-up from https://github.com/coder/coder/pull/18717

Now that we've determined the updated query is safe, remove the duplication.
2025-07-21 15:31:11 +01:00
dependabot[bot] af01562e35 chore: bump golang.org/x/tools from 0.34.0 to 0.35.0 in the x group (#18942)
Bumps the x group with 1 update:
[golang.org/x/tools](https://github.com/golang/tools).

Updates `golang.org/x/tools` from 0.34.0 to 0.35.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/tools/commit/50ec2f15fda46d8960c1d871856265127b4dcce5"><code>50ec2f1</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="https://github.com/golang/tools/commit/197c6c1b47160df25b9cd6598d88525c27a01e5a"><code>197c6c1</code></a>
gopls/internal/mcp: more tuning of tools and prompts</li>
<li><a
href="https://github.com/golang/tools/commit/9563af690255d5b5f7802773c0853f1176130da4"><code>9563af6</code></a>
gopls/internal/mcp: include module paths in workspace summaries</li>
<li><a
href="https://github.com/golang/tools/commit/88a4eb3018821e07f501b483e0f6f4eac4146198"><code>88a4eb3</code></a>
gopls/internal/cmd: wait for startup log in TestMCPCommandHTTP</li>
<li><a
href="https://github.com/golang/tools/commit/4738c7c0b1a53ae0c0fa248a8c31d2a07922dc9b"><code>4738c7c</code></a>
gopls/internal/cmd: avoid the use of channels in the sessions API</li>
<li><a
href="https://github.com/golang/tools/commit/ae1841752658d1d164b5926e72b2b0751fe5db17"><code>ae18417</code></a>
gopls/internal/filewatcher: skip test for unsupported OS</li>
<li><a
href="https://github.com/golang/tools/commit/8391b17713e95ac9bc23d8de7c0303b11c4a190b"><code>8391b17</code></a>
gopls/doc: document Zed editor</li>
<li><a
href="https://github.com/golang/tools/commit/778fe21d5d9f021763cced9defde671c6329d921"><code>778fe21</code></a>
gopls/internal/util/tokeninternal: move from internal/tokeninternal</li>
<li><a
href="https://github.com/golang/tools/commit/0343b7064dcefd5b28e53395fa70768990cc71fb"><code>0343b70</code></a>
internal/jsonrpc2/stack: move from internal/stack</li>
<li><a
href="https://github.com/golang/tools/commit/8c9f4cc0c2a00d508755a558cf73e0dab8d78863"><code>8c9f4cc</code></a>
gopls/internal/filewatcher: refactor filewatcher to pass in handler
func</li>
<li>Additional commits viewable in <a
href="https://github.com/golang/tools/compare/v0.34.0...v0.35.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golang.org/x/tools&package-manager=go_modules&previous-version=0.34.0&new-version=0.35.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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-21 14:21:53 +00:00
dependabot[bot] e4c2099031 chore: bump github.com/valyala/fasthttp from 1.63.0 to 1.64.0 (#18940)
Bumps [github.com/valyala/fasthttp](https://github.com/valyala/fasthttp)
from 1.63.0 to 1.64.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/valyala/fasthttp/releases">github.com/valyala/fasthttp's
releases</a>.</em></p>
<blockquote>
<h2>v1.64.0</h2>
<h2>⚠️ Deprecation warning! ⚠️</h2>
<p>In the next version of fasthttp headers delimited by just
<code>\n</code> (instead of <code>\r\n</code>) are no longer
supported!</p>
<h2>What's Changed</h2>
<ul>
<li>Add warning for deprecated newline separator by <a
href="https://github.com/erikdubbelboer"><code>@​erikdubbelboer</code></a>
in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2031">valyala/fasthttp#2031</a></li>
<li>refact: eliminate duplication in Request/Response via struct
embedding by <a
href="https://github.com/ksw2000"><code>@​ksw2000</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2027">valyala/fasthttp#2027</a></li>
<li>chore(deps): bump golang.org/x/sys from 0.33.0 to 0.34.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2034">valyala/fasthttp#2034</a></li>
<li>chore(deps): bump golang.org/x/crypto from 0.39.0 to 0.40.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2036">valyala/fasthttp#2036</a></li>
<li>chore(deps): bump golang.org/x/net from 0.41.0 to 0.42.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2035">valyala/fasthttp#2035</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/valyala/fasthttp/compare/v1.63.0...v1.64.0">https://github.com/valyala/fasthttp/compare/v1.63.0...v1.64.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/valyala/fasthttp/commit/b1a54c8de5720d048bc2cc9aef47903bda171a9e"><code>b1a54c8</code></a>
chore(deps): bump golang.org/x/net from 0.41.0 to 0.42.0 (<a
href="https://redirect.github.com/valyala/fasthttp/issues/2035">#2035</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/7ac856f71f3b3f8a0df682af0d3d09c88bf0519b"><code>7ac856f</code></a>
chore(deps): bump golang.org/x/crypto from 0.39.0 to 0.40.0 (<a
href="https://redirect.github.com/valyala/fasthttp/issues/2036">#2036</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/2a917b661a90127b84796d80fc30d4e70845ecfa"><code>2a917b6</code></a>
chore(deps): bump golang.org/x/sys from 0.33.0 to 0.34.0 (<a
href="https://redirect.github.com/valyala/fasthttp/issues/2034">#2034</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/a3c9dab7573946aa0afcee62d94fbfb58e3c4c2c"><code>a3c9dab</code></a>
Add warning for deprecated newline separator (<a
href="https://redirect.github.com/valyala/fasthttp/issues/2031">#2031</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/eb1f908d9764ef1a355bab13ed83ce7cfc5e793e"><code>eb1f908</code></a>
refact: eliminate duplication in Request/Response via struct embedding
(<a
href="https://redirect.github.com/valyala/fasthttp/issues/2027">#2027</a>)</li>
<li>See full diff in <a
href="https://github.com/valyala/fasthttp/compare/v1.63.0...v1.64.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/valyala/fasthttp&package-manager=go_modules&previous-version=1.63.0&new-version=1.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>
2025-07-21 14:16:42 +00:00
dependabot[bot] 4c1a46150b chore: bump github.com/mark3labs/mcp-go from 0.33.0 to 0.34.0 (#18939)
Bumps [github.com/mark3labs/mcp-go](https://github.com/mark3labs/mcp-go)
from 0.33.0 to 0.34.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mark3labs/mcp-go/releases">github.com/mark3labs/mcp-go's
releases</a>.</em></p>
<blockquote>
<h2>v0.34.0</h2>
<h2>What's Changed</h2>
<ul>
<li>fix(streamable_http): ensure graceful shutdown to prevent close
reque… by <a
href="https://github.com/sunerpy"><code>@​sunerpy</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/477">mark3labs/mcp-go#477</a></li>
<li>fix(streamble_http) SendNotification not work bug by <a
href="https://github.com/Robin-ZMH"><code>@​Robin-ZMH</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/473">mark3labs/mcp-go#473</a></li>
<li>refactor: replace fmt.Errorf with TransportError wrapper by <a
href="https://github.com/AdamShannag"><code>@​AdamShannag</code></a> in
<a
href="https://redirect.github.com/mark3labs/mcp-go/pull/486">mark3labs/mcp-go#486</a></li>
<li>fix <code>Content-Type: application/json; charset=utf-8</code> error
by <a href="https://github.com/oldweipro"><code>@​oldweipro</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/478">mark3labs/mcp-go#478</a></li>
<li>feat: Inprocess sampling support by <a
href="https://github.com/ezynda3"><code>@​ezynda3</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/487">mark3labs/mcp-go#487</a></li>
<li>feat: support in tool result handling &amp; update example by <a
href="https://github.com/CocaineCong"><code>@​CocaineCong</code></a> in
<a
href="https://redirect.github.com/mark3labs/mcp-go/pull/467">mark3labs/mcp-go#467</a></li>
<li>feat(logging): add support for send log message notifications and
implemented the <code>SessionWithLogging</code> interface on
<code>streamableHttpSession</code> by <a
href="https://github.com/sunerpy"><code>@​sunerpy</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/484">mark3labs/mcp-go#484</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/sunerpy"><code>@​sunerpy</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/477">mark3labs/mcp-go#477</a></li>
<li><a href="https://github.com/Robin-ZMH"><code>@​Robin-ZMH</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/473">mark3labs/mcp-go#473</a></li>
<li><a
href="https://github.com/AdamShannag"><code>@​AdamShannag</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/486">mark3labs/mcp-go#486</a></li>
<li><a href="https://github.com/oldweipro"><code>@​oldweipro</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/478">mark3labs/mcp-go#478</a></li>
<li><a
href="https://github.com/CocaineCong"><code>@​CocaineCong</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/467">mark3labs/mcp-go#467</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.33.0...v0.34.0">https://github.com/mark3labs/mcp-go/compare/v0.33.0...v0.34.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/ffea75ff8133a2efec8ae549f0a5bc25cd27f8a4"><code>ffea75f</code></a>
feat(logging): add support for send log message notifications and
implemented...</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/e859847efc844f904dac49f8220cb5c911ffed91"><code>e859847</code></a>
feat: support in tool result handling &amp; update example (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/467">#467</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/9c352bd3f37f776d3390b22957da4ad114f114b1"><code>9c352bd</code></a>
feat: Inprocess sampling support (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/487">#487</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/78eb7a3c790dc7de26b9d61039a9527ef4022833"><code>78eb7a3</code></a>
fix <code>Content-Type: application/json; charset=utf-8</code> error (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/478">#478</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/c8c52a8c25536b4cdc1ad7725338a5b0d336f13f"><code>c8c52a8</code></a>
refactor: replace fmt.Errorf with TransportError wrapper (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/486">#486</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/65df1b095c8274f7cb0997fbd1a7bdbf12a2fc43"><code>65df1b0</code></a>
fix(streamble_http) SendNotification not work bug (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/473">#473</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/2d479bb4995a6279223c524f27ad94bf7e7a30cd"><code>2d479bb</code></a>
Merge pull request <a
href="https://redirect.github.com/mark3labs/mcp-go/issues/477">#477</a>
from sunerpy/main</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/bee9f90bab8622796cb7e9348acdaaebcc3cd7ed"><code>bee9f90</code></a>
fix(streamable_http): ensure graceful shutdown to prevent close request
errors</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/56f25011a0a97b4bb60e7742f017ce0ce098ae66"><code>56f2501</code></a>
fix quick-start</li>
<li>See full diff in <a
href="https://github.com/mark3labs/mcp-go/compare/v0.33.0...v0.34.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/mark3labs/mcp-go&package-manager=go_modules&previous-version=0.33.0&new-version=0.34.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>
2025-07-21 14:13:04 +00:00
dependabot[bot] 6b141d76de ci: bump the github-actions group with 6 updates (#18938)
Bumps the github-actions group with 6 updates:

| Package | From | To |
| --- | --- | --- |
|
[step-security/harden-runner](https://github.com/step-security/harden-runner)
| `2.12.2` | `2.13.0` |
|
[google-github-actions/auth](https://github.com/google-github-actions/auth)
| `2.1.10` | `2.1.11` |
|
[google-github-actions/setup-gcloud](https://github.com/google-github-actions/setup-gcloud)
| `2.1.4` | `2.1.5` |
|
[google-github-actions/get-gke-credentials](https://github.com/google-github-actions/get-gke-credentials)
| `2.3.3` | `2.3.4` |
| [github/codeql-action](https://github.com/github/codeql-action) |
`3.29.2` | `3.29.3` |
|
[umbrelladocs/action-linkspector](https://github.com/umbrelladocs/action-linkspector)
| `1.3.6` | `1.3.7` |

Updates `step-security/harden-runner` from 2.12.2 to 2.13.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/step-security/harden-runner/releases">step-security/harden-runner's
releases</a>.</em></p>
<blockquote>
<h2>v2.13.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Improved job markdown summary</li>
<li>Https monitoring for all domains (included with the enterprise
tier)</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/step-security/harden-runner/compare/v2...v2.13.0">https://github.com/step-security/harden-runner/compare/v2...v2.13.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/step-security/harden-runner/commit/ec9f2d5744a09debf3a187a3f4f675c53b671911"><code>ec9f2d5</code></a>
Merge pull request <a
href="https://redirect.github.com/step-security/harden-runner/issues/565">#565</a>
from step-security/rc-24</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/04bcbc31cfcefe0cf4720832008735021cec5ec4"><code>04bcbc3</code></a>
update agent</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/7c7a56fcaa124ab72fff1cc3e81257f264fd7317"><code>7c7a56f</code></a>
feat: get job summary from API</li>
<li>See full diff in <a
href="https://github.com/step-security/harden-runner/compare/6c439dc8bdf85cadbbce9ed30d1c7b959517bc49...ec9f2d5744a09debf3a187a3f4f675c53b671911">compare
view</a></li>
</ul>
</details>
<br />

Updates `google-github-actions/auth` from 2.1.10 to 2.1.11
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/google-github-actions/auth/releases">google-github-actions/auth's
releases</a>.</em></p>
<blockquote>
<h2>v2.1.11</h2>
<h2>What's Changed</h2>
<ul>
<li>Update troubleshooting docs for Python by <a
href="https://github.com/sethvargo"><code>@​sethvargo</code></a> in <a
href="https://redirect.github.com/google-github-actions/auth/pull/488">google-github-actions/auth#488</a></li>
<li>Add linters by <a
href="https://github.com/sethvargo"><code>@​sethvargo</code></a> in <a
href="https://redirect.github.com/google-github-actions/auth/pull/499">google-github-actions/auth#499</a></li>
<li>Update deps by <a
href="https://github.com/sethvargo"><code>@​sethvargo</code></a> in <a
href="https://redirect.github.com/google-github-actions/auth/pull/500">google-github-actions/auth#500</a></li>
<li>Release: v2.1.11 by <a
href="https://github.com/google-github-actions-bot"><code>@​google-github-actions-bot</code></a>
in <a
href="https://redirect.github.com/google-github-actions/auth/pull/501">google-github-actions/auth#501</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/google-github-actions/auth/compare/v2.1.10...v2.1.11">https://github.com/google-github-actions/auth/compare/v2.1.10...v2.1.11</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/google-github-actions/auth/commit/140bb5113ffb6b65a7e9b937a81fa96cf5064462"><code>140bb51</code></a>
Release: v2.1.11 (<a
href="https://redirect.github.com/google-github-actions/auth/issues/501">#501</a>)</li>
<li><a
href="https://github.com/google-github-actions/auth/commit/ab3132e2ad698521ee1355566103fa838732e48c"><code>ab3132e</code></a>
Update deps (<a
href="https://redirect.github.com/google-github-actions/auth/issues/500">#500</a>)</li>
<li><a
href="https://github.com/google-github-actions/auth/commit/25b96bac992fdf64486c6fd3fd3d9c4cddb3a812"><code>25b96ba</code></a>
Add linters (<a
href="https://redirect.github.com/google-github-actions/auth/issues/499">#499</a>)</li>
<li><a
href="https://github.com/google-github-actions/auth/commit/0920706a19e9d22c3d0da43d1db5939c6ad837a8"><code>0920706</code></a>
Update troubleshooting docs for Python (<a
href="https://redirect.github.com/google-github-actions/auth/issues/488">#488</a>)</li>
<li>See full diff in <a
href="https://github.com/google-github-actions/auth/compare/ba79af03959ebeac9769e648f473a284504d9193...140bb5113ffb6b65a7e9b937a81fa96cf5064462">compare
view</a></li>
</ul>
</details>
<br />

Updates `google-github-actions/setup-gcloud` from 2.1.4 to 2.1.5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/google-github-actions/setup-gcloud/releases">google-github-actions/setup-gcloud's
releases</a>.</em></p>
<blockquote>
<h2>v2.1.5</h2>
<h2>What's Changed</h2>
<ul>
<li>security: bump undici from 5.28.5 to 5.29.0 in the npm_and_yarn
group by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google-github-actions/setup-gcloud/pull/711">google-github-actions/setup-gcloud#711</a></li>
<li>Update linters by <a
href="https://github.com/sethvargo"><code>@​sethvargo</code></a> in <a
href="https://redirect.github.com/google-github-actions/setup-gcloud/pull/715">google-github-actions/setup-gcloud#715</a></li>
<li>Update deps by <a
href="https://github.com/sethvargo"><code>@​sethvargo</code></a> in <a
href="https://redirect.github.com/google-github-actions/setup-gcloud/pull/716">google-github-actions/setup-gcloud#716</a></li>
<li>Release: v2.1.5 by <a
href="https://github.com/google-github-actions-bot"><code>@​google-github-actions-bot</code></a>
in <a
href="https://redirect.github.com/google-github-actions/setup-gcloud/pull/717">google-github-actions/setup-gcloud#717</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/google-github-actions/setup-gcloud/compare/v2.1.4...v2.1.5">https://github.com/google-github-actions/setup-gcloud/compare/v2.1.4...v2.1.5</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/google-github-actions/setup-gcloud/commit/6a7c903a70c8625ed6700fa299f5ddb4ca6022e9"><code>6a7c903</code></a>
Release: v2.1.5 (<a
href="https://redirect.github.com/google-github-actions/setup-gcloud/issues/717">#717</a>)</li>
<li><a
href="https://github.com/google-github-actions/setup-gcloud/commit/e838bc6edfe3907980c74d5aad506fd6e173b0d6"><code>e838bc6</code></a>
Update deps (<a
href="https://redirect.github.com/google-github-actions/setup-gcloud/issues/716">#716</a>)</li>
<li><a
href="https://github.com/google-github-actions/setup-gcloud/commit/98d8f78fcc2354c736499a506ad9e7be3f4c2640"><code>98d8f78</code></a>
Update linters (<a
href="https://redirect.github.com/google-github-actions/setup-gcloud/issues/715">#715</a>)</li>
<li><a
href="https://github.com/google-github-actions/setup-gcloud/commit/a8b58010a5b2a061afd605f50e88629c9ec7536b"><code>a8b5801</code></a>
security: bump undici from 5.28.5 to 5.29.0 in the npm_and_yarn group
(<a
href="https://redirect.github.com/google-github-actions/setup-gcloud/issues/711">#711</a>)</li>
<li>See full diff in <a
href="https://github.com/google-github-actions/setup-gcloud/compare/77e7a554d41e2ee56fc945c52dfd3f33d12def9a...6a7c903a70c8625ed6700fa299f5ddb4ca6022e9">compare
view</a></li>
</ul>
</details>
<br />

Updates `google-github-actions/get-gke-credentials` from 2.3.3 to 2.3.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/google-github-actions/get-gke-credentials/releases">google-github-actions/get-gke-credentials's
releases</a>.</em></p>
<blockquote>
<h2>v2.3.4</h2>
<h2>What's Changed</h2>
<ul>
<li>security: bump undici from 5.28.5 to 5.29.0 in the npm_and_yarn
group by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google-github-actions/get-gke-credentials/pull/333">google-github-actions/get-gke-credentials#333</a></li>
<li>Update linters by <a
href="https://github.com/sethvargo"><code>@​sethvargo</code></a> in <a
href="https://redirect.github.com/google-github-actions/get-gke-credentials/pull/334">google-github-actions/get-gke-credentials#334</a></li>
<li>Update deps by <a
href="https://github.com/sethvargo"><code>@​sethvargo</code></a> in <a
href="https://redirect.github.com/google-github-actions/get-gke-credentials/pull/335">google-github-actions/get-gke-credentials#335</a></li>
<li>Release: v2.3.4 by <a
href="https://github.com/google-github-actions-bot"><code>@​google-github-actions-bot</code></a>
in <a
href="https://redirect.github.com/google-github-actions/get-gke-credentials/pull/336">google-github-actions/get-gke-credentials#336</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/google-github-actions/get-gke-credentials/compare/v2.3.3...v2.3.4">https://github.com/google-github-actions/get-gke-credentials/compare/v2.3.3...v2.3.4</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/google-github-actions/get-gke-credentials/commit/8e574c49425fa7efed1e74650a449bfa6a23308a"><code>8e574c4</code></a>
Release: v2.3.4 (<a
href="https://redirect.github.com/google-github-actions/get-gke-credentials/issues/336">#336</a>)</li>
<li><a
href="https://github.com/google-github-actions/get-gke-credentials/commit/820551c1d9b3734a98590d5020e3a479a3600019"><code>820551c</code></a>
Update deps (<a
href="https://redirect.github.com/google-github-actions/get-gke-credentials/issues/335">#335</a>)</li>
<li><a
href="https://github.com/google-github-actions/get-gke-credentials/commit/503071673e50fd4fe5973d69174dc780288d61e9"><code>5030716</code></a>
Update linters (<a
href="https://redirect.github.com/google-github-actions/get-gke-credentials/issues/334">#334</a>)</li>
<li><a
href="https://github.com/google-github-actions/get-gke-credentials/commit/36f99de330d5a168c801b87721b96719a0a9ada0"><code>36f99de</code></a>
security: bump undici from 5.28.5 to 5.29.0 in the npm_and_yarn group
(<a
href="https://redirect.github.com/google-github-actions/get-gke-credentials/issues/333">#333</a>)</li>
<li>See full diff in <a
href="https://github.com/google-github-actions/get-gke-credentials/compare/d0cee45012069b163a631894b98904a9e6723729...8e574c49425fa7efed1e74650a449bfa6a23308a">compare
view</a></li>
</ul>
</details>
<br />

Updates `github/codeql-action` from 3.29.2 to 3.29.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.29.3</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.29.3 - 21 Jul 2025</h2>
<p>No user facing changes.</p>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.29.3/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<p>No user facing changes.</p>
<h2>3.29.3 - 21 Jul 2025</h2>
<p>No user facing changes.</p>
<h2>3.29.2 - 30 Jun 2025</h2>
<ul>
<li>Experimental: When the <code>quality-queries</code> input for the
<code>init</code> action is provided with an argument, separate
<code>.quality.sarif</code> files are produced and uploaded for each
language with the results of the specified queries. Do not use this in
production as it is part of an internal experiment and subject to change
at any time. <a
href="https://redirect.github.com/github/codeql-action/pull/2935">#2935</a></li>
</ul>
<h2>3.29.1 - 27 Jun 2025</h2>
<ul>
<li>Fix bug in PR analysis where user-provided <code>include</code>
query filter fails to exclude non-included queries. <a
href="https://redirect.github.com/github/codeql-action/pull/2938">#2938</a></li>
<li>Update default CodeQL bundle version to 2.22.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2950">#2950</a></li>
</ul>
<h2>3.29.0 - 11 Jun 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.22.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2925">#2925</a></li>
<li>Bump minimum CodeQL bundle version to 2.16.6. <a
href="https://redirect.github.com/github/codeql-action/pull/2912">#2912</a></li>
</ul>
<h2>3.28.20 - 21 July 2025</h2>
<ul>
<li>Remove support for combining SARIF files from a single upload for
GHES 3.18, see <a
href="https://github.blog/changelog/2024-05-06-code-scanning-will-stop-combining-runs-from-a-single-upload/">the
changelog post</a>. <a
href="https://redirect.github.com/github/codeql-action/pull/2959">#2959</a></li>
</ul>
<h2>3.28.19 - 03 Jun 2025</h2>
<ul>
<li>The CodeQL Action no longer includes its own copy of the extractor
for the <code>actions</code> language, which is currently in public
preview.
The <code>actions</code> extractor has been included in the CodeQL CLI
since v2.20.6. If your workflow has enabled the <code>actions</code>
language <em>and</em> you have pinned
your <code>tools:</code> property to a specific version of the CodeQL
CLI earlier than v2.20.6, you will need to update to at least CodeQL
v2.20.6 or disable
<code>actions</code> analysis.</li>
<li>Update default CodeQL bundle version to 2.21.4. <a
href="https://redirect.github.com/github/codeql-action/pull/2910">#2910</a></li>
</ul>
<h2>3.28.18 - 16 May 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.3. <a
href="https://redirect.github.com/github/codeql-action/pull/2893">#2893</a></li>
<li>Skip validating SARIF produced by CodeQL for improved performance.
<a
href="https://redirect.github.com/github/codeql-action/pull/2894">#2894</a></li>
<li>The number of threads and amount of RAM used by CodeQL can now be
set via the <code>CODEQL_THREADS</code> and <code>CODEQL_RAM</code>
runner environment variables. If set, these environment variables
override the <code>threads</code> and <code>ram</code> inputs
respectively. <a
href="https://redirect.github.com/github/codeql-action/pull/2891">#2891</a></li>
</ul>
<h2>3.28.17 - 02 May 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.2. <a
href="https://redirect.github.com/github/codeql-action/pull/2872">#2872</a></li>
</ul>
<h2>3.28.16 - 23 Apr 2025</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/d6bbdef45e766d081b84a2def353b0055f728d3e"><code>d6bbdef</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2977">#2977</a>
from github/update-v3.29.3-7710ed11e</li>
<li><a
href="https://github.com/github/codeql-action/commit/210cc9bfa2103f4b7c4701ee383183b944c62578"><code>210cc9b</code></a>
Update changelog for v3.29.3</li>
<li><a
href="https://github.com/github/codeql-action/commit/7710ed11e398ea99c7f7004c2b2e0f580458db42"><code>7710ed1</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2970">#2970</a>
from github/cklin/diff-informed-feature-enable</li>
<li><a
href="https://github.com/github/codeql-action/commit/6a49a8cbce6ecbd74ea251a48dbc84e64ce3be4d"><code>6a49a8c</code></a>
build: refresh js files</li>
<li><a
href="https://github.com/github/codeql-action/commit/3aef4108d1730e17b6fd24f8b9c49d8fcc87d46d"><code>3aef410</code></a>
Add diff-informed-analysis-utils.test.ts</li>
<li><a
href="https://github.com/github/codeql-action/commit/614b64c6ec97a4ad54f7c99c5becbf593144dbfb"><code>614b64c</code></a>
Diff-informed analysis: disable for GHES below 3.19</li>
<li><a
href="https://github.com/github/codeql-action/commit/aefb854fe5563f4650638224c839c6e9b33c25b5"><code>aefb854</code></a>
Feature.DiffInformedQueries: default to true</li>
<li><a
href="https://github.com/github/codeql-action/commit/03a2a17e75d20e4ff461b43f161fb2b52165f632"><code>03a2a17</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2967">#2967</a>
from github/cklin/overlay-feature-flags</li>
<li><a
href="https://github.com/github/codeql-action/commit/07455ed3c36f739ad76d1c4e55f8b49550f74344"><code>07455ed</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2972">#2972</a>
from github/koesie10/ghes-satisfies</li>
<li><a
href="https://github.com/github/codeql-action/commit/3fb562ddcce3ca92b83ea1bb7abaa579a1ab882d"><code>3fb562d</code></a>
build: refresh js files</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/181d5eefc20863364f96762470ba6f862bdef56b...d6bbdef45e766d081b84a2def353b0055f728d3e">compare
view</a></li>
</ul>
</details>
<br />

Updates `umbrelladocs/action-linkspector` from 1.3.6 to 1.3.7
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/umbrelladocs/action-linkspector/releases">umbrelladocs/action-linkspector's
releases</a>.</em></p>
<blockquote>
<h2>Release v1.3.7</h2>
<p>v1.3.7: PR <a
href="https://redirect.github.com/umbrelladocs/action-linkspector/issues/47">#47</a>
- Update linkspector version to 0.4.7</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/UmbrellaDocs/action-linkspector/commit/874d01cae9fd488e3077b08952093235bd626977"><code>874d01c</code></a>
Merge pull request <a
href="https://redirect.github.com/umbrelladocs/action-linkspector/issues/47">#47</a>
from UmbrellaDocs/update-linkspector-version</li>
<li><a
href="https://github.com/UmbrellaDocs/action-linkspector/commit/bfc5bc55f5a8fc268165639b78b3ce6ae64915ad"><code>bfc5bc5</code></a>
Update linkspector version to 0.4.7</li>
<li>See full diff in <a
href="https://github.com/umbrelladocs/action-linkspector/compare/3a951c1f0dca72300c2320d0eb39c2bafe429ab1...874d01cae9fd488e3077b08952093235bd626977">compare
view</a></li>
</ul>
</details>
<br />


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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-21 13:21:37 +00:00
Hugo Dutka ceb4b973b4 chore: run full macos and windows pg tests in the nightly gauntlet (#18787)
This PR starts running the full test suite on Windows and macOS in the
nightly gauntlet, since the regular CI only runs agent and cli tests.
The full suite is too slow to be run on every PR.
2025-07-21 15:18:49 +02:00
Danielle Maywood f751f81052 fix(coderd): fix flake in TestAPI/ModifyAutostopWithRunningWorkspace (#18932)
Fixes https://github.com/coder/internal/issues/521

This happened due to a race condition present in how
`AwaitWorkspaceBuildJobCompleted` works.

`AwaitWorkspaceBuildJobCompleted` works by waiting until
`/api/v2/workspacesbuilds/{workspacebuild}/` returns a workspace build
with `.Job.CompletedAt != nil`. The issue here is that _sometimes_ the
returned `codersdk.WorkspaceBuild` can contain a build from _before_ a
provisioner job completed, but contain the provisioner job from _after_
it completed.

Let me demonstrate:

Here we query the database for `database.WorkspaceBuild`.

https://github.com/coder/coder/blob/a3f64f74f794c733126ad21cd1feb0801caf67c4/coderd/coderd.go#L1409-L1415

Inside of the `workspaceBuild` route handler, we call
`workspaceBuildsData`

https://github.com/coder/coder/blob/a3f64f74f794c733126ad21cd1feb0801caf67c4/coderd/workspacebuilds.go#L54

This then calls `GetProvisionerJobsByIDsWithQueuePosition`

https://github.com/coder/coder/blob/a3f64f74f794c733126ad21cd1feb0801caf67c4/coderd/workspacebuilds.go#L852-L856

As these two calls happen _outside of a transaction_, the state of the
world can change underneath. This can result in an in-progress workspace
build having a completed provisioner job attached to it.
2025-07-21 13:04:28 +01:00
Thomas Kosiewski 0d3b7703f7 docs: remove dbmem references from documentation files (#18861)
Change-Id: Ic33bc383d00d0e354c25a0dd6080a4307d9862b6
Signed-off-by: Thomas Kosiewski <tk@coder.com>
2025-07-21 11:21:58 +02:00
dependabot[bot] 7c66dcd238 chore: bump terraform-google-modules/container-vm/google from 3.0.0 to 3.2.0 in /examples/templates/gcp-vm-container (#18925)
Bumps
[terraform-google-modules/container-vm/google](https://github.com/terraform-google-modules/terraform-google-container-vm)
from 3.0.0 to 3.2.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/releases">terraform-google-modules/container-vm/google's
releases</a>.</em></p>
<blockquote>
<h2>v3.2.0</h2>
<h2><a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/compare/v3.1.1...v3.2.0">3.2.0</a>
(2024-08-29)</h2>
<h3>Features</h3>
<ul>
<li><strong>deps:</strong> Update Terraform Google Provider to v6
(major) (<a
href="https://redirect.github.com/terraform-google-modules/terraform-google-container-vm/issues/138">#138</a>)
(<a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/commit/b8065338e38b51230f06aec573a2f8027c30c566">b806533</a>)</li>
</ul>
<h2>v3.1.1</h2>
<h2><a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/compare/v3.1.0...v3.1.1">3.1.1</a>
(2024-01-08)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>deps:</strong> lint updates for cft/developer-tools v1.18
(<a
href="https://redirect.github.com/terraform-google-modules/terraform-google-container-vm/issues/123">#123</a>)
(<a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/commit/2d57bef2f9ff75f5ca0a0b7f5d21985b823be1a6">2d57bef</a>)</li>
<li>upgraded versions.tf to include minor bumps from tpg v5 (<a
href="https://redirect.github.com/terraform-google-modules/terraform-google-container-vm/issues/118">#118</a>)
(<a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/commit/14fcdf3463b254098a5bc4a6e01003b3eee2d75c">14fcdf3</a>)</li>
</ul>
<h2>v3.1.0</h2>
<h2><a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/compare/v3.0.1...v3.1.0">3.1.0</a>
(2022-09-19)</h2>
<h3>Features</h3>
<ul>
<li>expose cos_project variable (<a
href="https://redirect.github.com/terraform-google-modules/terraform-google-container-vm/issues/91">#91</a>)
(<a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/commit/b32263d30cf2a61d20ddbca94733bf3abfb7a446">b32263d</a>)</li>
</ul>
<h2>v3.0.1</h2>
<h2><a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/compare/v3.0.0...v3.0.1">3.0.1</a>
(2022-07-20)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>restart policy kills konlet-startup container fix for the value
Never (<a
href="https://redirect.github.com/terraform-google-modules/terraform-google-container-vm/issues/87">#87</a>)
(<a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/commit/fcbdafa2d5b00792c388dcda1e1715f5e2a615e6">fcbdafa</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/blob/main/CHANGELOG.md">terraform-google-modules/container-vm/google's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/compare/v3.1.1...v3.2.0">3.2.0</a>
(2024-08-29)</h2>
<h3>Features</h3>
<ul>
<li><strong>deps:</strong> Update Terraform Google Provider to v6
(major) (<a
href="https://redirect.github.com/terraform-google-modules/terraform-google-container-vm/issues/138">#138</a>)
(<a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/commit/b8065338e38b51230f06aec573a2f8027c30c566">b806533</a>)</li>
</ul>
<h2><a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/compare/v3.1.0...v3.1.1">3.1.1</a>
(2024-01-08)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>deps:</strong> lint updates for cft/developer-tools v1.18
(<a
href="https://redirect.github.com/terraform-google-modules/terraform-google-container-vm/issues/123">#123</a>)
(<a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/commit/2d57bef2f9ff75f5ca0a0b7f5d21985b823be1a6">2d57bef</a>)</li>
<li>upgraded versions.tf to include minor bumps from tpg v5 (<a
href="https://redirect.github.com/terraform-google-modules/terraform-google-container-vm/issues/118">#118</a>)
(<a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/commit/14fcdf3463b254098a5bc4a6e01003b3eee2d75c">14fcdf3</a>)</li>
</ul>
<h2><a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/compare/v3.0.1...v3.1.0">3.1.0</a>
(2022-09-19)</h2>
<h3>Features</h3>
<ul>
<li>expose cos_project variable (<a
href="https://redirect.github.com/terraform-google-modules/terraform-google-container-vm/issues/91">#91</a>)
(<a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/commit/b32263d30cf2a61d20ddbca94733bf3abfb7a446">b32263d</a>)</li>
</ul>
<h2><a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/compare/v3.0.0...v3.0.1">3.0.1</a>
(2022-07-20)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>restart policy kills konlet-startup container fix for the value
Never (<a
href="https://redirect.github.com/terraform-google-modules/terraform-google-container-vm/issues/87">#87</a>)
(<a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/commit/fcbdafa2d5b00792c388dcda1e1715f5e2a615e6">fcbdafa</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/commit/ceba2c777b5fbdc74debcbad63b02f94b6abcb60"><code>ceba2c7</code></a>
chore(master): release 3.2.0 (<a
href="https://redirect.github.com/terraform-google-modules/terraform-google-container-vm/issues/139">#139</a>)</li>
<li><a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/commit/b8065338e38b51230f06aec573a2f8027c30c566"><code>b806533</code></a>
feat(deps): Update Terraform Google Provider to v6 (major) (<a
href="https://redirect.github.com/terraform-google-modules/terraform-google-container-vm/issues/138">#138</a>)</li>
<li><a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/commit/b9c7fdd2cd0bd09942440ac372fdee47bde57db9"><code>b9c7fdd</code></a>
chore(deps): Update cft/developer-tools Docker tag to v1.22 (<a
href="https://redirect.github.com/terraform-google-modules/terraform-google-container-vm/issues/136">#136</a>)</li>
<li><a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/commit/5efa4d20a97b4b30c4392bbf5d788e65f0dd51c7"><code>5efa4d2</code></a>
chore(deps): Update cft/developer-tools Docker tag to v1.21 (<a
href="https://redirect.github.com/terraform-google-modules/terraform-google-container-vm/issues/131">#131</a>)</li>
<li><a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/commit/d9045637650a82354f11b4d170b96f20b2a00167"><code>d904563</code></a>
chore(deps): Update Terraform
terraform-google-modules/project-factory/google...</li>
<li><a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/commit/30b7909f74ef3228daac07c771366e910059e9f5"><code>30b7909</code></a>
chore(deps): Update Terraform terraform-google-modules/vm/google to v11
(<a
href="https://redirect.github.com/terraform-google-modules/terraform-google-container-vm/issues/129">#129</a>)</li>
<li><a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/commit/5dc397e54a63e9ae63bc165a80e35b2a18ff6d99"><code>5dc397e</code></a>
chore(deps): Update cft/developer-tools Docker tag to v1.19 (<a
href="https://redirect.github.com/terraform-google-modules/terraform-google-container-vm/issues/128">#128</a>)</li>
<li><a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/commit/aefea73c5602277b4876e3b0d14f7aaa90151bcc"><code>aefea73</code></a>
chore: update .github/workflows/lint.yaml</li>
<li><a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/commit/924324901e4219d7e4d72d8168b2f90dbc1d923b"><code>9243249</code></a>
chore: update CODEOWNERS</li>
<li><a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/commit/8361f4d105e415b166c1ddcbcc080ff31360058b"><code>8361f4d</code></a>
chore: update .github/workflows/stale.yml</li>
<li>Additional commits viewable in <a
href="https://github.com/terraform-google-modules/terraform-google-container-vm/compare/v3.0.0...v3.2.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=terraform-google-modules/container-vm/google&package-manager=terraform&previous-version=3.0.0&new-version=3.2.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>
2025-07-21 09:05:33 +00:00
Thomas Kosiewski fcd361d374 feat: add logo SVG and replace inline SVG with image reference (#18930)
# Replace SVG with external logo file in OAuth2 authorization page

This PR replaces the inline SVG logo in the OAuth2 authorization page with a reference to an external SVG file. The change:

1. Adds a new `logo.svg` file in the static directory with the Coder logo
2. Updates the OAuth2 authorization page to use this external file instead of embedding the SVG directly

This approach improves maintainability by centralizing the logo in a single file and reduces duplication in the codebase.
2025-07-21 11:04:21 +02:00
blink-so[bot] f3c1353322 docs: fix typo 'protyping' to 'prototyping' in AI Coding Agents page (#18928)
Fixes #18926

Simple typo fix: changed 'protyping' to 'prototyping' in the AI Coding
Agents documentation page.

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: bpmct <22407953+bpmct@users.noreply.github.com>
2025-07-20 20:16:19 +00:00
Thomas Kosiewski 7b06fc77ae refactor: simplify OAuth2 authorization flow and use 302 redirects (#18923)
# Refactor OAuth2 Provider Authorization Flow

This PR refactors the OAuth2 provider authorization flow by:

1. Removing the `authorizeMW` middleware and directly implementing its functionality in the `ShowAuthorizePage` handler
2. Simplifying function signatures by removing unnecessary parameters:
   - Removed `db` parameter from `ShowAuthorizePage`
   - Removed `accessURL` parameter from `ProcessAuthorize`
3. Changing the redirect status code in `ProcessAuthorize` from 307 (Temporary Redirect) to 302 (Found) to improve compatibility with external OAuth2 apps and browsers. (Technical explanation: we replied with a 307 to a POST request, thus the browser performs a redirect to that URL as a POST request, but we need it to be a GET request to be compatible. Thus, we use the 302 redirect so that browsers turn it into a GET request when redirecting back to the redirect_uri.)

The changes maintain the same functionality while simplifying the code and improving compatibility with external systems.
2025-07-20 16:22:52 +02:00
Thomas Kosiewski 071383bbe8 feat: add RFC 9728 OAuth2 resource metadata support (#18920)
# Enhanced OAuth2 and MCP Compliance for API Authentication

This PR improves OAuth2 and MCP (Microsoft Cloud for Sovereignty)
compliance by:

1. Adding RFC 9728 compliant `WWW-Authenticate` headers with resource
metadata URLs
2. Passing the configured `AccessURL` to API key middleware for proper
audience validation
3. Creating specialized CORS handling for OAuth2 and MCP endpoints with
appropriate headers
4. Making the `state` parameter optional in OAuth2 authorization
requests

These changes ensure proper OAuth2 token audience validation against the
configured access URL and improve interoperability with OAuth2 clients
by providing better error responses and metadata discovery.

Signed-off-by: Thomas Kosiewski <tk@coder.com>
2025-07-19 22:05:15 +02:00
Michael Smith f47efc62ee fix(site): speed up state syncs and validate input for debounce hook logic (#18877)
No issue to link – I'm basically pushing some updates upstream from the
version of the hook I copied over for the Registry website.

## Changes made
- Updated debounce functions to have input validation for timeouts
- Updated `useDebouncedValue` to flush state syncs immediately if
timeout value is `0`
- Updated tests to reflect changes
- Cleaned up some comments and parameter names to make things more clear
2025-07-17 18:15:42 -04:00
DevCats 6746e16502 docs: add contribution documentation for modules and templates (#18820)
draft: add contribution docs for modules and templates individually to
be referenced in coder docs manifest.

---------

Co-authored-by: Atif Ali <atif@coder.com>
2025-07-17 16:23:42 -05:00
Dean Sheather 183a6ebbdf chore: add managed_agent_limit licensing feature (#18876)
Note that enforcement and checking usage will come in a future PR.

This feature is implemented differently than existing features in a few
ways.

It's highly recommended that reviewers read:
- This document which outlines the methods we could've used for license
enforcement:
https://www.notion.so/coderhq/AI-Agent-License-Enforcement-21ed579be59280c088b9c1dc5e364ee8
- Phase 0 of the actual RFC document:
https://www.notion.so/coderhq/Usage-based-Billing-AI-b-210d579be592800eb257de7eecd2d26d

### Multiple features in the license, a single feature in codersdk

Firstly, the feature is represented as a single feature in the codersdk
world, but is represented with multiple features in the license.

E.g. in the license you may have:

    {
      "features": {
        "managed_agent_limit_soft": 100,
        "managed_agent_limit_hard": 200
      }
    }

But the entitlements endpoint will return a single feature:

    {
      "features": {
        "managed_agent_limit": {
          "limit": 200,
          "soft_limit": 100
        }
      }
    }

This is required because of our rigid parsing that uses a
`map[string]int64` for features in the license. To avoid requiring all
customers to upgrade to use new licenses, the decision was made to just
use two features and merge them into one. Older Coder deployments will
parse this feature (from new licenses) as two separate features, but
it's not a problem because they don't get used anywhere obviously.

The reason we want to differentiate between a "soft" and "hard" limit is
so we can show admins how much of the usage is "included" vs. how much
they can use before they get hard cut-off.

### Usage period features will be compared and trump based on license
issuance time

The second major difference to other features is that "usage period"
features such as `managed_agent_limit` will now be primarily compared by
the `iat` (issued at) claim of the license they come from. This differs
from previous features. The reason this was done was so we could reduce
limits with newer licenses, which the current comparison code does not
allow for.

This effectively means if you have two active licenses:
- `iat`: 2025-07-14, `managed_agent_limit_soft`: 100,
`managed_agent_limit_hard`: 200
- `iat`: 2025-07-15, `managed_agent_limit_soft`: 50,
`managed_agent_limit_hard`: 100

Then the resulting `managed_agent_limit` entitlement will come from the
second license, even though the values are smaller than another valid
license. The existing comparison code would prefer the first license
even though it was issued earlier.

### Usage period features will count usage between the start and end
dates of the license

Existing limit features, like the user limit, just measure the current
usage value of the feature. The active user count is a gauge that goes
up and down, whereas agent usage can only be incremented, so it doesn't
make sense to use a continually incrementing counter forever and ever
for managed agents.

For managed agent limit, we count the usage between `nbf` (not before)
and `exp` (expires at) of the license that the entitlement comes from.
In the example above, we'd use the issued at date and expiry of the
second license as this date range.

This essentially means, when you get a new license, the usage resets to
zero.

The actual usage counting code will be implemented in a follow-up PR.

### Managed agent limit has a default entitlement value

Temporarily (until further notice), we will be providing licenses with
`feature_set` set to `premium` a default limit.
- Soft limit: `800 * user_limit`
- Hard limit: `1000 * user_limit`

"Enterprise" licenses do not get any default limit and are not entitled
to use the feature.

Unlicensed customers (e.g. OSS) will be permitted to use the feature as
much as they want without limits. This will be implemented when the
counting code is implemented in a follow-up PR.

Closes https://github.com/coder/internal/issues/760
2025-07-17 20:19:01 +10:00
Dean Sheather a1b87a67c6 fix: use client preferred URL for the default DERP (#18911)
The agentsdk currently does a remap of the DERP map to change the
EmbeddedRelay node's URL to match the agent's access URL.

This PR makes changes to the `workspacesdk` (used by clients like the
CLI) and `vpn` (used by Coder Desktop) to match this behavior.

This enables us the ability to try Coder clients in dogfood over a VPN
without changing the global access URL.
2025-07-17 20:17:44 +10:00
Danielle Maywood fb00cd2c1a fix(agent/agentcontainers): fix TestAPI/NoUpdaterLoopLogspam flake (#18905) 2025-07-17 10:59:02 +01:00
Atif Ali aae5fc243a chore(dogfood): add JetBrains fleet ide module (#18817)
We need to dogfood this new fleet module.

> [!NOTE]
> Only works if Coder CLI or Coder Desktop is installed
2025-07-17 10:17:38 +05:00
Edward Angert d304fb4f2d docs: hotfix mainline version number in docs/install/releases to 2.24.2 (#18906)
hotfix

[preview](https://coder.com/docs/@2-24-mainline/install/releases)

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-07-17 10:16:59 +05:00
Danielle Maywood bfb9aa464d fix(site): only attempt to watch when dev containers enabled (#18892) 2025-07-17 00:03:59 +01:00
Atif Ali ca6b5e3415 docs: update port forwarding docs to include Coder Desktop (#18870)
Noticed that Coder Desktop was missing from port-forwarding docs which
is kind of a big feature for Coder Connect.


[preview](https://coder.com/docs/@atif%2Fdesktop-ports/user-guides/workspace-access/port-forwarding)

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
Co-authored-by: Edward Angert <EdwardAngert@users.noreply.github.com>
2025-07-16 19:57:55 +00:00
Marcin Tojek b4c9725443 chore: update ascii logo (#18899)
This PR updates the ASCII logo in the HTML output.
2025-07-16 14:33:46 -03:00
ケイラ 0cdcf89069 chore: update CODEOWNERS (#18891) 2025-07-15 14:52:05 -06:00
ケイラ 9774264928 chore: add image style for kiro.svg (#18889)
The `whiteWithColor` style gives this image a more appropriate treatment
on light themes
2025-07-15 14:09:00 -06:00
blink-so[bot] e76115c67d chore: add kiro: protocol to external app whitelist (#18884)
Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: matifali <10648092+matifali@users.noreply.github.com>
2025-07-15 18:45:16 +00:00
Atif Ali 5758594ff7 chore: add kiro icon (#18881) 2025-07-15 23:41:21 +05:00
ケイラ 52c4b61391 feat: add search to parameter dropdowns (#18729) 2025-07-15 11:23:49 -06:00
Susana Ferreira dad033ee3d fix(site): exclude workspace schedule settings for prebuilt workspaces (#18826)
## Description

This PR updates the UI to avoid rendering workspace schedule settings
(autostop, autostart, etc.) for prebuilt workspaces. Instead, it
displays an informational message with a link to the relevant
documentation.

## Changes

* Introduce `IsPrebuild` parameter to `convertWorkspace` to indicate
whether the workspace is a prebuild.
* Prevent the Workspace Schedule settings form from rendering in the UI
for prebuilt workspaces.
* Display an info alert with a link to documentation when viewing a
prebuilt workspace.

<img width="2980" height="864" alt="Screenshot 2025-07-10 at 13 16 13"
src="https://github.com/user-attachments/assets/5f831c21-50bb-4e05-beea-dbeb930ddff8"
/>


Relates with: https://github.com/coder/coder/pull/18762

---------

Co-authored-by: BrunoQuaresma <bruno_nonato_quaresma@hotmail.com>
2025-07-15 14:11:04 +01:00
Jakub Domeracki e4d3453e2b feat: publish CLI binaries and detached signatures to releases.coder.com (#18874)
Starting with version `2.24.X `, Coder CLI binaries & corresponding
detached signatures will get published to the GCS bucket
releases.coder.com.
2025-07-15 13:15:58 +02:00
Danielle Maywood 089f9603ed fix(site): only attempt to watch containers when agent connected (#18873)
This PR ensures we do not attempt to call `containers/watch` on the
agent _before_ it is connected.
2025-07-15 11:16:14 +01:00
dependabot[bot] 43546336c9 chore: bump github.com/gohugoio/hugo from 0.147.0 to 0.148.1 (#18852)
Bumps [github.com/gohugoio/hugo](https://github.com/gohugoio/hugo) from
0.147.0 to 0.148.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/gohugoio/hugo/releases">github.com/gohugoio/hugo's
releases</a>.</em></p>
<blockquote>
<h2>v0.148.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix assignment to entry in nil map 6f42cfbc9 <a
href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13853">#13853</a></li>
<li>deps: Downgrade github.com/niklasfasching/go-org v1.9.0 =&gt; v1.8.0
a84beee42 <a href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13846">#13846</a></li>
</ul>
<h2>v0.148.0</h2>
<blockquote>
<p>[!NOTE]<br />
There's some minor breaking changes in this release. Please <a
href="https://discourse.gohugo.io/t/breaking-changes-in-v0-148-0/55257">read
this</a> thread for more information.</p>
</blockquote>
<h2>Note</h2>
<ul>
<li>Fix some uglyURLs issues for home, section and taxonomy kind (note)
b8ba33ca9 <a href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/4428">#4428</a>
<a
href="https://redirect.github.com/gohugoio/hugo/issues/7497">#7497</a></li>
<li>Fix branch paths when OutputFormat.Path is configured (note)
f967212b7 <a href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13829">#13829</a></li>
</ul>
<h2>Bug fixes</h2>
<ul>
<li>resources/page: Allow full datetime prefix in filenames 1b4c42366 <a
href="https://github.com/jmooring"><code>@​jmooring</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13830">#13830</a></li>
</ul>
<h2>Improvements</h2>
<ul>
<li>Add Ancestors (plural) method to GitInfo, rename Ancestor field to
Parent 3e2f1cdfd <a href="https://github.com/bep"><code>@​bep</code></a>
<a
href="https://redirect.github.com/gohugoio/hugo/issues/13839">#13839</a></li>
<li>Allow creating home pages from content adapters bba6996e1 <a
href="https://github.com/bep"><code>@​bep</code></a></li>
<li>Remove the internal GitInfo type and make Page.GitInf() return a
pointer 90d397b14 <a
href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/5693">#5693</a></li>
<li>source: Expose Ancestor in GitInfo 61e6c730d <a
href="https://github.com/jenbroek"><code>@​jenbroek</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/5693">#5693</a></li>
<li>config: Increase test coverage 266d46dcc <a
href="https://github.com/pixel365"><code>@​pixel365</code></a></li>
<li>markup/goldmark: Change link and image render hook enablement to
enums 84b31721b <a
href="https://github.com/jmooring"><code>@​jmooring</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13535">#13535</a></li>
<li>hugolib: Honor implicit &quot;page&quot; type during template
selection cfc8d315b <a
href="https://github.com/jmooring"><code>@​jmooring</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13826">#13826</a></li>
<li>deploy: walkLocal worker pool for performance dd6e2c872 <a
href="https://github.com/davidejones"><code>@​davidejones</code></a></li>
</ul>
<h2>Dependency Updates</h2>
<ul>
<li>build(deps): bump github.com/evanw/esbuild from 0.25.5 to 0.25.6
0a5b87028 <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]</li>
<li>build(deps): bump github.com/olekukonko/tablewriter from 1.0.7 to
1.0.8 94e2c276a <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]</li>
<li>build(deps): bump github.com/niklasfasching/go-org from 1.8.0 to
1.9.0 e77b2ad8f <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]</li>
<li>build(deps): bump github.com/alecthomas/chroma/v2 from 2.18.0 to
2.19.0 9487acf6a <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]</li>
<li>build(deps): bump golang.org/x/tools from 0.32.0 to 0.34.0 1e9a0b93e
<a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]</li>
</ul>
<h2>v0.147.9</h2>
<h2>Improvements and fixes</h2>
<ul>
<li>Remove WARN with false negatives 6a4a3ab8f <a
href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13806">#13806</a></li>
<li>resources/page: Make sure a map is always initialized 36f6f987a <a
href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13810">#13810</a></li>
<li>tpl/tplimpl: Copy embedded HTML table render hook to each output
format 18a9ca7d7 <a
href="https://github.com/jmooring"><code>@​jmooring</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13351">#13351</a></li>
<li>tpl/tplimpl: Change resources.GetRemote errors to suppressible
warnings b6c8dfa9d <a
href="https://github.com/jmooring"><code>@​jmooring</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13803">#13803</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/gohugoio/hugo/commit/98ba786f2f5dca0866f47ab79f394370bcb77d2f"><code>98ba786</code></a>
releaser: Bump versions for release of 0.148.1</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/6f42cfbc9b80a6e1639e3c0661f530e84590fa6a"><code>6f42cfb</code></a>
Fix assignment to entry in nil map</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/a84beee429d3b0297b1a97b191d641154f7c2e81"><code>a84beee</code></a>
deps: Downgrade github.com/niklasfasching/go-org v1.9.0 =&gt;
v1.8.0</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/65893efd8d1f52d50bd589d84a4c9031d96e7d8d"><code>65893ef</code></a>
releaser: Prepare repository for 0.149.0-DEV</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/c0d9bebacc6bf42a91a74d8bb0de7bc775c8e573"><code>c0d9beb</code></a>
releaser: Bump versions for release of 0.148.0</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/3e2f1cdfdbeb8a1470b216bfb28b78ab14b8c0f4"><code>3e2f1cd</code></a>
Add Ancestors (plural) method to GitInfo, rename Ancestor field to
Parent</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/0a5b870281a47d1045443c081968fc96f8d5e06f"><code>0a5b870</code></a>
build(deps): bump github.com/evanw/esbuild from 0.25.5 to 0.25.6</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/bba6996e15570e542193a043054de3b00cd96e18"><code>bba6996</code></a>
Allow creating home pages from content adapters</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/94e2c276a8592488eedc07e259147425ddf91c2b"><code>94e2c27</code></a>
build(deps): bump github.com/olekukonko/tablewriter from 1.0.7 to
1.0.8</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/90d397b14299b1cb03a6b3a3e9e1ce6dfc36cdad"><code>90d397b</code></a>
Remove the internal GitInfo type and make Page.GitInf() return a
pointer</li>
<li>Additional commits viewable in <a
href="https://github.com/gohugoio/hugo/compare/v0.147.0...v0.148.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/gohugoio/hugo&package-manager=go_modules&previous-version=0.147.0&new-version=0.148.1)](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>
2025-07-15 09:27:09 +00:00
Susana Ferreira f1eec2d267 fix(cli): scope context per subtest to fix flake test in prebuilt workspace delete (#18872)
## Description

This PR fixes a flaky test in
`TestDelete/Prebuilt_workspace_delete_permissions`:
https://github.com/coder/internal/issues/764

Previously, all subtests used the same context created at the top level.
Since the subtests run in parallel, they could run for too long and
cause the shared context to expire. This sometimes led to context
deadline exceeded errors, especially during the `testutil.Eventually`
check for running prebuilt workspaces.

The fix is to create a fresh context per subtest, ensuring they are
isolated and not prematurely cancelled due to other subtests' durations.
2025-07-15 10:21:11 +01:00
dependabot[bot] c643214b47 chore: bump google.golang.org/api from 0.231.0 to 0.241.0 (#18849)
Bumps
[google.golang.org/api](https://github.com/googleapis/google-api-go-client)
from 0.231.0 to 0.241.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-api-go-client/releases">google.golang.org/api's
releases</a>.</em></p>
<blockquote>
<h2>v0.241.0</h2>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.240.0...v0.241.0">0.241.0</a>
(2025-07-09)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3219">#3219</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/987e4abe1e113ac37f42f378bb05eac44c65e448">987e4ab</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3221">#3221</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/7e31abbe694798ee20645793367f57ecf9f3740b">7e31abb</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3222">#3222</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/3346ebb0706a0fce703f5ada0182522b7a1d6dc8">3346ebb</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3223">#3223</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/f94c92cafe32e768ec48307db9924d8b746b3d25">f94c92c</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3224">#3224</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/3f1f756570d556a0e26f7594bcc3353eabc0a5ea">3f1f756</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3225">#3225</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/8799cd8e4cadab9c6dad2c63a8c199cd1e0e3f2e">8799cd8</a>)</li>
</ul>
<h2>v0.240.0</h2>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.239.0...v0.240.0">0.240.0</a>
(2025-07-02)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3210">#3210</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/c0efdb50d507feb4340e7b1ad2be61eaa9960ba7">c0efdb5</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3212">#3212</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/c699558a9c2b574bdda5d9d697c7fadaeb65b3c1">c699558</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3214">#3214</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/7b435988338692bdfcae2c174f41a8bb71c4abb1">7b43598</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3215">#3215</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/22e2c3806882276b2437288c2ebf84204cb7c077">22e2c38</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3216">#3216</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/e8c35043996ce513a5cd829da72a79c1c46206ad">e8c3504</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3217">#3217</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/604190c29e745ca177927b465d3855008b1e1902">604190c</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3218">#3218</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/0a46af7bb3db597ef1d459191b3bc55345c61692">0a46af7</a>)</li>
</ul>
<h2>v0.239.0</h2>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.238.0...v0.239.0">0.239.0</a>
(2025-06-25)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3199">#3199</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/2bdd042ac9a9b4115ea14239f4ffc6d947b3ead8">2bdd042</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3201">#3201</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/8eff56f43f278eb7072da807eb492969d9b6ec00">8eff56f</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3202">#3202</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/f7c299e9c00588b68e02e6fa464ab92a7d7f70d4">f7c299e</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3203">#3203</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/459c5a8db5a2262fa9d4fd5031f8bd81569fe751">459c5a8</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3205">#3205</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/ca610d5390bb286d5f815ee8d296a7cdf7dd4baa">ca610d5</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3206">#3206</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/98b739881e1fd09b2f2b7c0122b675fb02625b7c">98b7398</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3207">#3207</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/71fe287d9c34180ed81ede37531b37b23a7c11dc">71fe287</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3209">#3209</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/27d1aa43d1fb592c0273a5617af68d397d1c9ac7">27d1aa4</a>)</li>
</ul>
<h2>v0.238.0</h2>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.237.0...v0.238.0">0.238.0</a>
(2025-06-17)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3192">#3192</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/3ad311895f95da734942ad4bc527f32412d1ad4f">3ad3118</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3196">#3196</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/8cb55ce5040dbcc0de4436f1d47de876bebf607a">8cb55ce</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md">google.golang.org/api's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.240.0...v0.241.0">0.241.0</a>
(2025-07-09)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3219">#3219</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/987e4abe1e113ac37f42f378bb05eac44c65e448">987e4ab</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3221">#3221</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/7e31abbe694798ee20645793367f57ecf9f3740b">7e31abb</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3222">#3222</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/3346ebb0706a0fce703f5ada0182522b7a1d6dc8">3346ebb</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3223">#3223</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/f94c92cafe32e768ec48307db9924d8b746b3d25">f94c92c</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3224">#3224</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/3f1f756570d556a0e26f7594bcc3353eabc0a5ea">3f1f756</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3225">#3225</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/8799cd8e4cadab9c6dad2c63a8c199cd1e0e3f2e">8799cd8</a>)</li>
</ul>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.239.0...v0.240.0">0.240.0</a>
(2025-07-02)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3210">#3210</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/c0efdb50d507feb4340e7b1ad2be61eaa9960ba7">c0efdb5</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3212">#3212</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/c699558a9c2b574bdda5d9d697c7fadaeb65b3c1">c699558</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3214">#3214</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/7b435988338692bdfcae2c174f41a8bb71c4abb1">7b43598</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3215">#3215</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/22e2c3806882276b2437288c2ebf84204cb7c077">22e2c38</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3216">#3216</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/e8c35043996ce513a5cd829da72a79c1c46206ad">e8c3504</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3217">#3217</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/604190c29e745ca177927b465d3855008b1e1902">604190c</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3218">#3218</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/0a46af7bb3db597ef1d459191b3bc55345c61692">0a46af7</a>)</li>
</ul>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.238.0...v0.239.0">0.239.0</a>
(2025-06-25)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3199">#3199</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/2bdd042ac9a9b4115ea14239f4ffc6d947b3ead8">2bdd042</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3201">#3201</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/8eff56f43f278eb7072da807eb492969d9b6ec00">8eff56f</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3202">#3202</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/f7c299e9c00588b68e02e6fa464ab92a7d7f70d4">f7c299e</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3203">#3203</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/459c5a8db5a2262fa9d4fd5031f8bd81569fe751">459c5a8</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3205">#3205</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/ca610d5390bb286d5f815ee8d296a7cdf7dd4baa">ca610d5</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3206">#3206</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/98b739881e1fd09b2f2b7c0122b675fb02625b7c">98b7398</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3207">#3207</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/71fe287d9c34180ed81ede37531b37b23a7c11dc">71fe287</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3209">#3209</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/27d1aa43d1fb592c0273a5617af68d397d1c9ac7">27d1aa4</a>)</li>
</ul>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.237.0...v0.238.0">0.238.0</a>
(2025-06-17)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3192">#3192</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/3ad311895f95da734942ad4bc527f32412d1ad4f">3ad3118</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3196">#3196</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/8cb55ce5040dbcc0de4436f1d47de876bebf607a">8cb55ce</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3197">#3197</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/98994c400492542ca9f7d89e608dccbdb89caa11">98994c4</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3198">#3198</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/582459736e746998eecb609b0d23ddce778d5d8c">5824597</a>)</li>
</ul>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.236.0...v0.237.0">0.237.0</a>
(2025-06-12)</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/f942bc9f863a4851f9d67e0aea8ce7fcafb635e2"><code>f942bc9</code></a>
chore(main): release 0.241.0 (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3220">#3220</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/8799cd8e4cadab9c6dad2c63a8c199cd1e0e3f2e"><code>8799cd8</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3225">#3225</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/3f1f756570d556a0e26f7594bcc3353eabc0a5ea"><code>3f1f756</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3224">#3224</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/f94c92cafe32e768ec48307db9924d8b746b3d25"><code>f94c92c</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3223">#3223</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/3346ebb0706a0fce703f5ada0182522b7a1d6dc8"><code>3346ebb</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3222">#3222</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/7e31abbe694798ee20645793367f57ecf9f3740b"><code>7e31abb</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3221">#3221</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/987e4abe1e113ac37f42f378bb05eac44c65e448"><code>987e4ab</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3219">#3219</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/9f7dd0d6600833ed29eb7dcefe7e9ad1f203ba36"><code>9f7dd0d</code></a>
chore(main): release 0.240.0 (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3211">#3211</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/0a46af7bb3db597ef1d459191b3bc55345c61692"><code>0a46af7</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3218">#3218</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/604190c29e745ca177927b465d3855008b1e1902"><code>604190c</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3217">#3217</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/googleapis/google-api-go-client/compare/v0.231.0...v0.241.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/api&package-manager=go_modules&previous-version=0.231.0&new-version=0.241.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>
2025-07-15 09:16:22 +00:00
dependabot[bot] bfdacae286 chore: bump the x group across 1 directory with 9 updates (#18851)
Bumps the x group with 4 updates in the / directory:
[golang.org/x/crypto](https://github.com/golang/crypto),
[golang.org/x/mod](https://github.com/golang/mod),
[golang.org/x/net](https://github.com/golang/net) and
[golang.org/x/oauth2](https://github.com/golang/oauth2).

Updates `golang.org/x/crypto` from 0.39.0 to 0.40.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/crypto/commit/459a9db11b9c43bb1d61722bfd371751d6de05c9"><code>459a9db</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="https://github.com/golang/crypto/commit/74e709ad8a8068445173aa5f3e8d7c89caf510c3"><code>74e709a</code></a>
ssh: add AlgorithmNegotiationError</li>
<li><a
href="https://github.com/golang/crypto/commit/b3790b8d914304c8187dc2c86800101c329d77cd"><code>b3790b8</code></a>
acme: fix TLSALPN01ChallengeCert for IP address identifiers</li>
<li><a
href="https://github.com/golang/crypto/commit/1dc4269656dd23b2c4e71c51b8af6bc2b63eecb7"><code>1dc4269</code></a>
acme: add Pebble integration testing</li>
<li><a
href="https://github.com/golang/crypto/commit/97bf78725562ce22e18036873215f2203b3e0e1e"><code>97bf787</code></a>
blake2b: implement hash.XOF</li>
<li><a
href="https://github.com/golang/crypto/commit/952517d181d424f6c77f7460bf728205cb048411"><code>952517d</code></a>
x509roots/fallback: update bundle</li>
<li><a
href="https://github.com/golang/crypto/commit/c6fce028266aa1271946a7dfde94cd71cf077d5e"><code>c6fce02</code></a>
ssh: refuse to parse certificates that use a certificate as signing
key</li>
<li><a
href="https://github.com/golang/crypto/commit/0ae49b8145643036e0e6c266cf4edc0f543ea9e0"><code>0ae49b8</code></a>
ssh: reject certificate keys used as signature keys for SSH certs</li>
<li>See full diff in <a
href="https://github.com/golang/crypto/compare/v0.39.0...v0.40.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `golang.org/x/mod` from 0.25.0 to 0.26.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/mod/commit/ea04085b103002db3b0d02d6ebbd97a0ffa29202"><code>ea04085</code></a>
go.mod: update golang.org/x dependencies</li>
<li>See full diff in <a
href="https://github.com/golang/mod/compare/v0.25.0...v0.26.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `golang.org/x/net` from 0.41.0 to 0.42.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/net/commit/76358aa57e0c5fa267fe08795631a173d0cec833"><code>76358aa</code></a>
go.mod: update golang.org/x dependencies</li>
<li>See full diff in <a
href="https://github.com/golang/net/compare/v0.41.0...v0.42.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `golang.org/x/oauth2` from 0.29.0 to 0.30.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/oauth2/commit/cf1431934151b3a93e0b3286eb6798ca08ea3770"><code>cf14319</code></a>
oauth2: fix expiration time window check</li>
<li><a
href="https://github.com/golang/oauth2/commit/32d34ef364e670a650fe59267b92301ff7ed08f1"><code>32d34ef</code></a>
internal: include clientID in auth style cache key</li>
<li><a
href="https://github.com/golang/oauth2/commit/2d34e3091be3f4b4700842fb663dad98a10ddfb6"><code>2d34e30</code></a>
oauth2: replace a magic number with AuthStyleUnknown</li>
<li><a
href="https://github.com/golang/oauth2/commit/696f7b31289a98558822be146698b7834e477e63"><code>696f7b3</code></a>
all: modernize with doc links and any</li>
<li><a
href="https://github.com/golang/oauth2/commit/471209bbe29fc1e3bf8d4ca3ca89d67f8817d521"><code>471209b</code></a>
oauth2: drop dependency on go-cmp</li>
<li><a
href="https://github.com/golang/oauth2/commit/6968da209b8fd816452d22ad1b4faca197a5b974"><code>6968da2</code></a>
oauth2: sync Token.ExpiresIn from internal Token</li>
<li><a
href="https://github.com/golang/oauth2/commit/d2c4e0a6256426212864554628e234ebe6005347"><code>d2c4e0a</code></a>
oauth2: context instead of golang.org/x/net/context in doc</li>
<li><a
href="https://github.com/golang/oauth2/commit/883dc3c9d87d538c301ebff2ccdcc8b6a0b92890"><code>883dc3c</code></a>
endpoints: add various endpoints from stale CLs</li>
<li><a
href="https://github.com/golang/oauth2/commit/1c06e8705ef848db9c7553a78b630b9b9f138a87"><code>1c06e87</code></a>
all: make use of oauth.Token.ExpiresIn</li>
<li>See full diff in <a
href="https://github.com/golang/oauth2/compare/v0.29.0...v0.30.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `golang.org/x/sync` from 0.15.0 to 0.16.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/sync/commit/7fad2c9213e0821bd78435a9c106806f2fc383f1"><code>7fad2c9</code></a>
errgroup: revert propagation of panics</li>
<li>See full diff in <a
href="https://github.com/golang/sync/compare/v0.15.0...v0.16.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `golang.org/x/sys` from 0.33.0 to 0.34.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/sys/commit/751c3c6ac2a644645976e8e7f3db0b75c87d32c6"><code>751c3c6</code></a>
unix: add missing NFT_PAYLOAD_* consts on linux</li>
<li><a
href="https://github.com/golang/sys/commit/0c740cc0f8b112e19e255caefb622a53779c0481"><code>0c740cc</code></a>
unix: update Go to 1.24.3</li>
<li><a
href="https://github.com/golang/sys/commit/d62d31c6166a69390ea553149bf921e215216610"><code>d62d31c</code></a>
unix: update Linux constants and types to v6.14</li>
<li>See full diff in <a
href="https://github.com/golang/sys/compare/v0.33.0...v0.34.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `golang.org/x/term` from 0.32.0 to 0.33.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/term/commit/30da5dd58fc835bf6704fa7464ac3d23202d8685"><code>30da5dd</code></a>
go.mod: update golang.org/x dependencies</li>
<li>See full diff in <a
href="https://github.com/golang/term/compare/v0.32.0...v0.33.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `golang.org/x/text` from 0.26.0 to 0.27.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/text/commit/b6d26456dd3ff554a56f10b1e388db0f8ca862d1"><code>b6d2645</code></a>
go.mod: update golang.org/x dependencies</li>
<li>See full diff in <a
href="https://github.com/golang/text/compare/v0.26.0...v0.27.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `golang.org/x/tools` from 0.33.0 to 0.34.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/tools/commit/578c1213983a83e6411536ddf6bbf3a1faf97aea"><code>578c121</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="https://github.com/golang/tools/commit/f114dcf97d4f35feb86030bb9e1c5c8fc6fd8942"><code>f114dcf</code></a>
gopls/internal/protocol: refine DocumentURI Clean method and its
usages</li>
<li><a
href="https://github.com/golang/tools/commit/82ee0fd1228b85b95daadd1901e83a9200d661e6"><code>82ee0fd</code></a>
internal/mcp: change paginateList to a generic helper</li>
<li><a
href="https://github.com/golang/tools/commit/64bfecc32e163d2684a85b73472919e02da50180"><code>64bfecc</code></a>
gopls/internal/golang: fix extract bug with anon functions</li>
<li><a
href="https://github.com/golang/tools/commit/4546fbd0b20190ede82382b293ae4440923ecaea"><code>4546fbd</code></a>
internal/mcp: unify json tag parsing</li>
<li><a
href="https://github.com/golang/tools/commit/82473ce934847055bec96f8a96e4d1fc38ecefa9"><code>82473ce</code></a>
gopls/doc/release: tweak v0.19</li>
<li><a
href="https://github.com/golang/tools/commit/f3c581ff0cb8b4b87129f04094005c4b0f962bf9"><code>f3c581f</code></a>
gopls/internal/protocol: add DocumentURI.Base accessor</li>
<li><a
href="https://github.com/golang/tools/commit/d9bacab54dfed6ac3f871f422bb0b2cb5eb5c428"><code>d9bacab</code></a>
gopls/internal/server: improve &quot;editing generated file&quot;
warning</li>
<li><a
href="https://github.com/golang/tools/commit/1afeefa8150f171e0a8f0948015513b31d59d2f3"><code>1afeefa</code></a>
internal/mcp: unexport FileResourceHandler</li>
<li><a
href="https://github.com/golang/tools/commit/33d59880f345d37e4262f5f8e504ddfb6818266b"><code>33d5988</code></a>
gopls/internal/server: Organize Imports of generated files</li>
<li>Additional commits viewable in <a
href="https://github.com/golang/tools/compare/v0.33.0...v0.34.0">compare
view</a></li>
</ul>
</details>
<br />


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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ethan Dickson <ethan@coder.com>
2025-07-15 09:04:20 +00:00
Danielle Maywood bd3d0ea482 fix(agent/agentcontainers): fix TestAPI/IgnoreCustomization flake (#18863) 2025-07-15 10:01:04 +01:00
blink-so[bot] 87e5365f79 docs: add cloud-specific database instance recommendations (#18862)
Enhances the Performance efficiency section in the validated
architectures documentation with specific instance type recommendations
for AWS, Azure, and GCP.

**Changes:**
- Added recommended instance types for small, medium, and large
deployments across all three major cloud providers
- Included guidance on avoiding burstable instances (t-family, B-series)
for production workloads
- Added note about CPU baseline limitations for burstable instances

This addresses customer questions about appropriate database instance
sizing.

---------

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: dannykopping <373762+dannykopping@users.noreply.github.com>
Co-authored-by: Danny Kopping <dannykopping@gmail.com>
2025-07-15 09:53:34 +01:00
Ethan de4a270316 docs: improve audit logs copy (#18807)
Many of the issues with the copy on #18739 were because I blindly copied from the audit logs page. This PR adds Edward's copy suggestions from that PR to the audit logs page.

[preview](https://coder.com/docs/@ethan-improve-audit-logs-copy/admin/security/audit-logs)

I've included this in the PR stack, as the previous PR modifies the auto-gen docs for audit logs.
2025-07-15 16:14:30 +10:00
Ethan ef807e41ce chore: mark workspace apps and workspace agents as unaudited (#18761)
The main goal of this PR is to remove Workspace Apps and Workspace Agents from the auto-generated audit log documentation, that incorrectly claims they are audited resources (no longer true with the addition of the connection log).

Though I believe we haven't touched any codepaths for returning audit logs, this PR also adds a test that ensures we continue to return *existing* connection, disconnect and open events correctly from the audit log API.
2025-07-15 16:08:42 +10:00
Ethan 6b17aee425 docs: add connection logs page (#18739)
This is the final PR for moving connection logs out of the audit log and into the new connection logs page.

This PR documents the feature.

[preview](https://coder.com/docs/@ethan%2Fdocs-add-connection-logs/admin/monitoring/connection-logs)
2025-07-15 15:52:41 +10:00
Ethan f42de9fe12 chore!: delete old connection events from audit log (#18735)
### Breaking change (changelog note):
>With new connection events appearing in the Connection Log, connection events older than 90 days will now be deleted from the Audit Log. If you require this legacy data, we recommend querying it from the REST API or making a backup of the database/these events before upgrading your Coder deployment. Please see the PR for details on what exactly will be deleted. 
Of note is that there are currently no plans to delete connection events from the Connection Log.


### Context

This is the fifth PR for moving connection events out of the audit log.

In previous PRs:
- **New** connection logs have been routed to the `connection_logs` table. They will *not* appear in the audit log.
- These new connection logs are served from the new `/api/v2/connectionlog` endpoint.

In this PR:
- We'll now clean existing connection events out of the audit log, if they are older than 90 days, We do this in batches of 1000, every 10 minutes.

The criteria for deletion is simple:
```
WHERE
(
     action = 'connect'
     OR action = 'disconnect'
     OR action = 'open'
     OR action = 'close'
)
AND "time" < @before_time::timestamp with time zone
```
where `@before_time` is currently configured to 90 days in the past.


Future PRs:
- Write documentation for the endpoint / feature
2025-07-15 15:45:36 +10:00
Ethan b5260d5699 feat(site): add connection log page (#18708)
This is the fourth PR for moving connection events out of the audit log.

This PR adds `/connectionlog` to the frontend. This page is identical in structure to the audit log, but with different filters and contents.

The connection log lists sessions, and the time they start. If we support tracking the end time of a session, and we've received a disconnect event for that session, the end timestamp is also included.
       
Demo:


https://github.com/user-attachments/assets/e0fff799-0ed6-45f7-a8c0-237839659ef9



<img width="346" alt="image" src="https://github.com/user-attachments/assets/6de29945-55c2-4fe5-9a4f-d42e476ded25" />
<img width="184" alt="image" src="https://github.com/user-attachments/assets/e83234bc-4d9d-4f71-b668-9256a600659c" />


Since the styling is identical to that of the audit log, I've continued to use MUI table components. When the audit log is migrated off MUI/restyled, this table can be too, relatively easily.

Future PRs:
- Write a query to delete old events from the audit log, call it from dbpurge.
- Write documentation for the endpoint / feature
2025-07-15 15:11:31 +10:00
Cian Johnston 1ee6b8d5b1 chore: fix flake in TestWorkspaceBuildsProvisionerState (#18839)
Fixes https://github.com/coder/internal/issues/761
2025-07-15 15:07:13 +10:00
Ethan 7c077d39c5 chore: populate connectionlog count using a separate query (#18629)
This is the third PR for moving connection events out of the audit log.

This PR populates `count` on `ConnectionLogResponse` using a separate query, to preemptively mitigate the issue described in #17689. It's structurally identical to a portion of https://github.com/coder/coder/pull/18600, but for the connection log instead of the audit log.
       
Future PRs:
- Implement a table in the Web UI for viewing connection logs.
- Write a query to delete old events from the audit log, call it from dbpurge.
- Write documentation for the endpoint / feature
2025-07-15 15:03:30 +10:00
Ethan 7a339a1ffe feat: add connectionlogs API (#18628)
This is the second PR for moving connection events out of the audit log.

This PR:
- Adds the `/api/v2/connectionlog` endpoint
- Adds filtering for `GetAuthorizedConnectionLogsOffset` and thus the endpoint. 
There's quite a few, but I was aiming for feature parity with the audit log.
  1. `organization:<id|name>`
  2. `workspace_owner:<username>`
  3. `workspace_owner_email:<email>`
  4. `type:<ssh|vscode|jetbrains|reconnecting_pty|workspace_app|port_forwarding>`
  5. `username:<username>` 
     - Only includes web-based connection events (workspace apps, web port forwarding) as only those include user metadata.
  6. `user_email:<email>`
  7. `connected_after:<time>`
  8. `connected_before:<time>`
  9. `workspace_id:<id>`
  10. `connection_id:<id>`
      - If you have one snapshot of the connection log, and some sessions are ongoing in that snapshot, you could use this filter to check if they've been closed since.
  11. `status:<connected|disconnected>`
       - If `connected` only sessions with a null `close_time` are returned, if `disconnected`, only those with a non-null `close_time`. If filter is omitted, both are returned.
       
Future PRs:
- Populate `count` on `ConnectionLogResponse` using a seperate query (to preemptively mitigate the issue described in #17689)
- Implement a table in the Web UI for viewing connection logs.
- Write a query to delete old events from the audit log, call it from dbpurge.
- Write documentation for the endpoint / feature (including these filters)
2025-07-15 14:55:34 +10:00
Ethan 08e17a07fc chore!: route connection logs to new table (#18340)
### Breaking Change (changelog note):
> User connections to workspaces, and the opening of workspace apps or ports will no longer create entries in the audit log. Those events will now be included in the 'Connection Log'.
Please see the 'Connection Log' page in the dashboard, and the Connection Log [documentation](https://coder.com/docs/admin/monitoring/connection-logs) for details. Those with permission to view the Audit Log will also be able to view the Connection Log. The new Connection Log has the same licensing restrictions as the Audit Log, and requires a Premium Coder deployment.

### Context

This is the first PR of a few for moving connection events out of the audit log, and into a new database table and web UI page called the 'Connection Log'.

This PR:
- Creates the new table
- Adds and tests queries for inserting and reading, including reading with an RBAC filter.
- Implements the corresponding RBAC changes, such that anyone who can view the audit log can read from the table
- Implements, under the enterprise package, a `ConnectionLogger` abstraction to replace the `Auditor` abstraction for these logs. (No-op'd in AGPL, like the `Auditor`)
- Routes SSH connection and Workspace App events into the new `ConnectionLogger`
- Updates all existing tests to check the values of the `ConnectionLogger` instead of the `Auditor`.

Future PRs:
- Add filtering to the query
- Add an enterprise endpoint to query the new table
- Write a query to delete old events from the audit log, call it from dbpurge.
- Implement a table in the Web UI for viewing connection logs.


> [!NOTE]
> The PRs in this stack obviously won't be (completely) atomic. Whilst they'll each pass CI, the stack is designed to be merged all at once. I'm splitting them up for the sake of those reviewing, and so changes can be reviewed as early as possible.  Despite this, it's really hard to make this PR any smaller than it already is. I'll be keeping it in draft until it's actually ready to merge.
2025-07-15 14:36:06 +10:00
Danielle Maywood 43b0bb7f61 feat(site): use websocket connection for devcontainer updates (#18808)
Instead of polling every 10 seconds, we instead use a WebSocket
connection for more timely updates.
2025-07-14 21:35:35 +01:00
Edward Angert 7cf3263fbd docs: document issue with macos coder desktop behind vpn (#18855)
docs for https://github.com/coder/coder-desktop-macos/issues/201 and
https://github.com/coder/coder-desktop-windows/issues/147

> If the logged in Coder deployment requires a VPN to connect, Coder
Connect can't establish communication through the VPN,
> and will time out.


[preview](https://coder.com/docs/@201-desktop-mac-vpn/user-guides/desktop)

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
Co-authored-by: Dean Sheather <dean@deansheather.com>
2025-07-14 12:33:48 -04:00
Spike Curtis 4980f18022 ci: remove retries/reruns (#18788)
Removes retries / reruns from our CI as they are masking flaky tests
that don't get fixed.

Also limits the Windows and macOS postgresql tests to the CLI and Agent
for now, since we don't officially support coderd on these platforms and
they are particularly flaky.
2025-07-14 17:40:33 +02:00
dependabot[bot] 2e34a1e404 chore: bump github.com/hashicorp/hcl/v2 from 2.23.0 to 2.24.0 (#18854)
Bumps [github.com/hashicorp/hcl/v2](https://github.com/hashicorp/hcl)
from 2.23.0 to 2.24.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/hashicorp/hcl/releases">github.com/hashicorp/hcl/v2's
releases</a>.</em></p>
<blockquote>
<h2>v2.24.0</h2>
<h3>Enhancements</h3>
<ul>
<li>Add support for decoding block and attribute source ranges when
using <code>gohcl</code>. (<a
href="https://redirect.github.com/hashicorp/hcl/pull/703">#703</a>)</li>
<li>hclsyntax: Detect and reject invalid nested splat result. (<a
href="https://redirect.github.com/hashicorp/hcl/pull/724">#724</a>)</li>
</ul>
<h3>Bugs Fixed</h3>
<ul>
<li>Correct handling of unknown objects in Index function. (<a
href="https://redirect.github.com/hashicorp/hcl/pull/763">#763</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/hashicorp/hcl/blob/main/CHANGELOG.md">github.com/hashicorp/hcl/v2's
changelog</a>.</em></p>
<blockquote>
<h2>v2.24.0 (July 7, 2025)</h2>
<h3>Enhancements</h3>
<ul>
<li>Add support for decoding block and attribute source ranges when
using <code>gohcl</code>. (<a
href="https://redirect.github.com/hashicorp/hcl/pull/703">#703</a>)</li>
<li>hclsyntax: Detect and reject invalid nested splat result. (<a
href="https://redirect.github.com/hashicorp/hcl/pull/724">#724</a>)</li>
</ul>
<h3>Bugs Fixed</h3>
<ul>
<li>Correct handling of unknown objects in Index function. (<a
href="https://redirect.github.com/hashicorp/hcl/pull/763">#763</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/hashicorp/hcl/commit/6b5068090eef06b1f127f61529db5ba0be7ed343"><code>6b50680</code></a>
Update CHANGELOG.md (<a
href="https://redirect.github.com/hashicorp/hcl/issues/764">#764</a>)</li>
<li><a
href="https://github.com/hashicorp/hcl/commit/77ef278eaae165adbe82d39a1b8e7707ad7d501a"><code>77ef278</code></a>
ops: handle unknown objects correctly when looking up by index (<a
href="https://redirect.github.com/hashicorp/hcl/issues/763">#763</a>)</li>
<li><a
href="https://github.com/hashicorp/hcl/commit/dfa124f3c93ff1764fda03702a7a9aa8c9db48d8"><code>dfa124f</code></a>
[Compliance] - PR Template Changes Required (<a
href="https://redirect.github.com/hashicorp/hcl/issues/761">#761</a>)</li>
<li><a
href="https://github.com/hashicorp/hcl/commit/6b5c4c2bac7140d1f676d294e99ff5d696b8fbf9"><code>6b5c4c2</code></a>
fix errors thrown by errcheck linter (<a
href="https://redirect.github.com/hashicorp/hcl/issues/755">#755</a>)</li>
<li><a
href="https://github.com/hashicorp/hcl/commit/61bd79dedd738d45edd16f6eb0ca405d0484a7b7"><code>61bd79d</code></a>
suppress and fix lint errors by unused (<a
href="https://redirect.github.com/hashicorp/hcl/issues/754">#754</a>)</li>
<li><a
href="https://github.com/hashicorp/hcl/commit/8b8cb9c9fa85c1f91083ee866c0ca3d1b910404b"><code>8b8cb9c</code></a>
build(deps): bump golangci/golangci-lint-action</li>
<li><a
href="https://github.com/hashicorp/hcl/commit/aa4e44796409371ce1f3d452c81b334d7bbdbfcc"><code>aa4e447</code></a>
build(deps): bump actions/setup-go</li>
<li><a
href="https://github.com/hashicorp/hcl/commit/72443636fe97ebb2e1ce1aa2bfa87dd426d8a88f"><code>7244363</code></a>
Update go-cty to latest (<a
href="https://redirect.github.com/hashicorp/hcl/issues/749">#749</a>)</li>
<li><a
href="https://github.com/hashicorp/hcl/commit/b4e27ae471da2b5a30329239713f7f3ed630c2dc"><code>b4e27ae</code></a>
test_suite: refactor schema validation of diagnostic file range, pos (<a
href="https://redirect.github.com/hashicorp/hcl/issues/750">#750</a>)</li>
<li><a
href="https://github.com/hashicorp/hcl/commit/314d2366eadcbd243f2988a535587d7fea94442e"><code>314d236</code></a>
fix staticcheck lint errors</li>
<li>Additional commits viewable in <a
href="https://github.com/hashicorp/hcl/compare/v2.23.0...v2.24.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/hashicorp/hcl/v2&package-manager=go_modules&previous-version=2.23.0&new-version=2.24.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>
2025-07-14 14:57:09 +00:00
dependabot[bot] b56c6a1d2d ci: bump the github-actions group with 3 updates (#18853)
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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-14 14:53:45 +00:00
dependabot[bot] b2cf55fd71 chore: bump github.com/mark3labs/mcp-go from 0.32.0 to 0.33.0 (#18850)
Bumps [github.com/mark3labs/mcp-go](https://github.com/mark3labs/mcp-go)
from 0.32.0 to 0.33.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mark3labs/mcp-go/releases">github.com/mark3labs/mcp-go's
releases</a>.</em></p>
<blockquote>
<h2>Release v0.33.0</h2>
<h2>What's Changed</h2>
<ul>
<li>fix(server): Fix the logic of the WithStateLess function by <a
href="https://github.com/dcsunny"><code>@​dcsunny</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/387">mark3labs/mcp-go#387</a></li>
<li>fix(srv/stream): correct handleGet status code to 200 by <a
href="https://github.com/cryo-zd"><code>@​cryo-zd</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/379">mark3labs/mcp-go#379</a></li>
<li>Add an example of an in process client by <a
href="https://github.com/edwardcqian"><code>@​edwardcqian</code></a> in
<a
href="https://redirect.github.com/mark3labs/mcp-go/pull/371">mark3labs/mcp-go#371</a></li>
<li>feat: add type-safe array items helper functions by <a
href="https://github.com/davidleitw"><code>@​davidleitw</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/396">mark3labs/mcp-go#396</a></li>
<li>Issue 400 fix by <a
href="https://github.com/ozzyozbourne"><code>@​ozzyozbourne</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/406">mark3labs/mcp-go#406</a></li>
<li>fix(client/transport/stream): check for nil pointer by <a
href="https://github.com/dinistavares"><code>@​dinistavares</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/404">mark3labs/mcp-go#404</a></li>
<li>feat: add ResourceLink type and parsing support by <a
href="https://github.com/chenmingyong0423"><code>@​chenmingyong0423</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/407">mark3labs/mcp-go#407</a></li>
<li>Fix docs by <a
href="https://github.com/ezynda3"><code>@​ezynda3</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/430">mark3labs/mcp-go#430</a></li>
<li>feat: client-side streamable-http transport supports continuously
listening by <a
href="https://github.com/leavez"><code>@​leavez</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/317">mark3labs/mcp-go#317</a></li>
<li>feature: add support ResourceTemplates to mcptest package by <a
href="https://github.com/Slach"><code>@​Slach</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/449">mark3labs/mcp-go#449</a></li>
<li>Add support for MCP host session management by <a
href="https://github.com/C0deKing"><code>@​C0deKing</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/466">mark3labs/mcp-go#466</a></li>
<li>docs: Fix unused import in readme example by <a
href="https://github.com/Squiry"><code>@​Squiry</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/469">mark3labs/mcp-go#469</a></li>
<li>Support creating an <code>Stdio</code> client with options by <a
href="https://github.com/peteski22"><code>@​peteski22</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/457">mark3labs/mcp-go#457</a></li>
<li>Implement sampling in Stdio by <a
href="https://github.com/ezynda3"><code>@​ezynda3</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/461">mark3labs/mcp-go#461</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/dcsunny"><code>@​dcsunny</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/387">mark3labs/mcp-go#387</a></li>
<li><a
href="https://github.com/edwardcqian"><code>@​edwardcqian</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/371">mark3labs/mcp-go#371</a></li>
<li><a
href="https://github.com/davidleitw"><code>@​davidleitw</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/396">mark3labs/mcp-go#396</a></li>
<li><a
href="https://github.com/ozzyozbourne"><code>@​ozzyozbourne</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/406">mark3labs/mcp-go#406</a></li>
<li><a
href="https://github.com/dinistavares"><code>@​dinistavares</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/404">mark3labs/mcp-go#404</a></li>
<li><a
href="https://github.com/chenmingyong0423"><code>@​chenmingyong0423</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/407">mark3labs/mcp-go#407</a></li>
<li><a href="https://github.com/Slach"><code>@​Slach</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/449">mark3labs/mcp-go#449</a></li>
<li><a href="https://github.com/C0deKing"><code>@​C0deKing</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/466">mark3labs/mcp-go#466</a></li>
<li><a href="https://github.com/Squiry"><code>@​Squiry</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/469">mark3labs/mcp-go#469</a></li>
<li><a href="https://github.com/peteski22"><code>@​peteski22</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/457">mark3labs/mcp-go#457</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.32.0...v0.33.0">https://github.com/mark3labs/mcp-go/compare/v0.32.0...v0.33.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/6a54215f5b4cdeb1ab9ed602bcf87ebb0222e691"><code>6a54215</code></a>
Implement sampling in Stdio (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/461">#461</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/656a7b4cab77cb913b5f9613c547859596499d6a"><code>656a7b4</code></a>
Support creating an <code>Stdio</code> client with options (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/457">#457</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/01e802f3854d9591f791a39fc148e57768681267"><code>01e802f</code></a>
Fix unused import in readme example (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/469">#469</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/d0fa06e9209195f89bb22b3c952ec038f7d1905a"><code>d0fa06e</code></a>
Add support for MCP host session management (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/466">#466</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/251da138d6b5ade77bb2155e0aa294843cb16337"><code>251da13</code></a>
feature: add support ResourceTemplates to mcptest package (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/449">#449</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/1eddde7bd69b760f745a1b4064969cffcf97e935"><code>1eddde7</code></a>
feat: client-side streamable-http transport supports continuously
listening ...</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/8f5b048218f6d044c3322f16b8cb0b08e10bf5d0"><code>8f5b048</code></a>
Fix docs (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/430">#430</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/0fdb1974c5728a74ae061e650d25bf90c5c43437"><code>0fdb197</code></a>
feat: add ResourceLink type and parsing support (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/407">#407</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/d807ae7b7ac1c2b3c24347d1d602506b9cdcd998"><code>d807ae7</code></a>
fix(client/transport/stream): check for nil pointer (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/404">#404</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/93176e8a70cffc2886bd446fe8464badcd5035da"><code>93176e8</code></a>
fixed nil error (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/406">#406</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/mark3labs/mcp-go/compare/v0.32.0...v0.33.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/mark3labs/mcp-go&package-manager=go_modules&previous-version=0.32.0&new-version=0.33.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>
2025-07-14 14:31:57 +00:00
Edward Angert 78af5e0f53 docs: add note about incompatible immutable parameters behavior to parameters doc (#18814)
closes #18370 

workspace creation page checks for

1. required parameters
2. incompatible immutable parameters

and if there's an issue, disables the **Create workspace** button until
it's resolved


[preview](https://coder.com/docs/@18370-immutable-params/admin/templates/extending-templates/parameters#mutability)

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-07-14 11:43:43 +00:00
Atif Ali 3126f21d87 revert: "docs: add coder registry link to docs sidebar" (#18837) 2025-07-11 16:09:23 +00:00
Atif Ali c25e666d12 docs: add coder registry link to docs sidebar (#18585)
I am not sure if this works

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
Co-authored-by: Edward Angert <EdwardAngert@users.noreply.github.com>
2025-07-11 08:12:09 -04:00
Edward Angert 040fa30aba docs: update screenshots with new logo (#18830)
stage 1 of many

- new login screenshot
- remove unused platforms screenshots
- update [screenshots
doc](https://coder.com/docs/@2025-screenshots/about/screenshots)
- update [quickstart
doc](https://coder.com/docs/@2025-screenshots/tutorials/quickstart)

closes #18813 

<details><summary>list of screenshots with old logo or that are
outdated</summary>

|docs/images/|notes?|
|--|--|
|logo-black.png| |
|jupyter-notebook.png| |
|platforms/docker/login.png| |
|platforms/docker/create-workspace.png| |
|platforms/docker/ides.png| |
|platforms/gcp/marketplace.png| |
|platforms/gcp/start.png| |
|platforms/aws/aws-linux.png| |
|platforms/aws/marketplace.png| |
|platforms/kubernetes/template-variables.png| |
|platforms/kubernetes/region-picker.png| |
|platforms/kubernetes/starter-template.png| |
|install/windows-installer.png| |
|install/homebrew.png| |
|screenshots/create-template.png| |
|screenshots/login.png| |
|screenshots/starter_templates.png| |
|screenshots/settings.png| |
|screenshots/audit.png| |
|screenshots/workspace-running-with-topbar.png| |
|screenshots/workspaces_listing.png| |
|screenshots/templates_listing.png| |
|screenshots/welcome-create-admin-user.png| |
|screenshots/workspace_launch.png| |
|screenshots/templates_insights.png| |
|screenshots/healthcheck.png| |
|screenshots/terraform.png| |
|deploy-pr-manually.png| |
|workspace-update.png| |
|custom-app.png| |
|code-server.png| |
|networking/annotatedports.png| |
|networking/portsharingmax.png| |
|networking/portforwarddashboard.png| |
|networking/listeningports.png| |
|agent-metadata.png| |
|jupyter.png| |
|admin/service-banner-maintenance.png| |
|admin/provisioner-tags.png| |
|admin/github-app-register.png| |
|admin/licenses/licenses-screen.png| |
|admin/licenses/licenses-nolicense.png| |
|admin/licenses/add-license-ui.png| |
|admin/service-banner-config.png| |
|admin/group-allowlist.png| |
|admin/networking/workspace-proxies/ws-proxy-picker.png| |
|admin/setup/appearance/application-name-logo-url.png| |
|admin/setup/appearance/announcement_banner_settings.png| |
|admin/setup/appearance/support-links.png| |
|admin/setup/appearance/service-banner-secret.png| |
|admin/quota-buildlog.png| |
|admin/integrations/kube-region-picker.png| |
|admin/integrations/coder-logstream-kube-logs-wrong-image.png| |
|admin/integrations/coder-logstream-kube-logs-pod-crashed.png| |
|admin/integrations/coder-logstream-kube-logs-normal.png| |
|admin/integrations/coder-logstream-kube-logs-quota-exceeded.png| |
|admin/git-auth-template.png| |
|admin/github-app-install.png| |
|admin/users/organizations/role-sync.png| |
|admin/users/organizations/group-sync-empty.png| |
|admin/users/organizations/workspace-list.png| |
|admin/users/organizations/new-organization.png| |
|admin/users/organizations/role-sync-empty.png| |
|admin/users/organizations/template-org-picker.png| |
|admin/users/organizations/organization-members.png| |
|admin/users/organizations/org-dropdown-create.png| |
|admin/users/organizations/default-organization-settings.png| |
|admin/users/organizations/group-sync.png| |
|admin/users/organizations/idp-org-sync.png| |
|admin/users/organizations/admin-settings-orgs.png| |
|admin/users/organizations/custom-roles.png| |
|admin/users/quotas/quota-groups.png| |
|admin/users/create-token.png| |
|admin/users/headless-user.png| |
|admin/provisioners/provisioner-jobs.png| |
|admin/github-app-permissions.png| |
|admin/templates/coder-apps-ui.png| |
|admin/templates/starter-templates.png| |
|admin/templates/create-template.png| |
|admin/templates/schedule/template-schedule-settings.png| |
|admin/templates/schedule/user-quiet-hours.png| |
|admin/templates/coder-metadata-ui.png| |
|admin/templates/duplicate-menu.png| |
|admin/templates/agent-metadata-ui.png| |
|admin/templates/troubleshooting/workspace-build-timings-ui.png| |
|admin/templates/duplicate-page.png| |
|admin/templates/new-duplicate-template.png| |
|admin/templates/import-template.png| |

|admin/templates/extend-templates/prebuilt/replacement-notification.png|
|
|admin/templates/extend-templates/prebuilt/prebuilt-workspaces.png| |

|admin/templates/extend-templates/dyn-params/dynamic-params-compare.png|
|

|admin/templates/extend-templates/dyn-params/enable-dynamic-parameters.png|
|
|admin/templates/extend-templates/template-preset-dropdown.png| |
|admin/monitoring/health-check.png| |
|admin/monitoring/logstream-kube.png| |
|admin/monitoring/notifications/user-notification-preferences.png| |
|admin/monitoring/notifications/notification-admin-prefs.png| |
|admin/workspace-proxy-picker.png| |
|admin/admin-settings-general.png| |
|admin/deployment-id-copy-clipboard.png| |
|icons-gallery.png| |
|start/setup-page.png| |
|start/workspace-schedule-settings.png| |
|start/build-template.png| |
|start/starter-templates.png| |
|start/create-template.png| |
|start/create-workspace.png| |
|start/template-preview.png| |
|start/blank-workspaces.png| |
|start/template-source-code.png| |
|start/first-template.png| |
|start/workspace-ready.png| |
|start/template-edit-source-code.png| |
|start/template-publish.png| |
|start/starter-templates-annotated.png| |
|display-apps.png| |
|workspace-automatic-updates.png| |
|workspaces/autostop.png| |
|workspaces/autostart.png| |
|create-workspace-from-templates-ui.png| |
|ide-row.png| |
|editors.png| |
|delete-template.png| |
|logo-white.png| |
|template-rbac.png| |
|coderapp-port-forward.png| |
|user-guides/terminal-access.png| |
|user-guides/workspace-bulk-actions.png| |
|user-guides/devcontainers/devcontainer-agent-ports.png| |
|user-guides/devcontainers/devcontainer-web-terminal.png| |
|user-guides/create-workspace-ui.png| |
|user-guides/workspace-view-connection-annotated.png| |
|user-guides/remote-desktops/web-rdp-demo.png| |
|user-guides/remote-desktops/amazon-dcv-windows-demo.png| |
|user-guides/desktop/coder-desktop-file-sync-add.png| |
|user-guides/desktop/coder-desktop-session-token.png| |
|user-guides/desktop/coder-desktop-win-pre-sign-in.png| |
|user-guides/desktop/coder-desktop-file-sync-conflicts-mouseover.png| |
|user-guides/desktop/coder-desktop-mac-pre-sign-in.png| |
|user-guides/desktop/coder-desktop-file-sync-watching.png| |
|user-guides/desktop/coder-desktop-win-enable-coder-connect.png| |
|user-guides/desktop/coder-desktop-sign-in.png| |
|user-guides/desktop/coder-desktop-file-sync.png| |
|user-guides/desktop/coder-desktop-file-sync-staging.png| |
|user-guides/desktop/chrome-insecure-origin.png| |
|user-guides/desktop/coder-desktop-workspaces.png| |
|user-guides/jetbrains/toolbox/workspaces.png| |
|user-guides/jetbrains/toolbox/install.png| |
|user-guides/jetbrains/toolbox/login-token.png| |
|user-guides/jetbrains/toolbox/login-url.png| |
|user-guides/schedule-settings-workspace.png| |
|user-guides/dotfiles-module.png| |
|user-guides/workspace-list-ui.png| |
|user-guides/workspace-settings-location.png| |
|template-variables.png| |
|ides/code-web-extensions.png| |
|ides/copilot.png| |
|architecture-multi-region.png| |
|external-apps.png| |
|guides/ai-agents/tasks-ui.png| |
|guides/ai-agents/duplicate.png| |
|guides/ai-agents/landing.png| |
|guides/ai-agents/workspace-page.png| |
|guides/ai-agents/realworld-ui.png| |
|guides/xray-integration/example.png| |
|guides/using-organizations/workspace-list.png| |
|guides/using-organizations/new-organization.png| |
|guides/using-organizations/template-org-picker.png| |
|guides/using-organizations/deployment-organizations.png| |
|guides/using-organizations/organization-members.png| |
|readme-logos.png| |
|metadata-ui.png| |
|secret-metadata-ui.png| |
|projector-intellij.png| |
|schedule.png| |
|ssh-keys.png| |
|template-scheduling.png| |
|templates/general-settings.png| |
|templates/build-template.png| |
|templates/update.png| |
|templates/starter-templates.png| |
|templates/create-template.png| |
|templates/select-template.png| |
|templates/pre-filled-parameters.png| |
|templates/source-code.png| |
|templates/upload-create-your-first-template.png| |
|templates/create-workspace.png| |
|templates/edit-source-code.png| |
|templates/permissions.png| |
|templates/coder-session-token.png| |
|templates/starter-templates-button.png| |
|templates/template-tour.png| |
|templates/edit-files.png| |
|templates/workspace-ready.png| |
|templates/template-menu-settings.png| |
|templates/workspace-apps.png| |
|templates/coder-login-web.png| |
|templates/new-workspace.png| |
|templates/template-variables.png| |
|templates/use-template.png| |
|templates/healthy-workspace-agent.png| |
|templates/update-policies.png| |
|templates/upload-create-template-form.png| |
|templates/develop-in-docker-template.png| |
|templates/publish.png| |
|templates/devcontainers.png| |
|templates/create-template-permissions.png| |
|port-forward-dashboard.png| |
|creating-workspace-ui.png| |
|parameters.png| |
|best-practice/build-timeline.png| |
|file-browser.png| |
|architecture-single-region.png| |
|gateway/plugin-settings-marketplace.png| |
|gateway/plugin-session-token.png| |
|gateway/plugin-connect-to-coder.png| |
|gateway/plugin-select-ide.png| |
|gateway/plugin-ide-list.png| |
|hero-image.png| |

</details>

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-07-10 16:01:20 -04:00
Ethan c1b2304d18 test(agent/agentssh): use fish shell compatible exit status checking (#18824)
This (week-old) test was failing in my workspace because I use fish shell. 
I really do not like that Fish shell does not support `$?`, but I also do like Fish shell! We have a few people at Coder who use it who would appreciate this change.
2025-07-10 19:50:30 +10:00
Edward Angert b882d46d91 docs: fix relative links in about/contributing (#18818)
hotfix

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-07-09 20:04:48 +00:00
Bruno Quaresma 5a8a19be70 feat: auto reconnect the terminal (#18796)
**Changes:**
- Use [websocket-ts](https://www.npmjs.com/package/websocket-ts) to have
auto reconnection out of the box 🙏
- Update the disconnected alert message to "Trying to connect..." since
the connection is always trying to reconnect
- Remove `useWithRetry` because it is not necessary anymore

**Other topics:**
- The disconnected alert is displaying a simple message, but we can
include more info such as the number of attemtps
- The reconnection feature is in a good state and adding value. IMO, any
improvement can be done after getting this merged

Closes https://github.com/coder/internal/issues/659
2025-07-09 15:04:24 -03:00
Steven Masley 00ba0278d2 chore: modify parameter dynamic immutability behavior (#18583)
Immutability behavior is determined by the current build, not affected by the previous
2025-07-09 08:45:24 -06:00
Bruno Quaresma 9c61ef82b0 test: fix DeploymentSidebarView stories (#18812) 2025-07-09 10:09:10 -04:00
Cian Johnston 0367dbac43 chore: optimize GetPrebuiltWorkspaces query (#18717)
* Adds GetRunningPrebuiltWorkspacesOptimized query
* Runs both original and updated query side-by-side and logs diffs
2025-07-09 11:30:42 +01:00
Jakub Domeracki dc0919da33 feat: sign coder binaries with the release key using GPG (#18774)
### Description
This PR introduces GPG signing for all Coder *slim-binaries*.
Detached signatures will allow users to verify the integrity and
authenticity of the binaries they download.

### Changes
  * `scripts/sign_with_gpg.sh`: New script to sign a given binary
     using GPG. It imports the release key, signs the binary, and
     verifies the signature.
   * `scripts/build_go.sh`: Updated to call `sign_with_gpg.sh` when the
     `CODER_SIGN_GPG` environment variable is set to 1.
   * `.github/workflows/release.yaml`: The` CODER_SIGN_GPG` environment
     variable is now set to 1 during the release build, enabling GPG
     signing for all release binaries.
   * `.github/workflows/ci.yaml`: The `CODER_SIGN_GPG` environment
     variable is now set to 1 during the CI build, enabling GPG
     signing for all CI binaries.
* `Makefile`: Detached signatures are moved to the `/site/out/bin/
`directory
2025-07-09 11:53:27 +02:00
Hugo Dutka 3c2f3d640b chore: remove dbmem (#18803)
Remove the in-memory database. Addresses #15109.
2025-07-09 09:46:31 +02:00
Steven Masley 1319ae293f chore: support zip filetypes in the file cache (#18750) 2025-07-08 15:46:39 -06:00
Atif Ali 79d1465e23 chore: update module sources for Windsurf, Zed and JetBrains (#18759) 2025-07-08 20:33:34 +00:00
blink-so[bot] 39ed0c32e6 docs: simplify PostgreSQL setup by using 'postgresql' as release name (#18754)
Fixes #18751

Use `postgresql` as the Helm release name instead of `coder-db` to make
the service name more intuitive and eliminate confusion entirely.

## Changes
- Changed `helm install coder-db bitnami/postgresql` to `helm install
postgresql bitnami/postgresql`
- Updated PostgreSQL URLs from
`coder-db-postgresql.coder.svc.cluster.local` to
`postgresql.coder.svc.cluster.local`
- Removed explanatory notes about service naming (no longer needed)

## Benefits
 Makes examples work out-of-the-box for most users
 Uses the most straightforward and intuitive release name
 Eliminates confusion about service naming entirely
 Simpler documentation without complex explanations

## Testing
- Verified that `helm install postgresql bitnami/postgresql` creates
service named `postgresql`
- Confirmed this approach works with the connection URL
`postgresql.coder.svc.cluster.local`

Suggested by @EdwardAngert as a cleaner solution than explaining the
service naming dependency.

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: matifali <10648092+matifali@users.noreply.github.com>
Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
Co-authored-by: Edward Angert <EdwardAngert@users.noreply.github.com>
2025-07-08 13:20:15 -04:00
Allen Conlon 10c1e36fff feat: add publishing of helm charts to ghcr registry (#18316) 2025-07-08 22:19:12 +05:00
Mathias Fredriksson 6c4db7a2bc feat(cli): replace open vscode container with devcontainer subagent (#18765)
This change allows a devcontainer to be opened via the agent syntax,
`coder open vscode <workspace>.<agent>` and removes the `--container`
option to simplify the subcommand. Accessing the subagent will behave
similarly to how the `--container` option behaved.

Fixes coder/internal#748
2025-07-08 19:21:41 +03:00
Mathias Fredriksson 5f50dcce5a feat(cli): improve devcontainer support for coder show (#18793)
Fixes coder/internal#747
2025-07-08 16:16:00 +00:00
Hugo Dutka 2f50b3b7bb chore(site): remove dbmem from tests (#18802)
Related to https://github.com/coder/coder/issues/15109.
2025-07-08 15:28:48 +00:00
Hugo Dutka 8e038db463 chore(enterprise/replicasync): remove dbmem from tests (#18801)
Related to https://github.com/coder/coder/issues/15109.
2025-07-08 15:25:01 +00:00
Hugo Dutka 5e9cbe8a1b chore(coderd): remove dbmem from tests (#18800)
Related to https://github.com/coder/coder/issues/15109.
2025-07-08 15:19:14 +00:00
Hugo Dutka 66e490986f chore(enterprise/trialer): remove dbmem from tests (#18798)
Related to https://github.com/coder/coder/issues/15109.
2025-07-09 01:17:14 +10:00
Hugo Dutka b65e133a17 chore(enterprise/coderd): remove dbmem from tests (#18797)
Related to https://github.com/coder/coder/issues/15109.
2025-07-09 01:16:46 +10:00
Susana Ferreira 0dc36127c0 chore(dogfood): update filebrowser module to version 1.1.1 (#18799)
Workspaces with `Write Coder on Coder` template are failing with an
error in the agent related to File Browser:
```
2025/07/08 14:00:29 Using database: /home/coder/filebrowser.db  
2025/07/08 14:00:29 password is too short, minimum length is 12
```
Updating filebrowser module version to 1.1.1:
https://github.com/coder/registry/pull/173
2025-07-08 16:13:36 +01:00
Hugo Dutka 733d3f1287 chore(enterprise/cli): remove dbmem from tests (#18795)
Related to https://github.com/coder/coder/issues/15109.
2025-07-08 14:59:03 +00:00
Hugo Dutka f147ebf37d chore(enterprise/audit): remove dbmem from tests (#18794)
Related to https://github.com/coder/coder/issues/15109.
2025-07-08 14:39:02 +00:00
Hugo Dutka 7f681910e9 chore(coderd/updatecheck): remove dbmem from tests (#18792)
Related to https://github.com/coder/coder/issues/15109.
2025-07-08 14:32:46 +00:00
Hugo Dutka e0fb15eeff chore(coderd/searchquery): remove dbmem from tests (#18791)
Related to https://github.com/coder/coder/issues/15109.
2025-07-08 14:32:24 +00:00
Hugo Dutka 321396d9d6 chore(coderd/rbac/rolestore): remove dbmem from tests (#18789)
Related to https://github.com/coder/coder/issues/15109
2025-07-08 16:31:20 +02:00
Hugo Dutka ac4be155d9 chore(coderd/runtimeconfig): remove dbmem from tests (#18790)
Related to https://github.com/coder/coder/issues/15109.
2025-07-08 14:31:05 +00:00
Spike Curtis bf0271fd65 chore: stop running postgres-only tests if DB is not set (#18784)
Fixes https://github.com/coder/internal/issues/695

PostgreSQL tests are getting run in a non-postgres CI job because the tests don't get skipped if the `DB=` env is unset. This PR adds a skip for them.

They are flaking in the `test-go-race` CI job. They run fine in the `test-go-race-pg` job, which pre-creates the postgres server, so the flakiness is almost certainly related to spinning up the database server.
2025-07-08 15:56:22 +04:00
Susana Ferreira 211393a69c fix: exclude prebuilt workspaces from lifecycle executor (#18762)
## Description

This PR updates the lifecycle executor to explicitly exclude prebuilt
workspaces from being considered for lifecycle operations such as
`autostart`, `autostop`, `dormancy`, `default TTL` and `failure TTL`.

Prebuilt workspaces (i.e., those owned by the prebuild system user) are
handled separately by the prebuild reconciliation loop. Including them
in the lifecycle executor could lead to unintended behavior such as
incorrect scheduling or state transitions.

## Changes

* Updated the lifecycle executor query
`GetWorkspacesEligibleForTransition` to exclude workspaces with
`owner_id = 'c42fdf75-3097-471c-8c33-fb52454d81c0'` (prebuilds).
* Added tests to verify prebuilt workspaces are not considered in:
  * Autostop
  * Autostart
  * Default TTL
  * Dormancy
  * Failure TTL

Fixes: https://github.com/coder/coder/issues/18740
Related to: https://github.com/coder/coder/issues/18658
2025-07-08 11:35:28 +01:00
Danielle Maywood 0118e75009 fix(agent): disable dev container integration inside sub agents (#18781)
It appears we accidentally broke this logic in a previous PR. This
should now correctly disable the agent api as we'd expect.
2025-07-08 11:05:30 +01:00
Cian Johnston 1195f31025 chore(site): reduce fetch interval on workspaces page (#18725)
Relates to https://github.com/coder/internal/issues/720

* Reduces workspaces data refetch interval if no builds are pending
* Sets `refetchOnWindowFocus: always` to mitigate impact of reduced polling duration
2025-07-08 11:00:05 +01:00
Kacper Sawicki 8202514ce0 feat!: add ability to cancel pending workspace build (#18713)
Closes #17791 

This PR adds ability to cancel workspace builds that are in "pending"
status.

Breaking changes:
- CancelWorkspaceBuild method in codersdk now accepts an optional
request parameter

API:
- Added `expect_status` query parameter to the cancel workspace build
endpoint
- This parameter ensures the job hasn't changed state before canceling
- API returns `412 Precondition Failed` if the job is not in the
expected status
- Valid values: `running` or `pending`
- Wrapped the entire cancel method in a database transaction

UI:
- Added confirmation dialog to the `Cancel` button, since it's a
destructive operation

![image](https://github.com/user-attachments/assets/437aa5f4-5669-45b6-82a0-e46f277114bf)

![image](https://github.com/user-attachments/assets/423b5cb1-a4fb-4a10-933b-c1c73f4b838c)


- Enabled cancel action for pending workspaces (`expect_status=pending`
is sent if workspace is in pending status)

![image](https://github.com/user-attachments/assets/32d35ff1-12e6-4f7b-9f6c-fde9da9de6cf)

---------

Co-authored-by: Dean Sheather <dean@deansheather.com>
2025-07-08 11:02:58 +02:00
Edward Angert 2f42b64182 docs: update dynamic parameters for beta release (#18512)
Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
Co-authored-by: Stephen Kirby <kirby@coder.com>
Co-authored-by: Stephen Kirby <58410745+stirby@users.noreply.github.com>
Co-authored-by: Atif Ali <atif@coder.com>
Co-authored-by: Jaayden Halko <jaayden.halko@gmail.com>
Co-authored-by: Mathias Fredriksson <mafredri@gmail.com>
Co-authored-by: Steven Masley <Emyrk@users.noreply.github.com>
Co-authored-by: Thomas Kosiewski <tk@coder.com>
Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: bpmct <22407953+bpmct@users.noreply.github.com>
Co-authored-by: Bruno Quaresma <bruno@coder.com>
Co-authored-by: BrunoQuaresma <3165839+BrunoQuaresma@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Ethan <39577870+ethanndickson@users.noreply.github.com>
Co-authored-by: kylecarbs <7122116+kylecarbs@users.noreply.github.com>
Co-authored-by: Ben Potter <ben@coder.com>
Co-authored-by: Hugo Dutka <hugo@coder.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: ケイラ <mckayla@hey.com>
2025-07-07 19:46:34 -05:00
blink-so[bot] 83192e2462 docs: restore missing AI agent images to fix 404 errors (#18780)
Fixes #18767

This PR restores the missing `landing.png` and `duplicate.png` images
that were accidentally deleted in commit
b26c9e2432.

## Problem
The images were deleted during a documentation restructure, but external
links and cached website content are still referencing these image URLs,
causing 404 errors:
-
`https://raw.githubusercontent.com/coder/coder/main/docs/images/guides/ai-agents/landing.png`
-
`https://raw.githubusercontent.com/coder/coder/main/docs/images/guides/ai-agents/duplicate.png`

## Solution
Restore the original images from the git history to maintain backward
compatibility for external references while preserving the current
documentation structure.

## Testing
 Verified images are restored to correct location
 Confirmed file sizes match original images
 No conflicts with current documentation structure

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: kylecarbs <7122116+kylecarbs@users.noreply.github.com>
2025-07-07 19:48:10 -04:00
Thomas Kosiewski 3dcd2acf1d fix: return 404 instead of 401 for missing OAuth2 apps (#18755)
## Problem

Users were being automatically logged out when deleting OAuth2
applications.

## Root Cause

1. User deletes OAuth2 app successfully
2. React Query automatically refetches the app data  
3. Management API incorrectly returned **401 Unauthorized** for the
missing app
4. Frontend axios interceptor sees 401 and calls `signOut()`
5. User gets logged out unexpectedly

## Solution

- Change management API to return **404 Not Found** for missing OAuth2
apps
- OAuth2 protocol endpoints continue returning 401 per RFC 6749
- Rename `writeInvalidClient` to `writeClientNotFound` for clarity

## Additional Changes

- Add conditional OAuth2 navigation when experiment is enabled or in dev
builds
- Add `isDevBuild()` utility and `buildInfo` to dashboard context
- Minor improvements to format script and warning dialogs

Signed-off-by: Thomas Kosiewski <tk@coder.com>
2025-07-07 19:57:32 +02:00
ケイラ f2983164f5 chore: fix some small groups and acl typos (#18732)
- Add `format:"uri"` to `Group.AvatarURL` (matches `User.AvatarURL`
field)
- `<user_id>` and `<group_id>` were backwards in the `example:` tags
- The `@Success` annotation for `/acl [get]` had an incorrect type
2025-07-07 11:01:17 -06:00
dependabot[bot] 935bd340b1 chore: bump github.com/valyala/fasthttp from 1.62.0 to 1.63.0 (#18771)
Bumps [github.com/valyala/fasthttp](https://github.com/valyala/fasthttp)
from 1.62.0 to 1.63.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/valyala/fasthttp/releases">github.com/valyala/fasthttp's
releases</a>.</em></p>
<blockquote>
<h2>v1.63.0</h2>
<h2>What's Changed</h2>
<ul>
<li>chore(deps): bump securego/gosec from 2.22.3 to 2.22.4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2007">valyala/fasthttp#2007</a></li>
<li>fix: removed resolved issue link from readme file, issue no longer
ex… by <a
href="https://github.com/viralkansarav"><code>@​viralkansarav</code></a>
in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2008">valyala/fasthttp#2008</a></li>
<li>feat: Add iter.Seq2 iterator by <a
href="https://github.com/ksw2000"><code>@​ksw2000</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2011">valyala/fasthttp#2011</a></li>
<li>Removed old information from main documentation as these functions
does not exist by <a
href="https://github.com/viralkansarav"><code>@​viralkansarav</code></a>
in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2012">valyala/fasthttp#2012</a></li>
<li>Proposal : To add Unsafe Zero-Allocation Conversions Sections in
main documentation by <a
href="https://github.com/viralkansarav"><code>@​viralkansarav</code></a>
in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2013">valyala/fasthttp#2013</a></li>
<li>chore(deps): bump golang.org/x/net from 0.40.0 to 0.41.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2018">valyala/fasthttp#2018</a></li>
<li>Drop support before go1.20 by <a
href="https://github.com/erikdubbelboer"><code>@​erikdubbelboer</code></a>
in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2022">valyala/fasthttp#2022</a></li>
<li>chore(deps): bump securego/gosec from 2.22.4 to 2.22.5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2025">valyala/fasthttp#2025</a></li>
<li>Implement io.StringWriter on some more types by <a
href="https://github.com/erikdubbelboer"><code>@​erikdubbelboer</code></a>
in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2023">valyala/fasthttp#2023</a></li>
<li>chore(deps): bump github.com/andybalholm/brotli from 1.1.1 to 1.2.0
by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>
in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2029">valyala/fasthttp#2029</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/viralkansarav"><code>@​viralkansarav</code></a>
made their first contribution in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2008">valyala/fasthttp#2008</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/valyala/fasthttp/compare/v1.62.0...v1.63.0">https://github.com/valyala/fasthttp/compare/v1.62.0...v1.63.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/valyala/fasthttp/commit/8b512b7dae68ffb700b3240bcb81bed5f5c9e6e8"><code>8b512b7</code></a>
chore(deps): bump github.com/andybalholm/brotli from 1.1.1 to 1.2.0 (<a
href="https://redirect.github.com/valyala/fasthttp/issues/2029">#2029</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/d356cacd848d92e7f25f06ec64c29f43e033e369"><code>d356cac</code></a>
Implement io.StringWriter on some more types (<a
href="https://redirect.github.com/valyala/fasthttp/issues/2023">#2023</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/641dd96586089dd225652745cb1f67492509dd1c"><code>641dd96</code></a>
chore(deps): bump securego/gosec from 2.22.4 to 2.22.5 (<a
href="https://redirect.github.com/valyala/fasthttp/issues/2025">#2025</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/28ebbd9bf1300bc7d763a0f02facad70ee60190f"><code>28ebbd9</code></a>
Drop support before go1.20 (<a
href="https://redirect.github.com/valyala/fasthttp/issues/2022">#2022</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/75d2192d37d5cd444850d9d857437fc83165e351"><code>75d2192</code></a>
chore(deps): bump golang.org/x/net from 0.40.0 to 0.41.0 (<a
href="https://redirect.github.com/valyala/fasthttp/issues/2018">#2018</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/46ae933953a610c389f33c1058b8c2b901113e55"><code>46ae933</code></a>
Proposal : To add Unsafe Zero-Allocation Conversions Sections in main
docume...</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/74f3d4cfc825c095c1c1630bd69e0b8da3cd8755"><code>74f3d4c</code></a>
Removed old information from main documentation as these functions does
not e...</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/a1783ffacc6269de7d37a3a99da1005f404a7a82"><code>a1783ff</code></a>
feat: Add iter.Seq2 iterator <a
href="https://redirect.github.com/valyala/fasthttp/issues/2010">#2010</a>
(<a
href="https://redirect.github.com/valyala/fasthttp/issues/2011">#2011</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/246634464811c0389369f7a5bd298b85f63670e4"><code>2466344</code></a>
Remove unused file</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/d856840619aa61cff3274ad8403a8f34f15957c7"><code>d856840</code></a>
fix: removed resolved issue link from readme file, issue no longer
exists (<a
href="https://redirect.github.com/valyala/fasthttp/issues/2">#2</a>...</li>
<li>Additional commits viewable in <a
href="https://github.com/valyala/fasthttp/compare/v1.62.0...v1.63.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/valyala/fasthttp&package-manager=go_modules&previous-version=1.62.0&new-version=1.63.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>
2025-07-07 13:59:45 +00:00
dependabot[bot] 52ff531d1f chore: bump github.com/go-playground/validator/v10 from 10.26.0 to 10.27.0 (#18772)
Bumps
[github.com/go-playground/validator/v10](https://github.com/go-playground/validator)
from 10.26.0 to 10.27.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/go-playground/validator/releases">github.com/go-playground/validator/v10's
releases</a>.</em></p>
<blockquote>
<h2>Release 10.27.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix Release version badge on README page by <a
href="https://github.com/nodivbyzero"><code>@​nodivbyzero</code></a> in
<a
href="https://redirect.github.com/go-playground/validator/pull/1406">go-playground/validator#1406</a></li>
<li>fix russian E.164 error message by <a
href="https://github.com/prigornitskiy"><code>@​prigornitskiy</code></a>
in <a
href="https://redirect.github.com/go-playground/validator/pull/1349">go-playground/validator#1349</a></li>
<li>chore: remove unnecessary statement by <a
href="https://github.com/qshuai"><code>@​qshuai</code></a> in <a
href="https://redirect.github.com/go-playground/validator/pull/1200">go-playground/validator#1200</a></li>
<li>Re-enable several linters by <a
href="https://github.com/nodivbyzero"><code>@​nodivbyzero</code></a> in
<a
href="https://redirect.github.com/go-playground/validator/pull/1412">go-playground/validator#1412</a></li>
<li>add support to tag validateFn by <a
href="https://github.com/peczenyj"><code>@​peczenyj</code></a> in <a
href="https://redirect.github.com/go-playground/validator/pull/1363">go-playground/validator#1363</a></li>
<li>Bump golang.org/x/crypto from 0.33.0 to 0.35.0 in
/_examples/validate_fn by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/go-playground/validator/pull/1418">go-playground/validator#1418</a></li>
<li>Bump golang.org/x/net from 0.34.0 to 0.38.0 in
/_examples/validate_fn by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/go-playground/validator/pull/1419">go-playground/validator#1419</a></li>
<li>Align required_without with the contract stated in the documentation
by <a href="https://github.com/jmfrees"><code>@​jmfrees</code></a> in <a
href="https://redirect.github.com/go-playground/validator/pull/1422">go-playground/validator#1422</a></li>
<li>Add translation example by <a
href="https://github.com/cxlblm"><code>@​cxlblm</code></a> in <a
href="https://redirect.github.com/go-playground/validator/pull/1394">go-playground/validator#1394</a></li>
<li>doc(errors): mention RegisterTagNameFunc for FieldError.Field by <a
href="https://github.com/khan-ajamal"><code>@​khan-ajamal</code></a> in
<a
href="https://redirect.github.com/go-playground/validator/pull/1358">go-playground/validator#1358</a></li>
<li>Bump golangci/golangci-lint-action from 7 to 8 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/go-playground/validator/pull/1425">go-playground/validator#1425</a></li>
<li>feat(translation): add en translation for urn_rfc2141 by <a
href="https://github.com/ryanmalesic"><code>@​ryanmalesic</code></a> in
<a
href="https://redirect.github.com/go-playground/validator/pull/1431">go-playground/validator#1431</a></li>
<li>fix: panics when private field is validated by <a
href="https://github.com/ykalchevskiy"><code>@​ykalchevskiy</code></a>
in <a
href="https://redirect.github.com/go-playground/validator/pull/1423">go-playground/validator#1423</a></li>
<li>Fix: support validation for map values with struct types by <a
href="https://github.com/JunaidIslam2105"><code>@​JunaidIslam2105</code></a>
in <a
href="https://redirect.github.com/go-playground/validator/pull/1433">go-playground/validator#1433</a></li>
<li>Omitzero does not work with slice and map bug by <a
href="https://github.com/JunaidIslam2105"><code>@​JunaidIslam2105</code></a>
in <a
href="https://redirect.github.com/go-playground/validator/pull/1436">go-playground/validator#1436</a></li>
<li>Fix: Validator panics when 'nil' is used along with required if for
slices and maps by <a
href="https://github.com/JunaidIslam2105"><code>@​JunaidIslam2105</code></a>
in <a
href="https://redirect.github.com/go-playground/validator/pull/1442">go-playground/validator#1442</a></li>
<li>docs: typos by <a
href="https://github.com/eqsdxr"><code>@​eqsdxr</code></a> in <a
href="https://redirect.github.com/go-playground/validator/pull/1440">go-playground/validator#1440</a></li>
<li>fix: make &quot;file://&quot; fail <code>url</code> validation by <a
href="https://github.com/bfabio"><code>@​bfabio</code></a> in <a
href="https://redirect.github.com/go-playground/validator/pull/1444">go-playground/validator#1444</a></li>
<li>disable way too aggressive and disagreeable linters by <a
href="https://github.com/deankarn"><code>@​deankarn</code></a> in <a
href="https://redirect.github.com/go-playground/validator/pull/1445">go-playground/validator#1445</a></li>
<li>use golangci lint file for disables by <a
href="https://github.com/deankarn"><code>@​deankarn</code></a> in <a
href="https://redirect.github.com/go-playground/validator/pull/1447">go-playground/validator#1447</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/prigornitskiy"><code>@​prigornitskiy</code></a>
made their first contribution in <a
href="https://redirect.github.com/go-playground/validator/pull/1349">go-playground/validator#1349</a></li>
<li><a href="https://github.com/qshuai"><code>@​qshuai</code></a> made
their first contribution in <a
href="https://redirect.github.com/go-playground/validator/pull/1200">go-playground/validator#1200</a></li>
<li><a href="https://github.com/peczenyj"><code>@​peczenyj</code></a>
made their first contribution in <a
href="https://redirect.github.com/go-playground/validator/pull/1363">go-playground/validator#1363</a></li>
<li><a href="https://github.com/jmfrees"><code>@​jmfrees</code></a> made
their first contribution in <a
href="https://redirect.github.com/go-playground/validator/pull/1422">go-playground/validator#1422</a></li>
<li><a href="https://github.com/cxlblm"><code>@​cxlblm</code></a> made
their first contribution in <a
href="https://redirect.github.com/go-playground/validator/pull/1394">go-playground/validator#1394</a></li>
<li><a
href="https://github.com/khan-ajamal"><code>@​khan-ajamal</code></a>
made their first contribution in <a
href="https://redirect.github.com/go-playground/validator/pull/1358">go-playground/validator#1358</a></li>
<li><a
href="https://github.com/ryanmalesic"><code>@​ryanmalesic</code></a>
made their first contribution in <a
href="https://redirect.github.com/go-playground/validator/pull/1431">go-playground/validator#1431</a></li>
<li><a
href="https://github.com/ykalchevskiy"><code>@​ykalchevskiy</code></a>
made their first contribution in <a
href="https://redirect.github.com/go-playground/validator/pull/1423">go-playground/validator#1423</a></li>
<li><a
href="https://github.com/JunaidIslam2105"><code>@​JunaidIslam2105</code></a>
made their first contribution in <a
href="https://redirect.github.com/go-playground/validator/pull/1433">go-playground/validator#1433</a></li>
<li><a href="https://github.com/eqsdxr"><code>@​eqsdxr</code></a> made
their first contribution in <a
href="https://redirect.github.com/go-playground/validator/pull/1440">go-playground/validator#1440</a></li>
<li><a href="https://github.com/bfabio"><code>@​bfabio</code></a> made
their first contribution in <a
href="https://redirect.github.com/go-playground/validator/pull/1444">go-playground/validator#1444</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/go-playground/validator/compare/v10.26.0...v10.27.0">https://github.com/go-playground/validator/compare/v10.26.0...v10.27.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/go-playground/validator/commit/bc77d03bfbd951ad1299267754e230b0af36a5aa"><code>bc77d03</code></a>
use golangci lint file for disables (<a
href="https://redirect.github.com/go-playground/validator/issues/1447">#1447</a>)</li>
<li><a
href="https://github.com/go-playground/validator/commit/4a1bc2f2628506a2cab2e3fe88d0cb57ccedbb6a"><code>4a1bc2f</code></a>
disable way too aggressive and disagreeable linters (<a
href="https://redirect.github.com/go-playground/validator/issues/1445">#1445</a>)</li>
<li><a
href="https://github.com/go-playground/validator/commit/cf2267f30e617916a42e6217cd5d3c837100b374"><code>cf2267f</code></a>
fix: make &quot;file://&quot; fail <code>url</code> validation (<a
href="https://redirect.github.com/go-playground/validator/issues/1444">#1444</a>)</li>
<li><a
href="https://github.com/go-playground/validator/commit/3fd4678e4a0346d57ac1ebcb81ceb86a87ed59f0"><code>3fd4678</code></a>
docs: typos (<a
href="https://redirect.github.com/go-playground/validator/issues/1440">#1440</a>)</li>
<li><a
href="https://github.com/go-playground/validator/commit/ec374ef02d93322f9d337c47678fbb45ac055323"><code>ec374ef</code></a>
Fix: Validator panics when 'nil' is used along with required if for
slices an...</li>
<li><a
href="https://github.com/go-playground/validator/commit/0e3e2f997385102062275f226e825b4a109f4833"><code>0e3e2f9</code></a>
Omitzero does not work with slice and map bug (<a
href="https://redirect.github.com/go-playground/validator/issues/1436">#1436</a>)</li>
<li><a
href="https://github.com/go-playground/validator/commit/dfc7ccd4d817cfd6f065273e37d83f7ae7815cce"><code>dfc7ccd</code></a>
Fix: support validation for map values with struct types (<a
href="https://redirect.github.com/go-playground/validator/issues/1433">#1433</a>)</li>
<li><a
href="https://github.com/go-playground/validator/commit/5b9542b93487972cdfa75ed03ebe4286c3f44c01"><code>5b9542b</code></a>
fix: panics when private field is validated (<a
href="https://redirect.github.com/go-playground/validator/issues/1423">#1423</a>)</li>
<li><a
href="https://github.com/go-playground/validator/commit/f9a5a1fa1e61028e09df895cd92dfd31673e245f"><code>f9a5a1f</code></a>
feat(translation): add en translation for urn_rfc2141 (<a
href="https://redirect.github.com/go-playground/validator/issues/1431">#1431</a>)</li>
<li><a
href="https://github.com/go-playground/validator/commit/20f7df64bdd443294349535a5da244ad0b2af71a"><code>20f7df6</code></a>
Bump golangci/golangci-lint-action from 7 to 8 (<a
href="https://redirect.github.com/go-playground/validator/issues/1425">#1425</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/go-playground/validator/compare/v10.26.0...v10.27.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/go-playground/validator/v10&package-manager=go_modules&previous-version=10.26.0&new-version=10.27.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>
2025-07-07 13:59:25 +00:00
Edward Angert e3627fd562 docs: fix markdown in Windsurf doc (#18753)
hotfix


[preview](https://coder.com/docs/@18705-windsurf-md/user-guides/workspace-access/windsurf)

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-07-07 18:52:19 +05:00
dependabot[bot] ededcd0c37 chore: bump go.nhat.io/otelsql from 0.15.0 to 0.16.0 (#18768)
Bumps [go.nhat.io/otelsql](https://github.com/nhatthm/otelsql) from
0.15.0 to 0.16.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/nhatthm/otelsql/releases">go.nhat.io/otelsql's
releases</a>.</em></p>
<blockquote>
<h2>v0.16.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Bump the otel group with 7 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/nhatthm/otelsql/pull/334">nhatthm/otelsql#334</a></li>
<li>Bump golang.org/x/net from 0.23.0 to 0.33.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/nhatthm/otelsql/pull/335">nhatthm/otelsql#335</a></li>
<li>Bump github.com/go-sql-driver/mysql from 1.8.1 to 1.9.0 in
/tests/mysql by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/nhatthm/otelsql/pull/336">nhatthm/otelsql#336</a></li>
<li>Bump github.com/prometheus/client_golang from 1.20.5 to 1.21.0 in
/tests/suite by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/nhatthm/otelsql/pull/337">nhatthm/otelsql#337</a></li>
<li>Bump github.com/prometheus/client_golang from 1.21.0 to 1.21.1 in
/tests/suite by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/nhatthm/otelsql/pull/338">nhatthm/otelsql#338</a></li>
<li>Bump the otel group with 7 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/nhatthm/otelsql/pull/339">nhatthm/otelsql#339</a></li>
<li>Bump golang.org/x/net from 0.33.0 to 0.36.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/nhatthm/otelsql/pull/340">nhatthm/otelsql#340</a></li>
<li>Bump github.com/golang-jwt/jwt/v4 from 4.5.1 to 4.5.2 in
/tests/mssql by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/nhatthm/otelsql/pull/342">nhatthm/otelsql#342</a></li>
<li>Bump github.com/go-sql-driver/mysql from 1.9.0 to 1.9.1 in
/tests/mysql by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/nhatthm/otelsql/pull/341">nhatthm/otelsql#341</a></li>
<li>Bump github.com/jackc/pgx/v5 from 5.7.2 to 5.7.3 in /tests/postgres
by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>
in <a
href="https://redirect.github.com/nhatthm/otelsql/pull/343">nhatthm/otelsql#343</a></li>
<li>Bump dependencies by <a
href="https://github.com/nhatthm"><code>@​nhatthm</code></a> in <a
href="https://redirect.github.com/nhatthm/otelsql/pull/347">nhatthm/otelsql#347</a></li>
<li>Bump github.com/jackc/pgx/v5 from 5.7.3 to 5.7.4 in /tests/postgres
by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>
in <a
href="https://redirect.github.com/nhatthm/otelsql/pull/344">nhatthm/otelsql#344</a></li>
<li>Bump github.com/go-sql-driver/mysql from 1.9.1 to 1.9.2 in
/tests/mysql by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/nhatthm/otelsql/pull/345">nhatthm/otelsql#345</a></li>
<li>Bump golang.org/x/net from 0.36.0 to 0.38.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/nhatthm/otelsql/pull/348">nhatthm/otelsql#348</a></li>
<li>Bump the otel group with 7 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/nhatthm/otelsql/pull/350">nhatthm/otelsql#350</a></li>
<li>Bump github.com/jackc/pgx/v5 from 5.7.4 to 5.7.5 in /tests/postgres
by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>
in <a
href="https://redirect.github.com/nhatthm/otelsql/pull/349">nhatthm/otelsql#349</a></li>
<li>Bump github.com/bool64/sqluct from 0.2.4 to 0.2.5 in /tests/suite by
<a href="https://github.com/dependabot"><code>@​dependabot</code></a> in
<a
href="https://redirect.github.com/nhatthm/otelsql/pull/351">nhatthm/otelsql#351</a></li>
<li>Bump github.com/bool64/sqluct from 0.2.5 to 0.2.6 in /tests/suite by
<a href="https://github.com/dependabot"><code>@​dependabot</code></a> in
<a
href="https://redirect.github.com/nhatthm/otelsql/pull/353">nhatthm/otelsql#353</a></li>
<li>Bump github.com/go-sql-driver/mysql from 1.9.2 to 1.9.3 in
/tests/mysql by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/nhatthm/otelsql/pull/352">nhatthm/otelsql#352</a></li>
<li>avoid allocating attributes when the span is not recording by <a
href="https://github.com/boekkooi-impossiblecloud"><code>@​boekkooi-impossiblecloud</code></a>
in <a
href="https://redirect.github.com/nhatthm/otelsql/pull/354">nhatthm/otelsql#354</a></li>
<li>Bump the otel group with 7 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/nhatthm/otelsql/pull/355">nhatthm/otelsql#355</a></li>
<li>Bump github.com/bool64/sqluct from 0.2.6 to 0.2.7 in /tests/suite by
<a href="https://github.com/dependabot"><code>@​dependabot</code></a> in
<a
href="https://redirect.github.com/nhatthm/otelsql/pull/356">nhatthm/otelsql#356</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/nhatthm/otelsql/compare/v0.15.0...v0.16.0">https://github.com/nhatthm/otelsql/compare/v0.15.0...v0.16.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/nhatthm/otelsql/commit/9213586ccd31a41f9a70507245f1970397502d00"><code>9213586</code></a>
Bump github.com/bool64/sqluct from 0.2.6 to 0.2.7 in /tests/suite (<a
href="https://redirect.github.com/nhatthm/otelsql/issues/356">#356</a>)</li>
<li><a
href="https://github.com/nhatthm/otelsql/commit/ff42240692792e9aa1277be17324937d8bbe0f6e"><code>ff42240</code></a>
Bump the otel group with 7 updates (<a
href="https://redirect.github.com/nhatthm/otelsql/issues/355">#355</a>)</li>
<li><a
href="https://github.com/nhatthm/otelsql/commit/324b3bc0c37ff441deddfb4b1c02840f02c45cae"><code>324b3bc</code></a>
avoid allocating attributes when the span is not recording (<a
href="https://redirect.github.com/nhatthm/otelsql/issues/354">#354</a>)</li>
<li><a
href="https://github.com/nhatthm/otelsql/commit/7cf081467d8c0457fe3c4528654a81084b8b569a"><code>7cf0814</code></a>
Bump github.com/go-sql-driver/mysql from 1.9.2 to 1.9.3 in /tests/mysql
(<a
href="https://redirect.github.com/nhatthm/otelsql/issues/352">#352</a>)</li>
<li><a
href="https://github.com/nhatthm/otelsql/commit/c5bf99ad7971c12f4909f103bd026b3592675e0b"><code>c5bf99a</code></a>
Bump github.com/bool64/sqluct from 0.2.5 to 0.2.6 in /tests/suite (<a
href="https://redirect.github.com/nhatthm/otelsql/issues/353">#353</a>)</li>
<li><a
href="https://github.com/nhatthm/otelsql/commit/f7d72a363f1fa3db072c9e6e02955a4221fcc3d7"><code>f7d72a3</code></a>
Bump github.com/bool64/sqluct from 0.2.4 to 0.2.5 in /tests/suite (<a
href="https://redirect.github.com/nhatthm/otelsql/issues/351">#351</a>)</li>
<li><a
href="https://github.com/nhatthm/otelsql/commit/ff0e5865586ec909643aff7cbbccb90d61bbbcbf"><code>ff0e586</code></a>
Bump github.com/jackc/pgx/v5 from 5.7.4 to 5.7.5 in /tests/postgres (<a
href="https://redirect.github.com/nhatthm/otelsql/issues/349">#349</a>)</li>
<li><a
href="https://github.com/nhatthm/otelsql/commit/fb7f15c94a1309d85f67db46114f5a52e6677606"><code>fb7f15c</code></a>
Bump the otel group with 7 updates (<a
href="https://redirect.github.com/nhatthm/otelsql/issues/350">#350</a>)</li>
<li><a
href="https://github.com/nhatthm/otelsql/commit/00a194983cdd2f291e8106da75a210249c5b5ff8"><code>00a1949</code></a>
Bump golang.org/x/net from 0.36.0 to 0.38.0 (<a
href="https://redirect.github.com/nhatthm/otelsql/issues/348">#348</a>)</li>
<li><a
href="https://github.com/nhatthm/otelsql/commit/ebcac0a7fc58469868c9dbfaa8b7ad7cb8fbf0e6"><code>ebcac0a</code></a>
Bump github.com/go-sql-driver/mysql from 1.9.1 to 1.9.2 in /tests/mysql
(<a
href="https://redirect.github.com/nhatthm/otelsql/issues/345">#345</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/nhatthm/otelsql/compare/v0.15.0...v0.16.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=go.nhat.io/otelsql&package-manager=go_modules&previous-version=0.15.0&new-version=0.16.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>
2025-07-07 13:45:01 +00:00
dependabot[bot] 3477ed67a5 ci: bump the github-actions group with 6 updates (#18769)
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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-07 13:44:06 +00:00
Hugo Dutka 1e715e2f66 chore: add suggestions to the tasks docs (#18766) 2025-07-07 09:15:53 -04:00
Ben Potter b26c9e2432 feat: update tasks docs (#18659)
Preview: https://coder.com/docs/@tasks-docs/ai-coder

---------

Co-authored-by: Hugo Dutka <hugo@coder.com>
2025-07-07 08:21:59 -04:00
blink-so[bot] 65809710e5 feat: make readinessProbe and livenessProbe initialDelaySeconds configurable (#18756)
Makes `initialDelaySeconds` configurable for both `readinessProbe` and
`livenessProbe` in the Helm chart.

**Changes:**
- Added `coder.readinessProbe.initialDelaySeconds` and
`coder.livenessProbe.initialDelaySeconds` to `values.yaml`
- Updated `_coder.tpl` template to use these configurable values
- Defaults to 0 seconds to maintain existing behavior

**Testing:**
- Verified template rendering with default values (0)
- Verified template rendering with custom values (30, 60)
- Both probes correctly use the configured `initialDelaySeconds`

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: kylecarbs <7122116+kylecarbs@users.noreply.github.com>
2025-07-07 08:37:19 +01:00
Ethan a1c77e36be fix: handle sql/driver.Valuer types properly in json logs (#18760)
This bumps `slog` to incorporate https://github.com/coder/slog/pull/219.

Before:
```json
{
  "fields": {
      "Code": "{Int32:0 Valid:false}",
      "ValidCode": "{Int32:12 Valid:true}"
  }
}
```

After:
```json
{
  "fields": {
      "Code": null,
      "ValidCode": 12
  }
}
```
2025-07-07 13:39:18 +10:00
Atif Ali aad14b8a6b docs: add RDP desktop button gif (#18758)
Forgot to add this in #18716
2025-07-06 20:15:37 +05:00
Atif Ali ca13b58d57 docs: reorganize remote desktop docs (#18716)
- Reorganize each option in two sections: Web and Desktop Client
- Moves the warning about UDP connections to the bottom
- Move Coder Desktop as the first option
- Links the Coder Desktop RDP module

Preview:
https://coder.com/docs/@remote-desktop-module/user-guides/workspace-access/remote-desktops
2025-07-06 15:46:15 +05:00
Edward Angert 02372caf92 docs: align feature stages for July release (#18752)
some of these changes might also be in other PRs, but hopefully this
doesn't cause any merge conflicts

closes #18197

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-07-04 09:34:49 -04:00
Bruno Quaresma 369bccd52a feat: establish terminal reconnection foundation (#18693)
Adds a new hook called `useWithRetry` as part of
https://github.com/coder/internal/issues/659

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: BrunoQuaresma <3165839+BrunoQuaresma@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-07-03 17:49:52 -03:00
blink-so[bot] 5ad1847c42 fix: add manual confirmation for release calendar update (#18748)
Add a confirmation dialog to the release script that prompts the user to
manually update the release calendar documentation before proceeding
with the release.

## Changes

- Added a confirmation prompt that asks users to update the release
calendar documentation
- Provides the URL to the documentation
(https://coder.com/docs/install/releases#release-schedule)
- Suggests running the `./scripts/update-release-calendar.sh` script
- Requires explicit confirmation before proceeding with the release
- Exits the script if the user hasn't updated the documentation

## Testing

- [x] Script syntax validation passes (`bash -n scripts/release.sh`)
- [x] Changes are placed at the appropriate point in the release flow
(after release notes editing, before actual release creation)

This addresses the issue where the release calendar documentation was
getting out of date. While automation can be added later, this ensures
users manually confirm the documentation is updated before each release.

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: bpmct <22407953+bpmct@users.noreply.github.com>
2025-07-03 19:45:12 +00:00
Steven Masley a099a8a25c feat: use preview to compute workspace tags from terraform (#18720)
If using dynamic parameters, workspace tags are extracted using
`coder/preview`.
2025-07-03 14:35:44 -05:00
Thomas Kosiewski 4607e5113b refactor: organize OAuth2 provider tests into dedicated packages (#18747)
# OAuth2 Provider Code Reorganization

This PR reorganizes the OAuth2 provider code to improve separation of concerns and maintainability. The changes include:

1. Migrating OAuth2 provider app validation tests from `coderd/oauth2_test.go` to `oauth2provider/provider_test.go`
2. Moving OAuth2 client registration validation tests to `oauth2provider/validation_test.go`
3. Adding new comprehensive test files for metadata and validation edge cases
4. Renaming `OAuth2ProviderAppSecret` to `AppSecret` for better naming consistency
5. Simplifying the main integration test in `oauth2_test.go` to focus on core functionality

The PR maintains all existing test coverage while organizing the code more logically, making it easier to understand and maintain the OAuth2 provider implementation. This reorganization will help with future enhancements to the OAuth2 provider functionality.
2025-07-03 20:41:47 +02:00
Thomas Kosiewski c65013384a refactor: move OAuth2 provider code to dedicated package (#18746)
# Refactor OAuth2 Provider Code into Dedicated Package

This PR refactors the OAuth2 provider functionality by moving it from the main `coderd` package into a dedicated `oauth2provider` package. The change improves code organization and maintainability without changing functionality.

Key changes:

- Created a new `oauth2provider` package to house all OAuth2 provider-related code
- Moved existing OAuth2 provider functionality from `coderd/identityprovider` to the new package
- Refactored handler functions to follow a consistent pattern of returning `http.HandlerFunc` instead of being handlers directly
- Split large files into smaller, more focused files organized by functionality:
  - `app_secrets.go` - Manages OAuth2 application secrets
  - `apps.go` - Handles OAuth2 application CRUD operations
  - `authorize.go` - Implements the authorization flow
  - `metadata.go` - Provides OAuth2 metadata endpoints
  - `registration.go` - Handles dynamic client registration
  - `revoke.go` - Implements token revocation
  - `secrets.go` - Manages secret generation and validation
  - `tokens.go` - Handles token issuance and validation

This refactoring improves code organization and makes the OAuth2 provider functionality more maintainable while preserving all existing behavior.
2025-07-03 20:24:45 +02:00
Thomas Kosiewski 7fbb3ced5b feat: add MCP HTTP server experiment and improve experiment middleware (#18712)
# Add MCP HTTP Server Experiment

This PR adds a new experiment flag `mcp-server-http` to enable the MCP HTTP server functionality. The changes include:

1. Added a new experiment constant `ExperimentMCPServerHTTP` with the value "mcp-server-http"
2. Added display name and documentation for the new experiment
3. Improved the experiment middleware to:
   - Support requiring multiple experiments
   - Provide better error messages with experiment display names
   - Add a development mode bypass option
4. Applied the new experiment requirement to the MCP HTTP endpoint
5. Replaced the custom OAuth2 middleware with the standard experiment middleware

The PR also improves the `Enabled()` method on the `Experiments` type by using `slices.Contains()` for better readability.
2025-07-03 20:09:18 +02:00
Thomas Kosiewski 15551541e8 feat: add OAuth2 provider functionality as an experiment (#18692)
# Add OAuth2 Provider Functionality as an Experiment

This PR adds a new experiment flag `oauth2` that enables OAuth2 provider functionality in Coder. When enabled, this experiment allows Coder to act as an OAuth2 provider.

The changes include:
- Added the new `ExperimentOAuth2` constant with appropriate documentation
- Updated the OAuth2 provider middleware to check for the experiment flag
- Modified the error message to indicate that the OAuth2 provider requires enabling the experiment
- Added the new experiment to the known experiments list in the SDK

Previously, OAuth2 provider functionality was only available in development mode. With this change, it can be enabled in production environments by activating the experiment.
2025-07-03 19:44:29 +02:00
blink-so[bot] 2c95a1dd71 chore: update gofumpt from v0.4.0 to v0.8.0 (#18652) 2025-07-03 11:28:00 -06:00
Thomas Kosiewski 494dccc510 feat: implement MCP HTTP server endpoint with authentication (#18670)
# Add MCP HTTP server with streamable transport support

- Add MCP HTTP server with streamable transport support
- Integrate with existing toolsdk for Coder workspace operations
- Add comprehensive E2E tests with OAuth2 bearer token support
- Register MCP endpoint at /api/experimental/mcp/http with authentication
- Support RFC 6750 Bearer token authentication for MCP clients

Change-Id: Ib9024569ae452729908797c42155006aa04330af
Signed-off-by: Thomas Kosiewski <tk@coder.com>
2025-07-03 19:27:41 +02:00
Thomas Kosiewski 60b08f0960 fix: remove unique constraint on OAuth2 provider app names (#18669)
# Remove unique constraint on OAuth2 provider app names

This PR removes the unique constraint on the `name` field in the `oauth2_provider_apps` table to comply with RFC 7591, which only requires unique client IDs, not unique client names.

Changes include:
- Removing the unique constraint from the database schema
- Adding migration files for both up and down migrations
- Removing the name uniqueness check in the in-memory database implementation
- Updating the unique constraint constants

Change-Id: Iae7a1a06546fbc8de541a52e291f8a4510d57e8a
Signed-off-by: Thomas Kosiewski <tk@coder.com>
2025-07-03 19:13:13 +02:00
Jaayden Halko 90a875d916 chore: implement tests for dynamic parameter component (#18745) 2025-07-03 13:09:59 -04:00
Thomas Kosiewski 4dcf0c3e7e docs: add comprehensive development documentation (#18646)
# Organize Development Documentation into Separate Files

This PR reorganizes the development documentation by splitting the monolithic CLAUDE.md file into multiple focused documents. The main file now provides a concise overview with essential commands and critical patterns, while importing detailed content from specialized guides.

Key improvements:
- Created separate documentation files for specific domains:
  - Database development patterns
  - OAuth2 implementation guidelines
  - Testing best practices
  - Troubleshooting common issues
  - Development workflows and guidelines
- Restructured the main CLAUDE.md to be more scannable with improved formatting
- Added quick-reference tables for common commands
- Maintained all existing content while making it more accessible
- Highlighted critical patterns that must be followed

This organization makes the documentation more maintainable and easier to navigate, allowing developers to quickly find relevant information for their specific tasks.
2025-07-03 18:51:23 +02:00
Thomas Kosiewski 74e1d5c4b6 feat: implement OAuth2 dynamic client registration (RFC 7591/7592) (#18645)
# Implement OAuth2 Dynamic Client Registration (RFC 7591/7592)

This PR implements OAuth2 Dynamic Client Registration according to RFC 7591 and Client Configuration Management according to RFC 7592. These standards allow OAuth2 clients to register themselves programmatically with Coder as an authorization server.

Key changes include:

1. Added database schema extensions to support RFC 7591/7592 fields in the `oauth2_provider_apps` table
2. Implemented `/oauth2/register` endpoint for dynamic client registration (RFC 7591)
3. Added client configuration management endpoints (RFC 7592):
   - GET/PUT/DELETE `/oauth2/clients/{client_id}`
   - Registration access token validation middleware

4. Added comprehensive validation for OAuth2 client metadata:
   - URI validation with support for custom schemes for native apps
   - Grant type and response type validation
   - Token endpoint authentication method validation

5. Enhanced developer documentation with:
   - RFC compliance guidelines
   - Testing best practices to avoid race conditions
   - Systematic debugging approaches for OAuth2 implementations

The implementation follows security best practices from the RFCs, including proper token handling, secure defaults, and appropriate error responses. This enables third-party applications to integrate with Coder's OAuth2 provider capabilities programmatically.
2025-07-03 18:33:47 +02:00
Steven Masley 699dd8e554 chore: create interface for pkgs to return codersdk errors (#18719)
This interface allows it to create rich codersdk errors and pass them up to the `wsbuilder` error handling.
2025-07-03 08:33:45 -05:00
Mathias Fredriksson 7d412c2272 feat(examples/templates): add docker-devcontainer template and rename envbuilder template (#18741)
This change adds a new `docker-devcontainer` template which allows you
to provision a workspace running in Docker, that also creates workspaces
via Docker running inside (DinD).

- **chore(examples/templates): rename `docker-devcontainer` to
`docker-envbuilder`**
- **feat(examples/templates): add `docker-devcontainer` example
template**
2025-07-03 15:50:08 +03:00
Mathias Fredriksson 8b6d70bf1f fix(site): update vs code dev container button URLs (#18696) 2025-07-03 15:03:05 +03:00
Atif Ali 351745752b docs: update release calendar with 2.24 release (#18742) 2025-07-03 11:20:16 +00:00
Jaayden Halko 61b6562f9a feat: display descriptions in multi-select component (#18730)
<img width="528" alt="Screenshot 2025-07-02 at 23 06 51"
src="https://github.com/user-attachments/assets/d6223d99-bc1b-4325-8eb6-d87a687bcec8"
/>
2025-07-03 05:55:20 -04:00
Atif Ali db8ed007f9 chore: add rdp icon (#18736) 2025-07-03 08:22:02 +02:00
Ethan 7500aa4d6c fix(cli): calculate coder ping max correctly (#18734)
Embarassing mistake I made months ago 😦 

*Doesn't effect schmoder, since we don't parse that max, it calculates it itself
2025-07-03 13:22:54 +10:00
Rowan Smith 6db6f48300 chore: fix broken link in docs (#18733)
Fixes the "Helm README" link on
https://coder.com/docs/install/kubernetes so it goes to the right path.

Side note: I don't see any content in
https://coder.com/docs/about/contributing/documentation about to whom
such a PR should be assigned, if any. Edward was suggested and I see
you've worked on other PR's with the `docs` label, so going with that.
2025-07-02 22:34:29 -04:00
Thomas Kosiewski 09c50559f3 feat: implement RFC 6750 Bearer token authentication (#18644)
# Add RFC 6750 Bearer Token Authentication Support

This PR implements RFC 6750 Bearer Token authentication as an additional authentication method for Coder's API. This allows clients to authenticate using standard OAuth 2.0 Bearer tokens in two ways:

1. Using the `Authorization: Bearer <token>` header
2. Using the `access_token` query parameter

Key changes:

- Added support for extracting tokens from both Bearer headers and access_token query parameters
- Implemented proper WWW-Authenticate headers for 401/403 responses with appropriate error descriptions
- Added comprehensive test coverage for the new authentication methods
- Updated the OAuth2 protected resource metadata endpoint to advertise Bearer token support
- Enhanced the OAuth2 testing script to verify Bearer token functionality

These authentication methods are added as fallback options, maintaining backward compatibility with Coder's existing authentication mechanisms. The existing authentication methods (cookies, session token header, etc.) still take precedence.

This implementation follows the OAuth 2.0 Bearer Token specification (RFC 6750) and improves interoperability with standard OAuth 2.0 clients.
2025-07-02 19:14:54 +02:00
Hugo Dutka eade5b019b fix: handle null response from the template presets endpoint (#18723)
The template presets endpoint returns a null response when a template
version does not define any presets.
2025-07-02 19:08:33 +02:00
Thomas Kosiewski 33bbf18a4b feat: add OAuth2 protected resource metadata endpoint for RFC 9728 (#18643)
# Add OAuth2 Protected Resource Metadata Endpoint

This PR implements the OAuth2 Protected Resource Metadata endpoint according to RFC 9728. The endpoint is available at `/.well-known/oauth-protected-resource` and provides information about Coder as an OAuth2 protected resource.

Key changes:
- Added a new endpoint at `/.well-known/oauth-protected-resource` that returns metadata about Coder as an OAuth2 protected resource
- Created a new `OAuth2ProtectedResourceMetadata` struct in the SDK
- Added tests to verify the endpoint functionality
- Updated API documentation to include the new endpoint

The implementation currently returns basic metadata including the resource identifier and authorization server URL. The `scopes_supported` field is empty until a scope system based on RBAC permissions is implemented. The `bearer_methods_supported` field is omitted as Coder uses custom authentication methods rather than standard RFC 6750 bearer tokens.

A TODO has been added to implement RFC 6750 bearer token support in the future.
2025-07-02 18:58:41 +02:00
Thomas Kosiewski 1b73b1a12f docs: add Go LSP MCP configs and tools guide for code navigation (#18613)
# Add Code Navigation and Investigation Guide for Go LSP Tools

Added a new section to the CLAUDE.md documentation that explains how to use Go Language Server Protocol (LSP) tools when working with the Coder codebase. The guide includes:

- Commands for finding function definitions, symbol references, and getting symbol information
- Examples of LSP usage with specific commands
- Guidance on when to use LSP versus other tools like grep or bash
- A structured investigation strategy for navigating the codebase, starting with route registration and tracing through to implementations

This documentation helps developers more efficiently explore and understand the codebase structure.
2025-07-02 18:43:35 +02:00
Cian Johnston 630804ec92 chore: fix duplicate migration 000345 (#18721)
Fixes duplicate migration introduced by
https://github.com/coder/coder/pull/18575
2025-07-02 16:15:10 +00:00
Thomas Kosiewski f0c9c4dbcd feat: oauth2 - add RFC 8707 resource indicators and audience validation (#18575)
This pull request implements RFC 8707, Resource Indicators for OAuth 2.0 (https://datatracker.ietf.org/doc/html/rfc8707), to enhance the security of our OAuth 2.0 provider. 

This change enables proper audience validation and binds access tokens to their intended resource, which is crucial
  for preventing token misuse in multi-tenant environments or deployments with multiple resource servers.

##  Key Changes:


   * Resource Parameter Support: Adds support for the resource parameter in both the authorization (`/oauth2/authorize`) and token (`/oauth2/token`) endpoints, allowing clients to specify the intended resource server.
   * Audience Validation: Implements server-side validation to ensure that the resource parameter provided during the token exchange matches the one from the authorization request.
   * API Middleware Enforcement: Introduces a new validation step in the API authentication middleware (`coderd/httpmw/apikey.go`) to verify that the audience of the access token matches the resource server being accessed.
   * Database Schema Updates:
       * Adds a `resource_uri` column to the `oauth2_provider_app_codes` table to store the resource requested during authorization.
       * Adds an `audience` column to the `oauth2_provider_app_tokens` table to bind the issued token to a specific audience.
   * Enhanced PKCE: Includes a minor enhancement to the PKCE implementation to protect against timing attacks.
   * Comprehensive Testing: Adds extensive new tests to `coderd/oauth2_test.go` to cover various RFC 8707 scenarios, including valid flows, mismatched resources, and refresh token validation.

##  How it Works:


   1. An OAuth2 client specifies the target resource (e.g., https://coder.example.com) using the resource parameter in the authorization request.
   2. The authorization server stores this resource URI with the authorization code.
   3. During the token exchange, the server validates that the client provides the same resource parameter.
   4. The server issues an access token with an audience claim set to the validated resource URI.
   5. When the client uses the access token to call an API endpoint, the middleware verifies that the token's audience matches the URL of the Coder deployment, rejecting any tokens intended for a different resource.


  This ensures that a token issued for one Coder deployment cannot be used to access another, significantly strengthening our authentication security.

---

Change-Id: I3924cb2139e837e3ac0b0bd40a5aeb59637ebc1b
Signed-off-by: Thomas Kosiewski <tk@coder.com>
2025-07-02 17:49:00 +02:00
Sas Swart 01163ea57b feat: allow users to pause prebuilt workspace reconciliation (#18700)
This PR provides two commands:
* `coder prebuilds pause`
* `coder prebuilds resume`

These allow the suspension of all prebuilds activity, intended for use
if prebuilds are misbehaving.
2025-07-02 15:05:42 +00:00
Steven Masley 4072d228c5 feat: support dynamic parameters on create template request (#18636)
Future work is to add this checkbox to the UI to opt into dynamic
parameters from the first template create.
2025-07-02 09:44:01 -05:00
blink-so[bot] 91aa583ea4 docs: mention Windsurf module in Windsurf documentation (#18715)
Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: bpmct <22407953+bpmct@users.noreply.github.com>
2025-07-02 19:13:35 +05:00
Spike Curtis 59c8b560fa test: add test that we close stdin on SSH session close (#18711)
closes #18519

Adds a unit test that verifies that we close the stdin to a non-TTY process when the SSH session connected to it exits.

c.f. https://github.com/coder/coder/issues/18519#issuecomment-3027609871

Validates that we match OpenSSH behavior.
2025-07-02 16:23:07 +04:00
Mathias Fredriksson 8a69f6af17 fix(agent/agentcontainers): avoid logspam in API updaterLoop (#18710)
Fixes #18709
2025-07-02 14:29:45 +03:00
Atif Ali 0b8ed9c2bd docs: move the duplicate Coder Desktop install warning to Troubleshooting (#18691)
Co-authored-by: Edward Angert <EdwardAngert@users.noreply.github.com>
2025-07-02 11:22:58 +00:00
ケイラ 0b82f41a24 feat: allow masking workspace parameter inputs (#18595) 2025-07-01 16:27:43 -06:00
ケイラ d22ac1cf65 chore: don't cache errors in file cache (#18555) 2025-07-01 13:50:37 -06:00
Edward Angert ab254adfb9 docs: add section about how to disable path based apps to security best practices (#18419)
add a new section specifically about how to disable path-based apps to
the security best practices doc

## todo

- [x] copy review
- [x] cross-linking

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
Co-authored-by: Dean Sheather <dean@deansheather.com>
2025-07-01 13:18:47 -04:00
Garrett Delfosse d14e9be0fe feat: add Coder registry links to template creation and editing (#18680)
## Summary
- Add "Browse Templates" card to starter templates page
- Add "Browse Modules" button to template editor topbar
- Both link to https://registry.coder.com as requested in #18141

<img width="1248" alt="Screenshot 2025-07-01 at 9 29 26 AM"
src="https://github.com/user-attachments/assets/2295e45c-2056-41cd-a39e-48d4379295be"
/>
<img width="943" alt="Screenshot 2025-07-01 at 9 29 45 AM"
src="https://github.com/user-attachments/assets/e0652b76-43bf-4794-825d-72b4fe7c5e5f"
/>



🤖 Generated with [Claude Code](https://claude.ai/code)

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-07-01 13:18:27 -04:00
Mathias Fredriksson 1158ca25bf fix(dogfood/coder): run go clean cache at workspace shutdown (#18685)
The Go build cache has a tendency to accumulate and waste space
(typically in the realm of 10-70 GB). This change automatically cleans
up the cache on shutdown to prevent accumulation.
2025-07-01 15:22:26 +01:00
Thomas Kosiewski 6f2834f62a feat: oauth2 - add authorization server metadata endpoint and PKCE support (#18548)
## Summary

  This PR implements critical MCP OAuth2 compliance features for Coder's authorization server, adding PKCE support, resource parameter handling, and OAuth2 server metadata discovery. This brings Coder's OAuth2 implementation significantly closer to production readiness for MCP (Model Context Protocol)
  integrations.

  ## What's Added

  ### OAuth2 Authorization Server Metadata (RFC 8414)
  - Add `/.well-known/oauth-authorization-server` endpoint for automatic client discovery
  - Returns standardized metadata including supported grant types, response types, and PKCE methods
  - Essential for MCP client compatibility and OAuth2 standards compliance

  ### PKCE Support (RFC 7636)
  - Implement Proof Key for Code Exchange with S256 challenge method
  - Add `code_challenge` and `code_challenge_method` parameters to authorization flow
  - Add `code_verifier` validation in token exchange
  - Provides enhanced security for public clients (mobile apps, CLIs)

  ### Resource Parameter Support (RFC 8707)
  - Add `resource` parameter to authorization and token endpoints
  - Store resource URI and bind tokens to specific audiences
  - Critical for MCP's resource-bound token model

  ### Enhanced OAuth2 Error Handling
  - Add OAuth2-compliant error responses with proper error codes
  - Use standard error format: `{"error": "code", "error_description": "details"}`
  - Improve error consistency across OAuth2 endpoints

  ### Authorization UI Improvements
  - Fix authorization flow to use POST-based consent instead of GET redirects
  - Remove dependency on referer headers for security decisions
  - Improve CSRF protection with proper state parameter validation

  ## Why This Matters

  **For MCP Integration:** MCP requires OAuth2 authorization servers to support PKCE, resource parameters, and metadata discovery. Without these features, MCP clients cannot securely authenticate with Coder.

  **For Security:** PKCE prevents authorization code interception attacks, especially critical for public clients. Resource binding ensures tokens are only valid for intended services.

  **For Standards Compliance:** These are widely adopted OAuth2 extensions that improve interoperability with modern OAuth2 clients.

  ## Database Changes

  - **Migration 000343:** Adds `code_challenge`, `code_challenge_method`, `resource_uri` to `oauth2_provider_app_codes`
  - **Migration 000343:** Adds `audience` field to `oauth2_provider_app_tokens` for resource binding
  - **Audit Updates:** New OAuth2 fields properly tracked in audit system
  - **Backward Compatibility:** All changes maintain compatibility with existing OAuth2 flows

  ## Test Coverage

  - Comprehensive PKCE test suite in `coderd/identityprovider/pkce_test.go`
  - OAuth2 metadata endpoint tests in `coderd/oauth2_metadata_test.go`
  - Integration tests covering PKCE + resource parameter combinations
  - Negative tests for invalid PKCE verifiers and malformed requests

  ## Testing Instructions

  ```bash
  # Run the comprehensive OAuth2 test suite
  ./scripts/oauth2/test-mcp-oauth2.sh

  Manual Testing with Interactive Server

  # Start Coder in development mode
  ./scripts/develop.sh

  # In another terminal, set up test app and run interactive flow
  eval $(./scripts/oauth2/setup-test-app.sh)
  ./scripts/oauth2/test-manual-flow.sh
  # Opens browser with OAuth2 flow, handles callback automatically

  # Clean up when done
  ./scripts/oauth2/cleanup-test-app.sh

  Individual Component Testing

  # Test metadata endpoint
  curl -s http://localhost:3000/.well-known/oauth-authorization-server | jq .

  # Test PKCE generation
  ./scripts/oauth2/generate-pkce.sh

  # Run specific test suites
  go test -v ./coderd/identityprovider -run TestVerifyPKCE
  go test -v ./coderd -run TestOAuth2AuthorizationServerMetadata
```

  ### Breaking Changes

  None. All changes maintain backward compatibility with existing OAuth2 flows.

---

Change-Id: Ifbd0d9a543d545f9f56ecaa77ff2238542ff954a
Signed-off-by: Thomas Kosiewski <tk@coder.com>
2025-07-01 15:39:29 +02:00
Cian Johnston dbfbef6ecb chore(cli): increase reconciliation interval to 1 minute (#18690)
Increase prebuilds reconciliation and backoff interval to 1 minute by
default.
2025-07-01 14:35:02 +01:00
Susana Ferreira 57a6d59d8d docs: add warning about prebuilds incompatibility with certain features (#18689)
## Description

This PR adds a warning to the prebuilds documentation about
incompatibility with Workspace schedule (autostart/autostop), dormancy,
and DevContainers. These configurations can interfere with prebuild
behavior and should be avoided for now.

Preview:
![Screenshot 2025-07-01 at 12 58
02](https://github.com/user-attachments/assets/e1a837de-b66c-4414-bd0b-471474b43b84)
2025-07-01 13:59:07 +01:00
Cian Johnston 4e95b1d20e fix: revert changes to GetRunningPrebuiltWorkspaces (#18688)
… (#18588)"

This reverts commit 258a839d27.
2025-07-01 10:11:43 +00:00
Hugo Dutka 3d22e27f4e fix: handle task sidebar app health check disabled correctly (#18687)
Previously, by mistake, the task sidebar would not display workspace
apps that don't have a health check configured.
2025-07-01 12:01:17 +02:00
Danielle Maywood 7e372f7a35 fix(agent/agentcontainers): reset error at start of rebuild (#18686)
Reset the error associated with a devcontainer when a rebuild is requested.
2025-07-01 10:57:43 +01:00
Cian Johnston 258a839d27 chore(coderd/database): optimize GetRunningPrebuiltWorkspaces (#18588)
Fixes https://github.com/coder/internal/issues/715

After this change, the only use of the `workspace_prebuilds` view is the
`ClaimPrebuiltWorkspace` query. A subsequent PR will update the view.

Before: ~44ms https://explain.dalibo.com/plan/76cbe21d1a4c9329#plan

After: 7.3ms https://explain.dalibo.com/plan/5abbdf926315677e#plan
2025-07-01 09:42:01 +01:00
Danny Kopping 0f56f0029b chore: add which-release script (#18657) 2025-07-01 08:05:44 +00:00
Kacper Sawicki 695de6e0c0 chore(coderd/database): optimize AuditLogs queries (#18600)
Closes #17689

This PR optimizes the audit logs query performance by extracting the
count operation into a separate query and replacing the OR-based
workspace_builds with conditional joins.

## Query changes
* Extracted count query to separate one
* Replaced single `workspace_builds` join with OR conditions with
separate conditional joins
* Added conditional joins
* `wb_build` for workspace_build audit logs (which is a direct lookup)
    * `wb_workspace` for workspace create audit logs (via workspace)

Optimized AuditLogsOffset query:
https://explain.dalibo.com/plan/4g1hbedg4a564bg8

New CountAuditLogs query:
https://explain.dalibo.com/plan/ga2fbcecb9efbce3
2025-07-01 07:31:14 +02:00
Perdjesk 74e1953619 docs: bitnami/postgresql primary prefix for persistence.size config key (#18446)
The `bitnami/postgresql`chart doesn't have a value with key
`persistence.size`. The correct value key which control the size of the
PVC is `primary.persistence.size`.

See:
-
https://github.com/bitnami/charts/blob/postgresql/16.7.12/bitnami/postgresql/values.yaml
- The JSON schema,
[`values.schema.json`](https://github.com/bitnami/charts/blob/postgresql/16.7.12/bitnami/postgresql/values.schema.json)
of the
[`values.yaml`](https://github.com/bitnami/charts/blob/postgresql/16.7.12/bitnami/postgresql/values.yaml)
included in the chart is out of sync.
https://github.com/bitnami/readme-generator-for-helm/issues/142
2025-06-30 16:55:57 -04:00
Danielle Maywood 4756080eb2 feat(site): display devcontainer start error (#18637)
Fixes https://github.com/coder/internal/issues/705

Surface errors on the UI when a devcontainer agent is unable to be
injected.
2025-06-30 21:34:29 +01:00
Asher fc7700a62f fix: improve reliability of app statuses (#18622)
We were discarding all "working" updates from the screen watcher because
we cannot tell the difference between the agent or user changing the
screen, but it makes sense to accept it as the very first update,
because the agent could be working but neglected to report that fact, so
you would never get an initial "working" update (it would just
eventually go straight to "idle").

Also messages can start at zero, so I made a fix for that as well,
although the first message will be from the LLM and we ignore
those anyway, so this probably has no actual effect, but seems more
technically correct.

And it seems I forgot to actually update the last message ID, which 
also does not actually matter for user messages (since I think the
SSE endpoint will not re-emit a user message it has already emitted),
but seems more technically correct to check.

Lastly, if we have the screen watcher, ignore the agent's self-reported
state and always use "working" since it is unreliable.  The idle state will
eventually be caught by the watcher.
2025-06-30 12:12:20 -08:00
Jaayden Halko ad6773360c fix: display error message on delete workspace error (#18654)
resolves coder/preview#155

When deleting a workspace, show an error dialog if deleting the
workspace is not possible.

![Screenshot 2025-06-28 at 10 06
47](https://github.com/user-attachments/assets/650bfb54-6ed9-4f41-a410-1333afeee0a4)
2025-06-30 15:09:51 -04:00
Hugo Dutka 22c5e84a7e fix: handle health status when displaying task apps (#18675)
Previously, we displayed apps in iframes on the task page without
waiting for them to initialize. This would result in 502 errors shown to
the user. This PR makes sure that we only display the app after it
initializes.

### Before
<img width="1920" alt="Screenshot 2025-06-30 at 14 59 07 (2)"
src="https://github.com/user-attachments/assets/63564ac9-abce-4a0c-b58e-b988772fae82"
/>
2025-06-30 20:46:28 +02:00
Spike Curtis b7cb275d7e fix: stop tearing down non-TTY processes on SSH session end (#18673)
(possibly temporary) fix for #18519

Matches OpenSSH for non-tty sessions, where we don't actively terminate
the process.

Adds explicit tracking to the SSH server for these processes so that if
we are shutting down we terminate them: this ensures that we can shut
down quickly to allow shutdown scripts to run. It also ensures our tests
don't leak system resources.
2025-06-30 22:06:05 +04:00
Mathias Fredriksson 9ccaf86099 fix(agent/agentcontainers): always derive devcontainer name from workspace folder (#18666) 2025-06-30 20:56:39 +03:00
Vladislav Rudskoy 715c7b0c24 chore: correct RD limitation comment (#18668)
subj
2025-06-30 22:46:00 +05:00
Atif Ali b1e8d5d5e0 docs: remove beta label from Coder Desktop (#18651)
Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: Edward Angert <EdwardAngert@users.noreply.github.com>
2025-06-30 21:23:09 +05:00
dependabot[bot] 851cda55d6 ci: bump the github-actions group with 3 updates (#18665)
Bumps the github-actions group with 3 updates:
[step-security/harden-runner](https://github.com/step-security/harden-runner),
[fluxcd/flux2](https://github.com/fluxcd/flux2) and
[github/codeql-action](https://github.com/github/codeql-action).

Updates `step-security/harden-runner` from 2.12.1 to 2.12.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/step-security/harden-runner/releases">step-security/harden-runner's
releases</a>.</em></p>
<blockquote>
<h2>v2.12.2</h2>
<h2>What's Changed</h2>
<p>Added HTTPS Monitoring for additional destinations -
*.githubusercontent.com
Bug fixes:</p>
<ul>
<li>Implicitly allow local multicast, local unicast and broadcast IP
addresses in block mode</li>
<li>Increased policy map size for block mode</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/step-security/harden-runner/compare/v2...v2.12.2">https://github.com/step-security/harden-runner/compare/v2...v2.12.2</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/step-security/harden-runner/commit/6c439dc8bdf85cadbbce9ed30d1c7b959517bc49"><code>6c439dc</code></a>
Merge pull request <a
href="https://redirect.github.com/step-security/harden-runner/issues/562">#562</a>
from step-security/rc-22</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/bf5688696d0b2cf8221eadb38e4232386015763a"><code>bf56886</code></a>
update agent</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/5436dac7b5fa76a1a179168f5f4de86c00e22c84"><code>5436dac</code></a>
update agent</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/88d305a3530acfa6d1939000baaa571e520df9c8"><code>88d305a</code></a>
update agent</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/b976878278dbe3bc16039f7165b8faf809c50297"><code>b976878</code></a>
update agent</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/875cc92db280a03598e7492a3e6c165c689f7af6"><code>875cc92</code></a>
Update agent</li>
<li>See full diff in <a
href="https://github.com/step-security/harden-runner/compare/002fdce3c6a235733a90a27c80493a3241e56863...6c439dc8bdf85cadbbce9ed30d1c7b959517bc49">compare
view</a></li>
</ul>
</details>
<br />

Updates `fluxcd/flux2` from 2.6.2 to 2.6.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/fluxcd/flux2/releases">fluxcd/flux2's
releases</a>.</em></p>
<blockquote>
<h2>v2.6.3</h2>
<h2>Highlights</h2>
<p>Flux v2.6.3 is a patch release that comes with various fixes. Users
are encouraged to upgrade for the best experience.</p>
<p>Fixes:</p>
<ul>
<li>Fix for <code>rsa-sha2-512</code> and <code>rsa-sha2-256</code>
algorithms not being prioritized for <code>ssh-rsa</code> host keys in
source-controller, image-automation-controller and Flux CLI
bootstrap.</li>
</ul>
<h2>Components changelog</h2>
<ul>
<li>source-controller <a
href="https://github.com/fluxcd/source-controller/blob/v1.6.2/CHANGELOG.md">v1.6.2</a></li>
<li>image-automation-controller <a
href="https://github.com/fluxcd/image-automation-controller/blob/v0.41.2/CHANGELOG.md">v0.41.2</a></li>
</ul>
<h2>CLI changed</h2>
<ul>
<li>[release/v2.6.x] Update toolkit components by <a
href="https://github.com/fluxcdbot"><code>@​fluxcdbot</code></a> in <a
href="https://redirect.github.com/fluxcd/flux2/pull/5427">fluxcd/flux2#5427</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/fluxcd/flux2/compare/v2.6.2...v2.6.3">https://github.com/fluxcd/flux2/compare/v2.6.2...v2.6.3</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/fluxcd/flux2/commit/bda4c8187e436462be0d072e728b67afa215c593"><code>bda4c81</code></a>
Merge pull request <a
href="https://redirect.github.com/fluxcd/flux2/issues/5427">#5427</a>
from fluxcd/backport-5426-to-release/v2.6.x</li>
<li><a
href="https://github.com/fluxcd/flux2/commit/3f281da7381e3984913244d78b9768e4fa5fbb65"><code>3f281da</code></a>
Fix: Prioritize sha2-512 and sha2-256 for ssh-rsa host keys</li>
<li><a
href="https://github.com/fluxcd/flux2/commit/963e99188cb0a77dfbe70a3db7a34c0f6e159dd3"><code>963e991</code></a>
Update toolkit components</li>
<li>See full diff in <a
href="https://github.com/fluxcd/flux2/compare/a48f81a66c4ca9fbd993233ab99dd03a7cfbe09a...bda4c8187e436462be0d072e728b67afa215c593">compare
view</a></li>
</ul>
</details>
<br />

Updates `github/codeql-action` from 3.29.0 to 3.29.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.29.1</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.29.1 - 27 Jun 2025</h2>
<ul>
<li>Fix bug in PR analysis where user-provided <code>include</code>
query filter fails to exclude non-included queries. <a
href="https://redirect.github.com/github/codeql-action/pull/2938">#2938</a></li>
<li>Update default CodeQL bundle version to 2.22.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2950">#2950</a></li>
</ul>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.29.1/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<ul>
<li>Experimental: When the <code>quality-queries</code> input for the
<code>init</code> action is provided with an argument, separate
<code>.quality.sarif</code> files are produced and uploaded for each
language with the results of the specified queries. Do not use this in
production as it is part of an internal experiment and subject to change
at any time. <a
href="https://redirect.github.com/github/codeql-action/pull/2935">#2376</a></li>
</ul>
<h2>3.29.1 - 27 Jun 2025</h2>
<ul>
<li>Fix bug in PR analysis where user-provided <code>include</code>
query filter fails to exclude non-included queries. <a
href="https://redirect.github.com/github/codeql-action/pull/2938">#2938</a></li>
<li>Update default CodeQL bundle version to 2.22.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2950">#2950</a></li>
</ul>
<h2>3.29.0 - 11 Jun 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.22.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2925">#2925</a></li>
<li>Bump minimum CodeQL bundle version to 2.16.6. <a
href="https://redirect.github.com/github/codeql-action/pull/2912">#2912</a></li>
</ul>
<h2>3.28.19 - 03 Jun 2025</h2>
<ul>
<li>The CodeQL Action no longer includes its own copy of the extractor
for the <code>actions</code> language, which is currently in public
preview.
The <code>actions</code> extractor has been included in the CodeQL CLI
since v2.20.6. If your workflow has enabled the <code>actions</code>
language <em>and</em> you have pinned
your <code>tools:</code> property to a specific version of the CodeQL
CLI earlier than v2.20.6, you will need to update to at least CodeQL
v2.20.6 or disable
<code>actions</code> analysis.</li>
<li>Update default CodeQL bundle version to 2.21.4. <a
href="https://redirect.github.com/github/codeql-action/pull/2910">#2910</a></li>
</ul>
<h2>3.28.18 - 16 May 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.3. <a
href="https://redirect.github.com/github/codeql-action/pull/2893">#2893</a></li>
<li>Skip validating SARIF produced by CodeQL for improved performance.
<a
href="https://redirect.github.com/github/codeql-action/pull/2894">#2894</a></li>
<li>The number of threads and amount of RAM used by CodeQL can now be
set via the <code>CODEQL_THREADS</code> and <code>CODEQL_RAM</code>
runner environment variables. If set, these environment variables
override the <code>threads</code> and <code>ram</code> inputs
respectively. <a
href="https://redirect.github.com/github/codeql-action/pull/2891">#2891</a></li>
</ul>
<h2>3.28.17 - 02 May 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.2. <a
href="https://redirect.github.com/github/codeql-action/pull/2872">#2872</a></li>
</ul>
<h2>3.28.16 - 23 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2863">#2863</a></li>
</ul>
<h2>3.28.15 - 07 Apr 2025</h2>
<ul>
<li>Fix bug where the action would fail if it tried to produce a debug
artifact with more than 65535 files. <a
href="https://redirect.github.com/github/codeql-action/pull/2842">#2842</a></li>
</ul>
<h2>3.28.14 - 07 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2838">#2838</a></li>
</ul>
<h2>3.28.13 - 24 Mar 2025</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/39edc492dbe16b1465b0cafca41432d857bdb31a"><code>39edc49</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2953">#2953</a>
from github/update-v3.29.1-428aea55f</li>
<li><a
href="https://github.com/github/codeql-action/commit/27c4fb1eef772029c0bbeed96d8538a2af79e541"><code>27c4fb1</code></a>
Update changelog for v3.29.1</li>
<li><a
href="https://github.com/github/codeql-action/commit/428aea55f52aac0db14530fe4e5c97462c533f7d"><code>428aea5</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2952">#2952</a>
from github/redsun82/fix-swift-test</li>
<li><a
href="https://github.com/github/codeql-action/commit/973250f3d233f50890a597fef853ae3b2a538a31"><code>973250f</code></a>
Swift: recreate a default Swift package to fix test</li>
<li><a
href="https://github.com/github/codeql-action/commit/8ef17824cfb2a3f40cbc7f41bac7e055e53b8164"><code>8ef1782</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2950">#2950</a>
from github/update-bundle/codeql-bundle-v2.22.1</li>
<li><a
href="https://github.com/github/codeql-action/commit/f3bfb9860305f6e80e048f4785d6bee33bf77356"><code>f3bfb98</code></a>
Add changelog note</li>
<li><a
href="https://github.com/github/codeql-action/commit/2b4afc20b636de8884609ee2a501a68a67766f26"><code>2b4afc2</code></a>
Update default bundle to codeql-bundle-v2.22.1</li>
<li><a
href="https://github.com/github/codeql-action/commit/9b02dc2f60288b463e7a66e39c78829b62780db7"><code>9b02dc2</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2928">#2928</a>
from github/update-supported-enterprise-server-versions</li>
<li><a
href="https://github.com/github/codeql-action/commit/7ab92d0295a9b09eb653169acdb2c24f7c43614a"><code>7ab92d0</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2948">#2948</a>
from github/mbg/copilot-instructions</li>
<li><a
href="https://github.com/github/codeql-action/commit/2cae828745579fc9309404e09440d23bba2f7b79"><code>2cae828</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2947">#2947</a>
from github/dependency-proxy/codeql-bundle-v2.22.0</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/ce28f5bb42b7a9f2c824e633a3f6ee835bab6858...39edc492dbe16b1465b0cafca41432d857bdb31a">compare
view</a></li>
</ul>
</details>
<br />


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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-30 15:37:51 +00:00
dependabot[bot] 7f23be3874 chore: bump github.com/andybalholm/brotli from 1.1.1 to 1.2.0 (#18661)
Bumps
[github.com/andybalholm/brotli](https://github.com/andybalholm/brotli)
from 1.1.1 to 1.2.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/andybalholm/brotli/commit/676a02057d90cd1e75ede54cdfa79d4cdb574dae"><code>676a020</code></a>
Pathfinder: improve cost calculation, and use it in NewWriterV2</li>
<li><a
href="https://github.com/andybalholm/brotli/commit/fc701daacf9eec30cae7a5cec6e5e38827894d4c"><code>fc701da</code></a>
Pathfinder: change how literals are represented in arrivals.</li>
<li><a
href="https://github.com/andybalholm/brotli/commit/10cf712196eeb5358c7c2dddf1f53c08b6500f38"><code>10cf712</code></a>
Pathfinder: enable starting in the middle of a match</li>
<li><a
href="https://github.com/andybalholm/brotli/commit/d6b3fe07ed7eb3cfe0c42ab708781034a326d7fa"><code>d6b3fe0</code></a>
Pathfinder: separate searching and parsing</li>
<li><a
href="https://github.com/andybalholm/brotli/commit/199839b04846152833e2446e39cf6234712163a2"><code>199839b</code></a>
Pathfinder: pre-compute hash chain (and use 32 bits)</li>
<li><a
href="https://github.com/andybalholm/brotli/commit/e819531509efd8c7d5e79efd9fcabc655c7fbebc"><code>e819531</code></a>
Start experimenting with an optimizing MatchFinder</li>
<li><a
href="https://github.com/andybalholm/brotli/commit/18ac46a8c3d6664cd158ad14ca2fb6ba29752377"><code>18ac46a</code></a>
M4: use 32-bit hash chain</li>
<li><a
href="https://github.com/andybalholm/brotli/commit/1383db2f0e5a87e62c33bb5adf22351ee2acf50a"><code>1383db2</code></a>
M4: When shortening a match, look for a closer option</li>
<li><a
href="https://github.com/andybalholm/brotli/commit/c036c35cb06f667df542773635b0972cd794d2ea"><code>c036c35</code></a>
M4: look for repeat matches</li>
<li><a
href="https://github.com/andybalholm/brotli/commit/6a1a95ec91781f0eedba50cd865eb822ba7e90c7"><code>6a1a95e</code></a>
Add arm64 to GOARCH switches</li>
<li>Additional commits viewable in <a
href="https://github.com/andybalholm/brotli/compare/v1.1.1...v1.2.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/andybalholm/brotli&package-manager=go_modules&previous-version=1.1.1&new-version=1.2.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>
2025-06-30 14:08:44 +00:00
dependabot[bot] c8bc8d3865 chore: bump github.com/moby/moby from 28.2.2+incompatible to 28.3.0+incompatible (#18660)
Bumps [github.com/moby/moby](https://github.com/moby/moby) from
28.2.2+incompatible to 28.3.0+incompatible.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/moby/moby/releases">github.com/moby/moby's
releases</a>.</em></p>
<blockquote>
<h2>28.3.0</h2>
<p>For a full list of pull requests and changes in this release, refer
to the relevant GitHub milestones:</p>
<ul>
<li><a
href="https://github.com/docker/cli/issues?q=is%3Aclosed+milestone%3A28.3.0">docker/cli,
28.3.0 milestone</a></li>
<li><a
href="https://github.com/moby/moby/issues?q=is%3Aclosed+milestone%3A28.3.0">moby/moby,
28.3.0 milestone</a></li>
<li>Deprecated and removed features, see <a
href="https://github.com/docker/cli/blob/v28.3.0/docs/deprecated.md">Deprecated
Features</a>.</li>
<li>Changes to the Engine API, see <a
href="https://github.com/moby/moby/blob/v28.3.0/docs/api/version-history.md">API
version history</a>.</li>
</ul>
<h3>New</h3>
<ul>
<li>Add support for AMD GPUs in <code>docker run --gpus</code>. <a
href="https://redirect.github.com/moby/moby/pull/49952">moby/moby#49952</a></li>
<li>Use <code>DOCKER_AUTH_CONFIG</code> as a credential store. <a
href="https://redirect.github.com/docker/cli/pull/6008">docker/cli#6008</a></li>
</ul>
<h3>Bug fixes and enhancements</h3>
<ul>
<li>Ensure that the state of the container in the daemon database (used
by <a
href="https://docs.docker.com/reference/api/engine/version/v1.49/#tag/Container/operation/ContainerList">/containers/json</a>
API) is up to date when the container is stopped using the <a
href="https://docs.docker.com/reference/api/engine/version/v1.49/#tag/Container/operation/ContainerStop">/containers/{id}/stop</a>
API (before response of API). <a
href="https://redirect.github.com/moby/moby/pull/50136">moby/moby#50136</a></li>
<li>Fix <code>docker image inspect inspect</code> omitting empty fields.
<a
href="https://redirect.github.com/moby/moby/pull/50135">moby/moby#50135</a></li>
<li>Fix <code>docker images --tree</code> not marking images as in-use
when the containerd image store is disabled. <a
href="https://redirect.github.com/docker/cli/pull/6140">docker/cli#6140</a></li>
<li>Fix <code>docker pull/push</code> hang in non-interactive when
authentication is required caused by prompting for login credentials. <a
href="https://redirect.github.com/docker/cli/pull/6141">docker/cli#6141</a></li>
<li>Fix a potential resource leak when a node leaves a Swarm. <a
href="https://redirect.github.com/moby/moby/pull/50115">moby/moby#50115</a></li>
<li>Fix a regression where a login prompt on <code>docker pull</code>
would show Docker Hub-specific hints when logging in on other
registries. <a
href="https://redirect.github.com/docker/cli/pull/6135">docker/cli#6135</a></li>
<li>Fix an issue where all new tasks in the Swarm could get stuck in the
PENDING state forever after scaling up a service with placement
preferences. <a
href="https://redirect.github.com/moby/moby/pull/50211">moby/moby#50211</a></li>
<li>Remove an undocumented, hidden, top-level <code>docker remove</code>
command that was accidentally introduced in Docker 23.0. <a
href="https://redirect.github.com/docker/cli/pull/6144">docker/cli#6144</a></li>
<li>Validate registry-mirrors configuration as part of <code>dockerd
--validate</code> and improve error messages for invalid mirrors. <a
href="https://redirect.github.com/moby/moby/pull/50240">moby/moby#50240</a></li>
<li><code>dockerd-rootless-setuptool.sh</code>: Fix the script from
silently returning with no error message when subuid/subgid system
requirements are not satisfied. <a
href="https://redirect.github.com/moby/moby/pull/50059">moby/moby#50059</a></li>
<li>containerd image store: Fix <code>docker push</code> not creating a
tag on the remote repository. <a
href="https://redirect.github.com/moby/moby/pull/50199">moby/moby#50199</a></li>
<li>containerd image store: Improve handling of errors returned by the
token server during <code>docker pull/push</code>. <a
href="https://redirect.github.com/moby/moby/pull/50176">moby/moby#50176</a></li>
</ul>
<h3>Packaging updates</h3>
<ul>
<li>Allow customizing containerd service name for OpenRC. <a
href="https://redirect.github.com/moby/moby/pull/50156">moby/moby#50156</a></li>
<li>Update BuildKit to <a
href="https://github.com/moby/buildkit/releases/tag/v0.23.1">v0.23.1</a>.
<a
href="https://redirect.github.com/moby/moby/pull/50243">moby/moby#50243</a></li>
<li>Update Buildx to <a
href="https://github.com/docker/buildx/releases/tag/v0.25.0">v0.25.0</a>.
<a
href="https://redirect.github.com/docker/docker-ce-packaging/pull/1217">docker/docker-ce-packaging#1217</a></li>
<li>Update Compose to <a
href="https://github.com/docker/compose/releases/tag/v2.37.2">v2.37.2</a>.
<a
href="https://redirect.github.com/docker/docker-ce-packaging/pull/1219">docker/docker-ce-packaging#1219</a></li>
<li>Update Docker Model CLI plugin to <a
href="https://github.com/docker/model-cli/releases/tag/v0.1.30">v0.1.30</a>.
<a
href="https://redirect.github.com/docker/docker-ce-packaging/pull/1218">docker/docker-ce-packaging#1218</a></li>
<li>Update Go runtime to <a
href="https://go.dev/doc/devel/release#go1.24.4">1.24.4</a>. <a
href="https://redirect.github.com/docker/docker-ce-packaging/pull/1213">docker/docker-ce-packaging#1213</a>,
<a
href="https://redirect.github.com/moby/moby/pull/50153">moby/moby#50153</a>,
<a
href="https://redirect.github.com/docker/cli/pull/6124">docker/cli#6124</a></li>
</ul>
<h3>Networking</h3>
<ul>
<li>Revert Swarm related changes added in 28.2.x builds, due to a
regression reported in <a
href="https://redirect.github.com/moby/moby/issues/50129">moby/moby#50129</a>.
<a
href="https://redirect.github.com/moby/moby/pull/50169">moby/moby#50169</a>
<ul>
<li>Revert: Fix an issue where <code>docker network inspect
--verbose</code> could sometimes crash the daemon (<a
href="https://redirect.github.com/moby/moby/pull/49937">moby/moby#49937</a>).</li>
<li>Revert: Fix an issue where the load-balancer IP address for an
overlay network would not be released in certain cases if the Swarm was
lacking an ingress network (<a
href="https://redirect.github.com/moby/moby/pull/49948">moby/moby#49948</a>).</li>
<li>Revert: Improve the reliability of NetworkDB in busy clusters and
lossy networks (<a
href="https://redirect.github.com/moby/moby/pull/49932">moby/moby#49932</a>).</li>
<li>Revert: Improvements to the reliability and convergence speed of
NetworkDB (<a
href="https://redirect.github.com/moby/moby/pull/49939">moby/moby#49939</a>).</li>
</ul>
</li>
<li>Fix an issue that could cause container startup to fail, or lead to
failed UDP port mappings, when some container ports are mapped to
<code>0.0.0.0</code> and others are mapped to specific host addresses.
<a
href="https://redirect.github.com/moby/moby/pull/50054">moby/moby#50054</a></li>
<li>The <code>network inspect</code> response for an overlay network now
reports that <code>EnableIPv4</code> is true. <a
href="https://redirect.github.com/moby/moby/pull/50147">moby/moby#50147</a></li>
<li>Windows: Improve daemon startup time in cases where the host has
networks of type <code>&quot;Mirrored&quot;</code>. <a
href="https://redirect.github.com/moby/moby/pull/50155">moby/moby#50155</a></li>
<li>Windows: Make sure <code>docker system prune</code> and <code>docker
network prune</code> only remove networks created by Docker. <a
href="https://redirect.github.com/moby/moby/pull/50154">moby/moby#50154</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/moby/moby/commit/265f709647947fb5a1adf7e4f96f2113dcc377bd"><code>265f709</code></a>
Merge pull request <a
href="https://redirect.github.com/moby/moby/issues/50247">#50247</a>
from vvoland/50245-28.x</li>
<li><a
href="https://github.com/moby/moby/commit/b2a9318a1e70deabdf9cda8c08caabd492b6b581"><code>b2a9318</code></a>
docs: cut api docs for v1.51</li>
<li><a
href="https://github.com/moby/moby/commit/b3e2e22b2adee0cff0a20134559074b9481ba2ba"><code>b3e2e22</code></a>
Merge pull request <a
href="https://redirect.github.com/moby/moby/issues/50244">#50244</a>
from vvoland/50177-28.x</li>
<li><a
href="https://github.com/moby/moby/commit/c571cd85133c8e25ce9c9b7eb3a1c8c54f88346e"><code>c571cd8</code></a>
Merge pull request <a
href="https://redirect.github.com/moby/moby/issues/50243">#50243</a>
from vvoland/50238-28.x</li>
<li><a
href="https://github.com/moby/moby/commit/8c713c1af4ad61a9faf8b55e7710b8a17e081275"><code>8c713c1</code></a>
gha: lower timeouts on &quot;build&quot; and &quot;merge&quot;
steps</li>
<li><a
href="https://github.com/moby/moby/commit/539c115023eb01f1dd65b019cd5d50dd36d34188"><code>539c115</code></a>
Merge pull request <a
href="https://redirect.github.com/moby/moby/issues/50240">#50240</a>
from thaJeztah/28.x_backport_validate_mirrors</li>
<li><a
href="https://github.com/moby/moby/commit/8e7ea470cf0720f1988fe9a0af6342d550d86cc3"><code>8e7ea47</code></a>
vendor: update buildkit to v0.23.1</li>
<li><a
href="https://github.com/moby/moby/commit/222baf4ccbcb216fe812ad0300d02dfec3f28a70"><code>222baf4</code></a>
vendor: github.com/moby/buildkit v0.23.0</li>
<li><a
href="https://github.com/moby/moby/commit/1627e828d7e5566ead2c69f63d661ef47f96e61a"><code>1627e82</code></a>
Merge pull request <a
href="https://redirect.github.com/moby/moby/issues/50241">#50241</a>
from thaJeztah/28.x_backport_update_cgroups</li>
<li><a
href="https://github.com/moby/moby/commit/4070ebda88cb8f6448d0725633dc40394e563705"><code>4070ebd</code></a>
Merge pull request <a
href="https://redirect.github.com/moby/moby/issues/50242">#50242</a>
from thaJeztah/28.x_backport_fix_event_ordering</li>
<li>Additional commits viewable in <a
href="https://github.com/moby/moby/compare/v28.2.2...v28.3.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/moby/moby&package-manager=go_modules&previous-version=28.2.2+incompatible&new-version=28.3.0+incompatible)](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>
2025-06-30 14:03:08 +00:00
Danny Kopping f89e057c4c chore: add beta badge to tasks (#18656) 2025-06-30 10:51:42 +02:00
Mathias Fredriksson d814fdfa1c fix(.devcontainer): add home volume and fix code-server and filebrowser (#18648) 2025-06-30 09:32:17 +01:00
Spike Curtis e97540afbd chore: work around race in lib/pq (#18655)
Upgrade our lib/pq fork to work around the data race identified here:
https://github.com/coder/internal/issues/731
2025-06-30 12:00:46 +04:00
Bruno Quaresma 4095330041 fix: use only template version ID to create task workspace (#18642)
When creating a new task, the following error was getting returned:

**Error:**
```json
{
    "message": "Validation failed.",
    "validations": [
        {
            "field": "template_id",
            "detail": "Validation failed for tag \"excluded_with\" with value: \"42205a38-845c-4186-8475-f002e0936d53\""
        },
        {
            "field": "template_version_id",
            "detail": "Validation failed for tag \"excluded_with\" with value: \"22b1c4b7-432d-4eb5-9341-cd8efacb8f46\""
        }
    ]
}
```

Caused by https://github.com/coder/coder/pull/18623
2025-06-27 15:07:54 -03:00
ケイラ d4208d23aa refactor: show icons for multi-select parameter options (#18594) 2025-06-27 10:54:47 -06:00
dependabot[bot] 5ae21517e0 chore: bump github.com/go-viper/mapstructure/v2 from 2.2.1 to 2.3.0 (#18647)
Bumps
[github.com/go-viper/mapstructure/v2](https://github.com/go-viper/mapstructure)
from 2.2.1 to 2.3.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/go-viper/mapstructure/releases">github.com/go-viper/mapstructure/v2's
releases</a>.</em></p>
<blockquote>
<h2>v2.3.0</h2>
<h2>What's Changed</h2>
<ul>
<li>build(deps): bump actions/checkout from 4.1.7 to 4.2.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/46">go-viper/mapstructure#46</a></li>
<li>build(deps): bump golangci/golangci-lint-action from 6.1.0 to 6.1.1
by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>
in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/47">go-viper/mapstructure#47</a></li>
<li>[enhancement] Add check for <code>reflect.Value</code> in
<code>ComposeDecodeHookFunc</code> by <a
href="https://github.com/mahadzaryab1"><code>@​mahadzaryab1</code></a>
in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/52">go-viper/mapstructure#52</a></li>
<li>build(deps): bump actions/setup-go from 5.0.2 to 5.1.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/51">go-viper/mapstructure#51</a></li>
<li>build(deps): bump actions/checkout from 4.2.0 to 4.2.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/50">go-viper/mapstructure#50</a></li>
<li>build(deps): bump actions/setup-go from 5.1.0 to 5.2.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/55">go-viper/mapstructure#55</a></li>
<li>build(deps): bump actions/setup-go from 5.2.0 to 5.3.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/58">go-viper/mapstructure#58</a></li>
<li>ci: add Go 1.24 to the test matrix by <a
href="https://github.com/sagikazarmark"><code>@​sagikazarmark</code></a>
in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/74">go-viper/mapstructure#74</a></li>
<li>build(deps): bump golangci/golangci-lint-action from 6.1.1 to 6.5.0
by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>
in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/72">go-viper/mapstructure#72</a></li>
<li>build(deps): bump golangci/golangci-lint-action from 6.5.0 to 6.5.1
by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>
in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/76">go-viper/mapstructure#76</a></li>
<li>build(deps): bump actions/setup-go from 5.3.0 to 5.4.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/78">go-viper/mapstructure#78</a></li>
<li>feat: add decode hook for netip.Prefix by <a
href="https://github.com/tklauser"><code>@​tklauser</code></a> in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/85">go-viper/mapstructure#85</a></li>
<li>Updates by <a
href="https://github.com/sagikazarmark"><code>@​sagikazarmark</code></a>
in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/86">go-viper/mapstructure#86</a></li>
<li>build(deps): bump github/codeql-action from 2.13.4 to 3.28.15 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/87">go-viper/mapstructure#87</a></li>
<li>build(deps): bump actions/setup-go from 5.4.0 to 5.5.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/93">go-viper/mapstructure#93</a></li>
<li>build(deps): bump github/codeql-action from 3.28.15 to 3.28.17 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/92">go-viper/mapstructure#92</a></li>
<li>build(deps): bump github/codeql-action from 3.28.17 to 3.28.19 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/97">go-viper/mapstructure#97</a></li>
<li>build(deps): bump ossf/scorecard-action from 2.4.1 to 2.4.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/96">go-viper/mapstructure#96</a></li>
<li>Update README.md by <a
href="https://github.com/peczenyj"><code>@​peczenyj</code></a> in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/90">go-viper/mapstructure#90</a></li>
<li>Add omitzero tag. by <a
href="https://github.com/Crystalix007"><code>@​Crystalix007</code></a>
in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/98">go-viper/mapstructure#98</a></li>
<li>Use error structs instead of duplicated strings by <a
href="https://github.com/m1k1o"><code>@​m1k1o</code></a> in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/102">go-viper/mapstructure#102</a></li>
<li>build(deps): bump github/codeql-action from 3.28.19 to 3.29.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/101">go-viper/mapstructure#101</a></li>
<li>feat: add common error interface by <a
href="https://github.com/sagikazarmark"><code>@​sagikazarmark</code></a>
in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/105">go-viper/mapstructure#105</a></li>
<li>update linter by <a
href="https://github.com/sagikazarmark"><code>@​sagikazarmark</code></a>
in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/106">go-viper/mapstructure#106</a></li>
<li>Feature allow unset pointer by <a
href="https://github.com/rostislaved"><code>@​rostislaved</code></a> in
<a
href="https://redirect.github.com/go-viper/mapstructure/pull/80">go-viper/mapstructure#80</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/tklauser"><code>@​tklauser</code></a>
made their first contribution in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/85">go-viper/mapstructure#85</a></li>
<li><a href="https://github.com/peczenyj"><code>@​peczenyj</code></a>
made their first contribution in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/90">go-viper/mapstructure#90</a></li>
<li><a
href="https://github.com/Crystalix007"><code>@​Crystalix007</code></a>
made their first contribution in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/98">go-viper/mapstructure#98</a></li>
<li><a
href="https://github.com/rostislaved"><code>@​rostislaved</code></a>
made their first contribution in <a
href="https://redirect.github.com/go-viper/mapstructure/pull/80">go-viper/mapstructure#80</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/go-viper/mapstructure/compare/v2.2.1...v2.3.0">https://github.com/go-viper/mapstructure/compare/v2.2.1...v2.3.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/go-viper/mapstructure/commit/8c61ec1924fcfa522f9fc6b4618c672db61d1a38"><code>8c61ec1</code></a>
Merge pull request <a
href="https://redirect.github.com/go-viper/mapstructure/issues/80">#80</a>
from rostislaved/feature-allow-unset-pointer</li>
<li><a
href="https://github.com/go-viper/mapstructure/commit/df765f469ad16a1996fd0f0ae6a32b20535b966a"><code>df765f4</code></a>
Merge pull request <a
href="https://redirect.github.com/go-viper/mapstructure/issues/106">#106</a>
from go-viper/update-linter</li>
<li><a
href="https://github.com/go-viper/mapstructure/commit/5f34b05aa12639380ef7c2af69eb6f8fd629dbd0"><code>5f34b05</code></a>
update linter</li>
<li><a
href="https://github.com/go-viper/mapstructure/commit/36de1e1d74f55681536097ff8467a8ce952ef183"><code>36de1e1</code></a>
Merge pull request <a
href="https://redirect.github.com/go-viper/mapstructure/issues/105">#105</a>
from go-viper/error-refactor</li>
<li><a
href="https://github.com/go-viper/mapstructure/commit/6a283a390ee7bc0f9331f58199db234902e0739f"><code>6a283a3</code></a>
chore: update error type doc</li>
<li><a
href="https://github.com/go-viper/mapstructure/commit/599cb73236404c044abcf278a45c3928d7480dd0"><code>599cb73</code></a>
Merge pull request <a
href="https://redirect.github.com/go-viper/mapstructure/issues/101">#101</a>
from go-viper/dependabot/github_actions/github/codeql...</li>
<li><a
href="https://github.com/go-viper/mapstructure/commit/ed3f92181528ff776a0324107b8b55026e93766a"><code>ed3f921</code></a>
feat: remove value from error messages</li>
<li><a
href="https://github.com/go-viper/mapstructure/commit/a3f8b227dcdae324c070d389152837f0aa635f4b"><code>a3f8b22</code></a>
revert: error message change</li>
<li><a
href="https://github.com/go-viper/mapstructure/commit/9661f6d07c319da00ae0508d99df5f3f0c3953bd"><code>9661f6d</code></a>
feat: add common error interface</li>
<li><a
href="https://github.com/go-viper/mapstructure/commit/f12f6c76fe743c8e4cc6465c6a9f16fcd8cede57"><code>f12f6c7</code></a>
Merge pull request <a
href="https://redirect.github.com/go-viper/mapstructure/issues/102">#102</a>
from m1k1o/prettify-errors2</li>
<li>Additional commits viewable in <a
href="https://github.com/go-viper/mapstructure/compare/v2.2.1...v2.3.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/go-viper/mapstructure/v2&package-manager=go_modules&previous-version=2.2.1&new-version=2.3.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)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/coder/coder/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-27 16:52:24 +00:00
blink-so[bot] ff3ff0170a chore: update logo description to specify maximum 3:1 aspect ratio (#18641)
Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: matifali <10648092+matifali@users.noreply.github.com>
2025-06-27 16:38:44 +00:00
Bruno Quaresma 8eebb4fa4c feat: make task panels resizable (#18590)
**Demo:**

https://github.com/user-attachments/assets/cc80b768-197e-42a0-9326-f30c9d9038e3
2025-06-27 13:34:04 -03:00
Mathias Fredriksson 0f3a1e9849 fix(agent/agentcontainers): split Init into Init and Start for early API responses (#18640)
Previously in #18635 we delayed the containers API `Init` to avoid producing
errors due to Docker and `@devcontainers/cli` not yet being installed by startup
scripts. This had an adverse effect on the UX via UI responsiveness as the
detection of devcontainers was greatly delayed.

This change splits `Init` into `Init` and `Start` so that we can immediately
after `Init` start serving known devcontainers (defined in Terraform), improving
the UX.

Related #18635
Related #18640
2025-06-27 19:01:50 +03:00
Mathias Fredriksson e46d892c29 fix(.devcontainer): remove double slash from zed path (#18639) 2025-06-27 18:34:08 +03:00
Mathias Fredriksson b4aa643dfa fix(agent/agentcontainers): ensure proper channel closure for updateTrigger (#18631) 2025-06-27 18:05:48 +03:00
Bruno Quaresma 6d305df67d fix: use default preset when creating a workspace for task (#18623) 2025-06-27 12:01:21 -03:00
Bruno Quaresma 29ef3a8ed6 feat: redirect to the task page after creation (#18626)
Close https://github.com/coder/coder/issues/18184
2025-06-27 14:45:42 +00:00
Bruno Quaresma 1c87796b33 refactor: show the apps as soon as possible (#18625)
Close https://github.com/coder/coder/issues/18617
2025-06-27 14:00:18 +00:00
Mathias Fredriksson 8ee2668b39 fix(agent): fix script filtering for devcontainers (#18635) 2025-06-27 16:59:31 +03:00
Bruno Quaresma 59a65415b4 refactor: move required external auth buttons to the submit side (#18586)
**Before:**
![Screenshot 2025-06-25 at 14 40
16](https://github.com/user-attachments/assets/cbc558f5-6eee-4133-afc9-2474f04a8a67)

**After:**
![Screenshot 2025-06-25 at 14 53
53](https://github.com/user-attachments/assets/3a638f60-d1e4-40a4-a066-8d69fe96c198)
2025-06-27 10:44:39 -03:00
Bruno Quaresma 2d44add81f feat: add task link in the workspace page when it is running a task (#18591)
![image](https://github.com/user-attachments/assets/4db64031-17a9-405c-a233-df2b758ddef5)
2025-06-27 10:32:57 -03:00
Spike Curtis f0251dfc91 chore: retry postgres connection on reset by peer in tests (#18632)
Fixes https://github.com/coder/internal/issues/695

Retries initial connection to postgres in testing up to 3 seconds if we
see "reset by peer", which probably means that some other test proc just
started the container.

---------

Co-authored-by: Hugo Dutka <hugo@coder.com>
2025-06-27 13:03:32 +00:00
Edward Angert d26d0fc269 docs: edit descriptions in ai-coder section (#18373)
Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-06-27 12:09:02 +00:00
Spike Curtis a02d5a69e7 chore: update X11 forward session usage when there is a connection (#18567)
fixes #18263

Adds support to bump `usedAt` for X11 forwarding sessions whenever an application connects over the TCP socket. This should help avoid evicting sessions that are actually in use.
2025-06-27 15:41:45 +04:00
Spike Curtis 73c742a3ce chore: test eviction with used ports (#18566)
relates to #18263

Modifies the eviction unit test to include a port that is already claimed by an external process.
2025-06-27 15:27:38 +04:00
Spike Curtis 66f22d7588 chore: add unit test for X11 eviction (#18565)
relates to #18263


Adds a unit test for X11 listener eviction when all ports in the allowed range are in use.
2025-06-27 15:13:30 +04:00
Mathias Fredriksson 7e99fb7d7e fix(agent): delay containerAPI init to ensure startup scripts run before (#18630) 2025-06-27 14:10:35 +03:00
Susana Ferreira 3cb9b20b11 chore: improve rbac and add benchmark tooling (#18584)
## Description

This PR improves the RBAC package by refactoring the policy, enhancing
documentation, and adding utility scripts.

## Changes

* Refactored `policy.rego` for clarity and readability
* Updated README with OPA section
* Added `benchmark_authz.sh` script for authz performance testing and
comparison
* Added `gen_input.go` to generate input for `opa eval` testing
2025-06-27 12:05:34 +01:00
Spike Curtis a5bfb200fc chore: refactor TestServer_X11 to use inproc networking (#18564)
relates to #18263


Refactors the x11Forwarder to accept a networking `interface` that we can fake out for testing. This isolates the unit tests from other processes listening in the port range used by X11 forwarding. This will become extremely important in up-stack PRs where we listen on every port in the range and need to control which ports have conflicts.
2025-06-27 14:56:33 +04:00
Spike Curtis abcf3df71a chore: move InProcNet to testutil (#18563)
Moves `InProcNet` to `testutil` so that it can be reused by X11 forwarding tests (see up stack PRs).
2025-06-27 14:42:22 +04:00
Spike Curtis 6bebfd0ec6 fix: use memmap file system for TestServer_X11 (#18562)
Changes the TestServer_X11 test to use a memmapped file system, so we don't pollute the XAuthority file of the person running the test.
2025-06-27 14:24:07 +04:00
Spike Curtis 9e1cf1693b fix: cap max X11 forwarding ports and evict old (#18561)
partial for #18263

Caps the X11 forwarding sessions at a maximum port of 6200, and evicts the oldest session if we create new sessions while at the max.

Unit tests included higher in the stack.
2025-06-27 14:05:42 +04:00
Ethan 9ab9c52de8 chore(site): set server.allowedHosts in storybook config to .coder (#18598)
This lets you browse storybook using a Coder Desktop hostname (i.e. `workspace.coder:6006`). The default configuration (including `localhost`) will still work.
2025-06-27 12:59:58 +10:00
Asher 05f6d69455 chore: parse app status link (#18439)
No actual exploit here as far as I can tell, but doing a string check
without parsing was flagged by a scanner.
2025-06-26 13:04:11 -08:00
Mathias Fredriksson d5e34195b0 revert: fix(agent/agentcontainers): refresh containers before status change (#18624)
Reverts coder/coder#18620

This fix exacerbated the problem, reverting until a better fix can be made.
2025-06-26 20:51:06 +00:00
Mathias Fredriksson 7b0b6498fb fix(.devcontainer): start docker and install devcontainer CLI (#18621)
This change starts the Docker daemon in the devcontainer and install
`@devcontainers/cli`.
2025-06-26 20:17:59 +00:00
Mathias Fredriksson 73879056f9 fix(agent/agentcontainers): refresh containers before status change (#18620)
The previous method of refreshing after we change the devcontainer
status introduced an intermediary state where the devcontainer might not
yet have been assigned a container and will flicker as stopped before
going into running.
2025-06-26 20:12:50 +00:00
Jon Ayers 7a3a6d4d26 chore: update README logos (#18619) 2025-06-26 19:27:17 +00:00
Mathias Fredriksson 4f44dd08a9 fix(agent/agentcontainers): prevent reassigning proc.agent until successful (#18609) 2025-06-26 21:30:21 +03:00
ケイラ 09cc906981 chore: remove unnecessary redeclarations in for loops (part 2) (#18593) 2025-06-26 12:28:00 -06:00
Mathias Fredriksson e03d13211c test(agent): fix TestAgent_DevcontainerRecreate (#18618) 2025-06-26 17:50:53 +00:00
Thomas Kosiewski 1b1d09158d fix: pin Nix version to 2.28.4 to avoid JSON type error (#18612)
Pin Nix version to 2.28.4 in dogfood workflow

Pins the Nix version in the dogfood workflow to 2.28.4 to avoid a JSON type error that occurs with Nix 2.29 and above.

Change-Id: Ie024d5070dbe5901952fc52463c6602363ef8886
Signed-off-by: Thomas Kosiewski <tk@coder.com>
2025-06-26 18:33:44 +02:00
Danielle Maywood 98c77fece5 fix(agent/agentcontainers): stop logging empty lines (#18605)
This PR makes the devcontainer logs have fewer whitespace lines.
2025-06-26 15:58:10 +00:00
Danielle Maywood 5ae320e79e fix(agent/agentcontainers): chown coder binary (#18611)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-26 16:42:43 +01:00
Mathias Fredriksson 87d052ea93 feat(.devcontainer): add cursor, filebrowser, windsurf and zed (#18608) 2025-06-26 14:09:31 +00:00
Sas Swart c6e0ba12d3 feat: graduate prebuilds to general availability (#18607)
This PR removes the prebuilds experiment and allows the use of prebuilds
without opting into an experiment.
2025-06-26 15:54:52 +02:00
Mathias Fredriksson 872aef3af9 feat(.devcontainer): install dotfiles if present (#18606) 2025-06-26 12:49:58 +00:00
Danielle Maywood f2d229eed3 fix!: use devcontainer ID when rebuilding a devcontainer (#18604)
This PR replaces the use of the **container** ID with the
**devcontainer** ID. This is a breaking change. This allows rebuilding a
devcontainer when there is no valid container ID.
2025-06-26 11:41:57 +01:00
Mathias Fredriksson eca6381314 feat(agent/agentcontainers): add more envs to readconfig for app URL building (#18603) 2025-06-26 09:33:58 +00:00
Sas Swart 634144f94a fix: hide the preset parameter visibility switch when it has no effect (#18574)
When no preset is selected:
<img width="1097" alt="Screenshot 2025-06-25 at 15 49 51"
src="https://github.com/user-attachments/assets/96f1244a-58f1-4e59-b6ac-9319339c764f"
/>

When a preset is selected:
<img width="1097" alt="Screenshot 2025-06-25 at 15 50 00"
src="https://github.com/user-attachments/assets/d0853169-ff93-4b1a-beaf-11012a9a02fb"
/>

Existing frontend stories provide enough validation to cover this
feature. No further testing is required.

---------

Co-authored-by: Susana Ferreira <susana@coder.com>
2025-06-26 11:23:10 +02:00
Atif Ali fb0e7a21a7 docs: add Coder Desktop to remote desktop docs (#18326)
Co-authored-by: Spike Curtis <spike@coder.com>
2025-06-26 11:16:41 +05:00
Bruno Quaresma fdf458eb19 refactor: remove beta label from 'select a preset' menu (#18538) 2025-06-25 17:09:49 -03:00
Mathias Fredriksson 09e1a8ad99 feat(.devcontainer): add code-server feature to devcontainer.json (#18589) 2025-06-25 21:35:43 +03:00
Asher 48bb534a51 chore: fix idle state icon when disabled (#18554)
When the workspace is off, we set a disabled text/stroke color, but for
the idle icon that also needs a fill, this only changed the outline
making it look weird. Instead, move the disabled logic into the
component so we can apply a matching fill.

I felt it looked too thick with both the outline and fill, so I also
removed the outline.

Really I think maybe the workspace status should be a separate column
rather than disabling these icons, but this maintains the status quo.


Before with mismatching stroke and fill color:


![screenshot](https://github.com/user-attachments/assets/961014b7-1e26-49f0-aa87-834f2f367618)


After with disabled fill and stroke removal:


![screenshot](https://github.com/user-attachments/assets/205e4515-dc01-4437-87ec-a0f8a546da3b)


Enabled fill and stroke removal:


![screenshot](https://github.com/user-attachments/assets/04f5914e-f96c-4c75-8873-e3fc9c854d95)
2025-06-25 10:06:57 -08:00
Danielle Maywood 6c713d5c20 fix(coderd/agentapi): make sub agent slugs more unique (#18581)
The incorrect assumption that slugs were unique per-agent was made when
the subagent API was implemented. Whilst this PR doesn't completely
enforce that, we instead compute a stable hash to prefix the slug that
should provide a reasonable level of probability that the slug will be
unique.
2025-06-25 17:36:23 +01:00
dependabot[bot] aef101ffd3 chore: bump google.golang.org/genai from 0.7.0 to 1.12.0 (#18496)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/genai&package-manager=go_modules&previous-version=0.7.0&new-version=1.12.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>
2025-06-25 16:01:53 +00:00
dependabot[bot] 9d2f8dc274 chore: bump github.com/openai/openai-go from 0.1.0-beta.10 to 1.6.0 (#18493)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/openai/openai-go&package-manager=go_modules&previous-version=0.1.0-beta.10&new-version=1.6.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>
2025-06-25 16:01:29 +00:00
Danny Kopping 8e0b6f8157 chore: upgrade aisdk-go lib, remove vestigial code (#18577) 2025-06-25 17:47:42 +02:00
Steven Masley e396b06c25 feat: allow new immutable parameters for existing workspaces (#18579)
Closes https://github.com/coder/coder/issues/18578
2025-06-25 15:41:53 +00:00
Edward Angert 072c81cd73 docs: remove nested alerts (#18580)
hotfix

removes nested gfm alerts, which is a known ~issue~ feature
https://github.com/orgs/community/discussions/16925#discussioncomment-12043928

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-06-25 15:17:49 +00:00
Mathias Fredriksson 3c4d9206bc feat(agent/agentcontainers): add feature options as envs (#18576) 2025-06-25 14:41:36 +00:00
Danny Kopping 688d2ee3eb chore: remove chats experiment (#18535) 2025-06-25 13:03:32 +00:00
Mathias Fredriksson 9fde8353ad test(agent/agentcontainers): add is a test ignore label to integration tests (#18570) 2025-06-25 11:20:14 +00:00
Mathias Fredriksson 434b54657a fix(agent/agentcontainers): filter out "is test run" devcontainers (#18568) 2025-06-25 11:06:20 +00:00
Cian Johnston 42fd1c1291 ci: cache embedded postgres downloaded binaries (#18477)
Updates CI job definitions to cache downloaded binaries for embedded-postgres.
2025-06-25 12:00:20 +01:00
Danielle Maywood c4e4fe85f9 fix(agent): start devcontainers through agentcontainers package (#18471)
Fixes https://github.com/coder/internal/issues/706

Context for the implementation here
https://github.com/coder/internal/issues/706#issuecomment-2990490282

Synchronously starts dev containers defined in terraform with our
`DevcontainerCLI` abstraction, instead of piggybacking off of our
`agentscripts` package. This gives us more control over logs, instead of
being reliant on packages which may or may not exist in the
user-provided image.
2025-06-25 11:52:50 +01:00
Marcin Tojek f6d9765daf fix(site): storybook: move spyOn to beforeEach (#18559)
Fixes: https://github.com/coder/internal/issues/741
2025-06-25 08:45:55 +00:00
Atif Ali b5316d2b42 docs: fix a warning alert type on toolbox docs (#18560) 2025-06-25 08:21:12 +00:00
Emmanuel Ferdman 312d2a46b4 docs: update Claude's guide (#18523)
## PR Summary
Commit 5df70a613d added by mistake the the
following old line to `CLAUDE.md`:
```
For building Frontend refer to [this document](docs/contributing/frontend.md)
```
This PR removes it.

Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com>
2025-06-25 05:39:26 +00:00
Ethan 79c666bf08 fix(vpn): avoid setting session token header twice (#18524)
`coderd` currently does not handle a session token header value of the form `token1, token2`. However, it does handle multiple instances of the token header by simply taking the first. This is the default behaviour of `http.Header.Get`.

So, setting the token header twice causes issues when Coder is behind a proxy that merges duplicate headers, such as [Apache](https://httpd.apache.org/docs/2.4/mod/mod_headers.html#:~:text=list%20of%20values.-,When%20a%20new%20value%20is%20merged%20onto%20an%20existing%20header,format%20specifiers%20have%20been%20processed).


This PR ensures we don't set it twice by not sharing one slice between the `HTTPClient` and the `websocket.DialerOptions`. It also adds a regression test.
2025-06-25 11:27:35 +10:00
Asher 288ec7709d feat: add workspace build status to task page (#18520)
While a workspace is starting, display the build status and a progress bar.
2025-06-24 13:17:12 -08:00
Michael Smith a8e2c75239 chore: update Coder icons to reflect new branding (#18517)
Addresses part of the frontend changes needed for
https://github.com/coder/coder/issues/18516
2025-06-24 17:15:05 -04:00
Steven Masley fe22b2cc92 chore: update coder/preview dependency to v1.0.1 (#18550) 2025-06-24 20:46:50 +00:00
Jaayden Halko 25f1b76624 fix: handle empty strings for Select component (#18553)
resolve #18361

Its possible for a dynamic parameter option value to be an empty string
which will cause the following error in the Radix Select component. The
solution is to handle empty strings so that they are not set directly in
the component.


`Uncaught Error: A <Select.Item /> must have a value prop that is not an
empty string. This is because the Select value can be set to an empty
string to clear the selection and show the placeholder.`


```
data "coder_parameter" "radio" {
  name         = "radio"
  display_name = "An example of a radio input"
  description  = "The next parameter supports a single value."
  type         = "string"
  form_type    = "dropdown"
  order        = 1
  default      = ""

  option {
    name = "Empty"
    value = "" 
  }
}

```
2025-06-24 16:44:52 -04:00
Asher 6ed22046af chore: use pause icon for app idle state (#18546) 2025-06-24 11:04:27 -08:00
Cian Johnston b93db1ceda fix: site: replace CirclePlayIcon with PlayIcon (#18549) 2025-06-24 19:56:54 +01:00
Mathias Fredriksson e443f8624d feat(agent/agentcontainers): implement ignore customization for devcontainers (#18530)
Fixes coder/internal#737
2025-06-24 18:52:05 +00:00
Steven Masley 06c997a100 chore: make telemetry use_classic_parameter_flow nullable (#18547) 2025-06-24 13:38:12 -05:00
Susana Ferreira b9e32c8eaf refactor: remove unused enterprise prebuilds id.go (#18543)
## Description

Remove unused `enterprise/coderd/prebuilds/id.go` file.
Note: PR https://github.com/coder/coder/pull/18333 moved `SystemUserID`
constant from `coderd/prebuilds/id.go` to the database package
`PrebuildsSystemUserID` to resolve an import cycle:
https://github.com/coder/coder/blob/main/coderd/database/constants.go
2025-06-24 19:28:41 +01:00
Cian Johnston 7070e47489 fix: update workspace table icons in WorkspacesTable (#18525)
Updates icons in WorkspacesTable to better differentiate between "start"
and "update and start".

Note: the logic I'm currently using is as follows:
* Workspace does not require active version and is outdated -> cloud
icon
* Workspace requires active version and is outdated -> circle play icon

I also, on a whim, updated the stories for the component to make the
workspace names more identifiably reflect their content.


![Screenshot 2025-06-24 at 11 49
17](https://github.com/user-attachments/assets/682183fc-2171-44ee-80c4-914932718163)
2025-06-24 19:23:59 +01:00
Mathias Fredriksson 99d124e276 feat(agent): enable devcontainers by default (#18533) 2025-06-24 21:17:04 +03:00
Danielle Maywood fcf93719c9 feat(agent/agentcontainers): retry with longer name on failure (#18513)
Closes https://github.com/coder/internal/issues/732

We now try (up to 5 times) when attempting to create an agent using the
workspace folder as the name.

It is important to note this flow is only ever ran when attempting to
create an agent using the workspace folder as the name. If a deployment
uses terraform or the devcontainer customization, we do not fall back to
this approach.
2025-06-24 19:04:16 +01:00
Hugo Dutka 4fd0312776 feat: use backend-supplied sidebar app id on the /task/$id page (#18458)
Related to https://github.com/coder/coder/issues/18454. It will close
https://github.com/coder/internal/issues/734.
2025-06-24 19:28:39 +02:00
Mathias Fredriksson 64a221489f fix(agent/agentcontainers): remove shellquote in favor of %q (#18544) 2025-06-24 17:18:28 +00:00
Hugo Dutka b6c493d0dc fix: correct hasAITaskResources logic for child modules (#18542) 2025-06-24 19:14:44 +02:00
Jaayden Halko b2009b2a86 chore: add a claude.md markdown file focusing on the frontend (#18510)
This adds additional context for frontend related work
2025-06-24 12:58:07 -04:00
Jaayden Halko ccf294eaf8 chore: improve visuals of dynamic parameters (#18537)
<img width="343" alt="Screenshot 2025-06-24 at 16 43 22"
src="https://github.com/user-attachments/assets/dc554f63-b825-4e59-896a-d078bae51c4a"
/>
<img width="837" alt="Screenshot 2025-06-24 at 16 43 37"
src="https://github.com/user-attachments/assets/e9e88164-0c87-43b5-9eb1-63fd6ea85095"
/>
2025-06-24 12:57:41 -04:00
Steven Masley e5eb2a8322 fix: prebuild user without ssh key when fetching owner ctx (#18541) 2025-06-24 16:49:36 +00:00
Bruno Quaresma cd484db872 fix: only override img size for direct button children (#18540)
The issue was causing the select menu, that uses an avatar inside of the
button, to have a wrong size.

Before:
<img width="191" alt="Screenshot 2025-06-24 at 13 18 51"
src="https://github.com/user-attachments/assets/4cc20bbc-daa6-44b0-802c-a1846740beb5"
/>

After:
<img width="191" alt="Screenshot 2025-06-24 at 13 18 41"
src="https://github.com/user-attachments/assets/107083f9-ef51-4d7d-84c3-c5d3e82307c8"
/>
2025-06-24 13:28:58 -03:00
Hugo Dutka dc24922039 fix: use the correct key for tasks tab visibility in embedded metadata (#18539)
The backend (introduced in https://github.com/coder/coder/pull/18401)
actually puts the value under the `tasks-tab-visible` key instead of the
`tasksTabVisible`:
2025-06-24 18:25:53 +02:00
Susana Ferreira f44969b689 chore: reorder prebuilt workspace authorization logic (#18506)
## Description

Follow-up from PR https://github.com/coder/coder/pull/18333
Related with:
https://github.com/coder/coder/pull/18333#discussion_r2159300881

This changes the authorization logic to first try the normal workspace
authorization check, and only if the resource is a prebuilt workspace,
fall back to the prebuilt workspace authorization check. Since prebuilt
workspaces are a subset of workspaces, the normal workspace check is
more likely to succeed. This is a small optimization to reduce
unnecessary prebuilt authorization calls.
2025-06-24 16:33:21 +01:00
Steven Masley 341b54e604 fix: allow dynamic parameters without requiring org membership (#18531) 2025-06-24 10:33:10 -05:00
Hugo Dutka 5816455207 fix: remove reference to a deleted variable (#18532)
git merge for https://github.com/coder/coder/pull/18511 went wrong on
main.
2025-06-24 15:02:37 +00:00
Sas Swart a4f1c64a9b fix: allow dynamic parameters to consider the prebuilds user an owner (#18529)
This Pull request allows dynamic parameters to list system users in its
search for workspace owners. This is necessary to allow prebuilds to
reconcile prebuilt workspaces and to delete them.
2025-06-24 16:47:01 +02:00
Hugo Dutka 1d2b96b01f feat: implement efficient backend querying on the tasks page (#18488)
Use the `/workspaces?q=has-ai-task=true`,
`/templates?q=has-ai-task=true` and `/aitasks/prompts` endpoints to
fetch Task templates and workspaces on the `/tasks` page.

Also:
- remove documentation link placeholders: the documentation is not in
place yet and is not going to be available before the June 24th code
freeze
- load workspaces and templates in parallel
- replace loading spinners with content skeletons

Related to https://github.com/coder/coder/issues/18454 and
https://github.com/coder/internal/issues/660.
2025-06-24 16:25:52 +02:00
Hugo Dutka 4ff2254e5f chore: remove ai tasks from experiment (#18511)
Closes https://github.com/coder/internal/issues/661
2025-06-24 16:24:01 +02:00
Steven Masley 45ab265df2 chore: add permissions to autobuilder & prebuilder to run wsbuild (#18527)
Read organization member and read files is now required for dynamic
param building.
2025-06-24 08:45:41 -05:00
Jaayden Halko 403f1c38fb fix: add bottom padding back (#18476)
This PR removed the bottom padding from the dashboard layout causing to
bottom areas of some workspaces and templates page to appear too close
to the footer. https://github.com/coder/coder/pull/17981

For now, this fix adds back the bottom padding until a more
comprehensive fix can be done for workspace and templates pages.


<img width="1164" alt="Screenshot 2025-06-20 at 18 00 55"
src="https://github.com/user-attachments/assets/fa1d703b-aa9d-4835-a3f9-16cdf21efa2c"
/>
<img width="1005" alt="Screenshot 2025-06-20 at 18 01 12"
src="https://github.com/user-attachments/assets/d247948b-8286-41f8-be9f-404f5d28fc73"
/>
<img width="732" alt="Screenshot 2025-06-20 at 18 02 31"
src="https://github.com/user-attachments/assets/aa361491-5316-4468-bc47-59a63a3328ec"
/>
2025-06-24 09:04:03 -04:00
Jaayden Halko 31d0c6fb33 feat: add better error display for workspace builds (#18518)
Classic parameters templates

<img width="548" alt="Screenshot 2025-06-23 at 23 27 46"
src="https://github.com/user-attachments/assets/e8e774bf-e201-4a80-a90c-3d6cc3658c20"
/>


Dynamic parameters templates
<img width="541" alt="Screenshot 2025-06-23 at 23 52 05"
src="https://github.com/user-attachments/assets/6a40f144-c0b2-4e16-8137-d31a52b71460"
/>
2025-06-24 09:03:40 -04:00
Yevhenii Shcherbina bca5c35aa2 fix: remove notifications for hard-limited prebuilds (#18528)
Relates to https://github.com/coder/internal/issues/674


Currently, we send notifications to **all template admins** for **every
failed and hard-limited preset**. This can generate excessive
noise—especially when someone is debugging a template and creates
multiple broken versions in quick succession.

For now, we've decided to remove hard-limited preset notifications to
reduce excessive noise.
In the long term, we plan to aggregate failure information and deliver
it on a daily or weekly basis.
2025-06-24 08:43:16 -04:00
Steven Masley 7b152cdd91 chore: increase fileCache hit rate in autobuilds lifecycle (#18507)
`wsbuilder` hits the file cache when running validation. This solution is imperfect, but by first sorting workspaces by their template version id, the cache hit rate should improve.
2025-06-24 07:36:39 -05:00
Cian Johnston 40667855b1 fix: agentcontainers: fix flake when ctx cancelled while running docker inspect (#18526)
Should fix https://github.com/coder/internal/issues/738
2025-06-24 13:30:09 +01:00
Michael Suchacz b091b996af chore: update VPN proto to match additional types used by Coder Desktop (#18504)
Extends vpn.proto with DownloadProgress messages used by Coder Desktop
on Windows.
2025-06-24 11:48:17 +00:00
Hugo Dutka 670fa4a3cc feat: add the /aitasks/prompts endpoint (#18464)
Add an endpoint to fetch AI task prompts for multiple workspace builds
at the same time. A prompt is the value of the "AI Prompt" workspace
build parameter. On main, the only way our API allows fetching workspace
build parameters is by using the `/workspacebuilds/$build_id/parameters`
endpoint, requiring a separate API call for every build.

The Tasks dashboard fetches Task workspaces in order to show them in a
list, and then needs to fetch the value of the `AI Prompt` parameter for
every task workspace (using its latest build id), requiring an
additional API call for each list item. This endpoint will allow the
dashboard to make just 2 calls to render the list: one to fetch task
workspaces, the other to fetch prompts.

<img width="1512" alt="Screenshot 2025-06-20 at 11 33 11"
src="https://github.com/user-attachments/assets/92899999-e922-44c5-8325-b4b23a0d2bff"
/>

Related to https://github.com/coder/internal/issues/660.
2025-06-24 13:06:02 +02:00
Danny Kopping 0238f2926d feat: persist AI task state in template imports & workspace builds (#18449) 2025-06-24 10:36:37 +00:00
Danny Kopping 6cc4cfa346 feat: allow for default presets (#18445) 2025-06-24 12:19:19 +02:00
Mathias Fredriksson 3fb5d0b52d fix(agent/agentcontainers): use correct env for execer commands (#18508) 2025-06-24 12:56:54 +03:00
Kacper Sawicki 7c40f86a6a feat(cli): include license status in support bundle (#18472)
Closes #18207

This PR adds license status to support bundle to help with
troubleshooting license-related issues.

- `license-status.txt`, is added to the support bundle.
    - it contains the same output as the `coder license list` command.
- license output formatter logic has been extracted into a separate
function.
- this allows it to be reused both in the `coder license list` cmd and
in the support bundle generation.
2025-06-24 11:16:31 +02:00
Dean Sheather 2afd1a203e chore: disable devtunnel tests on windows (#18521) 2025-06-24 19:01:29 +10:00
Dean Sheather 9d148e9543 chore: fix wsproxy flakes (#18522) 2025-06-24 19:01:18 +10:00
Cian Johnston d892427b78 fix: do not warn on valid known experiments (#18514)
Fixes https://github.com/coder/coder/issues/18024

* drive-by: renames `handleExperimentsSafe` to
`handleExperimentsAvailable` to better match semantics
* defines list of `codersdk.ExperimentsKnown` and updates
`ReadExperiments` to log on invalid experiments
* typescript-ignores `codersdk.Experiments` so apitypings generates a
valid enum list of possible values of experiment
* updates OverviewPageView to distinguish between known 'hidden'
experiments and unknown 'invalid' experiments
2025-06-24 09:14:41 +01:00
Sas Swart 4f98fd4e6e fix: fix validation error during workspace creation without preset (#18494)
closes https://github.com/coder/coder/issues/18430.

Selecting a preset, and then selecting the "None" preset used to result in a validation error because an invalid preset id ("") was sent to the backend.

---------

Co-authored-by: Jaayden Halko <jaayden@coder.com>
Co-authored-by: Susana Ferreira <susana@coder.com>
2025-06-24 06:48:59 +00:00
Danny Kopping 796dc7aac9 chore: ignore splunk.com in linkspector (#18502) 2025-06-24 07:19:47 +02:00
Steven Masley 5ed0c7abcb chore: improve dynamic parameter validation errors (#18501)
`BuildError` response from `wsbuilder` does not support rich errors from validation. Changed this to use the `Validations` block of codersdk responses to return all errors for invalid parameters.
2025-06-23 15:08:18 -05:00
Steven Masley f6e4ba6ed9 chore: remove per request dynamic parameters opt in and rely on template (#18505)
When in experimental this was used as an escape hatch. Removed to be
consistent with the template author's intentions

Backwards compatible, removing an experimental api field that is no longer used.
2025-06-23 15:04:09 -05:00
Jaayden Halko 6877142a0e feat: create experimental template embed page for dynamic params (#17999)
resolves coder/preview#58
2025-06-23 15:47:30 -04:00
Asher 7dd90f3076 chore: show iframe controls on preview slug only (#18480) 2025-06-23 11:44:26 -08:00
Danny Kopping 4699393522 fix: upsert coder_app resources in case they are persistent (#18509) 2025-06-23 18:50:44 +00:00
Steven Masley 82af2e019d feat: implement dynamic parameter validation (#18482)
# What does this do?

This does parameter validation for dynamic parameters in `wsbuilder`. All input parameters are validated in `coder/coder` before being sent to terraform.

The heart of this PR is [`ResolveParameters`](https://github.com/coder/coder/blob/b65001e89c0577199a8e470c138c51e91cf2350c/coderd/dynamicparameters/resolver.go#L30-L30).

# What else changes?

`wsbuilder` now needs to load the terraform files into memory to succeed. This does add a larger memory requirement to workspace builds.

# Future work

- Sort autostart handling workspaces by template version id. So workspaces with the same template version only load the terraform files once from the db, and store them in the cache.
2025-06-23 12:35:15 -05:00
Steven Masley 7254c08af4 chore: remove parallel queries in the same transaction (#18489)
Parallel concurrent queries cannot be run in the same tx

Was getting this error: https://stackoverflow.com/questions/78472996/go-postgres-pq-unexpected-parse-response-c-with-queryrow
2025-06-23 12:17:58 -05:00
Steven Masley c1b35bf2f6 chore: use database in current context for file cache (#18490)
Using the db.Store when in a TX causes a deadlock for dbmem.
In production, this can cause a deadlock if at the current conn pool
limit.
2025-06-23 11:58:52 -05:00
Steven Masley 659b787b9f chore: set wsbuilder to use preview parameters (#18474)
Use richer `previewtypes.Parameter` for `wsbuilder`. This is a pre-requirement to adding dynamic parameter validation.

The richer type contains more information than the `db` parameter, so the conversion is lossless.
2025-06-23 11:31:53 -05:00
dependabot[bot] ba08d38563 chore: bump github.com/coder/terraform-provider-coder/v2 from 2.6.0 to 2.7.0 (#18499)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/coder/terraform-provider-coder/v2&package-manager=go_modules&previous-version=2.6.0&new-version=2.7.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>
2025-06-23 13:54:51 +00:00
dependabot[bot] 183eaa21dc ci: bump the github-actions group with 5 updates (#18497)
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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-23 13:46:08 +00:00
Cian Johnston 2f55e29466 fix: complete job and mark workspace as deleted when no provisioners are available (#18465)
Alternate fix for https://github.com/coder/coder/issues/18080

Modifies wsbuilder to complete the provisioner job and mark the
workspace as deleted if it is clear that no provisioner will be able to
pick up the delete build.

This has a significant advantage of not deviating too much from the
current semantics of `POST /api/v2/workspacebuilds`.
https://github.com/coder/coder/pull/18460 ends up returning a 204 on
orphan delete due to no build being created.

Downside is that we have to duplicate some responsibilities of
provisionerdserver in wsbuilder.

There is a slight gotcha to this approach though: if you stop a
provisioner and then immediately try to orphan-delete, the job will
still be created because of the provisioner heartbeat interval. However
you can cancel it and try again.
2025-06-23 14:07:42 +01:00
Danielle Maywood c3bc1e75ec feat(agent/agentcontainers): fall back to workspace folder name (#18466)
This PR changes the logic for how we decide on an agent name.

Previously it followed these steps:
1. Use a name from `customizations.coder.name`
2. Use a name from the terraform resource `coder_devcontainer`
3. Use the dev container's friendly name

With this change it now does:
1. Use a name from `customizations.coder.name`
2. Use a name from the terraform resource `coder_devcontainer`
3. Use a name from the workspace folder
4. Use the dev container's friendly name

We now attempt to construct a valid agent name from the workspace
folder. Should we fail to construct a valid agent name from the
workspace folder, we will fall back to the dev container's friendly
name.

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-23 13:05:39 +01:00
Cian Johnston 0a12ec5fd8 fix(enterprise/coderd): skip org membership check for prebuilds user on group patch (#18329)
Currently, the prebuilds documentation states:

```
### Managing resource quotas

Prebuilt workspaces can be used in conjunction with [resource quotas](../../users/quotas.md).
Because unclaimed prebuilt workspaces are owned by the `prebuilds` user, you can:

1. Configure quotas for any group that includes this user.
1. Set appropriate limits to balance prebuilt workspace availability with resource constraints.

If a quota is exceeded, the prebuilt workspace will fail provisioning the same way other workspaces do.
```

If you need to have a separate quota for prebuilds as opposed to regular
users, you are required to create a separate group, as quotas are
applied to groups.

Currently it is not possible to create a separate 'prebuilds' group with
only the prebuilds user to add a quota. This PR skips the org membership
check specifically for the prebuilds user when patching a group.


![image](https://github.com/user-attachments/assets/2ff566bb-97bd-4c73-917a-903ea54dd7a6)
2025-06-23 10:32:30 +01:00
Danny Kopping 66e8dbbe17 feat: persist generated coder_app id (#18487) 2025-06-23 08:46:18 +00:00
Cian Johnston 49fcffc266 fix!: stop workspace before update (#18425)
Fixes https://github.com/coder/coder/issues/17840

NOTE: calling this out as a breaking change so that it is highly visible
in the changelog.

* CLI: Modifies `coder update` to stop the workspace if already running.
* UI: Modifies "update" button to always stop the workspace if already
running.
2025-06-23 09:12:37 +01:00
jabacrack 725bc3792e fix: restrict database access from outside in docker compose installation (#18229)
Co-authored-by: Atif Ali <atif@coder.com>
2025-06-21 18:46:30 +05:00
DevCats 738442b4d0 chore: add amazon-q icon SVG to static icons (#18295)
Co-authored-by: Atif Ali <atif@coder.com>
2025-06-21 08:41:12 +00:00
Asher 0a483ea2b7 feat: add idle app status (#18415)
"Idle" is more accurate than "complete" since:

1. AgentAPI only knows if the screen is active; it has no way of knowing
    if the task is complete.
2. The LLM might be done with its current prompt, but that does not mean
    the task is complete either (it likely needs refinement).

The "complete" state will be reserved for future definition.

Additionally, in the case where the screen goes idle but the LLM never
reported a status update, we can get an idle icon without a message, and
it looks kinda janky in the UI so if there is no message I display the
state text.

Closes https://github.com/coder/internal/issues/699
2025-06-20 14:34:31 -08:00
Atif Ali 0258f1d771 docs: update Railway.com installation link (#18484) 2025-06-21 02:36:14 +05:00
Jaayden Halko 579c851285 chore: update template opt-in checkbox (#18481)
<img width="848" alt="Screenshot 2025-06-20 at 20 01 55"
src="https://github.com/user-attachments/assets/bd825778-3d10-49e1-bcc3-193516ed3ba6"
/>
2025-06-20 17:18:07 -04:00
Edward Angert cbe4627893 docs: document how to tag coder users in dx data cloud (#17805)
[preview](https://coder.com/docs/@tag-coder-users-dx/admin/integrations/data-cloud)

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-06-20 17:13:36 -04:00
Steven Masley 6e4508e29c chore: assume template versions without tf values to be empty (#18479)
Closes https://github.com/coder/internal/issues/735
2025-06-20 15:05:22 -05:00
ケイラ fae30a00fd chore: remove unnecessary redeclarations in for loops (#18440) 2025-06-20 13:16:55 -06:00
blink-so[bot] 4fe0a4bca2 feat: add ephemeral parameter dialog for workspace start/restart (#18413)
resolves #17709 

FYI, blink created a first draft which was heavily modified.

## Summary

This PR implements ephemeral parameter handling for workspace
start/restart operations when templates use dynamic parameters
(`use_classic_parameter_flow = false`).

<img width="522" alt="Screenshot 2025-06-18 at 14 35 54"
src="https://github.com/user-attachments/assets/450527c0-cc88-4fc3-b0fa-170bdeb5ea51"
/>

<img width="327" alt="Screenshot 2025-06-18 at 14 35 43"
src="https://github.com/user-attachments/assets/ea74bf8e-d127-489d-b406-edfc5ec1e9a8"
/>

![Screenshot 2025-06-18 at 14 41
41](https://github.com/user-attachments/assets/52f1ab99-f3bf-4540-91ac-e385c632de8c)


## Changes

### 1. EphemeralParametersDialog Component
- **New**: `site/src/components/EphemeralParametersDialog/`
- Shows a dialog when starting/restarting workspaces with ephemeral
parameters
- Lists ephemeral parameters with names and descriptions
- Provides options to continue without setting values or navigate to
parameters page

### 2. WorkspaceReadyPage Updates
- Added `checkEphemeralParameters()` function using
`API.getDynamicParameters`
- Modified `handleStart` and `handleRestart` to check for ephemeral
parameters
- Only triggers for templates with `use_classic_parameter_flow = false`
- Shows dialog if ephemeral parameters exist, otherwise proceeds
normally

### 3. BuildParametersPopover Updates
- Added special UI for non-classic parameter flow templates with
ephemeral parameters
- Lists ephemeral parameters with descriptions
- Explains that users must use the workspace parameters page
- Provides direct link to `WorkspaceParametersPageExperimental`

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: jaaydenh <1858163+jaaydenh@users.noreply.github.com>
Co-authored-by: Jaayden Halko <jaayden@coder.com>
2025-06-20 15:04:36 -04:00
Steven Masley 556b095d0f chore: add cacheCloser to cleanup all opened files (#18473) 2025-06-20 13:25:33 -05:00
Steven Masley 9b5d49967c chore: refactor dynamic parameters into dedicated package (#18420)
This PR extracts dynamic parameter rendering logic from
coderd/parameters.go into a new coderd/dynamicparameters package. Partly
for organization and maintainability, but primarily to be reused in
`wsbuilder` to be leveraged as validation.
2025-06-20 13:00:39 -05:00
Susana Ferreira 72f7d70bab feat: allow TemplateAdmin to delete prebuilds via auth layer (#18333)
## Description

This PR adds support for deleting prebuilt workspaces via the
authorization layer. It introduces special-case handling to ensure that
`prebuilt_workspace` permissions are evaluated when attempting to delete
a prebuilt workspace, falling back to the standard `workspace` resource
as needed.

Prebuilt workspaces are a subset of workspaces, identified by having
`owner_id` set to `PREBUILD_SYSTEM_USER`.
This means:
* A user with `prebuilt_workspace.delete` permission is allowed to
**delete only prebuilt workspaces**.
* A user with `workspace.delete` permission can **delete both normal and
prebuilt workspaces**.

⚠️ This implementation is scoped to **deletion operations only**. No
other operations are currently supported for the `prebuilt_workspace`
resource.

To delete a workspace, users must have the following permissions:
* `workspace.read`: to read the current workspace state
* `update`: to modify workspace metadata and related resources during
deletion (e.g., updating the `deleted` field in the database)
* `delete`: to perform the actual deletion of the workspace

## Changes

* Introduced `authorizeWorkspace()` helper to handle prebuilt workspace
authorization logic.
* Ensured both `prebuilt_workspace` and `workspace` permissions are
checked.
* Added comments to clarify the current behavior and limitations.
* Moved `SystemUserID` constant from the `prebuilds` package to the
`database` package `PrebuildsSystemUserID` to resolve an import cycle
(commit
https://github.com/coder/coder/pull/18333/commits/f24e4ab4b6f0a56726fd04be2d7302c9fdb52d53).
* Update middleware `ExtractOrganizationMember` to include system user
members.
2025-06-20 17:36:32 +01:00
Danielle Maywood d61353f468 fix(agent/agentcontainers): read WorkspaceFolder from config (#18467)
Instead of exec'ing `pwd` inside of the container, we instead read
`WorkspaceFolder` from the outcome of `read-configuration`.
2025-06-20 16:34:30 +01:00
Atif Ali 9c1feffded docs: add troubleshooting section to JetBrains Toolbox docs (#18394) 2025-06-20 20:00:56 +05:00
Yevhenii Shcherbina 8e3022ed9e docs: add documentation for prebuild scheduling feature (#18462)
Follow-up to https://github.com/coder/coder/pull/18126

Changes:
- address issue mentioned here:
https://github.com/coder/coder/pull/18126#discussion_r2144557600
- add docs for prebuilds scheduling

---------

Co-authored-by: Danny Kopping <danny@coder.com>
Co-authored-by: Atif Ali <atif@coder.com>
2025-06-20 10:08:47 -04:00
Yevhenii Shcherbina da5d5ba96a fix: implement prebuild schedules methods for dbmem (#18469)
Follow-up to https://github.com/coder/coder/pull/18126
2025-06-20 10:06:06 -04:00
Hugo Dutka 4ceb549c3f chore: close db properly in early exit paths in ConnectToPostgres (#18448)
There were some code paths where if we exited early from the function
the postgres connection would never get cleaned up.

This is the mechanism that cleans up the db - it requires the err
variable to be not nil:
https://github.com/coder/coder/blob/118bf981454188c4989e8b565dec67906616f885/cli/server.go#L2319-L2328
2025-06-20 14:11:52 +02:00
Hugo Dutka 32239b29cb chore: add AI-tasks-specific fields to codersdk.WorkspaceBuild (#18436)
This will be needed by the frontend on the `/task/$id` page to display
the app in the sidebar.

Related to https://github.com/coder/coder/issues/18158
2025-06-20 10:59:34 +02:00
Atif Ali d788ab9e55 feat: improve AppLink error message for coder:// URLs (#18444)
Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: Dean Sheather <dean@deansheather.com>
2025-06-20 13:07:20 +05:00
Mathias Fredriksson bacdc28881 fix(cli)!: enforce selection for multiple agents rather than use randomness (#18427)
In the past we randomly selected workspace agent if there were multiple.
Unless both are running on the same machine with the same configuration,
this would be very confusing behavior for a user.

With the introduction of sub agents (devcontainer agents), we have now
made this an error state and require the specifying of agent when there
is more than one (either normal agent or sub agent).

This aligns with the behavior of e.g. Coder Desktop.

Fixes coder/internal#696
2025-06-19 22:13:35 +03:00
Asher 63b5f0b998 feat: add app iframe controls (#18421)
Add a home and "open in new tab" button.  Other controls are not 
possible due to cross-origin restrictions.

Closes #18178

---------

Co-authored-by: BrunoQuaresma <bruno_nonato_quaresma@hotmail.com>
2025-06-19 09:22:36 -08:00
Danielle Maywood b49e62faad fix(agent/agentcontainers): ensure agent name env var is correct (#18457)
Previously, `CODER_WORKSPACE_AGENT_NAME` would always be passed as the
dev container name.

This is invalid for the following scenarios:
- The dev container is specified in terraform
- The dev container has a name customization

This change now runs `ReadConfig` twice. The first read is to extract a
name (if present), from the `devcontainer.json`. The second read will
then use the name we have stored for the dev container (so this could be
either the customization, terraform resource name, or container name).
2025-06-19 16:44:00 +01:00
Mathias Fredriksson 9e7b7f2b28 feat(dogfood/coder): add devcontainer autostart parameter (#18459) 2025-06-19 15:18:02 +00:00
Yevhenii Shcherbina 0f6ca55238 feat: implement scheduling mechanism for prebuilds (#18126)
Closes https://github.com/coder/internal/issues/312
Depends on https://github.com/coder/terraform-provider-coder/pull/408

This PR adds support for defining an **autoscaling block** for
prebuilds, allowing number of desired instances to scale dynamically
based on a schedule.

Example usage:
```
data "coder_workspace_preset" "us-nix" {
  ...
  
  prebuilds = {
    instances = 0                  # default to 0 instances
    
    scheduling = {
      timezone = "UTC"             # a single timezone is used for simplicity
      
      # Scale to 3 instances during the work week
      schedule {
        cron = "* 8-18 * * 1-5"    # from 8AM–6:59PM, Mon–Fri, UTC
        instances = 3              # scale to 3 instances
      }
      
      # Scale to 1 instance on Saturdays for urgent support queries
      schedule {
        cron = "* 8-14 * * 6"      # from 8AM–2:59PM, Sat, UTC
        instances = 1              # scale to 1 instance
      }
    }
  }
}
```

### Behavior
- Multiple `schedule` blocks per `prebuilds` block are supported.
- If the current time matches any defined autoscaling schedule, the
corresponding number of instances is used.
- If no schedule matches, the **default instance count**
(`prebuilds.instances`) is used as a fallback.

### Why
This feature allows prebuild instance capacity to adapt to predictable
usage patterns, such as:
- Scaling up during business hours or high-demand periods
- Reducing capacity during off-hours to save resources

### Cron specification
The cron specification is interpreted as a **continuous time range.**

For example, the expression:

```
* 9-18 * * 1-5
```

is intended to represent a continuous range from **09:00 to 18:59**,
Monday through Friday.

However, due to minor implementation imprecision, it is currently
interpreted as a range from **08:59:00 to 18:58:59**, Monday through
Friday.

This slight discrepancy arises because the evaluation is based on
whether a specific **point in time** falls within the range, using the
`github.com/coder/coder/v2/coderd/schedule/cron` library, which performs
per-minute matching rather than strict range evaluation.

---------

Co-authored-by: Danny Kopping <danny@coder.com>
2025-06-19 11:08:48 -04:00
Mathias Fredriksson 511fd09582 fix(coderd): mark sub agent deletion via boolean instead of delete (#18411)
Deletion of data is uncommon in our database, so the introduction of sub agents
and the deletion of them introduced issues with foreign key assumptions, as can
be seen in coder/internal#685. We could have only addressed the specific case by
allowing cascade deletion of stats as well as handling in the stats collector,
but it's unclear how many more such edge-cases we could run into.

In this change, we mark the rows as deleted via boolean instead, and filter them
out in all relevant queries.

Fixes coder/internal#685
2025-06-19 13:32:51 +00:00
Mathias Fredriksson 68f21fa523 feat(dogfood/coder): add docker volume for... docker (#18455) 2025-06-19 16:10:15 +03:00
Mathias Fredriksson 3ad842bd8f feat(dogfood/coder): add devcontainer-cli module (#18456)
This change adds the `devcontainers-cli` module to ensure the command
has been installed.

Its presence will not change how workspaces behave currently without
additional changes to the terraform.

Updates coder/internal#463
2025-06-19 15:35:56 +03:00
Danielle Maywood a04268a188 feat(agent/agentcontainers): support agent name in customization (#18451)
Relates to https://github.com/coder/internal/issues/732

This PR supports specifying a name that will be used for the
devcontainer agent in the customizations section of the
devcontainer.json configuration file.
2025-06-19 13:21:59 +01:00
Mathias Fredriksson 884ad39bd0 fix(dogfood/coder): use agent name for zed app (#18450) 2025-06-19 10:32:44 +00:00
Danielle Maywood 118bf98145 chore(agent): add workspace owner env var and log dev container app failures (#18433)
Listen to feedback that was missed in
https://github.com/coder/coder/pull/18346

- Adds `CODER_WORKSPACE_OWNER_NAME` into the agent environment.
- Logs warnings for when dev container app creation fails.
2025-06-19 09:37:48 +01:00
Jon Ayers 8b27983d14 fix: fix TestAcquireJobWithCancel_Cancel flake (#18441) 2025-06-18 22:51:13 -04:00
Jon Ayers b0fa3275d2 fix: increase TestAcquireJob_LongPoll timeout to prevent flakiness (#18442)
I'll be honest I'm not even really sure the point of this test but it
was failing due to

```
2025-06-16T15:01:54.0863251Z         	Error:      	Received unexpected error:
2025-06-16T15:01:54.0863554Z         	            	acquire job:
2025-06-16T15:01:54.0864230Z         	            	    github.com/coder/coder/v2/coderd/provisionerdserver.(*server).AcquireJob
2025-06-16T15:01:54.0865173Z         	            	        /home/runner/work/coder/coder/coderd/provisionerdserver/provisionerdserver.go:329
2025-06-16T15:01:54.0865683Z         	            	  - failed to acquire job:
2025-06-16T15:01:54.0866374Z         	            	    github.com/coder/coder/v2/coderd/provisionerdserver.(*Acquirer).AcquireJob
2025-06-16T15:01:54.0867262Z         	            	        /home/runner/work/coder/coder/coderd/provisionerdserver/acquirer.go:148
2025-06-16T15:01:54.0867819Z         	            	  - pq: canceling statement due to user request
```

which is certainly unintended.
2025-06-19 02:50:53 +00:00
Steven Masley 04d202ae07 chore: file cache Release tied 1:1 with an acquire (#18410)
File cache close made idempotent
2025-06-18 18:22:23 -05:00
Hugo Dutka 4039327b1a chore: check version.Err() after version.Next() in ConnectToPostgres (#18437) 2025-06-18 21:44:58 +02:00
Jaayden Halko 7849794701 chore: change feature stage badge from early access to beta (#18435) 2025-06-18 15:18:34 -04:00
Hugo Dutka de07351b8d fix: access the templateVersion.HasAITask field properly (#18434) 2025-06-18 17:23:34 +00:00
Spike Curtis 1357a3a273 chore: improve logging and x11 handler call (#18422)
* use `ctx` instead of `session.Context()` for consistency
* log SSH connection start with the phrase `ssh connection` for symmetry
with the stop log and ease of `grep`'ing.
2025-06-18 21:21:06 +04:00
Hugo Dutka 8f6a5afa4f feat: add backend logic for determining tasks tab visibility (#18401)
This PR implements the backend logic for determining if the Tasks tab
should be visible in the web UI as described in [the
RFC](https://www.notion.so/coderhq/Coder-Tasks-207d579be5928053ab68c8d9a4b59eaa?source=copy_link#210d579be5928013ab5acbe69a2f548b).

The frontend component will be added in a follow-up PR once the entire
Tasks backend is implemented so as not to break the dogfood environment
until then.
2025-06-18 18:32:34 +02:00
Hugo Dutka 591f5db5f6 feat: add has-ai-task filters to the /workspaces and /templates endpoints (#18387)
This PR allows filtering templates and workspaces with the `has-ai-task`
filter as described in the [Coder Tasks
RFC](https://www.notion.so/coderhq/Coder-Tasks-207d579be5928053ab68c8d9a4b59eaa?source=copy_link#20ad579be59280e6a000eb0646d3c2df).
2025-06-18 18:22:45 +02:00
Mathias Fredriksson 56ff0fb65a fix(agent/agentcontainers): make sure arch is set for sub agents (#18428) 2025-06-18 17:35:29 +03:00
blink-so[bot] 2f59cd0c73 fix: improve JetBrains error message to mention Toolbox requirement (#18294)
Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: kylecarbs <7122116+kylecarbs@users.noreply.github.com>
2025-06-18 19:34:39 +05:00
blink-so[bot] 98a9aa19ce docs: fix swagger documentation for DELETE port share endpoint (#18426)
Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: matifali <10648092+matifali@users.noreply.github.com>
Co-authored-by: Cian Johnston <cian@coder.com>
2025-06-18 14:07:53 +00:00
Danielle Maywood 529fb5083c feat(agent/agentcontainers): support apps for dev container agents (#18346)
Add apps to the sub agent based on the dev container customization.

The implementation also provides the following env variables for use in
the devcontainer json

- `CODER_WORKSPACE_AGENT_NAME`
- `CODER_WORKSPACE_USER_NAME`
- `CODER_WORKSPACE_NAME`
- `CODER_DEPLOYMENT_URL`
2025-06-18 14:55:27 +01:00
blink-so[bot] 5e3a225e3b feat: add stop workspace button with confirmation dialog (#18372)
Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: matifali <10648092+matifali@users.noreply.github.com>
2025-06-18 17:49:26 +05:00
Charlie Voiselle 44d46469e1 fix: defensively handle nil maps and slices in marshaling (#18418)
Adds a custom marshaler to handle some cases where nils were being
marshaled to nulls, causing the web UI to throw an error.

---------

Co-authored-by: Steven Masley <stevenmasley@gmail.com>
2025-06-17 17:50:18 -04:00
Atif Ali 9cbe02e8b7 docs: update ai agents with module links (#18368)
Updated with module links.
- [ ] Still missing the Amazon Q agent.


[preview](https://coder.com/docs/@atif%2Fai-agents-modules/ai-coder/agents#types-of-coding-agents)

---------

Co-authored-by: Edward Angert <EdwardAngert@users.noreply.github.com>
2025-06-17 21:19:42 +01:00
Steven Masley 1672eeb0eb chore: add dynamic parameter template value to telemetry (#18414) 2025-06-17 13:28:56 -05:00
Asher 82c14e00ce feat: add csp headers for embedded apps (#18374)
I modified the proxy host cache we already had and were using for
websocket csp headers to also include the wildcard app host, then used
those for frame-src policies.

I did not add frame-ancestors, since if I understand correctly, those
would go on the app, and this middleware does not come into play there.
Maybe we will want to add it on workspace apps like we do with cors, if
we find apps are setting it to `none` or something.

Closes https://github.com/coder/internal/issues/684
2025-06-17 09:00:32 -08:00
Steven Masley aee96c9eac fix: set fileSize to full length instead of unread portion (#18409)
`content.Len()` would return `0` bytes after a file was fully read.
Since the buffer `Len` function returns the length of the unread
portion.
2025-06-17 10:57:34 -05:00
Mathias Fredriksson 7fa1ad8923 fix(agent/agentcontainers): reduce need to recreate sub agents (#18402) 2025-06-17 18:53:41 +03:00
blink-so[bot] 7e9a9e098c chore: update Terraform to 1.12.2 (#18407)
Updates Terraform from 1.11.4 to 1.12.2 across all relevant files.

Changes include:
- GitHub Actions setup-tf configuration
- Dockerfile configurations (dogfood and base)
- Install script
- Provisioner install.go with version constants
- Test data files (tfstate.json, tfplan.json, version.txt)

Follows the same pattern as PR #17323 which updated to 1.11.4.

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: sreya <4856196+sreya@users.noreply.github.com>
2025-06-18 01:47:38 +10:00
blink-so[bot] 1a693383a9 chore: update Go version to 1.24.4 (#18408)
Updates all Go version references in the codebase to use Go 1.24.4.

## Changes
- Update `go.mod` to use Go 1.24.4
- Update `dogfood/coder/Dockerfile` GO_VERSION to 1.24.4  
- Update `.github/actions/setup-go/action.yaml` default version to
1.24.4
- Update `examples/parameters-dynamic-options/variables.yml` to use
golang:1.24

## Testing
-  All Go version references are consistent (verified with
`scripts/check_go_versions.sh`)
-  Build tested successfully with Go 1.24.4
-  Binary runs correctly

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: sreya <4856196+sreya@users.noreply.github.com>
2025-06-18 01:46:39 +10:00
Mathias Fredriksson b9ac16cb40 test(testutil): improve chan.go error visibility (#18406) 2025-06-17 14:39:31 +00:00
Hugo Dutka ebc769f328 chore: make has_ai_task fields on workspace builds and template versions nullable (#18403)
The fields must be nullable because there’s a period of time between
inserting a row into the database and finishing the “plan” provisioner
job when the final value of the field is unknown.
2025-06-17 16:08:34 +02:00
Mathias Fredriksson d6df1f23a9 fix(agent/agentcontainers): update sub agent client on reconnect (#18399)
Fixes coder/internal#697
2025-06-17 13:58:09 +00:00
Mathias Fredriksson 97474bb28b feat: support devcontainer agents in ui and unify backend (#18332)
This commit consolidates two container endpoints on the backend and improves the
frontend devcontainer support by showing names and displaying apps as
appropriate.

With this change, the frontend now has knowledge of the subagent and we can also
display things like port forwards.

The frontend was updated to show dev container labels on the border as well as
subagent connection status. The recreation flow was also adjusted a bit to show
placeholder app icons when relevant.

Support for apps was also added, although these are still WIP on the backend.
And the port forwarding utility was added in since the sub agents now provide
the necessary info.

Fixes coder/internal#666
2025-06-17 16:06:47 +03:00
Susana Ferreira cda9208580 test: add ReconcileAll tests for multiple actions on expired prebuilds (#18265)
## Description

Adds tests for `ReconcileAll` to verify the full reconciliation flow
when handling expired prebuilds. This complements existing lower-level
tests by checking multiple reconciliation actions (delete + create) at
the higher reconciliation cycle level.

Related with comment:
https://github.com/coder/coder/pull/17996#issuecomment-2910516489
2025-06-17 13:06:36 +01:00
ケイラ 5df70a613d feat: add organization scope for shared ports (#18314) 2025-06-16 16:15:59 -06:00
ケイラ eff2174198 fix: prevent badge text wrapping (#18396)
Closes https://github.com/coder/coder/issues/17927
2025-06-16 14:19:58 -06:00
Steven Masley 5a890c4aec test: fix TestUploadFileLargeModuleFiles flake, context to subtest (#18395)
Declared context outside the subtest t.Parallel.
2025-06-16 18:25:31 +00:00
Edward Angert 5c16079aff docs: add more specific steps and information about oidc refresh tokens (#18336)
closes https://github.com/coder/coder/issues/18307

relates to https://github.com/coder/coder/pull/18318

preview:
-
[refresh-tokens](https://coder.com/docs/@18307-refresh-tokens/admin/users/oidc-auth/refresh-tokens)
-
[configuring-okta](https://coder.com/docs/@18307-refresh-tokens/tutorials/configuring-okta)
~(not sure why @Emyrk 's photo is so huge there though)~ ✔️
- [x] removed from
[idp-sync](https://coder.com/docs/@18307-refresh-tokens/admin/users/idp-sync)

to do:
- move keycloak
- add ping federate and azure
- edit text (possibly placeholders for now - I want to see how it all
relates and edit it again. right now, there's a note about the same
thing in every section in way that's not super helpful/necessary)
- ~convert some paragraphs to OL~ calling this out of scope for now

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-06-16 13:18:55 -04:00
Jaayden Halko 095007766b fix: template settings checkbox text for dynamic parameters (#18392) 2025-06-16 11:57:01 -04:00
Spike Curtis 86c29770e8 docs: warn about RDP over UDP with Coder Desktop (#18354)
Warns about UDP incompatibility for Coder Connect and RDP over UDP; explains how to disable.

Fixes https://github.com/coder/internal/issues/608

[preview](https://coder.com/docs/@spike%2Finternal-608-rdp-udp-docs/user-guides/workspace-access/remote-desktops#coder-desktop-beta)
2025-06-16 19:30:22 +04:00
Steven Masley 68e9058712 chore: use coder repository for large module in dogfood (#18391) 2025-06-16 14:56:33 +00:00
Hugo Dutka fa86cc4adf chore: support the has_ai_task column in template version and workspace insert queries (#18385)
https://github.com/coder/coder/pull/18359 added the `has_ai_task`
columns on the `workspace_builds` and `template_versions` tables.
2025-06-16 16:07:16 +02:00
Steven Masley d5624668d4 chore: use large modules in dogfood template (#18389)
Large modules can potentially break or slow down template behaviors. Our
primary dogfood template should experience this if it becomes an issue.

Just trying to catch things in dogfood before we experience them in the
wild.
2025-06-16 08:51:45 -05:00
Steven Masley 1d1070d051 chore: ensure proper rbac permissions on 'Acquire' file in the cache (#18348)
The file cache was caching the `Unauthorized` errors if a user without
the right perms opened the file first. So all future opens would fail.

Now the cache always opens with a subject that can read files. And authz
is checked on the Acquire per user.
2025-06-16 13:40:45 +00:00
dependabot[bot] d83706bd5b ci: bump the github-actions group with 7 updates (#18388)
Bumps the github-actions group with 7 updates:

| Package | From | To |
| --- | --- | --- |
|
[step-security/harden-runner](https://github.com/step-security/harden-runner)
| `2.12.0` | `2.12.1` |
| [chromaui/action](https://github.com/chromaui/action) | `12.1.1` |
`12.2.0` |
| [actions/attest](https://github.com/actions/attest) | `2.3.0` |
`2.4.0` |
| [fluxcd/flux2](https://github.com/fluxcd/flux2) | `2.6.1` | `2.6.2` |
|
[tj-actions/changed-files](https://github.com/tj-actions/changed-files)
| `115870536a85eaf050e369291c7895748ff12aea` |
`d52d20fa3f981cb852b861fd8f55308b5fe29637` |
| [github/codeql-action](https://github.com/github/codeql-action) |
`3.28.19` | `3.29.0` |
|
[umbrelladocs/action-linkspector](https://github.com/umbrelladocs/action-linkspector)
| `1.3.4` | `1.3.5` |

Updates `step-security/harden-runner` from 2.12.0 to 2.12.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/step-security/harden-runner/releases">step-security/harden-runner's
releases</a>.</em></p>
<blockquote>
<h2>v2.12.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Detection capabilities have been upgraded to better recognize
attempts at runner tampering. These improvements are informed by
real-world incident learnings, including analysis of anomalous behaviors
observed in the tj-actions and reviewdog supply chain attack.</li>
<li>Resolved an issue where the block policy was not enforced correctly
when the GitHub Actions job was running inside a container on a
self-hosted VM runner.</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/step-security/harden-runner/compare/v2...v2.12.1">https://github.com/step-security/harden-runner/compare/v2...v2.12.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/step-security/harden-runner/commit/002fdce3c6a235733a90a27c80493a3241e56863"><code>002fdce</code></a>
Merge pull request <a
href="https://redirect.github.com/step-security/harden-runner/issues/544">#544</a>
from step-security/rc-21</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/2489e3fcb3d00eac3cb27c9b490431a4d26eac58"><code>2489e3f</code></a>
Merge branch 'main' into rc-21</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/75dd441a816c3c7ea21313ec8ff21d9f7b69f534"><code>75dd441</code></a>
Merge pull request <a
href="https://redirect.github.com/step-security/harden-runner/issues/555">#555</a>
from step-security/dependabot/github_actions/step-sec...</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/4381ace9c4db180c9cc8ff9a6dd4220f17a95690"><code>4381ace</code></a>
Bump step-security/publish-unit-test-result-action from 2.19.0 to
2.20.0</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/a9da90b635b492e68edb2a24949fcab1e313e9eb"><code>a9da90b</code></a>
Merge pull request <a
href="https://redirect.github.com/step-security/harden-runner/issues/553">#553</a>
from h0x0er/feat/container-workflows</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/a60ef21c0c1f49c7ac6c8d65b6f4d16d419789c1"><code>a60ef21</code></a>
update</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/4ad512f16553ff1c022684cc96be0329a7618db8"><code>4ad512f</code></a>
Merge branch 'rc-21' into feat/container-workflows</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/6b41a3923518db2abe77790e47793760b5c47c28"><code>6b41a39</code></a>
fixed test case</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/fa70c45ca9a73bcef023a3e6afac49ffa3007480"><code>fa70c45</code></a>
update agent</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/eb47845632e48a7532e7e363ba78b9bc48c09264"><code>eb47845</code></a>
self-hosted: refactored block-policy apply logic</li>
<li>Additional commits viewable in <a
href="https://github.com/step-security/harden-runner/compare/0634a2670c59f64b4a01f0f96f84700a4088b9f0...002fdce3c6a235733a90a27c80493a3241e56863">compare
view</a></li>
</ul>
</details>
<br />

Updates `chromaui/action` from 12.1.1 to 12.2.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/chromaui/action/commit/c50adf8eaa8c2878af3263499a73077854de39d4"><code>c50adf8</code></a>
v12.2.0</li>
<li>See full diff in <a
href="https://github.com/chromaui/action/compare/8536229ee904071f8edce292596f6dbe0da96b9b...c50adf8eaa8c2878af3263499a73077854de39d4">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/attest` from 2.3.0 to 2.4.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/attest/releases">actions/attest's
releases</a>.</em></p>
<blockquote>
<h2>v2.4.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Bump <code>@​actions/github</code> from 6.0.0 to 6.0.1 in the
npm-production group by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/attest/pull/242">actions/attest#242</a></li>
<li>Bump undici from 5.28.5 to 5.29.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/attest/pull/246">actions/attest#246</a></li>
<li>Add path to created attestation in a well-known summary file by <a
href="https://github.com/kommendorkapten"><code>@​kommendorkapten</code></a>
in <a
href="https://redirect.github.com/actions/attest/pull/252">actions/attest#252</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/kommendorkapten"><code>@​kommendorkapten</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/attest/pull/252">actions/attest#252</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/attest/compare/v2...v2.4.0">https://github.com/actions/attest/compare/v2...v2.4.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/attest/commit/ce27ba3b4a9a139d9a20a4a07d69fabb52f1e5bc"><code>ce27ba3</code></a>
bump package version to 2.4.0 (<a
href="https://redirect.github.com/actions/attest/issues/253">#253</a>)</li>
<li><a
href="https://github.com/actions/attest/commit/6a89e1286443a80c6d1e0cebb7b24d8299c16774"><code>6a89e12</code></a>
Add path to created attestation in a well-known summary file (<a
href="https://redirect.github.com/actions/attest/issues/252">#252</a>)</li>
<li><a
href="https://github.com/actions/attest/commit/cbc14bbf255d1e79ad201d4308009aabd79cafdc"><code>cbc14bb</code></a>
Bump the npm-development group with 3 updates (<a
href="https://redirect.github.com/actions/attest/issues/250">#250</a>)</li>
<li><a
href="https://github.com/actions/attest/commit/b87aa13652d8ee3c0c86d3582b965c842f7f388f"><code>b87aa13</code></a>
Bump the npm-development group across 1 directory with 5 updates (<a
href="https://redirect.github.com/actions/attest/issues/249">#249</a>)</li>
<li><a
href="https://github.com/actions/attest/commit/5ae9aa28e10f70b771c67101892b7ffc141ef958"><code>5ae9aa2</code></a>
Bump undici from 5.28.5 to 5.29.0 (<a
href="https://redirect.github.com/actions/attest/issues/246">#246</a>)</li>
<li><a
href="https://github.com/actions/attest/commit/4119d34e49ca6230f84a5e799710eae4f2428d02"><code>4119d34</code></a>
Bump the npm-development group across 1 directory with 6 updates (<a
href="https://redirect.github.com/actions/attest/issues/245">#245</a>)</li>
<li><a
href="https://github.com/actions/attest/commit/7e777b150d7bec9c2cfe2c0993b186c15e97e81c"><code>7e777b1</code></a>
Bump <code>@​actions/github</code> from 6.0.0 to 6.0.1 in the
npm-production group (<a
href="https://redirect.github.com/actions/attest/issues/242">#242</a>)</li>
<li><a
href="https://github.com/actions/attest/commit/4d8a13a13f8c2075b78844846f6d7e38b6a920bf"><code>4d8a13a</code></a>
Bump super-linter/super-linter in the actions-minor group (<a
href="https://redirect.github.com/actions/attest/issues/244">#244</a>)</li>
<li><a
href="https://github.com/actions/attest/commit/647f15244eb261577c4910e1356026e9c1d9cda9"><code>647f152</code></a>
Bump the npm-development group with 4 updates (<a
href="https://redirect.github.com/actions/attest/issues/240">#240</a>)</li>
<li><a
href="https://github.com/actions/attest/commit/20551343079b1bce85b235f46add92bbbddb8a7a"><code>2055134</code></a>
Bump the npm-development group with 4 updates (<a
href="https://redirect.github.com/actions/attest/issues/239">#239</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/attest/compare/afd638254319277bb3d7f0a234478733e2e46a73...ce27ba3b4a9a139d9a20a4a07d69fabb52f1e5bc">compare
view</a></li>
</ul>
</details>
<br />

Updates `fluxcd/flux2` from 2.6.1 to 2.6.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/fluxcd/flux2/releases">fluxcd/flux2's
releases</a>.</em></p>
<blockquote>
<h2>v2.6.2</h2>
<h2>What's Changed</h2>
<ul>
<li>[release/v2.6.x] fix: Allow Azure CLI calls in <code>flux push
artifact --provider azure</code> on DevOps runners by <a
href="https://github.com/fluxcdbot"><code>@​fluxcdbot</code></a> in <a
href="https://redirect.github.com/fluxcd/flux2/pull/5396">fluxcd/flux2#5396</a></li>
<li>[release/v2.6.x] Fix <code>knownhosts key mismatch</code> regression
bug by <a
href="https://github.com/fluxcdbot"><code>@​fluxcdbot</code></a> in <a
href="https://redirect.github.com/fluxcd/flux2/pull/5405">fluxcd/flux2#5405</a></li>
<li>[release/v2.6.x] Update toolkit components by <a
href="https://github.com/fluxcdbot"><code>@​fluxcdbot</code></a> in <a
href="https://redirect.github.com/fluxcd/flux2/pull/5410">fluxcd/flux2#5410</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/fluxcd/flux2/compare/v2.6.1...v2.6.2">https://github.com/fluxcd/flux2/compare/v2.6.1...v2.6.2</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/fluxcd/flux2/commit/a48f81a66c4ca9fbd993233ab99dd03a7cfbe09a"><code>a48f81a</code></a>
Merge pull request <a
href="https://redirect.github.com/fluxcd/flux2/issues/5410">#5410</a>
from fluxcd/backport-5409-to-release/v2.6.x</li>
<li><a
href="https://github.com/fluxcd/flux2/commit/55104dc188ec3015c64fa6452db179fc081e8a91"><code>55104dc</code></a>
Update toolkit components</li>
<li><a
href="https://github.com/fluxcd/flux2/commit/e771ff28abd76684f43122b3becd99ae31a7cdb7"><code>e771ff2</code></a>
Merge pull request <a
href="https://redirect.github.com/fluxcd/flux2/issues/5405">#5405</a>
from fluxcd/backport-5404-to-release/v2.6.x</li>
<li><a
href="https://github.com/fluxcd/flux2/commit/998fe11166a950f54fe20c5bb94552a4c701ff0a"><code>998fe11</code></a>
Upgrade dependencies</li>
<li><a
href="https://github.com/fluxcd/flux2/commit/a6ac4c5b60f4e94e1b4a12ca579648985020f9c7"><code>a6ac4c5</code></a>
Merge pull request <a
href="https://redirect.github.com/fluxcd/flux2/issues/5396">#5396</a>
from fluxcd/backport-5390-to-release/v2.6.x</li>
<li><a
href="https://github.com/fluxcd/flux2/commit/0d397d7d1f8cc62c4d201f10b0d8b61bcfdcb97d"><code>0d397d7</code></a>
Introduce support for shelling out to Azure binaries in
authentication</li>
<li>See full diff in <a
href="https://github.com/fluxcd/flux2/compare/b73c7f7191086ca7629840e680e71873349787f8...a48f81a66c4ca9fbd993233ab99dd03a7cfbe09a">compare
view</a></li>
</ul>
</details>
<br />

Updates `tj-actions/changed-files` from
115870536a85eaf050e369291c7895748ff12aea to
d52d20fa3f981cb852b861fd8f55308b5fe29637
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tj-actions/changed-files/blob/main/HISTORY.md">tj-actions/changed-files's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.4...v46.0.5">46.0.5</a>
- (2025-04-09)</h1>
<h2><!-- raw HTML omitted -->⚙️ Miscellaneous Tasks</h2>
<ul>
<li><strong>deps:</strong> Bump yaml from 2.7.0 to 2.7.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2520">#2520</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/ed68ef82c095e0d48ec87eccea555d944a631a4c">ed68ef8</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump typescript from 5.8.2 to 5.8.3 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2516">#2516</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/a7bc14b808f23d3b467a4079c69a81f1a4500fd5">a7bc14b</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump <code>@​types/node</code> from
22.13.11 to 22.14.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2517">#2517</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/3d751f6b6d84071a17e1b9cf4ed79a80a27dd0ab">3d751f6</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump eslint-plugin-prettier from 5.2.3 to
5.2.6 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2519">#2519</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/e2fda4ec3cb0bc2a353843cae823430b3124db8f">e2fda4e</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump ts-jest from 29.2.6 to 29.3.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2518">#2518</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/0bed1b1132ec4879a39a2d624cf82a00d0bcfa48">0bed1b1</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump github/codeql-action from 3.28.12 to
3.28.15 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2530">#2530</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/68024587dc36f49685c96d59d3f1081830f968bb">6802458</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump tj-actions/branch-names from 8.0.1 to
8.1.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2521">#2521</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/cf2e39e86bf842d1f9bc5bca56c0a6b207cca792">cf2e39e</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump tj-actions/verify-changed-files from
20.0.1 to 20.0.4 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2523">#2523</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/6abeaa506a419f85fa9e681260b443adbeebb3d4">6abeaa5</a>)
- (dependabot[bot])</li>
</ul>
<h2><!-- raw HTML omitted -->⬆️ Upgrades</h2>
<ul>
<li>Upgraded to v46.0.4 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2511">#2511</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted --> (<a
href="https://github.com/tj-actions/changed-files/commit/6f67ee9ac810f0192ea7b3d2086406f97847bcf9">6f67ee9</a>)
- (github-actions[bot])</p>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.3...v46.0.4">46.0.4</a>
- (2025-04-03)</h1>
<h2><!-- raw HTML omitted -->🐛 Bug Fixes</h2>
<ul>
<li>Bug modified_keys and changed_key outputs not set when no changes
detected (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2509">#2509</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/6cb76d07bee4c9772c6882c06c37837bf82a04d3">6cb76d0</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->📚 Documentation</h2>
<ul>
<li>Update readme (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2508">#2508</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/b74df86ccb65173a8e33ba5492ac1a2ca6b216fd">b74df86</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->⬆️ Upgrades</h2>
<ul>
<li>Upgraded to v46.0.3 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2506">#2506</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted -->
Co-authored-by: Tonye Jack <a
href="mailto:jtonye@ymail.com">jtonye@ymail.com</a> (<a
href="https://github.com/tj-actions/changed-files/commit/27ae6b33eaed7bf87272fdeb9f1c54f9facc9d99">27ae6b3</a>)
- (github-actions[bot])</p>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.2...v46.0.3">46.0.3</a>
- (2025-03-23)</h1>
<h2><!-- raw HTML omitted -->🔄 Update</h2>
<ul>
<li>Updated README.md (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2501">#2501</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted --> (<a
href="https://github.com/tj-actions/changed-files/commit/41e0de576a0f2b64d9f06f2773f539109e55a70a">41e0de5</a>)
- (github-actions[bot])</p>
<ul>
<li>Updated README.md (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2499">#2499</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted --> (<a
href="https://github.com/tj-actions/changed-files/commit/945787811a795cd840a1157ac590dd7827a05c8e">9457878</a>)
- (github-actions[bot])</p>
<h2><!-- raw HTML omitted -->📚 Documentation</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tj-actions/changed-files/commit/d52d20fa3f981cb852b861fd8f55308b5fe29637"><code>d52d20f</code></a>
chore(deps-dev): bump <code>@​types/node</code> from 22.15.26 to 24.0.1
(<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2587">#2587</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/f1c0eb959957d4094cf86adeb8bb4852f373e197"><code>f1c0eb9</code></a>
chore(deps-dev): bump eslint-plugin-prettier from 5.4.0 to 5.4.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2578">#2578</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/944a0f723952a370222de3178b25805235c65933"><code>944a0f7</code></a>
chore(deps-dev): bump eslint-plugin-jest from 28.13.0 to 28.13.3 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2585">#2585</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/3dbc1e181273d808ccff822a6e00cf18b6628ef0"><code>3dbc1e1</code></a>
Updated README.md (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2592">#2592</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/7a7221b7baecf19ec83f6a411a2670a43174c883"><code>7a7221b</code></a>
chore(deps): bump github/codeql-action from 3.28.18 to 3.29.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2588">#2588</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/c260d49a827b5eb266673bed7871c5d3ee9b5aef"><code>c260d49</code></a>
feat: add any_added to outputs (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2567">#2567</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/b1ccff8c0892ad141d7d2de6f31e526a9dad931f"><code>b1ccff8</code></a>
Updated README.md (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2591">#2591</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/a892f50f7a7187bc288633c09230b09ce7ad8fd0"><code>a892f50</code></a>
docs: update link to glob patterns (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2590">#2590</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/5ca5422070674a4bb487ecebf3c33251f3723c9b"><code>5ca5422</code></a>
chore(deps-dev): bump ts-jest from 29.3.4 to 29.4.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2589">#2589</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/4140eb99d2cced9bfd78375c2088371853262f79"><code>4140eb9</code></a>
chore(deps-dev): bump eslint-plugin-jest from 28.12.0 to 28.13.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2583">#2583</a>)</li>
<li>See full diff in <a
href="https://github.com/tj-actions/changed-files/compare/115870536a85eaf050e369291c7895748ff12aea...d52d20fa3f981cb852b861fd8f55308b5fe29637">compare
view</a></li>
</ul>
</details>
<br />

Updates `github/codeql-action` from 3.28.19 to 3.29.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.29.0</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.29.0 - 11 Jun 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.22.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2925">#2925</a></li>
<li>Bump minimum CodeQL bundle version to 2.16.6. <a
href="https://redirect.github.com/github/codeql-action/pull/2912">#2912</a></li>
</ul>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.29.0/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<p>No user facing changes.</p>
<h2>3.29.0 - 11 Jun 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.22.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2925">#2925</a></li>
<li>Bump minimum CodeQL bundle version to 2.16.6. <a
href="https://redirect.github.com/github/codeql-action/pull/2912">#2912</a></li>
</ul>
<h2>3.28.19 - 03 Jun 2025</h2>
<ul>
<li>The CodeQL Action no longer includes its own copy of the extractor
for the <code>actions</code> language, which is currently in public
preview.
The <code>actions</code> extractor has been included in the CodeQL CLI
since v2.20.6. If your workflow has enabled the <code>actions</code>
language <em>and</em> you have pinned
your <code>tools:</code> property to a specific version of the CodeQL
CLI earlier than v2.20.6, you will need to update to at least CodeQL
v2.20.6 or disable
<code>actions</code> analysis.</li>
<li>Update default CodeQL bundle version to 2.21.4. <a
href="https://redirect.github.com/github/codeql-action/pull/2910">#2910</a></li>
</ul>
<h2>3.28.18 - 16 May 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.3. <a
href="https://redirect.github.com/github/codeql-action/pull/2893">#2893</a></li>
<li>Skip validating SARIF produced by CodeQL for improved performance.
<a
href="https://redirect.github.com/github/codeql-action/pull/2894">#2894</a></li>
<li>The number of threads and amount of RAM used by CodeQL can now be
set via the <code>CODEQL_THREADS</code> and <code>CODEQL_RAM</code>
runner environment variables. If set, these environment variables
override the <code>threads</code> and <code>ram</code> inputs
respectively. <a
href="https://redirect.github.com/github/codeql-action/pull/2891">#2891</a></li>
</ul>
<h2>3.28.17 - 02 May 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.2. <a
href="https://redirect.github.com/github/codeql-action/pull/2872">#2872</a></li>
</ul>
<h2>3.28.16 - 23 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2863">#2863</a></li>
</ul>
<h2>3.28.15 - 07 Apr 2025</h2>
<ul>
<li>Fix bug where the action would fail if it tried to produce a debug
artifact with more than 65535 files. <a
href="https://redirect.github.com/github/codeql-action/pull/2842">#2842</a></li>
</ul>
<h2>3.28.14 - 07 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2838">#2838</a></li>
</ul>
<h2>3.28.13 - 24 Mar 2025</h2>
<p>No user facing changes.</p>
<h2>3.28.12 - 19 Mar 2025</h2>
<ul>
<li>Dependency caching should now cache more dependencies for Java
<code>build-mode: none</code> extractions. This should speed up
workflows and avoid inconsistent alerts in some cases.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/ce28f5bb42b7a9f2c824e633a3f6ee835bab6858"><code>ce28f5b</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2926">#2926</a>
from github/update-v3.29.0-e8799281c</li>
<li><a
href="https://github.com/github/codeql-action/commit/bc251b7932638a7881a8db15d1aaf0151642af99"><code>bc251b7</code></a>
Update changelog for v3.29.0</li>
<li><a
href="https://github.com/github/codeql-action/commit/e8799281c8dee3b2e1aaed2c059e530fcfdc2d6d"><code>e879928</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2925">#2925</a>
from github/update-bundle/codeql-bundle-v2.22.0</li>
<li><a
href="https://github.com/github/codeql-action/commit/efd43b3097c094d883d91934155f0a32af09dff7"><code>efd43b3</code></a>
Merge branch 'main' into update-bundle/codeql-bundle-v2.22.0</li>
<li><a
href="https://github.com/github/codeql-action/commit/7cb9b16051842e6c23c8b9fbcf92481f92d0644a"><code>7cb9b16</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2912">#2912</a>
from github/henrymercer/bump-minimum-codeql-2.16.6</li>
<li><a
href="https://github.com/github/codeql-action/commit/3855117ba18b27e082b12e3e92e00d1b52aaa605"><code>3855117</code></a>
Add changelog note</li>
<li><a
href="https://github.com/github/codeql-action/commit/f5d4e2a7ca2a5826357748bb8743390a4775946f"><code>f5d4e2a</code></a>
Update default bundle to codeql-bundle-v2.22.0</li>
<li><a
href="https://github.com/github/codeql-action/commit/22deae890c55a1dc3ffba1aa20ad4148284e72d1"><code>22deae8</code></a>
Update package-lock.json</li>
<li><a
href="https://github.com/github/codeql-action/commit/df2a830ca4348a013f4804b56f41795f408f1e4e"><code>df2a830</code></a>
Merge branch 'main' into henrymercer/bump-minimum-codeql-2.16.6</li>
<li><a
href="https://github.com/github/codeql-action/commit/b1e4dc3db58c9601794e22a9f6d28d45461b9dbf"><code>b1e4dc3</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2916">#2916</a>
from github/dependabot/npm_and_yarn/npm-5cdccdc43f</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/fca7ace96b7d713c7035871441bd52efbe39e27e...ce28f5bb42b7a9f2c824e633a3f6ee835bab6858">compare
view</a></li>
</ul>
</details>
<br />

Updates `umbrelladocs/action-linkspector` from 1.3.4 to 1.3.5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/umbrelladocs/action-linkspector/releases">umbrelladocs/action-linkspector's
releases</a>.</em></p>
<blockquote>
<h2>Release v1.3.5</h2>
<p>v1.3.5: PR <a
href="https://redirect.github.com/umbrelladocs/action-linkspector/issues/45">#45</a>
- Update linkspector version to 0.4.5</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/UmbrellaDocs/action-linkspector/commit/e2ccef58c4b9eb89cd71ee23a8629744bba75aa6"><code>e2ccef5</code></a>
Merge pull request <a
href="https://redirect.github.com/umbrelladocs/action-linkspector/issues/45">#45</a>
from UmbrellaDocs/update-linkspector-version</li>
<li><a
href="https://github.com/UmbrellaDocs/action-linkspector/commit/6cc23b20f1b7de3860f639255ccebc2b6428c62e"><code>6cc23b2</code></a>
Update linkspector version to 0.4.5</li>
<li>See full diff in <a
href="https://github.com/umbrelladocs/action-linkspector/compare/a0567ce1c7c13de4a2358587492ed43cab5d0102...e2ccef58c4b9eb89cd71ee23a8629744bba75aa6">compare
view</a></li>
</ul>
</details>
<br />


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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-16 13:28:00 +00:00
Edward Angert 23067dfcbd docs: add documentation for installing Coder on Azure with Kubernetes (#16216)
closes #16074 


[preview](https://coder.com/docs/@16074-azure-app-gateway/install/kubernetes/kubernetes-azure-app-gateway)

---------

Co-authored-by: M Atif Ali <atif@coder.com>
Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-06-16 09:13:14 -04:00
dependabot[bot] cba99a13e7 ci: bump the github-actions group with 6 updates (#18386)
Bumps the github-actions group with 6 updates:

| Package | From | To |
| --- | --- | --- |
|
[step-security/harden-runner](https://github.com/step-security/harden-runner)
| `2.12.0` | `2.12.1` |
| [chromaui/action](https://github.com/chromaui/action) | `12.1.1` |
`12.2.0` |
| [actions/attest](https://github.com/actions/attest) | `2.3.0` |
`2.4.0` |
|
[tj-actions/changed-files](https://github.com/tj-actions/changed-files)
| `115870536a85eaf050e369291c7895748ff12aea` |
`d52d20fa3f981cb852b861fd8f55308b5fe29637` |
| [github/codeql-action](https://github.com/github/codeql-action) |
`3.28.19` | `3.29.0` |
|
[umbrelladocs/action-linkspector](https://github.com/umbrelladocs/action-linkspector)
| `1.3.4` | `1.3.5` |

Updates `step-security/harden-runner` from 2.12.0 to 2.12.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/step-security/harden-runner/releases">step-security/harden-runner's
releases</a>.</em></p>
<blockquote>
<h2>v2.12.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Detection capabilities have been upgraded to better recognize
attempts at runner tampering. These improvements are informed by
real-world incident learnings, including analysis of anomalous behaviors
observed in the tj-actions and reviewdog supply chain attack.</li>
<li>Resolved an issue where the block policy was not enforced correctly
when the GitHub Actions job was running inside a container on a
self-hosted VM runner.</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/step-security/harden-runner/compare/v2...v2.12.1">https://github.com/step-security/harden-runner/compare/v2...v2.12.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/step-security/harden-runner/commit/002fdce3c6a235733a90a27c80493a3241e56863"><code>002fdce</code></a>
Merge pull request <a
href="https://redirect.github.com/step-security/harden-runner/issues/544">#544</a>
from step-security/rc-21</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/2489e3fcb3d00eac3cb27c9b490431a4d26eac58"><code>2489e3f</code></a>
Merge branch 'main' into rc-21</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/75dd441a816c3c7ea21313ec8ff21d9f7b69f534"><code>75dd441</code></a>
Merge pull request <a
href="https://redirect.github.com/step-security/harden-runner/issues/555">#555</a>
from step-security/dependabot/github_actions/step-sec...</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/4381ace9c4db180c9cc8ff9a6dd4220f17a95690"><code>4381ace</code></a>
Bump step-security/publish-unit-test-result-action from 2.19.0 to
2.20.0</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/a9da90b635b492e68edb2a24949fcab1e313e9eb"><code>a9da90b</code></a>
Merge pull request <a
href="https://redirect.github.com/step-security/harden-runner/issues/553">#553</a>
from h0x0er/feat/container-workflows</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/a60ef21c0c1f49c7ac6c8d65b6f4d16d419789c1"><code>a60ef21</code></a>
update</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/4ad512f16553ff1c022684cc96be0329a7618db8"><code>4ad512f</code></a>
Merge branch 'rc-21' into feat/container-workflows</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/6b41a3923518db2abe77790e47793760b5c47c28"><code>6b41a39</code></a>
fixed test case</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/fa70c45ca9a73bcef023a3e6afac49ffa3007480"><code>fa70c45</code></a>
update agent</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/eb47845632e48a7532e7e363ba78b9bc48c09264"><code>eb47845</code></a>
self-hosted: refactored block-policy apply logic</li>
<li>Additional commits viewable in <a
href="https://github.com/step-security/harden-runner/compare/0634a2670c59f64b4a01f0f96f84700a4088b9f0...002fdce3c6a235733a90a27c80493a3241e56863">compare
view</a></li>
</ul>
</details>
<br />

Updates `chromaui/action` from 12.1.1 to 12.2.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/chromaui/action/commit/c50adf8eaa8c2878af3263499a73077854de39d4"><code>c50adf8</code></a>
v12.2.0</li>
<li>See full diff in <a
href="https://github.com/chromaui/action/compare/8536229ee904071f8edce292596f6dbe0da96b9b...c50adf8eaa8c2878af3263499a73077854de39d4">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/attest` from 2.3.0 to 2.4.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/attest/releases">actions/attest's
releases</a>.</em></p>
<blockquote>
<h2>v2.4.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Bump <code>@​actions/github</code> from 6.0.0 to 6.0.1 in the
npm-production group by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/attest/pull/242">actions/attest#242</a></li>
<li>Bump undici from 5.28.5 to 5.29.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/attest/pull/246">actions/attest#246</a></li>
<li>Add path to created attestation in a well-known summary file by <a
href="https://github.com/kommendorkapten"><code>@​kommendorkapten</code></a>
in <a
href="https://redirect.github.com/actions/attest/pull/252">actions/attest#252</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/kommendorkapten"><code>@​kommendorkapten</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/attest/pull/252">actions/attest#252</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/attest/compare/v2...v2.4.0">https://github.com/actions/attest/compare/v2...v2.4.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/attest/commit/ce27ba3b4a9a139d9a20a4a07d69fabb52f1e5bc"><code>ce27ba3</code></a>
bump package version to 2.4.0 (<a
href="https://redirect.github.com/actions/attest/issues/253">#253</a>)</li>
<li><a
href="https://github.com/actions/attest/commit/6a89e1286443a80c6d1e0cebb7b24d8299c16774"><code>6a89e12</code></a>
Add path to created attestation in a well-known summary file (<a
href="https://redirect.github.com/actions/attest/issues/252">#252</a>)</li>
<li><a
href="https://github.com/actions/attest/commit/cbc14bbf255d1e79ad201d4308009aabd79cafdc"><code>cbc14bb</code></a>
Bump the npm-development group with 3 updates (<a
href="https://redirect.github.com/actions/attest/issues/250">#250</a>)</li>
<li><a
href="https://github.com/actions/attest/commit/b87aa13652d8ee3c0c86d3582b965c842f7f388f"><code>b87aa13</code></a>
Bump the npm-development group across 1 directory with 5 updates (<a
href="https://redirect.github.com/actions/attest/issues/249">#249</a>)</li>
<li><a
href="https://github.com/actions/attest/commit/5ae9aa28e10f70b771c67101892b7ffc141ef958"><code>5ae9aa2</code></a>
Bump undici from 5.28.5 to 5.29.0 (<a
href="https://redirect.github.com/actions/attest/issues/246">#246</a>)</li>
<li><a
href="https://github.com/actions/attest/commit/4119d34e49ca6230f84a5e799710eae4f2428d02"><code>4119d34</code></a>
Bump the npm-development group across 1 directory with 6 updates (<a
href="https://redirect.github.com/actions/attest/issues/245">#245</a>)</li>
<li><a
href="https://github.com/actions/attest/commit/7e777b150d7bec9c2cfe2c0993b186c15e97e81c"><code>7e777b1</code></a>
Bump <code>@​actions/github</code> from 6.0.0 to 6.0.1 in the
npm-production group (<a
href="https://redirect.github.com/actions/attest/issues/242">#242</a>)</li>
<li><a
href="https://github.com/actions/attest/commit/4d8a13a13f8c2075b78844846f6d7e38b6a920bf"><code>4d8a13a</code></a>
Bump super-linter/super-linter in the actions-minor group (<a
href="https://redirect.github.com/actions/attest/issues/244">#244</a>)</li>
<li><a
href="https://github.com/actions/attest/commit/647f15244eb261577c4910e1356026e9c1d9cda9"><code>647f152</code></a>
Bump the npm-development group with 4 updates (<a
href="https://redirect.github.com/actions/attest/issues/240">#240</a>)</li>
<li><a
href="https://github.com/actions/attest/commit/20551343079b1bce85b235f46add92bbbddb8a7a"><code>2055134</code></a>
Bump the npm-development group with 4 updates (<a
href="https://redirect.github.com/actions/attest/issues/239">#239</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/attest/compare/afd638254319277bb3d7f0a234478733e2e46a73...ce27ba3b4a9a139d9a20a4a07d69fabb52f1e5bc">compare
view</a></li>
</ul>
</details>
<br />

Updates `tj-actions/changed-files` from
115870536a85eaf050e369291c7895748ff12aea to
d52d20fa3f981cb852b861fd8f55308b5fe29637
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tj-actions/changed-files/blob/main/HISTORY.md">tj-actions/changed-files's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.4...v46.0.5">46.0.5</a>
- (2025-04-09)</h1>
<h2><!-- raw HTML omitted -->⚙️ Miscellaneous Tasks</h2>
<ul>
<li><strong>deps:</strong> Bump yaml from 2.7.0 to 2.7.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2520">#2520</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/ed68ef82c095e0d48ec87eccea555d944a631a4c">ed68ef8</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump typescript from 5.8.2 to 5.8.3 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2516">#2516</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/a7bc14b808f23d3b467a4079c69a81f1a4500fd5">a7bc14b</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump <code>@​types/node</code> from
22.13.11 to 22.14.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2517">#2517</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/3d751f6b6d84071a17e1b9cf4ed79a80a27dd0ab">3d751f6</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump eslint-plugin-prettier from 5.2.3 to
5.2.6 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2519">#2519</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/e2fda4ec3cb0bc2a353843cae823430b3124db8f">e2fda4e</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump ts-jest from 29.2.6 to 29.3.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2518">#2518</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/0bed1b1132ec4879a39a2d624cf82a00d0bcfa48">0bed1b1</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump github/codeql-action from 3.28.12 to
3.28.15 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2530">#2530</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/68024587dc36f49685c96d59d3f1081830f968bb">6802458</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump tj-actions/branch-names from 8.0.1 to
8.1.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2521">#2521</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/cf2e39e86bf842d1f9bc5bca56c0a6b207cca792">cf2e39e</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump tj-actions/verify-changed-files from
20.0.1 to 20.0.4 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2523">#2523</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/6abeaa506a419f85fa9e681260b443adbeebb3d4">6abeaa5</a>)
- (dependabot[bot])</li>
</ul>
<h2><!-- raw HTML omitted -->⬆️ Upgrades</h2>
<ul>
<li>Upgraded to v46.0.4 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2511">#2511</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted --> (<a
href="https://github.com/tj-actions/changed-files/commit/6f67ee9ac810f0192ea7b3d2086406f97847bcf9">6f67ee9</a>)
- (github-actions[bot])</p>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.3...v46.0.4">46.0.4</a>
- (2025-04-03)</h1>
<h2><!-- raw HTML omitted -->🐛 Bug Fixes</h2>
<ul>
<li>Bug modified_keys and changed_key outputs not set when no changes
detected (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2509">#2509</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/6cb76d07bee4c9772c6882c06c37837bf82a04d3">6cb76d0</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->📚 Documentation</h2>
<ul>
<li>Update readme (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2508">#2508</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/b74df86ccb65173a8e33ba5492ac1a2ca6b216fd">b74df86</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->⬆️ Upgrades</h2>
<ul>
<li>Upgraded to v46.0.3 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2506">#2506</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted -->
Co-authored-by: Tonye Jack <a
href="mailto:jtonye@ymail.com">jtonye@ymail.com</a> (<a
href="https://github.com/tj-actions/changed-files/commit/27ae6b33eaed7bf87272fdeb9f1c54f9facc9d99">27ae6b3</a>)
- (github-actions[bot])</p>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.2...v46.0.3">46.0.3</a>
- (2025-03-23)</h1>
<h2><!-- raw HTML omitted -->🔄 Update</h2>
<ul>
<li>Updated README.md (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2501">#2501</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted --> (<a
href="https://github.com/tj-actions/changed-files/commit/41e0de576a0f2b64d9f06f2773f539109e55a70a">41e0de5</a>)
- (github-actions[bot])</p>
<ul>
<li>Updated README.md (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2499">#2499</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted --> (<a
href="https://github.com/tj-actions/changed-files/commit/945787811a795cd840a1157ac590dd7827a05c8e">9457878</a>)
- (github-actions[bot])</p>
<h2><!-- raw HTML omitted -->📚 Documentation</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tj-actions/changed-files/commit/d52d20fa3f981cb852b861fd8f55308b5fe29637"><code>d52d20f</code></a>
chore(deps-dev): bump <code>@​types/node</code> from 22.15.26 to 24.0.1
(<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2587">#2587</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/f1c0eb959957d4094cf86adeb8bb4852f373e197"><code>f1c0eb9</code></a>
chore(deps-dev): bump eslint-plugin-prettier from 5.4.0 to 5.4.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2578">#2578</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/944a0f723952a370222de3178b25805235c65933"><code>944a0f7</code></a>
chore(deps-dev): bump eslint-plugin-jest from 28.13.0 to 28.13.3 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2585">#2585</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/3dbc1e181273d808ccff822a6e00cf18b6628ef0"><code>3dbc1e1</code></a>
Updated README.md (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2592">#2592</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/7a7221b7baecf19ec83f6a411a2670a43174c883"><code>7a7221b</code></a>
chore(deps): bump github/codeql-action from 3.28.18 to 3.29.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2588">#2588</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/c260d49a827b5eb266673bed7871c5d3ee9b5aef"><code>c260d49</code></a>
feat: add any_added to outputs (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2567">#2567</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/b1ccff8c0892ad141d7d2de6f31e526a9dad931f"><code>b1ccff8</code></a>
Updated README.md (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2591">#2591</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/a892f50f7a7187bc288633c09230b09ce7ad8fd0"><code>a892f50</code></a>
docs: update link to glob patterns (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2590">#2590</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/5ca5422070674a4bb487ecebf3c33251f3723c9b"><code>5ca5422</code></a>
chore(deps-dev): bump ts-jest from 29.3.4 to 29.4.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2589">#2589</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/4140eb99d2cced9bfd78375c2088371853262f79"><code>4140eb9</code></a>
chore(deps-dev): bump eslint-plugin-jest from 28.12.0 to 28.13.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2583">#2583</a>)</li>
<li>See full diff in <a
href="https://github.com/tj-actions/changed-files/compare/115870536a85eaf050e369291c7895748ff12aea...d52d20fa3f981cb852b861fd8f55308b5fe29637">compare
view</a></li>
</ul>
</details>
<br />

Updates `github/codeql-action` from 3.28.19 to 3.29.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.29.0</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.29.0 - 11 Jun 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.22.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2925">#2925</a></li>
<li>Bump minimum CodeQL bundle version to 2.16.6. <a
href="https://redirect.github.com/github/codeql-action/pull/2912">#2912</a></li>
</ul>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.29.0/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<p>No user facing changes.</p>
<h2>3.29.0 - 11 Jun 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.22.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2925">#2925</a></li>
<li>Bump minimum CodeQL bundle version to 2.16.6. <a
href="https://redirect.github.com/github/codeql-action/pull/2912">#2912</a></li>
</ul>
<h2>3.28.19 - 03 Jun 2025</h2>
<ul>
<li>The CodeQL Action no longer includes its own copy of the extractor
for the <code>actions</code> language, which is currently in public
preview.
The <code>actions</code> extractor has been included in the CodeQL CLI
since v2.20.6. If your workflow has enabled the <code>actions</code>
language <em>and</em> you have pinned
your <code>tools:</code> property to a specific version of the CodeQL
CLI earlier than v2.20.6, you will need to update to at least CodeQL
v2.20.6 or disable
<code>actions</code> analysis.</li>
<li>Update default CodeQL bundle version to 2.21.4. <a
href="https://redirect.github.com/github/codeql-action/pull/2910">#2910</a></li>
</ul>
<h2>3.28.18 - 16 May 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.3. <a
href="https://redirect.github.com/github/codeql-action/pull/2893">#2893</a></li>
<li>Skip validating SARIF produced by CodeQL for improved performance.
<a
href="https://redirect.github.com/github/codeql-action/pull/2894">#2894</a></li>
<li>The number of threads and amount of RAM used by CodeQL can now be
set via the <code>CODEQL_THREADS</code> and <code>CODEQL_RAM</code>
runner environment variables. If set, these environment variables
override the <code>threads</code> and <code>ram</code> inputs
respectively. <a
href="https://redirect.github.com/github/codeql-action/pull/2891">#2891</a></li>
</ul>
<h2>3.28.17 - 02 May 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.2. <a
href="https://redirect.github.com/github/codeql-action/pull/2872">#2872</a></li>
</ul>
<h2>3.28.16 - 23 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2863">#2863</a></li>
</ul>
<h2>3.28.15 - 07 Apr 2025</h2>
<ul>
<li>Fix bug where the action would fail if it tried to produce a debug
artifact with more than 65535 files. <a
href="https://redirect.github.com/github/codeql-action/pull/2842">#2842</a></li>
</ul>
<h2>3.28.14 - 07 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2838">#2838</a></li>
</ul>
<h2>3.28.13 - 24 Mar 2025</h2>
<p>No user facing changes.</p>
<h2>3.28.12 - 19 Mar 2025</h2>
<ul>
<li>Dependency caching should now cache more dependencies for Java
<code>build-mode: none</code> extractions. This should speed up
workflows and avoid inconsistent alerts in some cases.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/ce28f5bb42b7a9f2c824e633a3f6ee835bab6858"><code>ce28f5b</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2926">#2926</a>
from github/update-v3.29.0-e8799281c</li>
<li><a
href="https://github.com/github/codeql-action/commit/bc251b7932638a7881a8db15d1aaf0151642af99"><code>bc251b7</code></a>
Update changelog for v3.29.0</li>
<li><a
href="https://github.com/github/codeql-action/commit/e8799281c8dee3b2e1aaed2c059e530fcfdc2d6d"><code>e879928</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2925">#2925</a>
from github/update-bundle/codeql-bundle-v2.22.0</li>
<li><a
href="https://github.com/github/codeql-action/commit/efd43b3097c094d883d91934155f0a32af09dff7"><code>efd43b3</code></a>
Merge branch 'main' into update-bundle/codeql-bundle-v2.22.0</li>
<li><a
href="https://github.com/github/codeql-action/commit/7cb9b16051842e6c23c8b9fbcf92481f92d0644a"><code>7cb9b16</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2912">#2912</a>
from github/henrymercer/bump-minimum-codeql-2.16.6</li>
<li><a
href="https://github.com/github/codeql-action/commit/3855117ba18b27e082b12e3e92e00d1b52aaa605"><code>3855117</code></a>
Add changelog note</li>
<li><a
href="https://github.com/github/codeql-action/commit/f5d4e2a7ca2a5826357748bb8743390a4775946f"><code>f5d4e2a</code></a>
Update default bundle to codeql-bundle-v2.22.0</li>
<li><a
href="https://github.com/github/codeql-action/commit/22deae890c55a1dc3ffba1aa20ad4148284e72d1"><code>22deae8</code></a>
Update package-lock.json</li>
<li><a
href="https://github.com/github/codeql-action/commit/df2a830ca4348a013f4804b56f41795f408f1e4e"><code>df2a830</code></a>
Merge branch 'main' into henrymercer/bump-minimum-codeql-2.16.6</li>
<li><a
href="https://github.com/github/codeql-action/commit/b1e4dc3db58c9601794e22a9f6d28d45461b9dbf"><code>b1e4dc3</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2916">#2916</a>
from github/dependabot/npm_and_yarn/npm-5cdccdc43f</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/fca7ace96b7d713c7035871441bd52efbe39e27e...ce28f5bb42b7a9f2c824e633a3f6ee835bab6858">compare
view</a></li>
</ul>
</details>
<br />

Updates `umbrelladocs/action-linkspector` from 1.3.4 to 1.3.5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/umbrelladocs/action-linkspector/releases">umbrelladocs/action-linkspector's
releases</a>.</em></p>
<blockquote>
<h2>Release v1.3.5</h2>
<p>v1.3.5: PR <a
href="https://redirect.github.com/umbrelladocs/action-linkspector/issues/45">#45</a>
- Update linkspector version to 0.4.5</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/UmbrellaDocs/action-linkspector/commit/e2ccef58c4b9eb89cd71ee23a8629744bba75aa6"><code>e2ccef5</code></a>
Merge pull request <a
href="https://redirect.github.com/umbrelladocs/action-linkspector/issues/45">#45</a>
from UmbrellaDocs/update-linkspector-version</li>
<li><a
href="https://github.com/UmbrellaDocs/action-linkspector/commit/6cc23b20f1b7de3860f639255ccebc2b6428c62e"><code>6cc23b2</code></a>
Update linkspector version to 0.4.5</li>
<li>See full diff in <a
href="https://github.com/umbrelladocs/action-linkspector/compare/a0567ce1c7c13de4a2358587492ed43cab5d0102...e2ccef58c4b9eb89cd71ee23a8629744bba75aa6">compare
view</a></li>
</ul>
</details>
<br />


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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-16 12:39:39 +00:00
dependabot[bot] 2dadcc98c3 chore: bump github.com/gen2brain/beeep from 0.0.0-20220402123239-6a3042f4b71a to 0.11.1 (#18383)
Bumps [github.com/gen2brain/beeep](https://github.com/gen2brain/beeep)
from 0.0.0-20220402123239-6a3042f4b71a to 0.11.1.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/gen2brain/beeep/commits/v0.11.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/gen2brain/beeep&package-manager=go_modules&previous-version=0.0.0-20220402123239-6a3042f4b71a&new-version=0.11.1)](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>
2025-06-16 12:07:51 +00:00
dependabot[bot] b8174f2912 chore: bump github.com/mark3labs/mcp-go from 0.31.0 to 0.32.0 (#18382)
Bumps [github.com/mark3labs/mcp-go](https://github.com/mark3labs/mcp-go)
from 0.31.0 to 0.32.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mark3labs/mcp-go/releases">github.com/mark3labs/mcp-go's
releases</a>.</em></p>
<blockquote>
<h2>Release v0.32.0</h2>
<h2>What's Changed</h2>
<ul>
<li>feat(mcp): add NewToolResultErrorf by <a
href="https://github.com/icholy"><code>@​icholy</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/357">mark3labs/mcp-go#357</a></li>
<li>feat(mcptest): extend test server with prompt and resource support
by <a href="https://github.com/vasayxtx"><code>@​vasayxtx</code></a> in
<a
href="https://redirect.github.com/mark3labs/mcp-go/pull/346">mark3labs/mcp-go#346</a></li>
<li>[streamable-http] Add ability to override the http.Client by <a
href="https://github.com/tra4less"><code>@​tra4less</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/359">mark3labs/mcp-go#359</a></li>
<li>fixed logo issue in home page by <a
href="https://github.com/asaf-shitrit"><code>@​asaf-shitrit</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/364">mark3labs/mcp-go#364</a></li>
<li>feat(mcptest): Change <code>Server.Start</code> to accept a
<code>context.Context</code>. by <a
href="https://github.com/octo"><code>@​octo</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/339">mark3labs/mcp-go#339</a></li>
<li>fix(test/stdio): address io:read/write on closed pipe error by <a
href="https://github.com/cryo-zd"><code>@​cryo-zd</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/360">mark3labs/mcp-go#360</a></li>
<li>[SSE][OAuth] Add OAuth support to SSE client by <a
href="https://github.com/giridhar-murthy-glean"><code>@​giridhar-murthy-glean</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/340">mark3labs/mcp-go#340</a></li>
<li>More comprehensive docs by <a
href="https://github.com/ezynda3"><code>@​ezynda3</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/374">mark3labs/mcp-go#374</a></li>
<li>fix(srv/stream): properly remove sessionTool to prevent memory leak
by <a href="https://github.com/cryo-zd"><code>@​cryo-zd</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/365">mark3labs/mcp-go#365</a></li>
<li>fix: SSE parser now correctly handles events without event field by
<a href="https://github.com/ezynda3"><code>@​ezynda3</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/376">mark3labs/mcp-go#376</a></li>
<li>fix: ignore session IDs in stateless mode instead of rejecting them
by <a href="https://github.com/ezynda3"><code>@​ezynda3</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/375">mark3labs/mcp-go#375</a></li>
<li>support search www doc by <a
href="https://github.com/dugenkui03"><code>@​dugenkui03</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/378">mark3labs/mcp-go#378</a></li>
<li>Optimize docs by <a
href="https://github.com/dugenkui03"><code>@​dugenkui03</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/386">mark3labs/mcp-go#386</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/icholy"><code>@​icholy</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/357">mark3labs/mcp-go#357</a></li>
<li><a href="https://github.com/vasayxtx"><code>@​vasayxtx</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/346">mark3labs/mcp-go#346</a></li>
<li><a href="https://github.com/tra4less"><code>@​tra4less</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/359">mark3labs/mcp-go#359</a></li>
<li><a
href="https://github.com/asaf-shitrit"><code>@​asaf-shitrit</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/364">mark3labs/mcp-go#364</a></li>
<li><a
href="https://github.com/giridhar-murthy-glean"><code>@​giridhar-murthy-glean</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/340">mark3labs/mcp-go#340</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.31.0...v0.32.0">https://github.com/mark3labs/mcp-go/compare/v0.31.0...v0.32.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/5c49f6352918f279dfa45f20f7af1a7a1bc7a84f"><code>5c49f63</code></a>
more docs fixes</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/b5db567ddc0f2b652483a0253936773c8aa0bba8"><code>b5db567</code></a>
improve docs some more</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/39438133009a953ba41312a8c68d133f121162a6"><code>3943813</code></a>
Optimize docs (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/386">#386</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/8c7a09d3d24fa105e0a9ddfe804002fdce52504c"><code>8c7a09d</code></a>
Use fuzzy search</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/dc234adec18e6d7543373cbae8d8f3d886f5e7e5"><code>dc234ad</code></a>
support search doc (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/378">#378</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/c3e97239d4fb6ca1458eb62b9e8cbbbe4fe43a10"><code>c3e9723</code></a>
fix: ignore session IDs in stateless mode instead of rejecting them (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/375">#375</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/75abd9ae9285affc523e3574d76e800e051d425f"><code>75abd9a</code></a>
fix: SSE parser now correctly handles events without event field (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/376">#376</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/cf6a2e92d3673c9cb3be1e2b075208e73deb0727"><code>cf6a2e9</code></a>
fix(srv/stream): properly remove sessionTool to prevent memory leak (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/365">#365</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/564b66947f663ae473a782b1ef5f157cd171eb5f"><code>564b669</code></a>
cleanup</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/6ac18430b11f0918bca81e7c0977d47c8d744956"><code>6ac1843</code></a>
fix links</li>
<li>Additional commits viewable in <a
href="https://github.com/mark3labs/mcp-go/compare/v0.31.0...v0.32.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/mark3labs/mcp-go&package-manager=go_modules&previous-version=0.31.0&new-version=0.32.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>
2025-06-16 12:07:04 +00:00
Atif Ali acf7d86edd docs: add winget installation step to Coder Desktop Windows (#18325)
Co-authored-by: Edward Angert <EdwardAngert@users.noreply.github.com>
2025-06-15 21:41:29 +05:00
Callum Styan 068f9a0d84 feat: include read/write byte stats in scaletests JSON report (#17777)
PR to fix https://github.com/coder/coder/issues/12157

---------

Signed-off-by: Callum Styan <callumstyan@gmail.com>
Co-authored-by: joobisb <joobisb@gmail.com>
2025-06-13 14:33:55 -07:00
Asher 4bd5609e13 feat: add status watcher to MCP server (#18320)
This is meant to complement the existing task reporter since the LLM
does not call it reliably.

It also includes refactoring to use the common agent flags/env vars.
2025-06-13 12:53:43 -08:00
Asher 5bcde58bdc fix: use matching state in status list (#18349)
It was using the latest state for all statuses, so if the last status
was "failing" for example every status would show the failing icon.
2025-06-13 12:15:56 -08:00
Jaayden Halko dc5f69ebfe fix: show error message for incompatible parameters (#18365)
resolves coder/preview#148

If there are any immutable params with diagnostics on the workspace
parameters page, display this error dialog.

<img width="838" alt="Screenshot 2025-06-13 at 18 06 36"
src="https://github.com/user-attachments/assets/47a9ad04-7969-4567-a5fc-39301c5f830c"
/>
2025-06-13 14:52:29 -04:00
Jaayden Halko 9a432b8d9f fix: add workspace owner id as query param to websocket (#18363)
Co-authored-by: Steven Masley <stevenmasley@gmail.com>
2025-06-13 14:49:32 -04:00
Steven Masley c1341cccdd feat: use proto streams to increase maximum module files payload (#18268)
This PR implements protobuf streaming to handle large module files by:
1. **Streaming large payloads**: When module files exceed the 4MB limit,
they're streamed in chunks using a new UploadFile RPC method
2. **Database storage**: Streamed files are stored in the database and
referenced by hash for deduplication
3. **Backward compatibility**: Small module files continue using the
existing direct payload method
2025-06-13 12:46:26 -05:00
Hugo Dutka 8e29ee50a3 feat: add ai tasks migrations (#18359)
Adds database migrations required for the Tasks feature.

There's a slight difference between the migrations in this PR and the
RFC: this PR adds `NOT NULL` constraints to the `has_ai_task` columns.
It was an oversight on my part when I wrote the RFC - I assumed the
`DEFAULT FALSE` value would make the columns implicitly NOT NULL, but
that's not the case with Postgres. We have no use for the NULL value.

The `DEFAULT FALSE` statement ensures that the migration will pass even
when there are existing rows in the template version and workspace
builds tables, so there's no danger in adding the `NOT NULL`
constraints.
2025-06-13 15:54:02 +02:00
Danielle Maywood 0ef62264ba fix(agent/agentcontainers): treat customizations as array (#18357)
This PR fixes a mistake from the previous PR
https://github.com/coder/coder/pull/18342. Merged configuration results
in the customization being an array not an object.

This PR also moves `displayApps` from being an array to being an object,
like the terraform provider has.
2025-06-13 14:48:12 +01:00
Mathias Fredriksson 949ab4b2f6 fix(site): use correct order of agent/workspace in AgentSSHButton (#18328) 2025-06-13 12:33:23 +03:00
Danielle Maywood dd150264bc feat(agent/agentcontainers): support displayApps from devcontainer config (#18342)
Updates the agent injection routine to read the dev container's
configuration so we can add display apps to the sub agent.
2025-06-12 23:36:23 +01:00
Asher bc74166963 feat: check for external auth before running task (#18339)
It seems we do not validate external auth in the backend currently, so I
opted to do this in the frontend to match the create workspace page.

This adds a new section underneath the task prompt for external auth
that only shows when there is non-optional missing auth.

Closes #18166
2025-06-12 12:35:43 -08:00
Edward Angert f1cca03ed3 docs: reorganize the About section (#18236)
As part of an information architecture overhaul, this PR reorganizes the
About section and adds a Support section (but not content to it yet)

[preview](https://coder.com/docs/@docs-ia-about/about)

this PR is intentionally limited in scope so that we can ship meaningful
changes faster and followup PRs should include:

- [ ] edit + overhaul the About page
- [ ] decide on the `start` directory
- [ ] ~screenshots page updates~ (this should happen July or later)

redirects PR: https://github.com/coder/coder.com/pull/944

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-06-12 13:56:45 -04:00
Jaayden Halko 5944b1c595 chore: remove local storage based optin/optout (#18344)
This removes the opt-in and opt-out buttons for dynamic parameters on
the create workspace page and the workspace parameters settings page.

---------

Co-authored-by: Steven Masley <stevenmasley@gmail.com>
2025-06-12 13:37:07 -04:00
blink-so[bot] 4ff6c5ef42 docs: update Kubernetes install docs with current release versions (#18347)
Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: matifali <10648092+matifali@users.noreply.github.com>
2025-06-12 22:19:45 +05:00
Jaayden Halko f126931219 chore: remove dynamic-parameters experiment (#18290)
Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: jaaydenh <1858163+jaaydenh@users.noreply.github.com>
Co-authored-by: Steven Masley <stevenmasley@gmail.com>
2025-06-12 12:15:05 -04:00
Mathias Fredriksson 70723d3b51 fix(coderd): fix panics by always checking for non-nil request logger (#18228) 2025-06-12 13:50:50 +03:00
Hugo Dutka c95d972d4e feat: update task workspace name format and prevent title overflow (#18315) 2025-06-12 10:05:17 +02:00
Cian Johnston dcc8e9eec5 chore: update gopsutil to fix panic on macos (#18330)
Fixes https://github.com/coder/internal/issues/688
2025-06-11 21:54:51 -04:00
Edward Angert f4600652c3 docs: remove github avatars (#18338)
the site is making the pictures big, so I'm just removing them in this
PR and then maybe we can investigate it some other time

- [live site](https://coder.com/docs/admin/integrations/island)
-
[preview](https://coder.com/docs/@remove-github-avatars/admin/integrations/island)

cc @aqandrew 

#bring-back-the-hotfix-label

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-06-12 00:52:21 +00:00
Steven Masley 1a00eae12e chore: handle mixed type lists in plan output (#18331)
Primarily for this fix:
https://github.com/coder/preview/commit/2e5caa65a54ab87073aaeee84e2a859e0c9fb299
2025-06-11 16:04:57 -05:00
Edward Angert c2262f9400 docs: fix alert markdown in healthcheck doc (#18335)
fix md
2025-06-11 15:04:17 -05:00
Dean Sheather 8e1ccf9f80 chore: update IdP docs with Google quirks (#18318)
Following some issues we discovered on dogfood after merging #17878, we
think `prompt=consent` is required for refresh tokens to be sent by
Google every time you sign in.
2025-06-11 15:02:08 -04:00
Mathias Fredriksson f2f0237082 fix(agent/agentcontainers): remove cap net admin from dev container agent executable (#18327) 2025-06-11 16:40:35 +00:00
Dean Sheather ae3882a600 chore: move all images to new GCP project (#18324) 2025-06-11 13:06:31 +00:00
Spike Curtis af4a6682b4 fix: use tailscale that avoids small MTU paths (#18323)
Fixes #15523

Uses latest https://github.com/coder/tailscale which includes https://github.com/coder/tailscale/pull/85 to stop selecting paths with small MTU for direct connections.

Also updates the tailnet integration test to reproduce the issue. The previous version had the 2 peers connected by a single veth, but this allows the OS to fragment the packet. In the new version, the 2 peers (and server) are all connected by a central router. The link between peer 1 and the router has an adjustable MTU. IPv6 does not allow packets to be fragmented by intermediate routers, so sending a too-large packet in this scenario forces the router to drop packets and reproduce the issue (without the tailscale changes).
2025-06-11 14:16:25 +04:00
Ethan 2377d76ebb test: ensure the return value of MockAuditor.Contains is checked (#18319)
It unfortunately doesn't seem possible, even with a custom ruleguard rule, to mark a function as requiring it's return value be used, it looks like you have to go all in on a linter that rejects *any* unused return values.
2025-06-11 17:16:18 +10:00
ケイラ dd27a28cfa chore: fix comment on Acquire (#18313) 2025-06-10 15:36:48 -06:00
Steven Masley fb63c9445c test: fix test flake in TestDynamicParametersWithTerraformValues (#18311)
Wrong build ID was being used for the await.

Closes https://github.com/coder/internal/issues/687
2025-06-10 16:13:47 -05:00
ケイラ 8661d1aed8 chore: add windows icon (#18312) 2025-06-10 12:56:57 -06:00
Mathias Fredriksson 9b9b89499e fix(coderd/database/db2sdk): add agent parent ID (#18310) 2025-06-10 18:07:05 +01:00
Steven Masley db8d5aeab3 chore: set .proto files to 2 spaces in editor config (#18305)
https://protobuf.dev/programming-guides/style/

2 spaces
2025-06-10 08:55:32 -05:00
Mathias Fredriksson ae0c8701bb feat(agent): disable devcontainers for sub agents (#18303)
Updates coder/internal#621
Refs #18245
2025-06-10 10:47:02 +00:00
Mathias Fredriksson fca99174ad feat(agent/agentcontainers): implement sub agent injection (#18245)
This change adds support for sub agent creation and injection into dev
containers.

Updates coder/internal#621
2025-06-10 12:37:54 +03:00
Jaayden Halko 44fff54897 fix: avoid displaying 'everyone' group for idp group sync (#18261)
fixes coder/coder#16987

Fix implemented through the coder tasks UI using Coder with Claude Code.

Prompt:
fix this issue, https://github.com/coder/coder/issues/16987
2025-06-09 17:08:34 -04:00
blink-so[bot] cb9c483445 fix: preserve parameter values when dynamic ordering changes (#18270)
## Problem

When creating a workspace from a template with dynamic parameter
ordering, parameter values are not displaying correctly when the order
changes. This occurs when a parameter's `order` value depends on another
parameter's value.

**Example scenario:**
```terraform
data "coder_parameter" "reorder" {
  name = "reorder"
  type = "bool"
  default = false
  order = 1
}

data "coder_parameter" "cpu" {
  order = data.coder_parameter.reorder.value ? 0 : 2
  name = "cpu"
  type = "number"
  default = 4
}
```

When the user toggles `reorder` from `false` to `true`, the `cpu`
parameter moves from position 2 to position 0, but its value gets mixed
up with the `reorder` parameter's value.

## Root Cause

The issue was in `CreateWorkspacePageViewExperimental.tsx` where
parameters were rendered using array indices instead of parameter names:

```typescript
// Problematic code
const parameterField = `rich_parameter_values.${index}`;
const formValue = form.values?.rich_parameter_values?.[index]?.value || "";
```

When parameters are reordered:
1. The `parameters` array order changes based on the new `order` values
2. The `form.values.rich_parameter_values` array maintains the original
order
3. Array index-based lookup causes values to be mismatched

## Solution

Implemented name-based lookup to ensure parameter values stay with their
correct parameters:

```typescript
// Find parameter value by name instead of index
const currentParameterValueIndex = form.values.rich_parameter_values?.findIndex(
  (p) => p.name === parameter.name
) ?? -1;

// Use the found index for form field mapping
const parameterFieldIndex = currentParameterValueIndex !== -1 ? currentParameterValueIndex : index;
const parameterField = `rich_parameter_values.${parameterFieldIndex}`;

// Get form value by name to ensure correct mapping
const formValue = currentParameterValueIndex !== -1 
  ? form.values?.rich_parameter_values?.[currentParameterValueIndex]?.value || ""
  : "";
```

## Testing

-  Created test script that validates the fix works correctly
-  Tested with the provided template showing dynamic parameter ordering
-  Verified parameter values persist correctly during reordering
-  Confirmed no TypeScript compilation issues

## Impact

This fix ensures that users can reliably use dynamic parameter ordering
in their templates without losing parameter values when the order
changes. This is particularly important for templates that use
conditional parameter visibility and ordering based on user selections.

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: Jaayden Halko <jaayden@coder.com>
2025-06-09 16:42:40 -04:00
dependabot[bot] be4f5efffd chore: bump gopkg.in/DataDog/dd-trace-go.v1 from 1.73.0 to 1.74.0 (#18287)
Bumps gopkg.in/DataDog/dd-trace-go.v1 from 1.73.0 to 1.74.0.

<details>
<summary>Most Recent Ignore Conditions Applied to This Pull
Request</summary>

| Dependency Name | Ignore Conditions |
| --- | --- |
| gopkg.in/DataDog/dd-trace-go.v1 | [>= 1.58.a, < 1.59] |
</details>


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=gopkg.in/DataDog/dd-trace-go.v1&package-manager=go_modules&previous-version=1.73.0&new-version=1.74.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>
2025-06-09 12:27:14 +00:00
dependabot[bot] f6dd50a6ee ci: bump the github-actions group with 4 updates (#18289)
Bumps the github-actions group with 4 updates:
[crate-ci/typos](https://github.com/crate-ci/typos),
[chromaui/action](https://github.com/chromaui/action),
[github/codeql-action](https://github.com/github/codeql-action) and
[aquasecurity/trivy-action](https://github.com/aquasecurity/trivy-action).

Updates `crate-ci/typos` from 1.32.0 to 1.33.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/releases">crate-ci/typos's
releases</a>.</em></p>
<blockquote>
<h2>v1.33.1</h2>
<h2>[1.33.1] - 2025-06-02</h2>
<h3>Fixes</h3>
<ul>
<li><em>(dict)</em> Don't correct <code>wasn't</code> to
<code>wasm't</code></li>
</ul>
<h2>v1.33.0</h2>
<h2>[1.33.0] - 2025-06-02</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1290">May
2025</a> changes</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/blob/master/CHANGELOG.md">crate-ci/typos's
changelog</a>.</em></p>
<blockquote>
<h1>Change Log</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>The format is based on <a href="http://keepachangelog.com/">Keep a
Changelog</a>
and this project adheres to <a href="http://semver.org/">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased] - ReleaseDate</h2>
<h2>[1.33.1] - 2025-06-02</h2>
<h3>Fixes</h3>
<ul>
<li><em>(dict)</em> Don't correct <code>wasn't</code> to
<code>wasm't</code></li>
</ul>
<h2>[1.33.0] - 2025-06-02</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1290">May
2025</a> changes</li>
</ul>
<h2>[1.32.0] - 2025-05-02</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1264">April
2025</a> changes</li>
</ul>
<h2>[1.31.2] - 2025-04-28</h2>
<h3>Fixes</h3>
<ul>
<li><em>(exclusion)</em> Don't confused emails as base64</li>
<li><em>(dict)</em> Correct <code>contamint</code> to
<code>contaminant</code>, not <code>contaminat</code></li>
<li><em>(dict)</em> Correct <code>contamints</code> to
<code>contaminants</code>, not <code>contaminats</code></li>
</ul>
<h3>Performance</h3>
<ul>
<li>Improve tokenization performance</li>
</ul>
<h2>[1.31.1] - 2025-03-31</h2>
<h3>Fixes</h3>
<ul>
<li><em>(dict)</em> Also correct <code>typ</code> to
<code>type</code></li>
</ul>
<h2>[1.31.0] - 2025-03-28</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1248">March
2025</a> changes</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/crate-ci/typos/commit/b1ae8d918b6e85bd611117d3d9a3be4f903ee5e4"><code>b1ae8d9</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/6c5d17de8e16370e7e1d8dd41c8dc0a7f22ea981"><code>6c5d17d</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/crate-ci/typos/commit/0a237ba81a86b72399a05f3441449ddeab9faf16"><code>0a237ba</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1311">#1311</a>
from epage/wasn</li>
<li><a
href="https://github.com/crate-ci/typos/commit/79920cf06905dd147d4e784ae17136d98c211083"><code>79920cf</code></a>
fix(dict): Don't correct <code>wasn't</code></li>
<li><a
href="https://github.com/crate-ci/typos/commit/e99b2b47d9910ae09f6e828594c33ab3e0936491"><code>e99b2b4</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/2afc152754dd1bf58997ad87bcc84f7797bb52ab"><code>2afc152</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/544a19b4ae1a0814151fd081008bb9305abccdfc"><code>544a19b</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/crate-ci/typos/commit/2e0ca28a9540837425705660401059467b721ab9"><code>2e0ca28</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1310">#1310</a>
from epage/may</li>
<li><a
href="https://github.com/crate-ci/typos/commit/94eb4e7b407daa7967ca1a23c72902898ab599f6"><code>94eb4e7</code></a>
feat(dict): May 2025 updates</li>
<li><a
href="https://github.com/crate-ci/typos/commit/a4cce4ca70447aa8b294fc0eaada68193eeec1fa"><code>a4cce4c</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1308">#1308</a>
from crate-ci/renovate/schemars-0.x</li>
<li>Additional commits viewable in <a
href="https://github.com/crate-ci/typos/compare/0f0ccba9ed1df83948f0c15026e4f5ccfce46109...b1ae8d918b6e85bd611117d3d9a3be4f903ee5e4">compare
view</a></li>
</ul>
</details>
<br />

Updates `chromaui/action` from 12.0.0 to 12.1.1
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/chromaui/action/commit/8536229ee904071f8edce292596f6dbe0da96b9b"><code>8536229</code></a>
v12.1.1</li>
<li><a
href="https://github.com/chromaui/action/commit/39708fe33252ca58c08b791fef95536ed2a1b976"><code>39708fe</code></a>
v12.1.0</li>
<li>See full diff in <a
href="https://github.com/chromaui/action/compare/d7afd50124cf4f337bcd943e7f45cfa85a5e4476...8536229ee904071f8edce292596f6dbe0da96b9b">compare
view</a></li>
</ul>
</details>
<br />

Updates `github/codeql-action` from 3.28.18 to 3.28.19
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.28.19</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.28.19 - 03 Jun 2025</h2>
<ul>
<li>The CodeQL Action no longer includes its own copy of the extractor
for the <code>actions</code> language, which is currently in public
preview.
The <code>actions</code> extractor has been included in the CodeQL CLI
since v2.20.6. If your workflow has enabled the <code>actions</code>
language <em>and</em> you have pinned
your <code>tools:</code> property to a specific version of the CodeQL
CLI earlier than v2.20.6, you will need to update to at least CodeQL
v2.20.6 or disable
<code>actions</code> analysis.</li>
<li>Update default CodeQL bundle version to 2.21.4. <a
href="https://redirect.github.com/github/codeql-action/pull/2910">#2910</a></li>
</ul>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.28.19/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<p>No user facing changes.</p>
<h2>3.28.19 - 03 Jun 2025</h2>
<ul>
<li>The CodeQL Action no longer includes its own copy of the extractor
for the <code>actions</code> language, which is currently in public
preview.
The <code>actions</code> extractor has been included in the CodeQL CLI
since v2.20.6. If your workflow has enabled the <code>actions</code>
language <em>and</em> you have pinned
your <code>tools:</code> property to a specific version of the CodeQL
CLI earlier than v2.20.6, you will need to update to at least CodeQL
v2.20.6 or disable
<code>actions</code> analysis.</li>
<li>Update default CodeQL bundle version to 2.21.4. <a
href="https://redirect.github.com/github/codeql-action/pull/2910">#2910</a></li>
</ul>
<h2>3.28.18 - 16 May 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.3. <a
href="https://redirect.github.com/github/codeql-action/pull/2893">#2893</a></li>
<li>Skip validating SARIF produced by CodeQL for improved performance.
<a
href="https://redirect.github.com/github/codeql-action/pull/2894">#2894</a></li>
<li>The number of threads and amount of RAM used by CodeQL can now be
set via the <code>CODEQL_THREADS</code> and <code>CODEQL_RAM</code>
runner environment variables. If set, these environment variables
override the <code>threads</code> and <code>ram</code> inputs
respectively. <a
href="https://redirect.github.com/github/codeql-action/pull/2891">#2891</a></li>
</ul>
<h2>3.28.17 - 02 May 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.2. <a
href="https://redirect.github.com/github/codeql-action/pull/2872">#2872</a></li>
</ul>
<h2>3.28.16 - 23 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2863">#2863</a></li>
</ul>
<h2>3.28.15 - 07 Apr 2025</h2>
<ul>
<li>Fix bug where the action would fail if it tried to produce a debug
artifact with more than 65535 files. <a
href="https://redirect.github.com/github/codeql-action/pull/2842">#2842</a></li>
</ul>
<h2>3.28.14 - 07 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2838">#2838</a></li>
</ul>
<h2>3.28.13 - 24 Mar 2025</h2>
<p>No user facing changes.</p>
<h2>3.28.12 - 19 Mar 2025</h2>
<ul>
<li>Dependency caching should now cache more dependencies for Java
<code>build-mode: none</code> extractions. This should speed up
workflows and avoid inconsistent alerts in some cases.</li>
<li>Update default CodeQL bundle version to 2.20.7. <a
href="https://redirect.github.com/github/codeql-action/pull/2810">#2810</a></li>
</ul>
<h2>3.28.11 - 07 Mar 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.20.6. <a
href="https://redirect.github.com/github/codeql-action/pull/2793">#2793</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/fca7ace96b7d713c7035871441bd52efbe39e27e"><code>fca7ace</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2918">#2918</a>
from github/update-v3.28.19-4a00331d4</li>
<li><a
href="https://github.com/github/codeql-action/commit/1dcd2bebbb31e92a94fd28ed1885b2e6331afdd3"><code>1dcd2be</code></a>
Update changelog for v3.28.19</li>
<li><a
href="https://github.com/github/codeql-action/commit/4a00331d4ecf79a214751520faf8e540e60c7567"><code>4a00331</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2910">#2910</a>
from github/update-bundle/codeql-bundle-v2.21.4</li>
<li><a
href="https://github.com/github/codeql-action/commit/c0a821da119108a26c647de84b1e6a857fda1279"><code>c0a821d</code></a>
Add changelog note</li>
<li><a
href="https://github.com/github/codeql-action/commit/d6216866b42d1cb95b8942447efe91161628ccfd"><code>d621686</code></a>
Update default bundle to codeql-bundle-v2.21.4</li>
<li><a
href="https://github.com/github/codeql-action/commit/dc138d4f519ecc58013d8fcef428272e2436cafd"><code>dc138d4</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2913">#2913</a>
from github/henrymercer/win-2019-deprecated</li>
<li><a
href="https://github.com/github/codeql-action/commit/3201e46e2615110190ca536fbf1280ccc7f3a247"><code>3201e46</code></a>
Stop running CI on <code>windows-2019</code></li>
<li><a
href="https://github.com/github/codeql-action/commit/7fd62151d9daff11d4b981415ffb365dcd93f75a"><code>7fd6215</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2911">#2911</a>
from github/update-supported-enterprise-server-versions</li>
<li><a
href="https://github.com/github/codeql-action/commit/31eae5e821e97c8b2903ca297cc8894bd9b609fb"><code>31eae5e</code></a>
Update supported GitHub Enterprise Server versions</li>
<li><a
href="https://github.com/github/codeql-action/commit/bc02a25f6449997c5e9d5a368879b28f56ae19a1"><code>bc02a25</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2908">#2908</a>
from github/henrymercer/dependabot</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/ff0a06e83cb2de871e5a09832bc6a81e7276941f...fca7ace96b7d713c7035871441bd52efbe39e27e">compare
view</a></li>
</ul>
</details>
<br />

Updates `aquasecurity/trivy-action` from 0.30.0 to 0.31.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/aquasecurity/trivy-action/releases">aquasecurity/trivy-action's
releases</a>.</em></p>
<blockquote>
<h2>v0.31.0</h2>
<h2>What's Changed</h2>
<ul>
<li>docs: add info that <code>unix:/</code> prefix is required for
<code>docker-host</code> input by <a
href="https://github.com/DmitriyLewen"><code>@​DmitriyLewen</code></a>
in <a
href="https://redirect.github.com/aquasecurity/trivy-action/pull/455">aquasecurity/trivy-action#455</a></li>
<li>Fix Trivy action inputs leaking between invocations (<a
href="https://redirect.github.com/aquasecurity/trivy-action/issues/422">#422</a>)
by <a href="https://github.com/rvesse"><code>@​rvesse</code></a> in <a
href="https://redirect.github.com/aquasecurity/trivy-action/pull/454">aquasecurity/trivy-action#454</a></li>
<li>Pin aquasecuriy/setup-trivy to hash instead of tag by <a
href="https://github.com/lhotari"><code>@​lhotari</code></a> in <a
href="https://redirect.github.com/aquasecurity/trivy-action/pull/456">aquasecurity/trivy-action#456</a></li>
<li>Bump Trivy version to fix GitHub actions by <a
href="https://github.com/maximmasiutin"><code>@​maximmasiutin</code></a>
in <a
href="https://redirect.github.com/aquasecurity/trivy-action/pull/460">aquasecurity/trivy-action#460</a></li>
<li>refactor: use ubuntu 24.04 in example code by <a
href="https://github.com/simar7"><code>@​simar7</code></a> in <a
href="https://redirect.github.com/aquasecurity/trivy-action/pull/465">aquasecurity/trivy-action#465</a></li>
<li>ci: fix workflow to bump Trivy by <a
href="https://github.com/nikpivkin"><code>@​nikpivkin</code></a> in <a
href="https://redirect.github.com/aquasecurity/trivy-action/pull/466">aquasecurity/trivy-action#466</a></li>
<li>chore(deps): Update trivy to v0.63.0 by <a
href="https://github.com/aqua-bot"><code>@​aqua-bot</code></a> in <a
href="https://redirect.github.com/aquasecurity/trivy-action/pull/467">aquasecurity/trivy-action#467</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/lhotari"><code>@​lhotari</code></a> made
their first contribution in <a
href="https://redirect.github.com/aquasecurity/trivy-action/pull/456">aquasecurity/trivy-action#456</a></li>
<li><a
href="https://github.com/maximmasiutin"><code>@​maximmasiutin</code></a>
made their first contribution in <a
href="https://redirect.github.com/aquasecurity/trivy-action/pull/460">aquasecurity/trivy-action#460</a></li>
<li><a href="https://github.com/aqua-bot"><code>@​aqua-bot</code></a>
made their first contribution in <a
href="https://redirect.github.com/aquasecurity/trivy-action/pull/467">aquasecurity/trivy-action#467</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/aquasecurity/trivy-action/compare/0.30.0...0.31.0">https://github.com/aquasecurity/trivy-action/compare/0.30.0...0.31.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/aquasecurity/trivy-action/commit/76071ef0d7ec797419534a183b498b4d6366cf37"><code>76071ef</code></a>
chore(deps): Update trivy to v0.63.0 (<a
href="https://redirect.github.com/aquasecurity/trivy-action/issues/467">#467</a>)</li>
<li><a
href="https://github.com/aquasecurity/trivy-action/commit/4844d823d3541b70e147062249823a5cf735b7b8"><code>4844d82</code></a>
ci: fix workflow to bump Trivy (<a
href="https://redirect.github.com/aquasecurity/trivy-action/issues/466">#466</a>)</li>
<li><a
href="https://github.com/aquasecurity/trivy-action/commit/26d71e622b84d103f86fb33a5a42c558e11f4ae0"><code>26d71e6</code></a>
refactor: use ubuntu 24.04 (<a
href="https://redirect.github.com/aquasecurity/trivy-action/issues/465">#465</a>)</li>
<li><a
href="https://github.com/aquasecurity/trivy-action/commit/b3dafe507ffa004210975439a1e6156b8ebb3f50"><code>b3dafe5</code></a>
Bump Trivy version to fix GitHub actions (<a
href="https://redirect.github.com/aquasecurity/trivy-action/issues/460">#460</a>)</li>
<li><a
href="https://github.com/aquasecurity/trivy-action/commit/99baf0d8b4e787c3cfd7b602664c8ce60a43cd38"><code>99baf0d</code></a>
Pin aquasecuriy/setup-trivy to hash instead of tag (<a
href="https://redirect.github.com/aquasecurity/trivy-action/issues/456">#456</a>)</li>
<li><a
href="https://github.com/aquasecurity/trivy-action/commit/7aca5acc9500b463826cc47a47a65ad7d404b045"><code>7aca5ac</code></a>
fix: Trivy action inputs leaking between invocations (<a
href="https://redirect.github.com/aquasecurity/trivy-action/issues/422">#422</a>)
(<a
href="https://redirect.github.com/aquasecurity/trivy-action/issues/454">#454</a>)</li>
<li><a
href="https://github.com/aquasecurity/trivy-action/commit/ea27ac12e15e065601133e2e439657937385d5a8"><code>ea27ac1</code></a>
docs: add info that <code>unix:/</code> prefix is required (<a
href="https://redirect.github.com/aquasecurity/trivy-action/issues/455">#455</a>)</li>
<li>See full diff in <a
href="https://github.com/aquasecurity/trivy-action/compare/6c175e9c4083a92bbca2f9724c8a5e33bc2d97a5...76071ef0d7ec797419534a183b498b4d6366cf37">compare
view</a></li>
</ul>
</details>
<br />

<details>
<summary>Most Recent Ignore Conditions Applied to This Pull
Request</summary>

| Dependency Name | Ignore Conditions |
| --- | --- |
| crate-ci/typos | [>= 1.30.a, < 1.31] |
</details>


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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-09 12:27:00 +00:00
dependabot[bot] 3378b27840 chore: bump google.golang.org/grpc from 1.72.1 to 1.73.0 (#18282)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from
1.72.1 to 1.73.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/grpc/grpc-go/releases">google.golang.org/grpc's
releases</a>.</em></p>
<blockquote>
<h2>Release 1.73.0</h2>
<h1>New Features</h1>
<ul>
<li>balancer/ringhash: move LB policy from xds/internal to exported path
to facilitate use without xds (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8249">#8249</a>)</li>
<li>xds: enable least request LB policy by default. It can be disabled
by setting <code>GRPC_EXPERIMENTAL_ENABLE_LEAST_REQUEST=false</code> in
your environment. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8253">#8253</a>)</li>
<li>grpc: add a <code>CallAuthority</code> Call Option that can be used
to overwrite the http <code>:authority</code> header on per-RPC basis.
(<a
href="https://redirect.github.com/grpc/grpc-go/issues/8068">#8068</a>)</li>
<li>stats/opentelemetry: add trace event for name resolution delay. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8074">#8074</a>)</li>
<li>health: added <code>List</code> method to gRPC Health service. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8155">#8155</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/marcoshuck"><code>@​marcoshuck</code></a></li>
</ul>
</li>
<li>ringhash: implement features from gRFC A76. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8159">#8159</a>)</li>
<li>xds: add functionality to support SPIFFE Bundle Maps as roots of
trust in XDS which can be enabled by setting
<code>GRPC_EXPERIMENTAL_XDS_MTLS_SPIFFE=true</code>. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8167">#8167</a>,
<a
href="https://redirect.github.com/grpc/grpc-go/issues/8180">#8180</a>,
<a
href="https://redirect.github.com/grpc/grpc-go/issues/8229">#8229</a>,
<a
href="https://redirect.github.com/grpc/grpc-go/issues/8343">#8343</a>)</li>
</ul>
<h1>Bug Fixes</h1>
<ul>
<li>xds: locality ID metric label is changed to make it consistent with
<a
href="https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md#optional-xds-locality-label">gRFC
A78</a>. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8256">#8256</a>)</li>
<li>client: fail RPCs on the client when using extremely short contexts
that expire before the <code>grpc-timeout</code> header is created. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8312">#8312</a>)</li>
<li>server: non-positive <code>grpc-timeout</code> header values are now
rejected. This is consistent with the <a
href="https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests">gRPC
protocol spec</a>. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8290">#8290</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/evanj"><code>@​evanj</code></a></li>
</ul>
</li>
<li>xds: fix reported error string when LRS load reporting interval is
invalid. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8224">#8224</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/alingse"><code>@​alingse</code></a></li>
</ul>
</li>
</ul>
<h1>Performance Improvements</h1>
<ul>
<li>credentials/alts: improve read performance by optimizing buffer
copies and allocations. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8271">#8271</a>)</li>
<li>server: improve performance of RPC handling by avoid a status proto
copy (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8282">#8282</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/evanj"><code>@​evanj</code></a></li>
</ul>
</li>
</ul>
<h1>Documentation</h1>
<ul>
<li>examples/features/opentelemetry: modify example to demonstrate
tracing using OpenTelemtry plugin. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8056">#8056</a>)</li>
</ul>
<h2>Release 1.72.2</h2>
<h1>Bug Fixes</h1>
<ul>
<li>client: restore support for <code>NO_PROXY</code> environment
variable when connecting to locally-resolved addresses (case 2 from <a
href="https://github.com/grpc/proposal/blob/master/A1-http-connect-proxy-support.md">gRFC
A1</a>). (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8329">#8329</a>)</li>
<li>balancer/least_request: fix panic on resolver errors. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8333">#8333</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/grpc/grpc-go/commit/c52d02553f2649c28d0279bca17909a3a08de022"><code>c52d025</code></a>
Change version to 1.73.0 (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8322">#8322</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/ac60db1864c340dee6e5718fad7dee439775766e"><code>ac60db1</code></a>
Add flag guarding SPIFFE Bundle provider (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8343">#8343</a>)
(<a
href="https://redirect.github.com/grpc/grpc-go/issues/8382">#8382</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/183c148c4e63b5770c8b9bdfc7d38fc0811e2742"><code>183c148</code></a>
balancer/ringhash: Add experimental notice in package comment (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8364">#8364</a>)
(<a
href="https://redirect.github.com/grpc/grpc-go/issues/8365">#8365</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/b610465ce4bd1af616bad0389185276fb8d19bb8"><code>b610465</code></a>
delegatingresolver: avoid proxy for resolved addresses in NO_PROXY env
(<a
href="https://redirect.github.com/grpc/grpc-go/issues/8329">#8329</a>...</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/96c4308a9958ccd2bcaffffd53d8fa6c380058b7"><code>96c4308</code></a>
balancer/least_request : Fix panic while handling resolver errors (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8333">#8333</a>)
(<a
href="https://redirect.github.com/grpc/grpc-go/issues/8">#8</a>...</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/af5146b69698317950518c934e9eb14341df6858"><code>af5146b</code></a>
grpc: update contributing.md (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8318">#8318</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/09166b665e8b6442bc70e88cdef580da9e7b7b06"><code>09166b6</code></a>
cleanup: remove unused constants in generic xdsclient (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8315">#8315</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/e3f13e75a60a13287fc537cb7974680f1eb99dc7"><code>e3f13e7</code></a>
transport: Prevent sending negative timeouts (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8312">#8312</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/b89909b7bd0d9bd333aab291e90fec1fa8d45ce9"><code>b89909b</code></a>
leakcheck: Fix flaky test TestCheck (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8309">#8309</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/709023de87a25ae63b000139295af10589edffee"><code>709023d</code></a>
grpcsync/event: Simplify synchronization (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8308">#8308</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/grpc/grpc-go/compare/v1.72.1...v1.73.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/grpc&package-manager=go_modules&previous-version=1.72.1&new-version=1.73.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>
2025-06-09 12:11:48 +00:00
Hugo Dutka 910858b731 chore(coderd/provisionerdserver): convert dbmem tests to use postgres (#18278) 2025-06-09 10:05:29 +02:00
ケイラ 7d8b994229 chore(dogfood): group web editors together (#18143)
To dogfood the new app grouping, we should have a group of apps. Putting
code-server and vscode-web together feels like an obvious grouping
candidate.
2025-06-06 10:40:11 -06:00
Danielle Maywood 8daa0aacc6 feat(coderd/agentapi): support adding display apps to a sub agent (#18272)
Completely missed this in the original PR for adding support for
creating sub agents. This now allows specifying a list of display apps
to be added to the agent.
2025-06-06 17:30:52 +01:00
Thomas Kosiewski f569d9c33d feat: add separate max token lifetime for administrators (#18267)
# Add separate token lifetime limits for administrators

This PR introduces a new configuration option `--max-admin-token-lifetime` that allows administrators to create API tokens with longer lifetimes than regular users. By default, administrators can create tokens with a lifetime of up to 7 days (168 hours), while the existing `--max-token-lifetime` setting continues to apply to regular users.

The implementation:
- Adds a new `MaximumAdminTokenDuration` field to the session configuration
- Modifies the token validation logic to check the user's role and apply the appropriate lifetime limit
- Updates the token configuration endpoint to return the correct maximum lifetime based on the user's role
- Adds tests to verify that administrators can create tokens with longer and shorter lifetimes
- Updates documentation and help text to reflect the new option

This change allows organizations to grant administrators extended token lifetimes while maintaining tighter security controls for regular users.

Fixes #17395
2025-06-06 17:36:30 +02:00
Steven Masley 348d19ddb7 chore: use spaces over tabs in proto files (#18269) 2025-06-06 09:11:01 -05:00
Spike Curtis d47a53da82 fix: handle paths with spaces in Match exec clause of SSH config (#18266)
fixes #18199 

Corrects handling of paths with spaces in the `Match !exec` clause we
use to determine whether Coder Connect is running. This is handled
differently than the ProxyCommand, so we have a different escape
routine, which also varies by OS.

On Windows, we resort to a pretty gnarly hack, but it does work and I
feel the only other option would be to reduce functionality such that we
could not detect the Coder Connect state.
2025-06-06 16:44:25 +04:00
Mathias Fredriksson 709f374fe0 feat(agent/agentcontainers): add Exec method to devcontainers CLI (#18244)
This change adds Exec to the devcontainer CLI.

Updates coder/internal#621
2025-06-06 14:38:58 +03:00
Mathias Fredriksson a12429e9f8 feat(agent/agentcontainers): refactor Lister to ContainerCLI and implement new methods (#18243) 2025-06-06 10:33:09 +00:00
Ethan 533c6dcbbe fix: remove error log when notification manager is already closed (#18264)
Closes https://github.com/coder/internal/issues/677

Resolves flakes such as:

```
$ go test -race -run "TestRunStopRace" github.com/coder/coder/v2/coderd/notifications -count=10000 -parallel $(nproc)
--- FAIL: TestRunStopRace (0.00s)
    t.go:106: 2025-06-06 02:44:39.348 [debu]  notifications-manager: notification manager started
    t.go:106: 2025-06-06 02:44:39.348 [debu]  notifications-manager: graceful stop requested
    t.go:106: 2025-06-06 02:44:39.348 [debu]  notifications-manager: notification manager stopped
    t.go:115: 2025-06-06 02:44:39.348 [erro]  notifications-manager: notification manager stopped with error ...
        error= manager already closed:
                   github.com/coder/coder/v2/coderd/notifications.(*Manager).loop
                       /home/coder/coder/coderd/notifications/manager.go:166
         *** slogtest: log detected at level ERROR; TEST FAILURE ***
--- FAIL: TestRunStopRace (0.00s)
    t.go:106: 2025-06-06 02:44:41.632 [debu]  notifications-manager: notification manager started
    t.go:106: 2025-06-06 02:44:41.632 [debu]  notifications-manager: graceful stop requested
    t.go:106: 2025-06-06 02:44:41.632 [debu]  notifications-manager: notification manager stopped
    t.go:115: 2025-06-06 02:44:41.633 [erro]  notifications-manager: notification manager stopped with error ...
        error= manager already closed:
                   github.com/coder/coder/v2/coderd/notifications.(*Manager).loop
                       /home/coder/coder/coderd/notifications/manager.go:166
         *** slogtest: log detected at level ERROR; TEST FAILURE ***
FAIL
FAIL    github.com/coder/coder/v2/coderd/notifications  6.847s
FAIL
```

These error logs are caused as a result of the `Manager` `Run` start operation being asynchronous. In the flaking test case we immediately call `Stop` after `Run`. It's possible for `Stop` to be scheduled to completion before the goroutine spawned by `Run` calls `loop` and checks `closed`. If this happens, `loop` returns an error and produces the error log.

We'll address this by replacing this specific error log with a warning log.

```
$ go test -run "TestRunStopRace" github.com/coder/coder/v2/coderd/notifications -count=10000 -parallel $(nproc)
ok      github.com/coder/coder/v2/coderd/notifications  1.294s

$ go test -race github.com/coder/coder/v2/coderd/notifications -count=100 -parallel $(nproc)
ok      github.com/coder/coder/v2/coderd/notifications  26.525s
```
2025-06-06 19:28:10 +10:00
Cian Johnston 7c2fb66181 chore(provisionersdk): ignore io.EOF in Session.requestReader (#18234)
My understanding is that `io.EOF` is eventually expected, so logging it
as an error may be confusing. For other errors we should definitely
WARN.

```
[info]  provisionerd-ip-172-31-12-44-14: recv done on Session  session_id=22b9ef8a-9cd6-4188-98e0-573a50d724cc  error=EOF
```
2025-06-06 09:05:22 +01:00
Spike Curtis 08eff7f433 chore: improve tailnet integration test (#18124)
Refactors tailnet integration test and adds UDP echo tests with different MTU related to #15523

I still haven't gotten to the bottom of what's causing the issue (the added test case I expected to fail actually succeeds), but these integration test improvements are generally useful.

also:
 * consolidates networking setup with easy and hard NAT
 * consolidates client setup
 * makes Client2 act like an agent at the tailnet layer, so it will send ReadyForHandshake and speed up the tunnel establishment
 * adds support for logging tunneled packets
 * adds support for dumping outer (underlay) IP traffic
 * adds support for adjusting veth MTU
 * adds support for IPv6 in the outer (underlay) network topology
2025-06-06 10:18:08 +04:00
Ethan 628b81c334 chore(vpn): send info, debug logs over tunnel (#18240)
Closes https://github.com/coder/internal/issues/397
2025-06-06 14:31:27 +10:00
Ethan 0076e8479f chore(vpn): send ping results over tunnel (#18200)
Closes #17982.

The purpose of this PR is to expose network latency via the API used by Coder Desktop.

This PR has the tunnel ping all known agents every 5 seconds, in order to produce an instance of:
```proto
message LastPing {
	// latency is the RTT of the ping to the agent.
	google.protobuf.Duration latency = 1;
	// did_p2p indicates whether the ping was sent P2P, or over DERP.
	bool did_p2p = 2;
	// preferred_derp is the human readable name of the preferred DERP region,
	// or the region used for the last ping, if it was sent over DERP.
	string preferred_derp = 3;
	// preferred_derp_latency is the last known latency to the preferred DERP
	// region. Unset if the region does not appear in the DERP map.
	optional google.protobuf.Duration preferred_derp_latency = 4;
}
```
The contents of this message are stored and included on all subsequent upsertions of the agent. 
Note that we upsert existing agents every 5 seconds to update the `last_handshake` value.

On the desktop apps, this message will be used to produce a tooltip similar to that of the VS Code extension:
<img width="495" alt="image" src="https://github.com/user-attachments/assets/d8b65f3d-f536-4c64-9af9-35c1a42c92d2" />
(wording not final)

Unlike the VS Code extension, we omit:
- The Latency of *all* available DERP regions. It seems not ideal to send a copy of this entire map for every online agent, and it certainly doesn't make sense for it to be on the `Agent` or `LastPing` message. 
If we do want to expose this info on Coder Desktop, we should consider how best to do so; maybe we want to include it on a more generic `Netcheck` message.
- The current throughput (Bytes up/down). This is out of scope of the linked issue, and is non-trivial to implement. I'm also not sure of the value given the frequency we're doing these status updates (every 5 seconds).
If we want to expose it, it'll be in a separate PR.

<img width="343" alt="image" src="https://github.com/user-attachments/assets/8447d03b-9721-4111-8ac1-332d70a1e8f1" />
2025-06-06 14:18:57 +10:00
blink-so[bot] b4f71b70aa fix: show preset parameters when they have diagnostics (#18258)
Always show preset parameters in CreateWorkspacePageViewExperimental if
the preset parameter has any diagnostics, regardless of the
showPresetParameters toggle state.

This ensures that users can see and address errors in preset parameters
even when the "Show preset parameters" toggle is disabled.

Fixes coder/internal#651

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: Jaayden Halko <jaayden@coder.com>
2025-06-05 17:46:47 -04:00
Jaayden Halko 508fba83dd feat: handle update build for dynamic params (#18226)
resolves coder/preview#110

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
2025-06-05 16:35:23 -04:00
Asher c339066be3 chore: select the first embedded app on tasks page (#18260)
The first app might be an external app (shown in the dropdown), and we
actually want to select the first embedded app (which are in tabs).
2025-06-05 11:43:23 -08:00
Steven Masley 0428c5ec1c chore: include 'everyone' group in template importing (#18257) 2025-06-05 19:25:36 +00:00
Hugo Dutka 8a70b8d85c chore: select the first workspace app to be active in tasks (#18256)
Same as https://github.com/coder/coder/pull/18239, but only the
necessary code
2025-06-05 13:40:01 -05:00
Steven Masley 60595f3455 chore: ignore .git directories in terraform modules (#18255)
.git directories were causing identical modules to have different
hashes. This adds unecessary bloat to the database, and the .git
directory is not needed for dynamic params
2025-06-05 12:57:13 -05:00
Hugo Dutka 3f406c7c50 fix: improve sidebar chat loading UX in tasks (#18254)
Addresses https://github.com/coder/internal/issues/668
2025-06-05 18:58:54 +02:00
Mathias Fredriksson 2f8b056e27 test(agent/agentcontainers): fix test data race due to list manipulation (#18250)
Fixes coder/internal#675
2025-06-05 14:53:35 +00:00
blink-so[bot] 2c0c58af71 fix: improve copy for tasks "starting" page (#18247)
Update the copy on the task starting page to be more user-friendly:

- Change "Building the workspace" to "Starting your workspace"
- Change "Your task will run as soon as the workspace is ready" to "This
should take a few minutes"

The new copy provides clearer expectations about timing and uses more
user-friendly language.

Fixes #18164

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
2025-06-05 10:35:17 -04:00
blink-so[bot] c54ef0357b docs: update Smarter Device Manager link to new GitHub repository (#18248)
The Smarter Device Manager project has moved from GitLab to GitHub. This
PR updates the link in the Docker in Workspaces documentation to point
to the new repository at
https://github.com/smarter-project/smarter-device-manager.

**Changes:**
- Updated the link from
`https://gitlab.com/arm-research/smarter/smarter-device-manager#enabling-access`
to `https://github.com/smarter-project/smarter-device-manager`

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: Edward Angert <EdwardAngert@users.noreply.github.com>
2025-06-05 14:30:02 +00:00
Mathias Fredriksson 04e4f2fac0 chore(agent): update agent proto client (#18242) 2025-06-05 16:58:18 +03:00
Hugo Dutka 623dcd97dc fix(cli): fix flakes related to context cancellation when establishing pg connections (#18246)
Since https://github.com/coder/coder/pull/18195 was merged, we started
running CLI tests with postgres instead of just dbmem. This surfaced
errors related to context cancellation while establishing postgres
connections.

This PR should fix https://github.com/coder/internal/issues/672. Related
to https://github.com/coder/coder/issues/15109.
2025-06-05 15:54:13 +02:00
Danielle Maywood b5fd3dd855 feat(coderd/agentapi): allow inserting apps for sub agents (#18129)
Allow creating workspace apps for a sub agent when the agent is being
created with `CreateSubAgent` in the agent api.
2025-06-05 11:57:02 +01:00
Hugo Dutka 277c2c7ea7 chore(coderd/prometheusmetrics): remove dbmem from tests (#18238) 2025-06-05 09:30:27 +02:00
Hugo Dutka bb2c19562b chore(cli): remove dbmem from tests (#18195) 2025-06-05 09:29:31 +02:00
dependabot[bot] 9ef44e6be2 ci: bump the github-actions group with 3 updates (#18177)
Bumps the github-actions group with 3 updates:
[fluxcd/flux2](https://github.com/fluxcd/flux2),
[tj-actions/changed-files](https://github.com/tj-actions/changed-files)
and [ossf/scorecard-action](https://github.com/ossf/scorecard-action).

Updates `fluxcd/flux2` from 2.5.1 to 2.6.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/fluxcd/flux2/releases">fluxcd/flux2's
releases</a>.</em></p>
<blockquote>
<h2>v2.6.1</h2>
<h2>Highlights</h2>
<p>Flux v2.6.1 is a patch release that comes with various fixes. Users
are encouraged to upgrade for the best experience.</p>
<p>Fixes:</p>
<ul>
<li>Fix a bug introduced in image-reflector-controller v0.35.0 that was
causing spurious error events for policies during image repository
reconciliation.</li>
<li>Fix excessive logging in image-reflector-controller after a restart
when the image tags cache is empty.</li>
</ul>
<h2>Components changelog</h2>
<ul>
<li>image-reflector-controller <a
href="https://github.com/fluxcd/image-reflector-controller/blob/v0.35.1/CHANGELOG.md">v0.35.1</a></li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>[release/v2.6.x] Update image-reflector-controller to v0.35.1 by <a
href="https://github.com/fluxcdbot"><code>@​fluxcdbot</code></a> in <a
href="https://redirect.github.com/fluxcd/flux2/pull/5382">fluxcd/flux2#5382</a></li>
<li>[release/v2.6.x] Add digest pinning to image automation testing by
<a href="https://github.com/fluxcdbot"><code>@​fluxcdbot</code></a> in
<a
href="https://redirect.github.com/fluxcd/flux2/pull/5384">fluxcd/flux2#5384</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/fluxcd/flux2/compare/v2.6.0...v2.6.1">https://github.com/fluxcd/flux2/compare/v2.6.0...v2.6.1</a></p>
<h2>v2.6.0</h2>
<h2>Highlights</h2>
<p>Flux v2.6.0 is a feature release. Users are encouraged to upgrade for
the best experience.</p>
<p>For a compressive overview of new features and API changes included
in this release, please refer to the <a
href="https://fluxcd.io/blog/2025/05/flux-v2.6.0/">Announcing Flux 2.6
GA blog post</a>.</p>
<p>Overview of the new features:</p>
<ul>
<li>General availability release for the Flux OCI Artifacts APIs and
<code>flux artifact</code> commands</li>
<li>Support for OCI digests pinning (ImagePolicy,
ImageUpdateAutomation)</li>
<li>Object-level workload identity authentication (OCIRepository,
ImageRepository, Kustomization, Alert Provider)</li>
<li>Cache registry credentials for cloud providers (OCIRepository,
ImageRepository)</li>
<li>Git HTTP/S Mutual TLS authentication (GitRepository,
ImageUpdateAutomation)</li>
<li>Support for sparse checkout (GitRepository)</li>
<li>Support for GitHub App authentication (Alert Provider)</li>
<li>Support for managed Identity authentication to Azure Event Hub
(Alert Provider)</li>
<li>Customize the ID of the Git commit status with CEL expressions
(Alert Provider)</li>
<li><code>WaitForTermination</code> deletion policy (Kustomization)</li>
<li><code>DisableChartDigestTracking</code> feature gate
(HelmRelease)</li>
</ul>
<p>❤️ Big thanks to all the Flux contributors that helped us with this
release!</p>
<h3>Kubernetes compatibility</h3>
<p>This release is compatible with the following Kubernetes
versions:</p>
<p>| Kubernetes version | Minimum required |</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/fluxcd/flux2/commit/b73c7f7191086ca7629840e680e71873349787f8"><code>b73c7f7</code></a>
Merge pull request <a
href="https://redirect.github.com/fluxcd/flux2/issues/5384">#5384</a>
from fluxcd/backport-5383-to-release/v2.6.x</li>
<li><a
href="https://github.com/fluxcd/flux2/commit/7aff0327adc117c1501ee24d4983e3f6d06fc2ee"><code>7aff032</code></a>
Add digest pinning to image automation testing</li>
<li><a
href="https://github.com/fluxcd/flux2/commit/3bb3ae361744e0d121f095829e44c5dede33dbb9"><code>3bb3ae3</code></a>
Merge pull request <a
href="https://redirect.github.com/fluxcd/flux2/issues/5382">#5382</a>
from fluxcd/backport-5381-to-release/v2.6.x</li>
<li><a
href="https://github.com/fluxcd/flux2/commit/bf1af3c12059ed11f51a6ff345ed15e5567a1e21"><code>bf1af3c</code></a>
Update toolkit components</li>
<li><a
href="https://github.com/fluxcd/flux2/commit/4c66d375454b5841cc816e7728e8ae684cf70dc3"><code>4c66d37</code></a>
Merge pull request <a
href="https://redirect.github.com/fluxcd/flux2/issues/5370">#5370</a>
from fluxcd/update-components</li>
<li><a
href="https://github.com/fluxcd/flux2/commit/481c3c6e1e1c7056f0d1907ea39f22eee0c53473"><code>481c3c6</code></a>
Update toolkit components</li>
<li><a
href="https://github.com/fluxcd/flux2/commit/1d1d96b4895115aa1bb092f7bb3de6611681ebae"><code>1d1d96b</code></a>
Merge pull request <a
href="https://redirect.github.com/fluxcd/flux2/issues/5373">#5373</a>
from fluxcd/dependabot-up</li>
<li><a
href="https://github.com/fluxcd/flux2/commit/0b972771fdcdd8cf290f16398fb0c09cd2ad128d"><code>0b97277</code></a>
Update dependabot config</li>
<li><a
href="https://github.com/fluxcd/flux2/commit/650732109e1cef23fdf753e8caeb4efea984fe10"><code>6507321</code></a>
Merge pull request <a
href="https://redirect.github.com/fluxcd/flux2/issues/5371">#5371</a>
from fluxcd/oci-ga</li>
<li><a
href="https://github.com/fluxcd/flux2/commit/79fed691cafed9022fc37242e498cf108a0a1725"><code>79fed69</code></a>
Update CLI to OCIRepository v1 (GA)</li>
<li>Additional commits viewable in <a
href="https://github.com/fluxcd/flux2/compare/8d5f40dca5aa5d3c0fc3414457dda15a0ac92fa4...b73c7f7191086ca7629840e680e71873349787f8">compare
view</a></li>
</ul>
</details>
<br />

Updates `tj-actions/changed-files` from
3981e4f74104e7a4c67a835e1e5dd5d9eb0f0a57 to
115870536a85eaf050e369291c7895748ff12aea
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tj-actions/changed-files/blob/main/HISTORY.md">tj-actions/changed-files's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.4...v46.0.5">46.0.5</a>
- (2025-04-09)</h1>
<h2><!-- raw HTML omitted -->⚙️ Miscellaneous Tasks</h2>
<ul>
<li><strong>deps:</strong> Bump yaml from 2.7.0 to 2.7.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2520">#2520</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/ed68ef82c095e0d48ec87eccea555d944a631a4c">ed68ef8</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump typescript from 5.8.2 to 5.8.3 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2516">#2516</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/a7bc14b808f23d3b467a4079c69a81f1a4500fd5">a7bc14b</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump <code>@​types/node</code> from
22.13.11 to 22.14.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2517">#2517</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/3d751f6b6d84071a17e1b9cf4ed79a80a27dd0ab">3d751f6</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump eslint-plugin-prettier from 5.2.3 to
5.2.6 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2519">#2519</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/e2fda4ec3cb0bc2a353843cae823430b3124db8f">e2fda4e</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump ts-jest from 29.2.6 to 29.3.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2518">#2518</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/0bed1b1132ec4879a39a2d624cf82a00d0bcfa48">0bed1b1</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump github/codeql-action from 3.28.12 to
3.28.15 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2530">#2530</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/68024587dc36f49685c96d59d3f1081830f968bb">6802458</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump tj-actions/branch-names from 8.0.1 to
8.1.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2521">#2521</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/cf2e39e86bf842d1f9bc5bca56c0a6b207cca792">cf2e39e</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump tj-actions/verify-changed-files from
20.0.1 to 20.0.4 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2523">#2523</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/6abeaa506a419f85fa9e681260b443adbeebb3d4">6abeaa5</a>)
- (dependabot[bot])</li>
</ul>
<h2><!-- raw HTML omitted -->⬆️ Upgrades</h2>
<ul>
<li>Upgraded to v46.0.4 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2511">#2511</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted --> (<a
href="https://github.com/tj-actions/changed-files/commit/6f67ee9ac810f0192ea7b3d2086406f97847bcf9">6f67ee9</a>)
- (github-actions[bot])</p>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.3...v46.0.4">46.0.4</a>
- (2025-04-03)</h1>
<h2><!-- raw HTML omitted -->🐛 Bug Fixes</h2>
<ul>
<li>Bug modified_keys and changed_key outputs not set when no changes
detected (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2509">#2509</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/6cb76d07bee4c9772c6882c06c37837bf82a04d3">6cb76d0</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->📚 Documentation</h2>
<ul>
<li>Update readme (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2508">#2508</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/b74df86ccb65173a8e33ba5492ac1a2ca6b216fd">b74df86</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->⬆️ Upgrades</h2>
<ul>
<li>Upgraded to v46.0.3 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2506">#2506</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted -->
Co-authored-by: Tonye Jack <a
href="mailto:jtonye@ymail.com">jtonye@ymail.com</a> (<a
href="https://github.com/tj-actions/changed-files/commit/27ae6b33eaed7bf87272fdeb9f1c54f9facc9d99">27ae6b3</a>)
- (github-actions[bot])</p>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.2...v46.0.3">46.0.3</a>
- (2025-03-23)</h1>
<h2><!-- raw HTML omitted -->🔄 Update</h2>
<ul>
<li>Updated README.md (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2501">#2501</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted --> (<a
href="https://github.com/tj-actions/changed-files/commit/41e0de576a0f2b64d9f06f2773f539109e55a70a">41e0de5</a>)
- (github-actions[bot])</p>
<ul>
<li>Updated README.md (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2499">#2499</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted --> (<a
href="https://github.com/tj-actions/changed-files/commit/945787811a795cd840a1157ac590dd7827a05c8e">9457878</a>)
- (github-actions[bot])</p>
<h2><!-- raw HTML omitted -->📚 Documentation</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tj-actions/changed-files/commit/115870536a85eaf050e369291c7895748ff12aea"><code>1158705</code></a>
chore(deps-dev): bump eslint-plugin-jest from 28.11.0 to 28.12.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2575">#2575</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/48aea2e1ab598202feb33bfd4df18f25cf0bf56a"><code>48aea2e</code></a>
chore(deps-dev): bump <code>@​types/node</code> from 22.15.24 to
22.15.26 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2576">#2576</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/050a3d3360d29711ee9d8210fc639d902d23ad07"><code>050a3d3</code></a>
Updated README.md (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2574">#2574</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/f000a9b97f254f9590ff26f651cccde827ad36da"><code>f000a9b</code></a>
docs: add Jellyfrog as a contributor for code, and doc (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2573">#2573</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/7a9a6d21056d4fc643159b536584c95a903da077"><code>7a9a6d2</code></a>
chore(deps-dev): bump <code>@​types/node</code> from 22.15.21 to
22.15.24 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2572">#2572</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/abda8aa2d055f53806b6d35f984ea80315fab52b"><code>abda8aa</code></a>
chore: update build job to fail when there are uncommited changes (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2571">#2571</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/c6634ca281a9fc05b03bee224ba00910cb78ab6e"><code>c6634ca</code></a>
chore(deps): bump github/codeql-action from 3.28.17 to 3.28.18 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2564">#2564</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/860b02dbf9f4dfded5b31c3ef9eca758918910b2"><code>860b02d</code></a>
chore(deps): bump <code>@​octokit/rest</code> from 21.1.1 to 22.0.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2568">#2568</a>)</li>
<li>See full diff in <a
href="https://github.com/tj-actions/changed-files/compare/3981e4f74104e7a4c67a835e1e5dd5d9eb0f0a57...115870536a85eaf050e369291c7895748ff12aea">compare
view</a></li>
</ul>
</details>
<br />

Updates `ossf/scorecard-action` from 2.4.1 to 2.4.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ossf/scorecard-action/releases">ossf/scorecard-action's
releases</a>.</em></p>
<blockquote>
<h2>v2.4.2</h2>
<h2>What's Changed</h2>
<p>This update bumps the Scorecard version to the v5.2.1 release. For a
complete list of changes, please refer to the Scorecard <a
href="https://github.com/ossf/scorecard/releases/tag/v5.2.0">v5.2.0</a>
and <a
href="https://github.com/ossf/scorecard/releases/tag/v5.2.1">v5.2.1</a>
release notes.</p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/ossf/scorecard-action/compare/v2.4.1...v2.4.2">https://github.com/ossf/scorecard-action/compare/v2.4.1...v2.4.2</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ossf/scorecard-action/commit/05b42c624433fc40578a4040d5cf5e36ddca8cde"><code>05b42c6</code></a>
🌱 bump docker to ghcr v2.4.2 (<a
href="https://redirect.github.com/ossf/scorecard-action/issues/1548">#1548</a>)</li>
<li><a
href="https://github.com/ossf/scorecard-action/commit/b225da6b2b97811a123bb34532642f3ad6a4f011"><code>b225da6</code></a>
Bump github.com/ossf/scorecard/v5 from v5.2.0 to v5.2.1 (<a
href="https://redirect.github.com/ossf/scorecard-action/issues/1550">#1550</a>)</li>
<li><a
href="https://github.com/ossf/scorecard-action/commit/9399f6f42496e38fbb8dbcf85e17223226a5dafe"><code>9399f6f</code></a>
🌱 Bump the docker-images group across 1 directory with 2
updates (<a
href="https://redirect.github.com/ossf/scorecard-action/issues/1">#1</a>...</li>
<li><a
href="https://github.com/ossf/scorecard-action/commit/e1daa8c5c7ed469dbb0167e261ed1c9fa673a9ae"><code>e1daa8c</code></a>
🌱 Bump the github-actions group across 1 directory with 5
updates (#...</li>
<li><a
href="https://github.com/ossf/scorecard-action/commit/9fe6511b9b36af3b03200e49cf8fb09d261b5402"><code>9fe6511</code></a>
🌱 Bump golang.org/x/net from 0.39.0 to 0.40.0 (<a
href="https://redirect.github.com/ossf/scorecard-action/issues/1542">#1542</a>)</li>
<li><a
href="https://github.com/ossf/scorecard-action/commit/25b9cd9cd11610dcac11e59afed9910714b12129"><code>25b9cd9</code></a>
🌱 Bump github.com/ossf/scorecard/v5 from v5.1.1 to v5.2.0 (<a
href="https://redirect.github.com/ossf/scorecard-action/issues/1547">#1547</a>)</li>
<li><a
href="https://github.com/ossf/scorecard-action/commit/18cc9b81307fc5ab3c2cd7092955f06dcfdf8c42"><code>18cc9b8</code></a>
🌱 Bump golang.org/x/net from 0.38.0 to 0.39.0 (<a
href="https://redirect.github.com/ossf/scorecard-action/issues/1536">#1536</a>)</li>
<li><a
href="https://github.com/ossf/scorecard-action/commit/db7814227b097a902957aa24d989c6e473613a8e"><code>db78142</code></a>
🌱 Bump the github-actions group with 2 updates (<a
href="https://redirect.github.com/ossf/scorecard-action/issues/1538">#1538</a>)</li>
<li><a
href="https://github.com/ossf/scorecard-action/commit/de386ed459e2f85111697f50fe076d0ea617a32f"><code>de386ed</code></a>
🌱 Bump golang from 1.24.1 to 1.24.2 in the docker-images group
(<a
href="https://redirect.github.com/ossf/scorecard-action/issues/1534">#1534</a>)</li>
<li><a
href="https://github.com/ossf/scorecard-action/commit/5b7cedba4eccfb66a6277e40cbe18d1d559ecc00"><code>5b7cedb</code></a>
🌱 Bump github.com/sigstore/cosign/v2 from 2.4.3 to 2.5.0 (<a
href="https://redirect.github.com/ossf/scorecard-action/issues/1537">#1537</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/ossf/scorecard-action/compare/f49aabe0b5af0936a0987cfb85d86b75731b0186...05b42c624433fc40578a4040d5cf5e36ddca8cde">compare
view</a></li>
</ul>
</details>
<br />


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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-05 02:52:25 +00:00
Edward Angert 60927c701d docs: edit troubleshooting steps in Coder Desktop documentation (#18233)
closes #18071 

- [x] move `## Accessing web apps in a secure browser context` to the
troubleshooting section
- [x] use a compacted view for troubleshooting topics to prevent them
from occupying a significant space on page
- [x] remove `Issues updating Coder Desktop`
- [x] Update screenshots

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-06-04 13:58:30 -04:00
Edward Angert a6e2d2db99 docs: add descriptions to items in manifest (#18064)
[preview](https://coder.com/docs/@manifest-descriptions/admin/users/quotas#up-next)

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
Co-authored-by: Atif Ali <atif@coder.com>
2025-06-04 17:05:01 +00:00
Atif Ali 97ba7f1ce9 docs: fix alert in artifactory guide (#18235)
[preview](https://coder.com/docs/@atif%2Ffix-alert/admin/integrations/jfrog-artifactory#jfrog-token)
2025-06-04 12:50:23 -04:00
Steven Masley 51ed624bb9 chore: update preview to handle meta count for parameters (#18231)
Parameters using `count` had values incorrectly assigned and could panic
in some cases.
2025-06-04 10:03:40 -05:00
Hugo Dutka 61f2b04d2b fix: embed agentapi chat in the sidebar iframe (#18230)
- hardcode a custom pathname (`/chat/embed`) to use in the sidebar
iframe. this is a temporary fix so that the agentapi chat displays
properly
- make the sidebar a bit wider so that the chat fits without line
wrapping

<img width="1512" alt="Screenshot 2025-06-04 at 15 32 30"
src="https://github.com/user-attachments/assets/8be5d053-d7b3-40da-8b62-a6151975527d"
/>
2025-06-04 16:52:47 +02:00
Sas Swart 5f7e5d7097 feat: support prebuilt workspaces in non-default organizations (#18010)
closes https://github.com/coder/internal/issues/527
2025-06-04 14:20:29 +02:00
Danielle Maywood 4d0fe20ca6 chore(coderd/database/dbauthz): update RBAC for InsertWorkspaceApp (#18223)
Instead of using `ResourceSystem` as the resource for
`InsertWorkspaceApp`, we instead use the associated workspace (if it
exists), with the action `ActionUpdate`.
2025-06-04 11:22:01 +00:00
Bruno Quaresma 9e1967bb0b feat: allow clipboard read and write on app iframes (#18221)
Reference:
https://web.dev/articles/async-clipboard#permissions_policy_integration

This might solve https://github.com/coder/coder/issues/18160
2025-06-04 04:57:01 -03:00
Spike Curtis 00fb61068f chore: use Quartz 0.2.1 instead of unreleased tip of main (#18198)
Points us at Quartz 0.2.1 which is the same commit, but was unreleased until today.
2025-06-04 09:07:28 +04:00
Bruno Quaresma 13449b9e78 feat: embed chat ui in the task sidebar (#18216)
**Demo:**

<img width="1512" alt="Screenshot 2025-06-03 at 14 36 25"
src="https://github.com/user-attachments/assets/e4a61bd3-2182-4593-991d-5db9573a5b7f"
/>

- Extract components to be reused and easier to reasoning about 
- When having cloude-code-web, embed the chat in the sidebar 
- The sidebar will be wider when having the chat to better fit that 

**Does not include:**
- Sidebar width drag and drop control. The width is static but would be
nice to have a control to customize it.
2025-06-03 17:00:59 -03:00
Edward Angert 63adfa57bd docs: add link to official jetbrains toolbox (#18128)
Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-06-03 15:49:34 -04:00
blink-so[bot] cc89820d7c feat: add template export functionality to UI (#18214)
## Summary

This PR adds template export functionality to the Coder UI, addressing
issue #17859. Users can now export templates directly from the web
interface without requiring CLI access.

## Changes

### Frontend API
- Added `downloadTemplateVersion` function to `site/src/api/api.ts`
- Supports both TAR (default) and ZIP formats
- Uses existing `/api/v2/files/{fileId}` endpoint with format parameter

### UI Enhancement
- Added "Export as TAR" and "Export as ZIP" options to template dropdown
menu
- Positioned logically between "Duplicate" and "Delete" actions
- Uses download icon from Lucide React for consistency

### User Experience
- Files automatically named as
`{templateName}-{templateVersion}.{extension}`
- Immediate download trigger on click
- Proper error handling with console logging
- Clean blob URL management to prevent memory leaks

## Testing

The implementation has been tested for:
-  TypeScript compilation
-  Proper function signatures and types
-  UI component integration
-  Error handling structure

## Screenshots

The export options appear in the template dropdown menu:
- Export as TAR (default format, compatible with `coder template pull`)
- Export as ZIP (compressed format for easier handling)

## Fixes

Closes #17859

## Notes

This enhancement makes template management more accessible for users
who:
- Don't have CLI access
- Manage deployments on devices without Coder CLI
- Prefer web-based workflows
- Need to transfer templates between environments

The implementation follows existing patterns in the codebase and
maintains consistency with the current UI design.

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: Kyle Carberry <kyle@coder.com>
2025-06-03 14:26:50 -04:00
Kyle Carberry 7b273b0b8c fix: add blink-so to contributors bypass (#18215) 2025-06-03 17:45:28 +00:00
Cian Johnston da9a313d0c fix(cli): allow specifying empty provisioner tag set with --provisioner-tag="-" (#18205)
Relates to https://github.com/coder/coder/issues/17818

Note: due to limitations in `cobra/serpent` I ended up having to use `-`
to signify absence of provisioner tags. This value is not a valid
key-value pair and thus not a valid tag.
2025-06-03 16:55:34 +01:00
Eric Paulsen b0d23ca31b fix: remove duplicated envbuilder vars (#18144) 2025-06-03 16:23:59 +01:00
Atif Ali 535a59e1d3 docs: add link for Coder Desktop docs on workspace page (#18202) 2025-06-03 18:39:02 +05:00
Atif Ali 4a2b243fc1 docs: improve JetBrains Toolbox connection docs (#18125) 2025-06-03 12:04:43 +05:00
Atif Ali cba69f3d98 docs: update SSH command format to use suffix (#18085)
Refactor the workspace SSH command syntax across the project to use the
"workspace.coder" format instead of "coder.workspace". This standardizes
the SSH host entries for better consistency and clarity.

This is a follow-up from #17445 and recommends using the suffix-based
format for all new Coder versions.

<img width="418" alt="image"
src="https://github.com/user-attachments/assets/3893f840-9ce1-4803-a013-736068feb328"
/>
2025-06-02 20:13:08 -07:00
Jaayden Halko fd6981e514 fix: fix flashing error dialog in the create workspace page (#18180)
This PR which updated react-query to 5.77.0 introduced an issue on the
create workspace page where the error dialog would be briefly displayed
while the page is loading. https://github.com/coder/coder/pull/18039

The issue is that there is a moment when `optOutQuery.isLoading` is
false and `optOutQuery.data` is undefined causing the ErrorAlert to
display.
2025-06-02 16:55:05 -04:00
Bruno Quaresma 1d27d4f719 refactor: reduce the default workspace name for a task (#18193)
Subdomains should have 63 max characters, so we don't want to have a
long default workspace name that could overflow this limit. With that in
mind, I'm reducing 3 characters from the default name.

PS: I've been facing issues with that already. Eg:
```
claude-code-web--dev--ai-task-1748889021126--brunoquaresma--apps.sao-paulo.fly.dev.coder.com
```
2025-06-02 15:51:02 -03:00
Steven Masley 246a829ea9 feat: evaluate dynamic parameters http endpoint (#18182)
Used when a websocket is too heavy. This implements a single request to
the preview engine.
2025-06-02 13:50:07 -05:00
blink-so[bot] 322f1e4dd2 fix: improve task prompt placeholder consistency (#18189)
Updates the placeholder text in the task prompt box to be consistent
with the "task" terminology used throughout the UI.

**Changes:**
- Changed placeholder from "Write an action for your AI agent to
perform..." to "Prompt your AI agent to start a task..."
- This aligns with the "Run task" button text and overall task-focused
language

**Testing:**
- Verified the text change renders correctly in the UI
- No functional changes, only text update

Co-authored-by: blink-so <blink-so@users.noreply.github.com>
2025-06-02 15:24:56 -03:00
Bruno Quaresma 45d46c8c0a refactor: minor task page design adjustments (#18187)
**Before:**
<img width="1624" alt="Screenshot 2025-06-02 at 13 38 45"
src="https://github.com/user-attachments/assets/545400e9-18d6-44a3-9f21-a51ceceedc8e"
/>

**After:**
<img width="1624" alt="Screenshot 2025-06-02 at 13 40 18"
src="https://github.com/user-attachments/assets/1b0b89f0-8cd6-4afd-8800-786e43ae4b52"
/>

- Show output links
- Move workspace app bar to top of screen
- Remove redundant task status indicators
- Update "building your task" to "Building your workspace" to be more
transparent
- Change “Open IDE” language to “Open Locally”

Closes:
- https://github.com/coder/coder/issues/18181
- https://github.com/coder/coder/issues/18162
2025-06-02 14:52:55 -03:00
Jaayden Halko 87c4948c1d fix: do not block form control rendering for dynamic parameters on parsing error (#18185)
Defer to backend diagnostics when the values cannot be parsed and allow
the form control to render so the user can select a different option.
2025-06-02 13:40:06 -04:00
Ben Potter 2a0a268946 chore: exempt blink agent from CLA (#18190) 2025-06-02 13:31:28 -04:00
Hugo Dutka 2e7cd0fe22 chore(coderd/database/dbpurge): remove dbmem from tests (#18151)
Related to https://github.com/coder/coder/issues/15109
2025-06-02 16:48:38 +02:00
Hugo Dutka 1d48131e98 chore(coderd/externalauth): remove dbmem from tests (#18147)
Related to https://github.com/coder/coder/issues/15109
2025-06-02 14:42:18 +02:00
Hugo Dutka d1fc0dd2c5 chore(coderd/database/dbmetrics): remove dbmem from tests (#18150)
Related to https://github.com/coder/coder/issues/15109
2025-06-02 14:26:56 +02:00
dependabot[bot] 74f0fe2a35 chore: bump github.com/moby/moby from 28.1.1+incompatible to 28.2.2+incompatible (#18171)
Bumps [github.com/moby/moby](https://github.com/moby/moby) from
28.1.1+incompatible to 28.2.2+incompatible.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/moby/moby/releases">github.com/moby/moby's
releases</a>.</em></p>
<blockquote>
<h2>28.2.2</h2>
<p>For a full list of pull requests and changes in this release, refer
to the relevant GitHub milestones:</p>
<ul>
<li><a
href="https://github.com/docker/cli/issues?q=is%3Aclosed+milestone%3A28.2.2">docker/cli,
28.2.2 milestone</a></li>
<li><a
href="https://github.com/moby/moby/issues?q=is%3Aclosed+milestone%3A28.2.2">moby/moby,
28.2.2 milestone</a></li>
</ul>
<h3>Bug fixes and enhancements</h3>
<ul>
<li>containerd image store: Fix a regression causing <code>docker build
--push</code> to fail. This reverts <a
href="https://redirect.github.com/moby/moby/pull/49702">the fix</a> for
<code>docker build</code> not persisting overridden images as dangling.
<a
href="https://redirect.github.com/moby/moby/pull/50105">moby/moby#50105</a></li>
</ul>
<h3>Networking</h3>
<ul>
<li>When creating the iptables <code>DOCKER-USER</code> chain, do not
add an explicit <code>RETURN</code> rule, allowing users to append as
well as insert their own rules. Existing rules are not removed on
upgrade, but it won't be replaced after a reboot. <a
href="https://redirect.github.com/moby/moby/pull/50098">moby/moby#50098</a></li>
</ul>
<h2>28.2.1</h2>
<h2>Packaging updates</h2>
<ul>
<li>Fix packaging regression in <a
href="https://github.com/moby/moby/releases/tag/v28.2.0">v28.2.0</a>
which broke creating the <code>docker</code> group/user on fresh
installations. <a
href="https://redirect.github.com/docker/docker-ce-packaging/issues/1209">docker-ce-packaging#1209</a></li>
</ul>
<h2>28.2.0</h2>
<p>For a full list of pull requests and changes in this release, refer
to the relevant GitHub milestones:</p>
<ul>
<li><a
href="https://github.com/docker/cli/issues?q=is%3Aclosed+milestone%3A28.2.0">docker/cli,
28.2.0 milestone</a></li>
<li><a
href="https://github.com/moby/moby/issues?q=is%3Aclosed+milestone%3A28.2.0">moby/moby,
28.2.0 milestone</a></li>
<li>Deprecated and removed features, see <a
href="https://github.com/docker/cli/blob/v28.2.0/docs/deprecated.md">Deprecated
Features</a>.</li>
<li>Changes to the Engine API, see <a
href="https://github.com/moby/moby/blob/v28.2.0/docs/api/version-history.md">API
version history</a>.</li>
</ul>
<blockquote>
<p>[!NOTE]
RHEL packages are currently not available and will be released
later.</p>
</blockquote>
<h3>New</h3>
<ul>
<li>Add <code>{{.Platform}}</code> as formatting option for <code>docker
ps</code> to show the platform of the image the container is running. <a
href="https://redirect.github.com/docker/cli/pull/6042">docker/cli#6042</a></li>
<li>Add support for relative parent paths (<code>../</code>) on bind
mount sources when using <code>docker run/create</code> with
<code>-v/--volume</code> or <code>--mount type=bind</code> options. <a
href="https://redirect.github.com/docker/cli/pull/4966">docker/cli#4966</a></li>
<li>CDI is now enabled by default. <a
href="https://redirect.github.com/moby/moby/pull/49963">moby/moby#49963</a></li>
<li>Show discovered CDI devices in <code>docker info</code>. <a
href="https://redirect.github.com/docker/cli/pull/6078">docker/cli#6078</a></li>
<li><code>docker image rm</code>: add <code>--platform</code> option to
remove a variant from multi-platform images. <a
href="https://redirect.github.com/docker/cli/pull/6109">docker/cli#6109</a></li>
<li>containerd image store: Initial BuildKit support for building
Windows container images on Windows (requires an opt-in with
<code>DOCKER_BUILDKIT=1</code>). <a
href="https://redirect.github.com/moby/moby/pull/49740">moby/moby#49740</a></li>
</ul>
<h3>Bug fixes and enhancements</h3>
<ul>
<li>Add a new log option for fluentd log driver
(<code>fluentd-write-timeout</code>), which enables specifying write
timeouts for fluentd connections. <a
href="https://redirect.github.com/moby/moby/pull/49911">moby/moby#49911</a></li>
<li>Add support for <code>DOCKER_AUTH_CONFIG</code> for the experimental
<code>--use-api-socket</code> option. <a
href="https://redirect.github.com/docker/cli/pull/6019">docker/cli#6019</a></li>
<li>Fix <code>docker exec</code> waiting for 10 seconds if a
non-existing user or group was specified. <a
href="https://redirect.github.com/moby/moby/pull/49868">moby/moby#49868</a></li>
<li>Fix <code>docker swarm init</code> ignoring <code>cacert</code>
option of <code>--external-ca</code>. <a
href="https://redirect.github.com/docker/cli/pull/5995">docker/cli#5995</a></li>
<li>Fix an issue where the CLI would not correctly save the
configuration file (<code>~/.docker/config.json</code>) if it was a
relative symbolic link. <a
href="https://redirect.github.com/docker/cli/pull/5282">docker/cli#5282</a></li>
<li>Fix containers with <code>--restart always</code> policy using CDI
devices failing to start on daemon restart. <a
href="https://redirect.github.com/moby/moby/pull/49990">moby/moby#49990</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/moby/moby/commit/45873be4ae3f5488c9498b3d9f17deaddaf609f4"><code>45873be</code></a>
Merge pull request <a
href="https://redirect.github.com/moby/moby/issues/50105">#50105</a>
from jsternberg/revert-build-dangling</li>
<li><a
href="https://github.com/moby/moby/commit/7994426e6126229d4218703bb37ca0bf380007f9"><code>7994426</code></a>
Revert &quot;containerd: images overridden by a build are kept
dangling&quot;</li>
<li><a
href="https://github.com/moby/moby/commit/f144264bae57b134b73afa966a1136a0fd7ed572"><code>f144264</code></a>
Merge pull request <a
href="https://redirect.github.com/moby/moby/issues/50090">#50090</a>
from corhere/libn/overlay-netip</li>
<li><a
href="https://github.com/moby/moby/commit/768cfaeb623ccd55194d649c983ea0fecd5a91c8"><code>768cfae</code></a>
Merge pull request <a
href="https://redirect.github.com/moby/moby/issues/50050">#50050</a>
from robmry/nftables_internal_dns</li>
<li><a
href="https://github.com/moby/moby/commit/d3289dda4bd9339a053abc33ed0912a00a56ce4d"><code>d3289dd</code></a>
Add nftables NAT rules for internal DNS resolver</li>
<li><a
href="https://github.com/moby/moby/commit/7a0bf747f5c25da0794e42d5f9e5a40db5a7786e"><code>7a0bf74</code></a>
Merge pull request <a
href="https://redirect.github.com/moby/moby/issues/50038">#50038</a>
from ctalledo/fix-for-50037</li>
<li><a
href="https://github.com/moby/moby/commit/b43afbf898c0f7fde9c500b5867256974dd24ac6"><code>b43afbf</code></a>
Merge pull request <a
href="https://redirect.github.com/moby/moby/issues/50098">#50098</a>
from robmry/remove_docker-user_return_rule</li>
<li><a
href="https://github.com/moby/moby/commit/c299ba3b38e1c79e5f13ca04d9804d384bc80f57"><code>c299ba3</code></a>
Update worker.Platforms() in builder-next worker.</li>
<li><a
href="https://github.com/moby/moby/commit/0e2cc22d36ae3013f83863c8da2e1b808f25e78e"><code>0e2cc22</code></a>
Merge pull request <a
href="https://redirect.github.com/moby/moby/issues/50049">#50049</a>
from robmry/nftables_env_var_enable</li>
<li><a
href="https://github.com/moby/moby/commit/e37efd4c2d4758c53fedefb9c3ec9235d1e71490"><code>e37efd4</code></a>
Merge pull request <a
href="https://redirect.github.com/moby/moby/issues/50068">#50068</a>
from mmorel-35/github.com/containerd/errdefs</li>
<li>Additional commits viewable in <a
href="https://github.com/moby/moby/compare/v28.1.1...v28.2.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/moby/moby&package-manager=go_modules&previous-version=28.1.1+incompatible&new-version=28.2.2+incompatible)](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>
2025-06-02 12:09:41 +00:00
Hugo Dutka 8ca5519f57 chore(coderd/idpsync): run all tests with postgres (#18149)
Related to https://github.com/coder/coder/issues/15109.

Running postgres tests used to create a new postgres docker container
every time. I believe the slow down might've been caused by that and was
misattributed to postgres performance.

```
coder@main ~/coder ((0e90ac29))> DB=ci gotestsum --packages="./coderd/idpsync" -- -count=1
✓  coderd/idpsync (1.471s)

DONE 91 tests in 4.766s
```
2025-06-02 14:07:31 +02:00
Hugo Dutka bdf227c1f9 chore(coderd/database/dbgen): remove dbmem from tests (#18152)
Related to https://github.com/coder/coder/issues/15109
2025-06-02 14:05:40 +02:00
Hugo Dutka d3ed6fe652 chore(coderd/autobuild): use dbtestutil.WillUsePostgres instead of os.Getenv in test (#18145)
Standardizing on `WillUsePostgres` will make it easier to remove the
check entirely once dbmem is removed.

Related to https://github.com/coder/coder/issues/15109.
2025-06-02 13:58:07 +02:00
Hugo Dutka 782d01bae2 chore(coderd/httpmw): remove dbmem usage from tests (#18146)
Related to https://github.com/coder/coder/issues/15109
2025-06-02 13:57:56 +02:00
dependabot[bot] f986d13a9c chore: bump github.com/fergusstrange/embedded-postgres from 1.30.0 to 1.31.0 (#18174)
Bumps
[github.com/fergusstrange/embedded-postgres](https://github.com/fergusstrange/embedded-postgres)
from 1.30.0 to 1.31.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/fergusstrange/embedded-postgres/releases">github.com/fergusstrange/embedded-postgres's
releases</a>.</em></p>
<blockquote>
<h2>v1.31.0</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: prevent panic when <code>*http.Response</code> is nil by <a
href="https://github.com/dannykopping"><code>@​dannykopping</code></a>
in <a
href="https://redirect.github.com/fergusstrange/embedded-postgres/pull/156">fergusstrange/embedded-postgres#156</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/dannykopping"><code>@​dannykopping</code></a>
made their first contribution in <a
href="https://redirect.github.com/fergusstrange/embedded-postgres/pull/156">fergusstrange/embedded-postgres#156</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/fergusstrange/embedded-postgres/compare/v1.30.0...v1.31.0">https://github.com/fergusstrange/embedded-postgres/compare/v1.30.0...v1.31.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/fergusstrange/embedded-postgres/commit/4fb7ddc646853d24521dfbb119c9a3fbf6f8a675"><code>4fb7ddc</code></a>
fix: prevent panic when <code>*http.Response</code> is nil (<a
href="https://redirect.github.com/fergusstrange/embedded-postgres/issues/156">#156</a>)</li>
<li>See full diff in <a
href="https://github.com/fergusstrange/embedded-postgres/compare/v1.30.0...v1.31.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/fergusstrange/embedded-postgres&package-manager=go_modules&previous-version=1.30.0&new-version=1.31.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>
2025-06-02 11:57:40 +00:00
Hugo Dutka 9a28cb0545 chore(coderd/telemetry): remove dbmem from tests (#18148)
Related to https://github.com/coder/coder/issues/15109
2025-06-02 13:57:27 +02:00
Hugo Dutka 9812162190 chore(coderd/database/dbrollup): remove dbmem from tests (#18153)
Related to https://github.com/coder/coder/issues/15109
2025-06-02 13:56:50 +02:00
dependabot[bot] 33c87a2e03 chore: bump github.com/mocktools/go-smtp-mock/v2 from 2.4.0 to 2.5.0 (#18170)
Bumps
[github.com/mocktools/go-smtp-mock/v2](https://github.com/mocktools/go-smtp-mock)
from 2.4.0 to 2.5.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mocktools/go-smtp-mock/releases">github.com/mocktools/go-smtp-mock/v2's
releases</a>.</em></p>
<blockquote>
<h2>v2.5.0</h2>
<h2>Changelog</h2>
<ul>
<li>46310364e58e3d77f47a7fe9c2e890b59ecfc01d Feature/Support custom
logger implementations (<a
href="https://redirect.github.com/mocktools/go-smtp-mock/issues/201">#201</a>)</li>
<li>379ac4b84f86882d2ee896c956b1ccdc92a15d55 Merge pull request <a
href="https://redirect.github.com/mocktools/go-smtp-mock/issues/204">#204</a>
from mocktools/develop</li>
<li>f26d8693f3ecc39d6118dedcfd680d0e8048a67c Technical/Update changelog
(<a
href="https://redirect.github.com/mocktools/go-smtp-mock/issues/203">#203</a>)</li>
<li>33f8c5c4dd1d35517152129b999372dcc711dd78 Technical/Update readme (<a
href="https://redirect.github.com/mocktools/go-smtp-mock/issues/202">#202</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/mocktools/go-smtp-mock/blob/master/CHANGELOG.md">github.com/mocktools/go-smtp-mock/v2's
changelog</a>.</em></p>
<blockquote>
<h2>[2.5.0] - 2025-05-31</h2>
<h3>Added</h3>
<ul>
<li>Added <a
href="https://redirect.github.com/mocktools/go-smtp-mock/issues/171">ability
to use a custom logger</a>, <code>WithLogger()</code> method. Thanks <a
href="https://github.com/Hsn723"><code>@​Hsn723</code></a> for PR</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mocktools/go-smtp-mock/commit/379ac4b84f86882d2ee896c956b1ccdc92a15d55"><code>379ac4b</code></a>
Merge pull request <a
href="https://redirect.github.com/mocktools/go-smtp-mock/issues/204">#204</a>
from mocktools/develop</li>
<li><a
href="https://github.com/mocktools/go-smtp-mock/commit/f26d8693f3ecc39d6118dedcfd680d0e8048a67c"><code>f26d869</code></a>
Technical/Update changelog (<a
href="https://redirect.github.com/mocktools/go-smtp-mock/issues/203">#203</a>)</li>
<li><a
href="https://github.com/mocktools/go-smtp-mock/commit/33f8c5c4dd1d35517152129b999372dcc711dd78"><code>33f8c5c</code></a>
Technical/Update readme (<a
href="https://redirect.github.com/mocktools/go-smtp-mock/issues/202">#202</a>)</li>
<li><a
href="https://github.com/mocktools/go-smtp-mock/commit/46310364e58e3d77f47a7fe9c2e890b59ecfc01d"><code>4631036</code></a>
Feature/Support custom logger implementations (<a
href="https://redirect.github.com/mocktools/go-smtp-mock/issues/201">#201</a>)</li>
<li>See full diff in <a
href="https://github.com/mocktools/go-smtp-mock/compare/v2.4.0...v2.5.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/mocktools/go-smtp-mock/v2&package-manager=go_modules&previous-version=2.4.0&new-version=2.5.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>
2025-06-02 11:54:58 +00:00
dependabot[bot] ef17def4af chore: bump github.com/mark3labs/mcp-go from 0.30.0 to 0.31.0 (#18168)
Bumps [github.com/mark3labs/mcp-go](https://github.com/mark3labs/mcp-go)
from 0.30.0 to 0.31.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mark3labs/mcp-go/releases">github.com/mark3labs/mcp-go's
releases</a>.</em></p>
<blockquote>
<h2>Release v0.31.0</h2>
<h2>What's Changed</h2>
<ul>
<li>[feat] separate request struct by <a
href="https://github.com/OswinWu"><code>@​OswinWu</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/333">mark3labs/mcp-go#333</a></li>
<li>fix: logo on website is squashed by <a
href="https://github.com/corani"><code>@​corani</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/349">mark3labs/mcp-go#349</a></li>
<li>fix: panic when streamable HTTP server sends notification by <a
href="https://github.com/dugenkui03"><code>@​dugenkui03</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/348">mark3labs/mcp-go#348</a></li>
<li>fix: move styles.css to www/docs by <a
href="https://github.com/corani"><code>@​corani</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/354">mark3labs/mcp-go#354</a></li>
<li>fix(server): resolve stdio server context cancellation bug by <a
href="https://github.com/sonirico"><code>@​sonirico</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/331">mark3labs/mcp-go#331</a></li>
<li>Add option to StreamableHTTPServer to allow custom http server
instance by <a
href="https://github.com/yash025"><code>@​yash025</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/347">mark3labs/mcp-go#347</a></li>
<li>fix(Srv/stream): add ID field to <code>PingRequest</code> by <a
href="https://github.com/cryo-zd"><code>@​cryo-zd</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/353">mark3labs/mcp-go#353</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/OswinWu"><code>@​OswinWu</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/333">mark3labs/mcp-go#333</a></li>
<li><a href="https://github.com/corani"><code>@​corani</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/349">mark3labs/mcp-go#349</a></li>
<li><a href="https://github.com/sonirico"><code>@​sonirico</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/331">mark3labs/mcp-go#331</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.30.1...v0.31.0">https://github.com/mark3labs/mcp-go/compare/v0.30.1...v0.31.0</a></p>
<h2>Release v0.30.1</h2>
<h2>What's Changed</h2>
<ul>
<li>fix(server): Implement MCP version negotiation. by <a
href="https://github.com/octo"><code>@​octo</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/341">mark3labs/mcp-go#341</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.30.0...v0.30.1">https://github.com/mark3labs/mcp-go/compare/v0.30.0...v0.30.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/4b7117679253667c34c385f47e5982e3b18ba90a"><code>4b71176</code></a>
fix(Srv/stream): add ID field to <code>PingRequest</code> (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/353">#353</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/7f2ea88dea96ed9b804168ad91e19a19363eb03f"><code>7f2ea88</code></a>
Add option to StreamableHTTPServer to allow custom http server instance
(<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/347">#347</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/d250b380fbc71f43a41a276f86703085f87ca963"><code>d250b38</code></a>
fix(server): resolve stdio server context cancellation bug (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/331">#331</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/d5847c0fadb7ea4115562e8b92cf5e1ffe9b288b"><code>d5847c0</code></a>
fix: move styles.css to www/docs (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/354">#354</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/e744c1925c709a4e7c02d31500cdded5b1d0e935"><code>e744c19</code></a>
fix: panic when streamable HTTP server sends notification (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/348">#348</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/991b31c2a0a9d2f304f6dcb46554fe651c14b6af"><code>991b31c</code></a>
fix: logo on website is squashed (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/349">#349</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/bfc377391e4c1d7ff3883950fd91c4a499b4f2bf"><code>bfc3773</code></a>
Merge pull request <a
href="https://redirect.github.com/mark3labs/mcp-go/issues/333">#333</a>
from OswinWu/feat/separate-CallToolRequstParams</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/a283d2336d42040d7910d88e33cbd0937545e1c9"><code>a283d23</code></a>
Merge branch 'main' into feat/separate-CallToolRequstParams</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/c7c0e13ad2675746f78b2580ad4a8de57b2bbbc6"><code>c7c0e13</code></a>
fix(server): Implement MCP protocol negotiation. (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/341">#341</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/96f1b3bbd89345adb1f3668558c919b80a769c1a"><code>96f1b3b</code></a>
[style] change naming style of structs</li>
<li>Additional commits viewable in <a
href="https://github.com/mark3labs/mcp-go/compare/v0.30.0...v0.31.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/mark3labs/mcp-go&package-manager=go_modules&previous-version=0.30.0&new-version=0.31.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>
2025-06-02 11:49:30 +00:00
Danny Kopping 2c8e6b91d6 chore: upgrade fergusstrange/embedded-postgres after bugfix (#18167)
https://github.com/fergusstrange/embedded-postgres/pull/156 was merged
and
[v1.31.0](https://github.com/fergusstrange/embedded-postgres/releases/tag/v1.31.0)
was cut.

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
2025-06-02 11:44:08 +00:00
Ben Potter 1e407fb4e2 fix: improve build reliability with fallback apt mirrors (#18155)
## Summary
- Fixes image build failure by adding fallback to kernel.org mirrors
when Ubuntu/Debian repositories fail
- Ensures unzip is available during Bun installation process
- Improves apt repository configuration to prevent 403 errors in CI

## Root Cause
The build was failing for two reasons:
1. Network issues with Ubuntu/Debian package repositories returning 403
Forbidden errors
2. Unzip package not being reliably available in the image layer where
Bun installation happens

## Fix
- Added fallback mirrors for apt repositories using kernel.org mirrors
- Explicitly installed unzip before using it in the Bun installation
- Added proper cleanup after package installations to keep image size
down

## Test plan
- The CI workflow that was previously failing should now succeed
- Build the dogfood image locally with `cd dogfood/coder && docker build
-t codercom/oss-dogfood:test .`
- Verify Bun is correctly installed and can be used

Fixes build failure from PR #18154 (original PR that added Bun)

🤖 Generated with [Claude Code](https://claude.ai/code)

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-06-01 19:01:35 -05:00
Ben Potter bf07a14c27 feat: add Bun v1.2.15 to dogfood image (#18154)
## Summary
- Adds Bun JavaScript runtime (v1.2.15) to the dogfood image
- Installs Bun to /usr/local/bin to ensure persistence when /home/coder
is mounted
- Verified that Bun works correctly in the built container

## Test plan
1. Build the dogfood image with `cd dogfood/coder && docker build -t
codercom/oss-dogfood:test .`
2. Run the container with `docker run --rm -it codercom/oss-dogfood:test
bash`
3. Test Bun in the container with:
   - `bun --version` (should output 1.2.15)
- `cd /tmp && echo "console.log('Hello from Bun\!');" > test.js && bun
run test.js`

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-06-01 16:07:04 -05:00
Jaayden Halko 854ef5b07c fix: improve create workspace page for dynamic parameters (#18139)
- Avoid scrolling on workspace creation
- hide auth required badge when authenticated
2025-05-30 17:13:16 -04:00
Bruno Quaresma 19745a2dee feat: filter tasks by user (#18130)
Demo: 

https://github.com/user-attachments/assets/4f3a39c5-6b41-4493-a1c0-56eedadb7798
2025-05-30 15:31:06 -03:00
Bruno Quaresma 9fbccc032d chore: improve iframe loading time (#18134)
- Pre-load all the embed app iframes
- Avoid reloading the iframe when the selected app changes
2025-05-30 15:30:35 -03:00
Bruno Quaresma 00502dc653 feat: hide parent apps on devcontainer agents (#18120)
**Demo:**

https://github.com/user-attachments/assets/d68cbc33-5199-426b-8f97-35ee1c3ae133
2025-05-30 14:59:26 -03:00
Bruno Quaresma 696d264da8 refactor: remove app column from tasks table (#18135)
Remove the "app" column from the tasks table since the user can click on the task and use apps there.
2025-05-30 14:47:24 -03:00
Kyle Carberry d44d8abcd1 fix: improve task report tool complete status (#18138) 2025-05-30 17:46:19 +00:00
Jaayden Halko 9b53e69e32 feat: add early access badges for dynamic parameters (#18114)
Workspace creation page
<img width="1438" alt="Screenshot 2025-05-30 at 13 38 22"
src="https://github.com/user-attachments/assets/bac94f3a-b695-4662-9a89-7777d03d8f74"
/>

Workspace parameter settings
<img width="1432" alt="Screenshot 2025-05-30 at 13 37 19"
src="https://github.com/user-attachments/assets/f1f803a6-b99a-416c-a085-38bafc2ef4e4"
/>
<img width="1429" alt="Screenshot 2025-05-30 at 13 43 27"
src="https://github.com/user-attachments/assets/cb1d37a4-8b79-4858-846e-3b1deb0a63cf"
/>
2025-05-30 13:17:17 -04:00
Steven Masley 9db114d17c feat: add filecache prometheus metrics (#18089)
Dynamic parameters has an in memory file cache. This adds prometheus
metrics to monitor said cache.
2025-05-30 11:54:54 -05:00
Danielle Maywood 562c4696de fix(coderd/database/dbmem): fill DisplayGroup field for InsertWorkspaceApp (#18136)
It appears `dbmem` was missed in the new app groups feature
https://github.com/coder/coder/pull/17977.
2025-05-30 17:52:31 +01:00
Cian Johnston 9afdd33e64 fix(coderd/database/dbmem): apply rlock/runlock on GetTelemetryItems (#18133)
Fixes https://github.com/coder/coder/issues/18132
2025-05-30 16:39:32 +01:00
Steven Masley 216fe441cf chore: align CSRF settings with deployment config (#18116) 2025-05-30 09:30:49 -05:00
Marcin Tojek 1fba4195fb docs: add backend contributing guide (#18077) 2025-05-30 16:24:46 +02:00
Steven Masley 4597142467 feat: set default workspace proxy based on latency (#17812)
Auto select the proxy on first load (stored in local storage, so per
browser), then defer to user selection. The auto selected proxy will not
update again once set.
2025-05-30 09:24:16 -05:00
dependabot[bot] 80b7947a0e chore: bump next from 14.2.26 to 15.2.4 in /offlinedocs (#18131)
Bumps [next](https://github.com/vercel/next.js) from 14.2.26 to 15.2.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vercel/next.js/releases">next's
releases</a>.</em></p>
<blockquote>
<h2>v15.1.8</h2>
<blockquote>
<p>[!NOTE]<br />
This release is backporting bug fixes. It does <strong>not</strong>
include all pending features/changes on canary.</p>
</blockquote>
<h3>Core Changes</h3>
<ul>
<li>fix: Merge link header from middleware with the ones from React (<a
href="https://redirect.github.com/vercel/next.js/issues/73431">#73431</a>)</li>
<li>fix(edge): run after() if request is cancelled mid-streaming (<a
href="https://redirect.github.com/vercel/next.js/issues/76013">#76013</a>)</li>
<li>gate segmentCache branch in base-server (<a
href="https://redirect.github.com/vercel/next.js/issues/79505">#79505</a>)</li>
</ul>
<h3>Credits</h3>
<p>Huge thanks to <a
href="https://github.com/amannn"><code>@​amannn</code></a>, <a
href="https://github.com/lubieowoce"><code>@​lubieowoce</code></a>, and
<a href="https://github.com/ztanner"><code>@​ztanner</code></a> for
helping!</p>
<h2>v14.2.29</h2>
<blockquote>
<p>[!NOTE]<br />
This release is backporting bug fixes. It does <strong>not</strong>
include all pending features/changes on canary.</p>
</blockquote>
<h3>Core Changes</h3>
<ul>
<li>Only share incremental cache for edge in next start (<a
href="https://redirect.github.com/vercel/next.js/issues/79389">#79389</a>)</li>
</ul>
<h3>Credits</h3>
<p>Huge thanks to <a
href="https://github.com/ijjk"><code>@​ijjk</code></a> for helping!</p>
<h2>v14.2.28</h2>
<blockquote>
<p>[!NOTE]<br />
This release is backporting bug fixes. It does <strong>not</strong>
include all pending features/changes on canary.</p>
</blockquote>
<h3>Core Changes</h3>
<ul>
<li>fix: node.js module import error when using middleware (<a
href="https://redirect.github.com/vercel/next.js/issues/77945">#77945</a>)</li>
</ul>
<h3>Credits</h3>
<p>Huge thanks to <a
href="https://github.com/ztanner"><code>@​ztanner</code></a> for
helping!</p>
<h2>v14.2.27</h2>
<blockquote>
<p>[!NOTE]<br />
This release is backporting bug fixes. It does <strong>not</strong>
include all pending features/changes on canary.</p>
</blockquote>
<h3>Core Changes</h3>
<ul>
<li>fix dynamic route interception not working when deployed with
middleware (<a
href="https://redirect.github.com/vercel/next.js/issues/64923">#64923</a>)</li>
</ul>
<h3>Credits</h3>
<p>Huge thanks to <a
href="https://github.com/ztanner"><code>@​ztanner</code></a> for
helping!</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/vercel/next.js/commit/804aa35c71cc65cf3ddc29cdadcd29f06b368285"><code>804aa35</code></a>
v15.2.4</li>
<li><a
href="https://github.com/vercel/next.js/commit/ecb72ee9ead86aaa1e3992b427bfb43b046aa08d"><code>ecb72ee</code></a>
Match subrequest handling for edge and node (<a
href="https://redirect.github.com/vercel/next.js/issues/77474">#77474</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/25f810b596cdb6875d1f068ae8d203f1a5df7a46"><code>25f810b</code></a>
exclude images and static media from dev origin check (<a
href="https://redirect.github.com/vercel/next.js/issues/77417">#77417</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/d9bcb833dd2a8dd5c13f30775d688f7015cd75b1"><code>d9bcb83</code></a>
ensure /__next middleware URLs are included in the origin check (<a
href="https://redirect.github.com/vercel/next.js/issues/77416">#77416</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/cfeaa86fa718f1fecce9fb5f5fad3c310117fc53"><code>cfeaa86</code></a>
remove direct ip/port bypass in dev origin check (<a
href="https://redirect.github.com/vercel/next.js/issues/77414">#77414</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/f84730266087817b39c9b87c42ccf1c3bb7de0c5"><code>f847302</code></a>
switch development origin verification to be opt-in rather than opt-out
(<a
href="https://redirect.github.com/vercel/next.js/issues/77395">#77395</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/535e26d3c69de49df8bd17618a424cbe65ec897b"><code>535e26d</code></a>
v15.2.3</li>
<li><a
href="https://github.com/vercel/next.js/commit/2fcae1d7e3079874ff633b5b8311adb584c80ce6"><code>2fcae1d</code></a>
Update default allowed origins list (<a
href="https://redirect.github.com/vercel/next.js/issues/77212">#77212</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/adf5462b5f269963395b0a2ef12a1b66e8cadabc"><code>adf5462</code></a>
unify allowed origin detection handling (<a
href="https://redirect.github.com/vercel/next.js/issues/77053">#77053</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/5e59da1f5c8b9e8b3a759048bd371efcd77813ae"><code>5e59da1</code></a>
Add dev warning for cross-origin and stabilize allowedDevOrigins (<a
href="https://redirect.github.com/vercel/next.js/issues/77044">#77044</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/vercel/next.js/compare/v14.2.26...v15.2.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=next&package-manager=npm_and_yarn&previous-version=14.2.26&new-version=15.2.4)](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)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/coder/coder/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-30 14:07:38 +00:00
Bruno Quaresma be8474a8a0 feat: add textarea auto size (#18127)
Demo:

https://github.com/user-attachments/assets/aa179ac2-6f2f-43a6-8d74-8a936eea5a29
2025-05-30 11:00:53 -03:00
Bruno Quaresma f974add373 chore: rollback PR #18025 (#18118)
Rollback https://github.com/coder/coder/pull/18025
2025-05-30 11:00:26 -03:00
Bruno Quaresma a19539ce83 refactor: improve app status and statuses (#18121)
#### 1. Gray out status icons when the workspace is not running. 

**Before:**
<img width="1624" alt="Screenshot 2025-05-29 at 21 33 45"
src="https://github.com/user-attachments/assets/7916e707-e5ae-4226-8234-39c42f0ec8c4"
/>

**After:**
<img width="1624" alt="Screenshot 2025-05-29 at 21 35 07"
src="https://github.com/user-attachments/assets/52fd8553-414d-4c49-a44e-7a530f0d522d"
/>

#### 2. Truncate long messages

**Before**
<img width="1213" alt="Screenshot 2025-05-29 at 21 28 50"
src="https://github.com/user-attachments/assets/b76b7a4d-7ef0-41a0-822c-c32c98f997fc"
/>

**After**
<img width="1206" alt="Screenshot 2025-05-29 at 21 25 42"
src="https://github.com/user-attachments/assets/fb3f3916-a4a4-4697-b7d1-0b4873b6e528"
/>

#### 3. Disable "show more" button if there is one single status
2025-05-29 22:39:18 -03:00
Ethan e5c254888a fix(cli): handle nil unwrap errors when formatting (#18099)
Discovered an unhelpful error when running a CLI command without internet (I didn't know I didn't have internet!):

```
$ coder ls
Encountered an error running "coder list", see "coder list --help" for more information
error: <nil>
```

The source of this was that calling `Unwrap()` on `net.DNSError` can return nil, causing the whole error trace to get replaced by it. Instead, we'll just treat a nil `Unwrap()` return value as if there was nothing to unwrap.

The result is:
```
$ coder ls
Encountered an error running "coder list", see "coder list --help" for more information
error: query workspaces: Get "https://dev.coder.com/api/v2/workspaces?q=owner%3Ame": dial tcp: lookup dev.coder.com: no such host
```
2025-05-30 11:31:51 +10:00
Atif Ali 25e2146200 docs: reorganize JetBrains docs (#17995)
This pull request introduces significant updates to documentation and
references related to JetBrains IDEs, including rebranding,
restructuring, and adding new guides.

[Preview](https://coder.com/docs/@atif%2Fjetbrains-reorganization)

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-05-29 17:56:44 -07:00
Kyle Carberry bedeb4710b fix: improve task reporting tool description (#18119)
In my (albeit subjective) testing, this dramatically improved the
reporting ability - both in frequency and accuracy.
2025-05-30 00:00:12 +00:00
Steven Masley 4e0acdce1e chore: implement dogfood template to select region based on user group (#18115)
Co-authored-by: Atif Ali <atif@coder.com>
2025-05-29 15:02:16 -05:00
ケイラ 232c72ffd6 feat: group apps together on workspace page (#18018) 2025-05-29 12:01:51 -06:00
Edward Angert e906ce2b65 docs: separate coder desktop sections into install and use pages (#18068)
[preview](https://coder.com/docs/@coder-desktop-section/user-guides/desktop)

we should consider the "Connect" naming in future PRs

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-05-29 17:42:14 +00:00
Bruno Quaresma e0718a600e feat: group external apps on task page (#18107)
https://github.com/user-attachments/assets/ac03f9ad-9b89-400b-aabe-fade2997319b
2025-05-29 14:10:27 -03:00
Bruno Quaresma a85351f2bf fix: fix usage of wrong attribute (#18109)
Caused by https://github.com/coder/coder/pull/18104
2025-05-29 14:02:34 -03:00
Atif Ali b80e5d7cc5 chore(dogfood): update jetbrains toolbox module to use multi-select (#18011) 2025-05-29 21:57:05 +05:00
Bruno Quaresma 458780d059 fix: handle empty display_name on templates (#18106) 2025-05-29 13:13:15 -03:00
Bruno Quaresma d06eff2b2f feat: add view workspace button in task page (#18105)
<img width="1613" alt="Screenshot 2025-05-29 at 12 57 41"
src="https://github.com/user-attachments/assets/7ae199c2-7e36-47d2-84cc-d0ae820ff372"
/>
2025-05-29 13:12:58 -03:00
Bruno Quaresma d779126ee3 chore: rollback PR #18081 (#18104)
Rollback https://github.com/coder/coder/pull/18081
2025-05-29 13:12:13 -03:00
Hugo Dutka 345001ffd1 docs: update the GitHub Auth section (#17769)
Addresses https://github.com/coder/coder/issues/17752


[preview](https://coder.com/docs/@hugodutka%2Fgithub%2Dauth%2Dorg%2Ddocs/admin/users/github-auth)

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
Co-authored-by: Edward Angert <EdwardAngert@users.noreply.github.com>
2025-05-29 15:38:45 +00:00
Jaayden Halko 177bda3187 fix: autofill with workspace build parameters from the latest build (#18091)
Set the form parameters using autofill parameters based on the workspace
build parameters for the latest build

---------

Co-authored-by: Steven Masley <stevenmasley@gmail.com>
2025-05-29 11:24:55 -04:00
Steven Masley e4648b6fc1 feat: allow iframing urls on the same domain as the deployment (#18102)
Used for AI tasks. We should eventually add regions to this csp header.
2025-05-29 10:07:57 -05:00
Bruno Quaresma 201b0b10e8 chore: simplify AgentRow interface (#18087) 2025-05-29 11:45:50 -03:00
Steven Masley 8387dd27ab chore: add form_type parameter argument to db (#17920)
`form_type` is a new parameter field in the terraform provider. Bring
that field into coder/coder.

Validation for `multi-select` has also been added.
2025-05-29 08:55:19 -05:00
Cian Johnston 776c144128 fix(coderd): ensure agent timings are non-zero on insert (#18065)
Relates to https://github.com/coder/coder/issues/15432

Ensures that no workspace build timings with zero values for started_at or ended_at are inserted into the DB or returned from the API.
2025-05-29 13:36:06 +01:00
Bruno Quaresma 5f34d01906 refactor: replace MUI components and refactor styles (#18082)
**Before:**
<img width="1196" alt="Screenshot 2025-05-28 at 13 26 03"
src="https://github.com/user-attachments/assets/86c2830e-6777-441c-aedc-64fef472e369"
/>


**After:**
<img width="1197" alt="Screenshot 2025-05-28 at 13 24 19"
src="https://github.com/user-attachments/assets/08e2dc4e-424a-43d8-a343-0ac8e03c9948"
/>
2025-05-29 08:27:52 -03:00
Danielle Maywood b712d0b23f feat(coderd/agentapi): implement sub agent api (#17823)
Closes https://github.com/coder/internal/issues/619

Implement the `coderd` side of the AgentAPI for the upcoming
dev-container agents work.

`agent/agenttest/client.go` is left unimplemented for a future PR
working to implement the agent side of this feature.
2025-05-29 12:15:47 +01:00
Danny Kopping bc83de2a72 feat: add prebuilt workspaces telemetry (#18084)
Adds telemetry for a _global_ account of prebuilt workspaces created,
failed to build, and claimed.

Partitioning this data by template/preset tuple is not currently in
scope.

---------

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
2025-05-29 13:13:44 +02:00
Bruno Quaresma 69c90064a8 fix: rename build.workspace_owner_name to build.workspace_owner_username (#18078)
I forgot to update the the build logs to use username instead of name.

Introduced on: https://github.com/coder/coder/pull/18025
2025-05-29 06:52:25 -03:00
Hugo Dutka bbf90611b3 fix: use owner username instead of owner name in tasks list links (#18098)
Fixes a bug where if you click on a task in the tasks list, you see:
![image
(4)](https://github.com/user-attachments/assets/db392425-3ec8-441c-9f19-6860b85374a5)
2025-05-29 09:31:41 +00:00
Ethan da02375f00 fix: handle workspace.agent and agent.workspace.owner in coder ssh (#18093)
Closes #18088.

The linked issue is misleading -- `coder config-ssh` continues to support the `coder.` prefix. The reason the command
`ssh coder.workspace.agent` fails is because `coder ssh workspace.agent` wasn't supported. This PR fixes that.

We know we used to support `workspace.agent`, as this is what we recommend in the Web UI:
![image](https://github.com/user-attachments/assets/702bbbc7-c586-4947-98a6-4508a481280b)

This PR also adds support for `coder ssh agent.workspace.owner`, such that after running `coder config-ssh`, a command like
```
ssh agent.workspace.owner.coder
```
works, even without Coder Connect running. This is done for parity with an existing workflow that uses `ssh workspace.coder`, which either uses Coder Connect if available, or the CLI.
2025-05-29 17:26:27 +10:00
Atif Ali 5cfcb73761 chore: add type to bug template (#18094) 2025-05-29 09:41:11 +05:00
Bruno Quaresma 2ec7404197 chore: make owner_name and owner_username consistent (#18081)
We've been using owner_name inconsistently as username. So this PR fixes
it by making the attribute naming more consistent.
2025-05-28 17:25:32 -03:00
Steven Masley 3a2e36237d docs: add error form_type for dynamic parameters (#18075) 2025-05-28 14:33:28 -05:00
Bruno Quaresma bc3b8d5a51 feat: add task page (#18076)
**Demo:**


![image](https://github.com/user-attachments/assets/ca59ba92-a73a-4613-ae41-910f3f0455d2)
2025-05-28 15:19:05 -03:00
Yevhenii Shcherbina b330c0803c fix: reimplement reporting of preset-hard-limited metric (#18055)
Addresses concerns raised in https://github.com/coder/coder/pull/18045
2025-05-28 14:18:32 -04:00
Atif Ali 6a2f22abf7 chore: add JetBrains icon (#18073) 2025-05-28 20:33:12 +05:00
Steven Masley ca8660cea6 chore: keep previous workspace build parameters for dynamic params (#18059)
The existing code persists all static parameters and their values. Using
the previous build as the source if no new inputs are found.

Dynamic params do not have a state of the parameters saved to disk. So
instead, all previous values are persisted always, and new inputs
override.
2025-05-28 10:00:39 -05:00
Danielle Maywood 6e255c72c6 chore(coderd/database): enforce agent name unique within workspace build (#18052)
Adds a database trigger that runs on insert and update of the
`workspace_agents` table. The trigger ensures that the agent name is
unique within the context of the workspace build it is being inserted
into.
2025-05-28 14:21:17 +01:00
Yevhenii Shcherbina 110102a60a fix: optimize queue position sql query (#17974)
Use only `online provisioner daemons` for
`GetProvisionerJobsByIDsWithQueuePosition` query. It should improve
performance of the query.
2025-05-28 08:21:16 -04:00
Ethan 2bcbd9bdbd fix(site): remove trailing comment from cursor.svg (#18072)
The trailing comment was preventing the SVG from rendering on Coder
Desktop macOS, with the SVG loader we use. I've moved it to a place
where it's apparently OK? Couldn't tell you why.
https://validator.w3.org/ had no complaints.

I tested this by hardcoding the icon to that served by a build of coder
with this new svg.


![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/jI7h94jB23BidWsYTSCk/4c94ae5f-d0e2-496e-90eb-4968cf40d639.png)

The first icon is without the trailing comment, the second is with.
2025-05-28 09:17:38 +02:00
Jaayden Halko 2ded3b59e9 chore: remove beta badges (#18069) 2025-05-27 16:48:02 -04:00
Steven Masley b4531c4218 feat: make dynamic parameters respect owner in form (#18013)
Closes https://github.com/coder/coder/issues/18012

---------

Co-authored-by: Jaayden Halko <jaayden.halko@gmail.com>
2025-05-27 15:43:00 -05:00
Jaayden Halko 5b9c40481f feat: add form_type error (#18067)
Normally parameters had red text for error diagnostics. The goal here is
to make errors more obvious when the form_type is error meaning the
parameter could not be processed correctly.

<img width="543" alt="Screenshot 2025-05-27 at 18 35 50"
src="https://github.com/user-attachments/assets/2265553e-34a3-4526-8209-6253d541f784"
/>
2025-05-27 15:35:11 -04:00
ケイラ 9fc3329575 feat: persist app groups in the database (#17977) 2025-05-27 13:13:08 -06:00
Steven Masley 513a468a3a chore: disable logs sourced from dynamic params parsing (#18066)
Logs emitted by dynamic params did not have any additional scope or
context, and are not helpful in the current state. A future change can
capture these logs for display somewhere.

Does this by using latest `preview`
2025-05-27 17:39:44 +00:00
Mathias Fredriksson a18eb9d08f feat(site): allow recreating devcontainers and showing dirty status (#18049)
This change allows showing the devcontainer dirty status in the UI as
well as a recreate button to update the devcontainer.

Closes #16424
2025-05-27 19:42:24 +03:00
Jaayden Halko 23d14233bf chore: hide classic workspace checkbox when experiment is not enabled (#18061)
resolves coder/preview#137

This hides the `Use classic workspace creation form` checkbox on the
template settings page if the dynamic-parameters experiment is not
enabled

Add mention of "workspace parameters settings form" in the checkbox
description as this is also affected.
2025-05-27 12:02:54 -04:00
Zane 71a647b001 feat: support ConvertUserLoginType for another user in codersdk(#17784)
Added `ConvertUserLoginType(ctx, user, req)` method to support
converting the login type for a specified user.
2025-05-27 09:53:02 -05:00
Bruno Quaresma d63417b542 fix: update WorkspaceOwnerName to use user.name instead of user.username (#18025)
We have been using the user.username instead of user.name in wrong
places, making it very confusing for the UI.
2025-05-27 11:42:07 -03:00
Bruno Quaresma 9827c97f32 feat: add AI Tasks page (#18047)
**Preview:**

<img width="1624" alt="Screenshot 2025-05-26 at 21 25 04"
src="https://github.com/user-attachments/assets/2a51915d-2527-4467-bf99-1f2d876b953b"
/>
2025-05-27 11:34:07 -03:00
Cian Johnston ce134bc63a fix: handle invalid provisioning timings in ui (#18058)
Relates to https://github.com/coder/coder/issues/15432

* Adds a storybook entry for zero values in provisioner timings.
* Coerces a 'zero' start time to an 'instant'.
* Improves timing chart handling for large timeframes. Previously, this
would have caused the tab to run out of memory when encountering a
`time.Time{}`.
* Render 'instants' as 'invalid' in timing chart.
2025-05-27 15:10:57 +01:00
Susana Ferreira 565fad5951 chore: bump github.com/coder/terraform-provider-coder/v2 from 2.5.0 to 2.5.2 (#18054)
Bumps
[github.com/coder/terraform-provider-coder/v2](https://github.com/coder/terraform-provider-coder)
from 2.5.0 to 2.5.2.

Release:
https://github.com/coder/terraform-provider-coder/releases/tag/v2.5.2
2025-05-27 15:09:37 +01:00
Yevhenii Shcherbina e8c75eb1c3 fix: fix metric for hard-limited presets (#18045)
```
// Report a metric only if the preset uses the latest version of the template and the template is not deleted.
// This avoids conflicts between metrics from old and new template versions.
//
// NOTE: Multiple versions of a preset can exist with the same orgName, templateName, and presetName,
// because templates can have multiple versions — or deleted templates can share the same name.
//
// The safest approach is to report the metric only for the latest version of the preset.
// When a new template version is released, the metric for the new preset should overwrite
// the old value in Prometheus.
//
// However, there’s one edge case: if an admin creates a template, it becomes hard-limited,
// then deletes the template and never creates another with the same name,
// the old preset will continue to be reported as hard-limited —
// even though it’s deleted. This will persist until `coderd` is restarted.
```
2025-05-27 10:07:36 -04:00
Bruno Quaresma 5b90c69b90 chore: simplify workspace routing (#17981) 2025-05-27 11:05:47 -03:00
Edward Angert db806ae243 docs: move early access badge in dynamic parameters doc (#18009)
and md fix

this is basically a `hotfix`

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-05-27 15:17:49 +02:00
Susana Ferreira 8f44603d8a chore: update Terraform testdata by running generate.sh (#18044)
## Summary

This PR updates the terraform/testdata by running
`provisioner/terraform/testdata/generate.sh` script. These changes occur
from `terraform-provider-coder`
[v2.4.2](https://github.com/coder/terraform-provider-coder/releases/tag/v2.4.2)
and are associated to the introduction of a `api_key_scope` optional
field with a default value:
https://github.com/coder/terraform-provider-coder/pull/391

## Changes

* Run `provisioner/terraform/testdata/generate.sh` script.
* Update `resource_test.go` to include `api_key_scope`
2025-05-27 13:18:21 +01:00
Michael Suchacz 01d144c56e chore: update cursor icon to be an svg without binary data (#18051) 2025-05-27 14:15:33 +02:00
Spike Curtis 6c0bed0f53 chore: update to coder/quartz v0.2.0 (#18007)
Upgrade to coder/quartz v0.2.0 including fixing up a minor API breaking change.
2025-05-27 16:05:03 +04:00
Hugo Dutka 9ada1232f3 chore: make the $RUNNER_TEMP RAM disk bigger on Windows in CI (#18050) 2025-05-27 12:26:50 +02:00
Bruno Quaresma afaa20e166 chore: add proxy provider decorator for storybook (#18023) 2025-05-26 22:39:44 -03:00
dependabot[bot] f678f921db chore: bump undici from 6.21.1 to 6.21.2 in /site (#17856)
Bumps [undici](https://github.com/nodejs/undici) from 6.21.1 to 6.21.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/nodejs/undici/releases">undici's
releases</a>.</em></p>
<blockquote>
<h2>v6.21.2</h2>
<h2>What's Changed</h2>
<ul>
<li>fix(types): add missing DNS interceptor by <a
href="https://github.com/slagiewka"><code>@​slagiewka</code></a> in <a
href="https://redirect.github.com/nodejs/undici/pull/4024">nodejs/undici#4024</a></li>
<li>[v6.x] fix wpts on windows by <a
href="https://github.com/mcollina"><code>@​mcollina</code></a> in <a
href="https://redirect.github.com/nodejs/undici/pull/4093">nodejs/undici#4093</a></li>
<li>Removed clients with unrecoverable errors from the Pool <a
href="https://redirect.github.com/nodejs/undici/pull/4088">nodejs/undici#4088</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/slagiewka"><code>@​slagiewka</code></a>
made their first contribution in <a
href="https://redirect.github.com/nodejs/undici/pull/4024">nodejs/undici#4024</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/nodejs/undici/compare/v6.21.1...v6.21.2">https://github.com/nodejs/undici/compare/v6.21.1...v6.21.2</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/nodejs/undici/commit/b63d939953fe20cfd6718e8eed437da983ac7b12"><code>b63d939</code></a>
Bumped v6.21.2</li>
<li><a
href="https://github.com/nodejs/undici/commit/de1e4b8a39d102bb34155c3fdec3f18806b93d9c"><code>de1e4b8</code></a>
[v6.x] fix wpts on windows (<a
href="https://redirect.github.com/nodejs/undici/issues/4093">#4093</a>)</li>
<li><a
href="https://github.com/nodejs/undici/commit/4e07dda835ffb2ff7a1b1323dd94c61b8feaa3c5"><code>4e07dda</code></a>
test: fix windows wpt (<a
href="https://redirect.github.com/nodejs/undici/issues/4050">#4050</a>)</li>
<li><a
href="https://github.com/nodejs/undici/commit/133387138c9158d3b6e9493833986c34837035ad"><code>1333871</code></a>
Removed clients with unrecoverable errors from the Pool (<a
href="https://redirect.github.com/nodejs/undici/issues/4088">#4088</a>)</li>
<li><a
href="https://github.com/nodejs/undici/commit/a0e76c73a8ecb913beea7e2210e40d12b7c5cf69"><code>a0e76c7</code></a>
fix(types): add missing DNS interceptor (<a
href="https://redirect.github.com/nodejs/undici/issues/4024">#4024</a>)</li>
<li>See full diff in <a
href="https://github.com/nodejs/undici/compare/v6.21.1...v6.21.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=undici&package-manager=npm_and_yarn&previous-version=6.21.1&new-version=6.21.2)](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)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/coder/coder/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-26 19:41:27 +00:00
Susana Ferreira 6f6e73af03 feat: implement expiration policy logic for prebuilds (#17996)
## Summary 

This PR introduces support for expiration policies in prebuilds. The TTL
(time-to-live) is retrieved from the Terraform configuration
([terraform-provider-coder
PR](https://github.com/coder/terraform-provider-coder/pull/404)):
```
prebuilds = {
	  instances = 2
	  expiration_policy {
		  ttl = 86400
	  }
  }
```
**Note**: Since there is no need for precise TTL enforcement down to the
second, in this implementation expired prebuilds are handled in a single
reconciliation cycle: they are deleted, and new instances are created
only if needed to match the desired count.

## Changes

* The outcome of a reconciliation cycle is now expressed as a slice of
reconciliation actions, instead of a single aggregated action.
* Adjusted reconciliation logic to delete expired prebuilds and
guarantee that the number of desired instances is correct.
* Updated relevant data structures and methods to support expiration
policies parameters.
* Added documentation to `Prebuilt workspaces` page
* Update `terraform-provider-coder` to version 2.5.0:
https://github.com/coder/terraform-provider-coder/releases/tag/v2.5.0

Depends on: https://github.com/coder/terraform-provider-coder/pull/404
Fixes: https://github.com/coder/coder/issues/17916
2025-05-26 20:31:24 +01:00
Bruno Quaresma 589f18627e chore: update vite deps and simplify config (#18036) 2025-05-26 16:29:36 -03:00
Bruno Quaresma c18169a402 chore: remove ts-prune (#18037)
We are using knip
2025-05-26 16:17:52 -03:00
Bruno Quaresma aec64e0c73 chore: remove unused exports (#18038) 2025-05-26 16:17:21 -03:00
Bruno Quaresma f3311400d1 chore: upgrade tanstack/react-query to 5.77.0 (#18039) 2025-05-26 16:16:55 -03:00
Yevhenii Shcherbina 2a15aa8a6f feat: add hard-limited presets metric (#18008)
Closes https://github.com/coder/coder/issues/17988

Define `preset_hard_limited` metric which for every preset indicates
whether a given preset has reached the hard failure limit (1 for
hard-limited, 0 otherwise).

CLI example:
```
curl -X GET localhost:2118/metrics | grep preset_hard_limited
# HELP coderd_prebuilt_workspaces_preset_hard_limited Indicates whether a given preset has reached the hard failure limit (1 for hard-limited, 0 otherwise).
# TYPE coderd_prebuilt_workspaces_preset_hard_limited gauge
coderd_prebuilt_workspaces_preset_hard_limited{organization_name="coder",preset_name="GoLand: Large",template_name="Test7"} 1
coderd_prebuilt_workspaces_preset_hard_limited{organization_name="coder",preset_name="GoLand: Large",template_name="ValidTemplate"} 0
coderd_prebuilt_workspaces_preset_hard_limited{organization_name="coder",preset_name="IU: Medium",template_name="Test7"} 1
coderd_prebuilt_workspaces_preset_hard_limited{organization_name="coder",preset_name="IU: Medium",template_name="ValidTemplate"} 0
coderd_prebuilt_workspaces_preset_hard_limited{organization_name="coder",preset_name="WS: Small",template_name="Test7"} 1
```

NOTE:
```go
if !ps.Preset.Deleted && ps.Preset.UsingActiveVersion {
	c.metrics.trackHardLimitedStatus(ps.Preset.OrganizationName, ps.Preset.TemplateName, ps.Preset.Name, ps.IsHardLimited)
}
```

Only active template version is tracked. If admin creates new template
version - old value of metric (for previous template version) will be
overwritten with new value of metric (for active template version).
Because `template_version` is not part of metric:
```go
labels = []string{"template_name", "preset_name", "organization_name"}
```

Implementation is similar to implementation of
`MetricResourceReplacementsCount` metric

---------

Co-authored-by: Susana Ferreira <ssncferreira@gmail.com>
2025-05-26 11:39:44 -04:00
Mathias Fredriksson 0731304905 feat(agent/agentcontainers): recreate devcontainers concurrently (#18042)
This change introduces a refactor of the devcontainers recreation logic
which is now handled asynchronously rather than being request scoped.
The response was consequently changed from "No Content" to "Accepted" to
reflect this.

A new `Status` field was introduced to the devcontainer struct which
replaces `Running` (bool). This reflects that the devcontainer can now
be in various states (starting, running, stopped or errored).

The status field also protects against multiple concurrent recrations,
as long as they are initiated via the API.

Updates #16424
2025-05-26 18:30:52 +03:00
dependabot[bot] 60fd03dca6 chore: bump github.com/mark3labs/mcp-go from 0.29.0 to 0.30.0 (#18041)
Bumps [github.com/mark3labs/mcp-go](https://github.com/mark3labs/mcp-go)
from 0.29.0 to 0.30.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mark3labs/mcp-go/releases">github.com/mark3labs/mcp-go's
releases</a>.</em></p>
<blockquote>
<h2>Release v0.30.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Feat: Impl Server-Side Streamable HTTP transport by <a
href="https://github.com/leavez"><code>@​leavez</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/273">mark3labs/mcp-go#273</a></li>
<li>Support customize request header by <a
href="https://github.com/dugenkui03"><code>@​dugenkui03</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/315">mark3labs/mcp-go#315</a></li>
<li>docs: add regeneration instructions by <a
href="https://github.com/pmenglund"><code>@​pmenglund</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/309">mark3labs/mcp-go#309</a></li>
<li>docs(examples): correct use of <code>GetArguments</code> by <a
href="https://github.com/jamietanna"><code>@​jamietanna</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/316">mark3labs/mcp-go#316</a></li>
<li>fix: avoid painc caused by writing to closed channel by <a
href="https://github.com/cryo-zd"><code>@​cryo-zd</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/318">mark3labs/mcp-go#318</a></li>
<li>docs: use helper functions and return error as result by <a
href="https://github.com/pottekkat"><code>@​pottekkat</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/322">mark3labs/mcp-go#322</a></li>
<li>Update README.md by <a
href="https://github.com/dugenkui03"><code>@​dugenkui03</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/323">mark3labs/mcp-go#323</a></li>
<li>Feat(prompts): add DeletePrompts method to MCPServer by <a
href="https://github.com/God-Jay"><code>@​God-Jay</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/320">mark3labs/mcp-go#320</a></li>
<li>Scaffold documentation site by <a
href="https://github.com/ezynda3"><code>@​ezynda3</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/324">mark3labs/mcp-go#324</a></li>
<li>Docs by <a
href="https://github.com/ezynda3"><code>@​ezynda3</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/325">mark3labs/mcp-go#325</a></li>
<li>feat: Implement OAuth in the client by <a
href="https://github.com/ezynda3"><code>@​ezynda3</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/296">mark3labs/mcp-go#296</a></li>
<li>feat(server): persist client info in sessions by <a
href="https://github.com/ShawkyZ"><code>@​ShawkyZ</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/313">mark3labs/mcp-go#313</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/pmenglund"><code>@​pmenglund</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/309">mark3labs/mcp-go#309</a></li>
<li><a
href="https://github.com/jamietanna"><code>@​jamietanna</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/316">mark3labs/mcp-go#316</a></li>
<li><a href="https://github.com/God-Jay"><code>@​God-Jay</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/320">mark3labs/mcp-go#320</a></li>
<li><a href="https://github.com/ShawkyZ"><code>@​ShawkyZ</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/313">mark3labs/mcp-go#313</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.29.0...v0.30.0">https://github.com/mark3labs/mcp-go/compare/v0.29.0...v0.30.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/9e6ccca8025f3b63533540ac91fd06cc3dc10401"><code>9e6ccca</code></a>
Formatting</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/2c8bf2bb750186c656161107b2e5e1198aa53539"><code>2c8bf2b</code></a>
feat(server): persist client info in sessions (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/313">#313</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/0c3f53507f746dd02434d8d159a7f711240962e8"><code>0c3f535</code></a>
feat: Implement OAuth in the client (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/296">#296</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/617c67623617e91f17263346d267cda064524102"><code>617c676</code></a>
update</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/5a1d3fe0ed0e26e71ff6ecdce9b5b156dec79b88"><code>5a1d3fe</code></a>
add basePath</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/76f698504f02b9013aafb48e13ec816af55c185c"><code>76f6985</code></a>
add baseUrl</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/f1015695362a5842a1bd9e4a86770f2b0d59ef56"><code>f101569</code></a>
Docs (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/325">#325</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/563a9c74e55f31ad060f7cf8d5cec778e1c37c8a"><code>563a9c7</code></a>
Scaffold documentation site (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/324">#324</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/820b7a68b8c98447a041654fbe2e0910fad3ec6e"><code>820b7a6</code></a>
Feat(prompts): add DeletePrompts method to MCPServer (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/320">#320</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/3cdeb8919f3140319b743f39be43666208008d17"><code>3cdeb89</code></a>
Update README.md (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/323">#323</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/mark3labs/mcp-go/compare/v0.29.0...v0.30.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/mark3labs/mcp-go&package-manager=go_modules&previous-version=0.29.0&new-version=0.30.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>
2025-05-26 11:45:32 +00:00
dependabot[bot] d01406fa7e chore: bump github.com/coder/terraform-provider-coder/v2 from 2.4.2 to 2.5.0 (#18040)
Bumps
[github.com/coder/terraform-provider-coder/v2](https://github.com/coder/terraform-provider-coder)
from 2.4.2 to 2.5.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/coder/terraform-provider-coder/releases">github.com/coder/terraform-provider-coder/v2's
releases</a>.</em></p>
<blockquote>
<h2>v2.5.0</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: allow dropdown form_type for boolean types by <a
href="https://github.com/Emyrk"><code>@​Emyrk</code></a> in <a
href="https://redirect.github.com/coder/terraform-provider-coder/pull/397">coder/terraform-provider-coder#397</a></li>
<li>build(deps): Bump github.com/hashicorp/terraform-plugin-sdk/v2 from
2.36.1 to 2.37.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/coder/terraform-provider-coder/pull/400">coder/terraform-provider-coder#400</a></li>
<li>fix: map_structure of form_type to match argument name by <a
href="https://github.com/Emyrk"><code>@​Emyrk</code></a> in <a
href="https://redirect.github.com/coder/terraform-provider-coder/pull/401">coder/terraform-provider-coder#401</a></li>
<li>docs: update README note for local provider testing with correct
module path by <a
href="https://github.com/ssncferreira"><code>@​ssncferreira</code></a>
in <a
href="https://redirect.github.com/coder/terraform-provider-coder/pull/403">coder/terraform-provider-coder#403</a></li>
<li>feat: add <code>group</code> attribute to <code>coder_app</code>
resource by <a
href="https://github.com/aslilac"><code>@​aslilac</code></a> in <a
href="https://redirect.github.com/coder/terraform-provider-coder/pull/402">coder/terraform-provider-coder#402</a></li>
<li>feat: add expiration_policy parameter to prebuild resource by <a
href="https://github.com/ssncferreira"><code>@​ssncferreira</code></a>
in <a
href="https://redirect.github.com/coder/terraform-provider-coder/pull/404">coder/terraform-provider-coder#404</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/ssncferreira"><code>@​ssncferreira</code></a>
made their first contribution in <a
href="https://redirect.github.com/coder/terraform-provider-coder/pull/403">coder/terraform-provider-coder#403</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/coder/terraform-provider-coder/compare/v2.4.2...v2.5.0">https://github.com/coder/terraform-provider-coder/compare/v2.4.2...v2.5.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/coder/terraform-provider-coder/commit/28dae7fbc263efcaaa33f5ec448004fa47109858"><code>28dae7f</code></a>
feat: add expiration_policy parameter to prebuild resource (<a
href="https://redirect.github.com/coder/terraform-provider-coder/issues/404">#404</a>)</li>
<li><a
href="https://github.com/coder/terraform-provider-coder/commit/74899537ddc92f178bb9129645649889f8e0af32"><code>7489953</code></a>
feat: add <code>group</code> attribute to <code>coder_app</code>
resource (<a
href="https://redirect.github.com/coder/terraform-provider-coder/issues/402">#402</a>)</li>
<li><a
href="https://github.com/coder/terraform-provider-coder/commit/0c7fd6a3950b2195043df792087d6a33b4e14369"><code>0c7fd6a</code></a>
docs: update README note for local provider testing with correct module
path ...</li>
<li><a
href="https://github.com/coder/terraform-provider-coder/commit/a4f40659a9be991eaaa6d833781fbdb942c2e308"><code>a4f4065</code></a>
fix: map_structure of form_type to match argument name (<a
href="https://redirect.github.com/coder/terraform-provider-coder/issues/401">#401</a>)</li>
<li><a
href="https://github.com/coder/terraform-provider-coder/commit/77de38e09cca9ca228b63bb53f32ba0ae75a1f2d"><code>77de38e</code></a>
build(deps): Bump github.com/hashicorp/terraform-plugin-sdk/v2 (<a
href="https://redirect.github.com/coder/terraform-provider-coder/issues/400">#400</a>)</li>
<li><a
href="https://github.com/coder/terraform-provider-coder/commit/ace4462675ffbab17e098dff330ce50ece20b7fe"><code>ace4462</code></a>
fix: allow dropdown form_type for boolean types (<a
href="https://redirect.github.com/coder/terraform-provider-coder/issues/397">#397</a>)</li>
<li>See full diff in <a
href="https://github.com/coder/terraform-provider-coder/compare/v2.4.2...v2.5.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/coder/terraform-provider-coder/v2&package-manager=go_modules&previous-version=2.4.2&new-version=2.5.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>
2025-05-26 11:41:54 +00:00
Bruno Quaresma 5cdda2ea7d chore: replace date-fns by dayjs (#18022)
This change replaces date-fns with dayjs throughout the codebase for
more consistent date/time handling and to reduce bundle size. It also
tries to make the formatting and usage consistent.

**Why dayjs over date-fns?**
Just because we were using dayjs more broadly. Its formatting
capabilities, were also easier to extend.
2025-05-25 00:32:36 -03:00
dependabot[bot] a605c09d2b ci: bump the github-actions group with 2 updates (#18035)
Bumps the github-actions group with 2 updates:
[chromaui/action](https://github.com/chromaui/action) and
[tj-actions/changed-files](https://github.com/tj-actions/changed-files).

Updates `chromaui/action` from 11.29.0 to 12.0.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/chromaui/action/commit/d7afd50124cf4f337bcd943e7f45cfa85a5e4476"><code>d7afd50</code></a>
v12.0.0</li>
<li>See full diff in <a
href="https://github.com/chromaui/action/compare/1cfa065cbdab28f6ca3afaeb3d761383076a35aa...d7afd50124cf4f337bcd943e7f45cfa85a5e4476">compare
view</a></li>
</ul>
</details>
<br />

Updates `tj-actions/changed-files` from
480f49412651059a414a6a5c96887abb1877de8a to
3981e4f74104e7a4c67a835e1e5dd5d9eb0f0a57
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tj-actions/changed-files/blob/main/HISTORY.md">tj-actions/changed-files's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.4...v46.0.5">46.0.5</a>
- (2025-04-09)</h1>
<h2><!-- raw HTML omitted -->⚙️ Miscellaneous Tasks</h2>
<ul>
<li><strong>deps:</strong> Bump yaml from 2.7.0 to 2.7.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2520">#2520</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/ed68ef82c095e0d48ec87eccea555d944a631a4c">ed68ef8</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump typescript from 5.8.2 to 5.8.3 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2516">#2516</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/a7bc14b808f23d3b467a4079c69a81f1a4500fd5">a7bc14b</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump <code>@​types/node</code> from
22.13.11 to 22.14.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2517">#2517</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/3d751f6b6d84071a17e1b9cf4ed79a80a27dd0ab">3d751f6</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump eslint-plugin-prettier from 5.2.3 to
5.2.6 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2519">#2519</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/e2fda4ec3cb0bc2a353843cae823430b3124db8f">e2fda4e</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump ts-jest from 29.2.6 to 29.3.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2518">#2518</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/0bed1b1132ec4879a39a2d624cf82a00d0bcfa48">0bed1b1</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump github/codeql-action from 3.28.12 to
3.28.15 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2530">#2530</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/68024587dc36f49685c96d59d3f1081830f968bb">6802458</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump tj-actions/branch-names from 8.0.1 to
8.1.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2521">#2521</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/cf2e39e86bf842d1f9bc5bca56c0a6b207cca792">cf2e39e</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump tj-actions/verify-changed-files from
20.0.1 to 20.0.4 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2523">#2523</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/6abeaa506a419f85fa9e681260b443adbeebb3d4">6abeaa5</a>)
- (dependabot[bot])</li>
</ul>
<h2><!-- raw HTML omitted -->⬆️ Upgrades</h2>
<ul>
<li>Upgraded to v46.0.4 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2511">#2511</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted --> (<a
href="https://github.com/tj-actions/changed-files/commit/6f67ee9ac810f0192ea7b3d2086406f97847bcf9">6f67ee9</a>)
- (github-actions[bot])</p>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.3...v46.0.4">46.0.4</a>
- (2025-04-03)</h1>
<h2><!-- raw HTML omitted -->🐛 Bug Fixes</h2>
<ul>
<li>Bug modified_keys and changed_key outputs not set when no changes
detected (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2509">#2509</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/6cb76d07bee4c9772c6882c06c37837bf82a04d3">6cb76d0</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->📚 Documentation</h2>
<ul>
<li>Update readme (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2508">#2508</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/b74df86ccb65173a8e33ba5492ac1a2ca6b216fd">b74df86</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->⬆️ Upgrades</h2>
<ul>
<li>Upgraded to v46.0.3 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2506">#2506</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted -->
Co-authored-by: Tonye Jack <a
href="mailto:jtonye@ymail.com">jtonye@ymail.com</a> (<a
href="https://github.com/tj-actions/changed-files/commit/27ae6b33eaed7bf87272fdeb9f1c54f9facc9d99">27ae6b3</a>)
- (github-actions[bot])</p>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.2...v46.0.3">46.0.3</a>
- (2025-03-23)</h1>
<h2><!-- raw HTML omitted -->🔄 Update</h2>
<ul>
<li>Updated README.md (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2501">#2501</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted --> (<a
href="https://github.com/tj-actions/changed-files/commit/41e0de576a0f2b64d9f06f2773f539109e55a70a">41e0de5</a>)
- (github-actions[bot])</p>
<ul>
<li>Updated README.md (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2499">#2499</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted --> (<a
href="https://github.com/tj-actions/changed-files/commit/945787811a795cd840a1157ac590dd7827a05c8e">9457878</a>)
- (github-actions[bot])</p>
<h2><!-- raw HTML omitted -->📚 Documentation</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tj-actions/changed-files/commit/3981e4f74104e7a4c67a835e1e5dd5d9eb0f0a57"><code>3981e4f</code></a>
chore(deps-dev): bump <code>@​types/node</code> from 22.15.17 to
22.15.21 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2566">#2566</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/403a8a6fd188648f8a5adab2047d8eab5c0a4b34"><code>403a8a6</code></a>
chore(deps-dev): bump ts-jest from 29.3.2 to 29.3.4 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2563">#2563</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/5c5e8c9b886c1ff1c08a9df23b1ee6e0c0d44001"><code>5c5e8c9</code></a>
chore(deps): bump yaml from 2.7.1 to 2.8.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2561">#2561</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/d869acea438612407cf27745d747734afb0140db"><code>d869ace</code></a>
chore(deps-dev): bump <code>@​types/lodash</code> from 4.17.16 to
4.17.17 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2565">#2565</a>)</li>
<li>See full diff in <a
href="https://github.com/tj-actions/changed-files/compare/480f49412651059a414a6a5c96887abb1877de8a...3981e4f74104e7a4c67a835e1e5dd5d9eb0f0a57">compare
view</a></li>
</ul>
</details>
<br />

<details>
<summary>Most Recent Ignore Conditions Applied to This Pull
Request</summary>

| Dependency Name | Ignore Conditions |
| --- | --- |
| chromaui/action | [>= 11.a, < 12] |
</details>


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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-24 22:25:19 +00:00
dependabot[bot] 62a5c4c3d7 chore: bump github.com/mark3labs/mcp-go from 0.28.0 to 0.29.0 (#18031)
Bumps [github.com/mark3labs/mcp-go](https://github.com/mark3labs/mcp-go)
from 0.28.0 to 0.29.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mark3labs/mcp-go/releases">github.com/mark3labs/mcp-go's
releases</a>.</em></p>
<blockquote>
<h2>Release v0.29.0</h2>
<h2>What's Changed</h2>
<ul>
<li>refactor: make CallToolRequest.Arguments more flexible (Breaking
Change) by <a
href="https://github.com/ezynda3"><code>@​ezynda3</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/287">mark3labs/mcp-go#287</a></li>
<li>Drop unused fields from server.sseSession by <a
href="https://github.com/ggoodman"><code>@​ggoodman</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/303">mark3labs/mcp-go#303</a></li>
<li>chore: remove unused variables and type arguments by <a
href="https://github.com/pottekkat"><code>@​pottekkat</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/302">mark3labs/mcp-go#302</a></li>
<li>chore(Srv/stdio): duplicated setting of ErrorLogger by <a
href="https://github.com/cryo-zd"><code>@​cryo-zd</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/306">mark3labs/mcp-go#306</a></li>
<li>fix: handle the situation where the channel is closed by <a
href="https://github.com/button-chen"><code>@​button-chen</code></a> in
<a
href="https://redirect.github.com/mark3labs/mcp-go/pull/304">mark3labs/mcp-go#304</a></li>
</ul>
<h2>Breaking Changes</h2>
<p>In <code>v0.29.0</code>, MCP-Go introduces breaking changes to tool
request handling. The main change is that
<code>request.Params.Arguments</code> is no longer directly accessible
as a map. Instead, you must use the new <code>GetArguments()</code>
method to retrieve arguments as a map. For type-safe argument access,
new helper methods like <code>RequireString()</code>,
<code>RequireFloat()</code>, and <code>RequireBool()</code> have been
added. To migrate:</p>
<ol>
<li>Replace direct access to
<code>request.Params.Arguments[&quot;key&quot;]</code> with
<code>request.GetArguments()[&quot;key&quot;]</code></li>
<li>For better type safety, use the new helper methods:
<code>request.RequireString(&quot;key&quot;)</code>,
<code>request.RequireFloat(&quot;key&quot;)</code>, etc.</li>
<li>For complex argument structures, use the new
<code>BindArguments()</code> method with a struct, or try the new typed
tool handlers with <code>mcp.NewTypedToolHandler()</code> as shown in
the new <code>examples/typed_tools</code> example.</li>
</ol>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/ggoodman"><code>@​ggoodman</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/303">mark3labs/mcp-go#303</a></li>
<li><a
href="https://github.com/button-chen"><code>@​button-chen</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/304">mark3labs/mcp-go#304</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.28.0...v0.29.0">https://github.com/mark3labs/mcp-go/compare/v0.28.0...v0.29.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/99720bb4c4513ba1d2443b4e5045b7763e0b7142"><code>99720bb</code></a>
fix: handle the situation where the channel is closed (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/304">#304</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/420d52199bb3557fe4bd0f5b5aa07c3e3721ae7b"><code>420d521</code></a>
chore(Srv/stdio): duplicated setting of ErrorLogger (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/306">#306</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/eaa6f29a3b0776e17c7cdc455eeccc9be72b473a"><code>eaa6f29</code></a>
chore: remove unused variables and type arguments (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/302">#302</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/65010c4c5c167e8fa6ca1e4fd242de04027567ce"><code>65010c4</code></a>
chore: drop unused fields from sseSession (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/303">#303</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/28c9cc310fed16014107a4e4c970b1d440066b4a"><code>28c9cc3</code></a>
refactor: make CallToolRequest.Arguments more flexible (Breaking Change)
(<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/287">#287</a>)</li>
<li>See full diff in <a
href="https://github.com/mark3labs/mcp-go/compare/v0.28.0...v0.29.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/mark3labs/mcp-go&package-manager=go_modules&previous-version=0.28.0&new-version=0.29.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>
2025-05-24 22:23:15 +00:00
Atif Ali 5827219812 chore: update module sources in templates to new format (#18026) 2025-05-25 00:15:18 +02:00
Atif Ali 24d68be58b chore: enable dependabot for terraform modules (#18028)
#18027 got merged to the wrong branch
2025-05-24 22:06:55 +00:00
Bruno Quaresma 70edc2403a chore: remove chartjs (#18016)
- Remove ChartJS in favor of Recharts
- Migrate ActiveUserChart to use the new chart design

<img width="1624" alt="Screenshot 2025-05-23 at 15 00 03"
src="https://github.com/user-attachments/assets/5f451a88-f2ef-4139-a888-c0358eb8cf17"
/>
2025-05-24 11:33:16 -03:00
Jaayden Halko 196eccb457 feat: add beta labels for dynamic params (#17985)
<img width="820" alt="Screenshot 2025-05-23 at 18 48 56"
src="https://github.com/user-attachments/assets/5b781501-3817-4be1-8143-f03f8cb88901"
/>

<img width="790" alt="Screenshot 2025-05-23 at 18 48 32"
src="https://github.com/user-attachments/assets/541ad77e-fd37-4f52-ae2c-7b1f698c23fc"
/>
2025-05-23 15:51:31 -04:00
Jaayden Halko ce4c8c7451 fix: prevent layout shift when Select component dropdown appears (#17990)
When scrollbars are always visible, open the dropdown for a `Select
`component causes a layout shift because of scrollbars being hidden when
the` Select` is open. This fix prevents the layout shift from the
scrollbar being removed.




https://github.com/user-attachments/assets/6b0aff70-c585-401b-911d-f0805b54903e
2025-05-23 15:51:14 -04:00
Bruno Quaresma e8306cc790 chore: improve chromatic CI (#18014)
Following [this Chromatic
guide](https://www.chromatic.com/docs/turbosnap-best-practices) to
improve our Chromatic jobs.
2025-05-23 15:10:06 -03:00
Steven Masley ca39931395 chore: remove password form_type from docs (#18015) 2025-05-23 12:17:22 -05:00
Jaayden Halko 516fb4489e feat: display required badge instead of diagnostic text when extra code = required (#18006)
The tooltip hover uses the summary text from the diagnostic

<img width="562" alt="Screenshot 2025-05-23 at 12 51 51"
src="https://github.com/user-attachments/assets/2246abc7-dc1c-4dc2-8303-bee62d152e21"
/>
2025-05-23 10:43:17 -04:00
Bruno Quaresma 30a910ba32 chore: replace MUI Button - 2 (#17953)
1. IconField.tsx
2. SelectMenu.tsx
3. RichParameterInput.tsx
4. MissingTemplateVariablesDialog.tsx
5. LoginPageView.tsx
2025-05-23 11:39:56 -03:00
Bruno Quaresma 94c129c03d fix!: omit name, avatar_url and last_seen_at from responses when empty (#18005)
User name, avatar URL, and last seen at, are not required fields so they
can be empty. Instead of returning the 0 values from Go, we want to make
it more agnostic, and omit them when they are empty. This make the docs
and usage way clearer for consumers.
2025-05-23 11:35:05 -03:00
Ethan 96f69b8e13 chore: set slim tag when compiling coder-vpn.dylib (#18001)
```
$ du -sh before.dylib after.dylib 
 35M    before.dylib
 30M    after.dylib
 ```
2025-05-23 15:03:09 +10:00
Bruno Quaresma b4daf36d0b refactor: refactor activity column in the workspaces table (#17976)
The goal is to better integrate the activity column data with the
existent data:
- Make the message one line, the full message is in the tooltip, and
display the state at the bottom. This way, it is visually consistent
with the other columns like status, name and template.
- Moved the app, and uri, to the actions column, instead of showing them
together with the message in the activity column.

**Previous:**
<img width="1512" alt="Screenshot 2025-05-21 at 17 28 46"
src="https://github.com/user-attachments/assets/ea9188a5-d82e-416c-b961-edf0104f66c6"
/>

**After:**
<img width="1512" alt="Screenshot 2025-05-21 at 17 28 57"
src="https://github.com/user-attachments/assets/f50dbe82-cd3e-4448-9fa2-bde9193166d6"
/>
2025-05-22 20:03:13 -04:00
Kris Page c777740801 docs: add Bottlerocket section to rootless Podman (#17987) 2025-05-22 21:12:31 +01:00
Mathias Fredriksson d6c14f3d8a feat(agent/agentcontainers): update containers periodically (#17972)
This change introduces a significant refactor to the agentcontainers API
and enables periodic updates of Docker containers rather than on-demand.
Consequently this change also allows us to move away from using a
locking channel and replace it with a mutex, which simplifies usage.

Additionally a previous oversight was fixed, and testing added, to clear
devcontainer running/dirty status when the container has been removed.

Updates coder/coder#16424
Updates coder/internal#621
2025-05-22 19:44:33 +03:00
Steven Masley 13b41c200c chore: update preview to include required param diags (#17978) 2025-05-22 11:40:21 -05:00
Bruno Quaresma 6f0defb2c9 refactor: refactor activity in workspace page (#17980)
Changing the activity in the workspace page. It is more boring, but more
reliable and extensible. By moving it to the bottom of the agent card,
we have more space to display longer messages and more items. It also
give us some space for interactivity controls in case we want them in
the future.

**Before:**
<img width="1512" alt="Screenshot 2025-05-21 at 19 09 41"
src="https://github.com/user-attachments/assets/c25aa848-b496-4a78-8d19-0b0efeae6115"
/>

**After:**


https://github.com/user-attachments/assets/3e88eb63-e082-4e5c-a6a3-79a6fe3d46b6
2025-05-22 13:05:51 -03:00
Atif Ali 4cb35c4c65 docs: fix token create command (#17984)
`--name` is required
2025-05-22 10:39:51 -04:00
Hugo Dutka a0e229afec chore: run test-go-pg on macOS and Windows in regular CI (#17853)
This PR starts running test-go-pg on macOS and Windows in regular CI.
Previously this suite was only run in the nightly gauntlet for 2
reasons:

- it was flaky
- it was slow (took 17 minutes)

We've since stabilized the flakiness by switching to depot runners,
using ram disks, optimizing the number of tests run in parallel, and
automatically re-running failing tests. We've also [brought
down](https://github.com/coder/coder/pull/17756) the time to run the
suite to 9 minutes. Additionally, this PR allows test-go-pg to use cache
from previous runs, which speeds it up further. The cache is only used
on PRs, `main` will still run tests without it.

This PR also:

- removes the nightly gauntlet since all tests now run in regular CI
- removes the `test-cli` job for the same reason
- removes the `setup-imdisk` action which is now fully replaced by
[coder/setup-ramdisk-action](https://github.com/coder/setup-ramdisk-action)
- makes 2 minor changes which could be separate PRs, but I rolled them
into this because they were helpful when iterating on it:
- replace the `if: always()` condition on the `gen` job with a `if: ${{
!cancelled() }}` to allow the job to be cancelled. Previously the job
would run to completion even if the entire workflow was cancelled. See
[the GitHub
docs](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/evaluate-expressions-in-workflows-and-actions#always)
for more details.
- disable the recently added `TestReinitializeAgent` since it does not
pass on Windows with Postgres. There's an open issue to fix it:
https://github.com/coder/internal/issues/642

This PR will:

- unblock https://github.com/coder/coder/issues/15109
- alleviate https://github.com/coder/internal/issues/647

I tested caching by temporarily enabling cache upload on this PR: here's
[a
run](https://github.com/coder/coder/actions/runs/15119046903/job/42496939341?pr=17853#step:13:1296)
showing cache being used.
2025-05-22 15:53:37 +02:00
Hugo Dutka f825477a5c fix: add timeouts to test telemetry snapshot (#17879)
This PR ensures that waits on channels will time out according to the
test context, rather than waiting indefinitely. This should alleviate
the panic seen in https://github.com/coder/internal/issues/645 and, if
the deadlock recurs, allow the test to be retried automatically in CI.
2025-05-22 13:51:24 +02:00
Atif Ali 5a3a7fc4e5 chore: add JetBrains Toolbox to docs manifest (#17986) 2025-05-22 16:30:56 +05:00
Edward Angert eb8013a7f4 docs: add jetbrains toolbox steps (#17661)
Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
Co-authored-by: ケイラ <mckayla@hey.com>
Co-authored-by: Jon Ayers <jon@coder.com>
Co-authored-by: Danny Kopping <danny@coder.com>
Co-authored-by: Michael Suchacz <203725896+ibetitsmike@users.noreply.github.com>
Co-authored-by: Bruno Quaresma <bruno@coder.com>
Co-authored-by: Steven Masley <stevenmasley@gmail.com>
Co-authored-by: Atif Ali <atif@coder.com>
2025-05-22 16:08:59 +05:00
Ethan 34494fb330 chore: avoid depending on rbac in slim builds (#17959)
I noticed the `coder-vpn.dylib` (of course alongside the Agent/CLI binaries) had grown substantially (from 29MB to 37MB for the dylib), and discovered that importing RBAC in slim builds was the issue

This PR removes the dependency on RBAC in slim builds, and adds a compile-time check to ensure it can't be imported in the future:

```
$ make build
# github.com/coder/coder/v2/coderd/rbac
coderd/rbac/no_slim.go:8:2: initialization cycle: _DO_NOT_IMPORT_THIS_PACKAGE_IN_SLIM_BUILDS refers to itself
make: *** [Makefile:224: build/coder-slim_2.22.1-devel+7e46d24b4_linux_amd64] Error 1
```

Before and after for `coder-slim_darwin_arm64`:
```
$ gsa before after
┌───────────────────────────────────────────────────────────────────────────────────┐
│ Diff between before and after                                                     │
├─────────┬─────────────────────────────────────────┬──────────┬──────────┬─────────┤
│ PERCENT │ NAME                                    │ OLD SIZE │ NEW SIZE │ DIFF    │
├─────────┼─────────────────────────────────────────┼──────────┼──────────┼─────────┤
│ -100%   │ github.com/gorilla/mux                  │          │          │ +0 B    │
│ -100%   │ github.com/ammario/tlru                 │          │          │ +0 B    │
│ -100%   │ github.com/armon/go-radix               │          │          │ +0 B    │
│ -0.00%  │ gvisor.dev/gvisor                       │ 2.4 MB   │ 2.4 MB   │ -4 B    │
│ -0.21%  │ os                                      │ 155 kB   │ 155 kB   │ -328 B  │
│ -0.23%  │ regexp                                  │ 152 kB   │ 152 kB   │ -346 B  │
│ -0.04%  │ runtime                                 │ 876 kB   │ 876 kB   │ -372 B  │
│ -100%   │ github.com/rcrowley/go-metrics          │ 675 B    │          │ -675 B  │
│ -23.79% │ github.com/cespare/xxhash/v2            │ 3.0 kB   │ 2.3 kB   │ -715 B  │
│ -100%   │ github.com/agnivade/levenshtein         │ 1.4 kB   │          │ -1.4 kB │
│ -100%   │ github.com/go-ini/ini                   │ 1.5 kB   │          │ -1.5 kB │
│ -100%   │ github.com/xeipuuv/gojsonreference      │ 2.4 kB   │          │ -2.4 kB │
│ -100%   │ github.com/xeipuuv/gojsonpointer        │ 5.2 kB   │          │ -5.2 kB │
│ -2.43%  │ go.opentelemetry.io/otel                │ 316 kB   │ 309 kB   │ -7.7 kB │
│ -2.40%  │ slices                                  │ 381 kB   │ 372 kB   │ -9.2 kB │
│ -0.68%  │ crypto                                  │ 1.4 MB   │ 1.4 MB   │ -9.5 kB │
│ -100%   │ github.com/tchap/go-patricia/v2         │ 23 kB    │          │ -23 kB  │
│ -100%   │ github.com/yashtewari/glob-intersection │ 28 kB    │          │ -28 kB  │
│ -4.35%  │ <autogenerated>                         │ 754 kB   │ 721 kB   │ -33 kB  │
│ -100%   │ github.com/sirupsen/logrus              │ 72 kB    │          │ -72 kB  │
│ -2.56%  │ github.com/coder/coder/v2               │ 3.3 MB   │ 3.2 MB   │ -84 kB  │
│ -100%   │ github.com/gobwas/glob                  │ 107 kB   │          │ -107 kB │
│ -100%   │ sigs.k8s.io/yaml                        │ 244 kB   │          │ -244 kB │
│ -100%   │ github.com/open-policy-agent/opa        │ 2.2 MB   │          │ -2.2 MB │
├─────────┼─────────────────────────────────────────┼──────────┼──────────┼─────────┤
│ -7.79%  │ __go_buildinfo __DATA                   │ 18 kB    │ 17 kB    │ -1.4 kB │
│ -6.81%  │ __itablink __DATA_CONST                 │ 23 kB    │ 22 kB    │ -1.6 kB │
│ -6.61%  │ __typelink __DATA_CONST                 │ 71 kB    │ 66 kB    │ -4.7 kB │
│ -2.86%  │ __noptrdata __DATA                      │ 1.0 MB   │ 993 kB   │ -29 kB  │
│ -21.49% │ __data __DATA                           │ 320 kB   │ 251 kB   │ -69 kB  │
│ -6.19%  │ __rodata __DATA_CONST                   │ 6.0 MB   │ 5.6 MB   │ -372 kB │
│ -47.19% │ __rodata __TEXT                         │ 7.6 MB   │ 4.0 MB   │ -3.6 MB │
├─────────┼─────────────────────────────────────────┼──────────┼──────────┼─────────┤
│ -14.02% │ before                                  │ 50 MB    │ 43 MB    │ -7.0 MB │
│         │ after                                   │          │          │         │
└─────────┴─────────────────────────────────────────┴──────────┴──────────┴─────────┘
```
2025-05-22 19:48:23 +10:00
Sas Swart 1e1e6f3bd1 fix: skip TestReinitializeAgent until we can adapt it for windows (#17968)
relates to https://github.com/coder/internal/issues/642

I've reached a timebox trying to get a script for windows to work, so
I'm skipping it for now.
2025-05-22 08:48:40 +02:00
Ben Potter a5234bf9a5 chore: fix autoversion script and update experiments/docs to v2.22.1 (#17954) 2025-05-21 23:17:14 -04:00
Yevhenii Shcherbina 53e8e9c7cd fix: reduce cost of prebuild failure (#17697)
Relates to https://github.com/coder/coder/issues/17432

### Part 1:

Notes:
- `GetPresetsAtFailureLimit` SQL query is added, which is similar to
`GetPresetsBackoff`, they use same CTEs: `filtered_builds`,
`time_sorted_builds`, but they are still different.

- Query is executed on every loop iteration. We can consider marking
specific preset as permanently failed as an optimization to avoid
executing query on every loop iteration. But I decided don't do it for
now.

- By default `FailureHardLimit` is set to 3.

- `FailureHardLimit` is configurable. Setting it to zero - means that
hard limit is disabled.

### Part 2

Notes:
- `PrebuildFailureLimitReached` notification is added.
- Notification is sent to template admins.
- Notification is sent only the first time, when hard limit is reached.
But it will `log.Warn` on every loop iteration.
- I introduced this enum:
```sql
CREATE TYPE prebuild_status AS ENUM (
  'normal',           -- Prebuilds are working as expected; this is the default, healthy state.
  'hard_limited',     -- Prebuilds have failed repeatedly and hit the configured hard failure limit; won't be retried anymore.
  'validation_failed' -- Prebuilds failed due to a non-retryable validation error (e.g. template misconfiguration); won't be retried.
);
```
`validation_failed` not used in this PR, but I think it will be used in
next one, so I wanted to save us an extra migration.

- Notification looks like this:
<img width="472" alt="image"
src="https://github.com/user-attachments/assets/e10efea0-1790-4e7f-a65c-f94c40fced27"
/>

### Latest notification views:
<img width="463" alt="image"
src="https://github.com/user-attachments/assets/11310c58-68d1-4075-a497-f76d854633fe"
/>
<img width="725" alt="image"
src="https://github.com/user-attachments/assets/6bbfe21a-91ac-47c3-a9d1-21807bb0c53a"
/>
2025-05-21 15:16:38 -04:00
Bruno Quaresma e1934fe119 chore: replace MUI icons with Lucide icons - update 18 (#17958)
1. PersonOutline → UserIcon
2. Apps → LayoutGridIcon
3. Delete → TrashIcon
4. InsertDriveFile → FileIcon
2025-05-21 16:11:23 -03:00
Bruno Quaresma f35a1bc448 chore: replace MUI Button - 3 (#17955)
Replaced MUI Button with custom Button in 5 components:
  - Filter.tsx - Changed import and updated Button props
(variant="outline", size="sm")
  - ChatLayout.tsx - Changed import and updated Button
props for the "New Chat" button
  - StarterTemplatePageView.tsx - Changed import and
implemented asChild pattern for links
  - Notifications.tsx - Changed import and updated
NotificationActionButton to use variant="subtle"
  - DateRange.tsx - Changed import and updated Button
styling
2025-05-21 15:58:38 -03:00
Bruno Quaresma cbfe975cc8 refactor: show unhealthy status on workspace status indicator (#17956)
Instead of showing a "yellow question icon" on the side of the status,
to let the user aware of unhealthy agents, we could make it yellow and
use a tooltip.

Before:
<img width="1512" alt="Screenshot 2025-05-20 at 18 13 15"
src="https://github.com/user-attachments/assets/afee470e-9dd4-4c32-b2bc-b9f66eac60fa"
/>

After:
<img width="1512" alt="Screenshot 2025-05-20 at 18 13 26"
src="https://github.com/user-attachments/assets/5769828b-f23c-45a5-8017-c4a88f085d0f"
/>
2025-05-21 15:57:32 -03:00
Jaayden Halko cb7ce18592 feat: add experimental workspace parameters page for dynamic params (#17841)
![Screenshot 2025-05-20 at 22 26
40](https://github.com/user-attachments/assets/639441d7-2349-4c92-a4ee-d8a5a724fe8e)
2025-05-21 13:48:35 -04:00
Jaayden Halko 3a6d5f5bba fix: update textarea to fit content height and set a max height (#17946) 2025-05-21 10:56:01 -04:00
Jaayden Halko 36d938fa88 fix: show diagnostics if there are no parameters (#17967)
Prefer to show the top level diagnostics inside the parameters section
for context but this adds a case to show diagnostics if there are no
parameters.

Normally, the entire parameters section is hidden if there are no
parameters.
2025-05-21 10:55:37 -04:00
Michael Suchacz b7462fb256 feat: improve transaction safety in CompleteJob function (#17970)
This PR refactors the CompleteJob function to use database transactions
more consistently for better atomicity guarantees. The large function
was broken down into three specialized handlers:

- completeTemplateImportJob
- completeWorkspaceBuildJob
- completeTemplateDryRunJob

Each handler now uses the Database.InTx wrapper to ensure all database
operations for a job completion are performed within a single
transaction, preventing partial updates in case of failures.

Added comprehensive tests for transaction behavior for each job type.

Fixes #17694

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-05-21 16:48:51 +02:00
Bruno Quaresma c6bece0ec5 refactor: update provisioners column copy (#17949) 2025-05-21 08:57:15 -03:00
Spike Curtis 818d4d03f4 chore: ignore 'session shutdown' yamux error in tests (#17964)
Fixes flake seen here: https://github.com/coder/coder/actions/runs/15154327939/job/42606133069?pr=17960

Error log dropped when the dRPC server is being shut down right as we are (re)dialing.
2025-05-21 11:29:25 +04:00
Michael Suchacz 3654a49fb5 feat: add Claude.md initial draft (#17785) 2025-05-21 09:16:00 +02:00
Spike Curtis cbbbb4492a docs: explain coder:// link for RDP (#17901)
fixes https://github.com/coder/internal/issues/627

Adds docs for `coder://` URLs for Windows Remote Desktop (RDP).

Note that we might want to hold of merging since the URI handling is
unreleased in Coder Desktop for Windows.
2025-05-21 09:28:31 +04:00
Bruno Quaresma 36224f263f chore: replace MUI icons with Lucide icons - 17 (#17957)
1. ExpandMoreOutlined → ChevronDownIcon
2. Error/ErrorIcon → CircleAlertIcon
3. CheckCircle → CircleCheckIcon
4. Warning → TriangleAlertIcon
2025-05-20 22:24:17 -03:00
Danielle Maywood 3e7ff9d9e1 chore(coderd/rbac): add Action{Create,Delete}Agent to ResourceWorkspace (#17932) 2025-05-20 21:20:56 +01:00
Danny Kopping d2d21898f2 chore: reduce ignore_changes suggestion scope (#17947)
We probably shouldn't be suggesting `ignore_changes = all`. Only the
attributes which cause drift in prebuilds should be ignored; everything
else can behave as normal.

---------

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
Co-authored-by: Edward Angert <EdwardAngert@users.noreply.github.com>
2025-05-20 22:16:23 +02:00
Edward Angert 1f54c36375 docs: rename external-auth heading in setup doc (#17868)
to help point searchers to the correct doc


[preview](https://coder.com/docs/@setup-ext-auth/admin/setup#continue-your-setup-with-external-authentication)

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-05-20 15:10:52 -04:00
Thomas Kosiewski b551a062d7 fix: correct environment variable name for MCP app status slug (#17948)
Fixed environment variable name for app status slug in Claude MCP configuration from `CODER_MCP_CLAUDE_APP_STATUS_SLUG` to `CODER_MCP_APP_STATUS_SLUG` to maintain consistency with other MCP environment variables.

This also caused the User level Claude.md to not contain instructions to report its progress, so it did not receive status reports.
2025-05-20 19:35:19 +02:00
Julio 55313cffbc chore: add vsphere icon (#17936) 2025-05-20 17:19:38 +00:00
Edward Angert b51c902e48 docs: add early access badge to devcontainers admin (#17937)
[preview](https://coder.com/docs/@dev-container-tweaks/admin/templates/extending-templates/devcontainers)

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-05-20 12:46:07 -04:00
Steven Masley a123900fe8 chore: remove coder/preview dependency from codersdk (#17939) 2025-05-20 10:45:12 -05:00
Steven Masley e76d58f2b6 chore: disable parameter validatation for dynamic params for all transitions (#17926)
Dynamic params skip parameter validation in coder/coder.
This is because conditional parameters cannot be validated 
with the static parameters in the database.
2025-05-20 10:09:53 -05:00
Thomas Kosiewski 93f17bc73e fix: remove unnecessary user lookup in agent API calls (#17934)
# Use workspace.OwnerUsername instead of fetching the owner

This PR optimizes the agent API by using the `workspace.OwnerUsername` field directly instead of making an additional database query to fetch the owner's username. The change removes the need to call `GetUserByID` in the manifest API and workspace agent RPC endpoints.

An issue arose when the agent token was scoped without access to user data (`api_key_scope = "no_user_data"`), causing the agent to fail to fetch the manifest due to an RBAC issue.

Change-Id: I3b6e7581134e2374b364ee059e3b18ece3d98b41
Signed-off-by: Thomas Kosiewski <tk@coder.com>
2025-05-20 17:07:50 +02:00
Danielle Maywood 1267c9c405 fix: ensure reason present for workspace autoupdated notification (#17935)
Fixes https://github.com/coder/coder/issues/17930

Update the `WorkspaceAutoUpdated` notification to only display the
reason if it is present.
2025-05-20 16:01:57 +01:00
Michael Suchacz 769c9ee337 feat: cancel stuck pending jobs (#17803)
Closes: #16488
2025-05-20 15:22:44 +02:00
Sas Swart 613117bde2 chore: add presets with prebuilds to our dogfood template (#17933)
This PR adds a preset with prebuilds for each region to our dogfood
template. Creating a workspace based on a preset should now save time
compared to creating a workspace from scratch
2025-05-20 14:45:26 +02:00
Ethan e5758a12c7 fix(site): center /cli-auth on firefox (#17929)
`-webkit-fill-available` is not available in Firefox: https://caniuse.com/mdn-css_properties_height_stretch
`-moz-available` doesn't work on `height`, so we have to use `100vh`.

Before:
<img width="1405" alt="image" src="https://github.com/user-attachments/assets/bd0f4390-50e9-47fa-8501-f3e3483d3c0d" />

After:
<img width="1329" alt="image" src="https://github.com/user-attachments/assets/f19f4b2a-3398-4d64-8e12-5cfcb84106a9" />


The existing CSS is retained in browsers that support `-webkit-fill-available`, i.e. chrome:
<img width="253" alt="image" src="https://github.com/user-attachments/assets/c1b356b4-c228-4580-a4c3-cddc2e0327b4" />
2025-05-20 14:25:13 +10:00
Jaayden Halko dc21016151 fix: get presets working correctly with dynamic params (#17923)
This adds a few fixes to get presets working correctly with dynamic
params

1. Changes to preset params need to be rendered and displayed correctly
2. Changes to preset params need to be sent to the websocket
3. Changes to preset params need to be marked as touched so they won't
be automatically changed later because of dynamic defaults. Dynamic
defaults means any default parameter value can be changed by the
websocket response unless edited by the user, set by autofill or set by
a preset.
2025-05-19 18:20:40 -04:00
Steven Masley 9c000468a1 chore: expose use_classic_parameter_flow on workspace response (#17925) 2025-05-19 21:59:15 +00:00
Bruno Quaresma cc53c4d1d5 fix: fix devcontainer port button (#17924) 2025-05-19 18:38:38 -03:00
Edward Angert 1314dbdc94 docs: add new dynamic parameters information to parameters doc (#17653)
Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
Co-authored-by: Steven Masley <Emyrk@users.noreply.github.com>
Co-authored-by: Stephen Kirby <kirby@coder.com>
Co-authored-by: Stephen Kirby <58410745+stirby@users.noreply.github.com>
2025-05-19 21:23:53 +00:00
Susana Ferreira 0cac6a8c38 docs: add provisioner job state transition diagram (#17882)
# Description

Add a state transition diagram for provisioner jobs to the
documentation.

This PR introduces a new diagram illustrating the lifecycle and state
transitions of provisioner jobs. The diagram complements the existing
status table by providing a visual representation of how jobs move
between different states throughout their lifecycle.

# Changes

- Added a SVG diagram under the **Manage Provisioner Jobs**
documentation page, in the **Provisioner Job Status** section.
- Included a brief introductory text before the diagram.

Mermaid
[link](https://www.mermaidchart.com/play#pako:eNqFkD1PwzAQhv_KyRMdvPSDIUKVUFIGJtSyYQbXvjSW3DM4jiqE-O_YsRtFCMF49z6P75U_mXIaWcU454KUo9acKkEAocMzVkA4BC-toDFvrbuoTvoAz02CAO5vXgQ7hLgS7HUBnMOjO0LtUQbUcdxCHYEnJG3oFJFs1VdwNAvYRHA_EM3BZnrRnd8sRvTu6LeHQSns-3aw9mNUaZlapC1q1P_YFxM62HnvfHZX0X2Qxv4qSlJorQzGUXL3-D5gf21M66hmZF6a1kn_qeYT5eRf4FQ2s5vpxqwgbXJ4m75_RylYlGRVkjIup5F9fQNTV5aS)

---

Screenshot of `Provisioner job status` section in documentation page:

![Screenshot 2025-05-19 at 16 10
12](https://github.com/user-attachments/assets/9cd6a46e-24ae-450c-842c-9580d61a50f6)
2025-05-19 17:23:36 -04:00
Steven Masley 358b64154e chore: skip parameter resolution for dynamic params (#17922)
Pass through the user input as is. The previous code only passed through
parameters that existed in the db (static params). This would omit
conditional params.

Validation is enforced by the dynamic params websocket, so validation at
this point is not required.
2025-05-19 16:15:15 -05:00
Bruno Quaresma fe733afd14 chore: fix flake on useAgentLogs (#17919)
We need to wait for the result since the result is depending on effects.

Fix https://github.com/coder/internal/issues/644
2025-05-19 16:43:26 -03:00
Cian Johnston 433f0be53d fix: show provisioner name instead of key name in expanded ProvisionerKeyRow (#17921) 2025-05-19 14:35:22 -03:00
Bruno Quaresma ca5f114204 refactor: update cli auth page design (#17915)
Improve UX of CLI Auth page.

**Before:**

<img width="1512" alt="Screenshot 2025-05-19 at 09 22 36"
src="https://github.com/user-attachments/assets/ffcecebc-a289-4b06-993d-a170f2ba5e49"
/>

**After:**


https://github.com/user-attachments/assets/01dfcd70-d0a6-48bb-9186-77da24001498



Fixes https://github.com/coder/coder/issues/17905
2025-05-19 13:27:58 -03:00
Cian Johnston ac7961a5b0 feat: add Organization Provisioner Keys view (#17889)
Fixes https://github.com/coder/coder/issues/17698

**Demo:**


https://github.com/user-attachments/assets/ba92693f-29b7-43ee-8d69-3d77214f3230

---------

Co-authored-by: BrunoQuaresma <bruno_nonato_quaresma@hotmail.com>
2025-05-19 16:58:12 +01:00
Danielle Maywood 61f22a59ba feat(agent): add ParentId to agent manifest (#17888)
Closes https://github.com/coder/internal/issues/648

This change introduces a new `ParentId` field to the agent's manifest.
This will allow an agent to know if it is a child or not, as well as
knowing who the owner is.

This is part of the Dev Container Agents work
2025-05-19 16:09:56 +01:00
Susana Ferreira f044cc3550 feat: add provisioner daemon name to provisioner jobs responses (#17877)
# Description

This PR adds the `worker_name` field to the provisioner jobs endpoint.

To achieve this, the following SQL query was updated:
-
`GetProvisionerJobsByOrganizationAndStatusWithQueuePositionAndProvisioner`

As a result, the `codersdk.ProvisionerJob` type, which represents the
provisioner job API response, was modified to include the new field.

**Notes:** 
* As mentioned in
[comment](https://github.com/coder/coder/pull/17877#discussion_r2093218206),
the `GetProvisionerJobsByIDsWithQueuePosition` query was not changed due
to load concerns. This means that for template and template version
endpoints, `worker_id` will still be returned, but `worker_name` will
not.
* Similar to `worker_id`, the `worker_name` is only present once a job
is assigned to a provisioner daemon. For jobs in a pending state (not
yet assigned), neither `worker_id` nor `worker_name` will be returned.

---

# Affected Endpoints

- `/organizations/{organization}/provisionerjobs`
- `/organizations/{organization}/provisionerjobs/{job}`

---

# Testing

- Added new tests verifying that both `worker_id` and `worker_name` are
returned once a provisioner job reaches the **succeeded** state.
- Existing tests covering state transitions and other logic remain
unchanged, as they test different scenarios.

---

# Front-end Changes

Admin provisioner jobs dashboard:
<img width="1088" alt="Screenshot 2025-05-16 at 11 51 33"
src="https://github.com/user-attachments/assets/0e20e360-c615-4497-84b7-693777c5443e"
/>

Fixes: https://github.com/coder/coder/issues/16982
2025-05-19 16:05:39 +01:00
Danny Kopping 87dc2478a9 feat: fail CI when pubsub.Publish calls are found in db transactions (#17903)
Publishing inside a db transaction can lead to database connection
starvation/contention since it requires its own connection.

This ruleguard rule (one-shotted by Claude Sonnet 3.7 and finalized by
@Emyrk) will detect two of the following 3 instances:

```go
type Nested struct {
	ps pubsub.Pubsub
}

func TestFail(t *testing.T) {
	t.Parallel()

	db, ps := dbtestutil.NewDB(t)
	nested := &Nested{
		ps: ps,
	}

	// will catch this
	_ = db.InTx(func(_ database.Store) error {
		_, _ = fmt.Printf("")
		_ = ps.Publish("", []byte{})
		return nil
	}, nil)

	// will catch this
	_ = db.InTx(func(_ database.Store) error {
		_ = nested.ps.Publish("", []byte{})
		return nil
	}, nil)

	// will NOT catch this
	_ = db.InTx(func(_ database.Store) error {
		blah(ps)
		return nil
	}, nil)
}

func blah(ps pubsub.Pubsub) {
	ps.Publish("", []byte{})
}
```

The ruleguard doesn't recursively introspect function calls so only the
first two cases will be guarded against, but it's better than nothing.

<img width="1444" alt="image"
src="https://github.com/user-attachments/assets/8ffa0d88-16a0-41a9-9521-21211910dec9"
/>

---------

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
Co-authored-by: Steven Masley <stevenmasley@gmail.com>
2025-05-19 14:52:51 +00:00
Jaayden Halko 4412f194d4 fix: sync websocket params with form params (#17895)
The current issue is that when multiple parameters are added or removed
from a form because a user change in a conditional parameter value. The
websocket parameters response gets out of sync with the state of the
parameters in the form.

The form state needs to be maintained because this is what gets
submitted when the user attempts to create a workspace.

Fixes:

1. When autofill params are set from the url, mark these params as
touched in the form. This is necessary as only touched params are sent
in the request to the websocket. These params should technically count
as being touched because they were preset from the url params.

2. Create a hook to synchronize the parameters from the websocket
response with the current state of the parameters stored in the form.
2025-05-19 10:49:02 -04:00
Jaayden Halko 766277c20e fix: disable submit button on diagnostics error (#17900) 2025-05-19 10:43:56 -04:00
dependabot[bot] 4e0fc6e17c chore: bump github.com/hashicorp/terraform-json from 0.24.0 to 0.25.0 (#17914)
Bumps
[github.com/hashicorp/terraform-json](https://github.com/hashicorp/terraform-json)
from 0.24.0 to 0.25.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/hashicorp/terraform-json/releases">github.com/hashicorp/terraform-json's
releases</a>.</em></p>
<blockquote>
<h2>v0.25.0</h2>
<p>ENHANCEMENTS:</p>
<ul>
<li>Add identity fields to plan struct by <a
href="https://github.com/dbanck"><code>@​dbanck</code></a> in <a
href="https://redirect.github.com/hashicorp/terraform-json/pull/158">hashicorp/terraform-json#158</a></li>
<li>Update state and provider JSON with identity fields by <a
href="https://github.com/dbanck"><code>@​dbanck</code></a> in <a
href="https://redirect.github.com/hashicorp/terraform-json/pull/155">hashicorp/terraform-json#155</a></li>
</ul>
<p>INTERNAL:</p>
<ul>
<li>build(deps): Bump workflows to latest trusted versions by <a
href="https://github.com/hashicorp-tsccr"><code>@​hashicorp-tsccr</code></a>
in <a
href="https://redirect.github.com/hashicorp/terraform-json/pull/149">hashicorp/terraform-json#149</a></li>
<li>Bump github.com/zclconf/go-cty from 1.15.1 to 1.16.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/hashicorp/terraform-json/pull/150">hashicorp/terraform-json#150</a></li>
<li>Bump github.com/zclconf/go-cty from 1.16.0 to 1.16.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/hashicorp/terraform-json/pull/151">hashicorp/terraform-json#151</a></li>
<li>Bump github.com/zclconf/go-cty from 1.16.1 to 1.16.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/hashicorp/terraform-json/pull/152">hashicorp/terraform-json#152</a></li>
<li>build(deps): Bump workflows to latest trusted versions by <a
href="https://github.com/hashicorp-tsccr"><code>@​hashicorp-tsccr</code></a>
in <a
href="https://redirect.github.com/hashicorp/terraform-json/pull/153">hashicorp/terraform-json#153</a></li>
<li>Bump github.com/google/go-cmp from 0.6.0 to 0.7.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/hashicorp/terraform-json/pull/154">hashicorp/terraform-json#154</a></li>
<li>build(deps): Bump workflows to latest trusted versions by <a
href="https://github.com/hashicorp-tsccr"><code>@​hashicorp-tsccr</code></a>
in <a
href="https://redirect.github.com/hashicorp/terraform-json/pull/156">hashicorp/terraform-json#156</a></li>
<li>Update owner field in catalog-info.yaml by <a
href="https://github.com/imakewebthings"><code>@​imakewebthings</code></a>
in <a
href="https://redirect.github.com/hashicorp/terraform-json/pull/157">hashicorp/terraform-json#157</a></li>
<li>Update CODEOWNERS by <a
href="https://github.com/austinvalle"><code>@​austinvalle</code></a> in
<a
href="https://redirect.github.com/hashicorp/terraform-json/pull/159">hashicorp/terraform-json#159</a></li>
<li>github: Use Dependabot to keep Actions updated by <a
href="https://github.com/xiehan"><code>@​xiehan</code></a> in <a
href="https://redirect.github.com/hashicorp/terraform-json/pull/160">hashicorp/terraform-json#160</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/hashicorp/terraform-json/compare/v0.24.0...v0.25.0">https://github.com/hashicorp/terraform-json/compare/v0.24.0...v0.25.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/hashicorp/terraform-json/commit/c2689b1b4ba628fb39555f9af6b521f0daa762ef"><code>c2689b1</code></a>
github: Use Dependabot to keep Actions updated (<a
href="https://redirect.github.com/hashicorp/terraform-json/issues/160">#160</a>)</li>
<li><a
href="https://github.com/hashicorp/terraform-json/commit/6bc20aac0e8269158c60407c1829dc2ca0d1e11e"><code>6bc20aa</code></a>
Add identity fields to Plan struct (<a
href="https://redirect.github.com/hashicorp/terraform-json/issues/158">#158</a>)</li>
<li><a
href="https://github.com/hashicorp/terraform-json/commit/b5939fa6c3c681207bef15a86cefb043e28ef2d9"><code>b5939fa</code></a>
Update CODEOWNERS (<a
href="https://redirect.github.com/hashicorp/terraform-json/issues/159">#159</a>)</li>
<li><a
href="https://github.com/hashicorp/terraform-json/commit/c370ee72fd10bc381f46575470c889af0613d234"><code>c370ee7</code></a>
Update owner field in catalog-info.yaml (<a
href="https://redirect.github.com/hashicorp/terraform-json/issues/157">#157</a>)</li>
<li><a
href="https://github.com/hashicorp/terraform-json/commit/0b330eb970cbf1718e4b188ea3f035268434f9c9"><code>0b330eb</code></a>
build(deps): Bump workflows to latest trusted versions (<a
href="https://redirect.github.com/hashicorp/terraform-json/issues/156">#156</a>)</li>
<li><a
href="https://github.com/hashicorp/terraform-json/commit/f86d5e36f4ab36a15c5917e95863c230ef3acf7f"><code>f86d5e3</code></a>
Update state and provider JSON with identity fields (<a
href="https://redirect.github.com/hashicorp/terraform-json/issues/155">#155</a>)</li>
<li><a
href="https://github.com/hashicorp/terraform-json/commit/4d6dac0a34e41b855e335e1f788cd43dc8ceb7cc"><code>4d6dac0</code></a>
Bump github.com/google/go-cmp from 0.6.0 to 0.7.0 (<a
href="https://redirect.github.com/hashicorp/terraform-json/issues/154">#154</a>)</li>
<li><a
href="https://github.com/hashicorp/terraform-json/commit/323ee613daed7529cd2edf18d6e2738e0d886aa9"><code>323ee61</code></a>
Merge pull request <a
href="https://redirect.github.com/hashicorp/terraform-json/issues/153">#153</a>
from hashicorp/tsccr-auto-pinning/trusted/2025-02-03</li>
<li><a
href="https://github.com/hashicorp/terraform-json/commit/2eb7d113bcfa08c4169b6c4252972965e194e345"><code>2eb7d11</code></a>
Result of tsccr-helper -log-level=info gha update -latest .github/</li>
<li><a
href="https://github.com/hashicorp/terraform-json/commit/0169f43a11d4a596463fc15e7f74896244e7b5d1"><code>0169f43</code></a>
Bump github.com/zclconf/go-cty from 1.16.1 to 1.16.2 (<a
href="https://redirect.github.com/hashicorp/terraform-json/issues/152">#152</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/hashicorp/terraform-json/compare/v0.24.0...v0.25.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/hashicorp/terraform-json&package-manager=go_modules&previous-version=0.24.0&new-version=0.25.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>
2025-05-19 13:47:12 +00:00
dependabot[bot] 9367ef1663 chore: bump cloud.google.com/go/compute/metadata from 0.6.0 to 0.7.0 (#17913)
Bumps
[cloud.google.com/go/compute/metadata](https://github.com/googleapis/google-cloud-go)
from 0.6.0 to 0.7.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-cloud-go/releases">cloud.google.com/go/compute/metadata's
releases</a>.</em></p>
<blockquote>
<h2>compute/metadata: v0.7.0</h2>
<h2><a
href="https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.6.0...compute/metadata/v0.7.0">0.7.0</a>
(2025-05-13)</h2>
<h3>Features</h3>
<ul>
<li><strong>compute/metadata:</strong> Allow canceling GCE detection (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/11786">#11786</a>)
(<a
href="https://github.com/googleapis/google-cloud-go/commit/78100fe7e28cd30f1e10b47191ac3c9839663b64">78100fe</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-cloud-go/blob/main/CHANGES.md">cloud.google.com/go/compute/metadata's
changelog</a>.</em></p>
<blockquote>
<h2>v0.7.0</h2>
<ul>
<li>Release of a client library for Spanner. See
the
<a
href="https://cloudplatform.googleblog.com/2017/02/introducing-Cloud-Spanner-a-global-database-service-for-mission-critical-applications.html">blog
post</a>.
Note that although the Spanner service is beta, the Go client library is
alpha.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/googleapis/google-cloud-go/commit/2e6a95edb1071d750f6d7db777bf66cd2997af6c"><code>2e6a95e</code></a>
pubsub: fix flaky streaming retry test</li>
<li><a
href="https://github.com/googleapis/google-cloud-go/commit/581b8393c374fc0c5e3e91f07bc95935afb30df2"><code>581b839</code></a>
pubsub: check early if streaming iterator is already drained</li>
<li><a
href="https://github.com/googleapis/google-cloud-go/commit/cc13a9bec59f97f8ea60047fedd3005668851a70"><code>cc13a9b</code></a>
spanner: fix time.Time comparisons for upcoming Go1.9 monotonic
times</li>
<li><a
href="https://github.com/googleapis/google-cloud-go/commit/1ba9ec4b19f76eddfc8bf9fa5d08bab8f29a3581"><code>1ba9ec4</code></a>
spanner: remove most logging from tests</li>
<li><a
href="https://github.com/googleapis/google-cloud-go/commit/11737a05a487e168f31ed1722b7cf7bfca136caa"><code>11737a0</code></a>
spanner: skip some tests in short mode</li>
<li><a
href="https://github.com/googleapis/google-cloud-go/commit/7bcba8ac93ae2c1b8b040f2e53f363cf8e659173"><code>7bcba8a</code></a>
datastore: DRY up loading entity code</li>
<li><a
href="https://github.com/googleapis/google-cloud-go/commit/df9740f981cff9eb64dd60b92d8b9f38609f5ebd"><code>df9740f</code></a>
regenerate toolkit client</li>
<li><a
href="https://github.com/googleapis/google-cloud-go/commit/960c7688c840488daad1d2bb1fd3ee8c66b997a9"><code>960c768</code></a>
trace: export tracing scopes</li>
<li><a
href="https://github.com/googleapis/google-cloud-go/commit/8b0ab476b11e386cdd8fc619fa0a08c37214f0c2"><code>8b0ab47</code></a>
logadmin: retry on CreateMetric and UpdateMetric</li>
<li><a
href="https://github.com/googleapis/google-cloud-go/commit/20666962de1d3580350d6c3d4b63fc0e9720371f"><code>2066696</code></a>
trace: clarify how gRPC options work</li>
<li>Additional commits viewable in <a
href="https://github.com/googleapis/google-cloud-go/compare/v0.6.0...v0.7.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=cloud.google.com/go/compute/metadata&package-manager=go_modules&previous-version=0.6.0&new-version=0.7.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>
2025-05-19 13:27:13 +00:00
dependabot[bot] 1a434582bb chore: bump github.com/mark3labs/mcp-go from 0.27.0 to 0.28.0 (#17909)
Bumps [github.com/mark3labs/mcp-go](https://github.com/mark3labs/mcp-go)
from 0.27.0 to 0.28.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mark3labs/mcp-go/releases">github.com/mark3labs/mcp-go's
releases</a>.</em></p>
<blockquote>
<h2>Release v0.28.0</h2>
<h2>What's Changed</h2>
<ul>
<li>feat(tools): implicitly register capabilities by <a
href="https://github.com/david-hamilton-glean"><code>@​david-hamilton-glean</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/292">mark3labs/mcp-go#292</a></li>
<li>fix: Gate notifications on capabilities by <a
href="https://github.com/david-hamilton-glean"><code>@​david-hamilton-glean</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/290">mark3labs/mcp-go#290</a></li>
<li>feat(protocol): allow additional fields in meta by <a
href="https://github.com/anuraaga"><code>@​anuraaga</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/293">mark3labs/mcp-go#293</a></li>
<li>fix: type mismatch for request/response ID by <a
href="https://github.com/pottekkat"><code>@​pottekkat</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/291">mark3labs/mcp-go#291</a></li>
<li>feat(MCPServer): support <code>logging/setlevel</code> request by <a
href="https://github.com/cryo-zd"><code>@​cryo-zd</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/276">mark3labs/mcp-go#276</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/anuraaga"><code>@​anuraaga</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/293">mark3labs/mcp-go#293</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.27.1...v0.28.0">https://github.com/mark3labs/mcp-go/compare/v0.27.1...v0.28.0</a></p>
<h2>Release v0.27.1</h2>
<h2>What's Changed</h2>
<ul>
<li>docs: add CONTRIBUTING.md by <a
href="https://github.com/pottekkat"><code>@​pottekkat</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/275">mark3labs/mcp-go#275</a></li>
<li>chore: create CODE_OF_CONDUCT.md by <a
href="https://github.com/pottekkat"><code>@​pottekkat</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/274">mark3labs/mcp-go#274</a></li>
<li>chore: add issue and pull request templates by <a
href="https://github.com/pottekkat"><code>@​pottekkat</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/281">mark3labs/mcp-go#281</a></li>
<li>ci: add golangci-lint by <a
href="https://github.com/pottekkat"><code>@​pottekkat</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/282">mark3labs/mcp-go#282</a></li>
<li>fix: proper deprecation messaging for WithHTTPContextFunc by <a
href="https://github.com/aotarola"><code>@​aotarola</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/278">mark3labs/mcp-go#278</a></li>
<li>chore: add a security policy by <a
href="https://github.com/pottekkat"><code>@​pottekkat</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/283">mark3labs/mcp-go#283</a></li>
<li>fix(docs): Update README link by <a
href="https://github.com/david-hamilton-glean"><code>@​david-hamilton-glean</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/284">mark3labs/mcp-go#284</a></li>
<li>fix(session): Don't send tool changed notifications if session not
initialized yet by <a
href="https://github.com/david-hamilton-glean"><code>@​david-hamilton-glean</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/289">mark3labs/mcp-go#289</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/aotarola"><code>@​aotarola</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/278">mark3labs/mcp-go#278</a></li>
<li><a
href="https://github.com/david-hamilton-glean"><code>@​david-hamilton-glean</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/284">mark3labs/mcp-go#284</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.27.0...v0.27.1">https://github.com/mark3labs/mcp-go/compare/v0.27.0...v0.27.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/077f546c180dcd6ba9ad3f8cdb30643ddd153297"><code>077f546</code></a>
feat(MCPServer): support <code>logging/setlevel</code> request (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/276">#276</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/09c23b5fec768432e3362bea05e69f57a3bc7c92"><code>09c23b5</code></a>
fix: type mismatch for request/response ID (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/291">#291</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/91ddba5f0b9cef6fd6b89cae1009b0ab55eeb1c0"><code>91ddba5</code></a>
feat(protocol): allow additional fields in meta (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/293">#293</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/eb835b903dbf9e9f6c594b2344a4e80d98cd0712"><code>eb835b9</code></a>
fix: Gate notifications on capabilities (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/290">#290</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/e7d2547fdc103cc64125097694e68a158beaeccb"><code>e7d2547</code></a>
feat(tools): implicitly register capabilities (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/292">#292</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/c1e70f336141a46227b221a558ae485a19f593eb"><code>c1e70f3</code></a>
fix(session): Don't send tool changed notifications if session not
initialize...</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/e767652eda0e93322fef218da0af4abeb4f62330"><code>e767652</code></a>
fix(docs): Update README link (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/284">#284</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/239cfa4aa3fb41b7e1e5fff788fdecd40451fe52"><code>239cfa4</code></a>
chore: add a security policy (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/283">#283</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/c46450cc8ef2ed9fc94836070104d2a1a3790107"><code>c46450c</code></a>
fix: proper deprecation messaging for WithHTTPContextFunc (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/278">#278</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/7bb1fd21abdac57cf7b5aeaf34025165f8552885"><code>7bb1fd2</code></a>
ci: add golangci-lint (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/282">#282</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/mark3labs/mcp-go/compare/v0.27.0...v0.28.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/mark3labs/mcp-go&package-manager=go_modules&previous-version=0.27.0&new-version=0.28.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>
2025-05-19 12:29:59 +00:00
dependabot[bot] a07298a173 ci: bump github/codeql-action from 3.28.17 to 3.28.18 in the github-actions group (#17907)
Bumps the github-actions group with 1 update:
[github/codeql-action](https://github.com/github/codeql-action).

Updates `github/codeql-action` from 3.28.17 to 3.28.18
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.28.18</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.28.18 - 16 May 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.3. <a
href="https://redirect.github.com/github/codeql-action/pull/2893">#2893</a></li>
<li>Skip validating SARIF produced by CodeQL for improved performance.
<a
href="https://redirect.github.com/github/codeql-action/pull/2894">#2894</a></li>
<li>The number of threads and amount of RAM used by CodeQL can now be
set via the <code>CODEQL_THREADS</code> and <code>CODEQL_RAM</code>
runner environment variables. If set, these environment variables
override the <code>threads</code> and <code>ram</code> inputs
respectively. <a
href="https://redirect.github.com/github/codeql-action/pull/2891">#2891</a></li>
</ul>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.28.18/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<p>No user facing changes.</p>
<h2>3.28.18 - 16 May 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.3. <a
href="https://redirect.github.com/github/codeql-action/pull/2893">#2893</a></li>
<li>Skip validating SARIF produced by CodeQL for improved performance.
<a
href="https://redirect.github.com/github/codeql-action/pull/2894">#2894</a></li>
<li>The number of threads and amount of RAM used by CodeQL can now be
set via the <code>CODEQL_THREADS</code> and <code>CODEQL_RAM</code>
runner environment variables. If set, these environment variables
override the <code>threads</code> and <code>ram</code> inputs
respectively. <a
href="https://redirect.github.com/github/codeql-action/pull/2891">#2891</a></li>
</ul>
<h2>3.28.17 - 02 May 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.2. <a
href="https://redirect.github.com/github/codeql-action/pull/2872">#2872</a></li>
</ul>
<h2>3.28.16 - 23 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2863">#2863</a></li>
</ul>
<h2>3.28.15 - 07 Apr 2025</h2>
<ul>
<li>Fix bug where the action would fail if it tried to produce a debug
artifact with more than 65535 files. <a
href="https://redirect.github.com/github/codeql-action/pull/2842">#2842</a></li>
</ul>
<h2>3.28.14 - 07 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2838">#2838</a></li>
</ul>
<h2>3.28.13 - 24 Mar 2025</h2>
<p>No user facing changes.</p>
<h2>3.28.12 - 19 Mar 2025</h2>
<ul>
<li>Dependency caching should now cache more dependencies for Java
<code>build-mode: none</code> extractions. This should speed up
workflows and avoid inconsistent alerts in some cases.</li>
<li>Update default CodeQL bundle version to 2.20.7. <a
href="https://redirect.github.com/github/codeql-action/pull/2810">#2810</a></li>
</ul>
<h2>3.28.11 - 07 Mar 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.20.6. <a
href="https://redirect.github.com/github/codeql-action/pull/2793">#2793</a></li>
</ul>
<h2>3.28.10 - 21 Feb 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.20.5. <a
href="https://redirect.github.com/github/codeql-action/pull/2772">#2772</a></li>
<li>Address an issue where the CodeQL Bundle would occasionally fail to
decompress on macOS. <a
href="https://redirect.github.com/github/codeql-action/pull/2768">#2768</a></li>
</ul>
<h2>3.28.9 - 07 Feb 2025</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/ff0a06e83cb2de871e5a09832bc6a81e7276941f"><code>ff0a06e</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2896">#2896</a>
from github/update-v3.28.18-b86edfc27</li>
<li><a
href="https://github.com/github/codeql-action/commit/a41e0844be4d25fcef7ce7fa536f3e30275a9a1c"><code>a41e084</code></a>
Update changelog for v3.28.18</li>
<li><a
href="https://github.com/github/codeql-action/commit/b86edfc27a1e0d3b55127a7496a1c770a02b2f84"><code>b86edfc</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2893">#2893</a>
from github/update-bundle/codeql-bundle-v2.21.3</li>
<li><a
href="https://github.com/github/codeql-action/commit/e93b90025f7c49dccc3ee640c4155b63eb9a6b39"><code>e93b900</code></a>
Merge branch 'main' into update-bundle/codeql-bundle-v2.21.3</li>
<li><a
href="https://github.com/github/codeql-action/commit/510dfa3460b15b34a807ab5609b4691aed5ebbee"><code>510dfa3</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2894">#2894</a>
from github/henrymercer/skip-validating-codeql-sarif</li>
<li><a
href="https://github.com/github/codeql-action/commit/492d7832457da825a964331d860789f3f19d105b"><code>492d783</code></a>
Merge branch 'main' into henrymercer/skip-validating-codeql-sarif</li>
<li><a
href="https://github.com/github/codeql-action/commit/83bdf3b7f92061d2f6d74e2a4555ecf719adad68"><code>83bdf3b</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2859">#2859</a>
from github/update-supported-enterprise-server-versions</li>
<li><a
href="https://github.com/github/codeql-action/commit/cffc916774454a5ead1c8fb7925abad20cda85e4"><code>cffc916</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2891">#2891</a>
from austinpray-mixpanel/patch-1</li>
<li><a
href="https://github.com/github/codeql-action/commit/4420887272f1c68c7c58ca2970bdfb5eb657cf08"><code>4420887</code></a>
Add deprecation warning for CodeQL 2.16.5 and earlier</li>
<li><a
href="https://github.com/github/codeql-action/commit/4e178c584157c51ff3d6fb87c764e7ed0715f82a"><code>4e178c5</code></a>
Update supported versions table in README</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/60168efe1c415ce0f5521ea06d5c2062adbeed1b...ff0a06e83cb2de871e5a09832bc6a81e7276941f">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=3.28.17&new-version=3.28.18)](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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-19 11:30:15 +00:00
Mathias Fredriksson 84478bd7d6 fix(dogfood/coder): add missing -f flag (#17906) 2025-05-19 11:25:54 +00:00
Mathias Fredriksson 3dbd4245be fix(dogfood/coder): stop docker containers and prune system on shutdown (#17904)
This change adds docker stop and docker system prune to the shutdown script so 
that it doesn't need to be done by the Docker host which will take a lot longer.

This change greatly speeds up workspace destruction:

```
2025-05-19 12:26:57.046+03:00 docker_container.workspace[0]: Destroying... [id=2685e2f456ba7b280c420219f19ef15384faa52c61ba7c087c7f109ffa6b1bda]
2025-05-19 12:27:07.046+03:00 docker_container.workspace[0]: Still destroying... [10s elapsed]
2025-05-19 12:27:16.734+03:00 docker_container.workspace[0]: Destruction complete after 20s
```

Follow-up for #17110
2025-05-19 13:23:22 +03:00
Mathias Fredriksson 98e2ec4417 feat: show devcontainer dirty status and allow recreate (#17880)
Updates #16424
2025-05-19 12:56:10 +03:00
Sas Swart c775ea8411 test: fix a race in TestReinit (#17902)
closes https://github.com/coder/internal/issues/632

`pubsubReinitSpy` used to signal that a subscription had happened before
it actually had.
This created a slight opportunity for the main goroutine to publish
before the actual subscription was listening. The published event was
then dropped, leading to a failed test.
2025-05-19 11:37:54 +02:00
Spike Curtis 1a41608035 fix: stop extending API key access if OIDC refresh is available (#17878)
fixes #17070

Cleans up our handling of APIKey expiration and OIDC to keep them separate concepts. For an OIDC-login APIKey, both the APIKey and OIDC link must be valid to login. If the OIDC link is expired and we have a refresh token, we will attempt to refresh.

OIDC refreshes do not have any effect on APIKey expiry.

https://github.com/coder/coder/issues/17070#issuecomment-2886183613 explains why this is the correct behavior.
2025-05-19 12:05:35 +04:00
Steven Masley ca5a78adbf chore: update preview to remove AsString panic on unknown fields (#17897) 2025-05-17 22:02:37 +00:00
Jaayden Halko ac8591ec8f fix: add null check (#17896) 2025-05-16 19:41:37 -04:00
Jaayden Halko d6cb9b49b7 feat: setup url autofill for dynamic parameters (#17739)
resolves coder/preview#80

Parameter autofill allows setting parameters from the url using the
format param.[param name]=["purple","green"]

Example:

http://localhost:8080/templates/coder/scratch/workspace?param.list=%5b%22purple%22%2c%22green%22%5d%0a

The goal is to maintain feature parity of for autofill with dynamic
parameters.

Note: user history autofill is no longer being used and is being
removed.
2025-05-16 18:05:33 -04:00
Bruno Quaresma 87a1ebc460 chore: replace MUI Button - 1 (#17865) 2025-05-16 12:31:32 -07:00
Jaayden Halko f8f4dc6875 feat: check for classic flow on the create workspace page (#17852)
the local storage key is only set when a user presses the opt-in or
opt-out buttons

Overall, this feels less annoying for users to have to opt-in/opt-out on
every visit to the create workspace page. Maybe less of a concern for
end users but more of a concern while dogfooding.

Pros:
- User gets the admin setting value for the template as long as they
didn't opt-in or opt-out
- User can choose to opt-in/out-out at will and their preference is
saved
2025-05-16 13:40:59 -04:00
Danny Kopping 8914f7a95b chore: improve prebuilds docs (#17850)
These items came up in an internal "bug bash" session yesterday.

@EdwardAngert note: I've reverted to the "transparent" phrasing; the
current docs confused a couple folks yesterday, and I feel that
"transparent" is clearly understood in this context.

---------

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
Co-authored-by: Edward Angert <EdwardAngert@users.noreply.github.com>
2025-05-16 19:25:09 +02:00
M Atif Ali d564164eaf docs: update release calendar for 2.22 release (#17886) 2025-05-16 09:51:54 -07:00
Steven Masley f36fb67f57 chore: use static params when dynamic param metadata is missing (#17836)
Existing template versions do not have the metadata (modules + plan) in
the db. So revert to using static parameter information from the
original template import.

This data will still be served over the websocket.
2025-05-16 11:47:59 -05:00
M Atif Ali fb0e3d64db chore: remove update release calendar job (#17884) 2025-05-16 20:06:00 +05:00
brettkolodny 2cd3f999a6 feat: add one shot commands to the coder ssh command (#17779)
Closes #2154

> [!WARNING]  
> The tests in this PR were co-authored by AI
2025-05-16 10:09:46 -04:00
Hugo Dutka cb0f778baf chore: update setup-ramdisk-action (#17883)
Update setup-ramdisk-action to [a
version](https://github.com/coder/setup-ramdisk-action/commit/81c5c441bda00c6c3d6bcee2e5a33ed4aadbbcc1)
that instructs curl to fail on network errors and retry them.

It should mitigate flakes like the one seen here:
https://github.com/coder/coder/actions/runs/15068089742/job/42357451808#step:4:54
2025-05-16 15:21:25 +02:00
Spike Curtis 7f9ddd73c5 docs: remove link to closed Remote Desktop issue (#17881)
There is a link in our docs saying Remote Desktop is on the roadmap, but the issue is closed.
2025-05-16 16:08:59 +04:00
Danielle Maywood 83df55700b revert(agent): remove CODER_AGENT_IS_SUB_AGENT cli flag (#17875)
The RFC has changed, this information will be passed through the
manifest instead.
2025-05-16 11:04:21 +00:00
Danny Kopping cf98268031 chore: push proto changes to v1.6 (#17874)
`v1.5` is going out with release `v2.22`

I had to reorder `module_files` and `resource_replacements` because of
this.

---------

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
2025-05-16 11:27:41 +02:00
Dean Sheather c7917ea9e5 chore: expose original length when serving slim binaries (#17735)
This will be used in the extensions and desktop apps to enable
compression AND progress reporting for the download by comparing the
original content length to the amount of bytes written to disk.

Closes #16340
2025-05-16 15:19:28 +10:00
Spike Curtis 90e93a2399 chore: fix agent tests on Windows 11 (#17631)
Fixes a couple agent tests so that they work correctly on Windows.

`HOME` is not a standard Windows environment variable, and we don't have any specific Code in Coder to set it on SSH, so I've removed the test case. Amazingly/bizarrely the Windows test runners set this variable, but this is not standard Windows behavior so we shouldn't be including it in our tests.

Also the command `true` is not valid on a default Windows install.

```
true: The term 'true' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
```

I'm not really sure how the CI runners are allowing this test to pass, but again, it's not standard so we shouldn't be doing it.
2025-05-16 07:50:29 +04:00
Bruno Quaresma 4ac41375a0 chore: replace MUI icons with Lucide icons - 15 (#17861)
AccountCircleOutlined -> CircleUserIcon
BugReportOutlined -> BugIcon
ChatOutlined -> MessageSquareIcon
ExitToAppOutlined -> LogOutIcon
LaunchOutlined -> SquareArrowOutUpRightIcon
MenuBook -> BookOpenTextIcon
OpenInNew -> EternalLinkIcon
EmailOutlined -> MailIcon
WebhookOutlined -> WebhookIcon
Business -> Building2Icon
Person -> UserIcon
2025-05-15 22:32:50 -03:00
Bruno Quaresma ea63d27e45 chore: migrate spinner components (#17866) 2025-05-15 22:29:58 -03:00
Steven Masley c2bc801f83 chore: add 'classic_parameter_flow' column setting to templates (#17828)
We are forcing users to try the dynamic parameter experience first.
Currently this setting only comes into effect if an experiment is
enabled.
2025-05-15 17:55:17 -05:00
Jaayden Halko 9063b67c4d chore: improve style of dynamic parameters diagnostics (#17863)
Before
<img width="756" alt="Screenshot 2025-05-15 at 19 10 24"
src="https://github.com/user-attachments/assets/405d904a-c06b-41d9-9641-0dbadeadde70"
/>


After
<img width="755" alt="Screenshot 2025-05-15 at 19 10 07"
src="https://github.com/user-attachments/assets/7c1e72b5-37d1-446b-af7e-aebfcf7553a3"
/>
2025-05-15 18:02:25 -04:00
Bruno Quaresma 3011eca0c5 chore: replace MUI icons with Lucide icons - 16 (#17862)
Close -> XIcon
WarningOutlined -> TriangleAlertIcon
FileCopyOutlined -> CopyIcon
KeyboardArrowRight -> ChevronRightIcon
Add -> PlusIcon
Send -> SendIcon
ChevronRight -> ChevronRightIcon
MoreHorizOutlined -> EllipsisIcon
2025-05-15 15:42:09 -03:00
Bruno Quaresma 952c254046 fix: fix duplicated agent logs (#17806)
Fix https://github.com/coder/coder/issues/16355
2025-05-15 15:21:33 -03:00
M Atif Ali 2c49fd9e96 feat: add copy button for workspace name in breadcrumb (#17822)
Co-authored-by: BrunoQuaresma <bruno_nonato_quaresma@hotmail.com>
2025-05-15 22:41:01 +05:00
Bruno Quaresma bbceebde97 chore: remove @mui/lab (#17857) 2025-05-15 13:21:53 -03:00
Tom Beckett bb6b96f11c feat: add elixir icon (#17848) 2025-05-15 20:34:32 +05:00
Bruno Quaresma 9beaca89fd chore: replace MUI LoadingButton - 3 (#17833)
- RequestOTPPage
- SetupPageView
- TemplatePermissionsPageView
- AccountForm
- ExternalAuthPageView
2025-05-15 12:08:48 -03:00
Bruno Quaresma 257500c12f chore: replace MUI icons with Lucide icons - 14 (#17832)
HourglassEmpty -> HourglassIcon
Star -> StarIcon
CloudQueue -> CloudIcon
InstallDesktop -> MonitorDownIcon
WarningRounded -> TriangleAlertIcon
ArrowBackOutlined -> ChevronLeftIcon
MonetizationOnOutlined -> CircleDollarSign
2025-05-15 12:08:35 -03:00
Bruno Quaresma 6ff6e95417 chore: replace MUI icons with Lucide icons - 13 (#17831)
OpenInNew -> ExternalLinkIcon
InfoOutlined -> InfoIcon
CloudDownload -> CloudDownloadIcon
CloudUpload -> CloudUploadIcon
Compare -> GitCompareArrowsIcon
SettingsEthernet -> GaugeIcon
WebAsset -> AppWindowIcon
2025-05-15 11:43:35 -03:00
Bruno Quaresma ba6690f2ee fix: show no provisioners warning (#17835)
<img width="1510" alt="Screenshot 2025-05-14 at 14 53 02"
src="https://github.com/user-attachments/assets/f9c0fbb9-ea39-4fbc-a550-00d9f609a01e"
/>

Fix https://github.com/coder/coder/issues/17421
2025-05-15 11:37:20 -03:00
Thomas Kosiewski 1bacd82e80 feat: add API key scope to restrict access to user data (#17692) 2025-05-15 15:32:52 +01:00
Bruno Quaresma ee2aeb44d7 fix: avoid pulling containers when it is not enabled (#17855)
We've been continuously pulling the containers endpoint even when the
agent does not support containers. To optimize the requests, we can
check if it is throwing an error and stop if it is a 403 status code.
2025-05-15 11:13:09 -03:00
Edward Angert c42a3156cc docs: add dev containers to manifest.json (#17854)
[preview](http://coder.com/docs/@dev-container-manifest/admin/templates/extending-templates/devcontainers)
2025-05-15 13:18:21 +00:00
Mathias Fredriksson 3de0003e4b feat(agent): send devcontainer CLI logs during recreate (#17845)
We need a way to surface what's happening to the user, since autostart
logs here, it's natural we do so during re-create as well.

Updates #16424
2025-05-15 16:06:56 +03:00
Hugo Dutka 6e1ba75b06 chore: retry failed race tests in CI (#17846)
This PR enables retrying failed tests in the race suites unless a data
race was detected. The goal is to reduce how often flakes disrupt
developers' workflows.

I bumped gotestsum to a revision from the `main` branch because it
includes the `--rerun-fails-abort-on-data-race` flag which [I recently
contributed](https://github.com/gotestyourself/gotestsum/pull/497).

Incidentally, you can see it [in action in a CI job on this very
PR](https://github.com/coder/coder/actions/runs/15040840724/job/42271999592?pr=17846#step:8:647).
2025-05-15 14:11:36 +02:00
Yevhenii Shcherbina 2aa8cbebd7 fix: exclude deleted templates from metrics collection (#17839)
Also add some clarification about the lack of database constraints for
soft template deletion.

---------

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
Co-authored-by: Danny Kopping <dannykopping@gmail.com>
2025-05-15 13:33:58 +02:00
Danny Kopping f2edcf3f59 fix: add missing clause for tracking replacements (#17849)
We should only be tracking resource replacements during a prebuild
claim.

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
2025-05-15 13:02:30 +02:00
Mathias Fredriksson 522c178271 fix(agent/agentcontainers): always use /bin/sh for devcontainer autostart (#17847)
This fixes startup issues when the user shell is set to Fish.

Refs: #17845
2025-05-15 12:49:52 +03:00
Mathias Fredriksson eb6412a69b refactor(agent/agentcontainers): update routes and locking in container api (#17768)
This refactor updates the devcontainer routes and in-api locking for
better clarity.

Updates #16424
2025-05-15 11:29:26 +03:00
Bruno Quaresma b6d72c8dee chore: replace MUI LoadingButton - 4 (#17834)
- ScheduleForm
- SecurityForm
- HistorySidebar
- WorkspacesPageView
2025-05-14 22:18:10 -03:00
Bruno Quaresma 35a04c7fb2 refactor: use the new Table component for the Templates table (#17838)
<img width="1624" alt="Screenshot 2025-05-14 at 15 11 56"
src="https://github.com/user-attachments/assets/01fd5fe2-35d4-4fae-a668-68af2b9f9bd6"
/>
2025-05-14 17:11:32 -03:00
brettkolodny 73251cf5b2 chore: add documentation to the coder ssh command regarding feature parity with ssh (#17827)
Closes
[coder/internal#628](https://github.com/coder/internal/issues/628)

---------

Co-authored-by: M Atif Ali <atif@coder.com>
2025-05-14 15:42:44 -04:00
brettkolodny 9093dbc516 feat: hide hidden and non-healthy apps in the workspaces table (#17830)
Closes
[coder/internal#633](https://github.com/coder/internal/issues/633)
2025-05-14 13:51:45 -04:00
Steven Masley 789c4beba7 chore: add dynamic parameter error if missing metadata from provisioner (#17809) 2025-05-14 12:21:36 -05:00
ケイラ f3bcac2e90 refactor: improve overlayFS errors (#17808) 2025-05-14 10:26:47 -06:00
dependabot[bot] 4d00b76ef4 chore: bump github.com/justinas/nosurf from 1.1.1 to 1.2.0 (#17829)
Bumps [github.com/justinas/nosurf](https://github.com/justinas/nosurf)
from 1.1.1 to 1.2.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/justinas/nosurf/releases">github.com/justinas/nosurf's
releases</a>.</em></p>
<blockquote>
<h2>v1.2.0</h2>
<p>This is a <em>security</em> release for nosurf. It mainly addresses
<a
href="https://github.com/justinas/nosurf-cve-2025-46721">CVE-2025-46721</a>.</p>
<p>This release technically includes breaking changes, as nosurf starts
applying same-origin checks that were not previously enforced. In most
cases, users will not need to make any changes to their code. However,
it is recommended to read <a
href="https://github.com/justinas/nosurf/blob/master/docs/origin-checks.md">the
documentation on nosurf's trusted origin checks</a> before
upgrading.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/justinas/nosurf/commit/ec9bb776d8e5ba9e906b6eb70428f4e7b009feee"><code>ec9bb77</code></a>
Rework origin checks (<a
href="https://redirect.github.com/justinas/nosurf/issues/74">#74</a>)</li>
<li><a
href="https://github.com/justinas/nosurf/commit/e5c9c1fe2d4f69668ff78f872abf3b396a08673a"><code>e5c9c1f</code></a>
Add GitHub Actions CI, fix lints and tests</li>
<li>See full diff in <a
href="https://github.com/justinas/nosurf/compare/v1.1.1...v1.2.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/justinas/nosurf&package-manager=go_modules&previous-version=1.1.1&new-version=1.2.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)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/coder/coder/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-14 15:08:52 +00:00
Edward Angert 74934e174e docs: add file sync to coder desktop docs (#17463)
closes #16869 

section could use more about:

- [x] sync direction options?
- [x] how to resolve conflicts
- [x] EA --> Beta


[preview](https://coder.com/docs/@16869-desktop-file-sync/user-guides/desktop)

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-05-14 10:05:33 -04:00
Bruno Quaresma df56a13947 chore: replace MUI icons with Lucide icons - 12 (#17815)
AddOutlined -> PlusIcon
RemoveOutlined -> TrashIcon
ScheduleOutlined -> ClockIcon
2025-05-14 09:54:19 -03:00
Danny Kopping 6e967780c9 feat: track resource replacements when claiming a prebuilt workspace (#17571)
Closes https://github.com/coder/internal/issues/369

We can't know whether a replacement (i.e. drift of terraform state
leading to a resource needing to be deleted/recreated) will take place
apriori; we can only detect it at `plan` time, because the provider
decides whether a resource must be replaced and it cannot be inferred
through static analysis of the template.

**This is likely to be the most common gotcha with using prebuilds,
since it requires a slight template modification to use prebuilds
effectively**, so let's head this off before it's an issue for
customers.

Drift details will now be logged in the workspace build logs:


![image](https://github.com/user-attachments/assets/da1988b6-2cbe-4a79-a3c5-ea29891f3d6f)

Plus a notification will be sent to template admins when this situation
arises:


![image](https://github.com/user-attachments/assets/39d555b1-a262-4a3e-b529-03b9f23bf66a)

A new metric - `coderd_prebuilt_workspaces_resource_replacements_total`
- will also increment each time a workspace encounters replacements.

We only track _that_ a resource replacement occurred, not how many. Just
one is enough to ruin a prebuild, but we can't know apriori which
replacement would cause this.
For example, say we have 2 replacements: a `docker_container` and a
`null_resource`; we don't know which one might
cause an issue (or indeed if either would), so we just track the
replacement.

---------

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
2025-05-14 14:52:22 +02:00
Bruno Quaresma e75d1c1ce5 chore: replace MUI LoadingButton with Button + Spinner - 2 (#17817) 2025-05-14 09:37:01 -03:00
Bruno Quaresma c7bc4047ba chore: replace MUI LoadingButton with Button + Spinner - 1 (#17816) 2025-05-14 09:35:21 -03:00
Sas Swart 425ee6fa55 feat: reinitialize agents when a prebuilt workspace is claimed (#17475)
This pull request allows coder workspace agents to be reinitialized when
a prebuilt workspace is claimed by a user. This facilitates the transfer
of ownership between the anonymous prebuilds system user and the new
owner of the workspace.

Only a single agent per prebuilt workspace is supported for now, but
plumbing has already been done to facilitate the seamless transition to
multi-agent support.

---------

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
Co-authored-by: Danny Kopping <dannykopping@gmail.com>
2025-05-14 14:15:36 +02:00
Bruno Quaresma fcbdd1a28e refactor: replace badge by status indicator (#17811)
**Why?**
In the workspaces page, it is using the status indicator, and not the
badge anymore, so to keep the UI consistent, I'm replacing the badge by
the indicator in the workspace page too.

**Before:**
<img width="672" alt="Screenshot 2025-05-13 at 19 14 17"
src="https://github.com/user-attachments/assets/0e8ea4bd-68d1-4d27-b81b-f79f15cabb2c"
/>

**After:**
<img width="672" alt="Screenshot 2025-05-13 at 19 14 21"
src="https://github.com/user-attachments/assets/45719262-011e-4fc8-9ebe-fe9e33d9d572"
/>
2025-05-14 09:11:25 -03:00
Bruno Quaresma 80e1be0db1 fix: replace wrong emoji reference (#17810)
Before:
<img width="713" alt="Screenshot 2025-05-13 at 19 01 15"
src="https://github.com/user-attachments/assets/9e4438a4-28db-4d94-a9ce-cecfb73ce8ab"
/>

After:
<img width="713" alt="Screenshot 2025-05-13 at 19 02 22"
src="https://github.com/user-attachments/assets/627ddbb2-45d1-48a1-bd34-a998e11966a2"
/>
2025-05-14 09:03:01 -03:00
Bruno Quaresma f87dbe757e chore: replace MUI icons with Lucide icons - 11 (#17814)
PersonOutlined -> UserIcon
Schedule -> ClockIcon
SettingsSuggest -> SettingsIcon
SettingsOutlined -> SettingsIcon
CodeOutlined -> CodeIcon
TimerOutlined -> TimerIcon
2025-05-14 08:48:08 -03:00
Bruno Quaresma c71839294b fix: don't open a window for external apps (#17813)
This prevents empty windows like the following to happen:

![image](https://github.com/user-attachments/assets/0a444938-316e-4d48-bdfc-770d1b4b2bf0)
2025-05-14 08:41:33 -03:00
Bruno Quaresma 67e40244a4 feat: add extra workspace actions in the workspaces table (#17775)
**Demo:**
<img width="1624" alt="Screenshot 2025-05-12 at 16 53 36"
src="https://github.com/user-attachments/assets/7f125b31-5ce8-4c1f-8e26-c3136346cae3"
/>
2025-05-13 18:53:43 -03:00
ケイラ 60762d4c13 feat: load terraform modules when using dynamic parameters (#17714) 2025-05-13 16:07:29 -05:00
Edward Angert f9817af11f docs: add section on how to retrieve user list (#17798)
previews
- [admin/users](https://coder.com/docs/@export-coder-users/admin/users)
-
[reference/cli/users](https://coder.com/docs/@export-coder-users/reference/cli/users)

followup to slack thread:

> Tim
> what's the best way for customers to export a list of Coder users?
>
> @ericpaulsen
> the `/api/v2/users` API route returns all users in the deployment
(along with other information - email, status, username, etc.). from
<https://coder.com/docs/reference/api/users#get-users>


- adds an easy-to-find section to the admin/users doc
- updates the cli commands with short descriptions

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
Co-authored-by: M Atif Ali <atif@coder.com>
2025-05-13 20:48:16 +00:00
M Atif Ali 170f41ac55 chore: fix release calendar and script (#17745)
Updates the script for the release calendar to use the actual release
dates.

This is done to work around the anomaly of the delayed May release.
2025-05-14 00:04:37 +05:00
Dean Sheather ef745c0c5d chore: optimize workspace_latest_builds view query (#17789)
Avoids two sequential scans of massive tables (`workspace_builds`,
`provisioner_jobs`) and uses index scans instead. This new view largely
replicates our already optimized query `GetWorkspaces` to fetch the
latest build.

The original query and the new query were compared against the dogfood
database to ensure they return the exact same data in the exact same
order (minus the new `workspaces.deleted = false` filter to improve
performance even more). The performance is massively improved even
without the `workspaces.deleted = false` filter, but it was added to
improve it even more.

Note: these query times are probably inflated due to high database load
on our dogfood environment that this intends to partially resolve.

Before: 2,139ms
([explain](https://explain.dalibo.com/plan/997e4fch241b46e6))

After: 33ms
([explain](https://explain.dalibo.com/plan/c888dc223870f181))

Co-authored-by: Cian Johnston <cian@coder.com>

---------

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
Co-authored-by: Mathias Fredriksson <mafredri@gmail.com>
Co-authored-by: Danny Kopping <dannykopping@gmail.com>
2025-05-13 20:51:01 +02:00
Danny Kopping b2a1de9e2a feat: fetch prebuilds metrics state in background (#17792)
`Collect()` is called whenever the `/metrics` endpoint is hit to
retrieve metrics.

The queries used in prebuilds metrics collection are quite heavy, and we
want to avoid having them running concurrently / too often to keep db
load down.

Here I'm moving towards a background retrieval of the state required to
set the metrics, which gets invalidated every interval.

Also introduces `coderd_prebuilt_workspaces_metrics_last_updated` which
operators can use to determine when these metrics go stale.

See https://github.com/coder/coder/pull/17789 as well.

---------

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
2025-05-13 20:27:41 +02:00
Bruno Quaresma 709445e6fb chore: replace MUI icons with Lucide icons - 9 (#17796)
OpenInNew -> ExternalLinkIcon
KeyboardArrowLeft -> ChevronLeftIcon
KeyboardArrowRight -> ChevronRightIcon
Settings -> SettingsIcon
2025-05-13 13:53:06 -04:00
Steven Masley 64807e1d61 chore: apply the 4mb max limit on drpc protocol message size (#17771)
Respect the 4mb max limit on proto messages
2025-05-13 11:24:51 -05:00
Cian Johnston a1c03b6c5f feat: add experimental Chat UI (#17650)
Builds on https://github.com/coder/coder/pull/17570

Frontend portion of https://github.com/coder/coder/tree/chat originally
authored by @kylecarbs

Additional changes:
- Addresses linter complaints
- Brings `ChatToolInvocation` argument definitions in line with those
defined in `codersdk/toolsdk`
- Ensures chat-related features are not shown unless
`ExperimentAgenticChat` is enabled.

Co-authored-by: Kyle Carberry <kyle@carberry.com>
2025-05-13 17:24:10 +01:00
Charlie Voiselle 8f64d49b22 chore: update alpine 3.21.2 => 3.21.3 (#17773)
Resolves 3 CVEs in base container (1 High, 2 Medium)

| CVE ID         | CVSS Score | Package / Version               |
| -------------- | ---------- | ------------------------------  |
| CVE-2025-26519 | 8.1 High   | apk / alpine/musl / 1.2.5-r8    |
| CVE-2024-12797 | 6.3 Medium | apk / alpine/openssl / 3.3.2-r4 |
| CVE-2024-13176 | 4.1 Medium | apk / alpine/openssl / 3.3.2-r4 |
2025-05-13 11:49:56 -04:00
Bruno Quaresma 86da21c491 chore: replace MUI icons with Lucide icons - 10 (#17797)
CloseOutlined -> XIcon
SearchOutlined -> SearchIcon
Refresh -> RotateCwIcon
Build -> WrenchIcon
2025-05-13 12:31:36 -03:00
Bruno Quaresma eb9a651acd chore: replace MUI icons with Lucide icons - 8 (#17778)
1. Replaced CheckOutlined with CheckIcon in:
  - TemplateVersionStatusBadge.tsx
  - TemplateEmbedPage.tsx
  - IntervalMenu.tsx
  - WeekPicker.tsx
  - SelectMenu.tsx
2. Replaced EditCalendarOutlined with CalendarCogIcon in:
  - UserSettingsPage/Sidebar.tsx
  - Sidebar.stories.tsx
3. Replaced LockOutlined with LockIcon in:
  - UserSettingsPage/Sidebar.tsx
  - TemplateSettingsPage/Sidebar.tsx
  - Sidebar.stories.tsx
4. Replaced Person with UserIcon in:
  - UserSettingsPage/Sidebar.tsx
  - Sidebar.stories.tsx
5. Replaced VpnKeyOutlined with KeyIcon in:
  - UserSettingsPage/Sidebar.tsx
  - Sidebar.stories.tsx
6. Replaced FingerprintOutlined with FingerprintIcon in:
  - UserSettingsPage/Sidebar.tsx
  - Sidebar.stories.tsx
2025-05-13 10:09:45 -03:00
Bruno Quaresma 02425ee864 chore: replace MUI icons with Lucide icons - 7 (#17776)
VisibilityOffOutlined -> EyeOffIcon
VisibilityOutlined -> EyeIcon
2025-05-13 10:08:41 -03:00
Danielle Maywood b0788f410f chore: rename "Test Notification" to "Troubleshooting Notification" (#17790)
Rename the "Test Notification" to "Troubleshooting Notification"
2025-05-13 13:52:55 +01:00
Susana Ferreira 599bb35a04 fix(coderd): list templates returns non-deprecated templates by default (#17747)
## Description

Modifies the behaviour of the "list templates" API endpoints to return
non-deprecated templates by default. Users can still query for
deprecated templates by specifying the `deprecated=true` query
parameter.

**Note:** The deprecation feature is an enterprise-level feature

## Affected Endpoints
* /api/v2/organizations/{organization}/templates
* /api/v2/templates

Fixes #17565
2025-05-13 12:44:46 +01:00
Danielle Maywood 7f056da088 feat: add hidden CODER_AGENT_IS_SUB_AGENT flag to coder agent (#17783)
Closes https://github.com/coder/internal/issues/620

Adds a new, hidden, flag `CODER_AGENT_IS_SUB_AGENT` to the `coder agent`
command.
2025-05-13 10:57:50 +01:00
Danielle Maywood 0b5f27f566 feat: add parent_id column to workspace_agents table (#17758)
Adds a new nullable column `parent_id` to `workspace_agents` table. This
lays the groundwork for having child agents.
2025-05-13 00:01:31 +01:00
Steven Masley 398b999d8f chore: pass previous values into terraform apply (#17696)
Pass previous workspace build parameter values into the terraform
`plan/apply`. Enforces monotonicity in terraform as well as `coderd`.
2025-05-12 15:32:00 -05:00
ケイラ d0ab91c16f fix: reduce size of terraform modules archive (#17749) 2025-05-12 13:50:07 -06:00
ケイラ 10b44a5d1d fix: use monochrome zed icon (#17774) 2025-05-12 13:18:18 -06:00
Callum Styan 578b9ff5fe fix: enrich the notLoggedInMessage error message with the full path to the coder (#17715)
---------

Signed-off-by: Callum Styan <callumstyan@gmail.com>
2025-05-12 11:45:24 -07:00
Bruno Quaresma 15bd7a3add chore: replace MUI icons with Lucide icons - 5 (#17750)
Replacements:

MUI | Lucide
OpenInNewOutlined | ExternalLinkIcon
HelpOutline | CircleHelpIcon
ErrorOutline | CircleAlertIcon
2025-05-12 13:36:51 -03:00
Cian Johnston e0dd50d7fb chore(cli): fix test flake in TestExpMcpServer (#17772)
Test was failing inside a Coder workspace.
2025-05-12 17:15:24 +01:00
Hugo Dutka ea2cae0e20 chore: tune postgres CI tests (#17756)
Changes:
- use a bigger runner for test-go-pg on Linux
- use a depot runner to run postgres tests on Windows
- use the same Windows ramdisk action for postgres tests as the one
currently used for in-memory tests
- put GOTMPDIR on a ramdisk on Windows
- tune the number of tests running in parallel on macOS and Windows
- use a ramdisk for postgres on macOS
- turn off Spotlight indexing on macOS
- rerun failing tests to stop flakes from disrupting developers

Results:
- test-go-pg on Linux completing in 50% of the time it takes to run on
main ([run on
main](https://github.com/coder/coder/actions/runs/14937632073/job/41968714750),
[run on this
PR](https://github.com/coder/coder/actions/runs/14956584795/job/42013097674?pr=17756))
- macOS tests completing in 70% of the time ([run on
main](https://github.com/coder/coder/actions/runs/14921155015/job/41916639889),
[run on this
PR](https://github.com/coder/coder/actions/runs/14956590940/job/42013102975))
- Windows tests completing in 50% of the time ([run on
main](https://github.com/coder/coder/actions/runs/14921155015/job/41916640058),
[run on this
PR](https://github.com/coder/coder/actions/runs/14956590940/job/42013103116))

This PR helps unblock https://github.com/coder/coder/issues/15109.
2025-05-12 17:38:25 +02:00
Steven Masley 37832413ba chore: resolve internal drpc package conflict (#17770)
Our internal drpc package name conflicts with the external one in usage. 
`drpc.*` == external
`drpcsdk.*` == internal
2025-05-12 10:31:38 -05:00
Danny Kopping af2941bb92 feat: add is_prebuild_claim to distinguish post-claim provisioning (#17757)
Used in combination with
https://github.com/coder/terraform-provider-coder/pull/396

This is required by both https://github.com/coder/coder/pull/17475 and
https://github.com/coder/coder/pull/17571

Operators may need to conditionalize their templates to perform certain
operations once a prebuilt workspace has been claimed. This value will
**only** be set once a claim takes place and a subsequent `terraform
apply` occurs. Any `terraform apply` runs thereafter will be
indistinguishable from a normal run on a workspace.

---------

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
2025-05-12 14:19:03 +00:00
dependabot[bot] 799a0ba573 chore: bump github.com/valyala/fasthttp from 1.61.0 to 1.62.0 (#17766)
Bumps [github.com/valyala/fasthttp](https://github.com/valyala/fasthttp)
from 1.61.0 to 1.62.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/valyala/fasthttp/releases">github.com/valyala/fasthttp's
releases</a>.</em></p>
<blockquote>
<h2>v1.62.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Add support for streaming identity-encoded or unknown length
response bodies by <a
href="https://github.com/osxtest"><code>@​osxtest</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2000">valyala/fasthttp#2000</a></li>
<li>feat: move user values to Request structure by <a
href="https://github.com/mdenushev"><code>@​mdenushev</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/1999">valyala/fasthttp#1999</a></li>
<li>chore(deps): bump golangci/golangci-lint-action from 7 to 8 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2001">valyala/fasthttp#2001</a></li>
<li>chore(deps): bump golang.org/x/crypto from 0.37.0 to 0.38.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2002">valyala/fasthttp#2002</a></li>
<li>chore(deps): bump golang.org/x/net from 0.39.0 to 0.40.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2003">valyala/fasthttp#2003</a></li>
<li>modify <code>acceptConn</code> for <code>RIO</code> by <a
href="https://github.com/wamshawn"><code>@​wamshawn</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2005">valyala/fasthttp#2005</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/osxtest"><code>@​osxtest</code></a> made
their first contribution in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2000">valyala/fasthttp#2000</a></li>
<li><a href="https://github.com/wamshawn"><code>@​wamshawn</code></a>
made their first contribution in <a
href="https://redirect.github.com/valyala/fasthttp/pull/2005">valyala/fasthttp#2005</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/valyala/fasthttp/compare/v1.61.0...v1.62.0">https://github.com/valyala/fasthttp/compare/v1.61.0...v1.62.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/valyala/fasthttp/commit/9e457ebd982fe77cce75b59667ff20d4c3af30b2"><code>9e457eb</code></a>
mod acceptConn (<a
href="https://redirect.github.com/valyala/fasthttp/issues/2005">#2005</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/69a68df4eb257570ffed33b85a8e6d523b07ed70"><code>69a68df</code></a>
chore(deps): bump golang.org/x/net from 0.39.0 to 0.40.0 (<a
href="https://redirect.github.com/valyala/fasthttp/issues/2003">#2003</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/83fbe80f9379db8388b4ee24a2eaab4674998b3f"><code>83fbe80</code></a>
chore(deps): bump golang.org/x/crypto from 0.37.0 to 0.38.0 (<a
href="https://redirect.github.com/valyala/fasthttp/issues/2002">#2002</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/51817a4eb67dabb67e0870efccb20caafe0a936d"><code>51817a4</code></a>
chore(deps): bump golangci/golangci-lint-action from 7 to 8 (<a
href="https://redirect.github.com/valyala/fasthttp/issues/2001">#2001</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/41a1449627b8ba0cbf30030ea41fc1ae4ca514f2"><code>41a1449</code></a>
feat: move user values to Request structure (<a
href="https://redirect.github.com/valyala/fasthttp/issues/1999">#1999</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/1345f42ede3f31b6fe6b42342256f338261bd9d5"><code>1345f42</code></a>
Add support for streaming identity-encoded or unknown length response
bodies ...</li>
<li>See full diff in <a
href="https://github.com/valyala/fasthttp/compare/v1.61.0...v1.62.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/valyala/fasthttp&package-manager=go_modules&previous-version=1.61.0&new-version=1.62.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>
2025-05-12 12:24:00 +00:00
dependabot[bot] 345a239838 chore: bump github.com/open-policy-agent/opa from 1.3.0 to 1.4.2 (#17674)
Bumps
[github.com/open-policy-agent/opa](https://github.com/open-policy-agent/opa)
from 1.3.0 to 1.4.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/open-policy-agent/opa/releases">github.com/open-policy-agent/opa's
releases</a>.</em></p>
<blockquote>
<h2>v1.4.2</h2>
<p>This is a bug fix release addressing the missing
<code>capabilities/v1.4.1.json</code> in the v1.4.1 release.</p>
<h2>v1.4.1</h2>
<p>⚠️ Please skip this release and go straight to v1.4.2 ⚠️
This release is broken due to a mistake during the release process and
the artifacts are missing a crucial capabilities file.
Sorry for any inconvenience.</p>
<hr />
<p>This is a security fix release for the fixes published in Go <a
href="https://groups.google.com/g/golang-announce/c/4t3lzH3I0eI">1.24.1</a>
and <a
href="https://groups.google.com/g/golang-announce/c/Y2uBTVKjBQk">1.24.2</a></p>
<ul>
<li>build: bump go to 1.24.2 (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7544">#7544</a>)
(authored by <a
href="https://github.com/sspaink"><code>@​sspaink</code></a>)
Addressing <code>CVE-2025-22870</code> and <code>CVE-2025-22871</code>
vulnerabilities in the Go runtime.</li>
</ul>
<h2>v1.4.0</h2>
<p>This release contains a security fix addressing CVE-2025-46569.
It also includes a mix of new features, bugfixes, and dependency
updates.</p>
<h4>Security Fix: CVE-2025-46569 - OPA server Data API HTTP path
injection of Rego (<a
href="https://github.com/open-policy-agent/opa/security/advisories/GHSA-6m8w-jc87-6cr7">GHSA-6m8w-jc87-6cr7</a>)</h4>
<p>A vulnerability in the OPA server's <a
href="https://www.openpolicyagent.org/docs/latest/rest-api/#data-api">Data
API</a> allows an attacker to craft the HTTP path in a way that injects
Rego code into the query that is evaluated.<br />
The evaluation result cannot be made to return any other data than what
is generated by the requested path, but this path can be misdirected,
and the injected Rego code can be crafted to make the query succeed or
fail; opening up for oracle attacks or, given the right circumstances,
erroneous policy decision results.
Furthermore, the injected code can be crafted to be computationally
expensive, resulting in a Denial Of Service (DoS) attack.</p>
<p><strong>Users are only impacted if all of the following
apply:</strong></p>
<ul>
<li>OPA is deployed as a standalone server (rather than being used as a
Go library)</li>
<li>The OPA server is exposed outside of the local host in an untrusted
environment.</li>
<li>The configured <a
href="https://www.openpolicyagent.org/docs/latest/security/#authentication-and-authorization">authorization
policy</a> does not do exact matching of the input.path attribute when
deciding if the request should be allowed.</li>
</ul>
<p><strong>or, if all of the following apply:</strong></p>
<ul>
<li>OPA is deployed as a standalone server.</li>
<li>The service connecting to OPA allows 3rd parties to insert
unsanitised text into the path of the HTTP request to OPA’s Data
API.</li>
</ul>
<p>Note: With <strong>no</strong> <a
href="https://www.openpolicyagent.org/docs/latest/security/#authentication-and-authorization">Authorization
Policy</a> configured for restricting API access (the default
configuration), the RESTful <a
href="https://www.openpolicyagent.org/docs/latest/rest-api/#data-api">Data
API</a> provides access for managing Rego policies; and the RESTful <a
href="https://www.openpolicyagent.org/docs/latest/rest-api/#query-api">Query
API</a> facilitates advanced queries.
Full access to these APIs provides both simpler, and broader access than
what the security issue describes here can facilitate.
As such, OPA servers exposed to a network are <strong>not</strong>
considered affected by the attack described here if they are knowingly
not restricting access through an Authorization Policy.</p>
<p>This issue affects all versions of OPA prior to 1.4.0.</p>
<p>See the <a
href="https://github.com/open-policy-agent/opa/security/advisories/GHSA-6m8w-jc87-6cr7">Security
Advisory</a> for more details.</p>
<p>Reported by <a
href="https://github.com/GamrayW"><code>@​GamrayW</code></a>, <a
href="https://github.com/HyouKash"><code>@​HyouKash</code></a>, <a
href="https://github.com/AdrienIT"><code>@​AdrienIT</code></a>, authored
by <a
href="https://github.com/johanfylling"><code>@​johanfylling</code></a></p>
<h3>Runtime, Tooling, SDK</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-policy-agent/opa/blob/main/CHANGELOG.md">github.com/open-policy-agent/opa's
changelog</a>.</em></p>
<blockquote>
<h2>1.4.2</h2>
<p>This is a bug fix release addressing the missing
<code>capabilities/v1.4.1.json</code> in the v1.4.1 release.</p>
<h2>1.4.1</h2>
<p>This is a security fix release for the fixes published in Go <a
href="https://groups.google.com/g/golang-announce/c/4t3lzH3I0eI">1.24.1</a>
and <a
href="https://groups.google.com/g/golang-announce/c/Y2uBTVKjBQk">1.24.2</a></p>
<ul>
<li>build: bump go to 1.24.2 (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7544">#7544</a>)
(authored by <a
href="https://github.com/sspaink"><code>@​sspaink</code></a>)
Addressing <code>CVE-2025-22870</code> and <code>CVE-2025-22871</code>
vulnerabilities in the Go runtime.</li>
</ul>
<h2>1.4.0</h2>
<p>This release contains a security fix addressing CVE-2025-46569.
It also includes a mix of new features, bugfixes, and dependency
updates.</p>
<h4>Security Fix: CVE-2025-46569 - OPA server Data API HTTP path
injection of Rego (<a
href="https://github.com/open-policy-agent/opa/security/advisories/GHSA-6m8w-jc87-6cr7">GHSA-6m8w-jc87-6cr7</a>)</h4>
<p>A vulnerability in the OPA server's <a
href="https://www.openpolicyagent.org/docs/latest/rest-api/#data-api">Data
API</a> allows an attacker to craft the HTTP path in a way that injects
Rego code into the query that is evaluated.<br />
The evaluation result cannot be made to return any other data than what
is generated by the requested path, but this path can be misdirected,
and the injected Rego code can be crafted to make the query succeed or
fail; opening up for oracle attacks or, given the right circumstances,
erroneous policy decision results.
Furthermore, the injected code can be crafted to be computationally
expensive, resulting in a Denial Of Service (DoS) attack.</p>
<p><strong>Users are only impacted if all of the following
apply:</strong></p>
<ul>
<li>OPA is deployed as a standalone server (rather than being used as a
Go library)</li>
<li>The OPA server is exposed outside of the local host in an untrusted
environment.</li>
<li>The configured <a
href="https://www.openpolicyagent.org/docs/latest/security/#authentication-and-authorization">authorization
policy</a> does not do exact matching of the input.path attribute when
deciding if the request should be allowed.</li>
</ul>
<p><strong>or, if all of the following apply:</strong></p>
<ul>
<li>OPA is deployed as a standalone server.</li>
<li>The service connecting to OPA allows 3rd parties to insert
unsanitised text into the path of the HTTP request to OPA’s Data
API.</li>
</ul>
<p>Note: With <strong>no</strong> <a
href="https://www.openpolicyagent.org/docs/latest/security/#authentication-and-authorization">Authorization
Policy</a> configured for restricting API access (the default
configuration), the RESTful <a
href="https://www.openpolicyagent.org/docs/latest/rest-api/#data-api">Data
API</a> provides access for managing Rego policies; and the RESTful <a
href="https://www.openpolicyagent.org/docs/latest/rest-api/#query-api">Query
API</a> facilitates advanced queries.
Full access to these APIs provides both simpler, and broader access than
what the security issue describes here can facilitate.
As such, OPA servers exposed to a network are <strong>not</strong>
considered affected by the attack described here if they are knowingly
not restricting access through an Authorization Policy.</p>
<p>This issue affects all versions of OPA prior to 1.4.0.</p>
<p>See the <a
href="https://github.com/open-policy-agent/opa/security/advisories/GHSA-6m8w-jc87-6cr7">Security
Advisory</a> for more details.</p>
<p>Reported by <a
href="https://github.com/GamrayW"><code>@​GamrayW</code></a>, <a
href="https://github.com/HyouKash"><code>@​HyouKash</code></a>, <a
href="https://github.com/AdrienIT"><code>@​AdrienIT</code></a>, authored
by <a
href="https://github.com/johanfylling"><code>@​johanfylling</code></a></p>
<h3>Runtime, Tooling, SDK</h3>
<ul>
<li>ast: Adding <code>rego_v1</code> feature to
<code>--v0-compatible</code> capabilities (<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7474">#7474</a>)
authored by <a
href="https://github.com/johanfylling"><code>@​johanfylling</code></a></li>
<li>executable: Add version and icon to OPA windows executable (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/3171">#3171</a>)
authored by <a
href="https://github.com/sspaink"><code>@​sspaink</code></a> reported by
<a
href="https://github.com/christophwille"><code>@​christophwille</code></a></li>
<li>format: Don't panic on format due to unexpected comments (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/6330">#6330</a>)
authored by <a
href="https://github.com/sspaink"><code>@​sspaink</code></a> reported by
<a href="https://github.com/sirpi"><code>@​sirpi</code></a></li>
<li>format: Avoid modifying strings when formatting (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/6220">#6220</a>)
authored by <a
href="https://github.com/sspaink"><code>@​sspaink</code></a> reported by
<a href="https://github.com/zregvart"><code>@​zregvart</code></a></li>
<li>plugins/status: FIFO buffer channel for status events to prevent
slow status API blocking (<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7522">#7522</a>)
authored by <a
href="https://github.com/sspaink"><code>@​sspaink</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/open-policy-agent/opa/commit/5e4582bb951f70641fe9ee85cc46245d079e5037"><code>5e4582b</code></a>
Prepare v1.4.2 release (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7547">#7547</a>)</li>
<li><a
href="https://github.com/open-policy-agent/opa/commit/3b64aff304139d6a84518813c54799d6d165f48d"><code>3b64aff</code></a>
Patch release v1.4.1 (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7545">#7545</a>)</li>
<li><a
href="https://github.com/open-policy-agent/opa/commit/8b0720247e65b97fe7715ca15682fee4040df4d1"><code>8b07202</code></a>
Prepare v1.4.0 release (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7541">#7541</a>)</li>
<li><a
href="https://github.com/open-policy-agent/opa/commit/ad2063247a14711882f18c387a511fc8094aa79c"><code>ad20632</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/open-policy-agent/opa/commit/24ff9cfb3ad0a6a5629f0b21458982d325ee03c5"><code>24ff9cf</code></a>
fix: return the raw strings when formatting (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7525">#7525</a>)</li>
<li><a
href="https://github.com/open-policy-agent/opa/commit/254f3bf0b9ee5faf1972ba31bbbe749bba19a000"><code>254f3bf</code></a>
fix(status plugin): make sure the latest status is read before manually
trigg...</li>
<li><a
href="https://github.com/open-policy-agent/opa/commit/9b5f6010c0503cd91eed8a56268a02d4895a42b4"><code>9b5f601</code></a>
docs: fix post merge badge (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7532">#7532</a>)</li>
<li><a
href="https://github.com/open-policy-agent/opa/commit/e4902774778da576da2a8f4b2fd50df6cc3da8b5"><code>e490277</code></a>
docs: Point path versioned requests to new sites (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7531">#7531</a>)</li>
<li><a
href="https://github.com/open-policy-agent/opa/commit/d65888c14f4cb2d67929590604415e35ba75f58c"><code>d65888c</code></a>
plugins/status: FIFO buffer channel for status events to prevent slow
status ...</li>
<li><a
href="https://github.com/open-policy-agent/opa/commit/eb77d10971ec772c3ac4968d4abe3666037d0338"><code>eb77d10</code></a>
docs: update edge links to use /docs/edge/ path (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7529">#7529</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/open-policy-agent/opa/compare/v1.3.0...v1.4.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/open-policy-agent/opa&package-manager=go_modules&previous-version=1.3.0&new-version=1.4.2)](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>
2025-05-12 12:23:29 +00:00
dependabot[bot] 0832afbaf4 chore: bump gopkg.in/DataDog/dd-trace-go.v1 from 1.72.1 to 1.73.0 (#17763)
Bumps gopkg.in/DataDog/dd-trace-go.v1 from 1.72.1 to 1.73.0.

<details>
<summary>Most Recent Ignore Conditions Applied to This Pull
Request</summary>

| Dependency Name | Ignore Conditions |
| --- | --- |
| gopkg.in/DataDog/dd-trace-go.v1 | [>= 1.58.a, < 1.59] |
</details>


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=gopkg.in/DataDog/dd-trace-go.v1&package-manager=go_modules&previous-version=1.72.1&new-version=1.73.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>
2025-05-12 12:11:02 +00:00
dependabot[bot] 4f1df34981 chore: bump github.com/mark3labs/mcp-go from 0.25.0 to 0.27.0 (#17762)
Bumps [github.com/mark3labs/mcp-go](https://github.com/mark3labs/mcp-go)
from 0.25.0 to 0.27.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mark3labs/mcp-go/releases">github.com/mark3labs/mcp-go's
releases</a>.</em></p>
<blockquote>
<h2>Release v0.27.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Support audio content type in tools/call and prompts/get by <a
href="https://github.com/dugenkui03"><code>@​dugenkui03</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/250">mark3labs/mcp-go#250</a></li>
<li>refactor(server): extract common HTTP transport configuration
options by <a
href="https://github.com/robert-jackson-glean"><code>@​robert-jackson-glean</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/253">mark3labs/mcp-go#253</a></li>
<li>ci: add check to verify generated code is up-to-date by <a
href="https://github.com/robert-jackson-glean"><code>@​robert-jackson-glean</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/258">mark3labs/mcp-go#258</a></li>
<li>fix(MCPServer): correct notification method in func
<code>RemoveResource()</code> by <a
href="https://github.com/cryo-zd"><code>@​cryo-zd</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/262">mark3labs/mcp-go#262</a></li>
<li>Create sample client by <a
href="https://github.com/ezynda3"><code>@​ezynda3</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/265">mark3labs/mcp-go#265</a></li>
<li>Fix the issue where the 'Shutdown' method fails to properly exit. by
<a
href="https://github.com/uppercaveman"><code>@​uppercaveman</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/255">mark3labs/mcp-go#255</a></li>
<li>test(server): reliably detect Start/Shutdown deadlock in SSEServer
by <a
href="https://github.com/robert-jackson-glean"><code>@​robert-jackson-glean</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/264">mark3labs/mcp-go#264</a></li>
<li>docs: make code examples in the README correct as per spec by <a
href="https://github.com/pottekkat"><code>@​pottekkat</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/268">mark3labs/mcp-go#268</a></li>
<li>feat(MCPServer): avoid unnecessary notifications when Resource/Tool
not exists by <a
href="https://github.com/cryo-zd"><code>@​cryo-zd</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/266">mark3labs/mcp-go#266</a></li>
<li>chore: replace <code>interface{}</code> with <code>any</code> by <a
href="https://github.com/pottekkat"><code>@​pottekkat</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/261">mark3labs/mcp-go#261</a></li>
<li>fix(Srv/stdio): risk of goroutine leaks and concurrent reads in
<code>readNextLine()</code> by <a
href="https://github.com/cryo-zd"><code>@​cryo-zd</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/257">mark3labs/mcp-go#257</a></li>
<li>docs: Remove reference to <code>mcp.RoleSystem</code> by <a
href="https://github.com/robert-jackson-glean"><code>@​robert-jackson-glean</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/269">mark3labs/mcp-go#269</a></li>
<li>fix: fix some obvious simplifications by <a
href="https://github.com/pottekkat"><code>@​pottekkat</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/267">mark3labs/mcp-go#267</a></li>
<li>Optimization of listByPagination Performance by <a
href="https://github.com/qiangmzsx"><code>@​qiangmzsx</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/246">mark3labs/mcp-go#246</a></li>
<li>fix: properly marshal <code>ToolAnnotations</code> with
<code>false</code> values by <a
href="https://github.com/pottekkat"><code>@​pottekkat</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/260">mark3labs/mcp-go#260</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/uppercaveman"><code>@​uppercaveman</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/255">mark3labs/mcp-go#255</a></li>
<li><a href="https://github.com/pottekkat"><code>@​pottekkat</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/268">mark3labs/mcp-go#268</a></li>
<li><a href="https://github.com/qiangmzsx"><code>@​qiangmzsx</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/246">mark3labs/mcp-go#246</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.26.0...v0.27.0">https://github.com/mark3labs/mcp-go/compare/v0.26.0...v0.27.0</a></p>
<h2>Release v0.26.0</h2>
<h2>What's Changed</h2>
<ul>
<li>feat(sse): Add <code>SessionWithTools</code> support to SSEServer by
<a
href="https://github.com/robert-jackson-glean"><code>@​robert-jackson-glean</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/232">mark3labs/mcp-go#232</a></li>
<li>Fix bug with MarshalJSON for NotificationParams by <a
href="https://github.com/Gelembjuk"><code>@​Gelembjuk</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/233">mark3labs/mcp-go#233</a></li>
<li>fix: write back error message if the response marshal failed by <a
href="https://github.com/ppzqh"><code>@​ppzqh</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/235">mark3labs/mcp-go#235</a></li>
<li>fix(server/sse): potential goroutine leak in Heartbeat sender by <a
href="https://github.com/cryo-zd"><code>@​cryo-zd</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/236">mark3labs/mcp-go#236</a></li>
<li>Fix stdio test compilation issues in CI by <a
href="https://github.com/ezynda3"><code>@​ezynda3</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/240">mark3labs/mcp-go#240</a></li>
<li>refactor(server/sse): rename WithBasePath to WithStaticBasePath by
<a
href="https://github.com/robert-jackson-glean"><code>@​robert-jackson-glean</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/238">mark3labs/mcp-go#238</a></li>
<li>fix(MCPServer): Session tool handler not used due to variable
shadowing by <a
href="https://github.com/cryo-zd"><code>@​cryo-zd</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/242">mark3labs/mcp-go#242</a></li>
<li>test: build mockstdio_server with isolated cache to prevent flaky CI
by <a
href="https://github.com/robert-jackson-glean"><code>@​robert-jackson-glean</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/241">mark3labs/mcp-go#241</a></li>
<li>fix: Use detached context for SSE message handling by <a
href="https://github.com/yash025"><code>@​yash025</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/244">mark3labs/mcp-go#244</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Gelembjuk"><code>@​Gelembjuk</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/233">mark3labs/mcp-go#233</a></li>
<li><a href="https://github.com/ppzqh"><code>@​ppzqh</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/235">mark3labs/mcp-go#235</a></li>
<li><a href="https://github.com/yash025"><code>@​yash025</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/244">mark3labs/mcp-go#244</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.25.0...v0.26.0">https://github.com/mark3labs/mcp-go/compare/v0.25.0...v0.26.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/e5121b37d7214e23c572e1b9a49ca5b8a4d648e4"><code>e5121b3</code></a>
Release v0.27.0</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/eeb7070c3dc7a3c1df64fe309a3b8433ea78096e"><code>eeb7070</code></a>
fix: properly marshal <code>ToolAnnotations</code> with
<code>false</code> values (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/260">#260</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/e1f1b4794ea047757a1272659b9c6a6d68826800"><code>e1f1b47</code></a>
optimize listByPagination (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/246">#246</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/46bfb6fbb69067de5513049479408732cbea5f33"><code>46bfb6f</code></a>
fix: fix some obvious simplifications (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/267">#267</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/716eabedfef62d99a04b749472b8cef27b404fa3"><code>716eabe</code></a>
docs: Remove reference to <code>mcp.RoleSystem</code> (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/269">#269</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/3dfa33164fe642a2adc8908c9d4794e8fb2cf806"><code>3dfa331</code></a>
fix(server/stdio): risk of concurrent reads and data loss in
readNextLine() (...</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/f8badd69d08f609cbbd7a218c3b2b8de05987277"><code>f8badd6</code></a>
chore: replace <code>interface{}</code> with <code>any</code> (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/261">#261</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/3442d321ad10a9edce5f2f76580e014a67de2229"><code>3442d32</code></a>
feat(MCPServer): avoid unnecessary notifications when Resource/Tool not
exist...</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/61b9784ea84d637e29a1bb2b226b953c4bdce4fe"><code>61b9784</code></a>
docs: make code examples in the README correct as per spec (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/268">#268</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/1c99eaf3bfa39f832e73ec26402b4c5fa62d0d16"><code>1c99eaf</code></a>
test(server): reliably detect Start/Shutdown deadlock in SSEServer (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/264">#264</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/mark3labs/mcp-go/compare/v0.25.0...v0.27.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/mark3labs/mcp-go&package-manager=go_modules&previous-version=0.25.0&new-version=0.27.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>
2025-05-12 12:09:34 +00:00
dependabot[bot] 87152db05b ci: bump the github-actions group across 1 directory with 4 updates (#17760)
Bumps the github-actions group with 4 updates in the / directory:
[crate-ci/typos](https://github.com/crate-ci/typos),
[dependabot/fetch-metadata](https://github.com/dependabot/fetch-metadata),
[tj-actions/changed-files](https://github.com/tj-actions/changed-files)
and [github/codeql-action](https://github.com/github/codeql-action).

Updates `crate-ci/typos` from 1.31.1 to 1.32.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/releases">crate-ci/typos's
releases</a>.</em></p>
<blockquote>
<h2>v1.32.0</h2>
<h2>[1.32.0] - 2025-05-02</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1264">April
2025</a> changes</li>
</ul>
<h2>v1.31.2</h2>
<h2>[1.31.2] - 2025-04-28</h2>
<h3>Fixes</h3>
<ul>
<li><em>(exclusion)</em> Don't confused emails as base64</li>
<li><em>(dict)</em> Correct <code>contamint</code> to
<code>contaminant</code>, not <code>contaminat</code></li>
<li><em>(dict)</em> Correct <code>contamints</code> to
<code>contaminants</code>, not <code>contaminats</code></li>
</ul>
<h3>Performance</h3>
<ul>
<li>Improve tokenization performance</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/blob/master/CHANGELOG.md">crate-ci/typos's
changelog</a>.</em></p>
<blockquote>
<h1>Change Log</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>The format is based on <a href="http://keepachangelog.com/">Keep a
Changelog</a>
and this project adheres to <a href="http://semver.org/">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased] - ReleaseDate</h2>
<h2>[1.32.0] - 2025-05-02</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1264">April
2025</a> changes</li>
</ul>
<h2>[1.31.2] - 2025-04-28</h2>
<h3>Fixes</h3>
<ul>
<li><em>(exclusion)</em> Don't confused emails as base64</li>
<li><em>(dict)</em> Correct <code>contamint</code> to
<code>contaminant</code>, not <code>contaminat</code></li>
<li><em>(dict)</em> Correct <code>contamints</code> to
<code>contaminants</code>, not <code>contaminats</code></li>
</ul>
<h3>Performance</h3>
<ul>
<li>Improve tokenization performance</li>
</ul>
<h2>[1.31.1] - 2025-03-31</h2>
<h3>Fixes</h3>
<ul>
<li><em>(dict)</em> Also correct <code>typ</code> to
<code>type</code></li>
</ul>
<h2>[1.31.0] - 2025-03-28</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1248">March
2025</a> changes</li>
</ul>
<h2>[1.30.3] - 2025-03-24</h2>
<h3>Features</h3>
<ul>
<li>Support detecting <code>go.work</code> and <code>go.work.sum</code>
files</li>
</ul>
<h2>[1.30.2] - 2025-03-10</h2>
<h3>Features</h3>
<ul>
<li>Add <code>--highlight-words</code> and
<code>--highlight-identifiers</code> for easier debugging of config</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/crate-ci/typos/commit/0f0ccba9ed1df83948f0c15026e4f5ccfce46109"><code>0f0ccba</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/5cb94233a615fb61c4500572b64d22425e96099a"><code>5cb9423</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/2af8019e8687956766fbe303524b7f9b820885dd"><code>2af8019</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/crate-ci/typos/commit/970eb5442de8ea11b6b0e84904a11eda611a65db"><code>970eb54</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1291">#1291</a>
from epage/may</li>
<li><a
href="https://github.com/crate-ci/typos/commit/e84064f2d66ab3e807cfa29a1e203f78e56e115e"><code>e84064f</code></a>
feat(dict): April 2025 updates</li>
<li><a
href="https://github.com/crate-ci/typos/commit/8dddd500291130802cbb593827be9d862181402c"><code>8dddd50</code></a>
chore(deps): Update compatible (<a
href="https://redirect.github.com/crate-ci/typos/issues/1289">#1289</a>)</li>
<li><a
href="https://github.com/crate-ci/typos/commit/3be83342e28b9421997e9f781f713f8dde8453d2"><code>3be8334</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/f16e5d44ec16bfba422e39e66c11d58fc1a3da76"><code>f16e5d4</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/crate-ci/typos/commit/e0927bd9d2433efaf2c8a998ad0434cb94304415"><code>e0927bd</code></a>
docs(action): Remove non-existent variables</li>
<li><a
href="https://github.com/crate-ci/typos/commit/2dbcebf645e8918080b28c7eb1f913143a3426da"><code>2dbcebf</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1287">#1287</a>
from epage/dict</li>
<li>Additional commits viewable in <a
href="https://github.com/crate-ci/typos/compare/b1a1ef3893ff35ade0cfa71523852a49bfd05d19...0f0ccba9ed1df83948f0c15026e4f5ccfce46109">compare
view</a></li>
</ul>
</details>
<br />

Updates `dependabot/fetch-metadata` from 2.3.0 to 2.4.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dependabot/fetch-metadata/releases">dependabot/fetch-metadata's
releases</a>.</em></p>
<blockquote>
<h2>v2.4.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Bump actions/create-github-app-token from 1.11.0 to 1.11.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/dependabot/fetch-metadata/pull/598">dependabot/fetch-metadata#598</a></li>
<li>Bump <code>@​vercel/ncc</code> from 0.38.1 to 0.38.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/dependabot/fetch-metadata/pull/578">dependabot/fetch-metadata#578</a></li>
<li>Add missing <code>@octokit/request-error</code> to
<code>package.json</code> by <a
href="https://github.com/jeffwidman"><code>@​jeffwidman</code></a> in <a
href="https://redirect.github.com/dependabot/fetch-metadata/pull/605">dependabot/fetch-metadata#605</a></li>
<li>Bump to ESLint 9 by <a
href="https://github.com/jeffwidman"><code>@​jeffwidman</code></a> in <a
href="https://redirect.github.com/dependabot/fetch-metadata/pull/606">dependabot/fetch-metadata#606</a></li>
<li>Stop using a node16 devcontainer image by <a
href="https://github.com/jeffwidman"><code>@​jeffwidman</code></a> in <a
href="https://redirect.github.com/dependabot/fetch-metadata/pull/608">dependabot/fetch-metadata#608</a></li>
<li>Make typescript compile to <code>&quot;es2022&quot;</code> by <a
href="https://github.com/jeffwidman"><code>@​jeffwidman</code></a> in <a
href="https://redirect.github.com/dependabot/fetch-metadata/pull/609">dependabot/fetch-metadata#609</a></li>
<li>Bump the dev-dependencies group across 1 directory with 8 updates by
<a href="https://github.com/dependabot"><code>@​dependabot</code></a> in
<a
href="https://redirect.github.com/dependabot/fetch-metadata/pull/607">dependabot/fetch-metadata#607</a></li>
<li>Tidy up examples slightly by <a
href="https://github.com/jeffwidman"><code>@​jeffwidman</code></a> in <a
href="https://redirect.github.com/dependabot/fetch-metadata/pull/611">dependabot/fetch-metadata#611</a></li>
<li>Fixup some anchor tags that weren't deeplinking by <a
href="https://github.com/jeffwidman"><code>@​jeffwidman</code></a> in <a
href="https://redirect.github.com/dependabot/fetch-metadata/pull/614">dependabot/fetch-metadata#614</a></li>
<li>Remove unnecessary hardcoding of <code>ref</code> by <a
href="https://github.com/jeffwidman"><code>@​jeffwidman</code></a> in <a
href="https://redirect.github.com/dependabot/fetch-metadata/pull/617">dependabot/fetch-metadata#617</a></li>
<li>Bump actions/create-github-app-token from 1.11.3 to 2.0.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/dependabot/fetch-metadata/pull/616">dependabot/fetch-metadata#616</a></li>
<li>Enable caching of <code>npm install</code>/<code>npm ci</code> for
<code>setup-node</code> action by <a
href="https://github.com/jeffwidman"><code>@​jeffwidman</code></a> in <a
href="https://redirect.github.com/dependabot/fetch-metadata/pull/618">dependabot/fetch-metadata#618</a></li>
<li>Add workflow to publish new version of immutable action on every
release by <a
href="https://github.com/jeffwidman"><code>@​jeffwidman</code></a> in <a
href="https://redirect.github.com/dependabot/fetch-metadata/pull/623">dependabot/fetch-metadata#623</a></li>
<li>Bump actions/create-github-app-token from 2.0.2 to 2.0.6 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/dependabot/fetch-metadata/pull/621">dependabot/fetch-metadata#621</a></li>
<li>v2.4.0 by <a
href="https://github.com/fetch-metadata-action-automation"><code>@​fetch-metadata-action-automation</code></a>
in <a
href="https://redirect.github.com/dependabot/fetch-metadata/pull/594">dependabot/fetch-metadata#594</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/dependabot/fetch-metadata/compare/v2...v2.4.0">https://github.com/dependabot/fetch-metadata/compare/v2...v2.4.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/dependabot/fetch-metadata/commit/08eff52bf64351f401fb50d4972fa95b9f2c2d1b"><code>08eff52</code></a>
v2.4.0 (<a
href="https://redirect.github.com/dependabot/fetch-metadata/issues/594">#594</a>)</li>
<li><a
href="https://github.com/dependabot/fetch-metadata/commit/821b65425137ec0dd9fa4e4931297ce81a017ed7"><code>821b654</code></a>
Merge pull request <a
href="https://redirect.github.com/dependabot/fetch-metadata/issues/621">#621</a>
from dependabot/dependabot/github_actions/actions/cre...</li>
<li><a
href="https://github.com/dependabot/fetch-metadata/commit/2c22a370e3e9f4d539470325c4c46acc607ef78e"><code>2c22a37</code></a>
Bump actions/create-github-app-token from 2.0.2 to 2.0.6</li>
<li><a
href="https://github.com/dependabot/fetch-metadata/commit/6ad01a0495c3f8488ba16705f5031cadde56c8ba"><code>6ad01a0</code></a>
Add workflow to publish new version of immutable action on every release
(<a
href="https://redirect.github.com/dependabot/fetch-metadata/issues/623">#623</a>)</li>
<li><a
href="https://github.com/dependabot/fetch-metadata/commit/8ca800c1642f5e46fd4fe73c07af0e3baf1375d6"><code>8ca800c</code></a>
Enable caching of <code>npm install</code>/<code>npm ci</code> for
<code>setup-node</code> action (<a
href="https://redirect.github.com/dependabot/fetch-metadata/issues/618">#618</a>)</li>
<li><a
href="https://github.com/dependabot/fetch-metadata/commit/67876354acc60aadf59dc57d46959117cee2b764"><code>6787635</code></a>
Merge pull request <a
href="https://redirect.github.com/dependabot/fetch-metadata/issues/616">#616</a>
from dependabot/dependabot/github_actions/actions/cre...</li>
<li><a
href="https://github.com/dependabot/fetch-metadata/commit/a09d4affbb4e2c87349169de0a2ced55e3c27168"><code>a09d4af</code></a>
Bump actions/create-github-app-token from 1.11.3 to 2.0.2</li>
<li><a
href="https://github.com/dependabot/fetch-metadata/commit/3a5ce46470ca6c67f17694ac27f0db1caf53b518"><code>3a5ce46</code></a>
Remove unnecessary hardcoding of <code>ref</code> (<a
href="https://redirect.github.com/dependabot/fetch-metadata/issues/617">#617</a>)</li>
<li><a
href="https://github.com/dependabot/fetch-metadata/commit/798f45cdc56b81396c637207204f29f0f55da017"><code>798f45c</code></a>
Fixup some anchor tags that weren't deeplinking (<a
href="https://redirect.github.com/dependabot/fetch-metadata/issues/614">#614</a>)</li>
<li><a
href="https://github.com/dependabot/fetch-metadata/commit/6c031ac618d23a38e886535b1c8ea06caaf2a444"><code>6c031ac</code></a>
Tidy up examples slightly (<a
href="https://redirect.github.com/dependabot/fetch-metadata/issues/611">#611</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/dependabot/fetch-metadata/compare/d7267f607e9d3fb96fc2fbe83e0af444713e90b7...08eff52bf64351f401fb50d4972fa95b9f2c2d1b">compare
view</a></li>
</ul>
</details>
<br />

Updates `tj-actions/changed-files` from
5426ecc3f5c2b10effaefbd374f0abdc6a571b2f to
480f49412651059a414a6a5c96887abb1877de8a
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tj-actions/changed-files/blob/main/HISTORY.md">tj-actions/changed-files's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.4...v46.0.5">46.0.5</a>
- (2025-04-09)</h1>
<h2><!-- raw HTML omitted -->⚙️ Miscellaneous Tasks</h2>
<ul>
<li><strong>deps:</strong> Bump yaml from 2.7.0 to 2.7.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2520">#2520</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/ed68ef82c095e0d48ec87eccea555d944a631a4c">ed68ef8</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump typescript from 5.8.2 to 5.8.3 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2516">#2516</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/a7bc14b808f23d3b467a4079c69a81f1a4500fd5">a7bc14b</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump <code>@​types/node</code> from
22.13.11 to 22.14.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2517">#2517</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/3d751f6b6d84071a17e1b9cf4ed79a80a27dd0ab">3d751f6</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump eslint-plugin-prettier from 5.2.3 to
5.2.6 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2519">#2519</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/e2fda4ec3cb0bc2a353843cae823430b3124db8f">e2fda4e</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump ts-jest from 29.2.6 to 29.3.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2518">#2518</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/0bed1b1132ec4879a39a2d624cf82a00d0bcfa48">0bed1b1</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump github/codeql-action from 3.28.12 to
3.28.15 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2530">#2530</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/68024587dc36f49685c96d59d3f1081830f968bb">6802458</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump tj-actions/branch-names from 8.0.1 to
8.1.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2521">#2521</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/cf2e39e86bf842d1f9bc5bca56c0a6b207cca792">cf2e39e</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump tj-actions/verify-changed-files from
20.0.1 to 20.0.4 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2523">#2523</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/6abeaa506a419f85fa9e681260b443adbeebb3d4">6abeaa5</a>)
- (dependabot[bot])</li>
</ul>
<h2><!-- raw HTML omitted -->⬆️ Upgrades</h2>
<ul>
<li>Upgraded to v46.0.4 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2511">#2511</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted --> (<a
href="https://github.com/tj-actions/changed-files/commit/6f67ee9ac810f0192ea7b3d2086406f97847bcf9">6f67ee9</a>)
- (github-actions[bot])</p>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.3...v46.0.4">46.0.4</a>
- (2025-04-03)</h1>
<h2><!-- raw HTML omitted -->🐛 Bug Fixes</h2>
<ul>
<li>Bug modified_keys and changed_key outputs not set when no changes
detected (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2509">#2509</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/6cb76d07bee4c9772c6882c06c37837bf82a04d3">6cb76d0</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->📚 Documentation</h2>
<ul>
<li>Update readme (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2508">#2508</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/b74df86ccb65173a8e33ba5492ac1a2ca6b216fd">b74df86</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->⬆️ Upgrades</h2>
<ul>
<li>Upgraded to v46.0.3 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2506">#2506</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted -->
Co-authored-by: Tonye Jack <a
href="mailto:jtonye@ymail.com">jtonye@ymail.com</a> (<a
href="https://github.com/tj-actions/changed-files/commit/27ae6b33eaed7bf87272fdeb9f1c54f9facc9d99">27ae6b3</a>)
- (github-actions[bot])</p>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.2...v46.0.3">46.0.3</a>
- (2025-03-23)</h1>
<h2><!-- raw HTML omitted -->🔄 Update</h2>
<ul>
<li>Updated README.md (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2501">#2501</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted --> (<a
href="https://github.com/tj-actions/changed-files/commit/41e0de576a0f2b64d9f06f2773f539109e55a70a">41e0de5</a>)
- (github-actions[bot])</p>
<ul>
<li>Updated README.md (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2499">#2499</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted --> (<a
href="https://github.com/tj-actions/changed-files/commit/945787811a795cd840a1157ac590dd7827a05c8e">9457878</a>)
- (github-actions[bot])</p>
<h2><!-- raw HTML omitted -->📚 Documentation</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tj-actions/changed-files/commit/480f49412651059a414a6a5c96887abb1877de8a"><code>480f494</code></a>
chore(deps): bump <code>@​actions/github</code> from 6.0.0 to 6.0.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2556">#2556</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/405524a214f00911f11de2cd3a9a36902ddafa52"><code>405524a</code></a>
chore(deps-dev): bump <code>@​types/node</code> from 22.15.14 to
22.15.17 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2557">#2557</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/b6970c44e602dd27272fdfc4e3cf76054f721d15"><code>b6970c4</code></a>
chore(deps-dev): bump eslint-config-prettier from 10.1.2 to 10.1.5 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2558">#2558</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/11fe0a22639570798676000acac7be726130b5ee"><code>11fe0a2</code></a>
chore(deps): bump github/codeql-action from 3.28.16 to 3.28.17 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2551">#2551</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/e7b157b1c4ad44acfc8d9be14b8cd8f5058636e3"><code>e7b157b</code></a>
chore(deps-dev): bump <code>@​types/node</code> from 22.15.3 to 22.15.10
(<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2552">#2552</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/9132e0305b2a924727467f54f064d30bc85d67c1"><code>9132e03</code></a>
chore(deps-dev): bump eslint-plugin-prettier from 5.2.6 to 5.4.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2553">#2553</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/4168bb487d5b82227665ab4ec90b67ce02691741"><code>4168bb4</code></a>
chore(deps-dev): bump <code>@​types/node</code> from 22.15.0 to 22.15.3
(<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2548">#2548</a>)</li>
<li>See full diff in <a
href="https://github.com/tj-actions/changed-files/compare/5426ecc3f5c2b10effaefbd374f0abdc6a571b2f...480f49412651059a414a6a5c96887abb1877de8a">compare
view</a></li>
</ul>
</details>
<br />

Updates `github/codeql-action` from 3.28.16 to 3.28.17
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.28.17</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.28.17 - 02 May 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.2. <a
href="https://redirect.github.com/github/codeql-action/pull/2872">#2872</a></li>
</ul>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.28.17/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<p>No user facing changes.</p>
<h2>3.28.17 - 02 May 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.2. <a
href="https://redirect.github.com/github/codeql-action/pull/2872">#2872</a></li>
</ul>
<h2>3.28.16 - 23 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2863">#2863</a></li>
</ul>
<h2>3.28.15 - 07 Apr 2025</h2>
<ul>
<li>Fix bug where the action would fail if it tried to produce a debug
artifact with more than 65535 files. <a
href="https://redirect.github.com/github/codeql-action/pull/2842">#2842</a></li>
</ul>
<h2>3.28.14 - 07 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2838">#2838</a></li>
</ul>
<h2>3.28.13 - 24 Mar 2025</h2>
<p>No user facing changes.</p>
<h2>3.28.12 - 19 Mar 2025</h2>
<ul>
<li>Dependency caching should now cache more dependencies for Java
<code>build-mode: none</code> extractions. This should speed up
workflows and avoid inconsistent alerts in some cases.</li>
<li>Update default CodeQL bundle version to 2.20.7. <a
href="https://redirect.github.com/github/codeql-action/pull/2810">#2810</a></li>
</ul>
<h2>3.28.11 - 07 Mar 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.20.6. <a
href="https://redirect.github.com/github/codeql-action/pull/2793">#2793</a></li>
</ul>
<h2>3.28.10 - 21 Feb 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.20.5. <a
href="https://redirect.github.com/github/codeql-action/pull/2772">#2772</a></li>
<li>Address an issue where the CodeQL Bundle would occasionally fail to
decompress on macOS. <a
href="https://redirect.github.com/github/codeql-action/pull/2768">#2768</a></li>
</ul>
<h2>3.28.9 - 07 Feb 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.20.4. <a
href="https://redirect.github.com/github/codeql-action/pull/2753">#2753</a></li>
</ul>
<h2>3.28.8 - 29 Jan 2025</h2>
<ul>
<li>Enable support for Kotlin 2.1.10 when running with CodeQL CLI
v2.20.3. <a
href="https://redirect.github.com/github/codeql-action/pull/2744">#2744</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/60168efe1c415ce0f5521ea06d5c2062adbeed1b"><code>60168ef</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2886">#2886</a>
from github/update-v3.28.17-97a2bfd2a</li>
<li><a
href="https://github.com/github/codeql-action/commit/0d5a3115da6459f8ab4333164184f8292c0c7a7f"><code>0d5a311</code></a>
Update changelog for v3.28.17</li>
<li><a
href="https://github.com/github/codeql-action/commit/97a2bfd2a3d26d458da69e548f7f859d6fca634d"><code>97a2bfd</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2872">#2872</a>
from github/update-bundle/codeql-bundle-v2.21.2</li>
<li><a
href="https://github.com/github/codeql-action/commit/9aba20e4c91fd8c3a71d5ab2bdeba0da11713864"><code>9aba20e</code></a>
Merge branch 'main' into update-bundle/codeql-bundle-v2.21.2</li>
<li><a
href="https://github.com/github/codeql-action/commit/81a9508deb02898c1a7be79bd5b49bb0ab9c787e"><code>81a9508</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2876">#2876</a>
from github/henrymercer/fix-diff-informed-multiple-a...</li>
<li><a
href="https://github.com/github/codeql-action/commit/1569f4c145413fbce7d6573c6ee9212d2612d27f"><code>1569f4c</code></a>
Disable diff-informed queries in code scanning config tests</li>
<li><a
href="https://github.com/github/codeql-action/commit/62fbeb66b359bfbdec7d4d96af8f68aece59b4db"><code>62fbeb6</code></a>
Merge branch 'main' into
henrymercer/fix-diff-informed-multiple-analyze</li>
<li><a
href="https://github.com/github/codeql-action/commit/f122d1dc9eb83b12dc16b38495b667a2dddfa6f9"><code>f122d1d</code></a>
Address test failures from computing temporary directory too early</li>
<li><a
href="https://github.com/github/codeql-action/commit/083772aae48a3be5654921bb6e6ccb00e0e1d563"><code>083772a</code></a>
Do not fail diff informed analyses when <code>analyze</code> is run
twice in the same job</li>
<li><a
href="https://github.com/github/codeql-action/commit/5db14d0471303d6eee1e2a51393f5ae1669b6703"><code>5db14d0</code></a>
Merge branch 'main' into update-bundle/codeql-bundle-v2.21.2</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/28deaeda66b76a05916b6923827895f2b14ab387...60168efe1c415ce0f5521ea06d5c2062adbeed1b">compare
view</a></li>
</ul>
</details>
<br />

<details>
<summary>Most Recent Ignore Conditions Applied to This Pull
Request</summary>

| Dependency Name | Ignore Conditions |
| --- | --- |
| crate-ci/typos | [>= 1.30.a, < 1.31] |
</details>


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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-12 11:58:20 +00:00
Mathias Fredriksson 7af188bfc1 fix(agent): fix unexpanded devcontainer paths for agentcontainers (#17736)
Devcontainers were duplicated in the API because paths weren't
absolute, we now normalize them early on to keep it simple.

Updates #16424
2025-05-12 14:03:40 +03:00
Edward Angert bd659142c8 docs: add note about experiment_report_tasks to ai-coder/create-template (#17563)
Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-05-09 21:00:18 +00:00
Bruno Quaresma 842bb1f014 chore: replace MUI icons - 6 (#17751)
1. Replaced CheckCircleOutlined with CircleCheckIcon (Lucide)
2. Replaced Close/CloseIcon with XIcon (Lucide)
3. Replaced DoNotDisturbOnOutlined with CircleMinusIcon (Lucide)
4. Replaced Sell with TagIcon (Lucide)
2025-05-09 17:07:57 -03:00
Bruno Quaresma 1adad418ad feat: display user apps in the workspaces table (#17744)
Related to https://github.com/coder/coder/issues/17311

**Demo:**
<img width="1511" alt="Screenshot 2025-05-09 at 11 46 59"
src="https://github.com/user-attachments/assets/3e9ba618-ed5d-4eeb-996f-d7bcceb9f1a9"
/>
2025-05-09 17:01:57 -03:00
Bruno Quaresma 4970fb9bfa chore: replace MUI icons - 4 (#17748)
1. Replaced CloudUploadOutlined with CloudUploadIcon in FileUpload.tsx
2. Replaced DeleteOutline with TrashIcon in:
    - WorkspaceTopbar.tsx
    - TokensPageView.tsx
    - GroupPage.tsx
3. Replaced FolderOutlined with FolderIcon in FileUpload.tsx
2025-05-09 15:57:28 -03:00
Bruno Quaresma aa4b764025 chore: replace MUI icons - 3 (#17733)
1. Replaced TaskAlt with CircleCheckBigIcon in:
   - Paywall.tsx
   - PopoverPaywall.tsx
  
2. Replaced InfoOutlined with InfoIcon in:
   - ChangeVersionDialog.tsx
   - WorkspaceNotifications.tsx
   - Pill.stories.tsx
   
3. Replaced ErrorOutline/ErrorOutlineIcon with CircleAlertIcon in:
   - workspace.tsx
   - WorkspaceStatusBadge.tsx
   - AppLink.tsx
2025-05-09 15:09:03 -03:00
Bruno Quaresma b0a4ef01a8 chore: replace MUI icons - 2 (#17732)
Replace icons: 

Check | CheckIcon
KeyboardArrowDown | ChevronDownIcon
KeyboardArrowUp | ChevronUpIcon
2025-05-09 14:44:10 -03:00
Bruno Quaresma 9e44f18b4b refactor: add safe list for external app protocols (#17742)
To prevent malicious apps and vendors to use the Coder session token we
are adding safe protocols/schemas we want to support.

- vscode:
- vscode-insiders:
- windsurf:
- cursor:
- jetbrains-gateway:
- jetbrains:

Fix https://github.com/coder/security/issues/77
2025-05-09 14:40:26 -03:00
Edward Angert 5c532779af docs: clarify parameter autofill documentation (#17728)
closes #17706 

Clarify that:
1. URL query parameters work without experiment flag
2. The 'populate recently used parameters' feature still requires the
auto-fill-parameters experiment flag

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-05-09 13:01:11 -04:00
Danny Kopping 3ee95f14ce chore: upgrade terraform-provider-coder & preview libs (#17738)
The changes in `coder/preview` necessitated the changes in
`codersdk/richparameters.go` & `provisioner/terraform/resources.go`.

---------

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
Co-authored-by: Steven Masley <stevenmasley@gmail.com>
2025-05-09 17:41:19 +02:00
Bruno Quaresma 9d7630bf4b chore: replace MUI icons - 1 (#17731)
1. Replaced MUI StopOutlined with Lucide SquareIcon in:
    - workspace.tsx
    - WorkspacesPageView.tsx
    - BuildIcon.tsx
    
 2. Replaced MUI PlayArrowOutlined with Lucide PlayIcon in:
    - workspace.tsx
    - WorkspacesPageView.tsx
    - BuildIcon.tsx
    
 3. Replaced MUI DeleteOutlined with Lucide TrashIcon in:
    - WorkspacesPageView.tsx
    - WorkspaceActions.tsx
    - TemplatePageHeader.tsx
    - BuildIcon.tsx
2025-05-09 11:16:46 -03:00
Bruno Quaresma 0b8fd7e403 chore: fix :first-child warning (#17727)
Fix the following warning:

```
The pseudo class ":first-child" is potentially unsafe when doing server-side rendering.
```
2025-05-09 11:11:00 -03:00
Bruno Quaresma 902c34cf01 refactor: improve apps.ts readbility (#17741)
Apply PR comments from https://github.com/coder/coder/pull/17724
2025-05-09 11:01:35 -03:00
Bruno Quaresma 2bdd035873 chore: add keys for each app on workspaces table (#17726)
Fix warning:
```
hook.js:608 Warning: Each child in a list should have a unique "key" prop.
```
2025-05-09 11:01:24 -03:00
Bruno Quaresma f897981e78 chore: extract app access logic for reuse (#17724)
We are starting to add app links in many places in the UI, and to make
it consistent, this PR extracts the most core logic into the
modules/apps for reuse.

Related to https://github.com/coder/coder/issues/17311
2025-05-09 10:41:52 -03:00
Michael Suchacz 2696926003 fix: fixed flaking VPN tunnel tests & bump coder/quartz to 0.1.3 (#17737)
Closes: https://github.com/coder/internal/issues/624
2025-05-09 12:27:47 +02:00
Danny Kopping 58adc629fa chore: add prebuild docs (#17580)
Partially addresses https://github.com/coder/internal/issues/593
2025-05-09 07:26:35 +00:00
Jon Ayers a9f1a6b2a2 fix: revert fix: persist terraform modules during template import (#17665) (#17734)
This reverts commit ae3d90b057.
2025-05-08 22:03:08 -04:00
ケイラ ae3d90b057 fix: persist terraform modules during template import (#17665) 2025-05-08 16:13:46 -06:00
Edward Angert 9a052e2a4c fix: use file filter in weekly-docs github action (#17729)
otherwise it ignores the instruction to only check docs/ when a file
changes in that dir

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-05-08 16:30:43 -04:00
Steven Masley d5360a6da0 chore: fetch workspaces by username with organization permissions (#17707)
Closes https://github.com/coder/coder/issues/17691

`ExtractOrganizationMembersParam` will allow fetching a user with only
organization permissions. If the user belongs to 0 orgs, then the user "does not exist" 
from an org perspective. But if you are a site-wide admin, then the user does exist.
2025-05-08 14:41:17 -05:00
Jaayden Halko d93a9cfde2 feat: add TagInput component for dynamic parameters (#17719)
resolves coder/preview#50

This uses the existing MultiTextField component as the tag-select
component for Dynamic parameters.

The intention is not to completely re-write the MultiTextField but to
make some design improvements to match the updated design patterns. This
should still work with the existing non-experimental
CreateWorkspacePage.

Before
<img width="556" alt="Screenshot 2025-05-08 at 12 58 31"
src="https://github.com/user-attachments/assets/9bf5bbf8-e26d-4523-8b5f-e4234e83d192"
/>


After
<img width="548" alt="Screenshot 2025-05-08 at 12 43 28"
src="https://github.com/user-attachments/assets/9fa90795-b2a9-4c07-b90e-938219202799"
/>
2025-05-08 12:59:33 -04:00
Jaayden Halko 0b141c47cb chore: add DynamicParameter stories (#17710)
resolves coder/preview#112

- Add stories for DynamicParameter component
- fix bug with displaying immutable badge and required asterisk
2025-05-08 10:12:05 -04:00
brettkolodny c5c3a54fca fix: create ssh directory if it doesn't already exist when running coder config-ssh (#17711)
Closes
[coder/internal#623](https://github.com/coder/internal/issues/623)

> [!WARNING]  
> PR co-authored by Claude Code
2025-05-08 10:10:52 -04:00
Vincent Vielle 1bb96b8528 fix: resolve flake test on manager (#17702)
Fixes coder/internal#544

---------

Co-authored-by: Mathias Fredriksson <mafredri@gmail.com>
2025-05-08 16:49:57 +03:00
Bruno Quaresma 857587b35d fix: do not share token with http app urls (#17720)
It's a security issue to share the API token, and the protocols that we
actually want to share it with are not HTTP and handled locally on the
same machine.
 
Security issue introduced by https://github.com/coder/coder/pull/17708
2025-05-08 09:51:10 -03:00
Bruno Quaresma 4341403346 chore: simplify workspaces data fetching (#17703)
We've been using an abstraction that was not necessary to fetch
workspaces data. I also took sometime to use the new useWorkspaceUpdate
hook in the update workspace tooltip that was missing some important
steps like confirmation.
2025-05-08 09:42:39 -03:00
Bruno Quaresma 2695f4e950 chore: improve variable names of mocked users (#17701)
Many times I got confused when using MockUser and MockUser2 so I just
decided to better naming them to MockUserOwner and MockUserMember.
2025-05-08 09:32:32 -03:00
Jaayden Halko c66e80e862 fix: extract checkbox label from dynamic parameter styling prop (#17651)
resolves #17474 

A label will only be shown next to the checkbox If there is a value for
`label` in the styling prop for the dynamic parameter



<img width="457" alt="Screenshot 2025-05-01 at 21 35 32"
src="https://github.com/user-attachments/assets/3b3a8160-65a2-4411-b763-0d07a4eeb699"
/>
2025-05-08 08:02:27 -04:00
Dean Sheather b6182fe054 chore: add code-insiders.svg static icon (#17716)
We have `code.svg` but not `code-insiders.svg`
2025-05-08 05:09:16 +00:00
Steven Masley e4c6c10369 chore: fix comment regarding provisioner api version release (#17705)
See
https://github.com/coder/coder/commit/bc609d0056adeb11b1d2dc282db4d0ad20f3444b
2025-05-07 15:05:00 -05:00
Bruno Quaresma a02ba6616b fix: fill session token when app is external (#17708)
Fix https://github.com/coder/coder/issues/17704

During the [refactoring of WorkspaceApp response
type](https://github.com/coder/coder/pull/17700/files#diff-a7e67944708c3c914a24a02d515a89ecd414bfe61890468dac08abde55ba8e96R112),
I updated the logic to check if the session token should be injected
causing external apps to not load correctly.

To also avoid future confusions, we are only going to rely on the
`app.external` prop to open apps externally instead of verifying if the
URL does not use the HTTP protocol. I did some research and I didn't
find out a use case where it would be a problem.

I'm going to refactor this code very soon to allow opening apps from the
workspaces page, so I will write the tests to cover this use case there.

**Not included:**
During my next refactoring I'm also going to change the code to support
token injections directly in the HREF instead of making it happen during
the click event.
2025-05-07 19:59:52 +00:00
Thomas Kosiewski 29bce8d9e6 feat(cli): make MCP server work without user authentication (#17688)
Part of #17649

---

# Allow MCP server to run without authentication

This PR enhances the MCP server to operate without requiring authentication, making it more flexible for environments where authentication isn't available or necessary. Key changes:

- Replaced `InitClient` with `TryInitClient` to allow the MCP server to start without credentials
- Added graceful handling when URL or authentication is missing
- Made authentication status visible in server logs
- Added logic to skip user-dependent tools when no authenticated user is present
- Made the `coder_report_task` tool available with just an agent token (no user token required)
- Added comprehensive tests to verify operation without authentication

These changes allow the MCP server to function in more environments while still using authentication when available, improving flexibility for CI/CD and other automated environments.
2025-05-07 21:53:06 +02:00
Bruno Quaresma 6ac1bd807c feat: display builtin apps on workspaces table (#17695)
Related to https://github.com/coder/coder/issues/17311

<img width="1624" alt="Screenshot 2025-05-06 at 16 20 40"
src="https://github.com/user-attachments/assets/932f6034-9f8a-45d7-bf8d-d330dcca683d"
/>
2025-05-07 14:26:21 -03:00
Bruno Quaresma 9fe5b71d31 chore!: fix workspace apps response (#17700)
Fix WorkspaceApp response type to better reflect the schema from
https://registry.terraform.io/providers/coder/coder/latest/docs/resources/app.
2025-05-07 10:05:07 -03:00
Bruno Quaresma d146115ca0 chore: update browser list db (#17699) 2025-05-07 09:01:47 -03:00
DevCats df0c6eda33 chore: add custom aider icon (#17682)
Created Custom SVG from Aider PNG and upload from module to static site
icons
2025-05-06 09:46:36 -07:00
Bruno Quaresma 4fa9d30bf4 refactor: update app buttons to use the new button component (#17684)
Related to https://github.com/coder/coder/issues/17311

- Replaces the MUI Buttons by the new shadcn/ui buttons. This change
allows the reuse of app links, and terminal buttons using the `asChild`
capability from the Radix components
- Uses the new [proposed
design](https://www.figma.com/design/OR75XeUI0Z3ksqt1mHsNQw/Workspace-views?node-id=1014-8242&t=wtUXJRN1SfyZiFKn-0)
- Updates the button styles to support image tags as icons
- Uses the new Tooltip component for the app buttons

**Before:**
<img width="1243" alt="Screenshot 2025-05-05 at 17 55 49"
src="https://github.com/user-attachments/assets/e689e9dc-d8e1-4c9d-ba09-ef1479a501f1"
/>

**After:**
<img width="1264" alt="Screenshot 2025-05-05 at 18 05 38"
src="https://github.com/user-attachments/assets/8fafbe20-f063-46ab-86cf-2e0381bba889"
/>
2025-05-06 13:26:37 -03:00
Hugo Dutka a7e828593f chore: retry failing tests in CI (#17681)
This PR introduces failing test retries in CI for e2e tests, Go tests
with the in-memory database, Go tests with Postgres, and the CLI tests.
Retries are not enabled for race tests.

The goal is to reduce how often flakes disrupt developers' workflows.
2025-05-06 16:53:26 +02:00
Bruno Quaresma d9b00e4849 feat: add inline actions into workspaces table (#17636)
Related to https://github.com/coder/coder/issues/17311

This PR adds inline actions in the workspaces page. It is a bit
different of the [original
design](https://www.figma.com/design/OR75XeUI0Z3ksqt1mHsNQw/Workspace-views?node-id=656-3979&m=dev)
because I'm splitting the work into three phases that I will explain in
more details in the demo.



https://github.com/user-attachments/assets/6383375e-ed10-45d1-b5d5-b4421e86d158
2025-05-06 11:28:14 -03:00
Michael Suchacz 5f516ed135 feat: improve coder connect tunnel handling on reconnect (#17598)
Closes https://github.com/coder/internal/issues/563

The [Coder Connect
tunnel](https://github.com/coder/coder/blob/main/vpn/tunnel.go) receives
workspace state from the Coder server over a [dRPC
stream.](https://github.com/coder/coder/blob/114ba4593b2a82dfd41cdcb7fd6eb70d866e7b86/tailnet/controllers.go#L1029)
When first connecting to this stream, the current state of the user's
workspaces is received, with subsequent messages being diffs on top of
that state.

However, if the client disconnects from this stream, such as when the
user's device is suspended, and then reconnects later, no mechanism
exists for the tunnel to differentiate that message containing the
entire initial state from another diff, and so that state is incorrectly
applied as a diff.

In practice:
- Tunnel connects, receives a workspace update containing all the
existing workspaces & agents.
- Tunnel loses connection, but isn't completely stopped.
- All the user's workspaces are restarted, producing a new set of
agents.
- Tunnel regains connection, and receives a workspace update containing
all the existing workspaces & agents.
- This initial update is incorrectly applied as a diff, with the
Tunnel's state containing both the old & new agents.

This PR introduces a solution in which tunnelUpdater, when created,
sends a FreshState flag with the WorkspaceUpdate type. This flag is
handled in the vpn tunnel in the following fashion:
- Preserve existing Agents
- Remove current Agents in the tunnel that are not present in the
WorkspaceUpdate
- Remove unreferenced Workspaces
2025-05-06 16:00:16 +02:00
Mathias Fredriksson ebad5c3ed0 test(agent): fix channel timeout in TestNewServer_CloseActiveConnections (#17690)
This fixes a test issue where we were waiting on a channel indefinitely
and the test timed out instead of failing due to earlier error.

Updates coder/internal#558
2025-05-06 11:20:28 +00:00
Jaayden Halko ec003b7cf9 fix: update default value handling for dynamic defaults (#17609)
resolves coder/preview#102
2025-05-06 06:40:31 -04:00
Jaayden Halko 4587082fcf chore: update design of External auth section of CreateWorkspacePage (#17683)
contributes to coder/preview#59

Figma:
https://www.figma.com/design/SMg6H8VKXnPSkE6h9KPoAD/UX-Presets?node-id=2180-2995&t=RL6ICIf6KUL5YUpB-1

This updates the design of the External authentication section of the
create workspace page form for both the existing and the new
experimental create workspace pages.

<img width="819" alt="Screenshot 2025-05-05 at 18 15 28"
src="https://github.com/user-attachments/assets/8bc419dc-e1db-4188-b920-73010bbe626d"
/>
2025-05-05 17:13:39 -04:00
Hugo Dutka 6b4d3f83bc chore: reduce "Upload tests to datadog" times in CI (#17668)
This PR speeds up the "Upload tests to datadog" step by downloading the
`datadog-ci` binary directly from GitHub releases. Most of the time used
to be spent in `npm install`, which consistently timed out on Windows
after a minute. [Now it takes 3
seconds](https://github.com/coder/coder/actions/runs/14834976784/job/41644230049?pr=17668#step:10:1).

I updated it to version v2.48.0 because v2.21.0 didn't have the
artifacts for arm64 macOS.
2025-05-05 18:49:58 +02:00
Ethan 4369765996 test: fix TestWorkspaceAgentReportStats flake (#17678)
Closes https://github.com/coder/internal/issues/609.

As seen in the below logs, the `last_used_at` time was updating, but just to the same value that it was on creation; `dbtime.Now` was called in quick succession. 

```
 t.go:106: 2025-05-05 12:11:54.166 [info]  coderd.workspace_usage_tracker: updated workspaces last_used_at  count=1  now="2025-05-05T12:11:54.161329Z"
    t.go:106: 2025-05-05 12:11:54.172 [debu]  coderd: GET  host=localhost:50422  path=/api/v2/workspaces/745b7ff3-47f2-4e1a-9452-85ea48ba5c46  proto=HTTP/1.1  remote_addr=127.0.0.1  start="2025-05-05T12:11:54.1669073Z"  workspace_name=peaceful_faraday34  requestor_id=b2cf02ae-2181-480b-bb1f-95dc6acb6497  requestor_name=testuser  requestor_email=""  took=5.2105ms  status_code=200  latency_ms=5  params_workspace=745b7ff3-47f2-4e1a-9452-85ea48ba5c46  request_id=7fd5ea90-af7b-4104-91c5-9ca64bc2d5e6
    workspaceagentsrpc_test.go:70: 
        	Error Trace:	C:/actions-runner/coder/coder/coderd/workspaceagentsrpc_test.go:70
        	Error:      	Should be true
        	Test:       	TestWorkspaceAgentReportStats
        	Messages:   	2025-05-05 12:11:54.161329 +0000 UTC is not after 2025-05-05 12:11:54.161329 +0000 UTC
```

If we change the initial `LastUsedAt` time to be a time in the past, ticking with a `dbtime.Now` will always update it to a later value. If it never updates, the condition will still fail.
2025-05-06 00:15:24 +10:00
Bruno Quaresma 93a584b7c2 fix: fix windsurf icon on light theme (#17679) 2025-05-05 11:10:50 -03:00
dependabot[bot] b8137e7ca4 chore: bump github.com/openai/openai-go from 0.1.0-beta.6 to 0.1.0-beta.10 (#17677)
Bumps [github.com/openai/openai-go](https://github.com/openai/openai-go)
from 0.1.0-beta.6 to 0.1.0-beta.10.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/openai/openai-go/releases">github.com/openai/openai-go's
releases</a>.</em></p>
<blockquote>
<h2>v0.1.0-beta.10</h2>
<h2>0.1.0-beta.10 (2025-04-14)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-go/compare/v0.1.0-beta.9...v0.1.0-beta.10">v0.1.0-beta.9...v0.1.0-beta.10</a></p>
<h3>Chores</h3>
<ul>
<li><strong>internal:</strong> expand CI branch coverage (<a
href="https://redirect.github.com/openai/openai-go/issues/369">#369</a>)
(<a
href="https://github.com/openai/openai-go/commit/258dda8007a69b9c2720b225ee6d27474d676a93">258dda8</a>)</li>
<li><strong>internal:</strong> reduce CI branch coverage (<a
href="https://github.com/openai/openai-go/commit/a2f7c03eb984d98f29f908df103ea1743f2e3d9a">a2f7c03</a>)</li>
</ul>
<h2>v0.1.0-beta.9</h2>
<h2>0.1.0-beta.9 (2025-04-09)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-%5Bgo/compare/v0.1.0-beta.8...v0.1.0-beta.9%5D(https://www.golinks.io/compare/v0.1.0-beta.8...v0.1.0-beta.9?trackSource=github)">v0.1.0-beta.8...v0.1.0-beta.9</a></p>
<h3>Chores</h3>
<ul>
<li>workaround build errors (<a
href="https://redirect.github.com/openai/openai-%5Bgo/issues/366%5D(https://www.golinks.io/issues/366?trackSource=github)">#366</a>)
(<a
href="https://github.com/openai/openai-%5Bgo/commit/adeb003cab8efbfbf4424e03e96a0f5e728551cb%5D(https://www.golinks.io/commit/adeb003cab8efbfbf4424e03e96a0f5e728551cb?trackSource=github)">adeb003</a>)</li>
</ul>
<h2>v0.1.0-beta.8</h2>
<h2>0.1.0-beta.8 (2025-04-09)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-go/compare/v0.1.0-beta.7...v0.1.0-beta.8">v0.1.0-beta.7...v0.1.0-beta.8</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> Add evalapi to sdk (<a
href="https://redirect.github.com/openai/openai-go/issues/360">#360</a>)
(<a
href="https://github.com/openai/openai-go/commit/88977d1868dbbe0060c56ba5dac8eb19773e4938">88977d1</a>)</li>
<li><strong>api:</strong> manual updates (<a
href="https://redirect.github.com/openai/openai-go/issues/363">#363</a>)
(<a
href="https://github.com/openai/openai-go/commit/5d068e0053172db7f5b75038aa215eee074eeeed">5d068e0</a>)</li>
<li><strong>client:</strong> add escape hatch to omit required param
fields (<a
href="https://redirect.github.com/openai/openai-go/issues/354">#354</a>)
(<a
href="https://github.com/openai/openai-go/commit/9690d6b49f8b00329afc038ec15116750853e620">9690d6b</a>)</li>
<li><strong>client:</strong> support custom http clients (<a
href="https://redirect.github.com/openai/openai-go/issues/357">#357</a>)
(<a
href="https://github.com/openai/openai-go/commit/b5a624f658cad774094427b36b05e446b41e8c52">b5a624f</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li><strong>docs:</strong> readme improvements (<a
href="https://redirect.github.com/openai/openai-go/issues/356">#356</a>)
(<a
href="https://github.com/openai/openai-go/commit/b2f8539d6316e3443aa733be2c95926696119c13">b2f8539</a>)</li>
<li><strong>internal:</strong> fix examples (<a
href="https://redirect.github.com/openai/openai-go/issues/361">#361</a>)
(<a
href="https://github.com/openai/openai-go/commit/de398b453d398299eb80c15f8fdb2bcbef5eeed6">de398b4</a>)</li>
<li><strong>internal:</strong> skip broken test (<a
href="https://redirect.github.com/openai/openai-go/issues/362">#362</a>)
(<a
href="https://github.com/openai/openai-go/commit/cccead9ba916142ac8fbe6e8926d706511e32ae3">cccead9</a>)</li>
<li><strong>tests:</strong> improve enum examples (<a
href="https://redirect.github.com/openai/openai-go/issues/359">#359</a>)
(<a
href="https://github.com/openai/openai-go/commit/e0b9739920114d6e991d3947b67fdf62cfaa09c7">e0b9739</a>)</li>
</ul>
<h2>v0.1.0-beta.7</h2>
<h2>0.1.0-beta.7 (2025-04-07)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-go/compare/v0.1.0-beta.6...v0.1.0-beta.7">v0.1.0-beta.6...v0.1.0-beta.7</a></p>
<h3>Features</h3>
<ul>
<li><strong>client:</strong> make response union's AsAny method type
safe (<a
href="https://redirect.github.com/openai/openai-go/issues/352">#352</a>)
(<a
href="https://github.com/openai/openai-go/commit/1252f56c917e57d6d2b031501b2ff5f89f87cf87">1252f56</a>)</li>
</ul>
<h3>Chores</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/openai/openai-go/blob/main/CHANGELOG.md">github.com/openai/openai-go's
changelog</a>.</em></p>
<blockquote>
<h2>0.1.0-beta.10 (2025-04-14)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-go/compare/v0.1.0-beta.9...v0.1.0-beta.10">v0.1.0-beta.9...v0.1.0-beta.10</a></p>
<h3>Chores</h3>
<ul>
<li><strong>internal:</strong> expand CI branch coverage (<a
href="https://redirect.github.com/openai/openai-go/issues/369">#369</a>)
(<a
href="https://github.com/openai/openai-go/commit/258dda8007a69b9c2720b225ee6d27474d676a93">258dda8</a>)</li>
<li><strong>internal:</strong> reduce CI branch coverage (<a
href="https://github.com/openai/openai-go/commit/a2f7c03eb984d98f29f908df103ea1743f2e3d9a">a2f7c03</a>)</li>
</ul>
<h2>0.1.0-beta.9 (2025-04-09)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-go/compare/v0.1.0-beta.8...v0.1.0-beta.9">v0.1.0-beta.8...v0.1.0-beta.9</a></p>
<h3>Chores</h3>
<ul>
<li>workaround build errors (<a
href="https://redirect.github.com/openai/openai-go/issues/366">#366</a>)
(<a
href="https://github.com/openai/openai-go/commit/adeb003cab8efbfbf4424e03e96a0f5e728551cb">adeb003</a>)</li>
</ul>
<h2>0.1.0-beta.8 (2025-04-09)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-go/compare/v0.1.0-beta.7...v0.1.0-beta.8">v0.1.0-beta.7...v0.1.0-beta.8</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> Add evalapi to sdk (<a
href="https://redirect.github.com/openai/openai-go/issues/360">#360</a>)
(<a
href="https://github.com/openai/openai-go/commit/88977d1868dbbe0060c56ba5dac8eb19773e4938">88977d1</a>)</li>
<li><strong>api:</strong> manual updates (<a
href="https://redirect.github.com/openai/openai-go/issues/363">#363</a>)
(<a
href="https://github.com/openai/openai-go/commit/5d068e0053172db7f5b75038aa215eee074eeeed">5d068e0</a>)</li>
<li><strong>client:</strong> add escape hatch to omit required param
fields (<a
href="https://redirect.github.com/openai/openai-go/issues/354">#354</a>)
(<a
href="https://github.com/openai/openai-go/commit/9690d6b49f8b00329afc038ec15116750853e620">9690d6b</a>)</li>
<li><strong>client:</strong> support custom http clients (<a
href="https://redirect.github.com/openai/openai-go/issues/357">#357</a>)
(<a
href="https://github.com/openai/openai-go/commit/b5a624f658cad774094427b36b05e446b41e8c52">b5a624f</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li><strong>docs:</strong> readme improvements (<a
href="https://redirect.github.com/openai/openai-go/issues/356">#356</a>)
(<a
href="https://github.com/openai/openai-go/commit/b2f8539d6316e3443aa733be2c95926696119c13">b2f8539</a>)</li>
<li><strong>internal:</strong> fix examples (<a
href="https://redirect.github.com/openai/openai-go/issues/361">#361</a>)
(<a
href="https://github.com/openai/openai-go/commit/de398b453d398299eb80c15f8fdb2bcbef5eeed6">de398b4</a>)</li>
<li><strong>internal:</strong> skip broken test (<a
href="https://redirect.github.com/openai/openai-go/issues/362">#362</a>)
(<a
href="https://github.com/openai/openai-go/commit/cccead9ba916142ac8fbe6e8926d706511e32ae3">cccead9</a>)</li>
<li><strong>tests:</strong> improve enum examples (<a
href="https://redirect.github.com/openai/openai-go/issues/359">#359</a>)
(<a
href="https://github.com/openai/openai-go/commit/e0b9739920114d6e991d3947b67fdf62cfaa09c7">e0b9739</a>)</li>
</ul>
<h2>0.1.0-beta.7 (2025-04-07)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-go/compare/v0.1.0-beta.6...v0.1.0-beta.7">v0.1.0-beta.6...v0.1.0-beta.7</a></p>
<h3>Features</h3>
<ul>
<li><strong>client:</strong> make response union's AsAny method type
safe (<a
href="https://redirect.github.com/openai/openai-go/issues/352">#352</a>)
(<a
href="https://github.com/openai/openai-go/commit/1252f56c917e57d6d2b031501b2ff5f89f87cf87">1252f56</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li><strong>docs:</strong> doc improvements (<a
href="https://redirect.github.com/openai/openai-go/issues/350">#350</a>)
(<a
href="https://github.com/openai/openai-go/commit/80debc824eaacb4b07c8f3e8b1d0488d860d5be5">80debc8</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/openai/openai-go/commit/c0414f15a9f4065adee2ed96a4dcd4d4cb9708aa"><code>c0414f1</code></a>
release: 0.1.0-beta.10</li>
<li><a
href="https://github.com/openai/openai-go/commit/192ec22bd758a045b2fe7304252c508b7a075e6d"><code>192ec22</code></a>
chore(internal): reduce CI branch coverage</li>
<li><a
href="https://github.com/openai/openai-go/commit/17cbc6d2c8ffbba0c9d19206b1f402010790ba2e"><code>17cbc6d</code></a>
chore(internal): expand CI branch coverage (<a
href="https://redirect.github.com/openai/openai-go/issues/369">#369</a>)</li>
<li><a
href="https://github.com/openai/openai-go/commit/e1d5123160f195fbb74e00548e8d7896db9caafc"><code>e1d5123</code></a>
release: 0.1.0-beta.9</li>
<li><a
href="https://github.com/openai/openai-go/commit/4e42dd39d9ad6d9deb8c75d9131fb636edf93ae9"><code>4e42dd3</code></a>
chore: workaround build errors (<a
href="https://redirect.github.com/openai/openai-go/issues/366">#366</a>)</li>
<li><a
href="https://github.com/openai/openai-go/commit/0ae103de4e01e5239788a56fca3d7621b83460ab"><code>0ae103d</code></a>
release: 0.1.0-beta.8</li>
<li><a
href="https://github.com/openai/openai-go/commit/68c32a0aec380926b962ed74d4002a883d012dcd"><code>68c32a0</code></a>
feat(api): manual updates (<a
href="https://redirect.github.com/openai/openai-go/issues/363">#363</a>)</li>
<li><a
href="https://github.com/openai/openai-go/commit/8599318b87e59ea0550da8c8451dd12c6716776f"><code>8599318</code></a>
chore(internal): skip broken test (<a
href="https://redirect.github.com/openai/openai-go/issues/362">#362</a>)</li>
<li><a
href="https://github.com/openai/openai-go/commit/5e86f0f2734a9898584a250b5052403172f331ba"><code>5e86f0f</code></a>
chore(internal): fix examples (<a
href="https://redirect.github.com/openai/openai-go/issues/361">#361</a>)</li>
<li><a
href="https://github.com/openai/openai-go/commit/4a496a7674de63d9fb838a5095a2958a7cbaa1f7"><code>4a496a7</code></a>
feat(api): Add evalapi to sdk (<a
href="https://redirect.github.com/openai/openai-go/issues/360">#360</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/openai/openai-go/compare/v0.1.0-beta.6...v0.1.0-beta.10">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/openai/openai-go&package-manager=go_modules&previous-version=0.1.0-beta.6&new-version=0.1.0-beta.10)](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>
2025-05-05 12:54:22 +00:00
dependabot[bot] 1f569f71f8 chore: bump google.golang.org/api from 0.230.0 to 0.231.0 (#17671)
Bumps
[google.golang.org/api](https://github.com/googleapis/google-api-go-client)
from 0.230.0 to 0.231.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-api-go-client/releases">google.golang.org/api's
releases</a>.</em></p>
<blockquote>
<h2>v0.231.0</h2>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.230.0...v0.231.0">0.231.0</a>
(2025-04-29)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3122">#3122</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/47cbba61ec8d62ebdfd1affe3a9244b20184c781">47cbba6</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3124">#3124</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/677b602b6f3f072ebfac6c5791cc06d15720b136">677b602</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3125">#3125</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/8ccf1f08977c7843d093bba21d391b082e206a75">8ccf1f0</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3126">#3126</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/405935174a0a7c9734c8e6b0dce487c481a7927e">4059351</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3127">#3127</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/ae18b2206b6182d47d69227b638dfc42d975b889">ae18b22</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3129">#3129</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/c33e0d153c99c931e5b953e3ccfa40fe8ac20c02">c33e0d1</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md">google.golang.org/api's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.230.0...v0.231.0">0.231.0</a>
(2025-04-29)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3122">#3122</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/47cbba61ec8d62ebdfd1affe3a9244b20184c781">47cbba6</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3124">#3124</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/677b602b6f3f072ebfac6c5791cc06d15720b136">677b602</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3125">#3125</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/8ccf1f08977c7843d093bba21d391b082e206a75">8ccf1f0</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3126">#3126</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/405935174a0a7c9734c8e6b0dce487c481a7927e">4059351</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3127">#3127</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/ae18b2206b6182d47d69227b638dfc42d975b889">ae18b22</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3129">#3129</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/c33e0d153c99c931e5b953e3ccfa40fe8ac20c02">c33e0d1</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/70d3b4f38ec8df290ddcaedb749eaf29f798958c"><code>70d3b4f</code></a>
chore(main): release 0.231.0 (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3123">#3123</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/c33e0d153c99c931e5b953e3ccfa40fe8ac20c02"><code>c33e0d1</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3129">#3129</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/673da13c2fc8c8758ae8c1c1fc2d02fdb9556bc5"><code>673da13</code></a>
chore(all): update all (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3128">#3128</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/ae18b2206b6182d47d69227b638dfc42d975b889"><code>ae18b22</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3127">#3127</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/405935174a0a7c9734c8e6b0dce487c481a7927e"><code>4059351</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3126">#3126</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/8ccf1f08977c7843d093bba21d391b082e206a75"><code>8ccf1f0</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3125">#3125</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/677b602b6f3f072ebfac6c5791cc06d15720b136"><code>677b602</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3124">#3124</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/47cbba61ec8d62ebdfd1affe3a9244b20184c781"><code>47cbba6</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3122">#3122</a>)</li>
<li>See full diff in <a
href="https://github.com/googleapis/google-api-go-client/compare/v0.230.0...v0.231.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/api&package-manager=go_modules&previous-version=0.230.0&new-version=0.231.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>
2025-05-05 12:37:45 +00:00
dependabot[bot] dc66dafc7c chore: bump github.com/mark3labs/mcp-go from 0.23.1 to 0.25.0 (#17672)
Bumps [github.com/mark3labs/mcp-go](https://github.com/mark3labs/mcp-go)
from 0.23.1 to 0.25.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mark3labs/mcp-go/releases">github.com/mark3labs/mcp-go's
releases</a>.</em></p>
<blockquote>
<h2>Release v0.25.0</h2>
<h2>What's Changed</h2>
<ul>
<li>update doc comments to match Go conventions by <a
href="https://github.com/yinebebt"><code>@​yinebebt</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/226">mark3labs/mcp-go#226</a></li>
<li>fix: Add Accept Header in StreamableHTTP Client by <a
href="https://github.com/hhxiao"><code>@​hhxiao</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/230">mark3labs/mcp-go#230</a></li>
<li>fix(SSE): only initialize <code>http.Server</code> when not set by
<a href="https://github.com/cryo-zd"><code>@​cryo-zd</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/229">mark3labs/mcp-go#229</a></li>
<li>fix: Prevent panic in parsing functions for null results by <a
href="https://github.com/cocovs"><code>@​cocovs</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/218">mark3labs/mcp-go#218</a></li>
<li>[SSEClient] Add ability to override the http.Client by <a
href="https://github.com/sks"><code>@​sks</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/109">mark3labs/mcp-go#109</a></li>
<li>feat(SSEServer): add WithAppendQueryToMessageEndpoint() by <a
href="https://github.com/liut"><code>@​liut</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/136">mark3labs/mcp-go#136</a></li>
<li>feat: quick return tool-call request, send response via SSE in
goroutine by <a
href="https://github.com/CeerDecy"><code>@​CeerDecy</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/163">mark3labs/mcp-go#163</a></li>
<li>feat(server/sse): Add support for dynamic base paths by <a
href="https://github.com/robert-jackson-glean"><code>@​robert-jackson-glean</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/214">mark3labs/mcp-go#214</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/yinebebt"><code>@​yinebebt</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/226">mark3labs/mcp-go#226</a></li>
<li><a href="https://github.com/hhxiao"><code>@​hhxiao</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/230">mark3labs/mcp-go#230</a></li>
<li><a href="https://github.com/cocovs"><code>@​cocovs</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/218">mark3labs/mcp-go#218</a></li>
<li><a href="https://github.com/sks"><code>@​sks</code></a> made their
first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/109">mark3labs/mcp-go#109</a></li>
<li><a href="https://github.com/liut"><code>@​liut</code></a> made their
first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/136">mark3labs/mcp-go#136</a></li>
<li><a href="https://github.com/CeerDecy"><code>@​CeerDecy</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/163">mark3labs/mcp-go#163</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.24.1...v0.25.0">https://github.com/mark3labs/mcp-go/compare/v0.24.1...v0.25.0</a></p>
<h2>Release v0.24.1</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: marshal <code>ToolInputSchema.Properties</code> to {} when
len=0 by <a href="https://github.com/cryo-zd"><code>@​cryo-zd</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/225">mark3labs/mcp-go#225</a></li>
<li>fix(client/test): verify mock server binary exists after compilation
by <a
href="https://github.com/robert-jackson-glean"><code>@​robert-jackson-glean</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/215">mark3labs/mcp-go#215</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.24.0...v0.24.1">https://github.com/mark3labs/mcp-go/compare/v0.24.0...v0.24.1</a></p>
<h2>Release v0.24.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Use correct name in Go documentation by <a
href="https://github.com/oschwald"><code>@​oschwald</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/202">mark3labs/mcp-go#202</a></li>
<li>fix(client): resource leak in <code>SSEClient.SendRequest()</code>
by <a href="https://github.com/cryo-zd"><code>@​cryo-zd</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/206">mark3labs/mcp-go#206</a></li>
<li>fix(client): risk of resource leak and closing closed channel by <a
href="https://github.com/cryo-zd"><code>@​cryo-zd</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/208">mark3labs/mcp-go#208</a></li>
<li>no need to check empty text by <a
href="https://github.com/graydovee"><code>@​graydovee</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/209">mark3labs/mcp-go#209</a></li>
<li>refactor: Pull out <code>Annotations</code> structure rather than
being an anonymous inner struct by <a
href="https://github.com/rm-hull"><code>@​rm-hull</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/203">mark3labs/mcp-go#203</a></li>
<li>perf: optimize usage of RWMutex in MCPServer for performance by <a
href="https://github.com/cryo-zd"><code>@​cryo-zd</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/181">mark3labs/mcp-go#181</a></li>
<li>feat: Add server hooks:OnRequestInitialization by <a
href="https://github.com/AlexNiny"><code>@​AlexNiny</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/164">mark3labs/mcp-go#164</a></li>
<li>fix: Improve content type handling in streamable_http.go by <a
href="https://github.com/TBXark"><code>@​TBXark</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/210">mark3labs/mcp-go#210</a></li>
<li>Add <code>mcptest</code> package for in-process MCP testing by <a
href="https://github.com/octo"><code>@​octo</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/149">mark3labs/mcp-go#149</a></li>
<li>Manage tools on a per session basis by <a
href="https://github.com/ezynda3"><code>@​ezynda3</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/179">mark3labs/mcp-go#179</a></li>
<li>Fix: fix client sse tcp connection re-use by draining outstanding io
by <a href="https://github.com/bcain99"><code>@​bcain99</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/212">mark3labs/mcp-go#212</a></li>
<li>perf(server): release Mutex early for performance by <a
href="https://github.com/cryo-zd"><code>@​cryo-zd</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/213">mark3labs/mcp-go#213</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/oschwald"><code>@​oschwald</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/202">mark3labs/mcp-go#202</a></li>
<li><a href="https://github.com/graydovee"><code>@​graydovee</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/209">mark3labs/mcp-go#209</a></li>
<li><a href="https://github.com/rm-hull"><code>@​rm-hull</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/203">mark3labs/mcp-go#203</a></li>
<li><a href="https://github.com/AlexNiny"><code>@​AlexNiny</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/164">mark3labs/mcp-go#164</a></li>
<li><a href="https://github.com/octo"><code>@​octo</code></a> made their
first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/149">mark3labs/mcp-go#149</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/eadd7023515f7eaad5808720c157b1cc25581d90"><code>eadd702</code></a>
Format</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/4a1010e73b34db4a602a7f34e2690a3a51d963cb"><code>4a1010e</code></a>
feat(server/sse): Add support for dynamic base paths (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/214">#214</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/cfeb0eec85509f516064e3df007b625d4fc89f48"><code>cfeb0ee</code></a>
feat: quick return tool-call request, send response via SSE in goroutine
(<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/163">#163</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/d352118718f3f0481ff8484f5e9914ed26be5d38"><code>d352118</code></a>
feat(SSEServer): add WithAppendQueryToMessageEndpoint() (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/136">#136</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/df5f67eeb1841f4350b4079b643051364be7ed7b"><code>df5f67e</code></a>
[chore][client] Add ability to override the http.Client (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/109">#109</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/ddb59ddfadc950647316561afebe8060f6276880"><code>ddb59dd</code></a>
fix: handle nil rawMessage in response parsing functions (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/218">#218</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/f0a648b91d852442c1cd52f98391aa1fe1540b60"><code>f0a648b</code></a>
fix(SSE): only initialize http.Server when not set (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/229">#229</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/ffc63d90b0cb05ee26ced8880c329dadad4c202b"><code>ffc63d9</code></a>
Add Accept header (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/230">#230</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/ae96a68a47e6ad255b8e976e89c30ac595139511"><code>ae96a68</code></a>
fix: update doc comments to match Go conventions (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/226">#226</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/df736673ba674040abe5c2edbedd70455483d961"><code>df73667</code></a>
fix(client/test): verify mock server binary exists after compilation (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/215">#215</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/mark3labs/mcp-go/compare/v0.23.1...v0.25.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/mark3labs/mcp-go&package-manager=go_modules&previous-version=0.23.1&new-version=0.25.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>
2025-05-05 12:37:32 +00:00
Hugo Dutka 87f4535357 chore: optimize CI setup time on Windows (#17666)
This PR focuses on optimizing go-test CI times on Windows. It:

- backs the `$RUNNER_TEMP` directory with a RAM disk. This directory is
used by actions like cache, setup-go, and setup-terraform as a staging
area
- backs `GOCACHE`, `GOMODCACHE`, and `GOPATH` with a RAM disk
- backs `$GITHUB_WORKSPACE` with a RAM disk - that's where the
repository is checked out
- uses preinstalled Go on Windows runners
- starts using the depot Windows runner

From what I've seen, these changes bring test times down to be on par
with Linux and macOS. The biggest improvement comes from backing
frequently accessed paths with RAM disks. The C drive is surprisingly
slow - I ran some performance tests with
[fio](https://fio.readthedocs.io/en/latest/fio_doc.html#) where I tested
IOPS on many small files, and the RAM disk was 100x faster.

Additionally, the depot runners seem to have more consistent performance
than the ones provided by GitHub.
2025-05-05 14:26:30 +02:00
Danny Kopping a646478aed fix: move pubsub publishing out of database transactions to avoid conn exhaustion (#17648)
Database transactions hold onto connections, and `pubsub.Publish` tries
to acquire a connection of its own. If the latter is called within a
transaction, this can lead to connection exhaustion.

I plan two follow-ups to this PR:

1. Make connection counts tuneable

https://github.com/coder/coder/blob/main/cli/server.go#L2360-L2376

We will then be able to write tests showing how connection exhaustion
occurs.

2. Write a linter/ruleguard to prevent `pubsub.Publish` from being
called within a transaction.

---------

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
2025-05-05 11:54:18 +02:00
Bruno Quaresma 82fdb6a6ae fix: fix size for non-squared app icons (#17663)
**Before:**

![image](https://github.com/user-attachments/assets/e7544b00-24b0-405c-b763-49a9a009c1d2)

**After:**
<img width="192" alt="Screenshot 2025-05-02 at 14 36 19"
src="https://github.com/user-attachments/assets/59cb4531-06fd-44bc-b4b9-4441f2dce79a"
/>
2025-05-02 14:44:13 -03:00
Bruno Quaresma 3be6487f02 feat: support GFM alerts in markdown (#17662)
Closes https://github.com/coder/coder/issues/17660

Add support to [GFM
Alerts](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts).

<img width="635" alt="Screenshot 2025-05-02 at 14 26 36"
src="https://github.com/user-attachments/assets/8b785e0f-87f4-4bbd-9107-67858ad5dece"
/>

PS: This was heavily copied from
https://github.com/coder/coder-registry/blob/dev/cmd/main/site/src/components/MarkdownView/MarkdownView.tsx
2025-05-02 14:44:01 -03:00
Cian Johnston 544259b809 feat: add database tables and API routes for agentic chat feature (#17570)
Backend portion of experimental `AgenticChat` feature:
- Adds database tables for chats and chat messages
- Adds functionality to stream messages from LLM providers using
`kylecarbs/aisdk-go`
- Adds API routes with relevant functionality (list, create, update
chats, insert chat message)
- Adds experiment `codersdk.AgenticChat`

---------

Co-authored-by: Kyle Carberry <kyle@carberry.com>
2025-05-02 17:29:57 +01:00
M Atif Ali 64b9bc1ca4 fix: update licensing info URL on sign up page (#17657) 2025-05-02 16:07:10 +00:00
Jaayden Halko e37ddd44d2 chore: improve the design of the create workspace page for dynamic parameters (#17654)
contributes to coder/preview#59

1. Improves the design and layout of the presets dropdown and switch
2. Improves the design for the immutable badge

<img width="537" alt="Screenshot 2025-05-01 at 23 28 11"
src="https://github.com/user-attachments/assets/f0967758-5ea7-4436-b44a-e014c048202c"
/>
<img width="714" alt="Screenshot 2025-05-01 at 23 28 34"
src="https://github.com/user-attachments/assets/0bb091e1-611f-4a58-8f6f-b3bb027c6a10"
/>
2025-05-02 11:14:32 -04:00
Edward Angert 912b6aba82 docs: link to eks steps from aws section (#17646)
closes #17634

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-05-02 15:13:42 +00:00
Edward Angert 50695b7d76 docs: fix link in tutorials faq to new docker-code-server link (#17655)
<https://github.com/sharkymark/v2-templates/tree/main/src/templates/docker/docker-code-server>

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-05-02 13:44:30 +00:00
Danny Kopping c278662218 feat: collect database metrics (#17635)
Currently we don't have a way to get insight into Postgres connections
being exhausted.

By using the prometheus' [`DBStats`
collector](https://github.com/prometheus/client_golang/blob/main/prometheus/collectors/dbstats_collector.go),
we get some insight out-of-the-box.

```
# HELP go_sql_idle_connections The number of idle connections.
# TYPE go_sql_idle_connections gauge
go_sql_idle_connections{db_name="coder"} 1
# HELP go_sql_in_use_connections The number of connections currently in use.
# TYPE go_sql_in_use_connections gauge
go_sql_in_use_connections{db_name="coder"} 2
# HELP go_sql_max_idle_closed_total The total number of connections closed due to SetMaxIdleConns.
# TYPE go_sql_max_idle_closed_total counter
go_sql_max_idle_closed_total{db_name="coder"} 112
# HELP go_sql_max_idle_time_closed_total The total number of connections closed due to SetConnMaxIdleTime.
# TYPE go_sql_max_idle_time_closed_total counter
go_sql_max_idle_time_closed_total{db_name="coder"} 0
# HELP go_sql_max_lifetime_closed_total The total number of connections closed due to SetConnMaxLifetime.
# TYPE go_sql_max_lifetime_closed_total counter
go_sql_max_lifetime_closed_total{db_name="coder"} 0
# HELP go_sql_max_open_connections Maximum number of open connections to the database.
# TYPE go_sql_max_open_connections gauge
go_sql_max_open_connections{db_name="coder"} 10
# HELP go_sql_open_connections The number of established connections both in use and idle.
# TYPE go_sql_open_connections gauge
go_sql_open_connections{db_name="coder"} 3
# HELP go_sql_wait_count_total The total number of connections waited for.
# TYPE go_sql_wait_count_total counter
go_sql_wait_count_total{db_name="coder"} 28
# HELP go_sql_wait_duration_seconds_total The total time blocked waiting for a new connection.
# TYPE go_sql_wait_duration_seconds_total counter
go_sql_wait_duration_seconds_total{db_name="coder"} 0.086936235
```

`go_sql_wait_count_total` is the metric I'm most interested in gaining,
but the others are also very useful.

Changing the prefix is easy (`prometheus.WrapRegistererWithPrefix`), but
getting rid of the `go_` segment is not quite so easy. I've kept the
changeset small for now.

**NOTE:** I imported a library to determine the database name from the
given conn string. It's [not as
simple](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING)
as one might hope. The database name is used for the `db_name` label.

---------

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
2025-05-02 12:17:01 +02:00
Jaayden Halko e718c3ab2f fix: improve WebSocket error handling in CreateWorkspacePageExperimental (#17647)
Refactor WebSocket error handling to ensure that errors are only set
when the current socket ref matches the active one. This prevents
unnecessary error messages when the WebSocket connection closes
unexpectedly

This solves the problem of showing error messages because of React
Strict mode rendering the page twice and opening 2 websocket
connections.
2025-05-01 19:02:34 -04:00
Mathias Fredriksson a226a75b32 docs: add early access dev container docs (#17613)
This change documents the early access dev containers integration and
how to enable it, what features are available and what limitations exist
at the time of writing.

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-05-01 23:45:02 +01:00
Yevhenii Shcherbina ef11d4f769 fix: fix bug with deletion of prebuilt workspaces (#17652)
Don't specify the template version for a delete transition, because the
prebuilt workspace may have been created using an older template
version.
If the template version isn't explicitly set, the builder will
automatically use the version from the last workspace build - which is
the desired behavior.
2025-05-01 17:26:30 -04:00
Jaayden Halko d9ef6ed8ae chore: replace MoreMenu with DropdownMenu (#17615)
Replace MoreMenu with DropDownMenu component to match update design
patterns.

Note: This was the result of experimentation using Cursor to make the
changes and Claude Code for fixing tests.

One key takeaway is that verbose e2e logging, especially benign
warnings/errors can confuse Claude Code in running playwright and
confirming its work.


<img width="201" alt="Screenshot 2025-05-01 at 00 00 52"
src="https://github.com/user-attachments/assets/4905582e-902e-4b61-adc8-14cab6bd006b"
/>
<img width="257" alt="Screenshot 2025-05-01 at 00 01 07"
src="https://github.com/user-attachments/assets/5befc420-724a-4c57-9a9d-330a39867fae"
/>
<img width="270" alt="Screenshot 2025-05-01 at 00 01 20"
src="https://github.com/user-attachments/assets/9cbf07cb-7d44-4228-ae6f-216e9f2faed0"
/>
<img width="224" alt="Screenshot 2025-05-01 at 00 01 30"
src="https://github.com/user-attachments/assets/9fe95916-3d9d-4600-9b1f-8a620e152a53"
/>
2025-05-01 13:14:11 -04:00
brettkolodny b7e08ba7c9 fix: filter out deleted users when attempting to delete an organization (#17621)
Closes
[coder/internal#601](https://github.com/coder/internal/issues/601)
2025-05-01 13:26:01 -03:00
Phorcys cae4fa8b45 chore: correct typo in "Logs" page (#17633)
I saw this typo when looking at the docs, quick fix.

https://coder.com/docs/admin/monitoring/logs
2025-05-01 12:14:27 -04:00
Cian Johnston 4ac71e9fd9 fix(codersdk/toolsdk): ensure all tools include required fields of aisdk.Schema (#17632) 2025-05-01 12:19:35 +00:00
Spike Curtis ef00ae54f4 fix: fix data race in agentscripts.Runner (#17630)
Fixes https://github.com/coder/internal/issues/604

Fixes a data race in `agentscripts.Runner` where a concurrent `Execute()` call races with `Init()`. We hit this race during shut down, which is not synchronized against starting up.

In this PR I've chosen to add synchronization to the `Runner` rather than try to synchronize the calls in the agent. When we close down the agent, it's OK to just throw an error if we were never initialized with a startup script---we don't want to wait for it since that requires an active connection to the control plane.
2025-05-01 14:25:02 +04:00
Spike Curtis 35d686caef chore: add Spike & Cian as CODEOWNERS for provisionerd proto (#17629)
Adds @spikecurtis  and @johnstcn as CODEOWNERS of the provisioner protocol files. These need to be versioned, so we need some human review over changes.
2025-05-01 14:24:51 +04:00
Yevhenii Shcherbina 98e5611e16 fix: fix for prebuilds claiming and deletion (#17624)
PR contains:
- fix for claiming & deleting prebuilds with immutable params
- unit test for claiming scenario
- unit test for deletion scenario

The parameter resolver was failing when deleting/claiming prebuilds
because a value for a previously-used parameter was provided to the
resolver, but since the value was unchanged (it's coming from the
preset) it failed in the resolver. The resolver was missing a check to
see if the old value != new value; if the values match then there's no
mutation of an immutable parameter.

---------

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
2025-05-01 08:52:23 +00:00
Ethan c7fc7b91ec fix: create directory before writing coder connect network info file (#17628)
The regular network info file creation code also calls `Mkdirall`.

Wasn't picked up in manual testing as I already had the `/net` folder in
my VSCode.

Wasn't picked up in automated testing because we use an in-memory FS,
which for some reason does this implicitly.
2025-05-01 16:53:13 +10:00
Jaayden Halko 4de7661c0b fix: remove unused import (#17626) 2025-04-30 18:09:00 -04:00
Jaayden Halko d104cd636d fix: display validation error for workspace name (#17564)
- Display form validation error for workspace name
- Scroll to the workspace name field if there is a validation error
2025-04-30 16:45:54 -04:00
dependabot[bot] 6bafe35774 chore: bump vite from 5.4.18 to 5.4.19 in /site (#17625)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite)
from 5.4.18 to 5.4.19.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/releases">vite's
releases</a>.</em></p>
<blockquote>
<h2>v5.4.19</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.19/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/blob/v5.4.19/packages/vite/CHANGELOG.md">vite's
changelog</a>.</em></p>
<blockquote>
<h2><!-- raw HTML omitted -->5.4.19 (2025-04-30)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19965">#19965</a>,
check static serve file inside sirv (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19966">#19966</a>)
(<a
href="https://github.com/vitejs/vite/commit/766947e7cbf1cdd07df9737394e8c870401b78b0">766947e</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19965">#19965</a>
<a
href="https://redirect.github.com/vitejs/vite/issues/19966">#19966</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/vitejs/vite/commit/80a333a23103ced0442d4463d1191433d90f5e19"><code>80a333a</code></a>
release: v5.4.19</li>
<li><a
href="https://github.com/vitejs/vite/commit/766947e7cbf1cdd07df9737394e8c870401b78b0"><code>766947e</code></a>
fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19965">#19965</a>,
check static serve file inside sirv (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19966">#19966</a>)</li>
<li>See full diff in <a
href="https://github.com/vitejs/vite/commits/v5.4.19/packages/vite">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=vite&package-manager=npm_and_yarn&previous-version=5.4.18&new-version=5.4.19)](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)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/coder/coder/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-30 19:17:56 +00:00
brettkolodny f108f9d71f chore: setup knip and remove unused exports, files, and dependencies (#17608)
Closes [coder/interal#600](https://github.com/coder/internal/issues/600)
2025-04-30 15:08:25 -04:00
Bruno Quaresma 205076e6e7 refactor: change how timings are formatted (#17623) 2025-04-30 13:58:12 -03:00
Edward Angert ef101ae2a0 docs: update ai feature stage to beta and ease the intro note's tone (#17620)
[preview](https://coder.com/docs/@ai-feature-stage/ai-coder)
2025-04-30 15:20:44 +00:00
Danny Kopping 6936a7b5a2 fix: fix prebuild omissions (#17579)
Fixes accidental omission from https://github.com/coder/coder/pull/17527

---------

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
2025-04-30 14:26:30 +00:00
Bruno Quaresma ff54ae3f66 fix: update devcontainer data every 10s (#17619)
Fix https://github.com/coder/internal/issues/594

**Notice:**
This is a temporary solution to get the devcontainers feature released.
Maybe a better solution, to avoid pulling the API every 10 seconds, is
to implement a websocket connection to get updates on containers.
2025-04-30 11:17:41 -03:00
Mathias Fredriksson fe4c4122c9 fix(dogfood/coder): increase in-container docker daemon shutdown timeout (#17617)
The default is 10 seconds and will not successfully clean up large
devcontainers inside the workspace.

Follow-up to #17528
2025-04-30 17:01:22 +03:00
M Atif Ali 650a48c210 chore: update windsurf icon (#17607) 2025-04-30 14:00:10 +05:00
Cian Johnston d7e6eb7914 chore(cli): fix test flake when running in coder workspace (#17604)
This test was failing inside a Coder workspace due to
`CODER_AGENT_TOKEN` being set.
2025-04-30 09:18:58 +01:00
Ethan 7a1e56b707 test: avoid sharing echo.Responses across tests (#17610)
I missed this in https://github.com/coder/coder/pull/17211 because I
only searched for `:= &echo.Responses` and not `= &echo.Responses` 🤦

Fixes flakes like
https://github.com/coder/coder/actions/runs/14746732612/job/41395403979
2025-04-30 05:18:13 +00:00
Ethan 53ba3613b3 feat(cli): use coder connect in coder ssh --stdio, if available (#17572)
Closes https://github.com/coder/vscode-coder/issues/447
Closes https://github.com/coder/jetbrains-coder/issues/543
Closes https://github.com/coder/coder-jetbrains-toolbox/issues/21

This PR adds Coder Connect support to `coder ssh --stdio`. 

When connecting to a workspace, if `--force-new-tunnel` is not passed, the CLI will first do a DNS lookup for `<agent>.<workspace>.<owner>.<hostname-suffix>`. If an IP address is returned, and it's within the Coder service prefix, the CLI will not create a new tailnet connection to the workspace, and instead dial the SSH server running on port 22 on the workspace directly over TCP.

This allows IDE extensions to use the Coder Connect tunnel, without requiring any modifications to the extensions themselves. 

Additionally, `using_coder_connect` is added to the `sshNetworkStats` file, which the VS Code extension (and maybe Jetbrains?) will be able to read, and indicate to the user that they are using Coder Connect.

One advantage of this approach is that running `coder ssh --stdio` on an offline workspace with Coder Connect enabled will have the CLI wait for the workspace to build, the agent to connect (and optionally, for the startup scripts to finish), before finally connecting using the Coder Connect tunnel.

As a result, `coder ssh --stdio` has the overhead of looking up the workspace and agent, and checking if they are running. On my device, this meant `coder ssh --stdio <workspace>` was approximately a second slower than just connecting to the workspace directly using `ssh <workspace>.coder` (I would assume anyone serious about their Coder Connect usage would know to just do the latter anyway).
 
To ensure this doesn't come at a significant performance cost, I've also benchmarked this PR.

<details>
<summary>Benchmark</summary>

## Methodology
All tests were completed on `dev.coder.com`, where a Linux workspace running in AWS `us-west1` was created.
The machine running Coder Desktop (the 'client') was a Windows VM running in the same AWS region and VPC as the workspace.

To test the performance of specifically the SSH connection, a port was forwarded between the client and workspace using:
```
ssh -p 22 -L7001:localhost:7001 <host>
```
where `host` was either an alias for an SSH ProxyCommand that called `coder ssh`, or a Coder Connect hostname.

For latency, [`tcping`](https://www.elifulkerson.com/projects/tcping.php) was used against the forwarded port:
```
tcping -n 100 localhost 7001
```

For throughput, [`iperf3`](https://iperf.fr/iperf-download.php) was used:
```
iperf3 -c localhost -p 7001
```
where an `iperf3` server was running on the workspace on port 7001.

## Test Cases

### Testcase 1: `coder ssh` `ProxyCommand` that bicopies from Coder Connect
This case tests the implementation in this PR, such that we can write a config like:
```
Host codercliconnect
    ProxyCommand /path/to/coder ssh --stdio workspace
```
With Coder Connect enabled, `ssh -p 22 -L7001:localhost:7001 codercliconnect` will use the Coder Connect tunnel. The results were as follows:

**Throughput, 10 tests, back to back:**
- Average throughput across all tests: 788.20 Mbits/sec
- Minimum average throughput: 731 Mbits/sec
- Maximum average throughput: 871 Mbits/sec
- Standard Deviation: 38.88 Mbits/sec

**Latency, 100 RTTs:**
- Average: 0.369ms
- Minimum: 0.290ms
- Maximum: 0.473ms

### Testcase 2: `ssh` dialing Coder Connect directly without a `ProxyCommand`

This is what we assume to be the 'best' way to use Coder Connect

**Throughput, 10 tests, back to back:**
- Average throughput across all tests: 789.50 Mbits/sec
- Minimum average throughput: 708 Mbits/sec
- Maximum average throughput: 839 Mbits/sec
- Standard Deviation: 39.98 Mbits/sec

**Latency, 100 RTTs:**
- Average: 0.369ms
- Minimum: 0.267ms
- Maximum: 0.440ms

### Testcase 3:  `coder ssh` `ProxyCommand` that creates its own Tailnet connection in-process

This is what normally happens when you run `coder ssh`:

**Throughput, 10 tests, back to back:**
- Average throughput across all tests: 610.20 Mbits/sec
- Minimum average throughput: 569 Mbits/sec
- Maximum average throughput: 664 Mbits/sec
- Standard Deviation: 27.29 Mbits/sec

**Latency, 100 RTTs:**
- Average: 0.335ms
- Minimum: 0.262ms
- Maximum: 0.452ms

## Analysis

Performing a two-tailed, unpaired t-test against the throughput of testcases 1 and 2, we find a P value of `0.9450`. This suggests the difference between the data sets is not statistically significant. In other words, there is a 94.5% chance that the difference between the data sets is due to chance.

## Conclusion

From the t-test, and by comparison to the status quo (regular `coder ssh`, which uses gvisor, and is noticeably slower), I think it's safe to say any impact on throughput or latency by the `ProxyCommand` performing a bicopy against Coder Connect is negligible. Users are very much unlikely to run into performance issues as a result of using Coder Connect via `coder ssh`, as implemented in this PR.

Less scientifically, I ran these same tests on my home network with my Sydney workspace, and both throughput and latency were consistent across testcases 1 and 2.

</details>
2025-04-30 15:17:10 +10:00
ケイラ 70ea6788db chore: make the template docs view the default (#17606) 2025-04-29 16:12:39 -06:00
Stephen Kirby 67e1ab407c chore(docs): update release calendar for 2.21 patches (#17605) 2025-04-29 15:34:00 +00:00
Cian Johnston 2acf0adcf2 chore(codersdk/toolsdk): improve static analyzability of toolsdk.Tools (#17562)
* Refactors toolsdk.Tools to remove opaque `map[string]any` argument in
favour of typed args structs.
* Refactors toolsdk.Tools to remove opaque passing of dependencies via
`context.Context` in favour of a tool dependencies struct.
* Adds panic recovery and clean context middleware to all tools.
* Adds `GenericTool` implementation to allow keeping `toolsdk.All` with
uniform type signature while maintaining type information in handlers.
* Adds stricter checks to `patchWorkspaceAgentAppStatus` handler.
2025-04-29 16:05:23 +01:00
Mathias Fredriksson 1fc74f629e refactor(agent): update agentcontainers api initialization (#17600)
There were too many ways to configure the agentcontainers API resulting
in inconsistent behavior or features not being enabled. This refactor
introduces a control flag for enabling or disabling the containers API.
When disabled, all implementations are no-op and explicit endpoint
behaviors are defined. When enabled, concrete implementations are used
by default but can be overridden by passing options.
2025-04-29 17:53:10 +03:00
Cian Johnston 22b932a8e0 fix(cli): fix prompt issue in mcp configure claude-code (#17599)
* Updates default Coder prompt.
* Skips the directions to report tasks if the pre-requisites are not
available (agent token and app slug).
* Adds the capability to override the default Coder prompt via
`CODER_MCP_CLAUDE_CODER_PROMPT`.
2025-04-29 15:23:16 +01:00
Yevhenii Shcherbina 02b2de9ae4 refactor: skip reconciliation for some presets (#17595) 2025-04-29 07:55:37 -04:00
Mathias Fredriksson 268a50c193 feat(agent/agentcontainers): add file watcher and dirty status (#17573)
Fixes coder/internal#479
Fixes coder/internal#480
2025-04-29 11:53:58 +03:00
brettkolodny b6146dfe8a chore: remove circular dependencies (#17585)
I've been bit in the past by hard to deduce bugs caused by circular
dependencies within TS projects. On a hunch that this could be
contributing to some flaky tests I've used the tool
[dpdm](https://github.com/acrazing/dpdm) to find and remove them.

This PR does the following:
- Move around exports/create new files to remove any non-type circular
depencies
- Add dpdm as a dev dependency and create the `check:circular-depency`
pnpm script
2025-04-28 16:51:58 -04:00
ケイラ 12589026b6 chore: update error message for duplicate organization members (#17594)
Closes https://github.com/coder/internal/issues/345
2025-04-28 14:51:33 -06:00
Yevhenii Shcherbina a78f0fc4e1 refactor: use specific error for agpl and prebuilds (#17591)
Follow-up PR to https://github.com/coder/coder/pull/17458
Addresses this discussion:
https://github.com/coder/coder/pull/17458#discussion_r2055940797
2025-04-28 16:37:41 -04:00
Bruno Quaresma 1da27a1ebc fix: handle missed actions in workspace timings (#17593)
Fix https://github.com/coder/coder/issues/16409

Since the provisioner timings action is not strongly typed, but it is
typed as a generic string, and we are not using
`noUncheckedIndexedAccess`, we can miss some of the actions returned
from the API, causing type errors. To avoid that, I changed the code to
be extra safe by adding `undefined` into the return type.
2025-04-28 15:20:07 -03:00
Bruno Quaresma df47c300f3 fix: fix script timings spam in the workspace UI (#17590)
Fix https://github.com/coder/coder/issues/17188

We forgot to filter the scripts by `run_on_start`, since we only
calculate timings in the start phase, which was causing the miss match
between the expected script timings count, and the loop in the refetch
logic.

While I think this fix is enough for now, I think the server should be
responsible to telling the client when to stop fetching. It could be a
simple attribute such as `done: false | true` or a websocket endpoint as
suggested by @dannykopping
[here](https://github.com/coder/coder/issues/17188#issuecomment-2788235333).
2025-04-28 14:22:43 -03:00
Steven Masley 14105ff301 test: do not run memory race test in parallel (#17582)
Closes
https://github.com/coder/internal/issues/597#issuecomment-2835262922

The parallelized tests share configs, which when accessed concurrently
throw race errors. The configs are read only, so it is fine to run these
tests with shared idp configs.
2025-04-28 12:20:07 -05:00
Steven Masley b9177eff7f chore: update guts to latest, using mutations to prevent diffs (#17588)
Guts changes: https://github.com/coder/guts/compare/v1.1.0...main
2025-04-28 12:19:41 -05:00
Steven Masley 37c5e7c440 chore: return safe copy of string slice in 'ParseStringSliceClaim' (#17439)
Claims parsed should be safe to mutate and filter. This was likely not
causing any bugs or issues, and just doing this out of precaution
2025-04-28 12:18:02 -05:00
Yevhenii Shcherbina 9167cbfe4c refactor: claim prebuilt workspace tests (#17567)
Follow-up to: https://github.com/coder/coder/pull/17458
Specifically it addresses these discussions:
- https://github.com/coder/coder/pull/17458#discussion_r2053531445
2025-04-28 12:49:23 -04:00
Bruno Quaresma 3ab3ef865c feat: add link to provisioner jobs and daemons (#17509)
Close https://github.com/coder/coder/issues/17314

**Demo**


https://github.com/user-attachments/assets/db37aa67-4755-4b72-a54d-2c3f0c297b7d

**Changes**
- Added the `xs` button variant
- Display all the daemons - idle and offline - and set a size limit to
100 results (explanation in the demo)
- Filter daemons and jobs by ID
2025-04-28 11:38:32 -03:00
Bruno Quaresma 5ca90aeb59 fix: handle null value for experiments (#17584)
Fix https://github.com/coder/coder/issues/17583

**Relevant info**
- `option.value` can be `null`
- It is always better to use `unknown` instead of `any`, and use type
assertion functions as `Array.isArray()` before using/accessing object
properties and functions
2025-04-28 11:12:49 -03:00
dependabot[bot] 0a26eeec0c ci: bump the github-actions group with 7 updates (#17581)
Bumps the github-actions group with 7 updates:

| Package | From | To |
| --- | --- | --- |
|
[step-security/harden-runner](https://github.com/step-security/harden-runner)
| `2.11.1` | `2.12.0` |
|
[google-github-actions/auth](https://github.com/google-github-actions/auth)
| `2.1.8` | `2.1.10` |
|
[actions/download-artifact](https://github.com/actions/download-artifact)
| `4.2.1` | `4.3.0` |
| [actions/attest](https://github.com/actions/attest) | `2.2.1` |
`2.3.0` |
|
[tj-actions/changed-files](https://github.com/tj-actions/changed-files)
| `9934ab3fdf63239da75d9e0fbd339c48620c72c4` |
`5426ecc3f5c2b10effaefbd374f0abdc6a571b2f` |
|
[nix-community/cache-nix-action](https://github.com/nix-community/cache-nix-action)
| `6.1.2` | `6.1.3` |
| [github/codeql-action](https://github.com/github/codeql-action) |
`3.28.15` | `3.28.16` |

Updates `step-security/harden-runner` from 2.11.1 to 2.12.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/step-security/harden-runner/releases">step-security/harden-runner's
releases</a>.</em></p>
<blockquote>
<h2>v2.12.0</h2>
<h2>What's Changed</h2>
<ol>
<li>
<p>A new option, <code>disable-sudo-and-containers</code>, is now
available to replace the <code>disable-sudo policy</code>, addressing
Docker-based privilege escalation (<a
href="https://github.com/step-security/harden-runner/security/advisories/GHSA-mxr3-8whj-j74r">CVE-2025-32955</a>).
More details can be found in this <a
href="https://www.stepsecurity.io/blog/evolving-harden-runners-disable-sudo-policy-for-improved-runner-security">blog
post</a>.</p>
</li>
<li>
<p>New detections have been added based on insights from the tj-actions
and reviewdog actions incidents.</p>
</li>
</ol>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/step-security/harden-runner/compare/v2...v2.12.0">https://github.com/step-security/harden-runner/compare/v2...v2.12.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/step-security/harden-runner/commit/0634a2670c59f64b4a01f0f96f84700a4088b9f0"><code>0634a26</code></a>
Merge pull request <a
href="https://redirect.github.com/step-security/harden-runner/issues/541">#541</a>
from step-security/rc-20</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/2e3c5113419044c10e6826351ff7cf7d56cbebe4"><code>2e3c511</code></a>
Update action.yml</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/40873e6a41e9ae4f46268f8ee038b3561bb88504"><code>40873e6</code></a>
Update README.md</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/484c2799ec63f20b4acc41bcf649dd4003718616"><code>484c279</code></a>
Update README.md</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/4c8582f45544ce2dafb2cfae82cfbebf0f41bde2"><code>4c8582f</code></a>
Update agent versions</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/e8d595cd66544d43aca8ac7e42a212a5a83b41f8"><code>e8d595c</code></a>
fix disable_sudo_and_containers bug</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/5d277fc8734baba8746d0c18cb0a2594d4692c66"><code>5d277fc</code></a>
fix journalctl related bug</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/ff2ab228bdb9f0c9129169d47dbb2bdf4b8f9b0e"><code>ff2ab22</code></a>
Merge pull request <a
href="https://redirect.github.com/step-security/harden-runner/issues/536">#536</a>
from rohan-stepsecurity/feat/flag/disable-sudo-and-co...</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/b81d650d0e627a80d0d73d192b33d729507e0ef5"><code>b81d650</code></a>
fix: run sudo command only when both disable-sudo and
disable-sudo-and-docker...</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/769df4ef5d6336b33b11e5b0d43934309cf439f6"><code>769df4e</code></a>
Update agent</li>
<li>Additional commits viewable in <a
href="https://github.com/step-security/harden-runner/compare/c6295a65d1254861815972266d5933fd6e532bdf...0634a2670c59f64b4a01f0f96f84700a4088b9f0">compare
view</a></li>
</ul>
</details>
<br />

Updates `google-github-actions/auth` from 2.1.8 to 2.1.10
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/google-github-actions/auth/releases">google-github-actions/auth's
releases</a>.</em></p>
<blockquote>
<h2>v2.1.10</h2>
<h2>What's Changed</h2>
<ul>
<li>Declare workflow permissions by <a
href="https://github.com/sethvargo"><code>@​sethvargo</code></a> in <a
href="https://redirect.github.com/google-github-actions/auth/pull/482">google-github-actions/auth#482</a></li>
<li>Document that the OIDC token expires in 5min by <a
href="https://github.com/sethvargo"><code>@​sethvargo</code></a> in <a
href="https://redirect.github.com/google-github-actions/auth/pull/483">google-github-actions/auth#483</a></li>
<li>Release: v2.1.10 by <a
href="https://github.com/google-github-actions-bot"><code>@​google-github-actions-bot</code></a>
in <a
href="https://redirect.github.com/google-github-actions/auth/pull/484">google-github-actions/auth#484</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/google-github-actions/auth/compare/v2.1.9...v2.1.10">https://github.com/google-github-actions/auth/compare/v2.1.9...v2.1.10</a></p>
<h2>v2.1.9</h2>
<h2>What's Changed</h2>
<ul>
<li>Use our custom boolean parsing by <a
href="https://github.com/sethvargo"><code>@​sethvargo</code></a> in <a
href="https://redirect.github.com/google-github-actions/auth/pull/478">google-github-actions/auth#478</a></li>
<li>Update deps by <a
href="https://github.com/sethvargo"><code>@​sethvargo</code></a> in <a
href="https://redirect.github.com/google-github-actions/auth/pull/479">google-github-actions/auth#479</a></li>
<li>Release: v2.1.9 by <a
href="https://github.com/google-github-actions-bot"><code>@​google-github-actions-bot</code></a>
in <a
href="https://redirect.github.com/google-github-actions/auth/pull/480">google-github-actions/auth#480</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/google-github-actions/auth/compare/v2.1.8...v2.1.9">https://github.com/google-github-actions/auth/compare/v2.1.8...v2.1.9</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/google-github-actions/auth/commit/ba79af03959ebeac9769e648f473a284504d9193"><code>ba79af0</code></a>
Release: v2.1.10 (<a
href="https://redirect.github.com/google-github-actions/auth/issues/484">#484</a>)</li>
<li><a
href="https://github.com/google-github-actions/auth/commit/bfaa66bd663615688155de119a676d67396f6bb7"><code>bfaa66b</code></a>
Document that the OIDC token expires in 5min (<a
href="https://redirect.github.com/google-github-actions/auth/issues/483">#483</a>)</li>
<li><a
href="https://github.com/google-github-actions/auth/commit/d0822ad9bf77d35dee590e455d9ef5b96ccb243c"><code>d0822ad</code></a>
Declare workflow permissions (<a
href="https://redirect.github.com/google-github-actions/auth/issues/482">#482</a>)</li>
<li><a
href="https://github.com/google-github-actions/auth/commit/7b53cdc2a387814ed14eec026287aac689ae8c9b"><code>7b53cdc</code></a>
Release: v2.1.9 (<a
href="https://redirect.github.com/google-github-actions/auth/issues/480">#480</a>)</li>
<li><a
href="https://github.com/google-github-actions/auth/commit/a9cfddf5d2f27aa426027a399f75d209953ade8e"><code>a9cfddf</code></a>
Update deps (<a
href="https://redirect.github.com/google-github-actions/auth/issues/479">#479</a>)</li>
<li><a
href="https://github.com/google-github-actions/auth/commit/b011f3988e66cb193db0f34974b1d7cde74e4f95"><code>b011f39</code></a>
Use our custom boolean parsing (<a
href="https://redirect.github.com/google-github-actions/auth/issues/478">#478</a>)</li>
<li>See full diff in <a
href="https://github.com/google-github-actions/auth/compare/71f986410dfbc7added4569d411d040a91dc6935...ba79af03959ebeac9769e648f473a284504d9193">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/download-artifact` from 4.2.1 to 4.3.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/download-artifact/releases">actions/download-artifact's
releases</a>.</em></p>
<blockquote>
<h2>v4.3.0</h2>
<h2>What's Changed</h2>
<ul>
<li>feat: implement new <code>artifact-ids</code> input by <a
href="https://github.com/GrantBirki"><code>@​GrantBirki</code></a> in <a
href="https://redirect.github.com/actions/download-artifact/pull/401">actions/download-artifact#401</a></li>
<li>Fix workflow example for downloading by artifact ID by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/download-artifact/pull/402">actions/download-artifact#402</a></li>
<li>Prep for v4.3.0 release by <a
href="https://github.com/robherley"><code>@​robherley</code></a> in <a
href="https://redirect.github.com/actions/download-artifact/pull/404">actions/download-artifact#404</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/GrantBirki"><code>@​GrantBirki</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/download-artifact/pull/401">actions/download-artifact#401</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/download-artifact/compare/v4.2.1...v4.3.0">https://github.com/actions/download-artifact/compare/v4.2.1...v4.3.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/download-artifact/commit/d3f86a106a0bac45b974a628896c90dbdf5c8093"><code>d3f86a1</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/download-artifact/issues/404">#404</a>
from actions/robherley/v4.3.0</li>
<li><a
href="https://github.com/actions/download-artifact/commit/fc02353415da80201a0da48ab47022efd7725d11"><code>fc02353</code></a>
prep for v4.3.0 release</li>
<li><a
href="https://github.com/actions/download-artifact/commit/77454371a433f370a16d329ef7db197f700a7a8f"><code>7745437</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/download-artifact/issues/402">#402</a>
from actions/joshmgross/download-by-id-example</li>
<li><a
href="https://github.com/actions/download-artifact/commit/84fc7a0a358aabc7f97f7f590cbfc25f57e26c6a"><code>84fc7a0</code></a>
Remove path filters from Check dist workflow</li>
<li><a
href="https://github.com/actions/download-artifact/commit/67f2bc382f6ba5ba75812a05909e8c25a366b5fb"><code>67f2bc3</code></a>
Fix workflow example for downloading by artifact ID</li>
<li><a
href="https://github.com/actions/download-artifact/commit/8ea3c2c174f79a56792e9fdd9baad75d27c5d369"><code>8ea3c2c</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/download-artifact/issues/401">#401</a>
from actions/download-by-id</li>
<li><a
href="https://github.com/actions/download-artifact/commit/d219c630f65d8bd14366a9e2f731cbf854f62258"><code>d219c63</code></a>
add supporting unit tests for artifact downloads with ids</li>
<li><a
href="https://github.com/actions/download-artifact/commit/54124fbd881f8ce794405a06896c93c49c17463e"><code>54124fb</code></a>
revert <code>getArtifact()</code> changes - for now we have to list and
filter by artifa...</li>
<li><a
href="https://github.com/actions/download-artifact/commit/b83057b90d3e218abf5c7b1906579eb6c598ae85"><code>b83057b</code></a>
bundle</li>
<li><a
href="https://github.com/actions/download-artifact/commit/171183c7dce98c3cf8a1fc842429d0a38ed21d33"><code>171183c</code></a>
use the same <code>artifactClient.getArtifact</code> structure as seen
above in `isSingl...</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/download-artifact/compare/95815c38cf2ff2164869cbab79da8d1f422bc89e...d3f86a106a0bac45b974a628896c90dbdf5c8093">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/attest` from 2.2.1 to 2.3.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/attest/releases">actions/attest's
releases</a>.</em></p>
<blockquote>
<h2>v2.3.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Bump <code>@​octokit/request</code> from 8.2.0 to 8.4.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/attest/pull/229">actions/attest#229</a></li>
<li>Bump <code>@​sigstore/oci</code> from 0.4.0 to 0.5.0 by <a
href="https://github.com/bdehamer"><code>@​bdehamer</code></a> in <a
href="https://redirect.github.com/actions/attest/pull/235">actions/attest#235</a>
<ul>
<li>Adds support for reading the <code>HttpHeaders</code> value from the
Docker config file</li>
</ul>
</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/attest/compare/v2...v2.3.0">https://github.com/actions/attest/compare/v2...v2.3.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/attest/commit/afd638254319277bb3d7f0a234478733e2e46a73"><code>afd6382</code></a>
Bump <code>@​sigstore/oci</code> from 0.4.0 to 0.5.0 (<a
href="https://redirect.github.com/actions/attest/issues/235">#235</a>)</li>
<li><a
href="https://github.com/actions/attest/commit/d73111199c05526c91684e5e845606249f88accc"><code>d731111</code></a>
Bump the npm-development group across 1 directory with 6 updates (<a
href="https://redirect.github.com/actions/attest/issues/234">#234</a>)</li>
<li><a
href="https://github.com/actions/attest/commit/13aa4f6a9ce09dcf318f1ac18a48388699d96a62"><code>13aa4f6</code></a>
Bump <code>@​octokit/request</code> from 8.2.0 to 8.4.1 (<a
href="https://redirect.github.com/actions/attest/issues/229">#229</a>)</li>
<li><a
href="https://github.com/actions/attest/commit/129b656e44fad75bb154cc2953cf07ba1da8a419"><code>129b656</code></a>
Bump the npm-development group with 3 updates (<a
href="https://redirect.github.com/actions/attest/issues/227">#227</a>)</li>
<li><a
href="https://github.com/actions/attest/commit/f3c169c8df83481993e3075060fc687e87747125"><code>f3c169c</code></a>
Bump the npm-development group with 5 updates (<a
href="https://redirect.github.com/actions/attest/issues/225">#225</a>)</li>
<li><a
href="https://github.com/actions/attest/commit/48e991bfda5b806f66f0a2ad8ae4e17f14cdfd33"><code>48e991b</code></a>
Bump the npm-development group across 1 directory with 6 updates (<a
href="https://redirect.github.com/actions/attest/issues/223">#223</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/attest/compare/a63cfcc7d1aab266ee064c58250cfc2c7d07bc31...afd638254319277bb3d7f0a234478733e2e46a73">compare
view</a></li>
</ul>
</details>
<br />

Updates `tj-actions/changed-files` from
9934ab3fdf63239da75d9e0fbd339c48620c72c4 to
5426ecc3f5c2b10effaefbd374f0abdc6a571b2f
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tj-actions/changed-files/blob/main/HISTORY.md">tj-actions/changed-files's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.4...v46.0.5">46.0.5</a>
- (2025-04-09)</h1>
<h2><!-- raw HTML omitted -->⚙️ Miscellaneous Tasks</h2>
<ul>
<li><strong>deps:</strong> Bump yaml from 2.7.0 to 2.7.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2520">#2520</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/ed68ef82c095e0d48ec87eccea555d944a631a4c">ed68ef8</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump typescript from 5.8.2 to 5.8.3 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2516">#2516</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/a7bc14b808f23d3b467a4079c69a81f1a4500fd5">a7bc14b</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump <code>@​types/node</code> from
22.13.11 to 22.14.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2517">#2517</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/3d751f6b6d84071a17e1b9cf4ed79a80a27dd0ab">3d751f6</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump eslint-plugin-prettier from 5.2.3 to
5.2.6 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2519">#2519</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/e2fda4ec3cb0bc2a353843cae823430b3124db8f">e2fda4e</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump ts-jest from 29.2.6 to 29.3.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2518">#2518</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/0bed1b1132ec4879a39a2d624cf82a00d0bcfa48">0bed1b1</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump github/codeql-action from 3.28.12 to
3.28.15 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2530">#2530</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/68024587dc36f49685c96d59d3f1081830f968bb">6802458</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump tj-actions/branch-names from 8.0.1 to
8.1.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2521">#2521</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/cf2e39e86bf842d1f9bc5bca56c0a6b207cca792">cf2e39e</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump tj-actions/verify-changed-files from
20.0.1 to 20.0.4 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2523">#2523</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/6abeaa506a419f85fa9e681260b443adbeebb3d4">6abeaa5</a>)
- (dependabot[bot])</li>
</ul>
<h2><!-- raw HTML omitted -->⬆️ Upgrades</h2>
<ul>
<li>Upgraded to v46.0.4 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2511">#2511</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted --> (<a
href="https://github.com/tj-actions/changed-files/commit/6f67ee9ac810f0192ea7b3d2086406f97847bcf9">6f67ee9</a>)
- (github-actions[bot])</p>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.3...v46.0.4">46.0.4</a>
- (2025-04-03)</h1>
<h2><!-- raw HTML omitted -->🐛 Bug Fixes</h2>
<ul>
<li>Bug modified_keys and changed_key outputs not set when no changes
detected (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2509">#2509</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/6cb76d07bee4c9772c6882c06c37837bf82a04d3">6cb76d0</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->📚 Documentation</h2>
<ul>
<li>Update readme (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2508">#2508</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/b74df86ccb65173a8e33ba5492ac1a2ca6b216fd">b74df86</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->⬆️ Upgrades</h2>
<ul>
<li>Upgraded to v46.0.3 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2506">#2506</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted -->
Co-authored-by: Tonye Jack <a
href="mailto:jtonye@ymail.com">jtonye@ymail.com</a> (<a
href="https://github.com/tj-actions/changed-files/commit/27ae6b33eaed7bf87272fdeb9f1c54f9facc9d99">27ae6b3</a>)
- (github-actions[bot])</p>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.2...v46.0.3">46.0.3</a>
- (2025-03-23)</h1>
<h2><!-- raw HTML omitted -->🔄 Update</h2>
<ul>
<li>Updated README.md (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2501">#2501</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted --> (<a
href="https://github.com/tj-actions/changed-files/commit/41e0de576a0f2b64d9f06f2773f539109e55a70a">41e0de5</a>)
- (github-actions[bot])</p>
<ul>
<li>Updated README.md (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2499">#2499</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted --> (<a
href="https://github.com/tj-actions/changed-files/commit/945787811a795cd840a1157ac590dd7827a05c8e">9457878</a>)
- (github-actions[bot])</p>
<h2><!-- raw HTML omitted -->📚 Documentation</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tj-actions/changed-files/commit/5426ecc3f5c2b10effaefbd374f0abdc6a571b2f"><code>5426ecc</code></a>
chore(deps): bump actions/download-artifact from 4.2.1 to 4.3.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2545">#2545</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/513a44e6095ccea82c33927169db11eb75f72791"><code>513a44e</code></a>
chore(deps-dev): bump <code>@​types/node</code> from 22.14.1 to 22.15.0
(<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2544">#2544</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/46e217dc3e3b2601594036314ca9212588075592"><code>46e217d</code></a>
chore(deps): bump github/codeql-action from 3.28.15 to 3.28.16 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2542">#2542</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/c34c1c13a740b06851baff92ab9a653d93ad6ce7"><code>c34c1c1</code></a>
chore(deps): bump actions/setup-node from 4.3.0 to 4.4.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2539">#2539</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/52c3beb9971d42006b24e86bf3ea3fff18dde67f"><code>52c3beb</code></a>
chore(deps-dev): bump ts-jest from 29.3.1 to 29.3.2 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2536">#2536</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/ea3010bc88ae93076e154efd9eb64d1f5e6993f9"><code>ea3010b</code></a>
chore(deps-dev): bump <code>@​types/node</code> from 22.14.0 to 22.14.1
(<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2537">#2537</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/be393a90381e27c9fec2c8c2e02b00f005710145"><code>be393a9</code></a>
remove: commit and push step from build job (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2538">#2538</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/9b4bb2bedb217d3ede225b6b07ebde713177cd8f"><code>9b4bb2b</code></a>
chore(deps): bump tj-actions/branch-names from 8.1.0 to 8.2.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2535">#2535</a>)</li>
<li>See full diff in <a
href="https://github.com/tj-actions/changed-files/compare/9934ab3fdf63239da75d9e0fbd339c48620c72c4...5426ecc3f5c2b10effaefbd374f0abdc6a571b2f">compare
view</a></li>
</ul>
</details>
<br />

Updates `nix-community/cache-nix-action` from 6.1.2 to 6.1.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/nix-community/cache-nix-action/releases">nix-community/cache-nix-action's
releases</a>.</em></p>
<blockquote>
<h2>v6.1.3</h2>
<h2>Fixes</h2>
<ul>
<li>Use <code>bigint</code> instead of <code>number</code> for the store
size (<a
href="https://redirect.github.com/nix-community/cache-nix-action/issues/117">#117</a>)</li>
<li>Fix saving a cache (<a
href="https://redirect.github.com/nix-community/cache-nix-action/issues/122">#122</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/nix-community/cache-nix-action/commit/135667ec418502fa5a3598af6fb9eb733888ce6a"><code>135667e</code></a>
Merge pull request <a
href="https://redirect.github.com/nix-community/cache-nix-action/issues/122">#122</a>
from nix-community/118-bug-cant-save-a-cache</li>
<li><a
href="https://github.com/nix-community/cache-nix-action/commit/e29de90a039b410e88cd97a0029c3cbdad611ad5"><code>e29de90</code></a>
chore: build the action</li>
<li><a
href="https://github.com/nix-community/cache-nix-action/commit/6bd39b8caa31871d2bc38356ab8b94621ca1e116"><code>6bd39b8</code></a>
fix(action): use TarCommandModifiers</li>
<li><a
href="https://github.com/nix-community/cache-nix-action/commit/1b6f6754d3c59414aad4ab660cd611b1e35c0232"><code>1b6f675</code></a>
chore(deps): update buildjet/toolkit</li>
<li><a
href="https://github.com/nix-community/cache-nix-action/commit/2b45b8cabe18b0f3db2eb2cf4e195238eee4a325"><code>2b45b8c</code></a>
chore(deps): update actions/toolkit</li>
<li><a
href="https://github.com/nix-community/cache-nix-action/commit/f68581e27a06c8c9115dec37e42325d562d9664b"><code>f68581e</code></a>
chore: build the action</li>
<li><a
href="https://github.com/nix-community/cache-nix-action/commit/b6406dc6e7f9c6ad6b399ed561f29f7e406544d5"><code>b6406dc</code></a>
Merge pull request <a
href="https://redirect.github.com/nix-community/cache-nix-action/issues/117">#117</a>
from nix-community/116-bug-inputsgcmaxstoresizevalue-...</li>
<li><a
href="https://github.com/nix-community/cache-nix-action/commit/a91821953137cbb5f2a2d45fa174d69fea427ef4"><code>a918219</code></a>
chore: build the action</li>
<li><a
href="https://github.com/nix-community/cache-nix-action/commit/c6081efc5157c972934491630ade96e53259023c"><code>c6081ef</code></a>
feat(ci): add example of large gc-max-store-size</li>
<li><a
href="https://github.com/nix-community/cache-nix-action/commit/cf6af9e3e9fb402a3b92286b7c8b48afa94de5a6"><code>cf6af9e</code></a>
fix(action): use bigint for the store size</li>
<li>Additional commits viewable in <a
href="https://github.com/nix-community/cache-nix-action/compare/c448f065ba14308da81de769632ca67a3ce67cf5...135667ec418502fa5a3598af6fb9eb733888ce6a">compare
view</a></li>
</ul>
</details>
<br />

Updates `github/codeql-action` from 3.28.15 to 3.28.16
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.28.16</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.28.16 - 23 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2863">#2863</a></li>
</ul>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.28.16/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<p>No user facing changes.</p>
<h2>3.28.16 - 23 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2863">#2863</a></li>
</ul>
<h2>3.28.15 - 07 Apr 2025</h2>
<ul>
<li>Fix bug where the action would fail if it tried to produce a debug
artifact with more than 65535 files. <a
href="https://redirect.github.com/github/codeql-action/pull/2842">#2842</a></li>
</ul>
<h2>3.28.14 - 07 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2838">#2838</a></li>
</ul>
<h2>3.28.13 - 24 Mar 2025</h2>
<p>No user facing changes.</p>
<h2>3.28.12 - 19 Mar 2025</h2>
<ul>
<li>Dependency caching should now cache more dependencies for Java
<code>build-mode: none</code> extractions. This should speed up
workflows and avoid inconsistent alerts in some cases.</li>
<li>Update default CodeQL bundle version to 2.20.7. <a
href="https://redirect.github.com/github/codeql-action/pull/2810">#2810</a></li>
</ul>
<h2>3.28.11 - 07 Mar 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.20.6. <a
href="https://redirect.github.com/github/codeql-action/pull/2793">#2793</a></li>
</ul>
<h2>3.28.10 - 21 Feb 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.20.5. <a
href="https://redirect.github.com/github/codeql-action/pull/2772">#2772</a></li>
<li>Address an issue where the CodeQL Bundle would occasionally fail to
decompress on macOS. <a
href="https://redirect.github.com/github/codeql-action/pull/2768">#2768</a></li>
</ul>
<h2>3.28.9 - 07 Feb 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.20.4. <a
href="https://redirect.github.com/github/codeql-action/pull/2753">#2753</a></li>
</ul>
<h2>3.28.8 - 29 Jan 2025</h2>
<ul>
<li>Enable support for Kotlin 2.1.10 when running with CodeQL CLI
v2.20.3. <a
href="https://redirect.github.com/github/codeql-action/pull/2744">#2744</a></li>
</ul>
<h2>3.28.7 - 29 Jan 2025</h2>
<p>No user facing changes.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/28deaeda66b76a05916b6923827895f2b14ab387"><code>28deaed</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2865">#2865</a>
from github/update-v3.28.16-2a8cbadc0</li>
<li><a
href="https://github.com/github/codeql-action/commit/03c5d71c11f6cb2c5ba7eef371219a862be30193"><code>03c5d71</code></a>
Update changelog for v3.28.16</li>
<li><a
href="https://github.com/github/codeql-action/commit/2a8cbadc02bb64a7fd15d37c977acbad02496c80"><code>2a8cbad</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2863">#2863</a>
from github/update-bundle/codeql-bundle-v2.21.1</li>
<li><a
href="https://github.com/github/codeql-action/commit/f76eaf51a636a5c1d927998267d92d6475363ace"><code>f76eaf5</code></a>
Add changelog note</li>
<li><a
href="https://github.com/github/codeql-action/commit/e63b3f5166c15fda4eb17886f01abe9445dd13f5"><code>e63b3f5</code></a>
Update default bundle to codeql-bundle-v2.21.1</li>
<li><a
href="https://github.com/github/codeql-action/commit/4c3e5362829f0b0bb62ff5f6c938d7f95574c306"><code>4c3e536</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2853">#2853</a>
from github/dependabot/npm_and_yarn/npm-7d84c66b66</li>
<li><a
href="https://github.com/github/codeql-action/commit/56dd02f26d99811d607284494ff84b7d862fe837"><code>56dd02f</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2852">#2852</a>
from github/dependabot/github_actions/actions-457587...</li>
<li><a
href="https://github.com/github/codeql-action/commit/192406dd845fb2228fcea74898b98df2a6cdcef6"><code>192406d</code></a>
Merge branch 'main' into
dependabot/github_actions/actions-4575878e06</li>
<li><a
href="https://github.com/github/codeql-action/commit/c7dbb2084ed1bb623fbbb3976cd6dbae6daaf1fe"><code>c7dbb20</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2857">#2857</a>
from github/nickfyson/address-vulns</li>
<li><a
href="https://github.com/github/codeql-action/commit/9a45cd8c5025281c30bbb652197ace083c291e49"><code>9a45cd8</code></a>
move use of input variables into env vars</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/45775bd8235c68ba998cffa5171334d58593da47...28deaeda66b76a05916b6923827895f2b14ab387">compare
view</a></li>
</ul>
</details>
<br />


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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-28 13:22:26 +00:00
dependabot[bot] b299ebebf7 chore: bump github.com/valyala/fasthttp from 1.60.0 to 1.61.0 (#17575)
Bumps [github.com/valyala/fasthttp](https://github.com/valyala/fasthttp)
from 1.60.0 to 1.61.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/valyala/fasthttp/releases">github.com/valyala/fasthttp's
releases</a>.</em></p>
<blockquote>
<h2>v1.61.0</h2>
<h2>What's Changed</h2>
<ul>
<li>chore(deps): bump golang.org/x/sys from 0.31.0 to 0.32.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/1989">valyala/fasthttp#1989</a></li>
<li>chore(deps): bump golang.org/x/crypto from 0.36.0 to 0.37.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/1988">valyala/fasthttp#1988</a></li>
<li>chore(deps): bump securego/gosec from 2.22.2 to 2.22.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/1990">valyala/fasthttp#1990</a></li>
<li>chore(deps): bump golang.org/x/net from 0.38.0 to 0.39.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/1991">valyala/fasthttp#1991</a></li>
<li>Fix round robin addresses in dual stack dialing by <a
href="https://github.com/raviqqe"><code>@​raviqqe</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/1995">valyala/fasthttp#1995</a></li>
<li>Fix panic when perIPConn.Close is called multiple times by <a
href="https://github.com/erikdubbelboer"><code>@​erikdubbelboer</code></a>
in <a
href="https://redirect.github.com/valyala/fasthttp/pull/1993">valyala/fasthttp#1993</a></li>
<li>early hint functionality by <a
href="https://github.com/pjebs"><code>@​pjebs</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/1996">valyala/fasthttp#1996</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/raviqqe"><code>@​raviqqe</code></a> made
their first contribution in <a
href="https://redirect.github.com/valyala/fasthttp/pull/1995">valyala/fasthttp#1995</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/valyala/fasthttp/compare/v1.60.0...v1.61.0">https://github.com/valyala/fasthttp/compare/v1.60.0...v1.61.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/valyala/fasthttp/commit/a05560dd7e07834473c374ba3d1bfc9dfa508d64"><code>a05560d</code></a>
implement early hints (<a
href="https://redirect.github.com/valyala/fasthttp/issues/1996">#1996</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/48f3a2f423f103cd67e504a51f3ec3a1381a5620"><code>48f3a2f</code></a>
Fix panic when perIPConn.Close is called multiple times (<a
href="https://redirect.github.com/valyala/fasthttp/issues/1993">#1993</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/e380d34bce703d5d43b8effcef66b7305af12a35"><code>e380d34</code></a>
Fix round robin addresses in dual stack dialing (<a
href="https://redirect.github.com/valyala/fasthttp/issues/1995">#1995</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/4c71125994a1a67c8c6cb979142ae4269c5d89f1"><code>4c71125</code></a>
chore(deps): bump golang.org/x/net from 0.38.0 to 0.39.0 (<a
href="https://redirect.github.com/valyala/fasthttp/issues/1991">#1991</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/76acf1443d615f73837ed7ef2de7924316746809"><code>76acf14</code></a>
chore(deps): bump securego/gosec from 2.22.2 to 2.22.3 (<a
href="https://redirect.github.com/valyala/fasthttp/issues/1990">#1990</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/236b2f3148d527c23524f44d9b521d7640dd06a6"><code>236b2f3</code></a>
chore(deps): bump golang.org/x/crypto from 0.36.0 to 0.37.0 (<a
href="https://redirect.github.com/valyala/fasthttp/issues/1988">#1988</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/2629d9d8697d11b2085c73f5005a234448336e84"><code>2629d9d</code></a>
chore(deps): bump golang.org/x/sys from 0.31.0 to 0.32.0 (<a
href="https://redirect.github.com/valyala/fasthttp/issues/1989">#1989</a>)</li>
<li>See full diff in <a
href="https://github.com/valyala/fasthttp/compare/v1.60.0...v1.61.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/valyala/fasthttp&package-manager=go_modules&previous-version=1.60.0&new-version=1.61.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>
2025-04-28 13:12:46 +00:00
dependabot[bot] 38e7793c91 chore: bump github.com/gohugoio/hugo from 0.146.3 to 0.147.0 (#17577)
Bumps [github.com/gohugoio/hugo](https://github.com/gohugoio/hugo) from
0.146.3 to 0.147.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/gohugoio/hugo/releases">github.com/gohugoio/hugo's
releases</a>.</em></p>
<blockquote>
<h2>v0.147.0</h2>
<p>This release comes with a new <code>aligny</code> option (shoutout to
<a href="https://github.com/pranshugaba"><code>@​pranshugaba</code></a>
for the implementation) for <a
href="https://gohugo.io/functions/images/text/">images.Text</a> that, in
combination with <code>alignx</code> makes it simple to e.g. center the
text on top of image in both axis. But the main reason this release
comes now and not later, is the improvements/fixes to the order Hugo
applies the default configuration to some keys. This is inherited from
how we did this before we rewrote the configuration handling, and it
made the merging of configuration from modules/themes into the config
root harder and less flexible than it had to be. Me, <a
href="https://github.com/bep"><code>@​bep</code></a>, looking into this,
was triggered by <a
href="https://discourse.gohugo.io/t/how-to-manage-common-config-in-hugo-using-modules/54485/4">this</a>
forum topic. Having many sites share a common configuration is very
useful. With this release, you can simply get what the thread starter
asks for by doing something à la:</p>
<pre lang="toml"><code>baseURL = &quot;http://example.org&quot;
title = &quot;My Hugo Site&quot;
<h1>... import any themes/modules.</h1>
<h1>This will merge in all config imported from imported modules.</h1>
<p>_merge = &quot;deep&quot;
</code></pre></p>
<p>See the <a
href="https://gohugo.io/configuration/introduction/#merge-configuration-settings">documentation</a>
for details.</p>
<h2>Bug fixes</h2>
<ul>
<li>tpl: Fix it so we always prefer internal codeblock rendering over
render-codeblock-foo.html and similar 07983e04e <a
href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13651">#13651</a></li>
<li>tpl/tplimpl: Fix allowFullScreen option in Vimeo and YouTube
shortcodes 5c491409d <a
href="https://github.com/jmooring"><code>@​jmooring</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13650">#13650</a></li>
<li>config: Fix _merge issue when key doesn't exist on the left side
179aea11a <a href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13643">#13643</a>
<a
href="https://redirect.github.com/gohugoio/hugo/issues/13646">#13646</a></li>
<li>all: Fix typos 6a0e04241 <a
href="https://github.com/coliff"><code>@​coliff</code></a></li>
</ul>
<h2>Improvements</h2>
<ul>
<li>create/skeletons: Adjust template names in theme skeleton 75b219db8
<a href="https://github.com/jmooring"><code>@​jmooring</code></a></li>
<li>tpl: Remove some unreached code branches ad4f63c92 <a
href="https://github.com/bep"><code>@​bep</code></a></li>
<li>images: Add some test cases for aligny on images.Text 53202314a <a
href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13414">#13414</a></li>
<li>images: Add option for vertical alignment to images.Text 2fce0bac0
<a
href="https://github.com/pranshugaba"><code>@​pranshugaba</code></a></li>
</ul>
<h2>Dependency Updates</h2>
<ul>
<li>build(deps): bump github.com/evanw/esbuild from 0.25.2 to 0.25.3
1bd7ac7ed <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]</li>
<li>build(deps): bump github.com/alecthomas/chroma/v2 from 2.16.0 to
2.17.0 41cb880f9 <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]</li>
</ul>
<h2>v0.146.7</h2>
<h2>Bug fixes</h2>
<ul>
<li>Revert the breaking change from 0.146.0 with dots in content
filenames 496730840 <a
href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13632">#13632</a></li>
<li>tpl: Fix indeterminate template lookup with templates with and
without lang 6d69dc88a <a
href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13636">#13636</a></li>
<li>tpl/collections: Fix where ... not in with empty slice 4eb0e4286 <a
href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13621">#13621</a></li>
<li>tpl: Fix layout fall back logic when layout is set in front matter
but not found 5e62cc6fc <a
href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13630">#13630</a></li>
</ul>
<h2>Improvements</h2>
<ul>
<li>parser/metadecoders: Add CSV targetType (map or slice) option to
transform.Unmarshal db72a1f07 <a
href="https://github.com/jmooring"><code>@​jmooring</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/8859">#8859</a></li>
<li>tpl: Detect and fail on infinite template recursion 1408c156d <a
href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13627">#13627</a></li>
</ul>
<h2>Dependency Updates</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/gohugoio/hugo/commit/7d0039b86ddd6397816cc3383cb0cfa481b15f32"><code>7d0039b</code></a>
releaser: Bump versions for release of 0.147.0</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/07983e04e29986a683c7a9f15d48b83e90aff09c"><code>07983e0</code></a>
tpl: Fix it so we always prefer internal codeblock rendering over
render-code...</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/5c491409d36d31f77cdc0407ed29ae2dca71363b"><code>5c49140</code></a>
tpl/tplimpl: Fix allowFullScreen option in Vimeo and YouTube
shortcodes</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/75b219db896cd0ae962f062b39fd67c38dfc8e5b"><code>75b219d</code></a>
create/skeletons: Adjust template names in theme skeleton</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/ad4f63c92f41824b861d317f9248fb30b7e68076"><code>ad4f63c</code></a>
tpl: Remove some unreached code branches</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/53202314abdd05d8f0b6ffdcef96640ac3267344"><code>5320231</code></a>
images: Add some test cases for aligny on images.Text</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/2fce0bac033d8b7e98046f85f669ba813d862788"><code>2fce0ba</code></a>
images: Add option for vertical alignment to images.Text</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/179aea11ac2ce80a38b211e11fd513cead63b17e"><code>179aea1</code></a>
config: Fix _merge issue when key doesn't exist on the left side</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/61a286595e9a333fef95db1e9a086ef9367b3d87"><code>61a2865</code></a>
Merge commit 'b3d87dd0fd746f07f9afa6e6a2969aea41da6a38'</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/b3d87dd0fd746f07f9afa6e6a2969aea41da6a38"><code>b3d87dd</code></a>
Squashed 'docs/' changes from dc7a9ae12..b654fcba0</li>
<li>Additional commits viewable in <a
href="https://github.com/gohugoio/hugo/compare/v0.146.3...v0.147.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/gohugoio/hugo&package-manager=go_modules&previous-version=0.146.3&new-version=0.147.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>
2025-04-28 12:22:14 +00:00
dependabot[bot] 42e91de81d chore: bump google.golang.org/api from 0.229.0 to 0.230.0 (#17578)
Bumps
[google.golang.org/api](https://github.com/googleapis/google-api-go-client)
from 0.229.0 to 0.230.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-api-go-client/releases">google.golang.org/api's
releases</a>.</em></p>
<blockquote>
<h2>v0.230.0</h2>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.229.0...v0.230.0">0.230.0</a>
(2025-04-22)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3111">#3111</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/59f08c8d98394de1311907950ae52b75db151a6a">59f08c8</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3113">#3113</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/40e4fb1ee01719658774befbfc582c20ee06581f">40e4fb1</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3114">#3114</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/f0bb0a13159f29b30624027724b3ea0ad08c0ff0">f0bb0a1</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3115">#3115</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/c122b14b51ab658a5f666b9ec9ab318288c4273d">c122b14</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3117">#3117</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/1c0aadbeaf819dfcb52903b978085ac96c12522c">1c0aadb</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3118">#3118</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/2b6fa61936ada3252efc355ea176dd638c2f5baa">2b6fa61</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3120">#3120</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/18c546ede7af9fae3ff7115c01a31208c3a9d734">18c546e</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3121">#3121</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/ff1b166e4564423ae96c464cad4435db71cefded">ff1b166</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Removes-redundant (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3095">#3095</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/9e9ff112acacecddc17be15d4f37ca45fb9177ad">9e9ff11</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md">google.golang.org/api's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.229.0...v0.230.0">0.230.0</a>
(2025-04-22)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3111">#3111</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/59f08c8d98394de1311907950ae52b75db151a6a">59f08c8</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3113">#3113</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/40e4fb1ee01719658774befbfc582c20ee06581f">40e4fb1</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3114">#3114</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/f0bb0a13159f29b30624027724b3ea0ad08c0ff0">f0bb0a1</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3115">#3115</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/c122b14b51ab658a5f666b9ec9ab318288c4273d">c122b14</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3117">#3117</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/1c0aadbeaf819dfcb52903b978085ac96c12522c">1c0aadb</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3118">#3118</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/2b6fa61936ada3252efc355ea176dd638c2f5baa">2b6fa61</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3120">#3120</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/18c546ede7af9fae3ff7115c01a31208c3a9d734">18c546e</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3121">#3121</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/ff1b166e4564423ae96c464cad4435db71cefded">ff1b166</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Removes-redundant (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3095">#3095</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/9e9ff112acacecddc17be15d4f37ca45fb9177ad">9e9ff11</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/e4f4ca981adfca5cdf031dd30c645ee356591d12"><code>e4f4ca9</code></a>
chore(main): release 0.230.0 (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3112">#3112</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/ff1b166e4564423ae96c464cad4435db71cefded"><code>ff1b166</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3121">#3121</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/5b0e60da0b3c608ab354297a727eedac9c403fde"><code>5b0e60d</code></a>
chore(all): update all (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3119">#3119</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/18c546ede7af9fae3ff7115c01a31208c3a9d734"><code>18c546e</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3120">#3120</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/2b6fa61936ada3252efc355ea176dd638c2f5baa"><code>2b6fa61</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3118">#3118</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/1c0aadbeaf819dfcb52903b978085ac96c12522c"><code>1c0aadb</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3117">#3117</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/c122b14b51ab658a5f666b9ec9ab318288c4273d"><code>c122b14</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3115">#3115</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/f0bb0a13159f29b30624027724b3ea0ad08c0ff0"><code>f0bb0a1</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3114">#3114</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/9e9ff112acacecddc17be15d4f37ca45fb9177ad"><code>9e9ff11</code></a>
fix: removes-redundant (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3095">#3095</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/40e4fb1ee01719658774befbfc582c20ee06581f"><code>40e4fb1</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3113">#3113</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/googleapis/google-api-go-client/compare/v0.229.0...v0.230.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/api&package-manager=go_modules&previous-version=0.229.0&new-version=0.230.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>
2025-04-28 12:21:55 +00:00
dependabot[bot] cabfc98030 chore: bump github.com/mark3labs/mcp-go from 0.22.0 to 0.23.1 (#17576)
Bumps [github.com/mark3labs/mcp-go](https://github.com/mark3labs/mcp-go)
from 0.22.0 to 0.23.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mark3labs/mcp-go/releases">github.com/mark3labs/mcp-go's
releases</a>.</em></p>
<blockquote>
<h2>Release v0.23.1</h2>
<h2>What's Changed</h2>
<ul>
<li>fix(client): prevent panics by <a
href="https://github.com/jkoelker"><code>@​jkoelker</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/192">mark3labs/mcp-go#192</a></li>
<li>fix: correct JSON key for client capabilities by <a
href="https://github.com/TBXark"><code>@​TBXark</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/197">mark3labs/mcp-go#197</a></li>
<li>fix(client): check stdio started before sending notification by <a
href="https://github.com/cryo-zd"><code>@​cryo-zd</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/199">mark3labs/mcp-go#199</a></li>
<li>fix(client): potential risk of sending on closed channel by <a
href="https://github.com/cryo-zd"><code>@​cryo-zd</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/194">mark3labs/mcp-go#194</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/TBXark"><code>@​TBXark</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/197">mark3labs/mcp-go#197</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.23.0...v0.23.1">https://github.com/mark3labs/mcp-go/compare/v0.23.0...v0.23.1</a></p>
<h2>Release v0.23.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Export SendNotificationToAllClients by <a
href="https://github.com/scottfeldman"><code>@​scottfeldman</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/176">mark3labs/mcp-go#176</a></li>
<li>feat(server): Add hooks.AddOnUnregisterSession functionality by <a
href="https://github.com/robert-jackson-glean"><code>@​robert-jackson-glean</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/175">mark3labs/mcp-go#175</a></li>
<li>Refact: pre-allocate memory for memory-efficiency by <a
href="https://github.com/cryo-zd"><code>@​cryo-zd</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/178">mark3labs/mcp-go#178</a></li>
<li>fix sse shutdown by <a
href="https://github.com/karngyan"><code>@​karngyan</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/128">mark3labs/mcp-go#128</a></li>
<li>fix: update spec link by <a
href="https://github.com/warjiang"><code>@​warjiang</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/188">mark3labs/mcp-go#188</a></li>
<li>Add <code>InProcessTransport</code> by <a
href="https://github.com/dugenkui03"><code>@​dugenkui03</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/189">mark3labs/mcp-go#189</a></li>
<li>Optimize capability and notification according to specification by
<a href="https://github.com/dugenkui03"><code>@​dugenkui03</code></a> in
<a
href="https://redirect.github.com/mark3labs/mcp-go/pull/184">mark3labs/mcp-go#184</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/scottfeldman"><code>@​scottfeldman</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/176">mark3labs/mcp-go#176</a></li>
<li><a href="https://github.com/cryo-zd"><code>@​cryo-zd</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/178">mark3labs/mcp-go#178</a></li>
<li><a href="https://github.com/karngyan"><code>@​karngyan</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/128">mark3labs/mcp-go#128</a></li>
<li><a href="https://github.com/warjiang"><code>@​warjiang</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/188">mark3labs/mcp-go#188</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.22.0...v0.23.0">https://github.com/mark3labs/mcp-go/compare/v0.22.0...v0.23.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/edda393a1a231aefaaef41086ba7344e30c6b559"><code>edda393</code></a>
fix potential risk of sending on closed channel (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/194">#194</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/6e000c30767a9e03f90d2a3932af91c620945323"><code>6e000c3</code></a>
check stdio start before sending notification (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/199">#199</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/fb13cfbf97dfa75c4245e3924a8e9ced99871a55"><code>fb13cfb</code></a>
fix: correct JSON key for client capabilities (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/197">#197</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/d343bff720e8ce4c21415dd7bb253bd107d2d0d7"><code>d343bff</code></a>
fix(client): prevent panics (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/192">#192</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/781b7327ad04888293d38d0bf0a9cd0588d3af79"><code>781b732</code></a>
optimize capability and notification (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/184">#184</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/6760d870f40fa9df86a733170d2d3951ebe5659c"><code>6760d87</code></a>
in process transport (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/189">#189</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/be0d8cbfe8cefde1ad0116b76b4abebd93bf323f"><code>be0d8cb</code></a>
fix: update spec link (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/188">#188</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/2e4af4cf0c6dd36013aeb725f547ad4963c2155d"><code>2e4af4c</code></a>
fix sse shutdown (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/128">#128</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/9f39a43b4e9d756e386289dd687f57cf9ffacfe0"><code>9f39a43</code></a>
Merge branch 'main' of github.com:mark3labs/mcp-go</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/dd7dcc515d62b442b53b1789a4d41959547719a3"><code>dd7dcc5</code></a>
Fix spelling</li>
<li>Additional commits viewable in <a
href="https://github.com/mark3labs/mcp-go/compare/v0.22.0...v0.23.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/mark3labs/mcp-go&package-manager=go_modules&previous-version=0.22.0&new-version=0.23.1)](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>
2025-04-28 12:20:30 +00:00
Danny Kopping e0483e3136 feat: add prebuilds metrics collector (#17547)
Closes https://github.com/coder/internal/issues/509

---------

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
2025-04-28 12:28:56 +02:00
Hugo Dutka b47d54d777 chore: cache terraform providers between CI test runs (#17373)
Addresses https://github.com/coder/internal/issues/322.

This PR starts caching Terraform providers used by `TestProvision` in
`provisioner/terraform/provision_test.go`. The goal is to improve the
reliability of this test by cutting down on the number of network calls
to external services. It leverages GitHub Actions cache, which [on depot
runners is persisted for 14 days by
default](https://depot.dev/docs/github-actions/overview#cache-retention-policy).

Other than the aforementioned `TestProvision`, I couldn't find any other
tests which depend on external terraform providers.
2025-04-28 10:57:24 +02:00
Danny Kopping 08ad910171 feat: add prebuilds configuration & bootstrapping (#17527)
Closes https://github.com/coder/internal/issues/508

---------

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
Co-authored-by: Cian Johnston <cian@coder.com>
2025-04-25 11:07:15 +02:00
Jaayden Halko e562e3c882 chore: mark parameters as required (#17551)
This adds a red asterisk next to a parameter name if it is required and
marks passes the parameter required value to input and textarea form
controls.

The multi-select combobox needs additional work (in a separate PR) so
that it can handle the required prop correctly for form submit.

<img width="544" alt="Screenshot 2025-04-24 at 00 02 10"
src="https://github.com/user-attachments/assets/5c6758d3-41a4-444d-b7e9-e1fe011703d3"
/>
2025-04-24 17:14:21 -04:00
M Atif Ali fc921a584f chore(docs): update release calendar dates and next release calculation (#17560) 2025-04-24 19:42:33 +05:00
Yevhenii Shcherbina 118f12ac3a feat: implement claiming of prebuilt workspaces (#17458)
Signed-off-by: Danny Kopping <dannykopping@gmail.com>
Co-authored-by: Danny Kopping <dannykopping@gmail.com>
Co-authored-by: Danny Kopping <danny@coder.com>
Co-authored-by: Edward Angert <EdwardAngert@users.noreply.github.com>
Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
Co-authored-by: Jaayden Halko <jaayden.halko@gmail.com>
Co-authored-by: Ethan <39577870+ethanndickson@users.noreply.github.com>
Co-authored-by: M Atif Ali <atif@coder.com>
Co-authored-by: Aericio <16523741+Aericio@users.noreply.github.com>
Co-authored-by: M Atif Ali <me@matifali.dev>
Co-authored-by: Michael Suchacz <203725896+ibetitsmike@users.noreply.github.com>
2025-04-24 09:39:38 -04:00
dependabot[bot] 25dacd39e7 chore: bump github.com/prometheus-community/pro-bing from 0.6.0 to 0.7.0 (#17378)
Bumps
[github.com/prometheus-community/pro-bing](https://github.com/prometheus-community/pro-bing)
from 0.6.0 to 0.7.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/prometheus-community/pro-bing/releases">github.com/prometheus-community/pro-bing's
releases</a>.</em></p>
<blockquote>
<h2>v0.7.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Synchronize common files from prometheus/prometheus by <a
href="https://github.com/prombot"><code>@​prombot</code></a> in <a
href="https://redirect.github.com/prometheus-community/pro-bing/pull/146">prometheus-community/pro-bing#146</a></li>
<li>Bump golang.org/x/net from 0.34.0 to 0.35.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/prometheus-community/pro-bing/pull/147">prometheus-community/pro-bing#147</a></li>
<li>Bump golang.org/x/sync from 0.10.0 to 0.11.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/prometheus-community/pro-bing/pull/148">prometheus-community/pro-bing#148</a></li>
<li>Update Go by <a
href="https://github.com/SuperQ"><code>@​SuperQ</code></a> in <a
href="https://redirect.github.com/prometheus-community/pro-bing/pull/152">prometheus-community/pro-bing#152</a></li>
<li>Bump golang.org/x/net from 0.35.0 to 0.38.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/prometheus-community/pro-bing/pull/150">prometheus-community/pro-bing#150</a></li>
<li>Bump golang.org/x/sync from 0.11.0 to 0.13.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/prometheus-community/pro-bing/pull/153">prometheus-community/pro-bing#153</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/prometheus-community/pro-bing/compare/v0.6.1...v0.7.0">https://github.com/prometheus-community/pro-bing/compare/v0.6.1...v0.7.0</a></p>
<h2>v0.6.1</h2>
<h2>What's Changed</h2>
<ul>
<li>fix/stats race by <a
href="https://github.com/perhallgren"><code>@​perhallgren</code></a> in
<a
href="https://redirect.github.com/prometheus-community/pro-bing/pull/145">prometheus-community/pro-bing#145</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/perhallgren"><code>@​perhallgren</code></a>
made their first contribution in <a
href="https://redirect.github.com/prometheus-community/pro-bing/pull/145">prometheus-community/pro-bing#145</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/prometheus-community/pro-bing/compare/v0.6.0...v0.6.1">https://github.com/prometheus-community/pro-bing/compare/v0.6.0...v0.6.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/prometheus-community/pro-bing/commit/85df87ee97d5a448f5bc5c2ccc6f43d54e68b0cd"><code>85df87e</code></a>
Merge pull request <a
href="https://redirect.github.com/prometheus-community/pro-bing/issues/153">#153</a>
from prometheus-community/dependabot/go_modules/golan...</li>
<li><a
href="https://github.com/prometheus-community/pro-bing/commit/4df7cf6d8a2e926bd84f0c23ef3c70d207e08648"><code>4df7cf6</code></a>
Bump golang.org/x/sync from 0.11.0 to 0.13.0</li>
<li><a
href="https://github.com/prometheus-community/pro-bing/commit/0748554038ca051940674fa98cf8ae470b0bfb2d"><code>0748554</code></a>
Merge pull request <a
href="https://redirect.github.com/prometheus-community/pro-bing/issues/150">#150</a>
from prometheus-community/dependabot/go_modules/golan...</li>
<li><a
href="https://github.com/prometheus-community/pro-bing/commit/0a802c09eea30c0d7232e5b23cd02ac0a0063bb0"><code>0a802c0</code></a>
Bump golang.org/x/net from 0.35.0 to 0.38.0</li>
<li><a
href="https://github.com/prometheus-community/pro-bing/commit/a184532955ba6a987d1a2b406ab2708c41e9b9d0"><code>a184532</code></a>
Merge pull request <a
href="https://redirect.github.com/prometheus-community/pro-bing/issues/152">#152</a>
from prometheus-community/superq/bump_go</li>
<li><a
href="https://github.com/prometheus-community/pro-bing/commit/ed8beb88ca19f00c9d5dfc8f93f99733366c89aa"><code>ed8beb8</code></a>
Update Go</li>
<li><a
href="https://github.com/prometheus-community/pro-bing/commit/c9b2c133ccf6c6212f29ca33c6258f7400ea76f6"><code>c9b2c13</code></a>
Merge pull request <a
href="https://redirect.github.com/prometheus-community/pro-bing/issues/148">#148</a>
from prometheus-community/dependabot/go_modules/golan...</li>
<li><a
href="https://github.com/prometheus-community/pro-bing/commit/b3180894e532d3a854cb025d889e50e4cac5f9fe"><code>b318089</code></a>
Bump golang.org/x/sync from 0.10.0 to 0.11.0</li>
<li><a
href="https://github.com/prometheus-community/pro-bing/commit/ba53383b80d9cd150307779f2d7e09ef3985f689"><code>ba53383</code></a>
Merge pull request <a
href="https://redirect.github.com/prometheus-community/pro-bing/issues/147">#147</a>
from prometheus-community/dependabot/go_modules/golan...</li>
<li><a
href="https://github.com/prometheus-community/pro-bing/commit/a683c097aea7c567a2d4e4c91b001822fbe48850"><code>a683c09</code></a>
Bump golang.org/x/net from 0.34.0 to 0.35.0</li>
<li>Additional commits viewable in <a
href="https://github.com/prometheus-community/pro-bing/compare/v0.6.0...v0.7.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/prometheus-community/pro-bing&package-manager=go_modules&previous-version=0.6.0&new-version=0.7.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>
2025-04-24 09:45:15 +00:00
M Atif Ali c45343aa99 chore(dogfood): add windsurf module (#17558) 2025-04-24 14:14:50 +05:00
M Atif Ali 166d88e279 docs: add automatic release calendar updates in docs (#17531) 2025-04-24 13:52:34 +05:00
M Atif Ali ad38a3bddc fix(examples/templates/kubernetes-devcontainer): update coder provider (#17555) 2025-04-24 12:56:07 +05:00
Michael Suchacz 9922240fd4 feat: enable masking password inputs instead of blocking echo (#17469)
Closes #17059
2025-04-24 09:54:00 +02:00
Aericio 614a7d0d58 fix(examples/templates/docker-devcontainer): update folder path and provider version constraint (#17553)
Co-authored-by: M Atif Ali <me@matifali.dev>
2025-04-24 07:21:35 +00:00
M Atif Ali 4759e17acd chore(dogfood): allow provider minor version updates (#17554) 2025-04-24 07:21:31 +00:00
Ethan 4f70b596dc ci: move go install tools to separate action (#17552)
I think using an older version of mockgen on the schmoder CI broke the
workflow, so I'm gonna sync it via this action, like we do with the
other `make build` dependencies.
2025-04-24 03:02:57 +00:00
Jaayden Halko ef6e6e41ff fix: add websocket close handling (#17548)
resolves #17508 

Display an error in the UI that the websocket closed if the user is
still interacting with the dynamic parameters form

<img width="795" alt="Screenshot 2025-04-23 at 17 57 25"
src="https://github.com/user-attachments/assets/15362ddb-fe01-462e-8537-a48302c5c621"
/>
2025-04-23 19:19:25 -04:00
Edward Angert 3567d455a7 docs: fix ssh coder example in testing-templates doc (#17550)
from @NickSquangler and @angrycub on Slack

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-04-23 16:13:13 -04:00
Edward Angert e6facaa41b docs: clarify that parameter autofill requires experimental flag (#17546)
Update documentation to indicate that parameter autofill requires
`--experiments=auto-fill-parameters` enabled

Fixes #14673

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-04-23 17:13:08 +00:00
Jaayden Halko 03eeb01247 chore: use new table design for markdown rendering (#17530)
resolves #17502 

<img width="756" alt="Screenshot 2025-04-23 at 11 26 19"
src="https://github.com/user-attachments/assets/667c595c-21de-496c-8f25-3dca9f840c7c"
/>
2025-04-23 13:02:14 -04:00
Jaayden Halko 3306f0f2a2 fix: fix broken img layout (#17525)
resolves #17507 

Before

<img width="629" alt="Screenshot 2025-04-23 at 11 01 55"
src="https://github.com/user-attachments/assets/79e2945b-0301-4cf5-9b25-f112bac9c2ff"
/>

After

<img width="629" alt="Screenshot 2025-04-23 at 11 02 45"
src="https://github.com/user-attachments/assets/c74d3c03-ebee-42e6-bd16-b4610139cb86"
/>
2025-04-23 13:01:36 -04:00
Jaayden Halko c1162eb9a8 fix: only highlight checkbox on hover when checkbox is enabled (#17526)
resolves #17503
2025-04-23 13:01:02 -04:00
ケイラ 36a72a2b25 chore: loosen static validation when using dynamic parameters (#17516)
Co-authored-by: Steven Masley <stevenmasley@gmail.com>
2025-04-23 10:15:49 -06:00
ケイラ 3b4343ddf3 fix: fix workspace creation on template page (#17518) 2025-04-23 09:44:36 -06:00
Edward Angert 5a7d531aef docs: edit the ai agents doc (#17521)
general edit and adding some highlights as I work through the section

[preview](https://coder.com/docs/@ai-coder-edit/ai-coder/agents)

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-04-23 11:14:57 -04:00
Edward Angert 9dea568027 docs: document GIT_ASKPASS for OAuth connections (#17457)
closes #17375 

from @ericpaulsen 

> a prospect recently inquired about how our OAuth integration with
GitLab works, and I realized we do not have any information on
`GIT_ASKPASS` is used to retreive the OAuth token for users when they
run `git` operations.

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-04-23 11:14:15 -04:00
Bruno Quaresma 88589ef32f fix: fix build timeline scale for longer builds (#17514)
Fix https://github.com/coder/coder/issues/15374
2025-04-23 11:34:08 -03:00
Steven Masley 71dbd0c888 fix: nil ptr deref when removing OIDC from deployment and accessing old users (#17501)
If OIDC is removed from a deployment, trying to create a workspace for a previous user
on OIDC would panic.
2025-04-23 08:45:26 -05:00
Mathias Fredriksson c106aee0d6 fix(scripts/release): handle cherry-pick bot titles in check commit metadata (#17535) 2025-04-23 12:20:00 +00:00
Danny Kopping b3cc8e56d2 chore: set timezone on all golden file make targets (#17533)
We replace timestamps in our golden files to keep the values constant.

However, if a non-UTC timezone is used then the timestamp will still be
replaced but the whitespace will be messed up (since it was aligned to
the original value).


![image](https://github.com/user-attachments/assets/b7ebf615-5b41-41bb-8939-682a45a61952)

Therefore we must force a timezone when generating golden files.

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
2025-04-23 11:26:46 +00:00
Mathias Fredriksson 35553a5815 chore(Makefile): fix incorrect redirection of output (#17532) 2025-04-23 11:01:28 +00:00
Mathias Fredriksson 1ba02f4297 chore(dogfood): increase container graceful stop time (#17528)
Fixes workspace stop when you've run `devcontainer up` in coder/coder.

The previous attempt in #17110 gave insufficient time.
2025-04-23 13:40:51 +03:00
Spike Curtis 0ef7d0b3e5 docs: correct low MTU troubleshooting language (#17468)
Fixes docs troubleshooting language around low MTU. In fact, we see
conenctions hanging rather than just showing low performance, since
packets are dropped rather than fragmented.

---------

Co-authored-by: Edward Angert <EdwardAngert@users.noreply.github.com>
Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-04-23 10:00:33 +04:00
Dean Sheather b15d060410 fix(agent): return listed drives on failure on windows (#17505)
The behavior of the partitions listing function from gopsutil is that it
will return all partitions that didn't fail to be read, but will return
something similar to a multierror.

Errors are now ignored unless there are no drives returned.
2025-04-23 03:31:43 +10:00
Steven Masley ca38729840 chore: revert dynamic params as a safe experiment (#17510) 2025-04-22 16:21:15 +00:00
Steven Masley 5d97d82422 chore: update coder/preview dep (#17512)
Using latest release of coder/preview
2025-04-22 16:21:01 +00:00
Bruno Quaresma 83b2c9bf41 fix: don't show promote button for members (#17511)
Fix https://github.com/coder/coder/issues/15850
2025-04-22 12:50:46 -03:00
Eric Paulsen cbc699b6df chore: set default requests/limits in helm chart (#16844)
closes #16825 - my first commit from across the pond 😄

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-04-22 11:05:34 +01:00
Dean Sheather d566008087 fix: update tailscale to improve block endpoints functionality (#17496)
Direct endpoints from the peer will no longer be processed.
2025-04-22 09:32:21 +00:00
Jaayden Halko afb175d9ee chore: make dynamic params a valid experiment (#17492) 2025-04-22 05:09:16 -04:00
Cian Johnston 444bd6a212 fix(cli/server.go): switch to alternate maven repo for postgres binaries (#17451)
Not really guaranteed, but worth a shot.

---------

Co-authored-by: Danny Kopping <danny@coder.com>
2025-04-22 09:02:35 +01:00
Jaayden Halko 56ee5d8f1b fix: update dynamic params styles (#17489)
1. increase form width and adjust form field width #17471 
2. Move slider value display as its currently broken for long parameter
titles and descriptions
3. increase the height of the slider
4. automatically increase the height of the textarea as the user types
#17472
2025-04-21 17:50:57 -04:00
dependabot[bot] 823d3ea64e chore: bump google.golang.org/grpc from 1.71.0 to 1.72.0 (#17481)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from
1.71.0 to 1.72.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/grpc/grpc-go/releases">google.golang.org/grpc's
releases</a>.</em></p>
<blockquote>
<h2>Release 1.72.0</h2>
<h1>Dependencies</h1>
<ul>
<li>Minimum supported Go version is now 1.23 (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8108">#8108</a>)</li>
</ul>
<h1>API Changes</h1>
<ul>
<li>resolver: add experimental <code>AddressMapV2</code> with generics
to ultimately replace <code>AddressMap</code>. Deprecate
<code>AddressMap</code> for deletion (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8187">#8187</a>)</li>
<li>resolver: convert EndpointMap in place to use generics (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8189">#8189</a>)</li>
</ul>
<h1>New Features</h1>
<ul>
<li>xds: add <code>grpc.xds_client.server_failure</code> counter metric
on xDS client to record connectivity errors (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8203">#8203</a>)</li>
<li>balancer/rls: allow <code>maxAge</code> to exceed 5 minutes if
<code>staleAge</code> is set in the LB policy configuration (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8137">#8137</a>)</li>
<li>ringhash: implement <a
href="https://github.com/grpc/proposal/blob/master/A76-ring-hash-improvements.md">gRFC
A76</a> improvements. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8159">#8159</a>)</li>
</ul>
<h1>Bug Fixes</h1>
<ul>
<li>xds: fix support for circuit breakers and load reporting in
LOGICAL_DNS clusters (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8169">#8169</a>,
<a
href="https://redirect.github.com/grpc/grpc-go/issues/8170">#8170</a>)</li>
<li>cds: improve RPC error messages when resources are not found (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8122">#8122</a>)</li>
<li>priority: fix race that could leak balancers and goroutines during
shutdown (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8095">#8095</a>)</li>
<li>stats/opentelemetry: fix trace attributes message sequence numbers
to start from 0 (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8237">#8237</a>)</li>
<li>balancer/pickfirstleaf: fix panic if deprecated Address.Metadata
field is set to a non-comparable value by ignoring the field (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8227">#8227</a>)</li>
</ul>
<h1>Behavior Changes</h1>
<ul>
<li>transport: make servers send an HTTP/2 RST_STREAM frame to cancel a
stream when the deadline expires (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8071">#8071</a>)</li>
</ul>
<h1>Documentation</h1>
<ul>
<li>stats: clarify the expected sequence of events on a stats handler
(<a
href="https://redirect.github.com/grpc/grpc-go/issues/7885">#7885</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/RyanBlaney"><code>@​RyanBlaney</code></a></li>
</ul>
</li>
</ul>
<h2>Release 1.71.1</h2>
<h1>Bug Fixes</h1>
<ul>
<li>grpc: fix a bug causing an extra Read from the compressor if a
compressed message is the same size as the limit. This could result in a
panic with the built-in gzip compressor (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8178">#8178</a>)</li>
<li>xds: restore the behavior of reading the bootstrap config before
creating the first xDS client instead of at package init time (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8164">#8164</a>)</li>
<li>stats/opentelemetry: use <code>TextMapPropagator</code> and
<code>TracerProvider</code> from <code>TraceOptions</code> instead of
OpenTelemetry globals (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8166">#8166</a>)</li>
<li>client: fix races when an http proxy is configured that could lead
to deadlocks or panics (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8195">#8195</a>)</li>
<li>client: fix bug causing RPC failures with message &quot;no children
to pick from&quot; when using a custom resolver that calls the
deprecated <code>NewAddress</code> API (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8149">#8149</a>)</li>
<li>wrr: fix slow processing of address updates that could result in
problems including RPC failures for servers with a large number of
backends (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8179">#8179</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/grpc/grpc-go/commit/a43eba6fed49b81b84cfdba85c356aca22086d7e"><code>a43eba6</code></a>
Change version to 1.72.0 (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8218">#8218</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/48f48c14f7a670d4405680d4ae121b557ae89f55"><code>48f48c1</code></a>
balancer/pickfirstleaf: Avoid reading Address.Metadata (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8227">#8227</a>)
(<a
href="https://redirect.github.com/grpc/grpc-go/issues/8259">#8259</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/fd6f5852919a08d9a5aaa421c2910405da6a5ed0"><code>fd6f585</code></a>
Cherry-pick <a
href="https://redirect.github.com/grpc/grpc-go/issues/8159">#8159</a>
and <a
href="https://redirect.github.com/grpc/grpc-go/issues/8243">#8243</a> to
v1.72.x (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8255">#8255</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/79ca1744edd19936966a4ef45bcef2d240587812"><code>79ca174</code></a>
stats/opentelemetry: fix trace attributes message sequence numbers to
start f...</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/57a2605e35a0608f1cbdb1e471db94d2a28ec42c"><code>57a2605</code></a>
xdsclient: fix TestServerFailureMetrics_BeforeResponseRecv test to wait
for w...</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/5edab9e55414068e74320716117a2659c5d2174e"><code>5edab9e</code></a>
xdsclient: add grpc.xds_client.server_failure counter mertric (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8203">#8203</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/78ba6616c1c3d641cf2cc861a0696fd5beb90aa3"><code>78ba661</code></a>
regenerate protos (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8208">#8208</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/6819ed796fcd0232a46dab21c1b7826aa7f1d561"><code>6819ed7</code></a>
delegatingresolver: Stop calls into delegates once the parent resolver
is clo...</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/a51009d1d7074ee1efcd323578064cbe44ef87e5"><code>a51009d</code></a>
resolver: convert EndpointMap to use generics (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8189">#8189</a>)</li>
<li><a
href="https://github.com/grpc/grpc-go/commit/b0d120384670bde5a2fa830d65e43b250c24d8fd"><code>b0d1203</code></a>
resolver: create AddressMapV2 with generics to replace AddressMap (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8187">#8187</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/grpc/grpc-go/compare/v1.71.0...v1.72.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/grpc&package-manager=go_modules&previous-version=1.71.0&new-version=1.72.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>
2025-04-21 18:00:54 +00:00
dependabot[bot] 36625af3bc chore: bump google.golang.org/api from 0.228.0 to 0.229.0 (#17480)
Bumps
[google.golang.org/api](https://github.com/googleapis/google-api-go-client)
from 0.228.0 to 0.229.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-api-go-client/releases">google.golang.org/api's
releases</a>.</em></p>
<blockquote>
<h2>v0.229.0</h2>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.228.0...v0.229.0">0.229.0</a>
(2025-04-14)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3082">#3082</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/ab1e35bd922013503c83b13ceeca77261b161bbc">ab1e35b</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3084">#3084</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/eab21799a214ec6b03e74ea0c8c1bde79c851faf">eab2179</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3085">#3085</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/9af4079c0c6bab3c5567b42888be725bfc47b3b0">9af4079</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3086">#3086</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/9c927b65141cbfc1019dbc4350836fb363167de9">9c927b6</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3087">#3087</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/3c387cdc0b26846f2c2ae02f9871020fe732c87d">3c387cd</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3089">#3089</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/b64e7929166b212d1721afd68bf9fe8d40dc5775">b64e792</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3090">#3090</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/65fc9d3edb75cb38ceb96a383dcf6d7fee89662e">65fc9d3</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3093">#3093</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/3a51a3a77ef75d10dc75fb4af0e5c791809cb568">3a51a3a</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3094">#3094</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/ca845161fd6688acdf5818fcb06f91d314866e4c">ca84516</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3096">#3096</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/9e992f492d43134b44b0a830e99c8b78dd8fc524">9e992f4</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3097">#3097</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/c09b6a9455c6aab4dbd7422245e4c9b2502c5806">c09b6a9</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3099">#3099</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/66d217562f865a6e93e9cd680c2e65cd815c441a">66d2175</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3101">#3101</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/9ad998bc308b688bb47fd1621d73789bc66ec565">9ad998b</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3102">#3102</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/70d6fb25935cb233a3d8cdc144d04add6f1ed5f9">70d6fb2</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3103">#3103</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/414e575ddac0ec40cbd77dccb2b376f2a16c7675">414e575</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3104">#3104</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/91f658957210bd86c3365cbed6d7753a3cc7ff07">91f6589</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3105">#3105</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/1c5ea6cfdd2437d3d2f790a5ab252b070e68bbbe">1c5ea6c</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3106">#3106</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/fabfddf97037bebce44fbbd9b85473a621649802">fabfddf</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3107">#3107</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/ecbc1a9e09191e81577ac480e32234b9d146d217">ecbc1a9</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md">google.golang.org/api's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.228.0...v0.229.0">0.229.0</a>
(2025-04-14)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3082">#3082</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/ab1e35bd922013503c83b13ceeca77261b161bbc">ab1e35b</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3084">#3084</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/eab21799a214ec6b03e74ea0c8c1bde79c851faf">eab2179</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3085">#3085</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/9af4079c0c6bab3c5567b42888be725bfc47b3b0">9af4079</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3086">#3086</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/9c927b65141cbfc1019dbc4350836fb363167de9">9c927b6</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3087">#3087</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/3c387cdc0b26846f2c2ae02f9871020fe732c87d">3c387cd</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3089">#3089</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/b64e7929166b212d1721afd68bf9fe8d40dc5775">b64e792</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3090">#3090</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/65fc9d3edb75cb38ceb96a383dcf6d7fee89662e">65fc9d3</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3093">#3093</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/3a51a3a77ef75d10dc75fb4af0e5c791809cb568">3a51a3a</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3094">#3094</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/ca845161fd6688acdf5818fcb06f91d314866e4c">ca84516</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3096">#3096</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/9e992f492d43134b44b0a830e99c8b78dd8fc524">9e992f4</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3097">#3097</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/c09b6a9455c6aab4dbd7422245e4c9b2502c5806">c09b6a9</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3099">#3099</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/66d217562f865a6e93e9cd680c2e65cd815c441a">66d2175</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3101">#3101</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/9ad998bc308b688bb47fd1621d73789bc66ec565">9ad998b</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3102">#3102</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/70d6fb25935cb233a3d8cdc144d04add6f1ed5f9">70d6fb2</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3103">#3103</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/414e575ddac0ec40cbd77dccb2b376f2a16c7675">414e575</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3104">#3104</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/91f658957210bd86c3365cbed6d7753a3cc7ff07">91f6589</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3105">#3105</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/1c5ea6cfdd2437d3d2f790a5ab252b070e68bbbe">1c5ea6c</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3106">#3106</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/fabfddf97037bebce44fbbd9b85473a621649802">fabfddf</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3107">#3107</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/ecbc1a9e09191e81577ac480e32234b9d146d217">ecbc1a9</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/8448bf2ae14fbf6a239ceea036ab6b69930db02a"><code>8448bf2</code></a>
chore(main): release 0.229.0 (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3083">#3083</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/8dd21ed8ab64b874d31b1096edf6923b0f9e1912"><code>8dd21ed</code></a>
chore(all): update cloud.google.com/go/auth to v0.16.0 (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3109">#3109</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/ac04e77c5460d05f02165272051ffb006dab01ae"><code>ac04e77</code></a>
chore(all): update all (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3108">#3108</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/ecbc1a9e09191e81577ac480e32234b9d146d217"><code>ecbc1a9</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3107">#3107</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/fabfddf97037bebce44fbbd9b85473a621649802"><code>fabfddf</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3106">#3106</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/1c5ea6cfdd2437d3d2f790a5ab252b070e68bbbe"><code>1c5ea6c</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3105">#3105</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/91f658957210bd86c3365cbed6d7753a3cc7ff07"><code>91f6589</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3104">#3104</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/414e575ddac0ec40cbd77dccb2b376f2a16c7675"><code>414e575</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3103">#3103</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/70d6fb25935cb233a3d8cdc144d04add6f1ed5f9"><code>70d6fb2</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3102">#3102</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/f7272c9d0bb58186d5ddab19f4671ac67c914915"><code>f7272c9</code></a>
chore(all): update all (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3100">#3100</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/googleapis/google-api-go-client/compare/v0.228.0...v0.229.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/api&package-manager=go_modules&previous-version=0.228.0&new-version=0.229.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>
2025-04-21 17:48:34 +00:00
ケイラ f6364a2f6e feat: add opt-out option to new parameters form (#17456)
Closes https://github.com/coder/preview/issues/62
2025-04-21 10:44:44 -06:00
dependabot[bot] c0ca47d015 chore: bump github.com/charmbracelet/glamour from 0.9.1 to 0.10.0 (#17476)
Bumps
[github.com/charmbracelet/glamour](https://github.com/charmbracelet/glamour)
from 0.9.1 to 0.10.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/charmbracelet/glamour/releases">github.com/charmbracelet/glamour's
releases</a>.</em></p>
<blockquote>
<h2>v0.10.0</h2>
<h1>Actually readable tables</h1>
<p>Big tables that included links were always hard to read. Links can be
very long, and tables often have limited space to render them. This
means that links often took the space of many lines and weren't properly
clickable because they were being truncated in practice.</p>
<p>Starting on this release, Glamour will render links and images at the
footer of the table, with a reference number so you can easily find the
link you're looking for. If you want the old behavior, it is still
supported via the new <code>WithInlineTableLinks</code> option.</p>
<h2>The New Way</h2>
<p><img
src="https://github.com/user-attachments/assets/9ea84076-c318-4835-b5be-a583745a4953"
alt="table_with_footer_links_and_images" /></p>
<h2>The Old Way</h2>
<p>Wanna render tables with inline links? You still can:</p>
<pre lang="go"><code>r, err :=
glamour.NewTermRenderer(glamour.WithInlineTableLinks(true))
if err != nil { /*...*/ }
<p>out, err := r.RenderBytes(in)<br />
if err != nil { /<em>...</em>/ }</p>
<p>fmt.Fprintf(os.Stdout, &quot;%s\n&quot;, out)<br />
</code></pre></p>
<p><img
src="https://github.com/user-attachments/assets/de3d3d33-9592-44ea-99d2-f3d8e9e94f9c"
alt="table_with_inline_links_and_images" /></p>
<h1>Prettier GitHub links</h1>
<p>We also introduced a change so that GitHub links inside tables that
reference issues, discussions or PRs will be shown in its shortened
form, similar to how GitHub itself present the links on issue
descriptions: <code>owner/repo#123</code>.</p>
<p><img
src="https://github.com/user-attachments/assets/8adb2498-a361-4749-8e98-02f17d4f9062"
alt="table_with_footer_auto_links_short" /></p>
<h1>Extra</h1>
<p>Also, we introduced <code>WithTableWrap</code>, so you can disable
table text wrapping if really want:</p>
<pre lang="go"><code>r, err :=
glamour.NewTermRenderer(glamour.WithTableWrap(false))
if err != nil { ... }
<p>out, err := r.RenderBytes(in)<br />
if err != nil { ... }</p>
<p>fmt.Fprintf(os.Stdout, &quot;%s\n&quot;, out)<br />
</code></pre></p>
<h2>Changelog</h2>
<h3>New Features</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/charmbracelet/glamour/commit/05ee9b5f4dcf3e4426c4ba41e1f9d7ea4f34d603"><code>05ee9b5</code></a>
v0.10.0</li>
<li><a
href="https://github.com/charmbracelet/glamour/commit/c9af0458d403e584402ff683e0e8403a194d73d3"><code>c9af045</code></a>
feat(tables): format github links inside tables in a more readable
manner</li>
<li><a
href="https://github.com/charmbracelet/glamour/commit/f2eb484a992f6a31bad968205b6d63719b8c7fa2"><code>f2eb484</code></a>
feat: add autolink package with patterns for more readable github
urls</li>
<li><a
href="https://github.com/charmbracelet/glamour/commit/9d873734c11cf9d1e29853643a751624042df3b0"><code>9d87373</code></a>
feat(table): pad position on table link list</li>
<li><a
href="https://github.com/charmbracelet/glamour/commit/a11e9a0c3a66a55d411a0aa4dcd6685d4ba9d823"><code>a11e9a0</code></a>
feat(table): show position of link also inside the table</li>
<li><a
href="https://github.com/charmbracelet/glamour/commit/42f47a22f34bbbf73421210e7aff4f6438ffd052"><code>42f47a2</code></a>
feat(table): prefix all links with the position in the footer</li>
<li><a
href="https://github.com/charmbracelet/glamour/commit/61cfc45c6bcd582a4d0ca810690d668f276ede13"><code>61cfc45</code></a>
feat(table): add ability to render links at the bottom</li>
<li><a
href="https://github.com/charmbracelet/glamour/commit/5437e4a1a7dfc095a4afe063feaab079ab5a9629"><code>5437e4a</code></a>
fix: ensure that prop is always cleared</li>
<li><a
href="https://github.com/charmbracelet/glamour/commit/60534f9196f23ed0849ba1ac05df41325d8968b5"><code>60534f9</code></a>
chore(deps): bump golang.org/x/term from 0.30.0 to 0.31.0 (<a
href="https://redirect.github.com/charmbracelet/glamour/issues/418">#418</a>)</li>
<li><a
href="https://github.com/charmbracelet/glamour/commit/606f55a8d8fe2adc7251ad2e269fe9f4a32a0172"><code>606f55a</code></a>
chore(deps): bump golang.org/x/text from 0.23.0 to 0.24.0 (<a
href="https://redirect.github.com/charmbracelet/glamour/issues/419">#419</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/charmbracelet/glamour/compare/v0.9.1...v0.10.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/charmbracelet/glamour&package-manager=go_modules&previous-version=0.9.1&new-version=0.10.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>
2025-04-21 16:06:47 +00:00
Bruno Quaresma 6c1f0d42dd fix: fix empty workspaces result (#17484)
After refactoring the workspaces table to use the new table
components://github.com/coder/coder/pull/17404), the empty styles got
broken. You can see the related PR
[here](https://github.com/coder/coder/pull/17404).

Before:

![image](https://github.com/user-attachments/assets/9592d65c-9a63-4d22-8a01-8a1ce174422e)

After:
<img width="1210" alt="Screenshot 2025-04-21 at 10 34 19"
src="https://github.com/user-attachments/assets/6545d078-80f1-4251-8816-04eb0f41e848"
/>
2025-04-21 10:45:26 -03:00
dependabot[bot] a1925bccd7 chore: bump github.com/coder/terraform-provider-coder/v2 from 2.4.0-pre0 to 2.4.0-pre1 (#17483)
Bumps
[github.com/coder/terraform-provider-coder/v2](https://github.com/coder/terraform-provider-coder)
from 2.4.0-pre0 to 2.4.0-pre1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/coder/terraform-provider-coder/releases">github.com/coder/terraform-provider-coder/v2's
releases</a>.</em></p>
<blockquote>
<h2>v2.4.0-pre1</h2>
<h2>What's Changed</h2>
<ul>
<li>feat: add the option to debug the coder terraform provider by <a
href="https://github.com/SasSwart"><code>@​SasSwart</code></a> in <a
href="https://redirect.github.com/coder/terraform-provider-coder/pull/378">coder/terraform-provider-coder#378</a></li>
<li>chore: enhance parameter validation error messages by <a
href="https://github.com/Emyrk"><code>@​Emyrk</code></a> in <a
href="https://redirect.github.com/coder/terraform-provider-coder/pull/379">coder/terraform-provider-coder#379</a></li>
<li>chore: update to go 1.24.1 by <a
href="https://github.com/johnstcn"><code>@​johnstcn</code></a> in <a
href="https://redirect.github.com/coder/terraform-provider-coder/pull/382">coder/terraform-provider-coder#382</a></li>
<li>build(deps): Bump golang.org/x/crypto from 0.33.0 to 0.35.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/coder/terraform-provider-coder/pull/380">coder/terraform-provider-coder#380</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/coder/terraform-provider-coder/compare/v2.4.0-pre0...v2.4.0-pre1">https://github.com/coder/terraform-provider-coder/compare/v2.4.0-pre0...v2.4.0-pre1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/coder/terraform-provider-coder/commit/e51ae3aff8c4c0c3c0559841fabb59eafea1f86a"><code>e51ae3a</code></a>
build(deps): Bump golang.org/x/crypto from 0.33.0 to 0.35.0 (<a
href="https://redirect.github.com/coder/terraform-provider-coder/issues/380">#380</a>)</li>
<li><a
href="https://github.com/coder/terraform-provider-coder/commit/e40c9b9278ad0a7574bbeb067e2119f850b0df5c"><code>e40c9b9</code></a>
chore: update to go 1.24.2 (<a
href="https://redirect.github.com/coder/terraform-provider-coder/issues/382">#382</a>)</li>
<li><a
href="https://github.com/coder/terraform-provider-coder/commit/f66adaca2adfb6b19108200483855c4023fcc982"><code>f66adac</code></a>
chore: enhance parameter validation error messages (<a
href="https://redirect.github.com/coder/terraform-provider-coder/issues/379">#379</a>)</li>
<li><a
href="https://github.com/coder/terraform-provider-coder/commit/53a68cd7496371d6f325f9c7bd8c6808069c4664"><code>53a68cd</code></a>
feat: add the option to debug the coder terraform provider (<a
href="https://redirect.github.com/coder/terraform-provider-coder/issues/378">#378</a>)</li>
<li>See full diff in <a
href="https://github.com/coder/terraform-provider-coder/compare/v2.4.0-pre0...v2.4.0-pre1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/coder/terraform-provider-coder/v2&package-manager=go_modules&previous-version=2.4.0-pre0&new-version=2.4.0-pre1)](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>
2025-04-21 12:59:04 +00:00
dependabot[bot] 54b2b7a689 chore: bump github.com/mark3labs/mcp-go from 0.20.1 to 0.22.0 (#17482)
Bumps [github.com/mark3labs/mcp-go](https://github.com/mark3labs/mcp-go)
from 0.20.1 to 0.22.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mark3labs/mcp-go/releases">github.com/mark3labs/mcp-go's
releases</a>.</em></p>
<blockquote>
<h2>Release v0.22.0</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: add mutex to SSEServer to avoid data race between Start and
Shutdown; fix test error on Windows (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/166">#166</a>
<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/172">#172</a>)
by <a href="https://github.com/Wood-Q"><code>@​Wood-Q</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/170">mark3labs/mcp-go#170</a></li>
<li>feat(server): convert ping messages to be spec compliant by <a
href="https://github.com/robert-jackson-glean"><code>@​robert-jackson-glean</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/169">mark3labs/mcp-go#169</a></li>
<li>feat: Implement Streamable-HTTP Client Basic by <a
href="https://github.com/leavez"><code>@​leavez</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/168">mark3labs/mcp-go#168</a></li>
<li>feat:Added the parameter parsing mode to parse any to the specified
type by <a href="https://github.com/hl540"><code>@​hl540</code></a> in
<a
href="https://redirect.github.com/mark3labs/mcp-go/pull/148">mark3labs/mcp-go#148</a></li>
<li>Add RemoveResource method to MCPServer by <a
href="https://github.com/isaacphi"><code>@​isaacphi</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/141">mark3labs/mcp-go#141</a></li>
<li>feat: add message to ProgressNotification by <a
href="https://github.com/xhdd123321"><code>@​xhdd123321</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/119">mark3labs/mcp-go#119</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Wood-Q"><code>@​Wood-Q</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/170">mark3labs/mcp-go#170</a></li>
<li><a
href="https://github.com/robert-jackson-glean"><code>@​robert-jackson-glean</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/169">mark3labs/mcp-go#169</a></li>
<li><a href="https://github.com/hl540"><code>@​hl540</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/148">mark3labs/mcp-go#148</a></li>
<li><a href="https://github.com/isaacphi"><code>@​isaacphi</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/141">mark3labs/mcp-go#141</a></li>
<li><a
href="https://github.com/xhdd123321"><code>@​xhdd123321</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/119">mark3labs/mcp-go#119</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.21.1...v0.22.0">https://github.com/mark3labs/mcp-go/compare/v0.21.1...v0.22.0</a></p>
<h2>Release v0.21.1</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: tool annotation by <a
href="https://github.com/dugenkui03"><code>@​dugenkui03</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/165">mark3labs/mcp-go#165</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.21.0...v0.21.1">https://github.com/mark3labs/mcp-go/compare/v0.21.0...v0.21.1</a></p>
<h2>Release v0.21.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Add DefaultArray by <a
href="https://github.com/tiborvass"><code>@​tiborvass</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/67">mark3labs/mcp-go#67</a></li>
<li>Unified Client Transport Layer for Streamable HTTP Support by <a
href="https://github.com/leavez"><code>@​leavez</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/114">mark3labs/mcp-go#114</a></li>
<li>fix(tools): add <code>omitempty</code> to properties by <a
href="https://github.com/jkoelker"><code>@​jkoelker</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/116">mark3labs/mcp-go#116</a></li>
<li>new feat: tool annotation by <a
href="https://github.com/dugenkui03"><code>@​dugenkui03</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/158">mark3labs/mcp-go#158</a></li>
<li>introduce NewToolResultErrorWithErr and update docs by <a
href="https://github.com/deviantony"><code>@​deviantony</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/140">mark3labs/mcp-go#140</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/tiborvass"><code>@​tiborvass</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/67">mark3labs/mcp-go#67</a></li>
<li><a href="https://github.com/leavez"><code>@​leavez</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/114">mark3labs/mcp-go#114</a></li>
<li><a
href="https://github.com/dugenkui03"><code>@​dugenkui03</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/158">mark3labs/mcp-go#158</a></li>
<li><a
href="https://github.com/deviantony"><code>@​deviantony</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/140">mark3labs/mcp-go#140</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.20.1...v0.21.0">https://github.com/mark3labs/mcp-go/compare/v0.20.1...v0.21.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/013c0472999e4cf5092a5c59966e081c0f8a9ea3"><code>013c047</code></a>
Use correct mutex</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/5378d0fc7d24957b72eb11d16eede5114c52c99e"><code>5378d0f</code></a>
feat: add message to ProgressNotification (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/119">#119</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/79a0ac0746186d1984f52a28ee2f7fac95ecbf53"><code>79a0ac0</code></a>
Add RemoveResource method to MCPServer (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/141">#141</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/0448984faa43f51a5c2da24b6ca7c6de392d025c"><code>0448984</code></a>
feat:Added the parameter parsing mode to parse any to the specified type
(<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/148">#148</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/dd3210c24230aa2b26c7cfb4f85fdce3197698f8"><code>dd3210c</code></a>
feat: Implement Streamable-HTTP Client Basic (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/168">#168</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/8c0f2be0e36beeac97644ea440f583cbbfe6772d"><code>8c0f2be</code></a>
feat(server): convert ping messages to be spec compliant (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/169">#169</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/d3c77dfa96811eb9de24087b4fedcbeba7782ac3"><code>d3c77df</code></a>
fix: add mutex to SSEServer to avoid data race between Start and
Shutdown; fi...</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/71b910bee8fee098e3412177dac8548453eee5c0"><code>71b910b</code></a>
fix: tool annotation (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/165">#165</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/37ac814a6010484d409bef15f6f4b015f486bdaa"><code>37ac814</code></a>
introduce NewToolResultErrorWithErr and update docs (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/140">#140</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/3fa49a8e7593122bc9a361214846a6e1e8f69116"><code>3fa49a8</code></a>
new feature: add tool annnotation (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/158">#158</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/mark3labs/mcp-go/compare/v0.20.1...v0.22.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/mark3labs/mcp-go&package-manager=go_modules&previous-version=0.20.1&new-version=0.22.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>
2025-04-21 12:41:07 +00:00
dependabot[bot] b62335ea39 chore: bump github.com/moby/moby from 28.0.0+incompatible to 28.1.1+incompatible (#17477)
Bumps [github.com/moby/moby](https://github.com/moby/moby) from
28.0.0+incompatible to 28.1.1+incompatible.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/moby/moby/releases">github.com/moby/moby's
releases</a>.</em></p>
<blockquote>
<h2>v28.1.1</h2>
<h2>28.1.1</h2>
<p>For a full list of pull requests and changes in this release, refer
to the relevant GitHub milestones:</p>
<ul>
<li><a
href="https://github.com/docker/cli/issues?q=is%3Aclosed+milestone%3A28.1.1">docker/cli,
28.1.1 milestone</a></li>
<li><a
href="https://github.com/moby/moby/issues?q=is%3Aclosed+milestone%3A28.1.1">moby/moby,
28.1.1 milestone</a></li>
</ul>
<h3>Bug fixes and enhancements</h3>
<ul>
<li>Fix <code>dockerd-rootless-setuptool.sh</code> incorrectly reporting
missing <code>iptables</code>. <a
href="https://redirect.github.com/moby/moby/pull/49833">moby/moby#49833</a></li>
<li>containerd image store: Fix a potential daemon crash when using
<code>docker load</code> with archives containing zero-size tar headers.
<a
href="https://redirect.github.com/moby/moby/pull/49837">moby/moby#49837</a></li>
</ul>
<h3>Packaging updates</h3>
<ul>
<li>Update Buildx to <a
href="https://github.com/docker/buildx/releases/tag/v0.23.0">v0.23.0</a>.
<a
href="https://redirect.github.com/docker/docker-ce-packaging/pull/1185">docker/docker-ce-packaging#1185</a></li>
<li>Update Compose to <a
href="https://github.com/docker/compose/releases/tag/v2.35.1">v2.35.1</a>.
<a
href="https://redirect.github.com/docker/docker-ce-packaging/pull/1188">docker/docker-ce-packaging#1188</a></li>
</ul>
<h3>Networking</h3>
<ul>
<li>Add a warning to a container's <code>/etc/resolv.conf</code> when no
upstream DNS servers were found. <a
href="https://redirect.github.com/moby/moby/pull/49827">moby/moby#49827</a></li>
</ul>
<h2>v28.1.0</h2>
<h2>28.1.0</h2>
<p>For a full list of pull requests and changes in this release, refer
to the relevant GitHub milestones:</p>
<ul>
<li><a
href="https://github.com/docker/cli/issues?q=is%3Aclosed+milestone%3A28.1.0">docker/cli,
28.1.0 milestone</a></li>
<li><a
href="https://github.com/moby/moby/issues?q=is%3Aclosed+milestone%3A28.1.0">moby/moby,
28.1.0 milestone</a></li>
<li>Changes to the Engine API, see <a
href="https://github.com/moby/moby/blob/v28.1.0/docs/api/version-history.md">API
version history</a>.</li>
</ul>
<h3>New</h3>
<ul>
<li>Add <code>docker bake</code> sub-command as alias for <code>docker
buildx bake</code>. <a
href="https://redirect.github.com/docker/cli/pull/5947">docker/cli#5947</a></li>
<li>Experimental: add a new <code>--use-api-socket</code> flag on
<code>docker run</code> and <code>docker create</code> to enable access
to Docker socket from inside a container and to share credentials from
the host with the container. <a
href="https://redirect.github.com/docker/cli/pull/5858">docker/cli#5858</a></li>
<li><code>docker image inspect</code> now supports a
<code>--platform</code> flag to inspect a specific platform of a
multi-platform image. <a
href="https://redirect.github.com/docker/cli/pull/5934">docker/cli#5934</a></li>
</ul>
<h3>Bug fixes and enhancements</h3>
<ul>
<li>Add CLI shell-completion for context names. <a
href="https://redirect.github.com/docker/cli/pull/6016">docker/cli#6016</a></li>
<li>Fix <code>docker images --tree</code> not including non-container
images content size in the total image content size. <a
href="https://redirect.github.com/docker/cli/pull/6000">docker/cli#6000</a></li>
<li>Fix <code>docker load</code> not preserving replaced images. <a
href="https://redirect.github.com/moby/moby/pull/49650">moby/moby#49650</a></li>
<li>Fix <code>docker login</code> hints when logging in to a custom
registry. <a
href="https://redirect.github.com/docker/cli/pull/6015">docker/cli#6015</a></li>
<li>Fix <code>docker stats</code> not working properly on machines with
high CPU core count. <a
href="https://redirect.github.com/moby/moby/pull/49734">moby/moby#49734</a></li>
<li>Fix a regression causing <code>docker pull/push</code> to fail when
interacting with a private repository. <a
href="https://redirect.github.com/docker/cli/pull/5964">docker/cli#5964</a></li>
<li>Fix an issue preventing rootless Docker setup on a host with no
<code>ip_tables</code> kernel module. <a
href="https://redirect.github.com/moby/moby/pull/49727">moby/moby#49727</a></li>
<li>Fix an issue that could lead to unwanted iptables rules being
restored and never deleted following a firewalld reload. <a
href="https://redirect.github.com/moby/moby/pull/49728">moby/moby#49728</a></li>
<li>Improve CLI completion of <code>docker service scale</code>. <a
href="https://redirect.github.com/docker/cli/pull/5968">docker/cli#5968</a></li>
<li><code>docker images --tree</code> now hides both untagged and
dangling images by default. <a
href="https://redirect.github.com/docker/cli/pull/5924">docker/cli#5924</a></li>
<li><code>docker system info</code> will provide an exit code if a
connection cannot be established to the Docker daemon. <a
href="https://redirect.github.com/docker/cli/pull/5918">docker/cli#5918</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/moby/moby/commit/01f442b84d6a669c1e335b800d4670997cd5aa93"><code>01f442b</code></a>
Merge pull request <a
href="https://redirect.github.com/moby/moby/issues/49588">#49588</a>
from thaJeztah/bump_go_build_tags</li>
<li><a
href="https://github.com/moby/moby/commit/e03c0f03e7178cb4b9e927ffaeea73f228a7ad45"><code>e03c0f0</code></a>
Merge pull request <a
href="https://redirect.github.com/moby/moby/issues/49834">#49834</a>
from thaJeztah/cleanup_ignore</li>
<li><a
href="https://github.com/moby/moby/commit/8dde918e774b73971544b1e43586870e8e4acfeb"><code>8dde918</code></a>
Merge pull request <a
href="https://redirect.github.com/moby/moby/issues/49837">#49837</a>
from thaJeztah/bump_containerd_2.0.5</li>
<li><a
href="https://github.com/moby/moby/commit/e70ce7a35b94b0915dae5ba356a69d07ded2fd46"><code>e70ce7a</code></a>
Merge pull request <a
href="https://redirect.github.com/moby/moby/issues/49833">#49833</a>
from vvoland/rootless-iptables-check</li>
<li><a
href="https://github.com/moby/moby/commit/fc8361c0784a8a29347633d0b8f2280e57068078"><code>fc8361c</code></a>
vendor: github.com/containerd/containerd v2.0.5</li>
<li><a
href="https://github.com/moby/moby/commit/62f51e43670ffd1aa18672909cfa9e4300a2ab13"><code>62f51e4</code></a>
vendor: golang.org/x/oauth2 v0.29.0</li>
<li><a
href="https://github.com/moby/moby/commit/bbbb0036df25d56766bc5ce869080bdf0265e511"><code>bbbb003</code></a>
cleanup ignore files</li>
<li><a
href="https://github.com/moby/moby/commit/ead379a46457986eadf07273fedec378e87e515f"><code>ead379a</code></a>
contrib/rootless-setuptool: Fix iptables detection</li>
<li><a
href="https://github.com/moby/moby/commit/7c52c4d92e4fe584e2d25209a54c7d07c24baee1"><code>7c52c4d</code></a>
update go:build tags to go1.23 to align with vendor.mod</li>
<li><a
href="https://github.com/moby/moby/commit/6573a13e4adf5d9d3b2e0ab4e44ade244dd3c798"><code>6573a13</code></a>
Merge pull request <a
href="https://redirect.github.com/moby/moby/issues/49827">#49827</a>
from robmry/warn_no_ext_nameservers</li>
<li>Additional commits viewable in <a
href="https://github.com/moby/moby/compare/v28.0.0...v28.1.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/moby/moby&package-manager=go_modules&previous-version=28.0.0+incompatible&new-version=28.1.1+incompatible)](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>
2025-04-21 12:17:43 +00:00
Spike Curtis 345435a04c feat: modify coordinators to send errors and peers to log them (#17467)
Adds support to our coordinator implementations to send Error updates before disconnecting clients.

I was recently debugging a connection issue where the client was getting repeatedly disconnected from the Coordinator, but since we never send any error information it was really hard without server logs.

This PR aims to correct that, by sending a CoordinateResponse with `Error` set in cases where we disconnect a client without them asking us to.

It also logs the error whenever we get one in the client controller.
2025-04-21 11:40:56 +04:00
Jaayden Halko ea017a1de8 feat: add textarea component and placeholders for dynamic parameters component (#17466)
- Hooks up the textarea component
- Adds placeholders for dropdown, input and multi-select combobox

---------

Co-authored-by: brettkolodny <brettkolodny@gmail.com>
2025-04-18 10:51:32 -04:00
Jaayden Halko 41b2165b47 feat: add textarea component (#17465)
This adds the shadcn textarea component along with storybook stories

Figma:
https://www.figma.com/design/WfqIgsTFXN2BscBSSyXWF8/Coder-kit?node-id=1949-13239&t=NSt5S88hAsE4Q9di-1

<img width="612" alt="Screenshot 2025-04-18 at 12 16 57"
src="https://github.com/user-attachments/assets/dcd0281f-5d80-4047-9ba4-e456290ceb61"
/>
2025-04-18 10:43:07 -04:00
Ethan 6e0e29af13 chore: add agent query parameter to VSCodeDevContainerButton (#17464)
This is less work for the VSCode extension to do, and since the
workspace is running, we'll always know what agent to use.
2025-04-18 06:07:16 +00:00
ケイラ 03890aa904 chore: add jj to dogfood (#17434) 2025-04-17 16:08:51 -06:00
ケイラ 5f0ce7f543 fix: update url for parameters websocket endpoint (#17462) 2025-04-17 17:01:44 -05:00
ケイラ 2cc56ab515 chore: fill out workspace owner data for dynamic parameters (#17366) 2025-04-17 14:51:50 -06:00
Steven Masley ea65ddc17d fix: correct user roles being passed into terraform context (#17460)
Roles were being passed into the workspace context incorrectly. Site
wide scopes were being org scoped. Roles outside the org should also not
be sent.
2025-04-17 15:42:23 -05:00
Jaayden Halko 90eacc17de fix: fix issues with dynamic parameters in the state (#17459) 2025-04-17 16:16:08 -04:00
Yevhenii Shcherbina 183146e2c9 fix: add minor fix to reconciliation loop (#17454)
Follow-up PR to https://github.com/coder/coder/pull/17261
I noticed that 1 metrics-related test fails in `dk/prebuilds` after
merging my PR into `dk/prebuilds`.
2025-04-17 13:43:24 -04:00
ケイラ 144c60dd87 chore: upgrade fish to v4 (#17440) 2025-04-17 11:17:09 -06:00
Jaayden Halko 8723fe99f5 feat: add slider to dynamic parameters (#17453)
This adds the slider to the dynamic parameters component and does some
additional styling cleanup for the dynamic parameters form

<img width="630" alt="Screenshot 2025-04-17 at 16 54 05"
src="https://github.com/user-attachments/assets/1640e8df-7483-4275-99ee-682ff6218658"
/>
2025-04-17 12:40:37 -04:00
Bruno Quaresma 5e4050e529 chore: fix additional storybook flakes (#17450)
Fix new storybook flakes catch by
https://www.chromatic.com/test?appId=624de63c6aacee003aa84340&id=680107825818a9747e57236c
2025-04-17 11:08:13 -03:00
Bruno Quaresma c8edadae10 refactor: redesign workspace status on workspaces table (#17425)
Closes https://github.com/coder/coder/issues/17310

**Before:**
<img width="1624" alt="Screenshot 2025-04-16 at 11 49 52"
src="https://github.com/user-attachments/assets/4fb6c8e5-329f-476f-99bb-192c0f9562a2"
/>

**After:**
<img width="1624" alt="Screenshot 2025-04-16 at 11 49 19"
src="https://github.com/user-attachments/assets/c7025fee-fefd-4064-9101-d7a1b364dd80"
/>

**Notice!**
- I've create a new size variation for the badge, `xs`. Since we reduced
the line-height for the `text-xs` to be 16px instead of 18px, having a
smaller badge, reducing the vertical size and horizontal paddings, just
worked better.
- I have to update Figma to reflect these changes. I tried, but I was
not able to get it working and updated correctly. I'm going to take a
pause during this week to learn that.
- Updated the destructive, and warning badges to use borders as defined
in the designs
[here](https://www.figma.com/design/WfqIgsTFXN2BscBSSyXWF8/Coder-kit?node-id=489-3472&t=gfnYeLOIFUqHx6qv-0).
2025-04-17 10:57:02 -03:00
Bruno Quaresma aa02c9ffb8 chore: reduce storybook flakes (#17427)
A few storybook tests have been false positives quite frequently. To
reduce this noise, I'm implementing a few hacks to avoid that. We can
always rollback these changes if we notice they were leading to a lack
in the tests.
2025-04-17 10:48:23 -03:00
Yevhenii Shcherbina 27bc60d1b9 feat: implement reconciliation loop (#17261)
Closes https://github.com/coder/internal/issues/510

<details>
<summary> Refactoring Summary </summary>

### 1) `CalculateActions` Function

#### Issues Before Refactoring:

- Large function (~150 lines), making it difficult to read and maintain.
- The control flow is hard to follow due to complex conditional logic.
- The `ReconciliationActions` struct was partially initialized early,
then mutated in multiple places, making the flow error-prone.

Original source:  

https://github.com/coder/coder/blob/fe60b569ad754245e28bac71e0ef3c83536631bb/coderd/prebuilds/state.go#L13-L167

#### Improvements After Refactoring:

- Simplified and broken down into smaller, focused helper methods.
- The flow of the function is now more linear and easier to understand.
- Struct initialization is cleaner, avoiding partial and incremental
mutations.

Refactored function:  

https://github.com/coder/coder/blob/eeb0407d783cdda71ec2418c113f325542c47b1c/coderd/prebuilds/state.go#L67-L84

---

### 2) `ReconciliationActions` Struct

#### Issues Before Refactoring:

- The struct mixed both actionable decisions and diagnostic state, which
blurred its purpose.
- It was unclear which fields were necessary for reconciliation logic,
and which were purely for logging/observability.

#### Improvements After Refactoring:

- Split into two clear, purpose-specific structs:
- **`ReconciliationActions`** — defines the intended reconciliation
action.
- **`ReconciliationState`** — captures runtime state and metadata,
primarily for logging and diagnostics.

Original struct:  

https://github.com/coder/coder/blob/fe60b569ad754245e28bac71e0ef3c83536631bb/coderd/prebuilds/reconcile.go#L29-L41

</details>

---------

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
Co-authored-by: Sas Swart <sas.swart.cdk@gmail.com>
Co-authored-by: Danny Kopping <dannykopping@gmail.com>
Co-authored-by: Dean Sheather <dean@deansheather.com>
Co-authored-by: Spike Curtis <spike@coder.com>
Co-authored-by: Danny Kopping <danny@coder.com>
2025-04-17 09:29:29 -04:00
Cian Johnston 6a79965948 fix(agent/agentcontainers): handle race between docker ps and docker inspect (#17447)
Fixes https://github.com/coder/internal/issues/586#event-17291038671
2025-04-17 13:50:51 +01:00
Spike Curtis b3aba6dab7 test: ignore context.Canceled in acquireWithCancel (#17448)
fixes https://github.com/coder/internal/issues/584

Ignore canceled error when sending an acquired job, since dRPC is racy and will sometimes return this error even after successfully sending the job, if the test is quickly finished.
2025-04-17 16:17:19 +04:00
Michael Suchacz daafa0d689 chore: add missing prometheus tests for UNKNOWN/STATIC paths (#17446) 2025-04-17 13:50:18 +02:00
Jaayden Halko 67a912796a feat: add slider component (#17431)
The slider component is part of the components supported by Dynamic
Parameters

There are no Figma designs for the slider component. This is based on
the shadcn slider.

<img width="474" alt="Screenshot 2025-04-16 at 19 26 11"
src="https://github.com/user-attachments/assets/87370a22-4984-48f7-875b-105568739003"
/>
2025-04-17 06:27:18 -04:00
Spike Curtis 9fe3fd4e28 chore: change config-ssh Call to Action to use suffix (#17445)
fixes #16828

With all the recent changes, I believe it is now safe to change the Call to Action for `config-ssh` to use the hostname suffix rather than prefix if it was set.
2025-04-17 12:16:29 +04:00
Spike Curtis b0854aa971 feat: modify config-ssh to check for Coder Connect (#17419)
relates to #16828

Changes SSH config so that suffixes only match if Coder Connect is not running / available. This means that we will use the existing Coder Connect tunnel if it is available, rather than creating a new tunnel via `coder ssh --stdio`.
2025-04-17 12:04:00 +04:00
Spike Curtis 3b54254177 feat: add coder connect exists hidden subcommand (#17418)
Adds a new hidden subcommand `coder connect exists <hostname>` that checks if the name exists via Coder Connect. This will be used in SSH config to match only if Coder Connect is unavailable for the hostname in question, so that the SSH client will directly dial the workspace over an existing Coder Connect tunnel.

Also refactors the way we inject a test DNS resolver into the lookup functions so that we can test from outside the `workspacesdk` package.
2025-04-17 11:23:24 +04:00
M Atif Ali 6f5da1e2ee chore: add windsurf icon (#17443) 2025-04-17 07:09:46 +00:00
Steven Masley 0bc49ff5ae test: fix flake in TestRoleSyncTable with test cases sharing resources (#17441)
The test case definition shares maps that can have concurrent access if run in parallel.
2025-04-17 00:14:11 +00:00
ケイラ 7f6e5139eb chore: format code (#17438) 2025-04-16 17:21:14 -06:00
Steven Masley 2e5cd299f2 chore: load 'assign_default' value from legacy value (#17428)
If this value was set before v2.19.0, then assign_default was in a json
field that would not match. And it would default to `false`. This
corrects that.
2025-04-16 15:55:37 -05:00
Steven Masley c4d3dd2791 chore: prevent null loading sync settings (#17430)
Nulls passed to the frontend caused a page to fail to load.

`Record<string,string>` can be `nil` in golang
2025-04-16 14:39:57 -05:00
Eric Paulsen d20966d500 chore: update go to 1.24.2 (#17356)
this updates `go` to the latest stable patch version `1.24.2` in:
- `go.mod`
- `dogfood/coder/Dockerfile`
- `.github/actions/setup-go/action.yaml`
- `flake.nix`

written with the assistance of ClaudeCode.

---------

Co-authored-by: Thomas Kosiewski <tk@coder.com>
2025-04-16 11:11:02 -07:00
Jaayden Halko a8c2586404 feat: implement UI for top level dynamic parameters diagnostics (#17394)
<img width="672" alt="Screenshot 2025-04-14 at 21 31 11"
src="https://github.com/user-attachments/assets/5ca25c9d-e82e-4d52-8c43-91e4dc31117d"
/>
2025-04-16 13:00:56 -04:00
Jaayden Halko 3d787da83b feat: setup connection to dynamic parameters websocket (#17393)
resolves coder/preview#57
2025-04-16 12:49:18 -04:00
ケイラ f670bc31f5 chore: update testutil chan helpers (#17408) 2025-04-16 10:37:09 -06:00
ケイラ 2a76f5028e fix: don't attempt to insert empty terraform plans into the database (#17426) 2025-04-16 10:14:35 -06:00
dependabot[bot] feb1a3dc02 chore: bump github.com/mark3labs/mcp-go from 0.17.0 to 0.20.0 (#17380)
Bumps [github.com/mark3labs/mcp-go](https://github.com/mark3labs/mcp-go)
from 0.17.0 to 0.20.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mark3labs/mcp-go/releases">github.com/mark3labs/mcp-go's
releases</a>.</em></p>
<blockquote>
<h2>Release v0.20.0</h2>
<h2>What's Changed</h2>
<ul>
<li>feat: add ping for sse server by <a
href="https://github.com/lcgash"><code>@​lcgash</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/80">mark3labs/mcp-go#80</a></li>
<li>fix(client): allow interface to be implemented by <a
href="https://github.com/jkoelker"><code>@​jkoelker</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/135">mark3labs/mcp-go#135</a></li>
<li>feat: Tool Handler Middleware by <a
href="https://github.com/wimspaargaren"><code>@​wimspaargaren</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/123">mark3labs/mcp-go#123</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/lcgash"><code>@​lcgash</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/80">mark3labs/mcp-go#80</a></li>
<li><a href="https://github.com/jkoelker"><code>@​jkoelker</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/135">mark3labs/mcp-go#135</a></li>
<li><a
href="https://github.com/wimspaargaren"><code>@​wimspaargaren</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/123">mark3labs/mcp-go#123</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.19.0...v0.20.0">https://github.com/mark3labs/mcp-go/compare/v0.19.0...v0.20.0</a></p>
<h2>Release v0.19.0</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: SSE client hangs after 30 seconds by <a
href="https://github.com/mrene"><code>@​mrene</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/88">mark3labs/mcp-go#88</a></li>
<li>fix: change the default SSE endpoint to match the standard one used
in the official servers by <a
href="https://github.com/deadprogram"><code>@​deadprogram</code></a> in
<a
href="https://redirect.github.com/mark3labs/mcp-go/pull/91">mark3labs/mcp-go#91</a></li>
<li>fix: mcp-client should also include configurable http headers in the
/sse request by <a
href="https://github.com/kagezhao"><code>@​kagezhao</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/100">mark3labs/mcp-go#100</a></li>
<li>feat: use defer processing error by <a
href="https://github.com/songzhibin97"><code>@​songzhibin97</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/98">mark3labs/mcp-go#98</a></li>
<li>Feature/pagination functionality by <a
href="https://github.com/Jinlkj"><code>@​Jinlkj</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/107">mark3labs/mcp-go#107</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/mrene"><code>@​mrene</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/88">mark3labs/mcp-go#88</a></li>
<li><a
href="https://github.com/deadprogram"><code>@​deadprogram</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/91">mark3labs/mcp-go#91</a></li>
<li><a href="https://github.com/kagezhao"><code>@​kagezhao</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/100">mark3labs/mcp-go#100</a></li>
<li><a
href="https://github.com/songzhibin97"><code>@​songzhibin97</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/98">mark3labs/mcp-go#98</a></li>
<li><a href="https://github.com/Jinlkj"><code>@​Jinlkj</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/107">mark3labs/mcp-go#107</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.18.0...v0.19.0">https://github.com/mark3labs/mcp-go/compare/v0.18.0...v0.19.0</a></p>
<h2>Release v0.18.0</h2>
<h2>What's Changed</h2>
<ul>
<li>feat: add NewToolResultError by <a
href="https://github.com/daimatz"><code>@​daimatz</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/87">mark3labs/mcp-go#87</a></li>
<li>refactor(stdio): improve stdio server message handling by <a
href="https://github.com/winterfx"><code>@​winterfx</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/73">mark3labs/mcp-go#73</a></li>
<li>Add Stderr() Method to StdioMCPClient by <a
href="https://github.com/mashiike"><code>@​mashiike</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/72">mark3labs/mcp-go#72</a></li>
<li>fix java mcp message endpoint by <a
href="https://github.com/a67793581"><code>@​a67793581</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/75">mark3labs/mcp-go#75</a></li>
<li>simplify required field handling in inputSchema by <a
href="https://github.com/yikakia"><code>@​yikakia</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/82">mark3labs/mcp-go#82</a></li>
<li>make context available in hooks, add OnRegisterSession hook by <a
href="https://github.com/zahmadsaleem"><code>@​zahmadsaleem</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/92">mark3labs/mcp-go#92</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/daimatz"><code>@​daimatz</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/87">mark3labs/mcp-go#87</a></li>
<li><a href="https://github.com/winterfx"><code>@​winterfx</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/73">mark3labs/mcp-go#73</a></li>
<li><a href="https://github.com/mashiike"><code>@​mashiike</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/72">mark3labs/mcp-go#72</a></li>
<li><a href="https://github.com/yikakia"><code>@​yikakia</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/82">mark3labs/mcp-go#82</a></li>
<li><a
href="https://github.com/zahmadsaleem"><code>@​zahmadsaleem</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/92">mark3labs/mcp-go#92</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.17.0...v0.18.0">https://github.com/mark3labs/mcp-go/compare/v0.17.0...v0.18.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/b8dc82de3e48d514d6ceac39aa5019064f437a53"><code>b8dc82d</code></a>
feat: Tool Handler Middleware (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/123">#123</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/6b923f677470564750cabbda1bb128912a735191"><code>6b923f6</code></a>
fix(client): allow interface to be implemented (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/135">#135</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/cc777fcbf3176d0e76634f58047707d1f666cae8"><code>cc777fc</code></a>
feat: add ping for sse server (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/80">#80</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/c7390feedf888e30cb29a1262a8827e3cd77b0e3"><code>c7390fe</code></a>
Feature/pagination functionality (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/107">#107</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/62cdf7131a59d291eb26f8172a4ecf1e8daefe7c"><code>62cdf71</code></a>
feat: use defer processing error (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/98">#98</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/1b7e34cc02be41251bdd4e6d5c2ccdfd0ba6f5d4"><code>1b7e34c</code></a>
mcp-client should also include configurable http headers in the /sse
request ...</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/d1e5f33feb16ee870198d462a4226e17a9eb57ce"><code>d1e5f33</code></a>
fix: make the default sse endpoint match the standard one used in the
officia...</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/f3149bfa6cc0b79e231f39214b76030ae0973409"><code>f3149bf</code></a>
fix: remove sse read timeout to avoid ignoring future sse messages (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/88">#88</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/a0e968a752722d87063eb36ea0d55938e752f6dd"><code>a0e968a</code></a>
feat: add context to hooks (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/92">#92</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/607d6c29bb8f56bc30e3154e99e58da1db78fcb9"><code>607d6c2</code></a>
simplify required field handling in inputSchema (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/82">#82</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/mark3labs/mcp-go/compare/v0.17.0...v0.20.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/mark3labs/mcp-go&package-manager=go_modules&previous-version=0.17.0&new-version=0.20.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>
2025-04-16 14:56:12 +00:00
M Atif Ali 99979a78f5 docs: update jfrog-artifactory integration docs (#17413) 2025-04-16 19:48:26 +05:00
Steven Masley 669e790df6 test: add unit test to excercise bug when idp sync hits deleted orgs (#17405)
Deleted organizations are still attempting to sync members. This causes
an error on inserting the member, and would likely cause issues later in
the sync process even if that member is inserted. Deleted orgs should be
skipped.
2025-04-16 09:27:35 -05:00
Sas Swart 64172d374f fix: set preset parameters in the API rather than the frontend (#17403)
Follow-up from a [previous Pull
Request](https://github.com/coder/coder/pull/16965) required some
additional testing of Presets from the API perspective.

In the process of adding the new tests, I updated the API to enforce
preset parameter values based on the selected preset instead of trusting
whichever frontend makes the request. This avoids errors scenarios in
prebuilds where a prebuild might expect a certain preset but find a
different set of actual parameter values.
2025-04-16 15:54:06 +02:00
Borg93 d78215cdcb chore(site): add mlflow, lakefs and argo logos (#17332) 2025-04-16 11:25:02 +00:00
Spike Curtis b7cd545d0a test: fix TestConfigSSH_FileWriteAndOptionsFlow on Windows 11 24H2 (#17410)
Fixes tests on Windows 11 due to `printf` not being a recognized command name.
2025-04-16 14:29:45 +04:00
Aaron Lehmann 8cc743a812 chore: clarify error variable name in doAttach (#17284) 2025-04-16 14:44:33 +05:00
Michael Suchacz f8971bb3cc feat: add path & method labels to prometheus metrics for current requests (#17362)
Closes: #17212
2025-04-16 11:10:39 +02:00
Jaayden Halko 1db70bef5d feat: create dynamic parameter component (#17351)
- Create DynamicParameter component and test with locally run preview
websocket.
- Adapt CreateWorkspacePageExperimental to work with PreviewParameter
instead of TemplateVersionParameter
- Small changes to checkbox, multi-select combobox and radiogroup

The websocket implementation is temporary for testing purpose with a
locally run preview websocket
2025-04-16 05:00:25 -04:00
Steven Masley a7646d1524 chore: disable authz-header in all builds (#17409)
Header payload being large is causing some issues in dev builds. Another
method of opting in needs to be determined
2025-04-16 01:22:21 +00:00
brettkolodny 70b113de7b feat: add edit-role within user command (#17341) 2025-04-15 18:30:20 -04:00
Kyle Carberry 57ddb3c615 fix: update ai code prompt parameter in start-workspace.yaml 2025-04-15 15:15:00 -04:00
Kyle Carberry 362dcfefdd fix: update start-workspace.yaml for dev.coder.com (#17407)
I added the secrets and removed the aidev env secrets.
2025-04-15 15:10:30 -04:00
Edward Angert 0cd531dd33 docs: document workspace naming rules and restrictions (#17312)
closes #12047 


[preview](https://coder.com/docs/@12047-workspace-names/user-guides/workspace-management)

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-04-15 14:11:05 -04:00
Bruno Quaresma b0fe626250 refactor: update the workspace table design (#17404)
Related to https://github.com/coder/coder/issues/17309

**Before:**
<img width="1624" alt="Screenshot 2025-04-15 at 11 36 32"
src="https://github.com/user-attachments/assets/ecca4c22-8d9c-4ee9-8c1d-193f538a0515"
/>

**After:**
<img width="1624" alt="Screenshot 2025-04-15 at 11 36 22"
src="https://github.com/user-attachments/assets/dd95b5cb-12c0-4806-8253-9be97d5a3a8a"
/>
2025-04-15 13:52:32 -03:00
Mathias Fredriksson 00b5f56734 feat(agent/agentcontainers): add devcontainers list endpoint (#17389)
This change allows listing both predefined and runtime-detected
devcontainers, as well as showing whether or not the devcontainer is
running and which container represents it.

Fixes coder/internal#478
2025-04-15 17:53:37 +03:00
Benjamin Peinhardt c8c4de5f7a chore(dogfood): add tmux (#17397) 2025-04-15 08:26:13 -05:00
Michael Suchacz 06d39151dc feat: extend request logs with auth & DB info (#17304)
Closes #16903
2025-04-15 13:27:23 +02:00
Cian Johnston 979687c37f chore(codersdk): deprecate WorkspaceAppStatus.{NeedsUserAttention,Icon} (#17358)
https://github.com/coder/coder/pull/17163 introduced the
`workspace_app_statuses` table. Two of these fields
(`needs_user_attention`, `icon`) turned out to be surplus to
requirements.

- Removes columns `needs_user_attention` and `icon` from
`workspace_app_statuses`
- Marks the corresponding fields of `codersdk.WorkspaceAppStatus` as
deprecated.
2025-04-15 10:47:42 +01:00
Danny Kopping 95f03c561f fix: increase context timeout in TestProvisionerd/MaliciousTar to avoid flake (#17400)
Fixing a flake seen here:
https://github.com/coder/coder/actions/runs/14465389766/job/40566518088

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
2025-04-15 09:39:23 +00:00
Danny Kopping 0b18e458f4 fix: reduce excessive logging when database is unreachable (#17363)
Fixes #17045

---------

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
2025-04-15 10:55:30 +02:00
Hugo Dutka 2f99d70640 fix: configure start workspace action after version upgrade (#17398)
Dependabot recently upgraded `coder/start-workspace-action` to the
latest version. Compared to the version we were using previously, the
new version expects a different configuration.
2025-04-15 12:50:57 +05:00
dependabot[bot] fa594f4f6a ci: bump the github-actions group across 1 directory with 8 updates (#17377)
Bumps the github-actions group with 8 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
|
[step-security/harden-runner](https://github.com/step-security/harden-runner)
| `2.11.0` | `2.11.1` |
| [crate-ci/typos](https://github.com/crate-ci/typos) | `1.29.10` |
`1.31.1` |
| [actions/setup-java](https://github.com/actions/setup-java) | `4.7.0`
| `4.7.1` |
|
[tj-actions/changed-files](https://github.com/tj-actions/changed-files)
| `27ae6b33eaed7bf87272fdeb9f1c54f9facc9d99` |
`9934ab3fdf63239da75d9e0fbd339c48620c72c4` |
| [tj-actions/branch-names](https://github.com/tj-actions/branch-names)
| `8.1.0` | `8.2.1` |
| [github/codeql-action](https://github.com/github/codeql-action) |
`3.28.12` | `3.28.15` |
|
[coder/start-workspace-action](https://github.com/coder/start-workspace-action)
| `26d3600161d67901f24d8612793d3b82771cde2d` |
`35a4608cefc7e8cc56573cae7c3b85304575cb72` |
|
[umbrelladocs/action-linkspector](https://github.com/umbrelladocs/action-linkspector)
| `1.3.2` | `1.3.4` |


Updates `step-security/harden-runner` from 2.11.0 to 2.11.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/step-security/harden-runner/releases">step-security/harden-runner's
releases</a>.</em></p>
<blockquote>
<h2>v2.11.1</h2>
<h2>What's Changed</h2>
<ul>
<li>cache: add support for GitHub Actions cache v2 by <a
href="https://github.com/h0x0er"><code>@​h0x0er</code></a> in <a
href="https://redirect.github.com/step-security/harden-runner/pull/529">step-security/harden-runner#529</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/step-security/harden-runner/compare/v2...v2.11.1">https://github.com/step-security/harden-runner/compare/v2...v2.11.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/step-security/harden-runner/commit/c6295a65d1254861815972266d5933fd6e532bdf"><code>c6295a6</code></a>
Merge pull request <a
href="https://redirect.github.com/step-security/harden-runner/issues/530">#530</a>
from step-security/rc-19</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/3e118b145bd13a08b2e465cf3a216df0f6c7746e"><code>3e118b1</code></a>
Improve error handling</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/b38e918ba8cf8d08113e53089af0d89429dcc51a"><code>b38e918</code></a>
Merge pull request <a
href="https://redirect.github.com/step-security/harden-runner/issues/529">#529</a>
from h0x0er/jatin/cache-fix</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/0664d30cda4109be234d326b54ac1cc6385597a2"><code>0664d30</code></a>
cache: added support for cache v2</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/b131ca5ebfca4930fe6d4a3e82d1e386b4873c94"><code>b131ca5</code></a>
Merge pull request <a
href="https://redirect.github.com/step-security/harden-runner/issues/524">#524</a>
from step-security/fix/security/GHSA-968p-4wvh-cqc8</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/2dc9579753e01c4033425fcc7b74e652b583ca50"><code>2dc9579</code></a>
Address vulnerabilities</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/f054d811b5b89fde2f954d54dc8622ec3aaab9ab"><code>f054d81</code></a>
Update README (<a
href="https://redirect.github.com/step-security/harden-runner/issues/522">#522</a>)</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/8a09271fed8277ab7fb02dbb5917c8d0e78323b4"><code>8a09271</code></a>
Update Readme (<a
href="https://redirect.github.com/step-security/harden-runner/issues/520">#520</a>)</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/6ec6af7d622602bd852df48848f3cae95c760a48"><code>6ec6af7</code></a>
Update readme (<a
href="https://redirect.github.com/step-security/harden-runner/issues/518">#518</a>)</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/539365ba33fd040cf8c4db243b6f0ed3b32c3283"><code>539365b</code></a>
Merge pull request <a
href="https://redirect.github.com/step-security/harden-runner/issues/516">#516</a>
from vorburger/patch-1</li>
<li>Additional commits viewable in <a
href="https://github.com/step-security/harden-runner/compare/4d991eb9b905ef189e4c376166672c3f2f230481...c6295a65d1254861815972266d5933fd6e532bdf">compare
view</a></li>
</ul>
</details>
<br />

Updates `crate-ci/typos` from 1.29.10 to 1.31.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/releases">crate-ci/typos's
releases</a>.</em></p>
<blockquote>
<h2>v1.31.1</h2>
<h2>[1.31.1] - 2025-03-31</h2>
<h3>Fixes</h3>
<ul>
<li><em>(dict)</em> Also correct <code>typ</code> to
<code>type</code></li>
</ul>
<h2>v1.31.0</h2>
<h2>[1.31.0] - 2025-03-28</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1266">March
2025</a> changes</li>
</ul>
<h2>v1.30.3</h2>
<h2>[1.30.3] - 2025-03-24</h2>
<h3>Features</h3>
<ul>
<li>Support detecting <code>go.work</code> and <code>go.work.sum</code>
files</li>
</ul>
<h2>v1.30.2</h2>
<h2>[1.30.2] - 2025-03-10</h2>
<h3>Features</h3>
<ul>
<li>Add <code>--highlight-words</code> and
<code>--highlight-identifiers</code> for easier debugging of config</li>
</ul>
<h2>v1.30.1</h2>
<h2>[1.30.1] - 2025-03-04</h2>
<h3>Features</h3>
<ul>
<li><em>(action)</em> Create <code>v1</code> tag</li>
</ul>
<h2>v1.30.0</h2>
<h2>[1.30.0] - 2025-03-01</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1221">February
2025</a> changes</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/blob/master/CHANGELOG.md">crate-ci/typos's
changelog</a>.</em></p>
<blockquote>
<h1>Change Log</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>The format is based on <a href="http://keepachangelog.com/">Keep a
Changelog</a>
and this project adheres to <a href="http://semver.org/">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased] - ReleaseDate</h2>
<h2>[1.31.1] - 2025-03-31</h2>
<h3>Fixes</h3>
<ul>
<li><em>(dict)</em> Also correct <code>typ</code> to
<code>type</code></li>
</ul>
<h2>[1.31.0] - 2025-03-28</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1266">March
2025</a> changes</li>
</ul>
<h2>[1.30.3] - 2025-03-24</h2>
<h3>Features</h3>
<ul>
<li>Support detecting <code>go.work</code> and <code>go.work.sum</code>
files</li>
</ul>
<h2>[1.30.2] - 2025-03-10</h2>
<h3>Features</h3>
<ul>
<li>Add <code>--highlight-words</code> and
<code>--highlight-identifiers</code> for easier debugging of config</li>
</ul>
<h2>[1.30.1] - 2025-03-04</h2>
<h3>Features</h3>
<ul>
<li><em>(action)</em> Create <code>v1</code> tag</li>
</ul>
<h2>[1.30.0] - 2025-03-01</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1221">February
2025</a> changes</li>
</ul>
<h2>[1.29.10] - 2025-02-25</h2>
<h3>Fixes</h3>
<ul>
<li>Also correct <code>contaminent</code> as
<code>contaminant</code></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/crate-ci/typos/commit/b1a1ef3893ff35ade0cfa71523852a49bfd05d19"><code>b1a1ef3</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/9c8a2c384f9b92ac5e7166040a1571141e271e7a"><code>9c8a2c3</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/crate-ci/typos/commit/12195d75fea9498ad83cb8d85e357a986e90fb7e"><code>12195d7</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1267">#1267</a>
from epage/type</li>
<li><a
href="https://github.com/crate-ci/typos/commit/d4dbe5f77bde37609ce3424df4a713a61f87ad2b"><code>d4dbe5f</code></a>
fix(dict): Also correct typ to type</li>
<li><a
href="https://github.com/crate-ci/typos/commit/718c4ff697435edabd4f1c52c3775521adbb33a3"><code>718c4ff</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/bfbf137ed65f9abe0e9a3a92a354a787ca084240"><code>bfbf137</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/d47e90e4ffad8924461124c3b3787e220b811956"><code>d47e90e</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/crate-ci/typos/commit/0694c2a98227bebeefdfff96f2086480295d00a5"><code>0694c2a</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1266">#1266</a>
from epage/march</li>
<li><a
href="https://github.com/crate-ci/typos/commit/f715ca8b0824515b13e3e51ed80c8a255d8a7d07"><code>f715ca8</code></a>
feat(dict): March 2025 updates</li>
<li><a
href="https://github.com/crate-ci/typos/commit/d08e4083f112e684fb88f6babd9ae60a1f1cd84f"><code>d08e408</code></a>
chore: Release</li>
<li>Additional commits viewable in <a
href="https://github.com/crate-ci/typos/compare/db35ee91e80fbb447f33b0e5fbddb24d2a1a884f...b1a1ef3893ff35ade0cfa71523852a49bfd05d19">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/setup-java` from 4.7.0 to 4.7.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/setup-java/releases">actions/setup-java's
releases</a>.</em></p>
<blockquote>
<h2>v4.7.1</h2>
<h2>What's Changed</h2>
<h3>Documentation changes</h3>
<ul>
<li>Add Documentation to Recommend Using GraalVM JDK 17 Version to
17.0.12 to Align with GFTC License Terms by <a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
in <a
href="https://redirect.github.com/actions/setup-java/pull/704">actions/setup-java#704</a></li>
<li>Remove duplicated GraalVM section in documentation by <a
href="https://github.com/Marcono1234"><code>@​Marcono1234</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/716">actions/setup-java#716</a></li>
</ul>
<h3>Dependency updates:</h3>
<ul>
<li>Upgrade <code>@​action/cache</code> from 4.0.0 to 4.0.2 by <a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
in <a
href="https://redirect.github.com/actions/setup-java/pull/766">actions/setup-java#766</a></li>
<li>Upgrade <code>@​actions/glob</code> from 0.4.0 to 0.5.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/744">actions/setup-java#744</a></li>
<li>Upgrade ts-jest from 29.1.2 to 29.2.5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/743">actions/setup-java#743</a></li>
<li>Upgrade <code>@​action/cache</code> to 4.0.3 by <a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
in <a
href="https://redirect.github.com/actions/setup-java/pull/773">actions/setup-java#773</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-java/compare/v4...v4.7.1">https://github.com/actions/setup-java/compare/v4...v4.7.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/setup-java/commit/c5195efecf7bdfc987ee8bae7a71cb8b11521c00"><code>c5195ef</code></a>
actions/cache upgrade to 4.0.3 (<a
href="https://redirect.github.com/actions/setup-java/issues/773">#773</a>)</li>
<li><a
href="https://github.com/actions/setup-java/commit/dd38875f930accc291b5816356a21f72056c0b70"><code>dd38875</code></a>
Bump ts-jest from 29.1.2 to 29.2.5 (<a
href="https://redirect.github.com/actions/setup-java/issues/743">#743</a>)</li>
<li><a
href="https://github.com/actions/setup-java/commit/148017a9b0c6af80330bcc5db11d1c670d2e7074"><code>148017a</code></a>
Bump <code>@​actions/glob</code> from 0.4.0 to 0.5.0 (<a
href="https://redirect.github.com/actions/setup-java/issues/744">#744</a>)</li>
<li><a
href="https://github.com/actions/setup-java/commit/3b6c050358614dd082e53cdbc55580431fc4e437"><code>3b6c050</code></a>
Remove duplicated GraalVM section in documentation (<a
href="https://redirect.github.com/actions/setup-java/issues/716">#716</a>)</li>
<li><a
href="https://github.com/actions/setup-java/commit/b8ebb8ba1d9655f7f159c0a8b8135606ae11b5c9"><code>b8ebb8b</code></a>
upgrade <code>@​action/cache</code> from 4.0.0 to 4.0.2 (<a
href="https://redirect.github.com/actions/setup-java/issues/766">#766</a>)</li>
<li><a
href="https://github.com/actions/setup-java/commit/799ee7c97e9721ef38d1a7e8486c39753b9d6102"><code>799ee7c</code></a>
Add Documentation to Recommend Using GraalVM JDK 17 Version to 17.0.12
to Ali...</li>
<li>See full diff in <a
href="https://github.com/actions/setup-java/compare/3a4f6e1af504cf6a31855fa899c6aa5355ba6c12...c5195efecf7bdfc987ee8bae7a71cb8b11521c00">compare
view</a></li>
</ul>
</details>
<br />

Updates `tj-actions/changed-files` from
27ae6b33eaed7bf87272fdeb9f1c54f9facc9d99 to
9934ab3fdf63239da75d9e0fbd339c48620c72c4
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tj-actions/changed-files/blob/main/HISTORY.md">tj-actions/changed-files's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.4...v46.0.5">46.0.5</a>
- (2025-04-09)</h1>
<h2><!-- raw HTML omitted -->⚙️ Miscellaneous Tasks</h2>
<ul>
<li><strong>deps:</strong> Bump yaml from 2.7.0 to 2.7.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2520">#2520</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/ed68ef82c095e0d48ec87eccea555d944a631a4c">ed68ef8</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump typescript from 5.8.2 to 5.8.3 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2516">#2516</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/a7bc14b808f23d3b467a4079c69a81f1a4500fd5">a7bc14b</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump <code>@​types/node</code> from
22.13.11 to 22.14.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2517">#2517</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/3d751f6b6d84071a17e1b9cf4ed79a80a27dd0ab">3d751f6</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump eslint-plugin-prettier from 5.2.3 to
5.2.6 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2519">#2519</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/e2fda4ec3cb0bc2a353843cae823430b3124db8f">e2fda4e</a>)
- (dependabot[bot])</li>
<li><strong>deps-dev:</strong> Bump ts-jest from 29.2.6 to 29.3.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2518">#2518</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/0bed1b1132ec4879a39a2d624cf82a00d0bcfa48">0bed1b1</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump github/codeql-action from 3.28.12 to
3.28.15 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2530">#2530</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/68024587dc36f49685c96d59d3f1081830f968bb">6802458</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump tj-actions/branch-names from 8.0.1 to
8.1.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2521">#2521</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/cf2e39e86bf842d1f9bc5bca56c0a6b207cca792">cf2e39e</a>)
- (dependabot[bot])</li>
<li><strong>deps:</strong> Bump tj-actions/verify-changed-files from
20.0.1 to 20.0.4 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2523">#2523</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/6abeaa506a419f85fa9e681260b443adbeebb3d4">6abeaa5</a>)
- (dependabot[bot])</li>
</ul>
<h2><!-- raw HTML omitted -->⬆️ Upgrades</h2>
<ul>
<li>Upgraded to v46.0.4 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2511">#2511</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted --> (<a
href="https://github.com/tj-actions/changed-files/commit/6f67ee9ac810f0192ea7b3d2086406f97847bcf9">6f67ee9</a>)
- (github-actions[bot])</p>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.3...v46.0.4">46.0.4</a>
- (2025-04-03)</h1>
<h2><!-- raw HTML omitted -->🐛 Bug Fixes</h2>
<ul>
<li>Bug modified_keys and changed_key outputs not set when no changes
detected (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2509">#2509</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/6cb76d07bee4c9772c6882c06c37837bf82a04d3">6cb76d0</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->📚 Documentation</h2>
<ul>
<li>Update readme (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2508">#2508</a>)
(<a
href="https://github.com/tj-actions/changed-files/commit/b74df86ccb65173a8e33ba5492ac1a2ca6b216fd">b74df86</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->⬆️ Upgrades</h2>
<ul>
<li>Upgraded to v46.0.3 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2506">#2506</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted -->
Co-authored-by: Tonye Jack <a
href="mailto:jtonye@ymail.com">jtonye@ymail.com</a> (<a
href="https://github.com/tj-actions/changed-files/commit/27ae6b33eaed7bf87272fdeb9f1c54f9facc9d99">27ae6b3</a>)
- (github-actions[bot])</p>
<h1><a
href="https://github.com/tj-actions/changed-files/compare/v46.0.2...v46.0.3">46.0.3</a>
- (2025-03-23)</h1>
<h2><!-- raw HTML omitted -->🔄 Update</h2>
<ul>
<li>Updated README.md (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2501">#2501</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted --> (<a
href="https://github.com/tj-actions/changed-files/commit/41e0de576a0f2b64d9f06f2773f539109e55a70a">41e0de5</a>)
- (github-actions[bot])</p>
<ul>
<li>Updated README.md (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2499">#2499</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted --> (<a
href="https://github.com/tj-actions/changed-files/commit/945787811a795cd840a1157ac590dd7827a05c8e">9457878</a>)
- (github-actions[bot])</p>
<h2><!-- raw HTML omitted -->📚 Documentation</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tj-actions/changed-files/commit/9934ab3fdf63239da75d9e0fbd339c48620c72c4"><code>9934ab3</code></a>
chore(deps-dev): bump eslint-config-prettier from 10.1.1 to 10.1.2 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2532">#2532</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/db731a131ccd81ed52a3d463b6d2a4b2856c7ec9"><code>db731a1</code></a>
Upgraded to v46.0.5 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2531">#2531</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/ed68ef82c095e0d48ec87eccea555d944a631a4c"><code>ed68ef8</code></a>
chore(deps): bump yaml from 2.7.0 to 2.7.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2520">#2520</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/a7bc14b808f23d3b467a4079c69a81f1a4500fd5"><code>a7bc14b</code></a>
chore(deps-dev): bump typescript from 5.8.2 to 5.8.3 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2516">#2516</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/3d751f6b6d84071a17e1b9cf4ed79a80a27dd0ab"><code>3d751f6</code></a>
chore(deps-dev): bump <code>@​types/node</code> from 22.13.11 to 22.14.0
(<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2517">#2517</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/e2fda4ec3cb0bc2a353843cae823430b3124db8f"><code>e2fda4e</code></a>
chore(deps-dev): bump eslint-plugin-prettier from 5.2.3 to 5.2.6 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2519">#2519</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/0bed1b1132ec4879a39a2d624cf82a00d0bcfa48"><code>0bed1b1</code></a>
chore(deps-dev): bump ts-jest from 29.2.6 to 29.3.1 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2518">#2518</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/68024587dc36f49685c96d59d3f1081830f968bb"><code>6802458</code></a>
chore(deps): bump github/codeql-action from 3.28.12 to 3.28.15 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2530">#2530</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/cf2e39e86bf842d1f9bc5bca56c0a6b207cca792"><code>cf2e39e</code></a>
chore(deps): bump tj-actions/branch-names from 8.0.1 to 8.1.0 (<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2521">#2521</a>)</li>
<li><a
href="https://github.com/tj-actions/changed-files/commit/6abeaa506a419f85fa9e681260b443adbeebb3d4"><code>6abeaa5</code></a>
chore(deps): bump tj-actions/verify-changed-files from 20.0.1 to 20.0.4
(<a
href="https://redirect.github.com/tj-actions/changed-files/issues/2523">#2523</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tj-actions/changed-files/compare/27ae6b33eaed7bf87272fdeb9f1c54f9facc9d99...9934ab3fdf63239da75d9e0fbd339c48620c72c4">compare
view</a></li>
</ul>
</details>
<br />

Updates `tj-actions/branch-names` from 8.1.0 to 8.2.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tj-actions/branch-names/releases">tj-actions/branch-names's
releases</a>.</em></p>
<blockquote>
<h2>v8.2.1</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: update sync-release-version.yml to sign commits by <a
href="https://github.com/jackton1"><code>@​jackton1</code></a> in <a
href="https://redirect.github.com/tj-actions/branch-names/pull/416">tj-actions/branch-names#416</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/tj-actions/branch-names/compare/v8.2.0...v8.2.1">https://github.com/tj-actions/branch-names/compare/v8.2.0...v8.2.1</a></p>
<h2>v8.2.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Upgraded to v8.1.0 by <a
href="https://github.com/jackton1"><code>@​jackton1</code></a> in <a
href="https://redirect.github.com/tj-actions/branch-names/pull/410">tj-actions/branch-names#410</a></li>
<li>feat: add support for replace forward slashes with hyphens by <a
href="https://github.com/jackton1"><code>@​jackton1</code></a> in <a
href="https://redirect.github.com/tj-actions/branch-names/pull/412">tj-actions/branch-names#412</a></li>
<li>chore: update update-readme.yml by <a
href="https://github.com/jackton1"><code>@​jackton1</code></a> in <a
href="https://redirect.github.com/tj-actions/branch-names/pull/414">tj-actions/branch-names#414</a></li>
<li>Updated README.md by <a
href="https://github.com/github-actions"><code>@​github-actions</code></a>
in <a
href="https://redirect.github.com/tj-actions/branch-names/pull/415">tj-actions/branch-names#415</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/github-actions"><code>@​github-actions</code></a>
made their first contribution in <a
href="https://redirect.github.com/tj-actions/branch-names/pull/415">tj-actions/branch-names#415</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/tj-actions/branch-names/compare/v8...v8.2.0">https://github.com/tj-actions/branch-names/compare/v8...v8.2.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tj-actions/branch-names/blob/main/HISTORY.md">tj-actions/branch-names's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h1><a
href="https://github.com/tj-actions/branch-names/compare/v8.2.0...v8.2.1">8.2.1</a>
- (2025-04-11)</h1>
<h2><!-- raw HTML omitted -->🐛 Bug Fixes</h2>
<ul>
<li>Update sync-release-version.yml to sign commits (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/416">#416</a>)
(<a
href="https://github.com/tj-actions/branch-names/commit/dde14ac574a8b9b1cedc59a1cf312788af43d8d8">dde14ac</a>)
- (Tonye Jack)</li>
</ul>
<h1><a
href="https://github.com/tj-actions/branch-names/compare/v8.1.0...v8.2.0">8.2.0</a>
- (2025-04-11)</h1>
<h2><!-- raw HTML omitted -->🚀 Features</h2>
<ul>
<li>Add support for replace forward slashes with hyphens (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/412">#412</a>)
(<a
href="https://github.com/tj-actions/branch-names/commit/af406356b42c0855d5d112babee4a0b76ee630df">af40635</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted --> Remove</h2>
<ul>
<li>Deleted .github/workflows/rebase.yml (<a
href="https://github.com/tj-actions/branch-names/commit/c209967c9a91450d7dced6e5adc3c61ca030c868">c209967</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->🔄 Update</h2>
<ul>
<li>Updated README.md (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/415">#415</a>)</li>
</ul>
<p>Co-authored-by: github-actions[bot] <!-- raw HTML omitted --> (<a
href="https://github.com/tj-actions/branch-names/commit/47dfecabcf7a70329c1d7fc49d56ce56739c5420">47dfeca</a>)
- (github-actions[bot])</p>
<ul>
<li>Update update-readme.yml (<a
href="https://github.com/tj-actions/branch-names/commit/c9cf6f9a0e21d41fb9acf4025894c022a1dd22db">c9cf6f9</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->⚙️ Miscellaneous Tasks</h2>
<ul>
<li>Update update-readme.yml (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/414">#414</a>)
(<a
href="https://github.com/tj-actions/branch-names/commit/b1f61bc147718240eda9ab8a823f836416ab297c">b1f61bc</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->⬆️ Upgrades</h2>
<ul>
<li>Upgraded from v8.0.2 -&gt; v8.1.0 (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/410">#410</a>)</li>
</ul>
<p>(<a
href="https://github.com/tj-actions/branch-names/commit/96012203a066021edaf47a9381953d843444eacf">9601220</a>)
- (Tonye Jack)</p>
<h1><a
href="https://github.com/tj-actions/branch-names/compare/v8.0.2...v8.1.0">8.1.0</a>
- (2025-03-23)</h1>
<h2><!-- raw HTML omitted -->🚀 Features</h2>
<ul>
<li>Add support for strip_branch_prefix (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/406">#406</a>)
(<a
href="https://github.com/tj-actions/branch-names/commit/c83c87ab5379a8ff88c905ea78c391c0d53972ac">c83c87a</a>)
- (Tonye Jack)</li>
</ul>
<h2><!-- raw HTML omitted -->🔄 Update</h2>
<ul>
<li>Updated README.md (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/408">#408</a>)</li>
</ul>
<p>(<a
href="https://github.com/tj-actions/branch-names/commit/d18e657ed32f367301fdebeb9a88b7e5539f3052">d18e657</a>)
- (Tonye Jack)</p>
<h2><!-- raw HTML omitted -->⚙️ Miscellaneous Tasks</h2>
<ul>
<li>Update test.yml (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/409">#409</a>)
(<a
href="https://github.com/tj-actions/branch-names/commit/f44339b51f74753b57583fbbd124e18a81170ab1">f44339b</a>)
- (Tonye Jack)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tj-actions/branch-names/commit/dde14ac574a8b9b1cedc59a1cf312788af43d8d8"><code>dde14ac</code></a>
fix: update sync-release-version.yml to sign commits (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/416">#416</a>)</li>
<li><a
href="https://github.com/tj-actions/branch-names/commit/47dfecabcf7a70329c1d7fc49d56ce56739c5420"><code>47dfeca</code></a>
Updated README.md (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/415">#415</a>)</li>
<li><a
href="https://github.com/tj-actions/branch-names/commit/c9cf6f9a0e21d41fb9acf4025894c022a1dd22db"><code>c9cf6f9</code></a>
Update update-readme.yml</li>
<li><a
href="https://github.com/tj-actions/branch-names/commit/b1f61bc147718240eda9ab8a823f836416ab297c"><code>b1f61bc</code></a>
chore: update update-readme.yml (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/414">#414</a>)</li>
<li><a
href="https://github.com/tj-actions/branch-names/commit/af406356b42c0855d5d112babee4a0b76ee630df"><code>af40635</code></a>
feat: add support for replace forward slashes with hyphens (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/412">#412</a>)</li>
<li><a
href="https://github.com/tj-actions/branch-names/commit/c209967c9a91450d7dced6e5adc3c61ca030c868"><code>c209967</code></a>
Deleted .github/workflows/rebase.yml</li>
<li><a
href="https://github.com/tj-actions/branch-names/commit/96012203a066021edaf47a9381953d843444eacf"><code>9601220</code></a>
Upgraded from v8.0.2 -&gt; v8.1.0 (<a
href="https://redirect.github.com/tj-actions/branch-names/issues/410">#410</a>)</li>
<li>See full diff in <a
href="https://github.com/tj-actions/branch-names/compare/f44339b51f74753b57583fbbd124e18a81170ab1...dde14ac574a8b9b1cedc59a1cf312788af43d8d8">compare
view</a></li>
</ul>
</details>
<br />

Updates `github/codeql-action` from 3.28.12 to 3.28.15
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.28.15</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.28.15 - 07 Apr 2025</h2>
<ul>
<li>Fix bug where the action would fail if it tried to produce a debug
artifact with more than 65535 files. <a
href="https://redirect.github.com/github/codeql-action/pull/2842">#2842</a></li>
</ul>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.28.15/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
<h2>v3.28.14</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.28.14 - 07 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2838">#2838</a></li>
</ul>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.28.14/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
<h2>v3.28.13</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.28.13 - 24 Mar 2025</h2>
<p>No user facing changes.</p>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.28.13/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<p>No user facing changes.</p>
<h2>3.28.15 - 07 Apr 2025</h2>
<ul>
<li>Fix bug where the action would fail if it tried to produce a debug
artifact with more than 65535 files. <a
href="https://redirect.github.com/github/codeql-action/pull/2842">#2842</a></li>
</ul>
<h2>3.28.14 - 07 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2838">#2838</a></li>
</ul>
<h2>3.28.13 - 24 Mar 2025</h2>
<p>No user facing changes.</p>
<h2>3.28.12 - 19 Mar 2025</h2>
<ul>
<li>Dependency caching should now cache more dependencies for Java
<code>build-mode: none</code> extractions. This should speed up
workflows and avoid inconsistent alerts in some cases.</li>
<li>Update default CodeQL bundle version to 2.20.7. <a
href="https://redirect.github.com/github/codeql-action/pull/2810">#2810</a></li>
</ul>
<h2>3.28.11 - 07 Mar 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.20.6. <a
href="https://redirect.github.com/github/codeql-action/pull/2793">#2793</a></li>
</ul>
<h2>3.28.10 - 21 Feb 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.20.5. <a
href="https://redirect.github.com/github/codeql-action/pull/2772">#2772</a></li>
<li>Address an issue where the CodeQL Bundle would occasionally fail to
decompress on macOS. <a
href="https://redirect.github.com/github/codeql-action/pull/2768">#2768</a></li>
</ul>
<h2>3.28.9 - 07 Feb 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.20.4. <a
href="https://redirect.github.com/github/codeql-action/pull/2753">#2753</a></li>
</ul>
<h2>3.28.8 - 29 Jan 2025</h2>
<ul>
<li>Enable support for Kotlin 2.1.10 when running with CodeQL CLI
v2.20.3. <a
href="https://redirect.github.com/github/codeql-action/pull/2744">#2744</a></li>
</ul>
<h2>3.28.7 - 29 Jan 2025</h2>
<p>No user facing changes.</p>
<h2>3.28.6 - 27 Jan 2025</h2>
<ul>
<li>Re-enable debug artifact upload for CLI versions 2.20.3 or greater.
<a
href="https://redirect.github.com/github/codeql-action/pull/2726">#2726</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/45775bd8235c68ba998cffa5171334d58593da47"><code>45775bd</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2854">#2854</a>
from github/update-v3.28.15-a35ae8c38</li>
<li><a
href="https://github.com/github/codeql-action/commit/dd78aab4078b17a672a66d6a80a990beb672ede1"><code>dd78aab</code></a>
Update CHANGELOG.md with bug fix details</li>
<li><a
href="https://github.com/github/codeql-action/commit/e40af591743761de70080085b4e6ce37f7f6e657"><code>e40af59</code></a>
Update changelog for v3.28.15</li>
<li><a
href="https://github.com/github/codeql-action/commit/a35ae8c380fa35365cd546f9a397a46f60dd82cf"><code>a35ae8c</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2843">#2843</a>
from github/cklin/diff-informed-compat</li>
<li><a
href="https://github.com/github/codeql-action/commit/bb59df6c174a91d88eec1c48f2ab0ef7b5f96e99"><code>bb59df6</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2842">#2842</a>
from github/henrymercer/zip64</li>
<li><a
href="https://github.com/github/codeql-action/commit/4b508f59648bef88ef72c74f1ffff531fda55ea8"><code>4b508f5</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2845">#2845</a>
from github/mergeback/v3.28.14-to-main-fc7e4a0f</li>
<li><a
href="https://github.com/github/codeql-action/commit/ca00afb5f1457cf1c85da6cda07d73e720ff061a"><code>ca00afb</code></a>
Update checked-in dependencies</li>
<li><a
href="https://github.com/github/codeql-action/commit/2969c78ce0262bf75658058604498d2b4bdb0b9b"><code>2969c78</code></a>
Update changelog and version after v3.28.14</li>
<li><a
href="https://github.com/github/codeql-action/commit/fc7e4a0fa01c3cca5fd6a1fddec5c0740c977aa2"><code>fc7e4a0</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2844">#2844</a>
from github/update-v3.28.14-362ef4ce2</li>
<li><a
href="https://github.com/github/codeql-action/commit/be0175c800fe14dd962aaa2c97f55371f6f95b35"><code>be0175c</code></a>
Update changelog for v3.28.14</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/5f8171a638ada777af81d42b55959a643bb29017...45775bd8235c68ba998cffa5171334d58593da47">compare
view</a></li>
</ul>
</details>
<br />

Updates `coder/start-workspace-action` from
26d3600161d67901f24d8612793d3b82771cde2d to
35a4608cefc7e8cc56573cae7c3b85304575cb72
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/coder/start-workspace-action/commit/35a4608cefc7e8cc56573cae7c3b85304575cb72"><code>35a4608</code></a>
update <code>github-username</code> description to specify requirement
for Coder 2.21 or...</li>
<li><a
href="https://github.com/coder/start-workspace-action/commit/0054568c043bba479899edb91ef96a5cfca21c55"><code>0054568</code></a>
clarify requirements for the <code>github-username</code> input</li>
<li><a
href="https://github.com/coder/start-workspace-action/commit/f3cda2e65a469e6dd60478c111c745b919c0ec68"><code>f3cda2e</code></a>
fix variable names</li>
<li><a
href="https://github.com/coder/start-workspace-action/commit/a6a41dc1eb63a8e58dc43a97a2c2cb04ccc40b36"><code>a6a41dc</code></a>
update readme</li>
<li><a
href="https://github.com/coder/start-workspace-action/commit/a09e31de35a1d153448ed707d63708e2a2acef3c"><code>a09e31d</code></a>
more defaults for inputs</li>
<li><a
href="https://github.com/coder/start-workspace-action/commit/13304209b2b4449befcb6d0392693311aad1faff"><code>1330420</code></a>
Add a screenshot to the README</li>
<li><a
href="https://github.com/coder/start-workspace-action/commit/8d0b0d4118b6fa0c504b79c06dc99f4ed024c749"><code>8d0b0d4</code></a>
clarify status comment</li>
<li><a
href="https://github.com/coder/start-workspace-action/commit/747b408cb53f6e3440ba04f951c75077994ff95a"><code>747b408</code></a>
update input descriptions</li>
<li><a
href="https://github.com/coder/start-workspace-action/commit/e526e6fb8e781ffacf59c6066194286a9f3cee8a"><code>e526e6f</code></a>
update example action tag</li>
<li><a
href="https://github.com/coder/start-workspace-action/commit/212ab2f68a115ca64029be34610433cfa16a89e0"><code>212ab2f</code></a>
update readme and add a license</li>
<li>Additional commits viewable in <a
href="https://github.com/coder/start-workspace-action/compare/26d3600161d67901f24d8612793d3b82771cde2d...35a4608cefc7e8cc56573cae7c3b85304575cb72">compare
view</a></li>
</ul>
</details>
<br />

Updates `umbrelladocs/action-linkspector` from 1.3.2 to 1.3.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/umbrelladocs/action-linkspector/releases">umbrelladocs/action-linkspector's
releases</a>.</em></p>
<blockquote>
<h2>Release v1.3.4</h2>
<p>v1.3.4: PR <a
href="https://redirect.github.com/umbrelladocs/action-linkspector/issues/42">#42</a>
- Update linkspector version to 0.4.4</p>
<h2>Release v1.3.3</h2>
<p>v1.3.3: PR <a
href="https://redirect.github.com/umbrelladocs/action-linkspector/issues/41">#41</a>
- Update linkspector version to 0.4.3</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/UmbrellaDocs/action-linkspector/commit/a0567ce1c7c13de4a2358587492ed43cab5d0102"><code>a0567ce</code></a>
Merge pull request <a
href="https://redirect.github.com/umbrelladocs/action-linkspector/issues/42">#42</a>
from UmbrellaDocs/update-linkspector-version</li>
<li><a
href="https://github.com/UmbrellaDocs/action-linkspector/commit/f5418fddbc33d4b79076fee4e41451501c6ceb0f"><code>f5418fd</code></a>
Update linkspector version to 0.4.4</li>
<li><a
href="https://github.com/UmbrellaDocs/action-linkspector/commit/3e12ade1e0b1823455dae8cf8b4f9cc92ec7dd20"><code>3e12ade</code></a>
Merge pull request <a
href="https://redirect.github.com/umbrelladocs/action-linkspector/issues/41">#41</a>
from UmbrellaDocs/update-linkspector-version</li>
<li><a
href="https://github.com/UmbrellaDocs/action-linkspector/commit/8dfab6548de1b83b975ac3262626c2d1875f59f1"><code>8dfab65</code></a>
Update linkspector version to 0.4.3</li>
<li>See full diff in <a
href="https://github.com/umbrelladocs/action-linkspector/compare/49cf4f8da82db70e691bb8284053add5028fa244...a0567ce1c7c13de4a2358587492ed43cab5d0102">compare
view</a></li>
</ul>
</details>
<br />

<details>
<summary>Most Recent Ignore Conditions Applied to This Pull
Request</summary>

| Dependency Name | Ignore Conditions |
| --- | --- |
| crate-ci/typos | [>= 1.30.a, < 1.31] |
</details>


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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Muhammad Atif Ali <atif@coder.com>
2025-04-14 19:55:01 +00:00
M Atif Ali e54aa442eb chore(dogfood): switch to JetBrains Toolbox module (#17392) 2025-04-14 21:34:52 +05:00
Cian Johnston 272edba1d8 feat(codersdk/toolsdk): add template_version_id to coder_create_workspace_build (#17364)
The `coder_create_workspace_build` tool was missing the ability to
change the template version.
2025-04-14 17:29:43 +01:00
Cian Johnston 2d2c9bda98 fix(cli): correct logic around CODER_MCP_APP_STATUS_SLUG (#17391)
Past me was not smart.
2025-04-14 16:24:02 +01:00
Sas Swart a98605913a feat: mark prebuilds as such and set their preset ids (#16965)
This pull request closes https://github.com/coder/internal/issues/513
2025-04-14 15:34:50 +02:00
Spike Curtis 73f5af82ad test: fix TestAgent_Lifecycle/ShutdownScriptOnce to wait for stats (#17387)
fixes: https://github.com/coder/internal/issues/576

TestAgent_Lifecycle/ShutdownScriptOnce hits error logs which cause test
failures. These logs are legit errors and have to do with shutting down
the agent before it has fully come up.

This PR changes the test to wait for the agent to send stats (a good
indicator that it's fully up, and beyond the errors that have triggered
test failures in past) before closing it.
2025-04-14 12:20:50 +00:00
Spike Curtis d8fcb062bc chore: add logging for coderdtest server lifecycle (#17376)
regarding https://github.com/coder/internal/issues/581

Adds logging around the lifecyle of the coderd HTTP server.
2025-04-14 16:15:06 +04:00
Edward Angert 34752fa148 docs: add note about sign in with GitHub button should be hidden when flow is disabled (#17367)
Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-04-14 17:03:25 +05:00
dependabot[bot] 1c040edec4 chore: bump vite from 5.4.17 to 5.4.18 in /site (#17385)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite)
from 5.4.17 to 5.4.18.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/releases">vite's
releases</a>.</em></p>
<blockquote>
<h2>v5.4.18</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.18/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/blob/v5.4.18/packages/vite/CHANGELOG.md">vite's
changelog</a>.</em></p>
<blockquote>
<h2><!-- raw HTML omitted -->5.4.18 (2025-04-10)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19830">#19830</a>,
reject requests with <code>#</code> in request-target (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19831">#19831</a>)
(<a
href="https://github.com/vitejs/vite/commit/823675baff2bd6809c74ba2d9acca0327923a54f">823675b</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19830">#19830</a>
<a
href="https://redirect.github.com/vitejs/vite/issues/19831">#19831</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/vitejs/vite/commit/731b77d19d36f5682a5441b49cb2f6473389ad99"><code>731b77d</code></a>
release: v5.4.18</li>
<li><a
href="https://github.com/vitejs/vite/commit/823675baff2bd6809c74ba2d9acca0327923a54f"><code>823675b</code></a>
fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19830">#19830</a>,
reject requests with <code>#</code> in request-target (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19831">#19831</a>)</li>
<li>See full diff in <a
href="https://github.com/vitejs/vite/commits/v5.4.18/packages/vite">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=vite&package-manager=npm_and_yarn&previous-version=5.4.17&new-version=5.4.18)](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)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/coder/coder/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-14 12:02:26 +00:00
dependabot[bot] f75d01fd58 chore: bump github.com/gohugoio/hugo from 0.143.0 to 0.146.3 (#17384)
Bumps [github.com/gohugoio/hugo](https://github.com/gohugoio/hugo) from
0.143.0 to 0.146.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/gohugoio/hugo/releases">github.com/gohugoio/hugo's
releases</a>.</em></p>
<blockquote>
<h2>v0.146.3</h2>
<h2>What's Changed</h2>
<ul>
<li>tpl: Make any layout set in front matter higher priority 30b9c19c7
<a href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13588">#13588</a></li>
<li>tpl: Fix it so embedded render-codeblock-goat is used even if custom
render-codeblock exists c8710625b <a
href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13595">#13595</a></li>
</ul>
<h2>v0.146.2</h2>
<h2>What's Changed</h2>
<ul>
<li>tpl: Fix codeblock hook resolve issue d1c394442 <a
href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13593">#13593</a></li>
<li>tpl: Fix legacy section mappings 1074e0115 <a
href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13584">#13584</a></li>
<li>tpl: Resolve layouts/all.html for all html output formats c19f1f236
<a href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13587">#13587</a></li>
<li>tpl: Fix some baseof lookup issues 9221cbca4 <a
href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13583">#13583</a></li>
</ul>
<h2>v0.146.1</h2>
<p>This fixes a regression introduced in <a
href="https://github.com/gohugoio/hugo/releases/tag/v0.146.0">v0.146.0</a>
released earlier today.</p>
<ul>
<li>tpl: Skip dot and temp files inside /layouts 3b9f2a7de <a
href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13579">#13579</a></li>
</ul>
<h2>v0.146.0</h2>
<blockquote>
<p>[!NOTE]
There's a <a
href="https://github.com/gohugoio/hugo/releases/tag/v0.146.1">v0.146.1</a>
bug fix release that fixes a regression introduced in this release.</p>
</blockquote>
<p>The big new thing in this release is a fully refreshed template
system – simpler and much better. We're working on the updated
documentation for this, but see <a
href="https://redirect.github.com/gohugoio/hugo/pull/13541">this
issue</a> for some more information. We have gone to great lengths to
make this as backwards compatible as possible, but make sure you test
your site before going live with this new version. This version also
comes with a full dependency refresh and some useful new template
funcs:</p>
<ul>
<li><a
href="https://gohugo.io/functions/templates/current/">templates.Current</a>:
Info about the current executing template and its call stack. Very
useful for debugging.</li>
<li><a href="https://gohugo.io/functions/time/in/">time.In</a>: Returns
the given date/time as represented in the specified IANA time zone.</li>
</ul>
<h2>Bug fixes</h2>
<ul>
<li>tpl/tplimpl: Fix full screen option in vimeo and youtube shortcodes
6f14dbe24 <a
href="https://github.com/jmooring"><code>@​jmooring</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13531">#13531</a></li>
</ul>
<h2>Improvements</h2>
<ul>
<li>tpl: Warn and skip non-hook templates inside /layouts/_markup
383dd82f9 <a href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13577">#13577</a></li>
<li>tpl: Add a partial lookup cache 208a0de6c <a
href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13571">#13571</a></li>
<li>tpl: Add templates.Current d4c6dd16b <a
href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13571">#13571</a></li>
<li>commands/new: Improve theme creation 24ac6a9de <a
href="https://github.com/jmooring"><code>@​jmooring</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13489">#13489</a>
<a
href="https://redirect.github.com/gohugoio/hugo/issues/13544">#13544</a></li>
<li>tpl/tplimpl: Update embedded pagination template 1e0084248 <a
href="https://github.com/jmooring"><code>@​jmooring</code></a></li>
<li>Reimplement and simplify Hugo's template system 83cfdd78c <a
href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13541">#13541</a>
<a
href="https://redirect.github.com/gohugoio/hugo/issues/13545">#13545</a>
<a
href="https://redirect.github.com/gohugoio/hugo/issues/13515">#13515</a>
<a
href="https://redirect.github.com/gohugoio/hugo/issues/7964">#7964</a>
<a
href="https://redirect.github.com/gohugoio/hugo/issues/13365">#13365</a>
<a
href="https://redirect.github.com/gohugoio/hugo/issues/12988">#12988</a>
<a
href="https://redirect.github.com/gohugoio/hugo/issues/4891">#4891</a></li>
<li>config: Use the non-global logger for deprecations when possible
812ea0b32 <a href="https://github.com/bep"><code>@​bep</code></a></li>
<li>tpl/time: Add time.In function 07cbe5701 <a
href="https://github.com/jmooring"><code>@​jmooring</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13548">#13548</a></li>
<li>resources: Add option to silence dependency deprecation warnings
c15ebce2f <a
href="https://github.com/jmooring"><code>@​jmooring</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13530">#13530</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/gohugoio/hugo/commit/05ef8b713a3c091bfca7a3543ed016c64b3c6f88"><code>05ef8b7</code></a>
releaser: Bump versions for release of 0.146.3</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/30b9c19c7691aa3d90854c92a355bd8a248bb5b0"><code>30b9c19</code></a>
tpl: Make any layout set in front matter higher priority</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/c8710625b7c01a0d580f9d896b1fea96ec5463d1"><code>c871062</code></a>
tpl: Fix it so embedded render-codeblock-goat is used even if custom
render-c...</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/53221f88ca57634b1b8afeeeacdc923e25b6617c"><code>53221f8</code></a>
releaser: Prepare repository for 0.147.0-DEV</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/ff3ab192c27fccdd82393f223040874904a44e98"><code>ff3ab19</code></a>
releaser: Bump versions for release of 0.146.2</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/d1c394442be0858b12fb1dbb42a98237e95c6d75"><code>d1c3944</code></a>
tpl: Fix codeblock hook resolve issue</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/1074e011520a82a17524d2e68082e5a04e291c2a"><code>1074e01</code></a>
tpl: Fix legacy section mappings</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/c19f1f2363fe96cfa8b6e4a5b9e5d75886bcff8b"><code>c19f1f2</code></a>
tpl: Resolve layouts/all.html for all html output formats</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/9221cbca496752fb1d06d664871e3d4532f473f5"><code>9221cbc</code></a>
tpl: Fix some baseof lookup issues</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/e3e3f9ae17395220e2c13ddc8afa7000a5a7e21e"><code>e3e3f9a</code></a>
releaser: Prepare repository for 0.147.0-DEV</li>
<li>Additional commits viewable in <a
href="https://github.com/gohugoio/hugo/compare/v0.143.0...v0.146.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/gohugoio/hugo&package-manager=go_modules&previous-version=0.143.0&new-version=0.146.3)](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>
2025-04-14 11:54:47 +00:00
dependabot[bot] 06d707d865 chore: bump github.com/prometheus/client_golang from 1.21.1 to 1.22.0 (#17382)
Bumps
[github.com/prometheus/client_golang](https://github.com/prometheus/client_golang)
from 1.21.1 to 1.22.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/prometheus/client_golang/releases">github.com/prometheus/client_golang's
releases</a>.</em></p>
<blockquote>
<h2>v1.22.0 - 2025-04-07</h2>
<p>⚠️ This release contains potential breaking change if you use
experimental <code>zstd</code> support introduce in <a
href="https://redirect.github.com/prometheus/client_golang/issues/1496">#1496</a>
⚠️</p>
<p>Experimental support for <code>zstd</code> on scrape was added,
controlled by the request <code>Accept-Encoding</code> header.
It was enabled by default since version 1.20, but now you need to add a
blank import to enable it.
The decision to make it opt-in by default was originally made because
the Go standard library was expected to have default zstd support added
soon,
<a
href="https://redirect.github.com/golang/go/issues/62513">golang/go#62513</a>
however, the work took longer than anticipated and it will be postponed
to upcoming major Go versions.</p>
<p>e.g.:</p>
<blockquote>
<pre lang="go"><code>import (
_
&quot;github.com/prometheus/client_golang/prometheus/promhttp/zstd&quot;
)
</code></pre>
</blockquote>
<ul>
<li>[FEATURE] prometheus: Add new CollectorFunc utility <a
href="https://redirect.github.com/prometheus/client_golang/issues/1724">#1724</a></li>
<li>[CHANGE] Minimum required Go version is now 1.22 (we also test
client_golang against latest go version - 1.24) <a
href="https://redirect.github.com/prometheus/client_golang/issues/1738">#1738</a></li>
<li>[FEATURE] api: <code>WithLookbackDelta</code> and
<code>WithStats</code> options have been added to API client. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1743">#1743</a></li>
<li>[CHANGE] ⚠️ promhttp: Isolate zstd support and
klauspost/compress library use to promhttp/zstd package. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1765">#1765</a></li>
</ul>
<!-- raw HTML omitted -->
<ul>
<li>build(deps): bump golang.org/x/sys from 0.28.0 to 0.29.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1720">prometheus/client_golang#1720</a></li>
<li>build(deps): bump google.golang.org/protobuf from 1.36.1 to 1.36.3
by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1719">prometheus/client_golang#1719</a></li>
<li>Update RELEASE.md by <a
href="https://github.com/bwplotka"><code>@​bwplotka</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1721">prometheus/client_golang#1721</a></li>
<li>chore(docs): Add links for the upstream PRs by <a
href="https://github.com/kakkoyun"><code>@​kakkoyun</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1722">prometheus/client_golang#1722</a></li>
<li>Added tips on releasing client and checking with k8s. by <a
href="https://github.com/bwplotka"><code>@​bwplotka</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1723">prometheus/client_golang#1723</a></li>
<li>feat: Add new CollectorFunc utility by <a
href="https://github.com/Saumya40-codes"><code>@​Saumya40-codes</code></a>
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1724">prometheus/client_golang#1724</a></li>
<li>build(deps): bump google.golang.org/protobuf from 1.36.3 to 1.36.4
by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1725">prometheus/client_golang#1725</a></li>
<li>build(deps): bump the github-actions group with 5 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1726">prometheus/client_golang#1726</a></li>
<li>Synchronize common files from prometheus/prometheus by <a
href="https://github.com/prombot"><code>@​prombot</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1727">prometheus/client_golang#1727</a></li>
<li>Synchronize common files from prometheus/prometheus by <a
href="https://github.com/prombot"><code>@​prombot</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1731">prometheus/client_golang#1731</a></li>
<li>build(deps): bump golang.org/x/sys from 0.29.0 to 0.30.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1739">prometheus/client_golang#1739</a></li>
<li>build(deps): bump google.golang.org/protobuf from 1.36.4 to 1.36.5
by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1740">prometheus/client_golang#1740</a></li>
<li>Cleanup dependabot config by <a
href="https://github.com/SuperQ"><code>@​SuperQ</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1741">prometheus/client_golang#1741</a></li>
<li>Upgrade Golang version v1.24 by <a
href="https://github.com/dongjiang1989"><code>@​dongjiang1989</code></a>
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1738">prometheus/client_golang#1738</a></li>
<li>build(deps): bump the github-actions group with 2 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1742">prometheus/client_golang#1742</a></li>
<li>Merging 1.21 release back to main. by <a
href="https://github.com/bwplotka"><code>@​bwplotka</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1744">prometheus/client_golang#1744</a></li>
<li>Synchronize common files from prometheus/prometheus by <a
href="https://github.com/prombot"><code>@​prombot</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1745">prometheus/client_golang#1745</a></li>
<li>Add support for undocumented query options for API by <a
href="https://github.com/mahendrapaipuri"><code>@​mahendrapaipuri</code></a>
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1743">prometheus/client_golang#1743</a></li>
<li>exp/api: Add experimental exp module; Add remote API with write
client and handler. by <a
href="https://github.com/bwplotka"><code>@​bwplotka</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1658">prometheus/client_golang#1658</a></li>
<li>exp/api: Add accepted msg type validation to handler by <a
href="https://github.com/saswatamcode"><code>@​saswatamcode</code></a>
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1750">prometheus/client_golang#1750</a></li>
<li>build(deps): bump the github-actions group with 5 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1751">prometheus/client_golang#1751</a></li>
<li>build(deps): bump github.com/klauspost/compress from 1.17.11 to
1.18.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1752">prometheus/client_golang#1752</a></li>
<li>build(deps): bump github.com/google/go-cmp from 0.6.0 to 0.7.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1753">prometheus/client_golang#1753</a></li>
<li>exp: Reset snappy buf by <a
href="https://github.com/saswatamcode"><code>@​saswatamcode</code></a>
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1756">prometheus/client_golang#1756</a></li>
<li>Merge release 1.21.1 to main. by <a
href="https://github.com/bwplotka"><code>@​bwplotka</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1762">prometheus/client_golang#1762</a></li>
<li>exp: Add dependabot config by <a
href="https://github.com/saswatamcode"><code>@​saswatamcode</code></a>
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1754">prometheus/client_golang#1754</a></li>
<li>build(deps): bump peter-evans/create-pull-request from 7.0.7 to
7.0.8 in the github-actions group by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1764">prometheus/client_golang#1764</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md">github.com/prometheus/client_golang's
changelog</a>.</em></p>
<blockquote>
<h2>1.22.0 / 2025-04-07</h2>
<p>⚠️ This release contains potential breaking change if you use
experimental <code>zstd</code> support introduce in <a
href="https://redirect.github.com/prometheus/client_golang/issues/1496">#1496</a>
⚠️</p>
<p>Experimental support for <code>zstd</code> on scrape was added,
controlled by the request <code>Accept-Encoding</code> header.
It was enabled by default since version 1.20, but now you need to add a
blank import to enable it.
The decision to make it opt-in by default was originally made because
the Go standard library was expected to have default zstd support added
soon,
<a
href="https://redirect.github.com/golang/go/issues/62513">golang/go#62513</a>
however, the work took longer than anticipated and it will be postponed
to upcoming major Go versions.</p>
<p>e.g.:</p>
<blockquote>
<pre lang="go"><code>import (
_
&quot;github.com/prometheus/client_golang/prometheus/promhttp/zstd&quot;
)
</code></pre>
</blockquote>
<ul>
<li>[FEATURE] prometheus: Add new CollectorFunc utility <a
href="https://redirect.github.com/prometheus/client_golang/issues/1724">#1724</a></li>
<li>[CHANGE] Minimum required Go version is now 1.22 (we also test
client_golang against latest go version - 1.24) <a
href="https://redirect.github.com/prometheus/client_golang/issues/1738">#1738</a></li>
<li>[FEATURE] api: <code>WithLookbackDelta</code> and
<code>WithStats</code> options have been added to API client. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1743">#1743</a></li>
<li>[CHANGE] ⚠️ promhttp: Isolate zstd support and
klauspost/compress library use to promhttp/zstd package. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1765">#1765</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/prometheus/client_golang/commit/d50be25511d790f4c166d68ce7d046c2977d148b"><code>d50be25</code></a>
Cut 1.22.0 (<a
href="https://redirect.github.com/prometheus/client_golang/issues/1793">#1793</a>)</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/1043db7cb8735186b341bbff6ae45d7ff56018dd"><code>1043db7</code></a>
Cut 1.22.0-rc.0 (<a
href="https://redirect.github.com/prometheus/client_golang/issues/1768">#1768</a>)</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/e575c9c04e40fe0784d4fee7f1f56c1a66ef090d"><code>e575c9c</code></a>
promhttp: Isolate zstd support and klauspost/compress library use to
promhttp...</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/f2276aa7d4b6e6526e0011762d0e4070513cf9cd"><code>f2276aa</code></a>
Merge pull request <a
href="https://redirect.github.com/prometheus/client_golang/issues/1764">#1764</a>
from prometheus/dependabot/github_actions/github-act...</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/9df772cc5f399a2946a9158e57fd0aff66daf7d1"><code>9df772c</code></a>
build(deps): bump peter-evans/create-pull-request</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/a3548c5aa811a0a52d1d723c3dfb3b01930481fb"><code>a3548c5</code></a>
Merge pull request <a
href="https://redirect.github.com/prometheus/client_golang/issues/1754">#1754</a>
from saswatamcode/exp-eh</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/60fd2b0490db6e7c74e623651031feae93c7ebc1"><code>60fd2b0</code></a>
Remove go.work file for now</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/8f9d0de6893dd7a470cdb1cffc5d98d1b5d7b50d"><code>8f9d0de</code></a>
exp: Add dependabot config</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/c5cf981312d510414c209927e4f9e888d6776b5c"><code>c5cf981</code></a>
Merge pull request <a
href="https://redirect.github.com/prometheus/client_golang/issues/1762">#1762</a>
from prometheus/release-1.21</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/e84c30512a658de7fdccce84b434c9a5696ec5af"><code>e84c305</code></a>
exp: Reset snappy buf (<a
href="https://redirect.github.com/prometheus/client_golang/issues/1756">#1756</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/prometheus/client_golang/compare/v1.21.1...v1.22.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/prometheus/client_golang&package-manager=go_modules&previous-version=1.21.1&new-version=1.22.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>
2025-04-14 11:54:29 +00:00
dependabot[bot] b6ff6b160a chore: bump github.com/charmbracelet/bubbles from 0.20.0 to 0.21.0 (#17381)
Bumps
[github.com/charmbracelet/bubbles](https://github.com/charmbracelet/bubbles)
from 0.20.0 to 0.21.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/charmbracelet/bubbles/releases">github.com/charmbracelet/bubbles's
releases</a>.</em></p>
<blockquote>
<h2>v0.21.0</h2>
<h2>Viewport improvements</h2>
<p>Finally, <code>viewport</code> finally has <em>horizontal
scrolling</em> ![^v1]
To enable it, use <code>SetHorizontalStep</code> (default in v2 will be
<code>6</code>).</p>
<p>You can also scroll manually with <code>ScrollLeft</code> and
<code>ScrollRight</code>, and use
<code>SetXOffset</code> to scroll to a specific position (or
<code>0</code> to reset):</p>
<pre lang="go"><code>vp := viewport.New()
vp.SetHorizontalStep(10) // how many columns to scroll on each key press
vp.ScrollRight(30)       // pan 30 columns to the right!
vp.ScrollLeft(10)        // pan 10 columns to the left!
vp.SetXOffset(0)         // back to the left edge
</code></pre>
<p>To make the API more consistent, vertical scroll functions were also
renamed,
and the old ones were deprecated (and will be removed in v2):</p>
<pre lang="go"><code>// Scroll n lines up/down:
func (m Model) LineUp(int)     // deprecated
func (m Model) ScrollUp(int)   // new!
func (m Model) LineDown(int)   // deprecated
func (m Model) ScrollDown(int) // new!
<p>// Scroll half page up/down:
func (m Model) HalfViewUp() []string   // deprecated
func (m Model) HalfPageUp() []string   // new!
func (m Model) HalfViewDown() []string // deprecated
func (m Model) HalfPageDown() []string // new!</p>
<p>// Scroll a full page up/down:
func (m Model) ViewUp(int) []string   // deprecated
func (m Model) PageUp(int) []string   // new!
func (m Model) ViewDown(int) []string // deprecated
func (m Model) PageDown(int) []string // new!
</code></pre></p>
<blockquote>
<p>[!NOTE]
In v2, these functions will not return <code>lines []string</code>
anymore, as it is no
longer needed due to <code>HighPerformanceRendering</code> being
deprecated as well.</p>
</blockquote>
<h2>Other improvements</h2>
<p>The <code>list</code> bubble got a couple of new functions:
<code>SetFilterText</code>,
<code>SetFilterState</code>, and <code>GlobalIndex</code> - which you
can use to get the index of the
item in the unfiltered, original item list.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/charmbracelet/bubbles/commit/8b55efb2944ed8eb81df685f8dcfabbbf8897698"><code>8b55efb</code></a>
fix(textarea): placeholder with chinese chars (<a
href="https://redirect.github.com/charmbracelet/bubbles/issues/767">#767</a>)</li>
<li><a
href="https://github.com/charmbracelet/bubbles/commit/bd2a5b0c6a7abc66b8a009d2aded233e6ba02fa4"><code>bd2a5b0</code></a>
fix: golangci-lint 2 fixes (<a
href="https://redirect.github.com/charmbracelet/bubbles/issues/769">#769</a>)</li>
<li><a
href="https://github.com/charmbracelet/bubbles/commit/cce848148cbea9e1bc5ca7d2c3d1ef89702db0e4"><code>cce8481</code></a>
ci: sync golangci-lint config (<a
href="https://redirect.github.com/charmbracelet/bubbles/issues/770">#770</a>)</li>
<li><a
href="https://github.com/charmbracelet/bubbles/commit/ea344ab907bddf5e8f71cd73b9583b070e8f1b2f"><code>ea344ab</code></a>
feat(viewport): horizontal scroll with mouse wheel (<a
href="https://redirect.github.com/charmbracelet/bubbles/issues/761">#761</a>)</li>
<li><a
href="https://github.com/charmbracelet/bubbles/commit/39668ec6291e1fc3e574f30c650e1ba0801e1f6d"><code>39668ec</code></a>
fix(viewport): normalize method names (<a
href="https://redirect.github.com/charmbracelet/bubbles/issues/763">#763</a>)</li>
<li><a
href="https://github.com/charmbracelet/bubbles/commit/f2434c374bd0f55ac0d5b3e8261161b97ea41a30"><code>f2434c3</code></a>
Revert &quot;fix(viewport): normalize method names&quot;</li>
<li><a
href="https://github.com/charmbracelet/bubbles/commit/c7f889e364e15dc5b08a8c799e80164031847ab9"><code>c7f889e</code></a>
fix(viewport): normalize method names</li>
<li><a
href="https://github.com/charmbracelet/bubbles/commit/9e5365e0ec0c4005efc7a3cc47f67941840e4144"><code>9e5365e</code></a>
docs: add example for ValidateFunc (<a
href="https://redirect.github.com/charmbracelet/bubbles/issues/705">#705</a>)</li>
<li><a
href="https://github.com/charmbracelet/bubbles/commit/c814ac75c3b4be111bf163c07655971543be33f9"><code>c814ac7</code></a>
chore(deps): bump github.com/charmbracelet/lipgloss from 1.0.0 to 1.1.0
(<a
href="https://redirect.github.com/charmbracelet/bubbles/issues/751">#751</a>)</li>
<li><a
href="https://github.com/charmbracelet/bubbles/commit/3befcccf8702cb29ad196acc10b4899aa16b47f0"><code>3befccc</code></a>
chore(deps): bump github.com/muesli/termenv from 0.15.2 to 0.16.0 (<a
href="https://redirect.github.com/charmbracelet/bubbles/issues/740">#740</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/charmbracelet/bubbles/compare/v0.20.0...v0.21.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/charmbracelet/bubbles&package-manager=go_modules&previous-version=0.20.0&new-version=0.21.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>
2025-04-14 11:53:56 +00:00
dependabot[bot] 199c408dd9 chore: bump the x group with 2 updates (#17379)
Bumps the x group with 2 updates:
[golang.org/x/net](https://github.com/golang/net) and
[golang.org/x/tools](https://github.com/golang/tools).

Updates `golang.org/x/net` from 0.38.0 to 0.39.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/net/commit/b8d88774daf2a7cf137dad5173fc9bb981fc18fb"><code>b8d8877</code></a>
go.mod: update golang.org/x dependencies</li>
<li>See full diff in <a
href="https://github.com/golang/net/compare/v0.38.0...v0.39.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `golang.org/x/tools` from 0.31.0 to 0.32.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/tools/commit/456962ef0d65798b244374a272fb19b7d9723b62"><code>456962e</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="https://github.com/golang/tools/commit/5916e3cbd8b65f73c18253607fa0b696fc5b9da6"><code>5916e3c</code></a>
internal/tokeninternal: AddExistingFiles: tweaks for proposal</li>
<li><a
href="https://github.com/golang/tools/commit/9a1fbbdb530258f2c0db9c411aecf399d1ec256b"><code>9a1fbbd</code></a>
internal/typesinternal: change Used to UsedIdent</li>
<li><a
href="https://github.com/golang/tools/commit/e73cd5af773602fdbc6cab94bdc0dc38abf828ab"><code>e73cd5a</code></a>
gopls/internal/golang: implement dynamicFuncCallType with
typeutil.ClassifyCall</li>
<li><a
href="https://github.com/golang/tools/commit/11a9b3f89dc9e5a2e6d738d243258495a9c53005"><code>11a9b3f</code></a>
gopls/internal/server: fix event labels after the big rename</li>
<li><a
href="https://github.com/golang/tools/commit/3e7f74d009150bf5e66483f3759d8c59f50e873d"><code>3e7f74d</code></a>
go/types/typeutil: used doesn't need Info.Selections</li>
<li><a
href="https://github.com/golang/tools/commit/b97074b9c8ebe7cce7db7be133120bc966f9c33f"><code>b97074b</code></a>
internal/gofix: fix URLs</li>
<li><a
href="https://github.com/golang/tools/commit/e850fe1872cee508a221a3efd67dd2901deddc4c"><code>e850fe1</code></a>
gopls/internal/golang: CodeAction: place gopls doc as the last
action</li>
<li><a
href="https://github.com/golang/tools/commit/b948add7e7e4926ce52fb3a01e15c18e4558c252"><code>b948add</code></a>
internal/gofix: move from gopls/internal/analysis/gofix</li>
<li><a
href="https://github.com/golang/tools/commit/b437eff8291cf46efe66e499f4c0ac5c8df770d5"><code>b437eff</code></a>
go/types/typeutil: implement Callee and StaticCallee with Used</li>
<li>Additional commits viewable in <a
href="https://github.com/golang/tools/compare/v0.31.0...v0.32.0">compare
view</a></li>
</ul>
</details>
<br />


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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-14 11:53:37 +00:00
dependabot[bot] e2ebc9d549 chore: bump github.com/go-jose/go-jose/v4 from 4.0.5 to 4.1.0 (#17383)
Bumps
[github.com/go-jose/go-jose/v4](https://github.com/go-jose/go-jose) from
4.0.5 to 4.1.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/go-jose/go-jose/releases">github.com/go-jose/go-jose/v4's
releases</a>.</em></p>
<blockquote>
<h2>v4.1.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Document <code>signatureAlgorithms</code> argument by <a
href="https://github.com/tgeoghegan"><code>@​tgeoghegan</code></a> in <a
href="https://redirect.github.com/go-jose/go-jose/pull/163">go-jose/go-jose#163</a></li>
<li>Add custom error for unsupported JWS signature algorithms by <a
href="https://github.com/beautifulentropy"><code>@​beautifulentropy</code></a>
in <a
href="https://redirect.github.com/go-jose/go-jose/pull/181">go-jose/go-jose#181</a></li>
<li>use stdlib pbkdf2 package on go 1.24 by <a
href="https://github.com/kruskall"><code>@​kruskall</code></a> in <a
href="https://redirect.github.com/go-jose/go-jose/pull/180">go-jose/go-jose#180</a></li>
<li>The minimum supported Go version is now 1.24</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/kruskall"><code>@​kruskall</code></a>
made their first contribution in <a
href="https://redirect.github.com/go-jose/go-jose/pull/180">go-jose/go-jose#180</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/go-jose/go-jose/compare/v4.0.5...v4.1.0">https://github.com/go-jose/go-jose/compare/v4.0.5...v4.1.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/go-jose/go-jose/commit/4f005daa10d11cacd7376358a5fe5d0c1c0ee487"><code>4f005da</code></a>
Add changelog entry for <a
href="https://redirect.github.com/go-jose/go-jose/issues/181">#181</a>
(<a
href="https://redirect.github.com/go-jose/go-jose/issues/183">#183</a>)</li>
<li><a
href="https://github.com/go-jose/go-jose/commit/fed5f4a89ce20a6c826bf3d6871c47c22b280178"><code>fed5f4a</code></a>
feat: use stdlib pbkdf2 package on go 1.24 (<a
href="https://redirect.github.com/go-jose/go-jose/issues/180">#180</a>)</li>
<li><a
href="https://github.com/go-jose/go-jose/commit/6e50d10239d754e5544fcc28b79b78b87a177a4c"><code>6e50d10</code></a>
Add custom error for unsupported JWS signature algorithms (<a
href="https://redirect.github.com/go-jose/go-jose/issues/181">#181</a>)</li>
<li><a
href="https://github.com/go-jose/go-jose/commit/0e4ab6846ac17cad0096f6391736270a5c4f630f"><code>0e4ab68</code></a>
Bump CI Go to 1.23.x and 1.24.x (<a
href="https://redirect.github.com/go-jose/go-jose/issues/177">#177</a>)</li>
<li><a
href="https://github.com/go-jose/go-jose/commit/9dc538453357899787e4695857167e75f1c16745"><code>9dc5384</code></a>
Document <code>signatureAlgorithms</code> argument (<a
href="https://redirect.github.com/go-jose/go-jose/issues/163">#163</a>)</li>
<li><a
href="https://github.com/go-jose/go-jose/commit/783e3f5b2d4b8c3c3fd19e739306cb9db1ced8bc"><code>783e3f5</code></a>
Bump github.com/google/go-cmp from 0.6.0 to 0.7.0 (<a
href="https://redirect.github.com/go-jose/go-jose/issues/165">#165</a>)</li>
<li>See full diff in <a
href="https://github.com/go-jose/go-jose/compare/v4.0.5...v4.1.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/go-jose/go-jose/v4&package-manager=go_modules&previous-version=4.0.5&new-version=4.1.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>
2025-04-14 11:53:27 +00:00
Spike Curtis e5ce3824ca feat: add IsCoderConnectRunning to workspacesdk (#17361)
Adds `IsCoderConnectRunning()` to the workspacesdk. This will support the `coder` CLI being able to use CoderConnect when it's running.

part of #16828
2025-04-14 09:47:46 +04:00
Steven Masley 39b9d23d96 chore: remove nullable list elements in ts typegen (#17369)
Backend will not send partially null slices.
2025-04-11 15:49:18 -05:00
Jon Ayers c06ef7c1eb chore!: remove JFrog integration (#17353)
- Removes displaying XRay scan results in the dashboard. I'm not sure
  anyone was even using this integration so it's just debt for us to
  maintain. We can open up a separate issue to get rid of the db tables
  once we know for sure that we haven't broken anyone.
2025-04-11 14:45:21 -04:00
Steven Masley 15584e69ef chore: fixup typegen for preview types (#17339)
Preview types override the json marshal behavior.
2025-04-11 13:21:46 -05:00
Cian Johnston 7b0422b49b fix(codersdk/toolsdk): fix tool schemata (#17365)
Fixes two issues with the MCP server:
- Ensures we have a non-null schema, as the following schema was making
claude-code unhappy:

 
```
        "inputSchema": { "type": "object", "properties": null },
```


- Skip adding the coder_report_task tool if an agent client is not
available. Otherwise the agent may try to report tasks and get confused.
2025-04-11 18:58:17 +01:00
Edward Angert 6330b0d545 docs: add steps to pre-install JetBrains IDE backend (#15962)
closes #13207 


[preview](https://coder.com/docs/@13207-preinstall-jetbrains/user-guides/workspace-access/jetbrains)

---------

Co-authored-by: M Atif Ali <atif@coder.com>
Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-04-11 11:55:04 -04:00
Jaayden Halko 6a6e1ec50c feat: add support for icons and warning variant in Badge component (#17350)
<img width="172" alt="Screenshot 2025-04-10 at 23 11 32"
src="https://github.com/user-attachments/assets/2556feb1-bf49-4044-90fd-6ac15582c258"
/>
2025-04-11 10:16:37 -04:00
Spike Curtis 9e2af3e127 feat: add configurable DNS match domain for tailnet connections (#17336)
Use the hostname suffix to set the DNS match domain when creating a Tailnet as part of the vpn `Tunnel`.

part of: #16828
2025-04-11 15:00:48 +04:00
Spike Curtis 69aa365169 fix: remove provisioner/terraform/testdata/resources/version.txt (#17357)
Removes `provisioner/terraform/testdata/resources/version.txt`

Pretty sure Claude hallucinated it into existence in #17035 based on the similar `provisioner/terraform/testdata/version.txt`
2025-04-11 14:46:32 +04:00
Cian Johnston 1235550637 feat(codersdk): add toolsdk and replace existing mcp server tool impl (#17343)
- Refactors existing `mcp` package to use `kylecarbs/aisdk-go` and moves
to `codersdk/toolsdk` package.
- Updates existing MCP server implementation to use `codersdk/toolsdk`

Co-authored-by: Kyle Carberry <kyle@coder.com>
2025-04-11 10:24:45 +01:00
Spike Curtis 2c573dc023 feat: vpn uses WorkspaceHostnameSuffix for DNS names (#17335)
Use the hostname suffix to set DNS names as programmed into the DNS service and returned by the vpn `Tunnel`.

part of: #16828
2025-04-11 13:24:20 +04:00
Spike Curtis 12dc086628 feat: return hostname suffix on AgentConnectionInfo (#17334)
Adds the Hostname Suffix to `AgentConnectionInfo` --- the VPN provider will use it to control the suffix for DNS hostnames.

part of: #16828
2025-04-11 13:09:51 +04:00
Mathias Fredriksson 60fbe675ed refactor(agent/agentcontainers): implement API service (#17340)
This refactor improves separation of API and containers with minimal
changes to logic.

Highlights:

- Routes are now defined in `agentcontainers` package
- Handler renamed to API
- API lazy init was moved into NewAPI
- Tests that don't need to be internal were made external
2025-04-11 11:41:13 +03:00
Ethan 7bca3e237a chore: update tailscale (#17327)
Relates to https://github.com/coder/internal/issues/466

Brings in https://github.com/coder/tailscale/pull/70
2025-04-11 14:03:00 +10:00
Ethan 3c1cb5d05a chore: add generic DNS record for checking if Coder Connect is running (#17298)
Closes https://github.com/coder/internal/issues/466

```
$ dig -6 @fd60:627a:a42b::53 is.coder--connect--enabled--right--now.coder AAAA

; <<>> DiG 9.10.6 <<>> -6 @fd60:627a:a42b::53 is.coder--connect--enabled--right--now.coder AAAA
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62390
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;is.coder--connect--enabled--right--now.coder. IN AAAA

;; ANSWER SECTION:
is.coder--connect--enabled--right--now.coder. 2	IN AAAA	fd60:627a:a42b::53

;; Query time: 3 msec
;; SERVER: fd60:627a:a42b::53#53(fd60:627a:a42b::53)
;; WHEN: Wed Apr 09 16:59:18 AEST 2025
;; MSG SIZE  rcvd: 134
```

Hostname considerations:
- Workspace names, usernames, and agent names can't have double hyphens, so this name can't conflict with a real Coder Connect hostname.
- Components can't start or end with hyphens according to [RFC 952](https://www.rfc-editor.org/rfc/rfc952.html)
- DNS records can't have hyphens in the 3rd and 4th positions, as to not conflict with IDNs https://datatracker.ietf.org/doc/html/rfc5891
2025-04-11 13:59:25 +10:00
Dean Sheather e7e47537c9 chore: fix gpg forwarding test (#17355) 2025-04-11 03:33:53 +00:00
ケイラ 0472a88c2e chore: update trivy (#17347) 2025-04-10 15:19:39 -06:00
dependabot[bot] a451ea73c3 chore: bump github.com/mark3labs/mcp-go from 0.17.0 to 0.18.0 (#17273)
Bumps [github.com/mark3labs/mcp-go](https://github.com/mark3labs/mcp-go)
from 0.17.0 to 0.18.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mark3labs/mcp-go/releases">github.com/mark3labs/mcp-go's
releases</a>.</em></p>
<blockquote>
<h2>Release v0.18.0</h2>
<h2>What's Changed</h2>
<ul>
<li>feat: add NewToolResultError by <a
href="https://github.com/daimatz"><code>@​daimatz</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/87">mark3labs/mcp-go#87</a></li>
<li>refactor(stdio): improve stdio server message handling by <a
href="https://github.com/winterfx"><code>@​winterfx</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/73">mark3labs/mcp-go#73</a></li>
<li>Add Stderr() Method to StdioMCPClient by <a
href="https://github.com/mashiike"><code>@​mashiike</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/72">mark3labs/mcp-go#72</a></li>
<li>fix java mcp message endpoint by <a
href="https://github.com/a67793581"><code>@​a67793581</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/75">mark3labs/mcp-go#75</a></li>
<li>simplify required field handling in inputSchema by <a
href="https://github.com/yikakia"><code>@​yikakia</code></a> in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/82">mark3labs/mcp-go#82</a></li>
<li>make context available in hooks, add OnRegisterSession hook by <a
href="https://github.com/zahmadsaleem"><code>@​zahmadsaleem</code></a>
in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/92">mark3labs/mcp-go#92</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/daimatz"><code>@​daimatz</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/87">mark3labs/mcp-go#87</a></li>
<li><a href="https://github.com/winterfx"><code>@​winterfx</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/73">mark3labs/mcp-go#73</a></li>
<li><a href="https://github.com/mashiike"><code>@​mashiike</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/72">mark3labs/mcp-go#72</a></li>
<li><a href="https://github.com/yikakia"><code>@​yikakia</code></a> made
their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/82">mark3labs/mcp-go#82</a></li>
<li><a
href="https://github.com/zahmadsaleem"><code>@​zahmadsaleem</code></a>
made their first contribution in <a
href="https://redirect.github.com/mark3labs/mcp-go/pull/92">mark3labs/mcp-go#92</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/mark3labs/mcp-go/compare/v0.17.0...v0.18.0">https://github.com/mark3labs/mcp-go/compare/v0.17.0...v0.18.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/a0e968a752722d87063eb36ea0d55938e752f6dd"><code>a0e968a</code></a>
feat: add context to hooks (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/92">#92</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/607d6c29bb8f56bc30e3154e99e58da1db78fcb9"><code>607d6c2</code></a>
simplify required field handling in inputSchema (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/82">#82</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/6d840a447783c1d342b673d8d06069b96b362a1b"><code>6d840a4</code></a>
fix java mcp message endpoint (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/75">#75</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/051cda5533c70021240e7eae61c0a379511abda7"><code>051cda5</code></a>
Add Stderr() Method to StdioMCPClient (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/72">#72</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/2ea0c97e4a15b5a6bf1c354cd3734a6ed8fbb194"><code>2ea0c97</code></a>
refactor(stdio): improve stdio server message handling (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/73">#73</a>)</li>
<li><a
href="https://github.com/mark3labs/mcp-go/commit/ec9e8a21fee1bbb7d392a14c1cb2463398eaab7b"><code>ec9e8a2</code></a>
add NewToolResultError (<a
href="https://redirect.github.com/mark3labs/mcp-go/issues/87">#87</a>)</li>
<li>See full diff in <a
href="https://github.com/mark3labs/mcp-go/compare/v0.17.0...v0.18.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/mark3labs/mcp-go&package-manager=go_modules&previous-version=0.17.0&new-version=0.18.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>
2025-04-10 20:22:57 +00:00
Edward Angert 9978eb63c4 docs: rename coder-ai directory to avoid wildcard removal (#17348)
to something that doesn't get caught in a wildcard redirect

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-04-10 16:21:20 -04:00
ケイラ 859dd2fc3f feat: add dynamic parameters websocket endpoint (#17165) 2025-04-10 14:08:50 -06:00
Edward Angert c9682cb6cf docs: hotfix rename coder-ai readme to index (#17346)
[preview](https://coder.com/docs/@hotfix-ai-coder-top/)

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-04-10 19:33:46 +00:00
Edward Angert e5ba8b7912 docs: update aws instance recommendations (#17344)
from @jatcod3r on Slack:

> for the AWS recs on our [validated
arch](https://coder.com/docs/admin/infrastructure/validated-architectures/1k-users)
docs, should we be referencing customers to use non-T type instances?
> Once you've exceeded EC2's [CPU
credits](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html)
Coder starts performing poorly.
> We do suggest to [scale for peak
demand](https://coder.com/docs/tutorials/best-practices/scale-coder#scaling-3),
so does recommending something from the
[cpu](https://aws.amazon.com/ec2/instance-types/#Compute_Optimized) or
[memory
optimized](https://aws.amazon.com/ec2/instance-types/#Memory_Optimized)
types make sense?


[preview](https://coder.com/docs/@aws-ec2-arch/admin/infrastructure/validated-architectures#aws-instance-types)

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-04-10 14:35:29 -04:00
Edward Angert ed20bab3e0 docs: move AI-agent docs out of tutorials and into a top-level section (#17231)
redirects in: https://github.com/coder/coder.com/pull/873

[preview](https://coder.com/docs/@move-ai-agents-up-1/coder-ai)

- [x] icon
- [x] shorten ~Modify or truncate the current~ title ~to reduce its
length for improved readability, conciseness, or formatting
consistency.~
- [x] Best practices & adding tools via MCP - edit title, desc, headings

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-04-10 14:21:29 -04:00
Cian Johnston 1e0051a9a2 feat(testutil): add GetRandomNameHyphenated (#17342)
This started coming up more often for me, so time for a test helper!

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-04-10 19:08:38 +01:00
ケイラ 46d4b28384 chore: add x-authz-checks debug header when running in dev mode (#16873) 2025-04-10 11:36:27 -06:00
Mathias Fredriksson 25fb34cabe feat(agent): implement recreate for devcontainers (#17308)
This change implements an interface for running `@devcontainers/cli up`
and an API endpoint on the agent for triggering recreate for a running
devcontainer.

A couple of limitations:

1. Synchronous HTTP request, meaning the browser might choose to time it
out before it's done => no result/error (and devcontainer cli command
probably gets killed via ctx cancel).
2. Logs are only written to agent logs via slog, not as a "script" in
the UI.

Both 1 and 2 will be improved in future refactors.

Fixes coder/internal#481
Fixes coder/internal#482
2025-04-10 16:16:16 +03:00
Danielle Maywood 6dd1056025 feat(coderd/notifications): group workspace build failure report (#17306)
Closes https://github.com/coder/coder/issues/15745

Instead of sending X many reports to a single template admin, we instead
send only 1.
2025-04-10 13:32:19 +01:00
Mathias Fredriksson 33b9487899 fix(agent/agentcontainers/dcspec): generate unmarshalers and add tests (#17330)
This change allows proper unmarshaling of `devcontainer.json` and will
no longer break EnvInfoer or the Web Terminal.

Fixes coder/internal#556
2025-04-10 12:10:58 +00:00
Spike Curtis c1816e3674 fix(agent): fix deadlock if closed while starting listeners (#17329)
fixes #17328

Fixes a deadlock if we close the Agent in the middle of starting listeners on the tailnet.
2025-04-10 12:46:19 +04:00
Jon Ayers 8faaa14820 chore: update Terraform to 1.11.4 (#17323)
Co-authored-by: Claude <noreply@anthropic.com>
2025-04-09 22:50:15 -04:00
ケイラ f2fb0caf46 chore: remove usage of github.com/go-chi/render (#17324) 2025-04-09 15:35:10 -06:00
Steven Masley 0b58798a1a feat: remove site wide perms from creating a workspace (#17296)
Creating a workspace required `read` on site wide `user`. 
Only organization permissions should be required.
2025-04-09 14:35:43 -05:00
Michael Smith a03a54dd14 fix(site): resolve all Array.prototype.toSorted and Array.prototype.sort bugs (#17307)
Closes https://github.com/coder/coder/issues/16759

## Changes made
- Replaced all instances of `Array.prototype.toSorted` with
`Array.prototype.sort` to provide better support for older browsers
- Updated all `Array.prototype.sort` calls where necessary to remove
risks of mutation render bugs
- Refactored some code (moved things around, added comments) to make it
more clear that certain `.sort` calls are harmless and don't have any
risks
2025-04-09 15:17:02 -04:00
Edward Angert d17bcc727b docs: update note markdown in parameters (#17318)
Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-04-09 18:53:20 +00:00
Mathias Fredriksson 98c05b3568 test(agent/agentssh): fix macos signal flake during close (#17313)
Fixes coder/internal#558
2025-04-09 20:28:32 +03:00
Edward Angert 109e73bf97 docs: add details on external authentication priority (#17164)
## Issue

Closes #16875 

Clarify how Coder authentication works with Git providers, particularly
the order of authentication methods used.

## Changes Made

I've updated the External Authentication documentation to:

1. Clarify that Coder first attempts to use external auth provider
tokens when available, and only defaults to SSH authentication if no
tokens are available
2. Add more detailed explanations about both authentication methods
3. Improve the description of how the `coder gitssh` command works with
existing and Coder-generated SSH keys

## Verification

Claude verified that this accurately describes the behavior of the
codebase by reviewing the `gitssh.go` implementation, which shows how
Coder handles SSH authentication as a fallback when external auth is not
available.


[preview](https://coder.com/docs/@16875-git-workspace-auth/admin/external-auth)

<sub>🤖 Generated with https://claude.ai/code</sub>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
Co-authored-by: Ben Potter <me@bpmct.net>
Co-authored-by: M Atif Ali <atif@coder.com>
Co-authored-by: Bruno Quaresma <bruno@coder.com>
Co-authored-by: Kyle Carberry <kyle@coder.com>
Co-authored-by: Cian Johnston <cian@coder.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jon Ayers <jon@coder.com>
Co-authored-by: Hugo Dutka <hugo@coder.com>
Co-authored-by: Ethan <39577870+ethanndickson@users.noreply.github.com>
Co-authored-by: Michael Smith <throwawayclover@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Sas Swart <sas.swart.cdk@gmail.com>
2025-04-09 15:16:00 +00:00
Spike Curtis 3f3e2017bd fix: fix http cache dir creation order in coderdtest (#17303)
fixes coder/internal#565

Fixes the ordering of creating the HTTP cache temp dir with respect to
starting the Coderd HTTP server, so that they are cleaned up in the
correct (reverse) order.
2025-04-09 11:19:48 +00:00
Cian Johnston 43b1a034b1 chore(agent/agentscripts): disable TestTimeout on macOS (#17300) 2025-04-09 08:23:43 +00:00
Cian Johnston a8fbe71a22 chore(cli): increase healthcheck timeout in TestSupportbundle (#17291)
Fixes https://github.com/coder/internal/issues/272

* Increases healthcheck timeout in tests. This seems to be the most
usual cause of test failures.
* Adds a non-nilness check before caching a healthcheck report.
* Modifies the HTTP response code to 503 (was 404) when no healthcheck
report is available. 503 seems to be a better indicator of the server
state in this case, whereas 404 could be misinterpreted as a typo in the
healthcheck URL.
2025-04-09 09:21:17 +01:00
Cian Johnston 8d122aa4ab chore(cli): avoid use of testutil.RandomPort() in prometheus test (#17297)
Should hopefully fix https://github.com/coder/internal/issues/282

Instead of picking a random port for the prometheus server, listen on
`:0` and read the port from the CLI stdout.
2025-04-09 09:20:47 +01:00
Utsavkumar Lal 0e658219b2 feat: support filtering users table by login type (#17238)
#15896 Mentions ability to add support for filtering by login type

The issue mentions that backend API support exists but the backend did
not seem to have the support for this filter. So I have added the
ability to filter it.

I also added a corresponding update to readme file to make sure the docs
will correctly showcase this feature
2025-04-09 13:59:41 +10:00
Steven Masley f2d24bc3f4 chore: add custom samesite options to auth cookies (#16885)
Allows controlling `samesite` cookie settings from deployment values
2025-04-08 16:39:21 -05:00
Steven Masley 52d555880c chore: add custom samesite options to auth cookies (#16885)
Allows controlling `samesite` cookie settings from the deployment config
2025-04-08 14:15:14 -05:00
Cian Johnston 389e88ec82 chore(cli): refactor TestServer/Prometheus to use testutil.Eventually (#17295)
Updates https://github.com/coder/internal/issues/282

Refactors existing tests to use `testutil.Eventually` which plays nicer
with `testutil.Context`.
2025-04-08 16:53:22 +01:00
Cian Johnston 44ddc9f654 chore(agent/agentscripts): increase timeout in TestTimeout (#17293)
Fixes https://github.com/coder/internal/issues/329

This was due to a race between the process starting and the timeout of
the agent startup script executor. I'm taking the 'lazy' route here and
increasing the timeout to 100ms. This does technically mean that this
makes the test 100 times longer to execute. However, if it takes more
than 100ms to run a `sleep infinity` command on our test runner, I think
we have other issues.
2025-04-08 14:35:13 +00:00
Spike Curtis b1f59aafc1 fix: stop checking gauges unrelated to TestAgent_Stats_Magic (#17290)
Fixes https://github.com/coder/internal/issues/564

The test is asserting too much, including stats guages that are not directly related to the thing we are trying to test: ConnectionCount, RxBytes, and TxBytes.  I think the author assumed that these are counts that only go up, but they are guages and eventually zero back out, so there are race condtions where not all of them are non-zero at the same time.
2025-04-08 17:01:21 +04:00
Marcin Tojek 88b7c9ef5d feat: install more terminal fonts (#17289)
Related: https://github.com/coder/coder/issues/15024
2025-04-08 14:36:15 +02:00
dependabot[bot] 3487f37f9a chore: bump github.com/go-chi/httprate from 0.14.1 to 0.15.0 (#17171)
Bumps [github.com/go-chi/httprate](https://github.com/go-chi/httprate)
from 0.14.1 to 0.15.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/go-chi/httprate/releases">github.com/go-chi/httprate's
releases</a>.</em></p>
<blockquote>
<h2>v0.15.0</h2>
<ul>
<li>upgrade to xxhash v3</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/go-chi/httprate/commit/c0b6272bcac673c105a4d29c98dd9be27a0d644d"><code>c0b6272</code></a>
upgrade to xxh3 hashing pkg (<a
href="https://redirect.github.com/go-chi/httprate/issues/54">#54</a>)</li>
<li><a
href="https://github.com/go-chi/httprate/commit/9d627fb3c8a009b20ae198abe84b3a1d10a22a94"><code>9d627fb</code></a>
Update README.md: add missing 'time' import in code example (<a
href="https://redirect.github.com/go-chi/httprate/issues/49">#49</a>)</li>
<li><a
href="https://github.com/go-chi/httprate/commit/24ebb38d02ea7de820e34f890c4206cf6b891955"><code>24ebb38</code></a>
Try to fix Github action access issue (<a
href="https://redirect.github.com/go-chi/httprate/issues/51">#51</a>)</li>
<li>See full diff in <a
href="https://github.com/go-chi/httprate/compare/v0.14.1...v0.15.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/go-chi/httprate&package-manager=go_modules&previous-version=0.14.1&new-version=0.15.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>
2025-04-08 09:48:35 +00:00
dependabot[bot] f935e2a1d2 chore: bump github.com/go-playground/validator/v10 from 10.25.0 to 10.26.0 (#17173)
Bumps
[github.com/go-playground/validator/v10](https://github.com/go-playground/validator)
from 10.25.0 to 10.26.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/go-playground/validator/releases">github.com/go-playground/validator/v10's
releases</a>.</em></p>
<blockquote>
<h2>v10.26.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Use correct pointer in errors.As(). Fix &quot;panic: errors: *target
must be interface or implement error&quot; in examples. by <a
href="https://github.com/antonsoroko"><code>@​antonsoroko</code></a> in
<a
href="https://redirect.github.com/go-playground/validator/pull/1378">go-playground/validator#1378</a></li>
<li>Create dependabot by <a
href="https://github.com/nodivbyzero"><code>@​nodivbyzero</code></a> in
<a
href="https://redirect.github.com/go-playground/validator/pull/1373">go-playground/validator#1373</a></li>
<li>Bump golangci/golangci-lint-action from 4 to 6 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/go-playground/validator/pull/1381">go-playground/validator#1381</a></li>
<li>Bump golang.org/x/text from 0.21.0 to 0.22.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/go-playground/validator/pull/1383">go-playground/validator#1383</a></li>
<li>Bump golang.org/x/crypto from 0.32.0 to 0.33.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/go-playground/validator/pull/1382">go-playground/validator#1382</a></li>
<li>feat(translations): improve Indonesian translations and add tests by
<a href="https://github.com/fathiraz"><code>@​fathiraz</code></a> in <a
href="https://redirect.github.com/go-playground/validator/pull/1376">go-playground/validator#1376</a></li>
<li>Fix time.Duration translation error by <a
href="https://github.com/nodivbyzero"><code>@​nodivbyzero</code></a> in
<a
href="https://redirect.github.com/go-playground/validator/pull/1154">go-playground/validator#1154</a></li>
<li>Update Project Status button by <a
href="https://github.com/nodivbyzero"><code>@​nodivbyzero</code></a> in
<a
href="https://redirect.github.com/go-playground/validator/pull/1380">go-playground/validator#1380</a></li>
<li>Remove gitter.im link from README.md by <a
href="https://github.com/nodivbyzero"><code>@​nodivbyzero</code></a> in
<a
href="https://redirect.github.com/go-playground/validator/pull/1366">go-playground/validator#1366</a></li>
<li>Docs: fix <code>Base64RawURL</code> usage by <a
href="https://github.com/196Ikuchil"><code>@​196Ikuchil</code></a> in <a
href="https://redirect.github.com/go-playground/validator/pull/1336">go-playground/validator#1336</a></li>
<li>Fix length check on dns_rfc1035_label tag by <a
href="https://github.com/KimNorgaard"><code>@​KimNorgaard</code></a> in
<a
href="https://redirect.github.com/go-playground/validator/pull/1214">go-playground/validator#1214</a></li>
<li>Add Korean by <a
href="https://github.com/jkh0kr"><code>@​jkh0kr</code></a> in <a
href="https://redirect.github.com/go-playground/validator/pull/1338">go-playground/validator#1338</a></li>
<li>add german translations by <a
href="https://github.com/max-weis"><code>@​max-weis</code></a> in <a
href="https://redirect.github.com/go-playground/validator/pull/1322">go-playground/validator#1322</a></li>
<li>Update workflow to support the last three Go versions by <a
href="https://github.com/nodivbyzero"><code>@​nodivbyzero</code></a> in
<a
href="https://redirect.github.com/go-playground/validator/pull/1393">go-playground/validator#1393</a></li>
<li>Fix: Nil pointer dereference in Arabic translations by <a
href="https://github.com/BlackSud0"><code>@​BlackSud0</code></a> in <a
href="https://redirect.github.com/go-playground/validator/pull/1391">go-playground/validator#1391</a></li>
<li>Translate to thai by <a
href="https://github.com/maetad"><code>@​maetad</code></a> in <a
href="https://redirect.github.com/go-playground/validator/pull/1202">go-playground/validator#1202</a></li>
<li>Feat: add EIN validation by <a
href="https://github.com/henrriusdev"><code>@​henrriusdev</code></a> in
<a
href="https://redirect.github.com/go-playground/validator/pull/1384">go-playground/validator#1384</a></li>
<li>Fix reference to parameter name in docs by <a
href="https://github.com/yegvla"><code>@​yegvla</code></a> in <a
href="https://redirect.github.com/go-playground/validator/pull/1400">go-playground/validator#1400</a></li>
<li>use mail.ParseAddress to cover missing email validations by <a
href="https://github.com/eladb2011"><code>@​eladb2011</code></a> in <a
href="https://redirect.github.com/go-playground/validator/pull/1395">go-playground/validator#1395</a></li>
<li>Update linter to v2.0.2 by <a
href="https://github.com/nodivbyzero"><code>@​nodivbyzero</code></a> in
<a
href="https://redirect.github.com/go-playground/validator/pull/1405">go-playground/validator#1405</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/antonsoroko"><code>@​antonsoroko</code></a>
made their first contribution in <a
href="https://redirect.github.com/go-playground/validator/pull/1378">go-playground/validator#1378</a></li>
<li><a
href="https://github.com/dependabot"><code>@​dependabot</code></a> made
their first contribution in <a
href="https://redirect.github.com/go-playground/validator/pull/1381">go-playground/validator#1381</a></li>
<li><a href="https://github.com/fathiraz"><code>@​fathiraz</code></a>
made their first contribution in <a
href="https://redirect.github.com/go-playground/validator/pull/1376">go-playground/validator#1376</a></li>
<li><a
href="https://github.com/196Ikuchil"><code>@​196Ikuchil</code></a> made
their first contribution in <a
href="https://redirect.github.com/go-playground/validator/pull/1336">go-playground/validator#1336</a></li>
<li><a
href="https://github.com/KimNorgaard"><code>@​KimNorgaard</code></a>
made their first contribution in <a
href="https://redirect.github.com/go-playground/validator/pull/1214">go-playground/validator#1214</a></li>
<li><a href="https://github.com/jkh0kr"><code>@​jkh0kr</code></a> made
their first contribution in <a
href="https://redirect.github.com/go-playground/validator/pull/1338">go-playground/validator#1338</a></li>
<li><a href="https://github.com/max-weis"><code>@​max-weis</code></a>
made their first contribution in <a
href="https://redirect.github.com/go-playground/validator/pull/1322">go-playground/validator#1322</a></li>
<li><a href="https://github.com/BlackSud0"><code>@​BlackSud0</code></a>
made their first contribution in <a
href="https://redirect.github.com/go-playground/validator/pull/1391">go-playground/validator#1391</a></li>
<li><a href="https://github.com/maetad"><code>@​maetad</code></a> made
their first contribution in <a
href="https://redirect.github.com/go-playground/validator/pull/1202">go-playground/validator#1202</a></li>
<li><a
href="https://github.com/henrriusdev"><code>@​henrriusdev</code></a>
made their first contribution in <a
href="https://redirect.github.com/go-playground/validator/pull/1384">go-playground/validator#1384</a></li>
<li><a href="https://github.com/yegvla"><code>@​yegvla</code></a> made
their first contribution in <a
href="https://redirect.github.com/go-playground/validator/pull/1400">go-playground/validator#1400</a></li>
<li><a href="https://github.com/eladb2011"><code>@​eladb2011</code></a>
made their first contribution in <a
href="https://redirect.github.com/go-playground/validator/pull/1395">go-playground/validator#1395</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/go-playground/validator/compare/v10.25.0...v10.26.0">https://github.com/go-playground/validator/compare/v10.25.0...v10.26.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/go-playground/validator/commit/433b08283c14b1def28e8f05e36c2bed2f13b3f4"><code>433b082</code></a>
Update linter to v2.0.2 (<a
href="https://redirect.github.com/go-playground/validator/issues/1405">#1405</a>)</li>
<li><a
href="https://github.com/go-playground/validator/commit/859202275556dac82d4460234867c5c5988d06fd"><code>8592022</code></a>
use mail.ParseAddress to cover missing email validations (<a
href="https://redirect.github.com/go-playground/validator/issues/1395">#1395</a>)</li>
<li><a
href="https://github.com/go-playground/validator/commit/271abb312cd958fd1c61b58983ecab31026eb252"><code>271abb3</code></a>
Fix reference to parameter name in docs (<a
href="https://redirect.github.com/go-playground/validator/issues/1400">#1400</a>)</li>
<li><a
href="https://github.com/go-playground/validator/commit/79c42ad73c1fdebee04c93ac6a0e132353662dc6"><code>79c42ad</code></a>
Feat: add EIN validation (<a
href="https://redirect.github.com/go-playground/validator/issues/1384">#1384</a>)</li>
<li><a
href="https://github.com/go-playground/validator/commit/2cadaff20364eef00f8711e1b6a0dfcc2aceee14"><code>2cadaff</code></a>
Translate to thai (<a
href="https://redirect.github.com/go-playground/validator/issues/1202">#1202</a>)</li>
<li><a
href="https://github.com/go-playground/validator/commit/bae7f6d3cb253fbd5dddcdf339f8460fa8d091c3"><code>bae7f6d</code></a>
Fix: Nil pointer dereference in Arabic translations (<a
href="https://redirect.github.com/go-playground/validator/issues/1391">#1391</a>)</li>
<li><a
href="https://github.com/go-playground/validator/commit/909c504042f17c83dc76e8a2c11efd3dd41bd212"><code>909c504</code></a>
Update workflow to support the last three Go versions (<a
href="https://redirect.github.com/go-playground/validator/issues/1393">#1393</a>)</li>
<li><a
href="https://github.com/go-playground/validator/commit/09c1323276ffada71562c1b8bf0554a0ed5ddd1d"><code>09c1323</code></a>
add german translations (<a
href="https://redirect.github.com/go-playground/validator/issues/1322">#1322</a>)</li>
<li><a
href="https://github.com/go-playground/validator/commit/45dd6e3bd61a7659b16d9c624e3e0174223a5fd6"><code>45dd6e3</code></a>
Add Korean (<a
href="https://redirect.github.com/go-playground/validator/issues/1338">#1338</a>)</li>
<li><a
href="https://github.com/go-playground/validator/commit/97d2bf07aad31b97b64fcd8213f922f159e62361"><code>97d2bf0</code></a>
Fix length check on dns_rfc1035_label tag (<a
href="https://redirect.github.com/go-playground/validator/issues/1214">#1214</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/go-playground/validator/compare/v10.25.0...v10.26.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/go-playground/validator/v10&package-manager=go_modules&previous-version=10.25.0&new-version=10.26.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>
2025-04-08 09:17:47 +00:00
Michael Suchacz ce22de8d15 feat: log long-lived connections acceptance (#17219)
Closes #16904
2025-04-08 08:30:05 +00:00
Thomas Kosiewski abe3ad68f5 fix: add continue-on-error to SBOM generation and force flag to cosign clean (#17288)
This PR makes the SBOM generation and attestation process more resilient
by:

1. Adding `continue-on-error: true` to the SBOM generation steps in both
CI and release workflows
2. Adding `--force=true` flag to all `cosign clean` commands to ensure
they don't fail if in a non-interactive shell (which is the case for CI)

Change-Id: Ide303c059b1a3d0e3fd77863310e99668325bc69
Signed-off-by: Thomas Kosiewski <tk@coder.com>

Signed-off-by: Thomas Kosiewski <tk@coder.com>
2025-04-08 10:29:00 +02:00
Edward Angert 0e878a8e98 docs: rename codervpn to coder connect (#16833)
part of: https://github.com/coder/internal/issues/459

- [x] Text
- [x] Screenshots
  - [x] MacOS
  - [x] Windows

[preview](https://coder.com/docs/@459-coder-connect/user-guides/desktop)

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
Co-authored-by: M Atif Ali <atif@coder.com>
2025-04-08 12:00:23 +04:00
coryb 12e5718b99 feat(provisioner): propagate trace info (#17166)
If tracing is enabled, propagate the trace information to the terraform
provisioner via environment variables. This sets the `TRACEPARENT`
environment variable using the default W3C trace propagators. Users can
choose to continue the trace by adding new spans in the provisioner by
reading from the environment like:

ctx := env.ContextWithRemoteSpanContext(context.Background(),
os.Environ())

---------

Co-authored-by: Spike Curtis <spike@spikecurtis.com>
2025-04-08 11:58:28 +04:00
Spike Curtis 9eeb506ae5 feat: modify config-ssh to set the host suffix (#17280)
Wires up `config-ssh` command to use a hostname suffix if configured.

part of: #16828


e.g. `coder config-ssh --hostname-suffix spiketest` gives:

```
# ------------START-CODER-----------
# This section is managed by coder. DO NOT EDIT.
#
# You should not hand-edit this section unless you are removing it, all
# changes will be lost when running "coder config-ssh".
#
# Last config-ssh options:
# :hostname-suffix=spiketest
#
Host coder.* *.spiketest
        ConnectTimeout=0
        StrictHostKeyChecking=no
        UserKnownHostsFile=/dev/null
        LogLevel ERROR
        ProxyCommand /home/coder/repos/coder/build/coder_config_ssh --global-config /home/coder/.config/coderv2 ssh --stdio --ssh-host-prefix coder. --hostname-suffix spiketest %h
# ------------END-CODER------------
```
2025-04-08 11:48:18 +04:00
ケイラ 114ba4593b chore: fix swagger type of AuditLog AdditionalFields (#17286) 2025-04-07 13:48:58 -06:00
Edward Angert d0aff04aef docs: remove blank inbox doc (#17285)
[preview](https://coder.com/docs/@hotfix-inbox-doc)

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-04-07 14:19:45 -04:00
Edward Angert 2f6682a46f docs: add zed code_app to extending-templates doc (#17281)
continuation of #17236  (thanks @sharkymark )

adds zed as a coder_app to
<https://coder.com/docs/admin/templates/extending-templates>



[preview](https://coder.com/docs/@17236-zed-app/admin/templates/extending-templates#coder-app-examples)

---------

Co-authored-by: sharkymark <mtm20176@gmail.com>
Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-04-07 14:00:43 -04:00
Spike Curtis d312e82a51 feat: support --hostname-suffix flag on coder ssh (#17279)
Adds `hostname-suffix` flag to `coder ssh` command for use in SSH Config ProxyCommands.

Also enforces that Coder server doesn't start the suffix with a dot.

part of: #16828
2025-04-07 21:33:33 +04:00
Aaron Lehmann aa0a63a295 fix(agent): log correct error variable in createTailnet (#17283) 2025-04-07 16:32:52 +00:00
Thomas Kosiewski f48a24c18e feat: add SBOM generation and attestation to GitHub workflow (#17277)
Move SBOM generation and attestation to GitHub workflow

This PR moves the SBOM generation and attestation process from the `build_docker.sh` script to the GitHub workflow. The change:

1. Removes SBOM generation and attestation from the `build_docker.sh` script
2. Adds a new "SBOM Generation and Attestation" step in the GitHub workflow
3. Generates and attests SBOMs for both multi-arch images and latest tags when applicable

This approach ensures SBOM generation happens once for the final multi-architecture image rather than for each architecture separately.

Change-Id: I2e15d7322ddec933bbc9bd7880abba9b0842719f
Signed-off-by: Thomas Kosiewski <tk@coder.com>
2025-04-07 17:54:05 +02:00
Garrett Delfosse fc471eb384 fix: handle vscodessh style workspace names in coder ssh (#17154)
Fixes an issue where old ssh configs that use the
`owner--workspace--agent` format will fail to properly use the `coder
ssh` command since we migrated off the `coder vscodessh` command.
2025-04-07 10:06:58 -04:00
Marcin Tojek 743d308eb3 feat: support multiple terminal fonts (#17257)
Fixes: https://github.com/coder/coder/issues/15024
2025-04-07 14:30:10 +02:00
dependabot[bot] 30f41cdd42 chore: bump github.com/valyala/fasthttp from 1.59.0 to 1.60.0 (#17274)
Bumps [github.com/valyala/fasthttp](https://github.com/valyala/fasthttp)
from 1.59.0 to 1.60.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/valyala/fasthttp/releases">github.com/valyala/fasthttp's
releases</a>.</em></p>
<blockquote>
<h2>v1.60.0</h2>
<h2>What's Changed</h2>
<ul>
<li>perf: split delAllArgs into delAllArgs and delAllArgsStable by <a
href="https://github.com/ksw2000"><code>@​ksw2000</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/1945">valyala/fasthttp#1945</a></li>
<li>fix: accept invalid headers with a space by <a
href="https://github.com/ksw2000"><code>@​ksw2000</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/1953">valyala/fasthttp#1953</a></li>
<li>Drop support for Go 1.21, add support for 1.24 by <a
href="https://github.com/erikdubbelboer"><code>@​erikdubbelboer</code></a>
in <a
href="https://redirect.github.com/valyala/fasthttp/pull/1959">valyala/fasthttp#1959</a></li>
<li>chore(deps): bump github.com/klauspost/compress from 1.17.11 to
1.18.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/1958">valyala/fasthttp#1958</a></li>
<li>add related project for opentelemetry-go-auto-instrumentation by <a
href="https://github.com/123liuziming"><code>@​123liuziming</code></a>
in <a
href="https://redirect.github.com/valyala/fasthttp/pull/1962">valyala/fasthttp#1962</a></li>
<li>Fix normalizeHeaderValue by <a
href="https://github.com/erikdubbelboer"><code>@​erikdubbelboer</code></a>
in <a
href="https://redirect.github.com/valyala/fasthttp/pull/1963">valyala/fasthttp#1963</a></li>
<li>chore(deps): bump golang.org/x/net from 0.35.0 to 0.36.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/1968">valyala/fasthttp#1968</a></li>
<li>chore(deps): bump securego/gosec from 2.22.1 to 2.22.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/1972">valyala/fasthttp#1972</a></li>
<li>chore(deps): bump golang.org/x/net from 0.36.0 to 0.37.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/1971">valyala/fasthttp#1971</a></li>
<li>Update golangci-lint to v2 by <a
href="https://github.com/erikdubbelboer"><code>@​erikdubbelboer</code></a>
in <a
href="https://redirect.github.com/valyala/fasthttp/pull/1980">valyala/fasthttp#1980</a></li>
<li>chore(deps): bump golang.org/x/net from 0.37.0 to 0.38.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/valyala/fasthttp/pull/1983">valyala/fasthttp#1983</a></li>
<li>Remove idleConns mutex for every request by <a
href="https://github.com/erikdubbelboer"><code>@​erikdubbelboer</code></a>
in <a
href="https://redirect.github.com/valyala/fasthttp/pull/1986">valyala/fasthttp#1986</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/123liuziming"><code>@​123liuziming</code></a>
made their first contribution in <a
href="https://redirect.github.com/valyala/fasthttp/pull/1962">valyala/fasthttp#1962</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/valyala/fasthttp/compare/v1.59.0...v1.60.0">https://github.com/valyala/fasthttp/compare/v1.59.0...v1.60.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/valyala/fasthttp/commit/752b0e70040eee46b291b9dedd70266d8aa3e2e7"><code>752b0e7</code></a>
Remove idleConns mutex for every request (<a
href="https://redirect.github.com/valyala/fasthttp/issues/1986">#1986</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/bf3f552c8e564472d6e7aae08804bcf0813f1f73"><code>bf3f552</code></a>
chore(deps): bump golang.org/x/net from 0.37.0 to 0.38.0 (<a
href="https://redirect.github.com/valyala/fasthttp/issues/1983">#1983</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/4891fc5304e3ab9e23e9258a39736a3726b626c2"><code>4891fc5</code></a>
Update golangci-lint to v2 (<a
href="https://redirect.github.com/valyala/fasthttp/issues/1980">#1980</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/30b09beff11be4282c37ef6b7d8854589d565447"><code>30b09be</code></a>
Fix untyped int constant 4294967295</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/4269e2d68c33f2242e61f67ad4e104ba26fc4c1c"><code>4269e2d</code></a>
chore(deps): bump golang.org/x/net from 0.36.0 to 0.37.0 (<a
href="https://redirect.github.com/valyala/fasthttp/issues/1971">#1971</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/1353ca59f2044a74111d80087a5e762a71a3e1a2"><code>1353ca5</code></a>
chore(deps): bump securego/gosec from 2.22.1 to 2.22.2 (<a
href="https://redirect.github.com/valyala/fasthttp/issues/1972">#1972</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/6c07c2f523de17c866ac4cf86d08386e7bad55e4"><code>6c07c2f</code></a>
chore(deps): bump golang.org/x/net from 0.35.0 to 0.36.0 (<a
href="https://redirect.github.com/valyala/fasthttp/issues/1968">#1968</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/69dc7b1280e58dac05ab46c423b5b7f14cc88fab"><code>69dc7b1</code></a>
Update the supported version to the same as Go itself (<a
href="https://redirect.github.com/valyala/fasthttp/issues/1967">#1967</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/b8969ed8dcb5cba0b037f3fe091a0933fc786a28"><code>b8969ed</code></a>
Fix normalizeHeaderValue (<a
href="https://redirect.github.com/valyala/fasthttp/issues/1963">#1963</a>)</li>
<li><a
href="https://github.com/valyala/fasthttp/commit/31e34c5fe0c3dd3090b0c9d662b74bab1dc87f6d"><code>31e34c5</code></a>
add related project for opentelemetry-go-auto-instrumentation (<a
href="https://redirect.github.com/valyala/fasthttp/issues/1962">#1962</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/valyala/fasthttp/compare/v1.59.0...v1.60.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/valyala/fasthttp&package-manager=go_modules&previous-version=1.59.0&new-version=1.60.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>
2025-04-07 12:18:23 +00:00
dependabot[bot] 37ef4d8cb9 chore: bump github.com/coreos/go-oidc/v3 from 3.13.0 to 3.14.1 (#17276)
Bumps [github.com/coreos/go-oidc/v3](https://github.com/coreos/go-oidc)
from 3.13.0 to 3.14.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/coreos/go-oidc/releases">github.com/coreos/go-oidc/v3's
releases</a>.</em></p>
<blockquote>
<h2>v3.14.1</h2>
<h2>What's Changed</h2>
<ul>
<li>oidctest: fix import by <a
href="https://github.com/ericchiang"><code>@​ericchiang</code></a> in <a
href="https://redirect.github.com/coreos/go-oidc/pull/457">coreos/go-oidc#457</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/coreos/go-oidc/compare/v3.14.0...v3.14.1">https://github.com/coreos/go-oidc/compare/v3.14.0...v3.14.1</a></p>
<h2>v3.14.0</h2>
<h2>What's Changed</h2>
<ul>
<li>oidc/oidctest: add new package by <a
href="https://github.com/ericchiang"><code>@​ericchiang</code></a> in <a
href="https://redirect.github.com/coreos/go-oidc/pull/400">coreos/go-oidc#400</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/coreos/go-oidc/compare/v3.13.0...v3.14.0">https://github.com/coreos/go-oidc/compare/v3.13.0...v3.14.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/coreos/go-oidc/commit/a7c457eacb849c163a496b29274242474a8f44ab"><code>a7c457e</code></a>
oidctest: fix import</li>
<li><a
href="https://github.com/coreos/go-oidc/commit/aba1ce200a9dd76b14bbb455d4e5aea55e97cbb3"><code>aba1ce2</code></a>
oidc/oidctest: add new package</li>
<li>See full diff in <a
href="https://github.com/coreos/go-oidc/compare/v3.13.0...v3.14.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/coreos/go-oidc/v3&package-manager=go_modules&previous-version=3.13.0&new-version=3.14.1)](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>
2025-04-07 12:18:05 +00:00
dependabot[bot] e6dc6fb8c1 chore: bump github.com/open-policy-agent/opa from 1.1.0 to 1.3.0 (#17170)
Bumps
[github.com/open-policy-agent/opa](https://github.com/open-policy-agent/opa)
from 1.1.0 to 1.3.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/open-policy-agent/opa/releases">github.com/open-policy-agent/opa's
releases</a>.</em></p>
<blockquote>
<h2>v1.3.0</h2>
<p>This release contains a mix of features, bugfixes, and dependency
updates.</p>
<h3>New Buffer Option for Decision Logs (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/5724">#5724</a>)</h3>
<p>A new, optional, buffering mechanism has been added to decision
logging.
The default buffer is designed around making precise memory footprint
guarantees, which can produce lock contention at high loads, negatively
impacting query performance.
The new event-based buffer is designed to reduce lock contention and
improve performance at high loads, but sacrifices the memory footprint
guarantees of the default buffer.</p>
<p>The new event-based buffer is enabled by setting the
<code>decision_logs.reporting.buffer_type</code> <a
href="https://www.openpolicyagent.org/docs/latest/configuration/#decision-logs">configuration
option</a> to <code>event</code>.</p>
<p>For more details, see the decision log plugin <a
href="https://github.com/open-policy-agent/opa/blob/main/v1/plugins/logs/README.md">README</a>.</p>
<p>Reported by <a
href="https://github.com/mjungsbluth"><code>@​mjungsbluth</code></a>,
authored by <a
href="https://github.com/sspaink"><code>@​sspaink</code></a></p>
<h3>OpenTelemetry: HTTP Support and Expanded Batch Span Configuration
(<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7412">#7412</a>)</h3>
<p>Distributed tracing through OpenTelemetry has been extended to
support HTTP collectors (enabled by setting the
<code>distributed_tracing.type</code> configuration option to
<code>http</code>).
Additionally, configuration has been expanded with fine-grained batch
span processor <a
href="https://www.openpolicyagent.org/docs/latest/configuration/#distributed-tracing">options</a>.</p>
<p>Authored and reported by <a
href="https://github.com/sqyang94"><code>@​sqyang94</code></a></p>
<h3>Runtime, Tooling, SDK</h3>
<ul>
<li>compile: Require multi-term entrypoint paths for optimized bundle
building (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7321">#7321</a>)
authored by <a
href="https://github.com/johanfylling"><code>@​johanfylling</code></a>
reported by <a
href="https://github.com/nikpivkin"><code>@​nikpivkin</code></a></li>
<li>fmt: Allow one liner rule grouping (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/6760">#6760</a>)
authored by <a
href="https://github.com/anderseknert"><code>@​anderseknert</code></a></li>
<li>fmt: Fix v0-compatible fmt with stdin (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7409">#7409</a>)
authored and reported by <a
href="https://github.com/charlieegan3"><code>@​charlieegan3</code></a></li>
<li>ir: Fix nil pointer deref in Unmarshal() when handling IsSetStmt (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7415">#7415</a>)
authored and reported by <a
href="https://github.com/KrisKennawayDD"><code>@​KrisKennawayDD</code></a></li>
<li>planner: Fix Wasm vs non-Wasm evaluation difference bug related to
the overeager optimization of ref head rules (<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7439">#7439</a>)
authored by <a
href="https://github.com/srenatus"><code>@​srenatus</code></a></li>
<li>sdk: Removing repeat args from sub-func call (<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7443">#7443</a>)
authored by <a
href="https://github.com/alingse"><code>@​alingse</code></a></li>
<li>tester: Including parameterized test cases in test report counter
(<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7407">#7407</a>)
authored by <a
href="https://github.com/johanfylling"><code>@​johanfylling</code></a></li>
<li>tester: Only including failed sub-test cases in report summary when
non-verbose (<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7426">#7426</a>)
authored by <a
href="https://github.com/johanfylling"><code>@​johanfylling</code></a></li>
</ul>
<h3>Docs, Website, Ecosystem</h3>
<ul>
<li>docs: Add some notes about AI assisted patches (<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7436">#7436</a>)
authored by <a
href="https://github.com/charlieegan3"><code>@​charlieegan3</code></a></li>
<li>docs: Add query_parameters_to_set (<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7405">#7405</a>)
authored by <a
href="https://github.com/sedovmik"><code>@​sedovmik</code></a></li>
<li>docs: Delete reference to license key in Envoy tutorial (<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7466">#7466</a>)
authored by <a
href="https://github.com/joostholslag"><code>@​joostholslag</code></a></li>
<li>docs: Fix typo in Envoy tutorial (<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7464">#7464</a>)
authored by <a
href="https://github.com/joostholslag"><code>@​joostholslag</code></a></li>
<li>docs: Update slack inviter link (<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7450">#7450</a>)
authored by <a
href="https://github.com/charlieegan3"><code>@​charlieegan3</code></a></li>
<li>docs: Update terraform examples (<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7429">#7429</a>)
authored by <a
href="https://github.com/charlieegan3"><code>@​charlieegan3</code></a></li>
<li>docs: Simplify <code>kind</code> usage instruction in Envoy tutorial
(<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7465">#7465</a>)
authored by <a
href="https://github.com/joostholslag"><code>@​joostholslag</code></a></li>
</ul>
<h3>Miscellaneous</h3>
<ul>
<li>Enable unused-receiver linter (revive) (<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7448">#7448</a>)
authored by <a
href="https://github.com/anderseknert"><code>@​anderseknert</code></a></li>
<li>Dependency updates; notably:
<ul>
<li>build(deps): bump github.com/containerd/containerd from 1.7.26 to
1.7.27</li>
<li>build(deps): bump github.com/dgraph-io/badger/v4 from 4.5.1 to
4.6.0</li>
<li>build(deps): bump github.com/opencontainers/image-spec from 1.1.0 to
1.1.1</li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-policy-agent/opa/blob/main/CHANGELOG.md">github.com/open-policy-agent/opa's
changelog</a>.</em></p>
<blockquote>
<h2>1.3.0</h2>
<p>This release contains a mix of features, bugfixes, and dependency
updates.</p>
<h3>New Buffer Option for Decision Logs (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/5724">#5724</a>)</h3>
<p>A new, optional, buffering mechanism has been added to decision
logging.
The default buffer is designed around making precise memory footprint
guarantees, which can produce lock contention at high loads, negatively
impacting query performance.
The new event-based buffer is designed to reduce lock contention and
improve performance at high loads, but sacrifices the memory footprint
guarantees of the default buffer.</p>
<p>The new event-based buffer is enabled by setting the
<code>decision_logs.reporting.buffer_type</code> <a
href="https://www.openpolicyagent.org/docs/latest/configuration/#decision-logs">configuration
option</a> to <code>event</code>.</p>
<p>For more details, see the decision log plugin <a
href="https://github.com/open-policy-agent/opa/blob/main/v1/plugins/logs/README.md">README</a>.</p>
<p>Reported by <a
href="https://github.com/mjungsbluth"><code>@​mjungsbluth</code></a>,
authored by <a
href="https://github.com/sspaink"><code>@​sspaink</code></a></p>
<h3>OpenTelemetry: HTTP Support and Expanded Batch Span Configuration
(<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7412">#7412</a>)</h3>
<p>Distributed tracing through OpenTelemetry has been extended to
support HTTP collectors (enabled by setting the
<code>distributed_tracing.type</code> configuration option to
<code>http</code>).
Additionally, configuration has been expanded with fine-grained batch
span processor <a
href="https://www.openpolicyagent.org/docs/latest/configuration/#distributed-tracing">options</a>.</p>
<p>Authored and reported by <a
href="https://github.com/sqyang94"><code>@​sqyang94</code></a></p>
<h3>Runtime, Tooling, SDK</h3>
<ul>
<li>compile: Require multi-term entrypoint paths for optimized bundle
building (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7321">#7321</a>)
authored by <a
href="https://github.com/johanfylling"><code>@​johanfylling</code></a>
reported by <a
href="https://github.com/nikpivkin"><code>@​nikpivkin</code></a></li>
<li>fmt: Allow one liner rule grouping (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/6760">#6760</a>)
authored by <a
href="https://github.com/anderseknert"><code>@​anderseknert</code></a></li>
<li>fmt: Fix v0-compatible fmt with stdin (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7409">#7409</a>)
authored and reported by <a
href="https://github.com/charlieegan3"><code>@​charlieegan3</code></a></li>
<li>ir: Fix nil pointer deref in Unmarshal() when handling IsSetStmt (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7415">#7415</a>)
authored and reported by <a
href="https://github.com/KrisKennawayDD"><code>@​KrisKennawayDD</code></a></li>
<li>planner: Fix Wasm vs non-Wasm evaluation difference bug related to
the overeager optimization of ref head rules (<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7439">#7439</a>)
authored by <a
href="https://github.com/srenatus"><code>@​srenatus</code></a></li>
<li>sdk: Removing repeat args from sub-func call (<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7443">#7443</a>)
authored by <a
href="https://github.com/alingse"><code>@​alingse</code></a></li>
<li>tester: Including parameterized test cases in test report counter
(<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7407">#7407</a>)
authored by <a
href="https://github.com/johanfylling"><code>@​johanfylling</code></a></li>
<li>tester: Only including failed sub-test cases in report summary when
non-verbose (<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7426">#7426</a>)
authored by <a
href="https://github.com/johanfylling"><code>@​johanfylling</code></a></li>
</ul>
<h3>Docs, Website, Ecosystem</h3>
<ul>
<li>docs: Add some notes about AI assisted patches (<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7436">#7436</a>)
authored by <a
href="https://github.com/charlieegan3"><code>@​charlieegan3</code></a></li>
<li>docs: Add query_parameters_to_set (<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7405">#7405</a>)
authored by <a
href="https://github.com/sedovmik"><code>@​sedovmik</code></a></li>
<li>docs: Delete reference to license key in Envoy tutorial (<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7466">#7466</a>)
authored by <a
href="https://github.com/joostholslag"><code>@​joostholslag</code></a></li>
<li>docs: Fix typo in Envoy tutorial (<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7464">#7464</a>)
authored by <a
href="https://github.com/joostholslag"><code>@​joostholslag</code></a></li>
<li>docs: Update slack inviter link (<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7450">#7450</a>)
authored by <a
href="https://github.com/charlieegan3"><code>@​charlieegan3</code></a></li>
<li>docs: Update terraform examples (<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7429">#7429</a>)
authored by <a
href="https://github.com/charlieegan3"><code>@​charlieegan3</code></a></li>
<li>docs: Simplify <code>kind</code> usage instruction in Envoy tutorial
(<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7465">#7465</a>)
authored by <a
href="https://github.com/joostholslag"><code>@​joostholslag</code></a></li>
</ul>
<h3>Miscellaneous</h3>
<ul>
<li>Enable unused-receiver linter (revive) (<a
href="https://redirect.github.com/open-policy-agent/opa/pull/7448">#7448</a>)
authored by <a
href="https://github.com/anderseknert"><code>@​anderseknert</code></a></li>
<li>Dependency updates; notably:
<ul>
<li>build(deps): bump github.com/containerd/containerd from 1.7.26 to
1.7.27</li>
<li>build(deps): bump github.com/dgraph-io/badger/v4 from 4.5.1 to
4.6.0</li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/open-policy-agent/opa/commit/89f48353959c9b08608b6d7160c1f1c5ae2763ee"><code>89f4835</code></a>
Prepare v1.3.0 release (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7467">#7467</a>)</li>
<li><a
href="https://github.com/open-policy-agent/opa/commit/ee38d8345f4950c6429d4d117e3509c578e36f5f"><code>ee38d83</code></a>
docs/envoy-tutorial-standalone: simplify 'kind' usage instruction (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7465">#7465</a>)</li>
<li><a
href="https://github.com/open-policy-agent/opa/commit/3d3b45f7522a9e7de3334231d76fbe75d346a677"><code>3d3b45f</code></a>
Delete reference to license key in envoy-tutorial-standalone-envoy.md
(<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7466">#7466</a>)</li>
<li><a
href="https://github.com/open-policy-agent/opa/commit/004af4c64454eab7b0c2e48aa4aea8dc6fb17eb7"><code>004af4c</code></a>
docs/envoy-tutorial-standalone: fix typo (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7464">#7464</a>)</li>
<li><a
href="https://github.com/open-policy-agent/opa/commit/cd66fa36e2b6e8ad396dbb7a0f3adc600118c607"><code>cd66fa3</code></a>
feat: new event-based decisions log buffer implementation (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7446">#7446</a>)</li>
<li><a
href="https://github.com/open-policy-agent/opa/commit/c8febc8625a626b52195c511a37868c85f9f4b9b"><code>c8febc8</code></a>
feat: add more distributed tracing options (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7421">#7421</a>)</li>
<li><a
href="https://github.com/open-policy-agent/opa/commit/b3b87ffd830b5b1309ffd95ef0f42e9a4e0c071b"><code>b3b87ff</code></a>
fmt: allow one liner rule grouping (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7453">#7453</a>)</li>
<li><a
href="https://github.com/open-policy-agent/opa/commit/92ae9a014f984ba39bca1ed19c832ddbf259e88f"><code>92ae9a0</code></a>
build(deps): bump github.com/containerd/containerd from 1.7.26 to 1.7.27
(<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7451">#7451</a>)</li>
<li><a
href="https://github.com/open-policy-agent/opa/commit/f3de1006f9b59f310d32b9433dc6d76d0a4acde5"><code>f3de100</code></a>
docs: Update slack inviter link (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7450">#7450</a>)</li>
<li><a
href="https://github.com/open-policy-agent/opa/commit/bd5ceb514234f2d0a625dff532abe2167f9d824e"><code>bd5ceb5</code></a>
Enable unused-receiver linter (revive) (<a
href="https://redirect.github.com/open-policy-agent/opa/issues/7448">#7448</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/open-policy-agent/opa/compare/v1.1.0...v1.3.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/open-policy-agent/opa&package-manager=go_modules&previous-version=1.1.0&new-version=1.3.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>
2025-04-07 12:17:11 +00:00
dependabot[bot] a2314ad53c chore: bump github.com/ory/dockertest/v3 from 3.11.0 to 3.12.0 (#17275)
Bumps [github.com/ory/dockertest/v3](https://github.com/ory/dockertest)
from 3.11.0 to 3.12.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ory/dockertest/releases">github.com/ory/dockertest/v3's
releases</a>.</em></p>
<blockquote>
<h2>v3.12.0</h2>
<h2>What's Changed</h2>
<ul>
<li>chore(deps): bump github.com/docker/cli from 26.1.4+incompatible to
27.1.2+incompatible by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/ory/dockertest/pull/524">ory/dockertest#524</a></li>
<li>chore(deps): bump actions/checkout from 3 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/ory/dockertest/pull/514">ory/dockertest#514</a></li>
<li>chore(deps): bump actions/stale from 4 to 9 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/ory/dockertest/pull/526">ory/dockertest#526</a></li>
<li>chore(deps): bump github.com/opencontainers/runc from 1.1.13 to
1.1.15 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/ory/dockertest/pull/538">ory/dockertest#538</a></li>
<li>chore(deps): bump actions/checkout from 2 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/ory/dockertest/pull/527">ory/dockertest#527</a></li>
<li>feat: use creds helper by <a
href="https://github.com/GuillaumeSmaha"><code>@​GuillaumeSmaha</code></a>
in <a
href="https://redirect.github.com/ory/dockertest/pull/520">ory/dockertest#520</a></li>
<li>added AuthConfigs to BuildOptions and pass that to BuildImage by <a
href="https://github.com/DGollings"><code>@​DGollings</code></a> in <a
href="https://redirect.github.com/ory/dockertest/pull/488">ory/dockertest#488</a></li>
<li>add multiple test container example by <a
href="https://github.com/akoserwal"><code>@​akoserwal</code></a> in <a
href="https://redirect.github.com/ory/dockertest/pull/515">ory/dockertest#515</a></li>
<li>fix: trying to bind to an outbound ip returns an empty list of port
bindings by <a
href="https://github.com/atzoum"><code>@​atzoum</code></a> in <a
href="https://redirect.github.com/ory/dockertest/pull/533">ory/dockertest#533</a></li>
<li>chore(deps): bump golang.org/x/sys from 0.21.0 to 0.28.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/ory/dockertest/pull/548">ory/dockertest#548</a></li>
<li>chore(deps): bump actions/stale from 4 to 9 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/ory/dockertest/pull/550">ory/dockertest#550</a></li>
<li>chore(deps): bump actions/checkout from 2 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/ory/dockertest/pull/549">ory/dockertest#549</a></li>
<li>chore(deps): bump actions/checkout from 2 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/ory/dockertest/pull/555">ory/dockertest#555</a></li>
<li>chore(deps): bump github.com/docker/cli from 27.1.2+incompatible to
27.4.1+incompatible by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/ory/dockertest/pull/553">ory/dockertest#553</a></li>
<li>chore(deps): bump github.com/opencontainers/runc from 1.1.15 to
1.2.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/ory/dockertest/pull/551">ory/dockertest#551</a></li>
<li>chore(deps): bump github.com/stretchr/testify from 1.9.0 to 1.10.0
by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>
in <a
href="https://redirect.github.com/ory/dockertest/pull/547">ory/dockertest#547</a></li>
<li>feat: add support for BuildKit when building images by <a
href="https://github.com/tmc"><code>@​tmc</code></a> in <a
href="https://redirect.github.com/ory/dockertest/pull/416">ory/dockertest#416</a></li>
<li>chore(deps): bump actions/setup-node from 2.pre.beta to 4.1.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/ory/dockertest/pull/539">ory/dockertest#539</a></li>
<li>chore(deps): bump actions/stale from 4 to 9 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/ory/dockertest/pull/554">ory/dockertest#554</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/GuillaumeSmaha"><code>@​GuillaumeSmaha</code></a>
made their first contribution in <a
href="https://redirect.github.com/ory/dockertest/pull/520">ory/dockertest#520</a></li>
<li><a href="https://github.com/DGollings"><code>@​DGollings</code></a>
made their first contribution in <a
href="https://redirect.github.com/ory/dockertest/pull/488">ory/dockertest#488</a></li>
<li><a href="https://github.com/akoserwal"><code>@​akoserwal</code></a>
made their first contribution in <a
href="https://redirect.github.com/ory/dockertest/pull/515">ory/dockertest#515</a></li>
<li><a href="https://github.com/atzoum"><code>@​atzoum</code></a> made
their first contribution in <a
href="https://redirect.github.com/ory/dockertest/pull/533">ory/dockertest#533</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/ory/dockertest/compare/v3.11.0...v3.12.0">https://github.com/ory/dockertest/compare/v3.11.0...v3.12.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ory/dockertest/commit/8a76ff064a81dda59a3839f908b85e4df79d755a"><code>8a76ff0</code></a>
chore: update repository templates to <a
href="https://github.com/ory/meta/commit/bc60">https://github.com/ory/meta/commit/bc60</a>...</li>
<li><a
href="https://github.com/ory/dockertest/commit/207b20aded3b6876a3acb2a6cdc4447eb8f49bfc"><code>207b20a</code></a>
chore: update repository templates to <a
href="https://github.com/ory/meta/commit/83e7">https://github.com/ory/meta/commit/83e7</a>...</li>
<li><a
href="https://github.com/ory/dockertest/commit/fabf5638cd38b571da9f174f777709da3699e419"><code>fabf563</code></a>
autogen: update license overview</li>
<li><a
href="https://github.com/ory/dockertest/commit/4b1e539f23198fc2718bdc3122af50cb123bd621"><code>4b1e539</code></a>
chore: update repository templates to <a
href="https://github.com/ory/meta/commit/44ef">https://github.com/ory/meta/commit/44ef</a>...</li>
<li><a
href="https://github.com/ory/dockertest/commit/46d1a7b148e4ffbef44b5688c3f814a687d0cc84"><code>46d1a7b</code></a>
chore: update repository templates to <a
href="https://github.com/ory/meta/commit/c091">https://github.com/ory/meta/commit/c091</a>...</li>
<li><a
href="https://github.com/ory/dockertest/commit/13e6e33fbdb15fdc137d671a8109cdafee61a9d3"><code>13e6e33</code></a>
chore(deps): bump actions/stale from 4 to 9 (<a
href="https://redirect.github.com/ory/dockertest/issues/554">#554</a>)</li>
<li><a
href="https://github.com/ory/dockertest/commit/91b7d0b413252b891483b989ddc2ecda394b14cf"><code>91b7d0b</code></a>
chore(deps): bump actions/setup-node from 2.pre.beta to 4.1.0 (<a
href="https://redirect.github.com/ory/dockertest/issues/539">#539</a>)</li>
<li><a
href="https://github.com/ory/dockertest/commit/28c8c5b6ab911beb07fc08922fd42fb74ea82b19"><code>28c8c5b</code></a>
chore(deps): bump github.com/containerd/continuity from 0.4.3 to 0.4.5
(<a
href="https://redirect.github.com/ory/dockertest/issues/545">#545</a>)</li>
<li><a
href="https://github.com/ory/dockertest/commit/eec3a4f420353447100008b96eb33c3b5509577b"><code>eec3a4f</code></a>
feat: add support for BuildKit when building images (<a
href="https://redirect.github.com/ory/dockertest/issues/416">#416</a>)</li>
<li><a
href="https://github.com/ory/dockertest/commit/f6e65ba5e18bbca77c5d27d768d67268c01c7178"><code>f6e65ba</code></a>
chore(deps): bump github.com/stretchr/testify from 1.9.0 to 1.10.0 (<a
href="https://redirect.github.com/ory/dockertest/issues/547">#547</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/ory/dockertest/compare/v3.11.0...v3.12.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/ory/dockertest/v3&package-manager=go_modules&previous-version=3.11.0&new-version=3.12.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>
2025-04-07 12:03:43 +00:00
dependabot[bot] 4615d29698 chore: bump the x group across 1 directory with 6 updates (#17272)
Bumps the x group with 3 updates in the / directory:
[golang.org/x/crypto](https://github.com/golang/crypto),
[golang.org/x/net](https://github.com/golang/net) and
[golang.org/x/oauth2](https://github.com/golang/oauth2).

Updates `golang.org/x/crypto` from 0.36.0 to 0.37.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/crypto/commit/959f8f3db0fb8c3fb1f9507101058dda21e1fdcf"><code>959f8f3</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="https://github.com/golang/crypto/commit/769bcd6997ac6f3154e27b73b3587295f7720e66"><code>769bcd6</code></a>
ssh: use the configured rand in kex init</li>
<li><a
href="https://github.com/golang/crypto/commit/d0a798f774735c176ed0d3500ac986957a02660f"><code>d0a798f</code></a>
cryptobyte: fix typo 'octects' into 'octets' for asn1.go</li>
<li><a
href="https://github.com/golang/crypto/commit/acbcbef23f9b1b3b7c64673f0ed8baa83475edbe"><code>acbcbef</code></a>
acme: remove unnecessary []byte conversion</li>
<li><a
href="https://github.com/golang/crypto/commit/376eb1400636d0d687bee5520daadb5fdeac3311"><code>376eb14</code></a>
x509roots: support constrained roots</li>
<li><a
href="https://github.com/golang/crypto/commit/b369b723c8ad46b179f3a49d57bfc7d6a2740cdf"><code>b369b72</code></a>
crypto/internal/poly1305: implement function update in assembly on
loong64</li>
<li><a
href="https://github.com/golang/crypto/commit/6b853fbea37a941d918ac0760a5492802df42b9b"><code>6b853fb</code></a>
ssh/knownhosts: check more than one key</li>
<li>See full diff in <a
href="https://github.com/golang/crypto/compare/v0.36.0...v0.37.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `golang.org/x/net` from 0.37.0 to 0.38.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/net/commit/e1fcd82abba34df74614020343be8eb1fe85f0d9"><code>e1fcd82</code></a>
html: properly handle trailing solidus in unquoted attribute value in
foreign...</li>
<li><a
href="https://github.com/golang/net/commit/ebed060e8f30f20235f74808c22125fd86b15edd"><code>ebed060</code></a>
internal/http3: fix build of tests with GOEXPERIMENT=nosynctest</li>
<li><a
href="https://github.com/golang/net/commit/1f1fa29e0a46fffe18c43a9da8daa5a0b180dfa9"><code>1f1fa29</code></a>
publicsuffix: regenerate table</li>
<li><a
href="https://github.com/golang/net/commit/12150816f701c912a32a376754ab28dd3878833a"><code>1215081</code></a>
http2: improve error when server sends HTTP/1</li>
<li><a
href="https://github.com/golang/net/commit/312450e473eae9f9e6173ad895c80bc5ea2f79ad"><code>312450e</code></a>
html: ensure &lt;search&gt; tag closes &lt;p&gt; and update tests</li>
<li><a
href="https://github.com/golang/net/commit/09731f9bf919b00b344c763894cd1920b3d96d90"><code>09731f9</code></a>
http2: improve handling of lost PING in Server</li>
<li><a
href="https://github.com/golang/net/commit/55989e24b972a90ab99308fdc7ea1fb58a96fef1"><code>55989e2</code></a>
http2/h2c: use ResponseController for hijacking connections</li>
<li><a
href="https://github.com/golang/net/commit/2914f46773171f4fa13e276df1135bafef677801"><code>2914f46</code></a>
websocket: re-recommend gorilla/websocket</li>
<li>See full diff in <a
href="https://github.com/golang/net/compare/v0.37.0...v0.38.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `golang.org/x/oauth2` from 0.28.0 to 0.29.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/oauth2/commit/65c15a35147ccc5127e9f8cdf2e07837596e56b4"><code>65c15a3</code></a>
oauth2: remove extra period</li>
<li><a
href="https://github.com/golang/oauth2/commit/ce56909505b351a755ad0bc294c5ee01ed0ea050"><code>ce56909</code></a>
jws: improve fix for CVE-2025-22868</li>
<li>See full diff in <a
href="https://github.com/golang/oauth2/compare/v0.28.0...v0.29.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `golang.org/x/sync` from 0.12.0 to 0.13.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/sync/commit/396f3a06ea2a49eb410f12e244c0dd77095d0de9"><code>396f3a0</code></a>
errgroup: document calling Go before Wait</li>
<li>See full diff in <a
href="https://github.com/golang/sync/compare/v0.12.0...v0.13.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `golang.org/x/sys` from 0.31.0 to 0.32.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/sys/commit/01aaa8342f9d6e36356d05d0baff28e64ee6367e"><code>01aaa83</code></a>
all: simplify code by using modern Go constructs</li>
<li><a
href="https://github.com/golang/sys/commit/1b2bd6bb49091efddfc5ca87435bcea9e2090720"><code>1b2bd6b</code></a>
windows: replace all StringToUTF16 calls with UTF16FromString</li>
<li><a
href="https://github.com/golang/sys/commit/1c3b72f1c1fa7f3a3a355c7a963cd1c958135d01"><code>1c3b72f</code></a>
unix: update Linux kernel to 6.14</li>
<li><a
href="https://github.com/golang/sys/commit/c175b6ba6781614eadf22a0727389d97e25f72ee"><code>c175b6b</code></a>
windows: add cmsghdr and pktinfo structures</li>
<li><a
href="https://github.com/golang/sys/commit/3330b5e756f9a4ffd9510bc98b4c8b5b6d05b9c7"><code>3330b5e</code></a>
unix: support Readv, Preadv, Writev and Pwritev for darwin</li>
<li><a
href="https://github.com/golang/sys/commit/7401cce31392295f531e1d0fcc2f01d782353300"><code>7401cce</code></a>
cpu: replace specific instructions with WORD in the function get_cpucfg
on lo...</li>
<li><a
href="https://github.com/golang/sys/commit/b8f7da6c5a244c4015da1e739f7f40b21f4c40c8"><code>b8f7da6</code></a>
cpu: add support for detecting cpu features on loong64</li>
<li><a
href="https://github.com/golang/sys/commit/f2ce62c21a0ddb543d412be19f3168b09d76d1b8"><code>f2ce62c</code></a>
windows: add constants for PMTUD socket options</li>
<li>See full diff in <a
href="https://github.com/golang/sys/compare/v0.31.0...v0.32.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `golang.org/x/term` from 0.30.0 to 0.31.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/term/commit/5d2308b09df8e012ed012f73c878253d901b7f56"><code>5d2308b</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="https://github.com/golang/term/commit/e770dddbf5e3084c939760c50ca84c1adee9c4c4"><code>e770ddd</code></a>
x/term: disabling auto-completion around GetPassword()</li>
<li>See full diff in <a
href="https://github.com/golang/term/compare/v0.30.0...v0.31.0">compare
view</a></li>
</ul>
</details>
<br />


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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-07 11:59:56 +00:00
Sas Swart 0b2b643ce2 feat: persist prebuild definitions on template import (#16951)
This PR allows provisioners to recognise and report prebuild definitions
to the coder control plane. It also allows the coder control plane to
then persist these to its store.

closes https://github.com/coder/internal/issues/507

---------

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
Co-authored-by: Danny Kopping <dannykopping@gmail.com>
Co-authored-by: evgeniy-scherbina <evgeniy.shcherbina.es@gmail.com>
2025-04-07 10:35:28 +02:00
Mathias Fredriksson 074ec2887d test(agent/agentssh): fix test race and improve Windows compat (#17271)
Fixes coder/internal#558
2025-04-07 11:32:37 +03:00
Spike Curtis 59c5bc9bd2 feat: add hostname-suffix option to config-ssh (#17270)
Adds `hostname-suffix` as a Config SSH option that we get from Coderd, and also accept via a CLI flag.

It doesn't actually do anything with this value --- that's for PRs up the stack, since we need the `coder ssh` command to be updated to understand the suffix first.
2025-04-07 12:11:04 +04:00
Spike Curtis 24248736ac feat: add host suffix to /api/v2/deployment/ssh (#17269)
Adds `HostnameSuffix` to ssh config API and deprecates `HostnamePrefix`. We will still support setting and using the prefix for some time.
2025-04-07 11:57:10 +04:00
Spike Curtis 87d9ff0973 feat: add CODER_WORKSPACE_HOSTNAME_SUFFIX (#17268)
Adds deployment option `CODER_WORKSPACE_HOSTNAME_SUFFIX`. This will eventually replace `CODER_SSH_HOSTNAME_PREFIX`, but we will do this slowly and support both for `coder ssh` for some time.

Note that the name is changed to "workspace" hostname, since this suffix will also be used for Coder Connect on Coder Desktop, which is not limited to SSH.
2025-04-07 11:35:47 +04:00
Vincent Vielle 8f665e364a chore: remove notifications beta label (#17263)
Some notifications `beta` label were remaining after the previous PR -
removing it.
2025-04-06 23:50:18 +02:00
Edward Angert f475555d06 docs: document that default GitHub app requires device flow (#17162)
## Issue

Closes #16824

Document that the default GitHub authentication app provided by Coder
requires device flow, and that this behavior cannot be overridden.

## Changes Made

Claude updated the GitHub authentication documentation to:

1. Add a prominent warning in the Default Configuration section
explaining that the default GitHub app requires device flow and ignores
the `CODER_OAUTH2_GITHUB_DEVICE_FLOW` setting
2. Clarify the Device Flow section to indicate that:
   - Device flow is always enabled for the default GitHub app
   - Device flow is optional for custom GitHub OAuth apps
- The `CODER_OAUTH2_GITHUB_DEVICE_FLOW` setting is ignored when using
the default app


[preview](https://coder.com/docs/@16824-github-device-flow/admin/users/github-auth)

<sub>🤖 Generated with [Claude Code](https://claude.ai/code)</sub>

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: M Atif Ali <atif@coder.com>
2025-04-05 21:44:13 -04:00
Aaron Lehmann e9863aba81 fix: log correct error on drpc connection close error (#17265) 2025-04-04 22:09:42 +03:00
dependabot[bot] cfb6d56f62 chore: bump vite from 5.4.16 to 5.4.17 in /site (#17266)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite)
from 5.4.16 to 5.4.17.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/releases">vite's
releases</a>.</em></p>
<blockquote>
<h2>v5.4.17</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.17/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/blob/v5.4.17/packages/vite/CHANGELOG.md">vite's
changelog</a>.</em></p>
<blockquote>
<h2><!-- raw HTML omitted -->5.4.17 (2025-04-03)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19782">#19782</a>,
fs check with svg and relative paths (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19784">#19784</a>)
(<a
href="https://github.com/vitejs/vite/commit/84b2b46ed129be8215108e789a90adbb33a9c42c">84b2b46</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19782">#19782</a>
<a
href="https://redirect.github.com/vitejs/vite/issues/19784">#19784</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/vitejs/vite/commit/0a2518a98d2354c61ee8ef51f7d00fa92aebb511"><code>0a2518a</code></a>
release: v5.4.17</li>
<li><a
href="https://github.com/vitejs/vite/commit/84b2b46ed129be8215108e789a90adbb33a9c42c"><code>84b2b46</code></a>
fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19782">#19782</a>,
fs check with svg and relative paths (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19784">#19784</a>)</li>
<li>See full diff in <a
href="https://github.com/vitejs/vite/commits/v5.4.17/packages/vite">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=vite&package-manager=npm_and_yarn&previous-version=5.4.16&new-version=5.4.17)](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)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/coder/coder/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-04 18:10:01 +00:00
brettkolodny ae7afd1aa0 feat: split cli roles edit command into create and update commands (#17121)
Closes #14239
2025-04-04 14:04:20 -04:00
Jaayden Halko 53af7e1b90 feat: add shadcn radio-group component (#17264)
Based on the Figma designs:
https://www.figma.com/design/WfqIgsTFXN2BscBSSyXWF8/Coder-kit?node-id=1786-4794&t=EAs4E89RAJLhivNj-1

<img width="127" alt="Screenshot 2025-04-04 at 16 38 14"
src="https://github.com/user-attachments/assets/e4c72fa9-0491-4674-aeb8-ed0ca4a58649"
/>
2025-04-04 14:00:13 -04:00
Charlie Voiselle b000a7a093 docs: update markdown list in scale-coder.md (#17262) 2025-04-04 12:15:13 -04:00
Bruno Quaresma 17664f481e refactor: update provisioners page to match the new design (#17232)
**Demo**


https://github.com/user-attachments/assets/b880326c-7e94-4778-8166-91af7699901e



Closes https://github.com/coder/coder/issues/17221
2025-04-04 12:00:40 -03:00
Jon Ayers 900eb251eb chore: update Terraform to 1.11.3 (#17256)
- Generated with Claude Code
2025-04-04 10:31:45 -04:00
Vincent Vielle 6a624e7476 chore: remove beta tag from notifications (#17251)
Related to [this issue](https://github.com/coder/internal/issues/557)
2025-04-04 16:28:37 +02:00
Jaayden Halko 8a24372e4d feat: add shadcn checkbox component (#17248)
contributes to coder/preview#55

Add shadcn checkbox component matching Figma styles from Coder Kit:
https://www.figma.com/design/WfqIgsTFXN2BscBSSyXWF8/Coder-kit?node-id=489-4187&t=Zx137ETWsQZtaCku-1

<img width="52" alt="Screenshot 2025-04-03 at 21 15 52"
src="https://github.com/user-attachments/assets/ff2de95c-cb12-46ed-af31-a6d230e52a31"
/>
2025-04-04 10:05:21 -04:00
Jaayden Halko ae67e33c66 fix: set permissions for experimental Createworkspace page (#17254) 2025-04-04 09:59:01 -04:00
Bruno Quaresma 510bc37cbc refactor: update avatar sizes in groups, users and members (#17230)
We updated the template and workspace avatars to be "lg" so to keep it
consistent we have to do the same for the other avatars too.
2025-04-04 10:09:37 -03:00
Bruno Quaresma 3bfafe3b43 feat: add job status filter (#17202)
Closes https://github.com/coder/coder/issues/17155

**Demo:**


https://github.com/user-attachments/assets/fc57e991-c2d5-4712-adac-e072ee7b318d
2025-04-04 10:02:36 -03:00
Edward Angert 43d584c4f3 docs: add a section about latency and how it's measured (#16734)
closes https://github.com/coder/coder/issues/14942

- what latency is measured
- where it's reported
- how users experience latency
- how to lower latency



[preview](https://coder.com/docs/@14942-latency/admin/networking#latency)

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-04-04 08:12:11 -04:00
Spike Curtis 42e5d71f59 fix: fix closeMutex unlock bug (#17259)
Fixes https://github.com/coder/internal/issues/550

Classic return before unlocking bug.
2025-04-04 14:29:56 +04:00
Spike Curtis f6bf6c6ec4 fix!: use names not IDs for agent SSH key seed (#17258)
Changes the SSH host key seeding to use the owner username, workspace name, and agent name. This prevents SSH from complaining about a mismatched host key if you use Coder Desktop to connect, and delete and recreate your workspace with the same name. Previously this would generate a different key because the workspace ID changed.

We also include the owner's username in anticipation of using Coder Desktop to access shared workspaces (or as a superuser) down the road, so that workspaces with the same name owned by different users will not have the same key.

This change is **BREAKING** in a limited sense that early access users of Coder Desktop will see their SSH clients complain about host keys changing the first time each workspace is rebuilt with this code. It can be resolved by clearing your `.ssh/known_hosts` file of the Coder workspaces you access this way.
2025-04-04 12:51:46 +04:00
Jon Ayers 3a0e8ddf97 chore: update esbuild to 0.25.0 (#17214)
- Resolves GHSA-67mh-4wv8-2f99
2025-04-04 02:21:32 -04:00
brettkolodny e64140e999 fix: fix frontend build errors (#17252) 2025-04-03 18:02:39 -04:00
Jaayden Halko 54ff17bec6 feat: create experimental CreateWorkspacePage and dynamic-parameters experiment (#17240)
The purpose of the PR is to make a copy of the CreateWorkspacePage and
create an experimental version that will use when the dynamic-parameters
experiment is enabled.

The Figma designs for this page are still in progress but this first PR
will start to move to the new designs.

Figma design:
https://www.figma.com/design/SMg6H8VKXnPSkE6h9KPoAD/UX-Presets?node-id=2121-2383&t=CtgPUz8eNsTI5b1t-1

Much of the existing code will be left behind and will slowly migrated
over the course of several PRs to make sure no existing functionality is
forgotten in the migration to dynamic paramaters.
2025-04-03 16:39:12 -04:00
Jon Ayers ae44ecfc07 chore: update prismjs to 1.30.0 (#17215)
- Resolves GHSA-x7hr-w5r2-h6wg
2025-04-03 14:13:34 -04:00
Jaayden Halko ccfe1bda1a fix: fix permissions for workspace creation (#17241)
This fixes the permissions check when creating a workspace by setting
the owner_id to the current user's id. This was originally setting
owner_id to *

```
		createWorkspace: {
			object: {
				resource_type: "workspace",
				organization_id: organizationId,
				owner_id: userId,
			},
			action: "create",
		},
```
2025-04-03 11:46:33 -04:00
Mathias Fredriksson b61f0ab958 fix(agent): ensure SSH server shutdown with process groups (#17227)
Fix hanging workspace shutdowns caused by orphaned SSH child processes.
Key changes:

- Create process groups for non-PTY SSH sessions
- Send SIGHUP to entire process group for proper termination
- Add 5-second timeout to prevent indefinite blocking

Fixes #17108
2025-04-03 16:01:43 +03:00
Jaayden Halko b60934b180 chore: hide workspace creation UI for users without permission (#16871)
resolves coder/internal#426
2025-04-03 06:14:25 -04:00
Danielle Maywood ab8c437abc feat(site): open dev container in vscode (#17182)
Closes https://github.com/coder/coder/issues/16426

Adds a new button `VSCodeDevContainerButton` for connecting to a dev
container with VSCode.
2025-04-03 11:10:38 +01:00
Danielle Maywood aa3d71d169 feat(cli): support opening devcontainers in vscode (#17189)
Closes https://github.com/coder/coder/issues/16427

Adds the option `-c,--container` to `open vscode` that allows opening
VSCode into a running devcontainer.
2025-04-03 10:21:23 +01:00
Sas Swart 99c6f235eb feat: add migrations and queries to support prebuilds (#16891)
Depends on https://github.com/coder/coder/pull/16916 _(change base to
`main` once it is merged)_

Closes https://github.com/coder/internal/issues/514

_This is one of several PRs to decompose the `dk/prebuilds` feature
branch into separate PRs to merge into `main`._

---------

Signed-off-by: Danny Kopping <dannykopping@gmail.com>
Co-authored-by: Danny Kopping <dannykopping@gmail.com>
Co-authored-by: evgeniy-scherbina <evgeniy.shcherbina.es@gmail.com>
2025-04-03 10:58:30 +02:00
Cian Johnston 4aa45a5c43 fix(cli): modify exp mcp configure to also read claude API key from CLAUDE_API_KEY env (#17229)
Currently you have to set `CODER_MCP_CLAUDE_API_KEY`, which can be
obnoxious.
2025-04-03 09:45:17 +01:00
Ethan 998724de91 chore: sort agent /list-directory output (#17218)
This sorts the `contents` list alphabetically, but with directories before everything else.
This is purely for UX on the Coder Desktop side, where the user only really cares about directories, and files are just for providing context in the file picker.
2025-04-03 12:31:46 +11:00
ケイラ 5979c3224d chore: skip flakey e2e tests (#17235) 2025-04-02 17:38:52 -06:00
ケイラ ac7ea08873 chore: add files cache for reading template tar archives from db (#17141) 2025-04-02 16:42:16 -06:00
dependabot[bot] c06294235f chore: bump next from 14.2.25 to 14.2.26 in /offlinedocs (#17234)
Bumps [next](https://github.com/vercel/next.js) from 14.2.25 to 14.2.26.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vercel/next.js/releases">next's
releases</a>.</em></p>
<blockquote>
<h2>v14.2.26</h2>
<blockquote>
<p>[!NOTE]<br />
This release is backporting bug fixes. It does <strong>not</strong>
include all pending features/changes on canary.</p>
</blockquote>
<h3>Core Changes</h3>
<ul>
<li>Match subrequest handling for edge and node (<a
href="https://redirect.github.com/vercel/next.js/issues/77476">#77476</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/vercel/next.js/commit/10a042cdca294fd1c6852b320954bc6ccc6064e7"><code>10a042c</code></a>
v14.2.26</li>
<li><a
href="https://github.com/vercel/next.js/commit/8a511d6a22d38132c79b8f70ee29713d42225802"><code>8a511d6</code></a>
Match subrequest handling for edge and node (<a
href="https://redirect.github.com/vercel/next.js/issues/77476">#77476</a>)</li>
<li>See full diff in <a
href="https://github.com/vercel/next.js/compare/v14.2.25...v14.2.26">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=next&package-manager=npm_and_yarn&previous-version=14.2.25&new-version=14.2.26)](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)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/coder/coder/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-02 22:42:01 +00:00
Michael Smith c938bfeaab fix: prevent invalid render output for build logs (#17233)
## Changes made
- Updated `Line` type in `LogLine.tsx` to support an ID value to prevent
key conflicts during React rendering. Also deleted the `LineWithID`
type, which became redundant after the change
- Updated the `Logs` component to use the ID to avoid render key
conflicts
- Updated any component calls to add the ID as a prop

## Notes
- This does prevent a bunch of extra `console.error` calls that React
will automatically spit out, so this should help us a good bit in the
future
- Beyond being a little annoying, there was a chance (that was tiny for
now) that React could accidentally mix up component instances during
re-renders. That wasn't my main goal with this PR (I just wanted less
noisy logs), but that should now be impossible
2025-04-02 17:32:49 -04:00
Edward Angert 0fe7346264 docs: remove enterprise from docs (#17226)
Enterprise is a legacy plan that has been replaced by Premium.

[preview](https://coder.com/docs/@enterprise-feats)

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-04-02 16:51:57 -04:00
Cian Johnston e8b7ce80de ci: re-enable revive and gosec linters (#17225)
* Reenables revive linter for test files (with an exception for the
`unused-parameter` rule)
* Reenables gosec linter for test files
2025-04-02 16:19:23 +01:00
Spike Curtis 83d7147e02 chore: deprecate ResourceSystem (#17217)
Deprecates `ResourceSystem`. It's a large collection of unrelated things, and violates the principle of least privilege because to get access to low-security stuff like various statistics, you also get access to serious-security stuff like crypto keys.

We should eventually break it up and remove it, but the least we can do for now is not make the problem worse.
2025-04-02 19:17:26 +04:00
Michael Smith ac0cf35591 fix: silence One-Way WebSocket error messages in React Strict Mode (#17204)
## Changes made
- Updated `OneWayWebSocket` class to prevent errors from being
dispatched after a connection has been manually closed.
- Renamed one of the class properties for less ambiguity
- Made error messages for the class constructor more specific
2025-04-02 10:24:05 -04:00
Ben Potter c418e86a4d chore: slightly soften disclaimers for AI features (#17223) 2025-04-02 13:00:06 +00:00
Cian Johnston 0163ddaaee ci: linkspector: fix 403 to external site (#17222) 2025-04-02 13:56:02 +01:00
Ben Potter 13997cacb1 docs: clarify details around MCP (#17220) 2025-04-02 12:48:08 +00:00
Cian Johnston 8cecc4f12d chore(coderd/coderdtest/oidctest): protect mutable fields with rwmutex (#17151)
Protects mutable fields of `FakeIDP` to avoid data races.
2025-04-02 13:36:26 +01:00
Jon Ayers d6c034d2a3 chore: pin dogfood npm dependencies (#17216) 2025-04-02 03:54:49 -04:00
Jon Ayers b1f5d45112 chore: disable e2e-premium tests (#17213)
- These tests are providing no value in their current state due to the
frequency of their intermittent failures.
2025-04-02 07:26:12 +00:00
Ethan 6fdad0272d fix: avoid sharing echo.Responses across tests (#17211)
Closes https://github.com/coder/internal/issues/551

We've noticed lots of flakes in `go test -race` tests that use the echo provisioner. I believe the root cause of this to be https://github.com/coder/coder/pull/17012/, where we started mutating the `echo.Responses`. This only caused issues as we previously shared `echo.Responses` across multiple test cases.

This PR is therefore the same as https://github.com/coder/coder/pull/17128, but I believe this is all the cases where an `echo.Responses` is shared between tests - including tests that haven't flaked (yet).
2025-04-02 13:06:19 +11:00
Jon Ayers d575e7f3ff chore: force babel dependency to 7.26.10 (#17193)
A bunch of dependency issues with babel, it seems forcing an update to
7.26.10 is ok for now
2025-04-01 22:05:23 -04:00
Edward Angert 0ec87abaa5 docs: add new section on managing provisioners from the dashboard (#16563)
closes #16513 


[preview](https://coder.com/docs/@16513-manage-ext-provisioners/admin/provisioners/manage-provisioner-jobs)

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-04-01 21:04:31 -05:00
Edward Angert 0125ff4592 docs: add new workspace notifications dashboard and config (#16548)
closes #16511 


[preview](https://coder.com/docs/@16511-dashboard-vscode-notif/admin/monitoring/notifications)

(beta tag is removed in https://github.com/coder/coder/pull/17096)

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-04-01 21:03:55 -05:00
Edward Angert 2efb8088f4 docs: remove beta badge from notifications doc (#17096)
remove beta from notifications doc


[preview](https://coder.com/docs/@notifications-beta/admin/monitoring/notifications)

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-04-01 21:52:09 -04:00
Benjamin Peinhardt 51ce04780d fix: replace aliased import with unaliased import (#17207)
If you take a look at the comment above, these imports need to be
unaliased.
2025-04-01 20:27:51 -05:00
Asher c6e866225f fix: watch workspace agent logs (#17209) 2025-04-01 17:18:44 -08:00
Ben Potter a61c3e7a1c docs: add tutorials for using early access AI agent features (#17186)
Some content is still being merged, but the structure is still there

Preview: https://coder.com/docs/@ai-features/tutorials/ai-agents
2025-04-01 19:57:05 -05:00
Bruno Quaresma 4604f191e9 refactor: increase workspace and template avatar size (#17200)
**Before**
<img width="1363" alt="Screenshot 2025-04-01 at 14 46 10"
src="https://github.com/user-attachments/assets/d3d76d70-df16-4b27-a138-e493e0bcac83"
/>
<img width="1360" alt="Screenshot 2025-04-01 at 14 45 55"
src="https://github.com/user-attachments/assets/bbae38fe-6ed2-42fa-99b0-e24f6c8d382d"
/>

**After**
<img width="1359" alt="Screenshot 2025-04-01 at 14 46 18"
src="https://github.com/user-attachments/assets/230b606b-fd5f-4e42-9ca2-56ddb2e1f617"
/>
<img width="1362" alt="Screenshot 2025-04-01 at 14 46 02"
src="https://github.com/user-attachments/assets/b22d4b59-4660-47dd-a362-e8d842dd2a82"
/>
2025-04-01 21:29:36 -03:00
Stephen Kirby a3248f9364 chore(docs): move feature stage docs to install directory (#17199)
I think the feature stages page should be co-located with releases and
not at the entrance of the docs.


[preview](https://coder.com/docs/@move-feature-stages/install/releases/feature-stages)

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
2025-04-01 18:44:51 -05:00
ケイラ 184c1f0a59 chore: add db queries for dynamic parameters (#17137) 2025-04-01 15:47:30 -06:00
Ben Potter fd241164a9 docs: clarify that CODER_EXTERNAL_AUTH_0_ID is used in callback URLs (#16879)
## Summary
- Clarifies that the CODER_EXTERNAL_AUTH_0_ID value is used as part of
the OAuth callback URL path
- Adds explicit callback URL examples to GitLab and Bitbucket Server
sections
- Updates the GitHub OAuth app configuration instructions to be more
explicit
- Fixes the documentation mistake where it claimed this ID was only for
"internal reference"

## Test plan
- Documentation change only
- Verified consistency across all OAuth provider sections

Fixes #16851


[preview](https://coder.com/docs/@fix-external-auth-docs-16851/admin/external-auth)

<sub>🤖 Generated with [Claude Code](https://claude.ai/code)</sub>

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
Co-authored-by: Edward Angert <EdwardAngert@users.noreply.github.com>
Co-authored-by: M Atif Ali <atif@coder.com>
2025-04-01 17:03:25 -04:00
Sas Swart 00e1ea4ccf feat: add the ability to hide preset parameters (#17168)
This PR adds the ability to hide presets on the workspace creation form.
When showing them, a clear indication is now made as to which inputs
were preset and which weren't.


![image](https://github.com/user-attachments/assets/6c8f690c-7cf6-44a9-9657-65039b2b3cb7)
2025-04-01 22:51:42 +02:00
Cian Johnston 88bae05223 feat(cli): implement exp mcp configure claude-code command (#17195)
Updates `~/.claude.json` and `~/.claude/CLAUDE.md` with required
settings for agentic usage.
2025-04-01 20:06:42 +01:00
Kyle Carberry f3e5bb9276 fix: convert workspace id in db2sdk.WorkspaceAppStatus (#17201)
This was causing no status to be rendered in the list, and
`latest_app_status` to always be nil.
2025-04-01 14:49:32 -04:00
Edward Angert 900e125e4a docs: update SMTP configuration in notifications docs (#17161)
## Issue

Closes #16206

(thanks @bjornrobertsson - not sure why I can't tag you as a reviewer)

Mismatch between the SMTP configuration UI and the documentation.

## Verification

Claude verified this issue by examining:

1. The current SMTP configuration code in the codebase
2. The CLI help documentation for the server command
3. The examples provided in the notifications documentation

The issue was confirmed by finding:
- A reference to a deprecated variable
`CODER_NOTIFICATIONS_EMAIL_FORCE_TLS` instead of the current
`CODER_EMAIL_FORCE_TLS`
- Missing information about the port format required for the SMTP
smarthost

## Changes made

1. Updated the `--email-smarthost` description to clarify that the
format should include both hostname and port: `(format:
     hostname:port)`
2. Fixed the reference to the TLS environment variable in the STARTTLS
description, replacing the deprecated
`CODER_NOTIFICATIONS_EMAIL_FORCE_TLS` with the correct
`CODER_EMAIL_FORCE_TLS`

## Additional information

The Gmail and Outlook examples in the documentation already correctly
show the port included in the smarthost configuration, but the main
description table needed to be updated to explicitly mention this
requirement.


[preview](https://coder.com/docs/@16206-smtp-required-components/admin/monitoring/notifications)

<sub>🤖 Generated with [Claude Code](https://claude.ai/code)</sub>

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-04-01 14:44:09 -04:00
Kyle Carberry 583a0c652f feat: add frontend for app statuses (#17178)
Check out the stories for the exacts...


![image](https://github.com/user-attachments/assets/a1e1b9b0-7b37-4e0d-b99e-64b4766519ef)


![image](https://github.com/user-attachments/assets/d3eb580d-071c-4caf-b393-a7e87da61f5e)
2025-04-01 12:35:58 -04:00
Cian Johnston 27d2343adf fix(cli): exp mcp: remove unnecessary cli flag (#17190) 2025-04-01 16:53:18 +01:00
Edward Angert 037dbc84da docs: add new cursor and windsurf docs (#17092)
closes #16919 

- [x] cursor doc
- [x] windsurf doc

from
https://github.com/coder/coder/issues/16919#issuecomment-2737033477:
- add to access-workspace
- link to module(s)
- how to windsurf with ssh
- temp: install vsix manually (Windsurf)
   - from <https://github.com/coder/vscode-coder>
- log in first
- search extensions for Coder
- ask your admin to add a module:
https://registry.coder.com/modules/cursor

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
Co-authored-by: M Atif Ali <atif@coder.com>
2025-04-01 20:13:32 +05:00
Michael Smith fcac4abcca fix(site): standardize headers for Admin Settings page (#16911)
## Changes made
- Switched almost all headers to use the `SettingHeader` component
- Redesigned component to be more composition-based, to stay in line
with the patterns we're starting to use more throughout the codebase
- Refactored `SettingHeader` to be based on Radix and Tailwind, rather
than Emotion/MUI
- Added additional props to `SettingHeader` to help resolve issues with
the component creating invalid HTML
- Beefed up `SettingHeader` to have better out-of-the-box accessibility
- Addressed some typographic problems in `SettingHeader`
- Addressed some responsive layout problems for `SettingsHeader`
- Added first-ever stories for `SettingsHeader`

## Notes
- There are still a few headers that aren't using `SettingHeader` yet.
There were some UI edge cases that meant I couldn't reliably bring it in
without consulting the Design team first. I'm a little less worried
about them, because they at least *look* like the other headers, but
it'd be nice if we could centralize everything in a followup PR
2025-04-01 10:13:56 -04:00
Cian Johnston 1e11e823c9 fix(mcp): report task status correctly (#17187) 2025-04-01 15:02:08 +01:00
Ethan 3a243c111b fix: remove shared mutable state between oidc tests (#17179)
Spotted on main: https://github.com/coder/coder/actions/runs/14179449567/job/39721999486
```
=== FAIL: coderd TestOIDCDomainErrorMessage/MalformedEmailErrorOmitsDomains (0.01s)
==================
WARNING: DATA RACE
Read at 0x00c060b54e68 by goroutine 296485:
  golang.org/x/oauth2.(*Config).Exchange()
      /home/runner/go/pkg/mod/golang.org/x/oauth2@v0.28.0/oauth2.go:228 +0x1d8
  github.com/coder/coder/v2/coderd.(*OIDCConfig).Exchange()
      <autogenerated>:1 +0xb7
  github.com/coder/coder/v2/coderd.New.func11.12.1.2.ExtractOAuth2.1.1()
      /home/runner/work/coder/coder/coderd/httpmw/oauth2.go:168 +0x7b5
  net/http.HandlerFunc.ServeHTTP()
      /opt/hostedtoolcache/go/1.24.1/x64/src/net/http/server.go:2294 +0x47
[...]
Previous write at 0x00c060b54e68 by goroutine 55730:
  github.com/coder/coder/v2/coderd/coderdtest/oidctest.(*FakeIDP).SetRedirect()
      /home/runner/work/coder/coder/coderd/coderdtest/oidctest/idp.go:1280 +0x1e6
  github.com/coder/coder/v2/coderd/coderdtest/oidctest.(*FakeIDP).LoginWithClient()
      /home/runner/work/coder/coder/coderd/coderdtest/oidctest/idp.go:494 +0x170
  github.com/coder/coder/v2/coderd/coderdtest/oidctest.(*FakeIDP).AttemptLogin()
      /home/runner/work/coder/coder/coderd/coderdtest/oidctest/idp.go:479 +0x624
  github.com/coder/coder/v2/coderd_test.TestOIDCDomainErrorMessage.func3()
      /home/runner/work/coder/coder/coderd/userauth_test.go:2041 +0x1f2
```

As seen, this race was caused by sharing a `*oidctest.FakeIDP` between test cases. The fix is to simply do the setup twice.

```
$ go test -race -run "TestOIDCDomainErrorMessage" github.com/coder/coder/v2/coderd -count=100
ok      github.com/coder/coder/v2/coderd        7.551s
````
2025-04-01 22:28:05 +11:00
Hugo Dutka 7d08bf0afe chore: improve error logging in TestServer/EphemeralDeployment (#17184)
There's a flake reported in https://github.com/coder/internal/issues/549
that was caused by the built-in Postgres failing to start. However, the
test was written in a way that didn't log the actual error which caused
Postgres to fail. This PR improves error logging in the affected test so
that the next time the error happens, we know what it is.
2025-04-01 13:23:06 +02:00
Cian Johnston e4cf18989c chore(mcp): fix test flakes (#17183)
Closes https://github.com/coder/internal/issues/547
2025-04-01 11:28:47 +01:00
Cian Johnston cc733aba71 ci: check go versions are consistent (#17149)
Fixes https://github.com/coder/coder/issues/17063

I'm ignoring flake.nix for now.

```
$ IGNORE_NIX=true ./scripts/check_go_versions.sh
INFO : go.mod                   : 1.24.1
INFO : dogfood/coder/Dockerfile : 1.24.1
INFO : setup-go/action.yaml     : 1.24.1
INFO : flake.nix                : 1.22
INFO : Ignoring flake.nix, as IGNORE_NIX=true
Go version check passed, all versions are 1.24.1

$ ./scripts/check_go_versions.sh
INFO : go.mod                   : 1.24.1
INFO : dogfood/coder/Dockerfile : 1.24.1
INFO : setup-go/action.yaml     : 1.24.1
INFO : flake.nix                : 1.22
ERROR: Go version mismatch between go.mod and flake.nix
```
2025-04-01 09:03:54 +01:00
Jon Ayers 989c3ec62e chore: pin various dependencies in CI files (#17180) 2025-04-01 00:15:15 -04:00
Jon Ayers 83405677bf chore: pin goimports to 0.31.0 (#17177) 2025-03-31 22:56:21 -04:00
Jon Ayers 7b14b4f5e1 chore: update msw to 2.4.8 (#17167)
- Fixes a transitive vuln in path-to-regexp
2025-03-31 15:10:00 -04:00
dependabot[bot] 40de51b188 chore: bump vite from 5.4.15 to 5.4.16 in /site (#17176)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite)
from 5.4.15 to 5.4.16.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/releases">vite's
releases</a>.</em></p>
<blockquote>
<h2>v5.4.16</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.16/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/blob/v5.4.16/packages/vite/CHANGELOG.md">vite's
changelog</a>.</em></p>
<blockquote>
<h2><!-- raw HTML omitted -->5.4.16 (2025-03-31)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19761">#19761</a>,
fs check in transform middleware (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19762">#19762</a>)
(<a
href="https://github.com/vitejs/vite/commit/b627c50d359f3bd9b602408fbbf462cf4a2f019c">b627c50</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19761">#19761</a>
<a
href="https://redirect.github.com/vitejs/vite/issues/19762">#19762</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/vitejs/vite/commit/712cb71aa0e2a03dbf49db92043fb4ecbfc826b1"><code>712cb71</code></a>
release: v5.4.16</li>
<li><a
href="https://github.com/vitejs/vite/commit/b627c50d359f3bd9b602408fbbf462cf4a2f019c"><code>b627c50</code></a>
fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19761">#19761</a>,
fs check in transform middleware (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19762">#19762</a>)</li>
<li>See full diff in <a
href="https://github.com/vitejs/vite/commits/v5.4.16/packages/vite">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=vite&package-manager=npm_and_yarn&previous-version=5.4.15&new-version=5.4.16)](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)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/coder/coder/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-31 18:02:30 +00:00
Cian Johnston 057cbd4d80 feat(cli): add coder exp mcp command (#17066)
Adds a `coder exp mcp` command which will start a local MCP server
listening on stdio with the following capabilities:
* Show logged in user (`coder whoami`)
* List workspaces (`coder list`)
* List templates (`coder templates list`)
* Start a workspace (`coder start`)
* Stop a workspace (`coder stop`)
* Fetch a single workspace (no direct CLI analogue)
* Execute a command inside a workspace (`coder exp rpty`)
* Report the status of a task (currently a no-op, pending task support)

This can be tested as follows:

```
# Start a local Coder server.
./scripts/develop.sh
# Start a workspace. Currently, creating workspaces is not supported.
./scripts/coder-dev.sh create -t docker --yes
# Add the MCP to your Claude config.
claude mcp add coder ./scripts/coder-dev.sh exp mcp
# Tell Claude to do something Coder-related. You may need to nudge it to use the tools.
claude 'start a docker workspace and tell me what version of python is installed'
```
2025-03-31 18:52:09 +01:00
Kyle Carberry 8ea956fc11 feat: add app status tracking to the backend (#17163)
This does ~95% of the backend work required to integrate the AI work.

Most left to integrate from the tasks branch is just frontend, which
will be a lot smaller I believe.

The real difference between this branch and that one is the abstraction
-- this now attaches statuses to apps, and returns the latest status
reported as part of a workspace.

This change enables us to have a similar UX to in the tasks branch, but
for agents other than Claude Code as well. Any app can report status
now.
2025-03-31 10:55:44 -04:00
Bruno Quaresma 489641d0be feat: set icons for each type of notification (#17115)
Each notification type will have an icon to represent the context:

<img width="503" alt="Screenshot 2025-03-26 at 13 44 35"
src="https://github.com/user-attachments/assets/1187c1c0-1043-4a32-b105-a7f91b52f8ca"
/>

This depends on https://github.com/coder/coder/pull/17013
2025-03-31 09:40:24 -03:00
Michael Smith 9bc727e977 chore: add support for one-way websockets to backend (#16853)
Closes https://github.com/coder/coder/issues/16775

## Changes made
- Added `OneWayWebSocket` function that establishes WebSocket
connections that don't allow client-to-server communication
- Added tests for the new function
- Updated API endpoints to make new WS-based endpoints, and mark
previous SSE-based endpoints as deprecated
- Updated existing SSE handlers to use the same core logic as the new WS
handlers

## Notes
- Frontend changes handled via #16855
2025-03-28 17:13:20 -04:00
dependabot[bot] d3050a7e77 chore: bump github.com/prometheus/common from 0.62.0 to 0.63.0 (#16959)
Bumps
[github.com/prometheus/common](https://github.com/prometheus/common)
from 0.62.0 to 0.63.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/prometheus/common/releases">github.com/prometheus/common's
releases</a>.</em></p>
<blockquote>
<h2>v0.63.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Making the map a public variable for promtheus-operator by <a
href="https://github.com/dongjiang1989"><code>@​dongjiang1989</code></a>
in <a
href="https://redirect.github.com/prometheus/common/pull/741">prometheus/common#741</a></li>
<li>setup ossf scorecard and codeql workflows by <a
href="https://github.com/mmorel-35"><code>@​mmorel-35</code></a> in <a
href="https://redirect.github.com/prometheus/common/pull/564">prometheus/common#564</a></li>
<li>feat(promslog): implement reserved keys, rename duplicates by <a
href="https://github.com/tjhop"><code>@​tjhop</code></a> in <a
href="https://redirect.github.com/prometheus/common/pull/746">prometheus/common#746</a></li>
<li>Bump golang.org/x/oauth2 from 0.24.0 to 0.25.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/prometheus/common/pull/750">prometheus/common#750</a></li>
<li>Bump golang.org/x/net from 0.33.0 to 0.34.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/prometheus/common/pull/749">prometheus/common#749</a></li>
<li>Bump google.golang.org/protobuf from 1.36.1 to 1.36.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/prometheus/common/pull/751">prometheus/common#751</a></li>
<li>promslog: Make AllowedLevel concurrency safe. by <a
href="https://github.com/bwplotka"><code>@​bwplotka</code></a> in <a
href="https://redirect.github.com/prometheus/common/pull/754">prometheus/common#754</a></li>
<li>Fix typo 'the an' by <a
href="https://github.com/petern48"><code>@​petern48</code></a> in <a
href="https://redirect.github.com/prometheus/common/pull/752">prometheus/common#752</a></li>
<li>Synchronize common files from prometheus/prometheus by <a
href="https://github.com/prombot"><code>@​prombot</code></a> in <a
href="https://redirect.github.com/prometheus/common/pull/757">prometheus/common#757</a></li>
<li>build(deps): bump google.golang.org/protobuf from 1.36.3 to 1.36.4
by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>
in <a
href="https://redirect.github.com/prometheus/common/pull/756">prometheus/common#756</a></li>
<li>build(deps): bump google.golang.org/protobuf from 1.36.4 to 1.36.5
by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>
in <a
href="https://redirect.github.com/prometheus/common/pull/761">prometheus/common#761</a></li>
<li>build(deps): bump github.com/google/go-cmp from 0.6.0 to 0.7.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/prometheus/common/pull/763">prometheus/common#763</a></li>
<li>build(deps): bump golang.org/x/net from 0.34.0 to 0.35.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/prometheus/common/pull/762">prometheus/common#762</a></li>
<li>model: Clarify the purpose of model.NameValidationScheme by <a
href="https://github.com/ywwg"><code>@​ywwg</code></a> in <a
href="https://redirect.github.com/prometheus/common/pull/765">prometheus/common#765</a></li>
<li>Fix spelling mistake in godoc by <a
href="https://github.com/grobinson-grafana"><code>@​grobinson-grafana</code></a>
in <a
href="https://redirect.github.com/prometheus/common/pull/766">prometheus/common#766</a></li>
<li>Synchronize common files from prometheus/prometheus by <a
href="https://github.com/prombot"><code>@​prombot</code></a> in <a
href="https://redirect.github.com/prometheus/common/pull/767">prometheus/common#767</a></li>
<li>otlptranslator: Add dependency free package that translates OTLP
data into Prometheus metric/label names by <a
href="https://github.com/ArthurSens"><code>@​ArthurSens</code></a> in <a
href="https://redirect.github.com/prometheus/common/pull/768">prometheus/common#768</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/dongjiang1989"><code>@​dongjiang1989</code></a>
made their first contribution in <a
href="https://redirect.github.com/prometheus/common/pull/741">prometheus/common#741</a></li>
<li><a href="https://github.com/petern48"><code>@​petern48</code></a>
made their first contribution in <a
href="https://redirect.github.com/prometheus/common/pull/752">prometheus/common#752</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/prometheus/common/compare/v0.62.0...v0.63.0">https://github.com/prometheus/common/compare/v0.62.0...v0.63.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/prometheus/common/commit/cf3c56f7b7d09d67cb46592c5e930651fd2d296e"><code>cf3c56f</code></a>
Merge pull request <a
href="https://redirect.github.com/prometheus/common/issues/768">#768</a>
from prometheus/otlp-translator</li>
<li><a
href="https://github.com/prometheus/common/commit/b35ad995d20d280cd0bc1a30386a4e3bbdc032f5"><code>b35ad99</code></a>
Add test case for BuildCompliantMetricName with a metric that starts
with a d...</li>
<li><a
href="https://github.com/prometheus/common/commit/227989ceacbb831801f90965ed5e8c9c55749774"><code>227989c</code></a>
otlptranslator: Add dependency free package that translator OTLP data
into Pr...</li>
<li><a
href="https://github.com/prometheus/common/commit/a9cc7f7df30d52a26a3937c9d32953ef2bf452c6"><code>a9cc7f7</code></a>
Update common Prometheus files (<a
href="https://redirect.github.com/prometheus/common/issues/767">#767</a>)</li>
<li><a
href="https://github.com/prometheus/common/commit/0decf1fe7a23d909d3f5cd400b76b6d178eef576"><code>0decf1f</code></a>
Fix spelling mistake in godoc (<a
href="https://redirect.github.com/prometheus/common/issues/766">#766</a>)</li>
<li><a
href="https://github.com/prometheus/common/commit/6b9636ca14ecb6f8bb49d70aea6019c4cef93aab"><code>6b9636c</code></a>
model: Clarify the purpose of model.NameValidationScheme (<a
href="https://redirect.github.com/prometheus/common/issues/765">#765</a>)</li>
<li><a
href="https://github.com/prometheus/common/commit/56f6f3853a55cff5c626bc5a04993b3871ff260c"><code>56f6f38</code></a>
build(deps): bump golang.org/x/net from 0.34.0 to 0.35.0 (<a
href="https://redirect.github.com/prometheus/common/issues/762">#762</a>)</li>
<li><a
href="https://github.com/prometheus/common/commit/b516f6d622f0d210e24036fe64e2009fcc44885f"><code>b516f6d</code></a>
build(deps): bump github.com/google/go-cmp from 0.6.0 to 0.7.0 (<a
href="https://redirect.github.com/prometheus/common/issues/763">#763</a>)</li>
<li><a
href="https://github.com/prometheus/common/commit/0db99daa6f43d55a09dbb714fe3173182977bf8f"><code>0db99da</code></a>
build(deps): bump google.golang.org/protobuf from 1.36.4 to 1.36.5 (<a
href="https://redirect.github.com/prometheus/common/issues/761">#761</a>)</li>
<li><a
href="https://github.com/prometheus/common/commit/ca40aa08f025cc1a857cec6d6773363e959b4ea4"><code>ca40aa0</code></a>
build(deps): bump google.golang.org/protobuf from 1.36.3 to 1.36.4 (<a
href="https://redirect.github.com/prometheus/common/issues/756">#756</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/prometheus/common/compare/v0.62.0...v0.63.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/prometheus/common&package-manager=go_modules&previous-version=0.62.0&new-version=0.63.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>
Co-authored-by: Muhammad Atif Ali <atif@coder.com>
2025-03-28 20:10:06 +00:00
Jon Ayers 562a6c9ce0 chore: add .cursorrules config (#17160) 2025-03-28 19:33:13 +00:00
Mathias Fredriksson ac74c65fd7 test(cli): fix data race in TestCreateWithRichParameters (#17128)
Shared echo provisioner responses were being mutated simultaneously,
this change fixes it.
2025-03-28 14:02:58 +00:00
Cian Johnston a9574fb4b1 chore(cli): increase timeout for TestSSH_Container subtests (#17148)
Closes https://github.com/coder/internal/issues/524
2025-03-28 13:52:13 +00:00
Edward Angert c6799911dd docs: edit workspace lifecycle description (#17146)
thanks for pointing this out, @jmshoffs0812 !
2025-03-28 07:24:33 -04:00
Vincent Vielle 148dae1e9f fix: add fallback icons for notifications (#17013)
Related: https://github.com/coder/internal/issues/522
2025-03-28 12:21:48 +01:00
ケイラ ca414b031a fix: fix data race in echo provisioner (#17142) 2025-03-27 18:04:05 -06:00
Jon Ayers 1360bfe60d chore: fix false positives in CodeQL for TS (#17139)
Fixes some false positives flagged by CodeQL
2025-03-27 16:09:53 -05:00
Jon Ayers eded0ed4b6 chore: fix false positives in CodeQL (#17138)
Clears up some false positives being surfaced by CodeQL
2025-03-27 16:06:58 -05:00
Cian Johnston e1f27a7137 feat(site): add webpush notification serviceworker (#17123)
* Improves tests for webpush notifications
* Sets subscriber correctly in web push payload (without this,
notifications do not work in Safari)
* NOTE: for now, I'm using the Coder Access URL. Some push messaging
service don't like it when you use a non-HTTPS URL, so dropping a warn
log about this.
* Adds a service worker and context for push notifications
* Adds a button beside "Inbox" to enable / disable push notifications

Notes:
*  Tested in in Firefox and Safari, and Chrome.
2025-03-27 17:30:25 +00:00
Phorcys 661ed2376a chore(examples/templates): add ec2:DescribeInstanceStatus to permissions (#17134)
([Discord
message](https://discord.com/channels/747933592273027093/991429648200245358/1352357113204314173))

---

One of our community users has mentioned needing to add the
`ec2:DescribeInstanceStatus` to permissions.

From the [API
docs](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstanceStatus.html):
> Describes the status of the specified instances or all of your
instances

I think it's sensible to add it to our README example for the aws-*
templates, it's probably required now due to changes in either the AWS
API or Terraform provider, and shouldn't have a big impact.
2025-03-27 15:06:50 +00:00
Bruno Quaresma 3e64dcefaf chore: upgrade msw to 2.4.3 (#17135)
Fixes a transitive High severity dependency in path-to-regexp. 

We've tried to [upgrade to
2.5.0](https://github.com/coder/coder/pull/17124) (currently, the latest
version) but there are some known bugs related to polyfills as [this
one](https://github.com/mswjs/msw/discussions/2288). As shared in the
comments, the latest version without this issue is 2.4.3.
2025-03-27 12:00:54 -03:00
Bruno Quaresma 2b59cfa7c5 refactor: add nice enter animation for notification badge (#17119) 2025-03-27 11:43:44 -03:00
Eric Paulsen 5bd2a3f190 fix: conceal sensitive domain information in auth error messages (#17132)
## Summary
- Removes exposure of allowed domain list in OIDC authentication error
messages
- Replaces detailed error messages with a generic message that doesn't
expose internal domains
- Adds "Please contact your administrator" to guide users seeking
assistance
- Addresses security concern where third-party contractors could see
internal domain information

## Test plan
- Test accessing Coder with an email that doesn't match allowed domains
- Verify error message no longer displays the list of authorized domains
- Verify message now includes guidance to contact administrator

Fixes issue related to domain information exposure during
authentication. Linked issue:
https://github.com/coder/coder/issues/17130

🤖 Generated with [Claude Code](https://claude.ai/code)
2025-03-27 13:41:01 +00:00
Michael Vincent Patterson 0eec78d714 feat(cli): push dynamically generated templates with version name (#17114)
Closes #17031 
Updated tempatespush.go
2025-03-27 09:09:46 -04:00
Mathias Fredriksson 7d4b3c8634 feat(agent): add devcontainer autostart support (#17076)
This change adds support for devcontainer autostart in workspaces. The
preconditions for utilizing this feature are:

1. The `coder_devcontainer` resource must be defined in Terraform
2. By the time the startup scripts have completed,
	- The `@devcontainers/cli` tool must be installed
	- The given workspace folder must contain a devcontainer configuration

Example Terraform:

```tf
resource "coder_devcontainer" "coder" {
  agent_id         = coder_agent.main.id
  workspace_folder = "/home/coder/coder"
  config_path      = ".devcontainer/devcontainer.json" # (optional)
}
```

Closes #16423
2025-03-27 12:31:30 +02:00
dependabot[bot] 2ba3d77c74 chore: bump github.com/golang-jwt/jwt/v5 from 5.2.1 to 5.2.2 (#17126)
Bumps [github.com/golang-jwt/jwt/v5](https://github.com/golang-jwt/jwt)
from 5.2.1 to 5.2.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/golang-jwt/jwt/releases">github.com/golang-jwt/jwt/v5's
releases</a>.</em></p>
<blockquote>
<h2>v5.2.2</h2>
<h2>What's Changed</h2>
<ul>
<li>Fixed <a
href="https://github.com/golang-jwt/jwt/security/advisories/GHSA-mh63-6h87-95cp">https://github.com/golang-jwt/jwt/security/advisories/GHSA-mh63-6h87-95cp</a>
by <a
href="https://github.com/mfridman"><code>@​mfridman</code></a></li>
<li>Fixed some typos by <a
href="https://github.com/Ashikpaul"><code>@​Ashikpaul</code></a> in <a
href="https://redirect.github.com/golang-jwt/jwt/pull/382">golang-jwt/jwt#382</a></li>
<li>build: add go1.22 to ci workflows by <a
href="https://github.com/mfridman"><code>@​mfridman</code></a> in <a
href="https://redirect.github.com/golang-jwt/jwt/pull/383">golang-jwt/jwt#383</a></li>
<li>Bump golangci/golangci-lint-action from 4 to 5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/golang-jwt/jwt/pull/387">golang-jwt/jwt#387</a></li>
<li>Bump golangci/golangci-lint-action from 5 to 6 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/golang-jwt/jwt/pull/389">golang-jwt/jwt#389</a></li>
<li>chore: bump ci tests to include go1.23 by <a
href="https://github.com/mfridman"><code>@​mfridman</code></a> in <a
href="https://redirect.github.com/golang-jwt/jwt/pull/405">golang-jwt/jwt#405</a></li>
<li>Fix jwt -show by <a
href="https://github.com/AlexanderYastrebov"><code>@​AlexanderYastrebov</code></a>
in <a
href="https://redirect.github.com/golang-jwt/jwt/pull/406">golang-jwt/jwt#406</a></li>
<li>docs: typo by <a
href="https://github.com/kvii"><code>@​kvii</code></a> in <a
href="https://redirect.github.com/golang-jwt/jwt/pull/407">golang-jwt/jwt#407</a></li>
<li>Update SECURITY.md by <a
href="https://github.com/oxisto"><code>@​oxisto</code></a> in <a
href="https://redirect.github.com/golang-jwt/jwt/pull/416">golang-jwt/jwt#416</a></li>
<li>Update <code>jwt.Parse</code> example to use
<code>jwt.WithValidMethods</code> by <a
href="https://github.com/mattt"><code>@​mattt</code></a> in <a
href="https://redirect.github.com/golang-jwt/jwt/pull/425">golang-jwt/jwt#425</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Ashikpaul"><code>@​Ashikpaul</code></a>
made their first contribution in <a
href="https://redirect.github.com/golang-jwt/jwt/pull/382">golang-jwt/jwt#382</a></li>
<li><a href="https://github.com/kvii"><code>@​kvii</code></a> made their
first contribution in <a
href="https://redirect.github.com/golang-jwt/jwt/pull/407">golang-jwt/jwt#407</a></li>
<li><a href="https://github.com/mattt"><code>@​mattt</code></a> made
their first contribution in <a
href="https://redirect.github.com/golang-jwt/jwt/pull/425">golang-jwt/jwt#425</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/golang-jwt/jwt/compare/v5.2.1...v5.2.2">https://github.com/golang-jwt/jwt/compare/v5.2.1...v5.2.2</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang-jwt/jwt/commit/0951d184286dece21f73c85673fd308786ffe9c3"><code>0951d18</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/golang-jwt/jwt/commit/c035977d9e11c351f4c05dfeae193923cbab49ee"><code>c035977</code></a>
Update Parse example to use WithValidMethods (<a
href="https://redirect.github.com/golang-jwt/jwt/issues/425">#425</a>)</li>
<li><a
href="https://github.com/golang-jwt/jwt/commit/bc8bdca5cced1caa9787e4a1c313a3538544c877"><code>bc8bdca</code></a>
Update SECURITY.md (<a
href="https://redirect.github.com/golang-jwt/jwt/issues/416">#416</a>)</li>
<li><a
href="https://github.com/golang-jwt/jwt/commit/5ec246c074b71790eec1f2e05b54daf6ec29ec5f"><code>5ec246c</code></a>
docs: typo (<a
href="https://redirect.github.com/golang-jwt/jwt/issues/407">#407</a>)</li>
<li><a
href="https://github.com/golang-jwt/jwt/commit/0123f1ad66cbc45013dbfba6eff0cd81472bfc12"><code>0123f1a</code></a>
Fix jwt -show (<a
href="https://redirect.github.com/golang-jwt/jwt/issues/406">#406</a>)</li>
<li><a
href="https://github.com/golang-jwt/jwt/commit/f961c72abd3b91442a9ab3d3e356bf547636e89b"><code>f961c72</code></a>
chore: bump ci tests to include go1.23 (<a
href="https://redirect.github.com/golang-jwt/jwt/issues/405">#405</a>)</li>
<li><a
href="https://github.com/golang-jwt/jwt/commit/62e504c2810b67f6b97313424411cfffb25e41b0"><code>62e504c</code></a>
Bump golangci/golangci-lint-action from 5 to 6 (<a
href="https://redirect.github.com/golang-jwt/jwt/issues/389">#389</a>)</li>
<li><a
href="https://github.com/golang-jwt/jwt/commit/1a56dcf532089fc2bb723a3cb4076a4e45cb1c1a"><code>1a56dcf</code></a>
Bump golangci/golangci-lint-action from 4 to 5 (<a
href="https://redirect.github.com/golang-jwt/jwt/issues/387">#387</a>)</li>
<li><a
href="https://github.com/golang-jwt/jwt/commit/c8043eab61f0ec5bdd924c1c30caf164a9bb2c66"><code>c8043ea</code></a>
build: add go1.22 to ci workflows (<a
href="https://redirect.github.com/golang-jwt/jwt/issues/383">#383</a>)</li>
<li><a
href="https://github.com/golang-jwt/jwt/commit/7c3f6dc56316e5e222a9df9612ec04243189a989"><code>7c3f6dc</code></a>
Update README.md (<a
href="https://redirect.github.com/golang-jwt/jwt/issues/382">#382</a>)</li>
<li>See full diff in <a
href="https://github.com/golang-jwt/jwt/compare/v5.2.1...v5.2.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/golang-jwt/jwt/v5&package-manager=go_modules&previous-version=5.2.1&new-version=5.2.2)](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)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/coder/coder/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-27 10:29:44 +00:00
Cian Johnston 06e5d9ef21 feat(coderd): add webpush package (#17091)
* Adds `codersdk.ExperimentWebPush` (`web-push`)
* Adds a `coderd/webpush` package that allows sending native push
notifications via `github.com/SherClockHolmes/webpush-go`
* Adds database tables to store push notification subscriptions.
* Adds an API endpoint that allows users to subscribe/unsubscribe, and
send a test notification (404 without experiment, excluded from API docs)
* Adds server CLI command to regenerate VAPID keys (note: regenerating
the VAPID keypair requires deleting all existing subscriptions)

---------

Co-authored-by: Kyle Carberry <kyle@carberry.com>
2025-03-27 10:03:53 +00:00
Cian Johnston 006600ea3e chore(enterprise/dbcrypt): adjust behaviour of TestHelpMeEncryptSomeValue (#17116)
This "utility test" isn't so useful if you have to uncomment the
`t.Skip()` before using it.
2025-03-27 09:45:34 +00:00
Cian Johnston 0d8d5f212a chore: linkspector: ignore 503s from docs.github.com (#17125)
Fixes a 503 seen here:
https://github.com/coder/coder/actions/runs/14094256166/job/39478147255?pr=17091
2025-03-27 09:13:24 +00:00
Cian Johnston b863eca196 fix(scripts/check_unstaged.sh): add argument separator in git diff command (#17122) 2025-03-27 08:57:12 +00:00
Jon Ayers 2dc99c8469 fix: correct spurious edits made during the lint fixing slog (#17113) 2025-03-27 01:13:21 -05:00
Edward Angert 6bb4bdb9cb docs: add troubleshooting section to Desktop docs (#17098)
[preview](https://coder.com/docs/@121-desktop-troubleshoot/user-guides/desktop)

relates to https://github.com/coder/coder-desktop-macos/issues/121

---------

Co-authored-by: EdwardAngert <17991901+EdwardAngert@users.noreply.github.com>
Co-authored-by: Ethan <39577870+ethanndickson@users.noreply.github.com>
2025-03-26 19:00:32 +00:00
Cian Johnston d7a81f1d9b chore(dogfood): add lsof (#17117)
because lsof is a standard linux utility
2025-03-26 18:58:03 +00:00
Vincent Vielle ddb06741c9 chore: improve dormant workspace notification wording (#17100)
Related to #17099
2025-03-26 15:54:03 +01:00
Danielle Maywood cac130346d chore: bump debounce from 5 minutes to 30 minutes (#17111)
To ensure OOM/OOD isn't too spammy we want to have a debounce period of
30 minutes.
2025-03-26 14:33:10 +00:00
Bruno Quaresma 9668cba0e5 refactor: improve markdown rendering on notifications (#17112)
**Before:**
<img width="753" alt="Screenshot 2025-03-26 at 11 11 46"
src="https://github.com/user-attachments/assets/d4504de9-d007-43bf-9e0b-a8ff1b04da2c"
/>

**After:**

![image](https://github.com/user-attachments/assets/5a249a48-e2ec-4573-97ea-7a978fbe3c9a)
2025-03-26 11:24:54 -03:00
Danielle Maywood eaab4045f5 fix: prevent password reset notifications ending up in coder inbox (#17109) 2025-03-26 12:19:14 +01:00
Mathias Fredriksson 310f148cb4 fix(dogfood/coder): add shutdown script and graceful agent shutdown (#17110)
By stopping Docker, we can hopefully avoid errors like this:

```
2025-03-26 12:14:53.280+02:00 Error: Error deleting container aa313fca0f72e59d4571afec898392e0ae34567d56c0ad15554c87394d2ca1e1: Error response from daemon: container aa313fca0f72e59d4571afec898392e0ae34567d56c0ad15554c87394d2ca1e1: driver "overlay2" failed to remove root filesystem: unlinkat /var/data/docker/overlay2/2e8e509237c79ebec972cccae9867f3bd6f71d49d4ed68db1b5ba229c3a2ff62/diff/var/lib/docker/overlay2/9c7c4ab0187ece1ca270d146090a8e852808996279d103cb394b2821c472af4c/diff/usr/lib/python3/dist-packages/ansible_collections: directory not empty
```
2025-03-26 13:17:51 +02:00
Danielle Maywood c8f3b35e13 fix: prevent password reset notifications ending up in coder inbox (#17109)
We do not want password reset notifications to end up in Coder Inbox as
this doesn't make much sense. This implements the logic to ensure they
are not delivered if the method is Coder Inbox.

In the future we might want to investigate a better solution but for now
this works.
2025-03-26 11:08:31 +00:00
Danielle Maywood 1bbbae8d57 chore: migrate to github.com/coder/clistat (#17107)
Migrate from in-tree `clistat` package to
https://github.com/coder/clistat.
2025-03-26 10:36:53 +00:00
Cian Johnston 811097ef03 chore(dogfood): update dogfood Go version to 1.24.1 (#17104)
https://github.com/coder/coder/pull/17035 updated the Go version in
`go.mod` and in GH actions but not in `dogfood/coder/Dockerfile` or
`flake.nix`.

This updates the Go version to 1.24 in `dogfood/coder/Dockerfile`.
Unfortunately at the time of writing, Go 1.24 is not available in NixOS.
So that will have to wait.
2025-03-26 10:32:43 +00:00
Spike Curtis f6a10eeb7f chore: sync vpn.proto with coder/coder-desktop-windows (#17106)
Syncs `vpn.proto` with https://github.com/coder/coder-desktop-windows/blob/main/Vpn.Proto/vpn.proto
2025-03-26 13:38:39 +04:00
dependabot[bot] b4fa8097ef chore: bump the x group across 1 directory with 2 updates (#17103)
Bumps the x group with 2 updates in the / directory:
[golang.org/x/mod](https://github.com/golang/mod) and
[golang.org/x/tools](https://github.com/golang/tools).

Updates `golang.org/x/mod` from 0.23.0 to 0.24.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/mod/commit/dc121ce20ffab6bb810a0f231cfa9c24d3e51b29"><code>dc121ce</code></a>
all: upgrade go directive to at least 1.23.0 [generated]</li>
<li>See full diff in <a
href="https://github.com/golang/mod/compare/v0.23.0...v0.24.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `golang.org/x/tools` from 0.30.0 to 0.31.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/tools/commit/6a5b66bef78dc7a1cf8593b276f35102ec0cb11c"><code>6a5b66b</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="https://github.com/golang/tools/commit/25a90befcdf96d15f13dd947b7395c8531dc67de"><code>25a90be</code></a>
gopls/internal/golang: Implementations for func types</li>
<li><a
href="https://github.com/golang/tools/commit/db6008cb90f09485deb11255e5dd6da114b4ecef"><code>db6008c</code></a>
go/types/internal/play: show Cursor.Stack of selected node</li>
<li><a
href="https://github.com/golang/tools/commit/ece9e9ba0760eb361376c8a890b24e89db031d9e"><code>ece9e9b</code></a>
gopls/doc/generate: add status in codelenses and inlayhints</li>
<li><a
href="https://github.com/golang/tools/commit/340f21a49b9cad20d07a2b58e483a991084dc481"><code>340f21a</code></a>
gopls: move gopls/doc/generate package</li>
<li><a
href="https://github.com/golang/tools/commit/07219402b2fc707689574d91ee3cfd2c9a544a87"><code>0721940</code></a>
gopls/internal/analysis/modernize: strings.Fields -&gt; FieldsSeq</li>
<li><a
href="https://github.com/golang/tools/commit/8d38122b0b1a9991f490aa06b7bfca7b4140bdad"><code>8d38122</code></a>
gopls/internal/cache: reproduce and fix crash on if cond overflow</li>
<li><a
href="https://github.com/golang/tools/commit/d81d6fcce1a24f2b8d0a9493f4d84b75c80176e4"><code>d81d6fc</code></a>
gopls/internal/util/asm: better assembly parsing</li>
<li><a
href="https://github.com/golang/tools/commit/455db21bd963fea3efdf0473e0ddce37313b8f91"><code>455db21</code></a>
gopls/internal/cache/parsego: fix OOB crash in fixInitStmt</li>
<li><a
href="https://github.com/golang/tools/commit/2b1f55036370bc9a05bed74aa13fa85fecce40e2"><code>2b1f550</code></a>
gopls/internal/analysis/gofix: allow literal array lengths</li>
<li>Additional commits viewable in <a
href="https://github.com/golang/tools/compare/v0.30.0...v0.31.0">compare
view</a></li>
</ul>
</details>
<br />


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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-26 07:32:04 +00:00
dependabot[bot] 61fdce85a9 chore: bump google.golang.org/api from 0.221.0 to 0.227.0 (#17073)
Bumps
[google.golang.org/api](https://github.com/googleapis/google-api-go-client)
from 0.221.0 to 0.227.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-api-go-client/releases">google.golang.org/api's
releases</a>.</em></p>
<blockquote>
<h2>v0.227.0</h2>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.226.0...v0.227.0">0.227.0</a>
(2025-03-19)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3064">#3064</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/086437d5503dc5cc6794bbbfec47cdd90c8b917b">086437d</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3066">#3066</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/29203469556eca18b77dcf2f92163047218b5ad7">2920346</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3067">#3067</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/c6396b197caa96a22a79dc8f993d8a216e7959db">c6396b1</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3069">#3069</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/f12f50392dc68907c5616e8d436d7daafa2d9967">f12f503</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3070">#3070</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/a5a7982eab05780caeb754e4b489d3c1ff0d868c">a5a7982</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3071">#3071</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/a86ed9f6305ee23b7290ee047847ddcdf51c4792">a86ed9f</a>)</li>
</ul>
<h2>v0.226.0</h2>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.225.0...v0.226.0">0.226.0</a>
(2025-03-13)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3059">#3059</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/36a4396b57da8f0b6f01fb1e4fd0b3a651469b35">36a4396</a>)</li>
</ul>
<h2>v0.225.0</h2>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.224.0...v0.225.0">0.225.0</a>
(2025-03-11)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3052">#3052</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/6fe9ee700e1313bc01613809eb26089680de4f95">6fe9ee7</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3054">#3054</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/1f9f6306edf6f040f94cb704c111e867de93b11c">1f9f630</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3055">#3055</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/01546c11d2c2bff28c3df26c055f5a37e2744c15">01546c1</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3057">#3057</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/7a464eaf63831e1ee3f5d949ba19714560a15303">7a464ea</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3058">#3058</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/1b9abf7810e1b19a8e69733377149a443865ec8f">1b9abf7</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong>option:</strong> Update WithEndpoint docs (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3032">#3032</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/fe0dd61a4ed0f8708486f2aa417876bec8b6e5ae">fe0dd61</a>)</li>
</ul>
<h2>v0.224.0</h2>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.223.0...v0.224.0">0.224.0</a>
(2025-03-06)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3038">#3038</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/e50dbcf236706c31864e9dac2da4b8553ace321a">e50dbcf</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3040">#3040</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/3acb9e0eb5ba64ab2d628cfb72ae9b6455123cba">3acb9e0</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3041">#3041</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/3795b39b8e9788eaacb43d3a89681995a9571719">3795b39</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3042">#3042</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/7d1e8505fd427beceba3fa3a8fe82ecfa8c57d5c">7d1e850</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3043">#3043</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/eaeb698cbdc350788d93599f4454468dece92d00">eaeb698</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3048">#3048</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/0f2af0f23b3bb2fc6f0edb153b947a27e15be9be">0f2af0f</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md">google.golang.org/api's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.226.0...v0.227.0">0.227.0</a>
(2025-03-19)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3064">#3064</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/086437d5503dc5cc6794bbbfec47cdd90c8b917b">086437d</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3066">#3066</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/29203469556eca18b77dcf2f92163047218b5ad7">2920346</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3067">#3067</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/c6396b197caa96a22a79dc8f993d8a216e7959db">c6396b1</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3069">#3069</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/f12f50392dc68907c5616e8d436d7daafa2d9967">f12f503</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3070">#3070</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/a5a7982eab05780caeb754e4b489d3c1ff0d868c">a5a7982</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3071">#3071</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/a86ed9f6305ee23b7290ee047847ddcdf51c4792">a86ed9f</a>)</li>
</ul>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.225.0...v0.226.0">0.226.0</a>
(2025-03-13)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3059">#3059</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/36a4396b57da8f0b6f01fb1e4fd0b3a651469b35">36a4396</a>)</li>
</ul>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.224.0...v0.225.0">0.225.0</a>
(2025-03-11)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3052">#3052</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/6fe9ee700e1313bc01613809eb26089680de4f95">6fe9ee7</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3054">#3054</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/1f9f6306edf6f040f94cb704c111e867de93b11c">1f9f630</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3055">#3055</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/01546c11d2c2bff28c3df26c055f5a37e2744c15">01546c1</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3057">#3057</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/7a464eaf63831e1ee3f5d949ba19714560a15303">7a464ea</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3058">#3058</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/1b9abf7810e1b19a8e69733377149a443865ec8f">1b9abf7</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong>option:</strong> Update WithEndpoint docs (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3032">#3032</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/fe0dd61a4ed0f8708486f2aa417876bec8b6e5ae">fe0dd61</a>)</li>
</ul>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.223.0...v0.224.0">0.224.0</a>
(2025-03-06)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3038">#3038</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/e50dbcf236706c31864e9dac2da4b8553ace321a">e50dbcf</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3040">#3040</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/3acb9e0eb5ba64ab2d628cfb72ae9b6455123cba">3acb9e0</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3041">#3041</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/3795b39b8e9788eaacb43d3a89681995a9571719">3795b39</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3042">#3042</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/7d1e8505fd427beceba3fa3a8fe82ecfa8c57d5c">7d1e850</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3043">#3043</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/eaeb698cbdc350788d93599f4454468dece92d00">eaeb698</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3048">#3048</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/0f2af0f23b3bb2fc6f0edb153b947a27e15be9be">0f2af0f</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3051">#3051</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/f10c130e16796c008f2e129322d5c8b366ecfc92">f10c130</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/6c04eef38b09dc6bb68c69303b7fe5e761b1d523"><code>6c04eef</code></a>
chore(main): release 0.227.0 (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3065">#3065</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/a86ed9f6305ee23b7290ee047847ddcdf51c4792"><code>a86ed9f</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3071">#3071</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/a5a7982eab05780caeb754e4b489d3c1ff0d868c"><code>a5a7982</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3070">#3070</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/4cd83927eccf1dac66ed73ac71b8a15e725cc112"><code>4cd8392</code></a>
chore(all): update all (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3068">#3068</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/f12f50392dc68907c5616e8d436d7daafa2d9967"><code>f12f503</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3069">#3069</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/c6396b197caa96a22a79dc8f993d8a216e7959db"><code>c6396b1</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3067">#3067</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/29203469556eca18b77dcf2f92163047218b5ad7"><code>2920346</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3066">#3066</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/086437d5503dc5cc6794bbbfec47cdd90c8b917b"><code>086437d</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3064">#3064</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/be5fb5daa5e9ea3ed5d75a4c2ea98bc9871fe976"><code>be5fb5d</code></a>
chore(main): release 0.226.0 (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3060">#3060</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/778942391f59823d37e2d7c3e08c07a5d51935a6"><code>7789423</code></a>
chore(deps): bump golang.org/x/net to 0.37.0 (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3063">#3063</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/googleapis/google-api-go-client/compare/v0.221.0...v0.227.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/api&package-manager=go_modules&previous-version=0.221.0&new-version=0.227.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>
2025-03-26 07:22:11 +00:00
dependabot[bot] c35fe22fe9 chore: bump github.com/chromedp/chromedp from 0.11.0 to 0.13.3 (#17072)
Bumps
[github.com/chromedp/chromedp](https://github.com/chromedp/chromedp)
from 0.11.0 to 0.13.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/chromedp/chromedp/releases">github.com/chromedp/chromedp's
releases</a>.</em></p>
<blockquote>
<h2>chromedp v0.13.2</h2>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/chromedp/chromedp/compare/v0.13.1...v0.13.2">https://github.com/chromedp/chromedp/compare/v0.13.1...v0.13.2</a></p>
<h2>chromedp v0.13.0</h2>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/chromedp/chromedp/compare/v0.12.1...v0.13.0">https://github.com/chromedp/chromedp/compare/v0.12.1...v0.13.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/chromedp/chromedp/commit/f6fdfdd2948cd29f81304e9b8aebe3a5fbbd62d8"><code>f6fdfdd</code></a>
add tests for unmarshalling and marshalling json</li>
<li><a
href="https://github.com/chromedp/chromedp/commit/6c2d3efb05830e6fe89ab8b570b25fb0fd302c4a"><code>6c2d3ef</code></a>
pass unmarshal and marshal options</li>
<li><a
href="https://github.com/chromedp/chromedp/commit/eae0058f610a4cdadf1f4741c667e3b85f4ab635"><code>eae0058</code></a>
log syntactic errors when reading messages</li>
<li><a
href="https://github.com/chromedp/chromedp/commit/9335dc30c27ce7e6cef9b024262074cf7a615ed2"><code>9335dc3</code></a>
Allow setting jsonv2 Marshal/Unmarshal options</li>
<li><a
href="https://github.com/chromedp/chromedp/commit/71458e148d8c224238b015190347d02be51cb7b7"><code>71458e1</code></a>
fix: add page.EventFrameStartedNavigating to ignored events (Google
Chrome 13...</li>
<li><a
href="https://github.com/chromedp/chromedp/commit/79abe0af356a869d2a4cbdb8a80f6a6d2017f522"><code>79abe0a</code></a>
Switching to jsonv2</li>
<li><a
href="https://github.com/chromedp/chromedp/commit/229c63ebdce29abda43bc46a041b9aa14ba28baf"><code>229c63e</code></a>
Updating test workflow</li>
<li><a
href="https://github.com/chromedp/chromedp/commit/a19bb90680a9a57df5dfc4f7e81af78568bef2e7"><code>a19bb90</code></a>
Updating LICENSE</li>
<li><a
href="https://github.com/chromedp/chromedp/commit/6be1bcb299efa5c71570b6258076b896c3fc6690"><code>6be1bcb</code></a>
Updating device emulation</li>
<li><a
href="https://github.com/chromedp/chromedp/commit/f623c2d9f563c8f6512a25dd083d915938179d24"><code>f623c2d</code></a>
Updating dependencies</li>
<li>Additional commits viewable in <a
href="https://github.com/chromedp/chromedp/compare/v0.11.0...v0.13.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/chromedp/chromedp&package-manager=go_modules&previous-version=0.11.0&new-version=0.13.3)](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>
2025-03-26 07:21:43 +00:00
dependabot[bot] 91b7664f9e chore: bump github.com/coreos/go-oidc/v3 from 3.12.0 to 3.13.0 (#16964)
Bumps [github.com/coreos/go-oidc/v3](https://github.com/coreos/go-oidc)
from 3.12.0 to 3.13.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/coreos/go-oidc/releases">github.com/coreos/go-oidc/v3's
releases</a>.</em></p>
<blockquote>
<h2>v3.13.0</h2>
<h2>What's Changed</h2>
<ul>
<li>*: bump dependency versions by <a
href="https://github.com/ericchiang"><code>@​ericchiang</code></a> in <a
href="https://redirect.github.com/coreos/go-oidc/pull/453">coreos/go-oidc#453</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/coreos/go-oidc/compare/v3.12.0...v3.13.0">https://github.com/coreos/go-oidc/compare/v3.12.0...v3.13.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/coreos/go-oidc/commit/60d436e8ea63774802ad6a0955f0c386edfefa8b"><code>60d436e</code></a>
*: bump dependency versions</li>
<li>See full diff in <a
href="https://github.com/coreos/go-oidc/compare/v3.12.0...v3.13.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/coreos/go-oidc/v3&package-manager=go_modules&previous-version=3.12.0&new-version=3.13.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>
2025-03-26 07:21:36 +00:00
dependabot[bot] 13f1a3f259 chore: bump github.com/spf13/afero from 1.12.0 to 1.14.0 (#16961)
Bumps [github.com/spf13/afero](https://github.com/spf13/afero) from
1.12.0 to 1.14.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spf13/afero/releases">github.com/spf13/afero's
releases</a>.</em></p>
<blockquote>
<h2>v1.14.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Split gcsfs and sftpfs into separate modules by <a
href="https://github.com/sagikazarmark"><code>@​sagikazarmark</code></a>
in <a
href="https://redirect.github.com/spf13/afero/pull/462">spf13/afero#462</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/spf13/afero/compare/v1.13.0...v1.14.0">https://github.com/spf13/afero/compare/v1.13.0...v1.14.0</a></p>
<h2>v1.13.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Bump actions/setup-go from 5.2.0 to 5.3.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/spf13/afero/pull/446">spf13/afero#446</a></li>
<li>Bump golangci/golangci-lint-action from 6.1.1 to 6.3.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/spf13/afero/pull/451">spf13/afero#451</a></li>
<li>Bump golang.org/x/text from 0.21.0 to 0.22.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/spf13/afero/pull/452">spf13/afero#452</a></li>
<li>Bump golang.org/x/oauth2 from 0.25.0 to 0.26.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/spf13/afero/pull/453">spf13/afero#453</a></li>
<li>Bump golangci/golangci-lint-action from 6.3.0 to 6.3.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/spf13/afero/pull/459">spf13/afero#459</a></li>
<li>Bump golang.org/x/crypto from 0.32.0 to 0.33.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/spf13/afero/pull/455">spf13/afero#455</a></li>
<li>Bump golangci/golangci-lint-action from 6.3.3 to 6.5.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/spf13/afero/pull/460">spf13/afero#460</a></li>
<li>ci: add Go 1.24 to the test matrix by <a
href="https://github.com/sagikazarmark"><code>@​sagikazarmark</code></a>
in <a
href="https://redirect.github.com/spf13/afero/pull/461">spf13/afero#461</a></li>
<li>Bump golangci/golangci-lint-action from 6.5.0 to 6.5.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/spf13/afero/pull/473">spf13/afero#473</a></li>
<li>Update dependencies by <a
href="https://github.com/sagikazarmark"><code>@​sagikazarmark</code></a>
in <a
href="https://redirect.github.com/spf13/afero/pull/477">spf13/afero#477</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/dependabot"><code>@​dependabot</code></a> made
their first contribution in <a
href="https://redirect.github.com/spf13/afero/pull/446">spf13/afero#446</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/spf13/afero/compare/v1.12.0...v1.13.0">https://github.com/spf13/afero/compare/v1.12.0...v1.13.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spf13/afero/commit/ea38482beffb2485aed022e0c1ed3b4b561f67b6"><code>ea38482</code></a>
Merge pull request <a
href="https://redirect.github.com/spf13/afero/issues/462">#462</a> from
spf13/dependencies</li>
<li><a
href="https://github.com/spf13/afero/commit/a9aaabc51a41042d41595255ba13d62fdefd4561"><code>a9aaabc</code></a>
docs: add release instructions</li>
<li><a
href="https://github.com/spf13/afero/commit/d3a70b6f8258ab362e5190c01c21ade617fad9ec"><code>d3a70b6</code></a>
ci: run tests for submodules</li>
<li><a
href="https://github.com/spf13/afero/commit/2af192559d89b03611b3ce4c70f9a72ec01f0439"><code>2af1925</code></a>
feat: split gcsfs and sftpfs into separate modules</li>
<li><a
href="https://github.com/spf13/afero/commit/dbd6f6174e148a5b54b151b4cfc31dc8a4423451"><code>dbd6f61</code></a>
Merge pull request <a
href="https://redirect.github.com/spf13/afero/issues/477">#477</a> from
spf13/update-dependencies</li>
<li><a
href="https://github.com/spf13/afero/commit/83b8a558532728814aafd233cbfd9e9642abe7af"><code>83b8a55</code></a>
update readme</li>
<li><a
href="https://github.com/spf13/afero/commit/bf3bd7346b551cccadf936d821b982799daa6843"><code>bf3bd73</code></a>
update dependencies</li>
<li><a
href="https://github.com/spf13/afero/commit/464bc9859a5863a4c49e18b973b1398c0ac465f3"><code>464bc98</code></a>
Merge pull request <a
href="https://redirect.github.com/spf13/afero/issues/473">#473</a> from
spf13/dependabot/github_actions/golangci/golangc...</li>
<li><a
href="https://github.com/spf13/afero/commit/da239a4ded2831f87f4df336563d3d4b8bd1abaf"><code>da239a4</code></a>
Bump golangci/golangci-lint-action from 6.5.0 to 6.5.1</li>
<li><a
href="https://github.com/spf13/afero/commit/523f621845f8f2bd5aebb28650957b06b8778598"><code>523f621</code></a>
Merge pull request <a
href="https://redirect.github.com/spf13/afero/issues/461">#461</a> from
spf13/go124</li>
<li>Additional commits viewable in <a
href="https://github.com/spf13/afero/compare/v1.12.0...v1.14.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/spf13/afero&package-manager=go_modules&previous-version=1.12.0&new-version=1.14.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>
2025-03-26 07:21:21 +00:00
dependabot[bot] 64b434b47b chore: bump github.com/charmbracelet/glamour from 0.8.0 to 0.9.1 (#17071)
Bumps
[github.com/charmbracelet/glamour](https://github.com/charmbracelet/glamour)
from 0.8.0 to 0.9.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/charmbracelet/glamour/releases">github.com/charmbracelet/glamour's
releases</a>.</em></p>
<blockquote>
<h2>v0.9.1</h2>
<p>Some users were reporting occasional checksum miss matches when
building using Glamour v0.9.0.
This release provides a new tag to hopefully fix this.</p>
<h2>Changelog</h2>
<h3>Other work</h3>
<ul>
<li>dddb9a72f081205b9e18a34d093c673230e96f8b: ci: sync golangci-lint
config (<a
href="https://redirect.github.com/charmbracelet/glamour/issues/403">#403</a>)
(<a
href="https://github.com/github-actions"><code>@​github-actions</code></a>[bot])</li>
</ul>
<hr />
<p><!-- raw HTML omitted --><!-- raw HTML omitted --><!-- raw HTML
omitted --></p>
<p>Thoughts? Questions? We love hearing from you. Feel free to reach out
on <a href="https://twitter.com/charmcli">Twitter</a>, <a
href="https://mastodon.technology/@charm">The Fediverse</a>, or on <a
href="https://charm.sh/chat">Discord</a>.</p>
<h2>v0.9.0</h2>
<h1>Better Syntax Highlighting, Better Tables</h1>
<p>It's totally time for a Glamour release right? This release features
a nice lil' contribution from the <a
href="https://github.com/github"><code>@​github</code></a> CLI team and
pulls in some big table improvements from Lip Gloss upstream. Let's
go!</p>
<h2>Specifying Chroma Styles</h2>
<p>Thanks to valiant efforts of <a
href="https://github.com/andyfeller"><code>@​andyfeller</code></a> and
<a
href="https://github.com/williammartin"><code>@​williammartin</code></a>
at <a href="https://github.com/github"><code>@​github</code></a>, you
can now use <a
href="https://pkg.go.dev/github.com/charmbracelet/glamour@v0.9.0#WithChromaFormatter"><code>glamour.WithChromaFormatter</code></a>
to specify an exact <a
href="https://github.com/alecthomas/chroma">Chroma</a> style to use,
independent of the higher level style.</p>
<pre lang="go"><code>myHotOps := glamour.WithOptions(
    glamour.WithChromaFormatter(&quot;terminal16&quot;),
    glamour.WithStandardStyle(&quot;dark&quot;),
)
</code></pre>
<p>As a bonus, you can also use <a
href="https://pkg.go.dev/github.com/charmbracelet/glamour@v0.9.0#WithOptions"><code>glamour.WithOptions</code></a>
as a meta layer for grouping options.</p>
<h2>Better Tables</h2>
<p>This release also reaps the benefits from the table rendering
overhaul in <a
href="https://github.com/charmbracelet/lipgloss/releases/tag/v1.1.0">Lip
Gloss v1.1.0</a>! Glamour will now be much smarter when it comes to
deciding column widths, and the content will not wrap appropriately
instead of just being cut when it won't fit.</p>
<h2>Changelog</h2>
<h3>New Features</h3>
<ul>
<li>4c040b7fd5c023154de93d5c0f789111ea06c82c: feat: add term renderer
option for chroma formatter (<a
href="https://redirect.github.com/charmbracelet/glamour/issues/395">#395</a>)
(<a
href="https://github.com/williammartin"><code>@​williammartin</code></a>)</li>
<li>39de44871fad9d547af5975ae220f2034642304a: feat(ci): use goreleaser
(<a
href="https://redirect.github.com/charmbracelet/glamour/issues/348">#348</a>)
(<a
href="https://github.com/aymanbagabas"><code>@​aymanbagabas</code></a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>f43b1ad9ef09b10a93837e07ae2c18b66bceac5c: fix(tables): pin lipgloss
to v1.1.0 for table improvements; update tests (<a
href="https://redirect.github.com/charmbracelet/glamour/issues/394">#394</a>)
(<a
href="https://github.com/andreynering"><code>@​andreynering</code></a>)</li>
<li>bdc4ec5217e146f5a57be8a3e0a14a3ddee3f749: fix(table): fix rendering
table in ascii-only mode (<a
href="https://redirect.github.com/charmbracelet/glamour/issues/393">#393</a>)
(<a
href="https://github.com/andreynering"><code>@​andreynering</code></a>)</li>
<li>9cedacac492db45121a984505f3f4d87277dcde3: fix: render right margin
for block stack elements (<a
href="https://redirect.github.com/charmbracelet/glamour/issues/334">#334</a>)
(<a href="https://github.com/jahvon"><code>@​jahvon</code></a>)</li>
</ul>
<h3>Documentation updates</h3>
<ul>
<li>f29dc10685689be9846671030e07a17f97bafb16: docs(example): update
example to demonstrate color downsampling (<a
href="https://github.com/meowgorithm"><code>@​meowgorithm</code></a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/charmbracelet/glamour/commit/dddb9a72f081205b9e18a34d093c673230e96f8b"><code>dddb9a7</code></a>
ci: sync golangci-lint config (<a
href="https://redirect.github.com/charmbracelet/glamour/issues/403">#403</a>)</li>
<li><a
href="https://github.com/charmbracelet/glamour/commit/f43b1ad9ef09b10a93837e07ae2c18b66bceac5c"><code>f43b1ad</code></a>
test(tables): pin lipgloss to v1.1.0 and update tests (<a
href="https://redirect.github.com/charmbracelet/glamour/issues/394">#394</a>)</li>
<li><a
href="https://github.com/charmbracelet/glamour/commit/d1d5125cfab42203495f15b846e901d0c1f37aaa"><code>d1d5125</code></a>
chore(deps): bump golang.org/x/net from 0.33.0 to 0.36.0 in /examples
(<a
href="https://redirect.github.com/charmbracelet/glamour/issues/400">#400</a>)</li>
<li><a
href="https://github.com/charmbracelet/glamour/commit/3b686ba19d5fdb7762e82f1d10348aec65e149c8"><code>3b686ba</code></a>
chore(deps): bump golang.org/x/net from 0.33.0 to 0.36.0 (<a
href="https://redirect.github.com/charmbracelet/glamour/issues/399">#399</a>)</li>
<li><a
href="https://github.com/charmbracelet/glamour/commit/4c040b7fd5c023154de93d5c0f789111ea06c82c"><code>4c040b7</code></a>
feat: add term renderer option for chroma formatter (<a
href="https://redirect.github.com/charmbracelet/glamour/issues/395">#395</a>)</li>
<li><a
href="https://github.com/charmbracelet/glamour/commit/3dc6c5b8d878b1164940c0d5ac97f3943717d71d"><code>3dc6c5b</code></a>
chore(deps): bump golang.org/x/text from 0.22.0 to 0.23.0 (<a
href="https://redirect.github.com/charmbracelet/glamour/issues/397">#397</a>)</li>
<li><a
href="https://github.com/charmbracelet/glamour/commit/5ad6fac7cea48dc390efa654b30edcd05ff81c0a"><code>5ad6fac</code></a>
chore(deps): bump golang.org/x/term from 0.29.0 to 0.30.0 (<a
href="https://redirect.github.com/charmbracelet/glamour/issues/396">#396</a>)</li>
<li><a
href="https://github.com/charmbracelet/glamour/commit/bdc4ec5217e146f5a57be8a3e0a14a3ddee3f749"><code>bdc4ec5</code></a>
fix(table): fix rendering table in ascii-only mode (<a
href="https://redirect.github.com/charmbracelet/glamour/issues/393">#393</a>)</li>
<li><a
href="https://github.com/charmbracelet/glamour/commit/b0776ab61085cc90418f9a902ae5c80994d567e3"><code>b0776ab</code></a>
chore(deps): bump github.com/yuin/goldmark-emoji from 1.0.4 to 1.0.5 (<a
href="https://redirect.github.com/charmbracelet/glamour/issues/391">#391</a>)</li>
<li><a
href="https://github.com/charmbracelet/glamour/commit/ddc245101b5967e287cbc8f09a163bdc4e7404b5"><code>ddc2451</code></a>
chore(deps): bump golang.org/x/text from 0.21.0 to 0.22.0 (<a
href="https://redirect.github.com/charmbracelet/glamour/issues/392">#392</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/charmbracelet/glamour/compare/v0.8.0...v0.9.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/charmbracelet/glamour&package-manager=go_modules&previous-version=0.8.0&new-version=0.9.1)](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>
2025-03-26 07:09:53 +00:00
dependabot[bot] 38f404fcaf chore: bump vite from 5.4.14 to 5.4.15 in /site (#17101)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite)
from 5.4.14 to 5.4.15.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/releases">vite's
releases</a>.</em></p>
<blockquote>
<h2>v5.4.15</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.15/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/blob/v5.4.15/packages/vite/CHANGELOG.md">vite's
changelog</a>.</em></p>
<blockquote>
<h2><!-- raw HTML omitted -->5.4.15 (2025-03-24)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19702">#19702</a>,
fs raw query with query separators (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19703">#19703</a>)
(<a
href="https://github.com/vitejs/vite/commit/807d7f06d33ab49c48a2a3501da3eea1906c0d41">807d7f0</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19702">#19702</a>
<a
href="https://redirect.github.com/vitejs/vite/issues/19703">#19703</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/vitejs/vite/commit/9b0f4c80eea8b136d262c705234353e96abfbe75"><code>9b0f4c8</code></a>
release: v5.4.15</li>
<li><a
href="https://github.com/vitejs/vite/commit/807d7f06d33ab49c48a2a3501da3eea1906c0d41"><code>807d7f0</code></a>
fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19702">#19702</a>,
fs raw query with query separators (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19703">#19703</a>)</li>
<li>See full diff in <a
href="https://github.com/vitejs/vite/commits/v5.4.15/packages/vite">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=vite&package-manager=npm_and_yarn&previous-version=5.4.14&new-version=5.4.15)](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)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/coder/coder/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-26 07:08:05 +00:00
Jon Ayers 17ddee05e5 chore: update golang to 1.24.1 (#17035)
- Update go.mod to use Go 1.24.1
- Update GitHub Actions setup-go action to use Go 1.24.1
- Fix linting issues with golangci-lint by:
  - Updating to golangci-lint v1.57.1 (more compatible with Go 1.24.1)

🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <claude@anthropic.com>
2025-03-26 01:56:39 -05:00
2774 changed files with 187967 additions and 50654 deletions
+218
View File
@@ -0,0 +1,218 @@
# Database Development Patterns
## Database Work Overview
### Database Generation Process
1. Modify SQL files in `coderd/database/queries/`
2. Run `make gen`
3. If errors about audit table, update `enterprise/audit/table.go`
4. Run `make gen` again
5. Run `make lint` to catch any remaining issues
## Migration Guidelines
### Creating Migration Files
**Location**: `coderd/database/migrations/`
**Format**: `{number}_{description}.{up|down}.sql`
- Number must be unique and sequential
- Always include both up and down migrations
### Helper Scripts
| Script | Purpose |
|---------------------------------------------------------------------|-----------------------------------------|
| `./coderd/database/migrations/create_migration.sh "migration name"` | Creates new migration files |
| `./coderd/database/migrations/fix_migration_numbers.sh` | Renumbers migrations to avoid conflicts |
| `./coderd/database/migrations/create_fixture.sh "fixture name"` | Creates test fixtures for migrations |
### Database Query Organization
- **MUST DO**: Any changes to database - adding queries, modifying queries should be done in the `coderd/database/queries/*.sql` files
- **MUST DO**: Queries are grouped in files relating to context - e.g. `prebuilds.sql`, `users.sql`, `oauth2.sql`
- After making changes to any `coderd/database/queries/*.sql` files you must run `make gen` to generate respective ORM changes
## Handling Nullable Fields
Use `sql.NullString`, `sql.NullBool`, etc. for optional database fields:
```go
CodeChallenge: sql.NullString{
String: params.codeChallenge,
Valid: params.codeChallenge != "",
}
```
Set `.Valid = true` when providing values.
## Audit Table Updates
If adding fields to auditable types:
1. Update `enterprise/audit/table.go`
2. Add each new field with appropriate action:
- `ActionTrack`: Field should be tracked in audit logs
- `ActionIgnore`: Field should be ignored in audit logs
- `ActionSecret`: Field contains sensitive data
3. Run `make gen` to verify no audit errors
## Database Architecture
### Core Components
- **PostgreSQL 13+** recommended for production
- **Migrations** managed with `migrate`
- **Database authorization** through `dbauthz` package
### Authorization Patterns
```go
// Public endpoints needing system access (OAuth2 registration)
app, err := api.Database.GetOAuth2ProviderAppByClientID(dbauthz.AsSystemRestricted(ctx), clientID)
// Authenticated endpoints with user context
app, err := api.Database.GetOAuth2ProviderAppByClientID(ctx, clientID)
// System operations in middleware
roles, err := db.GetAuthorizationUserRoles(dbauthz.AsSystemRestricted(ctx), userID)
```
## Common Database Issues
### Migration Issues
1. **Migration conflicts**: Use `fix_migration_numbers.sh` to renumber
2. **Missing down migration**: Always create both up and down files
3. **Schema inconsistencies**: Verify against existing schema
### Field Handling Issues
1. **Nullable field errors**: Use `sql.Null*` types consistently
2. **Missing audit entries**: Update `enterprise/audit/table.go`
### Query Issues
1. **Query organization**: Group related queries in appropriate files
2. **Generated code errors**: Run `make gen` after query changes
3. **Performance issues**: Add appropriate indexes in migrations
## Database Testing
### Test Database Setup
```go
func TestDatabaseFunction(t *testing.T) {
db := dbtestutil.NewDB(t)
// Test with real database
result, err := db.GetSomething(ctx, param)
require.NoError(t, err)
require.Equal(t, expected, result)
}
```
## Best Practices
### Schema Design
1. **Use appropriate data types**: VARCHAR for strings, TIMESTAMP for times
2. **Add constraints**: NOT NULL, UNIQUE, FOREIGN KEY as appropriate
3. **Create indexes**: For frequently queried columns
4. **Consider performance**: Normalize appropriately but avoid over-normalization
### Query Writing
1. **Use parameterized queries**: Prevent SQL injection
2. **Handle errors appropriately**: Check for specific error types
3. **Use transactions**: For related operations that must succeed together
4. **Optimize queries**: Use EXPLAIN to understand query performance
### Migration Writing
1. **Make migrations reversible**: Always include down migration
2. **Test migrations**: On copy of production data if possible
3. **Keep migrations small**: One logical change per migration
4. **Document complex changes**: Add comments explaining rationale
## Advanced Patterns
### Complex Queries
```sql
-- Example: Complex join with aggregation
SELECT
u.id,
u.username,
COUNT(w.id) as workspace_count
FROM users u
LEFT JOIN workspaces w ON u.id = w.owner_id
WHERE u.created_at > $1
GROUP BY u.id, u.username
ORDER BY workspace_count DESC;
```
### Conditional Queries
```sql
-- Example: Dynamic filtering
SELECT * FROM oauth2_provider_apps
WHERE
($1::text IS NULL OR name ILIKE '%' || $1 || '%')
AND ($2::uuid IS NULL OR organization_id = $2)
ORDER BY created_at DESC;
```
### Audit Patterns
```go
// Example: Auditable database operation
func (q *sqlQuerier) UpdateUser(ctx context.Context, arg UpdateUserParams) (User, error) {
// Implementation here
// Audit the change
if auditor := audit.FromContext(ctx); auditor != nil {
auditor.Record(audit.UserUpdate{
UserID: arg.ID,
Old: oldUser,
New: newUser,
})
}
return newUser, nil
}
```
## Debugging Database Issues
### Common Debug Commands
```bash
# Check database connection
make test-postgres
# Run specific database tests
go test ./coderd/database/... -run TestSpecificFunction
# Check query generation
make gen
# Verify audit table
make lint
```
### Debug Techniques
1. **Enable query logging**: Set appropriate log levels
2. **Use database tools**: pgAdmin, psql for direct inspection
3. **Check constraints**: UNIQUE, FOREIGN KEY violations
4. **Analyze performance**: Use EXPLAIN ANALYZE for slow queries
### Troubleshooting Checklist
- [ ] Migration files exist (both up and down)
- [ ] `make gen` run after query changes
- [ ] Audit table updated for new fields
- [ ] Nullable fields use `sql.Null*` types
- [ ] Authorization context appropriate for endpoint type
+157
View File
@@ -0,0 +1,157 @@
# OAuth2 Development Guide
## RFC Compliance Development
### Implementing Standard Protocols
When implementing standard protocols (OAuth2, OpenID Connect, etc.):
1. **Fetch and Analyze Official RFCs**:
- Always read the actual RFC specifications before implementation
- Use WebFetch tool to get current RFC content for compliance verification
- Document RFC requirements in code comments
2. **Default Values Matter**:
- Pay close attention to RFC-specified default values
- Example: RFC 7591 specifies `client_secret_basic` as default, not `client_secret_post`
- Ensure consistency between database migrations and application code
3. **Security Requirements**:
- Follow RFC security considerations precisely
- Example: RFC 7592 prohibits returning registration access tokens in GET responses
- Implement proper error responses per protocol specifications
4. **Validation Compliance**:
- Implement comprehensive validation per RFC requirements
- Support protocol-specific features (e.g., custom schemes for native OAuth2 apps)
- Test edge cases defined in specifications
## OAuth2 Provider Implementation
### OAuth2 Spec Compliance
1. **Follow RFC 6749 for token responses**
- Use `expires_in` (seconds) not `expiry` (timestamp) in token responses
- Return proper OAuth2 error format: `{"error": "code", "error_description": "details"}`
2. **Error Response Format**
- Create OAuth2-compliant error responses for token endpoint
- Use standard error codes: `invalid_client`, `invalid_grant`, `invalid_request`
- Avoid generic error responses for OAuth2 endpoints
### PKCE Implementation
- Support both with and without PKCE for backward compatibility
- Use S256 method for code challenge
- Properly validate code_verifier against stored code_challenge
### UI Authorization Flow
- Use POST requests for consent, not GET with links
- Avoid dependency on referer headers for security decisions
- Support proper state parameter validation
### RFC 8707 Resource Indicators
- Store resource parameters in database for server-side validation (opaque tokens)
- Validate resource consistency between authorization and token requests
- Support audience validation in refresh token flows
- Resource parameter is optional but must be consistent when provided
## OAuth2 Error Handling Pattern
```go
// Define specific OAuth2 errors
var (
errInvalidPKCE = xerrors.New("invalid code_verifier")
)
// Use OAuth2-compliant error responses
type OAuth2Error struct {
Error string `json:"error"`
ErrorDescription string `json:"error_description,omitempty"`
}
// Return proper OAuth2 errors
if errors.Is(err, errInvalidPKCE) {
writeOAuth2Error(ctx, rw, http.StatusBadRequest, "invalid_grant", "The PKCE code verifier is invalid")
return
}
```
## Testing OAuth2 Features
### Test Scripts
Located in `./scripts/oauth2/`:
- `test-mcp-oauth2.sh` - Full automated test suite
- `setup-test-app.sh` - Create test OAuth2 app
- `cleanup-test-app.sh` - Remove test app
- `generate-pkce.sh` - Generate PKCE parameters
- `test-manual-flow.sh` - Manual browser testing
Always run the full test suite after OAuth2 changes:
```bash
./scripts/oauth2/test-mcp-oauth2.sh
```
### RFC Protocol Testing
1. **Compliance Test Coverage**:
- Test all RFC-defined error codes and responses
- Validate proper HTTP status codes for different scenarios
- Test protocol-specific edge cases (URI formats, token formats, etc.)
2. **Security Boundary Testing**:
- Test client isolation and privilege separation
- Verify information disclosure protections
- Test token security and proper invalidation
## Common OAuth2 Issues
1. **OAuth2 endpoints returning wrong error format** - Ensure OAuth2 endpoints return RFC 6749 compliant errors
2. **Resource indicator validation failing** - Ensure database stores and retrieves resource parameters correctly
3. **PKCE tests failing** - Verify both authorization code storage and token exchange handle PKCE fields
4. **RFC compliance failures** - Verify against actual RFC specifications, not assumptions
5. **Authorization context errors in public endpoints** - Use `dbauthz.AsSystemRestricted(ctx)` pattern
6. **Default value mismatches** - Ensure database migrations match application code defaults
7. **Bearer token authentication issues** - Check token extraction precedence and format validation
8. **URI validation failures** - Support both standard schemes and custom schemes per protocol requirements
## Authorization Context Patterns
```go
// Public endpoints needing system access (OAuth2 registration)
app, err := api.Database.GetOAuth2ProviderAppByClientID(dbauthz.AsSystemRestricted(ctx), clientID)
// Authenticated endpoints with user context
app, err := api.Database.GetOAuth2ProviderAppByClientID(ctx, clientID)
// System operations in middleware
roles, err := db.GetAuthorizationUserRoles(dbauthz.AsSystemRestricted(ctx), userID)
```
## OAuth2/Authentication Work Patterns
- Types go in `codersdk/oauth2.go` or similar
- Handlers go in `coderd/oauth2.go` or `coderd/identityprovider/`
- Database fields need migration + audit table updates
- Always support backward compatibility
## Protocol Implementation Checklist
Before completing OAuth2 or authentication feature work:
- [ ] Verify RFC compliance by reading actual specifications
- [ ] Implement proper error response formats per protocol
- [ ] Add comprehensive validation for all protocol fields
- [ ] Test security boundaries and token handling
- [ ] Update RBAC permissions for new resources
- [ ] Add audit logging support if applicable
- [ ] Create database migrations with proper defaults
- [ ] Add comprehensive test coverage including edge cases
- [ ] Verify linting compliance
- [ ] Test both positive and negative scenarios
- [ ] Document protocol-specific patterns and requirements
+212
View File
@@ -0,0 +1,212 @@
# Testing Patterns and Best Practices
## Testing Best Practices
### Avoiding Race Conditions
1. **Unique Test Identifiers**:
- Never use hardcoded names in concurrent tests
- Use `time.Now().UnixNano()` or similar for unique identifiers
- Example: `fmt.Sprintf("test-client-%s-%d", t.Name(), time.Now().UnixNano())`
2. **Database Constraint Awareness**:
- Understand unique constraints that can cause test conflicts
- Generate unique values for all constrained fields
- Test name isolation prevents cross-test interference
### Testing Patterns
- Use table-driven tests for comprehensive coverage
- Mock external dependencies
- Test both positive and negative cases
- Use `testutil.WaitLong` for timeouts in tests
### Test Package Naming
- **Test packages**: Use `package_test` naming (e.g., `identityprovider_test`) for black-box testing
## RFC Protocol Testing
### Compliance Test Coverage
1. **Test all RFC-defined error codes and responses**
2. **Validate proper HTTP status codes for different scenarios**
3. **Test protocol-specific edge cases** (URI formats, token formats, etc.)
### Security Boundary Testing
1. **Test client isolation and privilege separation**
2. **Verify information disclosure protections**
3. **Test token security and proper invalidation**
## Test Organization
### Test File Structure
```
coderd/
├── oauth2.go # Implementation
├── oauth2_test.go # Main tests
├── oauth2_test_helpers.go # Test utilities
└── oauth2_validation.go # Validation logic
```
### Test Categories
1. **Unit Tests**: Test individual functions in isolation
2. **Integration Tests**: Test API endpoints with database
3. **End-to-End Tests**: Full workflow testing
4. **Race Tests**: Concurrent access testing
## Test Commands
### Running Tests
| Command | Purpose |
|---------|---------|
| `make test` | Run all Go tests |
| `make test RUN=TestFunctionName` | Run specific test |
| `go test -v ./path/to/package -run TestFunctionName` | Run test with verbose output |
| `make test-postgres` | Run tests with Postgres database |
| `make test-race` | Run tests with Go race detector |
| `make test-e2e` | Run end-to-end tests |
### Frontend Testing
| Command | Purpose |
|---------|---------|
| `pnpm test` | Run frontend tests |
| `pnpm check` | Run code checks |
## Common Testing Issues
### Database-Related
1. **SQL type errors** - Use `sql.Null*` types for nullable fields
2. **Race conditions in tests** - Use unique identifiers instead of hardcoded names
### OAuth2 Testing
1. **PKCE tests failing** - Verify both authorization code storage and token exchange handle PKCE fields
2. **Resource indicator validation failing** - Ensure database stores and retrieves resource parameters correctly
### General Issues
1. **Missing newlines** - Ensure files end with newline character
2. **Package naming errors** - Use `package_test` naming for test files
3. **Log message formatting errors** - Use lowercase, descriptive messages without special characters
## Systematic Testing Approach
### Multi-Issue Problem Solving
When facing multiple failing tests or complex integration issues:
1. **Identify Root Causes**:
- Run failing tests individually to isolate issues
- Use LSP tools to trace through call chains
- Check both compilation and runtime errors
2. **Fix in Logical Order**:
- Address compilation issues first (imports, syntax)
- Fix authorization and RBAC issues next
- Resolve business logic and validation issues
- Handle edge cases and race conditions last
3. **Verification Strategy**:
- Test each fix individually before moving to next issue
- Use `make lint` and `make gen` after database changes
- Verify RFC compliance with actual specifications
- Run comprehensive test suites before considering complete
## Test Data Management
### Unique Test Data
```go
// Good: Unique identifiers prevent conflicts
clientName := fmt.Sprintf("test-client-%s-%d", t.Name(), time.Now().UnixNano())
// Bad: Hardcoded names cause race conditions
clientName := "test-client"
```
### Test Cleanup
```go
func TestSomething(t *testing.T) {
// Setup
client := coderdtest.New(t, nil)
// Test code here
// Cleanup happens automatically via t.Cleanup() in coderdtest
}
```
## Test Utilities
### Common Test Patterns
```go
// Table-driven tests
tests := []struct {
name string
input InputType
expected OutputType
wantErr bool
}{
{
name: "valid input",
input: validInput,
expected: expectedOutput,
wantErr: false,
},
// ... more test cases
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
result, err := functionUnderTest(tt.input)
if tt.wantErr {
require.Error(t, err)
return
}
require.NoError(t, err)
require.Equal(t, tt.expected, result)
})
}
```
### Test Assertions
```go
// Use testify/require for assertions
require.NoError(t, err)
require.Equal(t, expected, actual)
require.NotNil(t, result)
require.True(t, condition)
```
## Performance Testing
### Load Testing
- Use `scaletest/` directory for load testing scenarios
- Run `./scaletest/scaletest.sh` for performance testing
### Benchmarking
```go
func BenchmarkFunction(b *testing.B) {
for i := 0; i < b.N; i++ {
// Function call to benchmark
_ = functionUnderTest(input)
}
}
```
Run benchmarks with:
```bash
go test -bench=. -benchmem ./package/path
```
+231
View File
@@ -0,0 +1,231 @@
# Troubleshooting Guide
## Common Issues
### Database Issues
1. **"Audit table entry missing action"**
- **Solution**: Update `enterprise/audit/table.go`
- Add each new field with appropriate action (ActionTrack, ActionIgnore, ActionSecret)
- Run `make gen` to verify no audit errors
2. **SQL type errors**
- **Solution**: Use `sql.Null*` types for nullable fields
- Set `.Valid = true` when providing values
- Example:
```go
CodeChallenge: sql.NullString{
String: params.codeChallenge,
Valid: params.codeChallenge != "",
}
```
### Testing Issues
3. **"package should be X_test"**
- **Solution**: Use `package_test` naming for test files
- Example: `identityprovider_test` for black-box testing
4. **Race conditions in tests**
- **Solution**: Use unique identifiers instead of hardcoded names
- Example: `fmt.Sprintf("test-client-%s-%d", t.Name(), time.Now().UnixNano())`
- Never use hardcoded names in concurrent tests
5. **Missing newlines**
- **Solution**: Ensure files end with newline character
- Most editors can be configured to add this automatically
### OAuth2 Issues
6. **OAuth2 endpoints returning wrong error format**
- **Solution**: Ensure OAuth2 endpoints return RFC 6749 compliant errors
- Use standard error codes: `invalid_client`, `invalid_grant`, `invalid_request`
- Format: `{"error": "code", "error_description": "details"}`
7. **Resource indicator validation failing**
- **Solution**: Ensure database stores and retrieves resource parameters correctly
- Check both authorization code storage and token exchange handling
8. **PKCE tests failing**
- **Solution**: Verify both authorization code storage and token exchange handle PKCE fields
- Check `CodeChallenge` and `CodeChallengeMethod` field handling
### RFC Compliance Issues
9. **RFC compliance failures**
- **Solution**: Verify against actual RFC specifications, not assumptions
- Use WebFetch tool to get current RFC content for compliance verification
- Read the actual RFC specifications before implementation
10. **Default value mismatches**
- **Solution**: Ensure database migrations match application code defaults
- Example: RFC 7591 specifies `client_secret_basic` as default, not `client_secret_post`
### Authorization Issues
11. **Authorization context errors in public endpoints**
- **Solution**: Use `dbauthz.AsSystemRestricted(ctx)` pattern
- Example:
```go
// Public endpoints needing system access
app, err := api.Database.GetOAuth2ProviderAppByClientID(dbauthz.AsSystemRestricted(ctx), clientID)
```
### Authentication Issues
12. **Bearer token authentication issues**
- **Solution**: Check token extraction precedence and format validation
- Ensure proper RFC 6750 Bearer Token Support implementation
13. **URI validation failures**
- **Solution**: Support both standard schemes and custom schemes per protocol requirements
- Native OAuth2 apps may use custom schemes
### General Development Issues
14. **Log message formatting errors**
- **Solution**: Use lowercase, descriptive messages without special characters
- Follow Go logging conventions
## Systematic Debugging Approach
### Multi-Issue Problem Solving
When facing multiple failing tests or complex integration issues:
1. **Identify Root Causes**:
- Run failing tests individually to isolate issues
- Use LSP tools to trace through call chains
- Check both compilation and runtime errors
2. **Fix in Logical Order**:
- Address compilation issues first (imports, syntax)
- Fix authorization and RBAC issues next
- Resolve business logic and validation issues
- Handle edge cases and race conditions last
3. **Verification Strategy**:
- Test each fix individually before moving to next issue
- Use `make lint` and `make gen` after database changes
- Verify RFC compliance with actual specifications
- Run comprehensive test suites before considering complete
## Debug Commands
### Useful Debug Commands
| Command | Purpose |
|----------------------------------------------|---------------------------------------|
| `make lint` | Run all linters |
| `make gen` | Generate mocks, database queries |
| `go test -v ./path/to/package -run TestName` | Run specific test with verbose output |
| `go test -race ./...` | Run tests with race detector |
### LSP Debugging
#### Go LSP (Backend)
| Command | Purpose |
|----------------------------------------------------|------------------------------|
| `mcp__go-language-server__definition symbolName` | Find function definition |
| `mcp__go-language-server__references symbolName` | Find all references |
| `mcp__go-language-server__diagnostics filePath` | Check for compilation errors |
| `mcp__go-language-server__hover filePath line col` | Get type information |
#### TypeScript LSP (Frontend)
| Command | Purpose |
|----------------------------------------------------------------------------|------------------------------------|
| `mcp__typescript-language-server__definition symbolName` | Find component/function definition |
| `mcp__typescript-language-server__references symbolName` | Find all component/type usages |
| `mcp__typescript-language-server__diagnostics filePath` | Check for TypeScript errors |
| `mcp__typescript-language-server__hover filePath line col` | Get type information |
| `mcp__typescript-language-server__rename_symbol filePath line col newName` | Rename across codebase |
## Common Error Messages
### Database Errors
**Error**: `pq: relation "oauth2_provider_app_codes" does not exist`
- **Cause**: Missing database migration
- **Solution**: Run database migrations, check migration files
**Error**: `audit table entry missing action for field X`
- **Cause**: New field added without audit table update
- **Solution**: Update `enterprise/audit/table.go`
### Go Compilation Errors
**Error**: `package should be identityprovider_test`
- **Cause**: Test package naming convention violation
- **Solution**: Use `package_test` naming for black-box tests
**Error**: `cannot use X (type Y) as type Z`
- **Cause**: Type mismatch, often with nullable fields
- **Solution**: Use appropriate `sql.Null*` types
### OAuth2 Errors
**Error**: `invalid_client` but client exists
- **Cause**: Authorization context issue
- **Solution**: Use `dbauthz.AsSystemRestricted(ctx)` for public endpoints
**Error**: PKCE validation failing
- **Cause**: Missing PKCE fields in database operations
- **Solution**: Ensure `CodeChallenge` and `CodeChallengeMethod` are handled
## Prevention Strategies
### Before Making Changes
1. **Read the relevant documentation**
2. **Check if similar patterns exist in codebase**
3. **Understand the authorization context requirements**
4. **Plan database changes carefully**
### During Development
1. **Run tests frequently**: `make test`
2. **Use LSP tools for navigation**: Avoid manual searching
3. **Follow RFC specifications precisely**
4. **Update audit tables when adding database fields**
### Before Committing
1. **Run full test suite**: `make test`
2. **Check linting**: `make lint`
3. **Test with race detector**: `make test-race`
## Getting Help
### Internal Resources
- Check existing similar implementations in codebase
- Use LSP tools to understand code relationships
- For Go code: Use `mcp__go-language-server__*` commands
- For TypeScript/React code: Use `mcp__typescript-language-server__*` commands
- Read related test files for expected behavior
### External Resources
- Official RFC specifications for protocol compliance
- Go documentation for language features
- PostgreSQL documentation for database issues
### Debug Information Collection
When reporting issues, include:
1. **Exact error message**
2. **Steps to reproduce**
3. **Relevant code snippets**
4. **Test output (if applicable)**
5. **Environment information** (OS, Go version, etc.)
+223
View File
@@ -0,0 +1,223 @@
# Development Workflows and Guidelines
## Quick Start Checklist for New Features
### Before Starting
- [ ] Run `git pull` to ensure you're on latest code
- [ ] Check if feature touches database - you'll need migrations
- [ ] Check if feature touches audit logs - update `enterprise/audit/table.go`
## Development Server
### Starting Development Mode
- **Use `./scripts/develop.sh` to start Coder in development mode**
- This automatically builds and runs with `--dev` flag and proper access URL
- **⚠️ Do NOT manually run `make build && ./coder server --dev` - use the script instead**
### Development Workflow
1. **Always start with the development script**: `./scripts/develop.sh`
2. **Make changes** to your code
3. **The script will automatically rebuild** and restart as needed
4. **Access the development server** at the URL provided by the script
## Code Style Guidelines
### Go Style
- Follow [Effective Go](https://go.dev/doc/effective_go) and [Go's Code Review Comments](https://github.com/golang/go/wiki/CodeReviewComments)
- Create packages when used during implementation
- Validate abstractions against implementations
- **Test packages**: Use `package_test` naming (e.g., `identityprovider_test`) for black-box testing
### Error Handling
- Use descriptive error messages
- Wrap errors with context
- Propagate errors appropriately
- Use proper error types
- Pattern: `xerrors.Errorf("failed to X: %w", err)`
### Naming Conventions
- Use clear, descriptive names
- Abbreviate only when obvious
- Follow Go and TypeScript naming conventions
### Comments
- Document exported functions, types, and non-obvious logic
- Follow JSDoc format for TypeScript
- Use godoc format for Go code
## Database Migration Workflows
### Migration Guidelines
1. **Create migration files**:
- Location: `coderd/database/migrations/`
- Format: `{number}_{description}.{up|down}.sql`
- Number must be unique and sequential
- Always include both up and down migrations
2. **Use helper scripts**:
- `./coderd/database/migrations/create_migration.sh "migration name"` - Creates new migration files
- `./coderd/database/migrations/fix_migration_numbers.sh` - Renumbers migrations to avoid conflicts
- `./coderd/database/migrations/create_fixture.sh "fixture name"` - Creates test fixtures for migrations
3. **Update database queries**:
- **MUST DO**: Any changes to database - adding queries, modifying queries should be done in the `coderd/database/queries/*.sql` files
- **MUST DO**: Queries are grouped in files relating to context - e.g. `prebuilds.sql`, `users.sql`, `oauth2.sql`
- After making changes to any `coderd/database/queries/*.sql` files you must run `make gen` to generate respective ORM changes
4. **Handle nullable fields**:
- Use `sql.NullString`, `sql.NullBool`, etc. for optional database fields
- Set `.Valid = true` when providing values
5. **Audit table updates**:
- If adding fields to auditable types, update `enterprise/audit/table.go`
- Add each new field with appropriate action (ActionTrack, ActionIgnore, ActionSecret)
- Run `make gen` to verify no audit errors
### Database Generation Process
1. Modify SQL files in `coderd/database/queries/`
2. Run `make gen`
3. If errors about audit table, update `enterprise/audit/table.go`
4. Run `make gen` again
5. Run `make lint` to catch any remaining issues
## API Development Workflow
### Adding New API Endpoints
1. **Define types** in `codersdk/` package
2. **Add handler** in appropriate `coderd/` file
3. **Register route** in `coderd/coderd.go`
4. **Add tests** in `coderd/*_test.go` files
5. **Update OpenAPI** by running `make gen`
## Testing Workflows
### Test Execution
- Run full test suite: `make test`
- Run specific test: `make test RUN=TestFunctionName`
- Run with Postgres: `make test-postgres`
- Run with race detector: `make test-race`
- Run end-to-end tests: `make test-e2e`
### Test Development
- Use table-driven tests for comprehensive coverage
- Mock external dependencies
- Test both positive and negative cases
- Use `testutil.WaitLong` for timeouts in tests
- Always use `t.Parallel()` in tests
## Commit Style
- Follow [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/)
- Format: `type(scope): message`
- Types: `feat`, `fix`, `docs`, `style`, `refactor`, `test`, `chore`
- Keep message titles concise (~70 characters)
- Use imperative, present tense in commit titles
## Code Navigation and Investigation
### Using LSP Tools (STRONGLY RECOMMENDED)
**IMPORTANT**: Always use LSP tools for code navigation and understanding. These tools provide accurate, real-time analysis of the codebase and should be your first choice for code investigation.
#### Go LSP Tools (for backend code)
1. **Find function definitions** (USE THIS FREQUENTLY):
- `mcp__go-language-server__definition symbolName`
- Example: `mcp__go-language-server__definition getOAuth2ProviderAppAuthorize`
- Quickly jump to function implementations across packages
2. **Find symbol references** (ESSENTIAL FOR UNDERSTANDING IMPACT):
- `mcp__go-language-server__references symbolName`
- Locate all usages of functions, types, or variables
- Critical for refactoring and understanding data flow
3. **Get symbol information**:
- `mcp__go-language-server__hover filePath line column`
- Get type information and documentation at specific positions
#### TypeScript LSP Tools (for frontend code in site/)
1. **Find component/function definitions** (USE THIS FREQUENTLY):
- `mcp__typescript-language-server__definition symbolName`
- Example: `mcp__typescript-language-server__definition LoginPage`
- Quickly navigate to React components, hooks, and utility functions
2. **Find symbol references** (ESSENTIAL FOR UNDERSTANDING IMPACT):
- `mcp__typescript-language-server__references symbolName`
- Locate all usages of components, types, or functions
- Critical for refactoring React components and understanding prop usage
3. **Get type information**:
- `mcp__typescript-language-server__hover filePath line column`
- Get TypeScript type information and JSDoc documentation
4. **Rename symbols safely**:
- `mcp__typescript-language-server__rename_symbol filePath line column newName`
- Rename components, props, or functions across the entire codebase
5. **Check for TypeScript errors**:
- `mcp__typescript-language-server__diagnostics filePath`
- Get compilation errors and warnings for a specific file
### Investigation Strategy (LSP-First Approach)
#### Backend Investigation (Go)
1. **Start with route registration** in `coderd/coderd.go` to understand API endpoints
2. **Use Go LSP `definition` lookup** to trace from route handlers to actual implementations
3. **Use Go LSP `references`** to understand how functions are called throughout the codebase
4. **Follow the middleware chain** using LSP tools to understand request processing flow
5. **Check test files** for expected behavior and error patterns
#### Frontend Investigation (TypeScript/React)
1. **Start with route definitions** in `site/src/App.tsx` or router configuration
2. **Use TypeScript LSP `definition`** to navigate to React components and hooks
3. **Use TypeScript LSP `references`** to find all component usages and prop drilling
4. **Follow the component hierarchy** using LSP tools to understand data flow
5. **Check for TypeScript errors** with `diagnostics` before making changes
6. **Examine test files** (`.test.tsx`) for component behavior and expected props
## Troubleshooting Development Issues
### Common Issues
1. **Development server won't start** - Use `./scripts/develop.sh` instead of manual commands
2. **Database migration errors** - Check migration file format and use helper scripts
3. **Audit table errors** - Update `enterprise/audit/table.go` with new fields
4. **OAuth2 compliance issues** - Ensure RFC-compliant error responses
### Debug Commands
- Check linting: `make lint`
- Generate code: `make gen`
- Clean build: `make clean`
## Development Environment Setup
### Prerequisites
- Go (version specified in go.mod)
- Node.js and pnpm for frontend development
- PostgreSQL for database testing
- Docker for containerized testing
### First Time Setup
1. Clone the repository
2. Run `./scripts/develop.sh` to start development server
3. Access the development URL provided
4. Create admin user as prompted
5. Begin development
+133
View File
@@ -0,0 +1,133 @@
#!/bin/bash
# Claude Code hook script for file formatting
# This script integrates with the centralized Makefile formatting targets
# and supports the Claude Code hooks system for automatic file formatting.
set -euo pipefail
# A variable to memoize the command for canonicalizing paths.
_CANONICALIZE_CMD=""
# canonicalize_path resolves a path to its absolute, canonical form.
# It tries 'realpath' and 'readlink -f' in order.
# The chosen command is memoized to avoid repeated checks.
# If none of these are available, it returns an empty string.
canonicalize_path() {
local path_to_resolve="$1"
# If we haven't determined a command yet, find one.
if [[ -z "$_CANONICALIZE_CMD" ]]; then
if command -v realpath >/dev/null 2>&1; then
_CANONICALIZE_CMD="realpath"
elif command -v readlink >/dev/null 2>&1 && readlink -f . >/dev/null 2>&1; then
_CANONICALIZE_CMD="readlink"
else
# No command found, so we can't resolve.
# We set a "none" value to prevent re-checking.
_CANONICALIZE_CMD="none"
fi
fi
# Now, execute the command.
case "$_CANONICALIZE_CMD" in
realpath)
realpath "$path_to_resolve" 2>/dev/null
;;
readlink)
readlink -f "$path_to_resolve" 2>/dev/null
;;
*)
# This handles the "none" case or any unexpected error.
echo ""
;;
esac
}
# Read JSON input from stdin
input=$(cat)
# Extract the file path from the JSON input
# Expected format: {"tool_input": {"file_path": "/absolute/path/to/file"}} or {"tool_response": {"filePath": "/absolute/path/to/file"}}
file_path=$(echo "$input" | jq -r '.tool_input.file_path // .tool_response.filePath // empty')
# Secure path canonicalization to prevent path traversal attacks
# Resolve repo root to an absolute, canonical path.
repo_root_raw="$(cd "$(dirname "$0")/../.." && pwd)"
repo_root="$(canonicalize_path "$repo_root_raw")"
if [[ -z "$repo_root" ]]; then
# Fallback if canonicalization fails
repo_root="$repo_root_raw"
fi
# Resolve the input path to an absolute path
if [[ "$file_path" = /* ]]; then
# Already absolute
abs_file_path="$file_path"
else
# Make relative paths absolute from repo root
abs_file_path="$repo_root/$file_path"
fi
# Canonicalize the path (resolve symlinks and ".." segments)
canonical_file_path="$(canonicalize_path "$abs_file_path")"
# Check if canonicalization failed or if the resolved path is outside the repo
if [[ -z "$canonical_file_path" ]] || { [[ "$canonical_file_path" != "$repo_root" ]] && [[ "$canonical_file_path" != "$repo_root"/* ]]; }; then
echo "Error: File path is outside repository or invalid: $file_path" >&2
exit 1
fi
# Handle the case where the file path is the repository root itself.
if [[ "$canonical_file_path" == "$repo_root" ]]; then
echo "Warning: Formatting the repository root is not a supported operation. Skipping." >&2
exit 0
fi
# Convert back to relative path from repo root for consistency
file_path="${canonical_file_path#"$repo_root"/}"
if [[ -z "$file_path" ]]; then
echo "Error: No file path provided in input" >&2
exit 1
fi
# Check if file exists
if [[ ! -f "$file_path" ]]; then
echo "Error: File does not exist: $file_path" >&2
exit 1
fi
# Get the file extension to determine the appropriate formatter
file_ext="${file_path##*.}"
# Change to the project root directory (where the Makefile is located)
cd "$(dirname "$0")/../.."
# Call the appropriate Makefile target based on file extension
case "$file_ext" in
go)
make fmt/go FILE="$file_path"
echo "✓ Formatted Go file: $file_path"
;;
js | jsx | ts | tsx)
make fmt/ts FILE="$file_path"
echo "✓ Formatted TypeScript/JavaScript file: $file_path"
;;
tf | tfvars)
make fmt/terraform FILE="$file_path"
echo "✓ Formatted Terraform file: $file_path"
;;
sh)
make fmt/shfmt FILE="$file_path"
echo "✓ Formatted shell script: $file_path"
;;
md)
make fmt/markdown FILE="$file_path"
echo "✓ Formatted Markdown file: $file_path"
;;
*)
echo "No formatter available for file extension: $file_ext"
exit 0
;;
esac
+15
View File
@@ -0,0 +1,15 @@
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write|MultiEdit",
"hooks": [
{
"type": "command",
"command": ".claude/scripts/format.sh"
}
]
}
]
}
}
+124
View File
@@ -0,0 +1,124 @@
# Cursor Rules
This project is called "Coder" - an application for managing remote development environments.
Coder provides a platform for creating, managing, and using remote development environments (also known as Cloud Development Environments or CDEs). It leverages Terraform to define and provision these environments, which are referred to as "workspaces" within the project. The system is designed to be extensible, secure, and provide developers with a seamless remote development experience.
## Core Architecture
The heart of Coder is a control plane that orchestrates the creation and management of workspaces. This control plane interacts with separate Provisioner processes over gRPC to handle workspace builds. The Provisioners consume workspace definitions and use Terraform to create the actual infrastructure.
The CLI package serves dual purposes - it can be used to launch the control plane itself and also provides client functionality for users to interact with an existing control plane instance. All user-facing frontend code is developed in TypeScript using React and lives in the `site/` directory.
The database layer uses PostgreSQL with SQLC for generating type-safe database code. Database migrations are carefully managed to ensure both forward and backward compatibility through paired `.up.sql` and `.down.sql` files.
## API Design
Coder's API architecture combines REST and gRPC approaches. The REST API is defined in `coderd/coderd.go` and uses Chi for HTTP routing. This provides the primary interface for the frontend and external integrations.
Internal communication with Provisioners occurs over gRPC, with service definitions maintained in `.proto` files. This separation allows for efficient binary communication with the components responsible for infrastructure management while providing a standard REST interface for human-facing applications.
## Network Architecture
Coder implements a secure networking layer based on Tailscale's Wireguard implementation. The `tailnet` package provides connectivity between workspace agents and clients through DERP (Designated Encrypted Relay for Packets) servers when direct connections aren't possible. This creates a secure overlay network allowing access to workspaces regardless of network topology, firewalls, or NAT configurations.
### Tailnet and DERP System
The networking system has three key components:
1. **Tailnet**: An overlay network implemented in the `tailnet` package that provides secure, end-to-end encrypted connections between clients, the Coder server, and workspace agents.
2. **DERP Servers**: These relay traffic when direct connections aren't possible. Coder provides several options:
- A built-in DERP server that runs on the Coder control plane
- Integration with Tailscale's global DERP infrastructure
- Support for custom DERP servers for lower latency or offline deployments
3. **Direct Connections**: When possible, the system establishes peer-to-peer connections between clients and workspaces using STUN for NAT traversal. This requires both endpoints to send UDP traffic on ephemeral ports.
### Workspace Proxies
Workspace proxies (in the Enterprise edition) provide regional relay points for browser-based connections, reducing latency for geo-distributed teams. Key characteristics:
- Deployed as independent servers that authenticate with the Coder control plane
- Relay connections for SSH, workspace apps, port forwarding, and web terminals
- Do not make direct database connections
- Managed through the `coder wsproxy` commands
- Implemented primarily in the `enterprise/wsproxy/` package
## Agent System
The workspace agent runs within each provisioned workspace and provides core functionality including:
- SSH access to workspaces via the `agentssh` package
- Port forwarding
- Terminal connectivity via the `pty` package for pseudo-terminal support
- Application serving
- Healthcheck monitoring
- Resource usage reporting
Agents communicate with the control plane using the tailnet system and authenticate using secure tokens.
## Workspace Applications
Workspace applications (or "apps") provide browser-based access to services running within workspaces. The system supports:
- HTTP(S) and WebSocket connections
- Path-based or subdomain-based access URLs
- Health checks to monitor application availability
- Different sharing levels (owner-only, authenticated users, or public)
- Custom icons and display settings
The implementation is primarily in the `coderd/workspaceapps/` directory with components for URL generation, proxying connections, and managing application state.
## Implementation Details
The project structure separates frontend and backend concerns. React components and pages are organized in the `site/src/` directory, with Jest used for testing. The backend is primarily written in Go, with a strong emphasis on error handling patterns and test coverage.
Database interactions are carefully managed through migrations in `coderd/database/migrations/` and queries in `coderd/database/queries/`. All new queries require proper database authorization (dbauthz) implementation to ensure that only users with appropriate permissions can access specific resources.
## Authorization System
The database authorization (dbauthz) system enforces fine-grained access control across all database operations. It uses role-based access control (RBAC) to validate user permissions before executing database operations. The `dbauthz` package wraps the database store and performs authorization checks before returning data. All database operations must pass through this layer to ensure security.
## Testing Framework
The codebase has a comprehensive testing approach with several key components:
1. **Parallel Testing**: All tests must use `t.Parallel()` to run concurrently, which improves test suite performance and helps identify race conditions.
2. **coderdtest Package**: This package in `coderd/coderdtest/` provides utilities for creating test instances of the Coder server, setting up test users and workspaces, and mocking external components.
3. **Integration Tests**: Tests often span multiple components to verify system behavior, such as template creation, workspace provisioning, and agent connectivity.
4. **Enterprise Testing**: Enterprise features have dedicated test utilities in the `coderdenttest` package.
## Open Source and Enterprise Components
The repository contains both open source and enterprise components:
- Enterprise code lives primarily in the `enterprise/` directory
- Enterprise features focus on governance, scalability (high availability), and advanced deployment options like workspace proxies
- The boundary between open source and enterprise is managed through a licensing system
- The same core codebase supports both editions, with enterprise features conditionally enabled
## Development Philosophy
Coder emphasizes clear error handling, with specific patterns required:
- Concise error messages that avoid phrases like "failed to"
- Wrapping errors with `%w` to maintain error chains
- Using sentinel errors with the "err" prefix (e.g., `errNotFound`)
All tests should run in parallel using `t.Parallel()` to ensure efficient testing and expose potential race conditions. The codebase is rigorously linted with golangci-lint to maintain consistent code quality.
Git contributions follow a standard format with commit messages structured as `type: <message>`, where type is one of `feat`, `fix`, or `chore`.
## Development Workflow
Development can be initiated using `scripts/develop.sh` to start the application after making changes. Database schema updates should be performed through the migration system using `create_migration.sh <name>` to generate migration files, with each `.up.sql` migration paired with a corresponding `.down.sql` that properly reverts all changes.
If the development database gets into a bad state, it can be completely reset by removing the PostgreSQL data directory with `rm -rf .coderv2/postgres`. This will destroy all data in the development database, requiring you to recreate any test users, templates, or workspaces after restarting the application.
Code generation for the database layer uses `coderd/database/generate.sh`, and developers should refer to `sqlc.yaml` for the appropriate style and patterns to follow when creating new queries or tables.
The focus should always be on maintaining security through proper database authorization, clean error handling, and comprehensive test coverage to ensure the platform remains robust and reliable.
+67 -3
View File
@@ -1,11 +1,16 @@
{
"name": "Development environments on your infrastructure",
"image": "codercom/oss-dogfood:latest",
"features": {
// See all possible options here https://github.com/devcontainers/features/tree/main/src/docker-in-docker
"ghcr.io/devcontainers/features/docker-in-docker:2": {
"moby": "false"
},
"ghcr.io/coder/devcontainer-features/code-server:1": {
"auth": "none",
"port": 13337
},
"./filebrowser": {
"folder": "${containerWorkspaceFolder}"
}
},
// SYS_PTRACE to enable go debugging
@@ -13,6 +18,65 @@
"customizations": {
"vscode": {
"extensions": ["biomejs.biome"]
},
"coder": {
"apps": [
{
"slug": "cursor",
"displayName": "Cursor Desktop",
"url": "cursor://coder.coder-remote/openDevContainer?owner=${localEnv:CODER_WORKSPACE_OWNER_NAME}&workspace=${localEnv:CODER_WORKSPACE_NAME}&agent=${localEnv:CODER_WORKSPACE_PARENT_AGENT_NAME}&url=${localEnv:CODER_URL}&token=$SESSION_TOKEN&devContainerName=${localEnv:CONTAINER_ID}&devContainerFolder=${containerWorkspaceFolder}&localWorkspaceFolder=${localWorkspaceFolder}",
"external": true,
"icon": "/icon/cursor.svg",
"order": 1
},
{
"slug": "windsurf",
"displayName": "Windsurf Editor",
"url": "windsurf://coder.coder-remote/openDevContainer?owner=${localEnv:CODER_WORKSPACE_OWNER_NAME}&workspace=${localEnv:CODER_WORKSPACE_NAME}&agent=${localEnv:CODER_WORKSPACE_PARENT_AGENT_NAME}&url=${localEnv:CODER_URL}&token=$SESSION_TOKEN&devContainerName=${localEnv:CONTAINER_ID}&devContainerFolder=${containerWorkspaceFolder}&localWorkspaceFolder=${localWorkspaceFolder}",
"external": true,
"icon": "/icon/windsurf.svg",
"order": 4
},
{
"slug": "zed",
"displayName": "Zed Editor",
"url": "zed://ssh/${localEnv:CODER_WORKSPACE_AGENT_NAME}.${localEnv:CODER_WORKSPACE_NAME}.${localEnv:CODER_WORKSPACE_OWNER_NAME}.coder${containerWorkspaceFolder}",
"external": true,
"icon": "/icon/zed.svg",
"order": 5
},
// Reproduce `code-server` app here from the code-server
// feature so that we can set the correct folder and order.
// Currently, the order cannot be specified via option because
// we parse it as a number whereas variable interpolation
// results in a string. Additionally we set health check which
// is not yet set in the feature.
{
"slug": "code-server",
"displayName": "code-server",
"url": "http://${localEnv:FEATURE_CODE_SERVER_OPTION_HOST:127.0.0.1}:${localEnv:FEATURE_CODE_SERVER_OPTION_PORT:8080}/?folder=${containerWorkspaceFolder}",
"openIn": "${localEnv:FEATURE_CODE_SERVER_OPTION_APPOPENIN:slim-window}",
"share": "${localEnv:FEATURE_CODE_SERVER_OPTION_APPSHARE:owner}",
"icon": "/icon/code.svg",
"group": "${localEnv:FEATURE_CODE_SERVER_OPTION_APPGROUP:Web Editors}",
"order": 3,
"healthCheck": {
"url": "http://${localEnv:FEATURE_CODE_SERVER_OPTION_HOST:127.0.0.1}:${localEnv:FEATURE_CODE_SERVER_OPTION_PORT:8080}/healthz",
"interval": 5,
"threshold": 2
}
}
]
}
}
},
"mounts": [
// Add a volume for the Coder home directory to persist shell history,
// and speed up dotfiles init and/or personalization.
"source=coder-coder-devcontainer-home,target=/home/coder,type=volume",
// Mount the entire home because conditional mounts are not supported.
// See: https://github.com/devcontainers/spec/issues/132
"source=${localEnv:HOME},target=/mnt/home/coder,type=bind,readonly"
],
"postCreateCommand": ["./.devcontainer/scripts/post_create.sh"],
"postStartCommand": ["./.devcontainer/scripts/post_start.sh"]
}
@@ -0,0 +1,46 @@
{
"id": "filebrowser",
"version": "0.0.1",
"name": "File Browser",
"description": "A web-based file browser for your development container",
"options": {
"port": {
"type": "string",
"default": "13339",
"description": "The port to run filebrowser on"
},
"folder": {
"type": "string",
"default": "",
"description": "The root directory for filebrowser to serve"
},
"baseUrl": {
"type": "string",
"default": "",
"description": "The base URL for filebrowser (e.g., /filebrowser)"
}
},
"entrypoint": "/usr/local/bin/filebrowser-entrypoint",
"dependsOn": {
"ghcr.io/devcontainers/features/common-utils:2": {}
},
"customizations": {
"coder": {
"apps": [
{
"slug": "filebrowser",
"displayName": "File Browser",
"url": "http://localhost:${localEnv:FEATURE_FILEBROWSER_OPTION_PORT:13339}",
"icon": "/icon/filebrowser.svg",
"order": 3,
"subdomain": true,
"healthcheck": {
"url": "http://localhost:${localEnv:FEATURE_FILEBROWSER_OPTION_PORT:13339}/health",
"interval": 5,
"threshold": 2
}
}
]
}
}
}
+54
View File
@@ -0,0 +1,54 @@
#!/usr/bin/env bash
set -euo pipefail
BOLD='\033[0;1m'
printf "%sInstalling filebrowser\n\n" "${BOLD}"
# Check if filebrowser is installed.
if ! command -v filebrowser &>/dev/null; then
VERSION="v2.42.1"
EXPECTED_HASH="7d83c0f077df10a8ec9bfd9bf6e745da5d172c3c768a322b0e50583a6bc1d3cc"
curl -fsSL "https://github.com/filebrowser/filebrowser/releases/download/${VERSION}/linux-amd64-filebrowser.tar.gz" -o /tmp/filebrowser.tar.gz
echo "${EXPECTED_HASH} /tmp/filebrowser.tar.gz" | sha256sum -c
tar -xzf /tmp/filebrowser.tar.gz -C /tmp
sudo mv /tmp/filebrowser /usr/local/bin/
sudo chmod +x /usr/local/bin/filebrowser
rm /tmp/filebrowser.tar.gz
fi
# Create entrypoint.
cat >/usr/local/bin/filebrowser-entrypoint <<EOF
#!/usr/bin/env bash
PORT="${PORT}"
FOLDER="${FOLDER:-}"
FOLDER="\${FOLDER:-\$(pwd)}"
BASEURL="${BASEURL:-}"
LOG_PATH=/tmp/filebrowser.log
export FB_DATABASE="\${HOME}/.filebrowser.db"
printf "🛠️ Configuring filebrowser\n\n"
# Check if filebrowser db exists.
if [[ ! -f "\${FB_DATABASE}" ]]; then
filebrowser config init >>\${LOG_PATH} 2>&1
filebrowser users add admin "" --perm.admin=true --viewMode=mosaic >>\${LOG_PATH} 2>&1
fi
filebrowser config set --baseurl=\${BASEURL} --port=\${PORT} --auth.method=noauth --root=\${FOLDER} >>\${LOG_PATH} 2>&1
printf "👷 Starting filebrowser...\n\n"
printf "📂 Serving \${FOLDER} at http://localhost:\${PORT}\n\n"
filebrowser >>\${LOG_PATH} 2>&1 &
printf "📝 Logs at \${LOG_PATH}\n\n"
EOF
chmod +x /usr/local/bin/filebrowser-entrypoint
printf "🥳 Installation complete!\n\n"
+59
View File
@@ -0,0 +1,59 @@
#!/bin/sh
install_devcontainer_cli() {
npm install -g @devcontainers/cli@0.80.0 --integrity=sha512-w2EaxgjyeVGyzfA/KUEZBhyXqu/5PyWNXcnrXsZOBrt3aN2zyGiHrXoG54TF6K0b5DSCF01Rt5fnIyrCeFzFKw==
}
install_ssh_config() {
echo "🔑 Installing SSH configuration..."
rsync -a /mnt/home/coder/.ssh/ ~/.ssh/
chmod 0700 ~/.ssh
}
install_git_config() {
echo "📂 Installing Git configuration..."
if [ -f /mnt/home/coder/git/config ]; then
rsync -a /mnt/home/coder/git/ ~/.config/git/
elif [ -d /mnt/home/coder/.gitconfig ]; then
rsync -a /mnt/home/coder/.gitconfig ~/.gitconfig
else
echo "⚠️ Git configuration directory not found."
fi
}
install_dotfiles() {
if [ ! -d /mnt/home/coder/.config/coderv2/dotfiles ]; then
echo "⚠️ Dotfiles directory not found."
return
fi
cd /mnt/home/coder/.config/coderv2/dotfiles || return
for script in install.sh install bootstrap.sh bootstrap script/bootstrap setup.sh setup script/setup; do
if [ -x $script ]; then
echo "📦 Installing dotfiles..."
./$script || {
echo "❌ Error running $script. Please check the script for issues."
return
}
echo "✅ Dotfiles installed successfully."
return
fi
done
echo "⚠️ No install script found in dotfiles directory."
}
personalize() {
# Allow script to continue as Coder dogfood utilizes a hack to
# synchronize startup script execution.
touch /tmp/.coder-startup-script.done
if [ -x /mnt/home/coder/personalize ]; then
echo "🎨 Personalizing environment..."
/mnt/home/coder/personalize
fi
}
install_devcontainer_cli
install_ssh_config
install_dotfiles
personalize
+4
View File
@@ -0,0 +1,4 @@
#!/bin/sh
# Start Docker service if not already running.
sudo service docker start
+13 -1
View File
@@ -7,10 +7,22 @@ trim_trailing_whitespace = true
insert_final_newline = true
indent_style = tab
[*.{yaml,yml,tf,tfvars,nix}]
[*.{yaml,yml,tf,tftpl,tfvars,nix}]
indent_style = space
indent_size = 2
[*.proto]
indent_style = space
indent_size = 2
[coderd/database/dump.sql]
indent_style = space
indent_size = 4
[coderd/database/queries/*.sql]
indent_style = tab
indent_size = 4
[coderd/database/migrations/*.sql]
indent_style = tab
indent_size = 4
+4 -1
View File
@@ -1,6 +1,7 @@
# Generated files
agent/agentcontainers/acmock/acmock.go linguist-generated=true
agent/agentcontainers/dcspec/dcspec_gen.go linguist-generated=true
agent/agentcontainers/testdata/devcontainercli/*/*.log linguist-generated=true
coderd/apidoc/docs.go linguist-generated=true
docs/reference/api/*.md linguist-generated=true
docs/reference/cli/*.md linguist-generated=true
@@ -14,6 +15,8 @@ provisionersdk/proto/*.go linguist-generated=true
*.tfstate.json linguist-generated=true
*.tfstate.dot linguist-generated=true
*.tfplan.dot linguist-generated=true
site/e2e/google/protobuf/timestampGenerated.ts
site/e2e/provisionerGenerated.ts linguist-generated=true
site/src/api/countriesGenerated.tsx linguist-generated=true
site/src/api/rbacresourcesGenerated.tsx linguist-generated=true
site/src/api/typesGenerated.ts linguist-generated=true
site/src/pages/SetupPage/countries.tsx linguist-generated=true
+4
View File
@@ -22,5 +22,9 @@ ignorePatterns:
- pattern: "www.gnu.org"
- pattern: "wiki.ubuntu.com"
- pattern: "mutagen.io"
- pattern: "docs.github.com"
- pattern: "claude.ai"
- pattern: "splunk.com"
- pattern: "stackoverflow.com/questions"
aliveStatusCodes:
- 200
+1
View File
@@ -2,6 +2,7 @@ name: "🐞 Bug"
description: "File a bug report."
title: "bug: "
labels: ["needs-triage"]
type: "Bug"
body:
- type: checkboxes
id: existing_issues
@@ -0,0 +1,49 @@
name: "Download Embedded Postgres Cache"
description: |
Downloads the embedded postgres cache and outputs today's cache key.
A PR job can use a cache if it was created by its base branch, its current
branch, or the default branch.
https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/caching-dependencies-to-speed-up-workflows#restrictions-for-accessing-a-cache
outputs:
cache-key:
description: "Today's cache key"
value: ${{ steps.vars.outputs.cache-key }}
inputs:
key-prefix:
description: "Prefix for the cache key"
required: true
cache-path:
description: "Path to the cache directory"
required: true
runs:
using: "composite"
steps:
- name: Get date values and cache key
id: vars
shell: bash
run: |
export YEAR_MONTH=$(date +'%Y-%m')
export PREV_YEAR_MONTH=$(date -d 'last month' +'%Y-%m')
export DAY=$(date +'%d')
echo "year-month=$YEAR_MONTH" >> "$GITHUB_OUTPUT"
echo "prev-year-month=$PREV_YEAR_MONTH" >> "$GITHUB_OUTPUT"
echo "cache-key=${INPUTS_KEY_PREFIX}-${YEAR_MONTH}-${DAY}" >> "$GITHUB_OUTPUT"
env:
INPUTS_KEY_PREFIX: ${{ inputs.key-prefix }}
# By default, depot keeps caches for 14 days. This is plenty for embedded
# postgres, which changes infrequently.
# https://depot.dev/docs/github-actions/overview#cache-retention-policy
- name: Download embedded Postgres cache
uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
with:
path: ${{ inputs.cache-path }}
key: ${{ steps.vars.outputs.cache-key }}
# > If there are multiple partial matches for a restore key, the action returns the most recently created cache.
# https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/caching-dependencies-to-speed-up-workflows#matching-a-cache-key
# The second restore key allows non-main branches to use the cache from the previous month.
# This prevents PRs from rebuilding the cache on the first day of the month.
# It also makes sure that once a month, the cache is fully reset.
restore-keys: |
${{ inputs.key-prefix }}-${{ steps.vars.outputs.year-month }}-
${{ github.ref != 'refs/heads/main' && format('{0}-{1}-', inputs.key-prefix, steps.vars.outputs.prev-year-month) || '' }}
@@ -0,0 +1,18 @@
name: "Upload Embedded Postgres Cache"
description: Uploads the embedded Postgres cache. This only runs on the main branch.
inputs:
cache-key:
description: "Cache key"
required: true
cache-path:
description: "Path to the cache directory"
required: true
runs:
using: "composite"
steps:
- name: Upload Embedded Postgres cache
if: ${{ github.ref == 'refs/heads/main' }}
uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
with:
path: ${{ inputs.cache-path }}
key: ${{ inputs.cache-key }}
@@ -0,0 +1,33 @@
name: "Setup Embedded Postgres Cache Paths"
description: Sets up a path for cached embedded postgres binaries.
outputs:
embedded-pg-cache:
description: "Value of EMBEDDED_PG_CACHE_DIR"
value: ${{ steps.paths.outputs.embedded-pg-cache }}
cached-dirs:
description: "directories that should be cached between CI runs"
value: ${{ steps.paths.outputs.cached-dirs }}
runs:
using: "composite"
steps:
- name: Override Go paths
id: paths
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
with:
script: |
const path = require('path');
// RUNNER_TEMP should be backed by a RAM disk on Windows if
// coder/setup-ramdisk-action was used
const runnerTemp = process.env.RUNNER_TEMP;
const embeddedPgCacheDir = path.join(runnerTemp, 'embedded-pg-cache');
core.exportVariable('EMBEDDED_PG_CACHE_DIR', embeddedPgCacheDir);
core.setOutput('embedded-pg-cache', embeddedPgCacheDir);
const cachedDirs = `${embeddedPgCacheDir}`;
core.setOutput('cached-dirs', cachedDirs);
- name: Create directories
shell: bash
run: |
set -e
mkdir -p "$EMBEDDED_PG_CACHE_DIR"
+57
View File
@@ -0,0 +1,57 @@
name: "Setup Go Paths"
description: Overrides Go paths like GOCACHE and GOMODCACHE to use temporary directories.
outputs:
gocache:
description: "Value of GOCACHE"
value: ${{ steps.paths.outputs.gocache }}
gomodcache:
description: "Value of GOMODCACHE"
value: ${{ steps.paths.outputs.gomodcache }}
gopath:
description: "Value of GOPATH"
value: ${{ steps.paths.outputs.gopath }}
gotmp:
description: "Value of GOTMPDIR"
value: ${{ steps.paths.outputs.gotmp }}
cached-dirs:
description: "Go directories that should be cached between CI runs"
value: ${{ steps.paths.outputs.cached-dirs }}
runs:
using: "composite"
steps:
- name: Override Go paths
id: paths
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
with:
script: |
const path = require('path');
// RUNNER_TEMP should be backed by a RAM disk on Windows if
// coder/setup-ramdisk-action was used
const runnerTemp = process.env.RUNNER_TEMP;
const gocacheDir = path.join(runnerTemp, 'go-cache');
const gomodcacheDir = path.join(runnerTemp, 'go-mod-cache');
const gopathDir = path.join(runnerTemp, 'go-path');
const gotmpDir = path.join(runnerTemp, 'go-tmp');
core.exportVariable('GOCACHE', gocacheDir);
core.exportVariable('GOMODCACHE', gomodcacheDir);
core.exportVariable('GOPATH', gopathDir);
core.exportVariable('GOTMPDIR', gotmpDir);
core.setOutput('gocache', gocacheDir);
core.setOutput('gomodcache', gomodcacheDir);
core.setOutput('gopath', gopathDir);
core.setOutput('gotmp', gotmpDir);
const cachedDirs = `${gocacheDir}\n${gomodcacheDir}`;
core.setOutput('cached-dirs', cachedDirs);
- name: Create directories
shell: bash
run: |
set -e
mkdir -p "$GOCACHE"
mkdir -p "$GOMODCACHE"
mkdir -p "$GOPATH"
mkdir -p "$GOTMPDIR"
@@ -0,0 +1,14 @@
name: "Setup Go tools"
description: |
Set up tools for `make gen`, `offlinedocs` and Schmoder CI.
runs:
using: "composite"
steps:
- name: go install tools
shell: bash
run: |
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.30
go install storj.io/drpc/cmd/protoc-gen-go-drpc@v0.0.34
go install golang.org/x/tools/cmd/goimports@v0.31.0
go install github.com/mikefarah/yq/v4@v4.44.3
go install go.uber.org/mock/mockgen@v0.5.0
+14 -3
View File
@@ -4,18 +4,29 @@ description: |
inputs:
version:
description: "The Go version to use."
default: "1.22.12"
default: "1.24.10"
use-preinstalled-go:
description: "Whether to use preinstalled Go."
default: "false"
use-cache:
description: "Whether to use the cache."
default: "true"
runs:
using: "composite"
steps:
- name: Setup Go
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
with:
go-version: ${{ inputs.version }}
go-version: ${{ inputs.use-preinstalled-go == 'false' && inputs.version || '' }}
cache: ${{ inputs.use-cache }}
- name: Install gotestsum
shell: bash
run: go install gotest.tools/gotestsum@latest
run: go install gotest.tools/gotestsum@0d9599e513d70e5792bb9334869f82f6e8b53d4d # main as of 2025-05-15
- name: Install mtimehash
shell: bash
run: go install github.com/slsyy/mtimehash/cmd/mtimehash@a6b5da4ed2c4a40e7b805534b004e9fde7b53ce0 # v1.0.0
# It isn't necessary that we ever do this, but it helps
# separate the "setup" from the "run" times.
-27
View File
@@ -1,27 +0,0 @@
name: "Setup ImDisk"
if: runner.os == 'Windows'
description: |
Sets up the ImDisk toolkit for Windows and creates a RAM disk on drive R:.
runs:
using: "composite"
steps:
- name: Download ImDisk
if: runner.os == 'Windows'
shell: bash
run: |
mkdir imdisk
cd imdisk
curl -L -o files.cab https://github.com/coder/imdisk-artifacts/raw/92a17839ebc0ee3e69be019f66b3e9b5d2de4482/files.cab
curl -L -o install.bat https://github.com/coder/imdisk-artifacts/raw/92a17839ebc0ee3e69be019f66b3e9b5d2de4482/install.bat
cd ..
- name: Install ImDisk
shell: cmd
run: |
cd imdisk
install.bat /silent
- name: Create RAM Disk
shell: cmd
run: |
imdisk -a -s 4096M -m R: -p "/fs:ntfs /q /y"
+1 -1
View File
@@ -16,7 +16,7 @@ runs:
- name: Setup Node
uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4
with:
node-version: 20.16.0
node-version: 20.19.4
# See https://github.com/actions/setup-node#caching-global-packages-data
cache: "pnpm"
cache-dependency-path: ${{ inputs.directory }}/pnpm-lock.yaml
+1 -1
View File
@@ -7,5 +7,5 @@ runs:
- name: Install Terraform
uses: hashicorp/setup-terraform@b9cd54a3c349d3f38e8881555d616ced269862dd # v3.1.2
with:
terraform_version: 1.11.2
terraform_version: 1.13.0
terraform_wrapper: false
@@ -0,0 +1,52 @@
name: "Download Test Cache"
description: |
Downloads the test cache and outputs today's cache key.
A PR job can use a cache if it was created by its base branch, its current
branch, or the default branch.
https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/caching-dependencies-to-speed-up-workflows#restrictions-for-accessing-a-cache
outputs:
cache-key:
description: "Today's cache key"
value: ${{ steps.vars.outputs.cache-key }}
inputs:
key-prefix:
description: "Prefix for the cache key"
required: true
cache-path:
description: "Path to the cache directory"
required: true
# This path is defined in testutil/cache.go
default: "~/.cache/coderv2-test"
runs:
using: "composite"
steps:
- name: Get date values and cache key
id: vars
shell: bash
run: |
export YEAR_MONTH=$(date +'%Y-%m')
export PREV_YEAR_MONTH=$(date -d 'last month' +'%Y-%m')
export DAY=$(date +'%d')
echo "year-month=$YEAR_MONTH" >> "$GITHUB_OUTPUT"
echo "prev-year-month=$PREV_YEAR_MONTH" >> "$GITHUB_OUTPUT"
echo "cache-key=${INPUTS_KEY_PREFIX}-${YEAR_MONTH}-${DAY}" >> "$GITHUB_OUTPUT"
env:
INPUTS_KEY_PREFIX: ${{ inputs.key-prefix }}
# TODO: As a cost optimization, we could remove caches that are older than
# a day or two. By default, depot keeps caches for 14 days, which isn't
# necessary for the test cache.
# https://depot.dev/docs/github-actions/overview#cache-retention-policy
- name: Download test cache
uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
with:
path: ${{ inputs.cache-path }}
key: ${{ steps.vars.outputs.cache-key }}
# > If there are multiple partial matches for a restore key, the action returns the most recently created cache.
# https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/caching-dependencies-to-speed-up-workflows#matching-a-cache-key
# The second restore key allows non-main branches to use the cache from the previous month.
# This prevents PRs from rebuilding the cache on the first day of the month.
# It also makes sure that once a month, the cache is fully reset.
restore-keys: |
${{ inputs.key-prefix }}-${{ steps.vars.outputs.year-month }}-
${{ github.ref != 'refs/heads/main' && format('{0}-{1}-', inputs.key-prefix, steps.vars.outputs.prev-year-month) || '' }}
@@ -0,0 +1,20 @@
name: "Upload Test Cache"
description: Uploads the test cache. Only works on the main branch.
inputs:
cache-key:
description: "Cache key"
required: true
cache-path:
description: "Path to the cache directory"
required: true
# This path is defined in testutil/cache.go
default: "~/.cache/coderv2-test"
runs:
using: "composite"
steps:
- name: Upload test cache
if: ${{ github.ref == 'refs/heads/main' }}
uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
with:
path: ${{ inputs.cache-path }}
key: ${{ inputs.cache-key }}
+46 -7
View File
@@ -10,19 +10,58 @@ runs:
steps:
- shell: bash
run: |
owner=${{ github.repository_owner }}
echo "owner: $owner"
if [[ $owner != "coder" ]]; then
set -e
echo "owner: $REPO_OWNER"
if [[ "$REPO_OWNER" != "coder" ]]; then
echo "Not a pull request from the main repo, skipping..."
exit 0
fi
if [[ -z "${{ inputs.api-key }}" ]]; then
if [[ -z "${DATADOG_API_KEY}" ]]; then
# This can happen for dependabot.
echo "No API key provided, skipping..."
exit 0
fi
npm install -g @datadog/datadog-ci@2.21.0
datadog-ci junit upload --service coder ./gotests.xml \
--tags os:${{runner.os}} --tags runner_name:${{runner.name}}
BINARY_VERSION="v2.48.0"
BINARY_HASH_WINDOWS="b7bebb8212403fddb1563bae84ce5e69a70dac11e35eb07a00c9ef7ac9ed65ea"
BINARY_HASH_MACOS="e87c808638fddb21a87a5c4584b68ba802965eb0a593d43959c81f67246bd9eb"
BINARY_HASH_LINUX="5e700c465728fff8313e77c2d5ba1ce19a736168735137e1ddc7c6346ed48208"
TMP_DIR=$(mktemp -d)
if [[ "${RUNNER_OS}" == "Windows" ]]; then
BINARY_PATH="${TMP_DIR}/datadog-ci.exe"
BINARY_URL="https://github.com/DataDog/datadog-ci/releases/download/${BINARY_VERSION}/datadog-ci_win-x64"
elif [[ "${RUNNER_OS}" == "macOS" ]]; then
BINARY_PATH="${TMP_DIR}/datadog-ci"
BINARY_URL="https://github.com/DataDog/datadog-ci/releases/download/${BINARY_VERSION}/datadog-ci_darwin-arm64"
elif [[ "${RUNNER_OS}" == "Linux" ]]; then
BINARY_PATH="${TMP_DIR}/datadog-ci"
BINARY_URL="https://github.com/DataDog/datadog-ci/releases/download/${BINARY_VERSION}/datadog-ci_linux-x64"
else
echo "Unsupported OS: $RUNNER_OS"
exit 1
fi
echo "Downloading DataDog CI binary version ${BINARY_VERSION} for $RUNNER_OS..."
curl -sSL "$BINARY_URL" -o "$BINARY_PATH"
if [[ "${RUNNER_OS}" == "Windows" ]]; then
echo "$BINARY_HASH_WINDOWS $BINARY_PATH" | sha256sum --check
elif [[ "${RUNNER_OS}" == "macOS" ]]; then
echo "$BINARY_HASH_MACOS $BINARY_PATH" | shasum -a 256 --check
elif [[ "${RUNNER_OS}" == "Linux" ]]; then
echo "$BINARY_HASH_LINUX $BINARY_PATH" | sha256sum --check
fi
# Make binary executable (not needed for Windows)
if [[ "${RUNNER_OS}" != "Windows" ]]; then
chmod +x "$BINARY_PATH"
fi
"$BINARY_PATH" junit upload --service coder ./gotests.xml \
--tags "os:${RUNNER_OS}" --tags "runner_name:${RUNNER_NAME}"
env:
REPO_OWNER: ${{ github.repository_owner }}
DATADOG_API_KEY: ${{ inputs.api-key }}
+19
View File
@@ -33,6 +33,7 @@ updates:
- dependency-name: "*"
update-types:
- version-update:semver-patch
- dependency-name: "github.com/mark3labs/mcp-go"
# Update our Dockerfile.
- package-ecosystem: "docker"
@@ -104,3 +105,21 @@ updates:
update-types:
- version-update:semver-major
open-pull-requests-limit: 15
- package-ecosystem: "terraform"
directories:
- "dogfood/*/"
- "examples/templates/*/"
schedule:
interval: "weekly"
commit-message:
prefix: "chore"
groups:
coder:
patterns:
- "registry.coder.com/coder/*/coder"
labels: []
ignore:
- dependency-name: "*"
update-types:
- version-update:semver-major
+1
View File
@@ -0,0 +1 @@
If you have used AI to produce some or all of this PR, please ensure you have read our [AI Contribution guidelines](https://coder.com/docs/about/contributing/AI_CONTRIBUTING) before submitting.
+426 -279
View File
File diff suppressed because it is too large Load Diff
+2 -1
View File
@@ -3,6 +3,7 @@ name: contrib
on:
issue_comment:
types: [created, edited]
# zizmor: ignore[dangerous-triggers] We explicitly want to run on pull_request_target.
pull_request_target:
types:
- opened
@@ -42,7 +43,7 @@ jobs:
# branch should not be protected
branch: "main"
# Some users have signed a corporate CLA with Coder so are exempt from signing our community one.
allowlist: "coryb,aaronlehmann,dependabot*"
allowlist: "coryb,aaronlehmann,dependabot*,blink-so*"
release-labels:
runs-on: ubuntu-latest
+11 -10
View File
@@ -15,7 +15,7 @@ jobs:
github.event_name == 'pull_request' &&
github.event.action == 'opened' &&
github.event.pull_request.user.login == 'dependabot[bot]' &&
github.actor_id == 49699333 &&
github.event.pull_request.user.id == 49699333 &&
github.repository == 'coder/coder'
permissions:
pull-requests: write
@@ -23,7 +23,7 @@ jobs:
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7 # v2.3.0
uses: dependabot/fetch-metadata@08eff52bf64351f401fb50d4972fa95b9f2c2d1b # v2.4.0
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
@@ -44,10 +44,6 @@ jobs:
GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
- name: Send Slack notification
env:
PR_URL: ${{github.event.pull_request.html_url}}
PR_TITLE: ${{github.event.pull_request.title}}
PR_NUMBER: ${{github.event.pull_request.number}}
run: |
curl -X POST -H 'Content-type: application/json' \
--data '{
@@ -58,7 +54,7 @@ jobs:
"type": "header",
"text": {
"type": "plain_text",
"text": ":pr-merged: Auto merge enabled for Dependabot PR #${{ env.PR_NUMBER }}",
"text": ":pr-merged: Auto merge enabled for Dependabot PR #'"${PR_NUMBER}"'",
"emoji": true
}
},
@@ -67,7 +63,7 @@ jobs:
"fields": [
{
"type": "mrkdwn",
"text": "${{ env.PR_TITLE }}"
"text": "'"${PR_TITLE}"'"
}
]
},
@@ -80,9 +76,14 @@ jobs:
"type": "plain_text",
"text": "View PR"
},
"url": "${{ env.PR_URL }}"
"url": "'"${PR_URL}"'"
}
]
}
]
}' ${{ secrets.DEPENDABOT_PRS_SLACK_WEBHOOK }}
}' "${{ secrets.DEPENDABOT_PRS_SLACK_WEBHOOK }}"
env:
SLACK_WEBHOOK: ${{ secrets.DEPENDABOT_PRS_SLACK_WEBHOOK }}
PR_NUMBER: ${{ github.event.pull_request.number }}
PR_TITLE: ${{ github.event.pull_request.title }}
PR_URL: ${{ github.event.pull_request.html_url }}
+6 -4
View File
@@ -38,15 +38,17 @@ jobs:
if: github.repository_owner == 'coder'
steps:
- name: Harden Runner
uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
with:
egress-policy: audit
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
persist-credentials: false
- name: Docker login
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
with:
registry: ghcr.io
username: ${{ github.actor }}
@@ -60,7 +62,7 @@ jobs:
# This uses OIDC authentication, so no auth variables are required.
- name: Build base Docker image via depot.dev
uses: depot/build-push-action@636daae76684e38c301daa0c5eca1c095b24e780 # v1.14.0
uses: depot/build-push-action@2583627a84956d07561420dcc1d0eb1f2af3fac0 # v1.15.0
with:
project: wl5hnrrkns
context: base-build-context
+12 -4
View File
@@ -23,12 +23,14 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
persist-credentials: false
- name: Setup Node
uses: ./.github/actions/setup-node
- uses: tj-actions/changed-files@27ae6b33eaed7bf87272fdeb9f1c54f9facc9d99 # v45.0.7
- uses: tj-actions/changed-files@f963b3f3562b00b6d2dd25efc390eb04e51ef6c6 # v45.0.7
id: changed-files
with:
files: |
@@ -39,10 +41,16 @@ jobs:
- name: lint
if: steps.changed-files.outputs.any_changed == 'true'
run: |
pnpm exec markdownlint-cli2 ${{ steps.changed-files.outputs.all_changed_files }}
# shellcheck disable=SC2086
pnpm exec markdownlint-cli2 $ALL_CHANGED_FILES
env:
ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
- name: fmt
if: steps.changed-files.outputs.any_changed == 'true'
run: |
# markdown-table-formatter requires a space separated list of files
echo ${{ steps.changed-files.outputs.all_changed_files }} | tr ',' '\n' | pnpm exec markdown-table-formatter --check
# shellcheck disable=SC2086
echo $ALL_CHANGED_FILES | tr ',' '\n' | pnpm exec markdown-table-formatter --check
env:
ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
+38 -24
View File
@@ -18,8 +18,7 @@ on:
workflow_dispatch:
permissions:
# Necessary for GCP authentication (https://github.com/google-github-actions/setup-gcloud#usage)
id-token: write
contents: read
jobs:
build_image:
@@ -27,17 +26,23 @@ jobs:
runs-on: ${{ github.repository_owner == 'coder' && 'depot-ubuntu-22.04-4' || 'ubuntu-latest' }}
steps:
- name: Harden Runner
uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
with:
egress-policy: audit
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
persist-credentials: false
- name: Setup Nix
uses: nixbuild/nix-quick-install-action@5bb6a3b3abe66fd09bbf250dce8ada94f856a703 # v30
uses: nixbuild/nix-quick-install-action@63ca48f939ee3b8d835f4126562537df0fee5b91 # v32
with:
# Pinning to 2.28 here, as Nix gets a "error: [json.exception.type_error.302] type must be array, but is string"
# on version 2.29 and above.
nix_version: "2.28.4"
- uses: nix-community/cache-nix-action@c448f065ba14308da81de769632ca67a3ce67cf5 # v6.1.2
- uses: nix-community/cache-nix-action@135667ec418502fa5a3598af6fb9eb733888ce6a # v6.1.3
with:
# restore and save a cache using this key
primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix', '**/flake.lock') }}
@@ -58,31 +63,32 @@ jobs:
- name: Get branch name
id: branch-name
uses: tj-actions/branch-names@f44339b51f74753b57583fbbd124e18a81170ab1 # v8.1.0
uses: tj-actions/branch-names@5250492686b253f06fa55861556d1027b067aeb5 # v9.0.2
- name: "Branch name to Docker tag name"
id: docker-tag-name
run: |
tag=${{ steps.branch-name.outputs.current_branch }}
# Replace / with --, e.g. user/feature => user--feature.
tag=${tag//\//--}
echo "tag=${tag}" >> $GITHUB_OUTPUT
tag=${BRANCH_NAME//\//--}
echo "tag=${tag}" >> "$GITHUB_OUTPUT"
env:
BRANCH_NAME: ${{ steps.branch-name.outputs.current_branch }}
- name: Set up Depot CLI
uses: depot/setup-action@b0b1ea4f69e92ebf5dea3f8713a1b0c37b2126a5 # v1.6.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Login to DockerHub
if: github.ref == 'refs/heads/main'
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Build and push Non-Nix image
uses: depot/build-push-action@636daae76684e38c301daa0c5eca1c095b24e780 # v1.14.0
uses: depot/build-push-action@2583627a84956d07561420dcc1d0eb1f2af3fac0 # v1.15.0
with:
project: b4q6ltmpzh
token: ${{ secrets.DEPOT_TOKEN }}
@@ -103,32 +109,39 @@ jobs:
CURRENT_SYSTEM=$(nix eval --impure --raw --expr 'builtins.currentSystem')
docker image tag codercom/oss-dogfood-nix:latest-$CURRENT_SYSTEM codercom/oss-dogfood-nix:${{ steps.docker-tag-name.outputs.tag }}
docker image push codercom/oss-dogfood-nix:${{ steps.docker-tag-name.outputs.tag }}
docker image tag "codercom/oss-dogfood-nix:latest-$CURRENT_SYSTEM" "codercom/oss-dogfood-nix:${DOCKER_TAG}"
docker image push "codercom/oss-dogfood-nix:${DOCKER_TAG}"
docker image tag codercom/oss-dogfood-nix:latest-$CURRENT_SYSTEM codercom/oss-dogfood-nix:latest
docker image push codercom/oss-dogfood-nix:latest
docker image tag "codercom/oss-dogfood-nix:latest-$CURRENT_SYSTEM" "codercom/oss-dogfood-nix:latest"
docker image push "codercom/oss-dogfood-nix:latest"
env:
DOCKER_TAG: ${{ steps.docker-tag-name.outputs.tag }}
deploy_template:
needs: build_image
runs-on: ubuntu-latest
permissions:
# Necessary for GCP authentication (https://github.com/google-github-actions/setup-gcloud#usage)
id-token: write
steps:
- name: Harden Runner
uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
with:
egress-policy: audit
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
persist-credentials: false
- name: Setup Terraform
uses: ./.github/actions/setup-tf
- name: Authenticate to Google Cloud
uses: google-github-actions/auth@71f986410dfbc7added4569d411d040a91dc6935 # v2.1.8
uses: google-github-actions/auth@b7593ed2efd1c1617e1b0254da33b86225adb2a5 # v2.1.12
with:
workload_identity_provider: projects/573722524737/locations/global/workloadIdentityPools/github/providers/github
service_account: coder-ci@coder-dogfood.iam.gserviceaccount.com
workload_identity_provider: ${{ vars.GCP_WORKLOAD_ID_PROVIDER }}
service_account: ${{ vars.GCP_SERVICE_ACCOUNT }}
- name: Terraform init and validate
run: |
@@ -148,12 +161,12 @@ jobs:
- name: Get short commit SHA
if: github.ref == 'refs/heads/main'
id: vars
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
run: echo "sha_short=$(git rev-parse --short HEAD)" >> "$GITHUB_OUTPUT"
- name: Get latest commit title
if: github.ref == 'refs/heads/main'
id: message
run: echo "pr_title=$(git log --format=%s -n 1 ${{ github.sha }})" >> $GITHUB_OUTPUT
run: echo "pr_title=$(git log --format=%s -n 1 ${{ github.sha }})" >> "$GITHUB_OUTPUT"
- name: "Push template"
if: github.ref == 'refs/heads/main'
@@ -165,6 +178,7 @@ jobs:
CODER_URL: https://dev.coder.com
CODER_SESSION_TOKEN: ${{ secrets.CODER_SESSION_TOKEN }}
# Template source & details
TF_VAR_CODER_DOGFOOD_ANTHROPIC_API_KEY: ${{ secrets.CODER_DOGFOOD_ANTHROPIC_API_KEY }}
TF_VAR_CODER_TEMPLATE_NAME: ${{ secrets.CODER_TEMPLATE_NAME }}
TF_VAR_CODER_TEMPLATE_VERSION: ${{ steps.vars.outputs.sha_short }}
TF_VAR_CODER_TEMPLATE_DIR: ./coder
+105 -28
View File
@@ -12,40 +12,73 @@ permissions:
jobs:
test-go-pg:
runs-on: ${{ matrix.os == 'macos-latest' && github.repository_owner == 'coder' && 'depot-macos-latest' || matrix.os == 'windows-2022' && github.repository_owner == 'coder' && 'windows-latest-16-cores' || matrix.os }}
if: github.ref == 'refs/heads/main'
# make sure to adjust NUM_PARALLEL_PACKAGES and NUM_PARALLEL_TESTS below
# when changing runner sizes
runs-on: ${{ matrix.os == 'macos-latest' && github.repository_owner == 'coder' && 'depot-macos-latest' || matrix.os == 'windows-2022' && github.repository_owner == 'coder' && 'depot-windows-2022-16' || matrix.os }}
# This timeout must be greater than the timeout set by `go test` in
# `make test-postgres` to ensure we receive a trace of running
# goroutines. Setting this to the timeout +5m should work quite well
# even if some of the preceding steps are slow.
timeout-minutes: 25
strategy:
fail-fast: false
matrix:
os:
- macos-latest
- windows-2022
steps:
- name: Harden Runner
uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
with:
egress-policy: audit
# macOS indexes all new files in the background. Our Postgres tests
# create and destroy thousands of databases on disk, and Spotlight
# tries to index all of them, seriously slowing down the tests.
- name: Disable Spotlight Indexing
if: runner.os == 'macOS'
run: |
enabled=$(sudo mdutil -a -s | { grep -Fc "Indexing enabled" || true; })
if [ "$enabled" -eq 0 ]; then
echo "Spotlight indexing is already disabled"
exit 0
fi
sudo mdutil -a -i off
sudo mdutil -X /
sudo launchctl bootout system /System/Library/LaunchDaemons/com.apple.metadata.mds.plist
# Set up RAM disks to speed up the rest of the job. This action is in
# a separate repository to allow its use before actions/checkout.
- name: Setup RAM Disks
if: runner.os == 'Windows'
uses: coder/setup-ramdisk-action@e1100847ab2d7bcd9d14bcda8f2d1b0f07b36f1b # v0.1.0
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
fetch-depth: 1
persist-credentials: false
- name: Setup Go
uses: ./.github/actions/setup-go
with:
# Runners have Go baked-in and Go will automatically
# download the toolchain configured in go.mod, so we don't
# need to reinstall it. It's faster on Windows runners.
use-preinstalled-go: ${{ runner.os == 'Windows' }}
- name: Setup Terraform
uses: ./.github/actions/setup-tf
# Sets up the ImDisk toolkit for Windows and creates a RAM disk on drive R:.
- name: Setup ImDisk
if: runner.os == 'Windows'
uses: ./.github/actions/setup-imdisk
- name: Setup Embedded Postgres Cache Paths
id: embedded-pg-cache
uses: ./.github/actions/setup-embedded-pg-cache-paths
- name: Download Embedded Postgres Cache
id: download-embedded-pg-cache
uses: ./.github/actions/embedded-pg-cache/download
with:
key-prefix: embedded-pg-${{ runner.os }}-${{ runner.arch }}
cache-path: ${{ steps.embedded-pg-cache.outputs.cached-dirs }}
- name: Test with PostgreSQL Database
env:
@@ -55,6 +88,23 @@ jobs:
LC_ALL: "en_US.UTF-8"
shell: bash
run: |
set -o errexit
set -o pipefail
if [ "${{ runner.os }}" == "Windows" ]; then
# Create a temp dir on the R: ramdisk drive for Windows. The default
# C: drive is extremely slow: https://github.com/actions/runner-images/issues/8755
mkdir -p "R:/temp/embedded-pg"
go run scripts/embedded-pg/main.go -path "R:/temp/embedded-pg" -cache "${EMBEDDED_PG_CACHE_DIR}"
elif [ "${{ runner.os }}" == "macOS" ]; then
# Postgres runs faster on a ramdisk on macOS too
mkdir -p /tmp/tmpfs
sudo mount_tmpfs -o noowners -s 8g /tmp/tmpfs
go run scripts/embedded-pg/main.go -path /tmp/tmpfs/embedded-pg -cache "${EMBEDDED_PG_CACHE_DIR}"
elif [ "${{ runner.os }}" == "Linux" ]; then
make test-postgres-docker
fi
# if macOS, install google-chrome for scaletests
# As another concern, should we really have this kind of external dependency
# requirement on standard CI?
@@ -62,10 +112,6 @@ jobs:
brew install google-chrome
fi
# By default Go will use the number of logical CPUs, which
# is a fine default.
PARALLEL_FLAG=""
# macOS will output "The default interactive shell is now zsh"
# intermittently in CI...
if [ "${{ matrix.os }}" == "macos-latest" ]; then
@@ -73,18 +119,39 @@ jobs:
fi
if [ "${{ runner.os }}" == "Windows" ]; then
# Create a temp dir on the R: ramdisk drive for Windows. The default
# C: drive is extremely slow: https://github.com/actions/runner-images/issues/8755
mkdir -p "R:/temp/embedded-pg"
go run scripts/embedded-pg/main.go -path "R:/temp/embedded-pg"
else
go run scripts/embedded-pg/main.go
# Our Windows runners have 16 cores.
# On Windows Postgres chokes up when we have 16x16=256 tests
# running in parallel, and dbtestutil.NewDB starts to take more than
# 10s to complete sometimes causing test timeouts. With 16x8=128 tests
# Postgres tends not to choke.
NUM_PARALLEL_PACKAGES=8
NUM_PARALLEL_TESTS=16
elif [ "${{ runner.os }}" == "macOS" ]; then
# Our macOS runners have 8 cores. We set NUM_PARALLEL_TESTS to 16
# because the tests complete faster and Postgres doesn't choke. It seems
# that macOS's tmpfs is faster than the one on Windows.
NUM_PARALLEL_PACKAGES=8
NUM_PARALLEL_TESTS=16
elif [ "${{ runner.os }}" == "Linux" ]; then
# Our Linux runners have 8 cores.
NUM_PARALLEL_PACKAGES=8
NUM_PARALLEL_TESTS=8
fi
# Reduce test parallelism, mirroring what we do for race tests.
# We'd been encountering issues with timing related flakes, and
# this seems to help.
DB=ci gotestsum --format standard-quiet -- -v -short -count=1 -parallel 4 -p 4 ./...
# run tests without cache
TESTCOUNT="-count=1"
DB=ci gotestsum \
--format standard-quiet --packages "./..." \
-- -timeout=20m -v -p $NUM_PARALLEL_PACKAGES -parallel=$NUM_PARALLEL_TESTS $TESTCOUNT
- name: Upload Embedded Postgres Cache
uses: ./.github/actions/embedded-pg-cache/upload
# We only use the embedded Postgres cache on macOS and Windows runners.
if: runner.OS == 'macOS' || runner.OS == 'Windows'
with:
cache-key: ${{ steps.download-embedded-pg-cache.outputs.cache-key }}
cache-path: "${{ steps.embedded-pg-cache.outputs.embedded-pg-cache }}"
- name: Upload test stats to Datadog
timeout-minutes: 1
@@ -119,15 +186,15 @@ jobs:
"fields": [
{
"type": "mrkdwn",
"text": "*Workflow:*\n${{ github.workflow }}"
"text": "*Workflow:*\n'"${GITHUB_WORKFLOW}"'"
},
{
"type": "mrkdwn",
"text": "*Committer:*\n${{ github.actor }}"
"text": "*Committer:*\n'"${GITHUB_ACTOR}"'"
},
{
"type": "mrkdwn",
"text": "*Commit:*\n${{ github.sha }}"
"text": "*Commit:*\n'"${GITHUB_SHA}"'"
}
]
},
@@ -135,8 +202,18 @@ jobs:
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*View failure:* <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|Click here>"
"text": "*View failure:* <'"${RUN_URL}"'|Click here>"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "<@U08TJ4YNCA3> investigate this CI failure. Check logs, search for existing issues, use git blame to find who last modified failing tests, create issue in coder/internal (not public repo), use title format \"flake: TestName\" for flaky tests, and assign to the person from git blame."
}
}
]
}' ${{ secrets.CI_FAILURE_SLACK_WEBHOOK }}
}' "${SLACK_WEBHOOK}"
env:
SLACK_WEBHOOK: ${{ secrets.CI_FAILURE_SLACK_WEBHOOK }}
RUN_URL: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
+2 -1
View File
@@ -3,6 +3,7 @@
name: PR Auto Assign
on:
# zizmor: ignore[dangerous-triggers] We explicitly want to run on pull_request_target.
pull_request_target:
types: [opened]
@@ -14,7 +15,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
with:
egress-policy: audit
+17 -7
View File
@@ -19,7 +19,7 @@ jobs:
packages: write
steps:
- name: Harden Runner
uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
with:
egress-policy: audit
@@ -27,10 +27,12 @@ jobs:
id: pr_number
run: |
if [ -n "${{ github.event.pull_request.number }}" ]; then
echo "PR_NUMBER=${{ github.event.pull_request.number }}" >> $GITHUB_OUTPUT
echo "PR_NUMBER=${{ github.event.pull_request.number }}" >> "$GITHUB_OUTPUT"
else
echo "PR_NUMBER=${{ github.event.inputs.pr_number }}" >> $GITHUB_OUTPUT
echo "PR_NUMBER=${PR_NUMBER}" >> "$GITHUB_OUTPUT"
fi
env:
PR_NUMBER: ${{ github.event.inputs.pr_number }}
- name: Delete image
continue-on-error: true
@@ -51,17 +53,21 @@ jobs:
- name: Delete helm release
run: |
set -euo pipefail
helm delete --namespace "pr${{ steps.pr_number.outputs.PR_NUMBER }}" "pr${{ steps.pr_number.outputs.PR_NUMBER }}" || echo "helm release not found"
helm delete --namespace "pr${PR_NUMBER}" "pr${PR_NUMBER}" || echo "helm release not found"
env:
PR_NUMBER: ${{ steps.pr_number.outputs.PR_NUMBER }}
- name: "Remove PR namespace"
run: |
kubectl delete namespace "pr${{ steps.pr_number.outputs.PR_NUMBER }}" || echo "namespace not found"
kubectl delete namespace "pr${PR_NUMBER}" || echo "namespace not found"
env:
PR_NUMBER: ${{ steps.pr_number.outputs.PR_NUMBER }}
- name: "Remove DNS records"
run: |
set -euo pipefail
# Get identifier for the record
record_id=$(curl -X GET "https://api.cloudflare.com/client/v4/zones/${{ secrets.PR_DEPLOYMENTS_ZONE_ID }}/dns_records?name=%2A.pr${{ steps.pr_number.outputs.PR_NUMBER }}.${{ secrets.PR_DEPLOYMENTS_DOMAIN }}" \
record_id=$(curl -X GET "https://api.cloudflare.com/client/v4/zones/${{ secrets.PR_DEPLOYMENTS_ZONE_ID }}/dns_records?name=%2A.pr${PR_NUMBER}.${{ secrets.PR_DEPLOYMENTS_DOMAIN }}" \
-H "Authorization: Bearer ${{ secrets.PR_DEPLOYMENTS_CLOUDFLARE_API_TOKEN }}" \
-H "Content-Type:application/json" | jq -r '.result[0].id') || echo "DNS record not found"
@@ -73,9 +79,13 @@ jobs:
-H "Authorization: Bearer ${{ secrets.PR_DEPLOYMENTS_CLOUDFLARE_API_TOKEN }}" \
-H "Content-Type:application/json" | jq -r '.success'
) || echo "DNS record not found"
env:
PR_NUMBER: ${{ steps.pr_number.outputs.PR_NUMBER }}
- name: "Delete certificate"
if: ${{ github.event.pull_request.merged == true }}
run: |
set -euxo pipefail
kubectl delete certificate "pr${{ steps.pr_number.outputs.PR_NUMBER }}-tls" -n pr-deployment-certs || echo "certificate not found"
kubectl delete certificate "pr${PR_NUMBER}-tls" -n pr-deployment-certs || echo "certificate not found"
env:
PR_NUMBER: ${{ steps.pr_number.outputs.PR_NUMBER }}
+80 -64
View File
@@ -39,12 +39,14 @@ jobs:
PR_OPEN: ${{ steps.check_pr.outputs.pr_open }}
steps:
- name: Harden Runner
uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
with:
egress-policy: audit
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
persist-credentials: false
- name: Check if PR is open
id: check_pr
@@ -55,7 +57,7 @@ jobs:
echo "PR doesn't exist or is closed."
pr_open=false
fi
echo "pr_open=$pr_open" >> $GITHUB_OUTPUT
echo "pr_open=$pr_open" >> "$GITHUB_OUTPUT"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -74,14 +76,15 @@ jobs:
runs-on: "ubuntu-latest"
steps:
- name: Harden Runner
uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
with:
egress-policy: audit
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
fetch-depth: 0
persist-credentials: false
- name: Get PR number, title, and branch name
id: pr_info
@@ -90,9 +93,11 @@ jobs:
PR_NUMBER=$(gh pr view --json number | jq -r '.number')
PR_TITLE=$(gh pr view --json title | jq -r '.title')
PR_URL=$(gh pr view --json url | jq -r '.url')
echo "PR_URL=$PR_URL" >> $GITHUB_OUTPUT
echo "PR_NUMBER=$PR_NUMBER" >> $GITHUB_OUTPUT
echo "PR_TITLE=$PR_TITLE" >> $GITHUB_OUTPUT
{
echo "PR_URL=$PR_URL"
echo "PR_NUMBER=$PR_NUMBER"
echo "PR_TITLE=$PR_TITLE"
} >> "$GITHUB_OUTPUT"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -100,8 +105,8 @@ jobs:
id: set_tags
run: |
set -euo pipefail
echo "CODER_BASE_IMAGE_TAG=$CODER_BASE_IMAGE_TAG" >> $GITHUB_OUTPUT
echo "CODER_IMAGE_TAG=$CODER_IMAGE_TAG" >> $GITHUB_OUTPUT
echo "CODER_BASE_IMAGE_TAG=$CODER_BASE_IMAGE_TAG" >> "$GITHUB_OUTPUT"
echo "CODER_IMAGE_TAG=$CODER_IMAGE_TAG" >> "$GITHUB_OUTPUT"
env:
CODER_BASE_IMAGE_TAG: ghcr.io/coder/coder-preview-base:pr${{ steps.pr_info.outputs.PR_NUMBER }}
CODER_IMAGE_TAG: ghcr.io/coder/coder-preview:pr${{ steps.pr_info.outputs.PR_NUMBER }}
@@ -118,14 +123,16 @@ jobs:
id: check_deployment
run: |
set -euo pipefail
if helm status "pr${{ steps.pr_info.outputs.PR_NUMBER }}" --namespace "pr${{ steps.pr_info.outputs.PR_NUMBER }}" > /dev/null 2>&1; then
if helm status "pr${PR_NUMBER}" --namespace "pr${PR_NUMBER}" > /dev/null 2>&1; then
echo "Deployment already exists. Skipping deployment."
NEW=false
else
echo "Deployment doesn't exist."
NEW=true
fi
echo "NEW=$NEW" >> $GITHUB_OUTPUT
echo "NEW=$NEW" >> "$GITHUB_OUTPUT"
env:
PR_NUMBER: ${{ steps.pr_info.outputs.PR_NUMBER }}
- name: Check changed files
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
@@ -154,17 +161,20 @@ jobs:
- name: Print number of changed files
run: |
set -euo pipefail
echo "Total number of changed files: ${{ steps.filter.outputs.all_count }}"
echo "Number of ignored files: ${{ steps.filter.outputs.ignored_count }}"
echo "Total number of changed files: ${ALL_COUNT}"
echo "Number of ignored files: ${IGNORED_COUNT}"
env:
ALL_COUNT: ${{ steps.filter.outputs.all_count }}
IGNORED_COUNT: ${{ steps.filter.outputs.ignored_count }}
- name: Build conditionals
id: build_conditionals
run: |
set -euo pipefail
# build if the workflow is manually triggered and the deployment doesn't exist (first build or force rebuild)
echo "first_or_force_build=${{ (github.event_name == 'workflow_dispatch' && steps.check_deployment.outputs.NEW == 'true') || github.event.inputs.build == 'true' }}" >> $GITHUB_OUTPUT
echo "first_or_force_build=${{ (github.event_name == 'workflow_dispatch' && steps.check_deployment.outputs.NEW == 'true') || github.event.inputs.build == 'true' }}" >> "$GITHUB_OUTPUT"
# build if the deployment already exist and there are changes in the files that we care about (automatic updates)
echo "automatic_rebuild=${{ steps.check_deployment.outputs.NEW == 'false' && steps.filter.outputs.all_count > steps.filter.outputs.ignored_count }}" >> $GITHUB_OUTPUT
echo "automatic_rebuild=${{ steps.check_deployment.outputs.NEW == 'false' && steps.filter.outputs.all_count > steps.filter.outputs.ignored_count }}" >> "$GITHUB_OUTPUT"
comment-pr:
needs: get_info
@@ -174,7 +184,7 @@ jobs:
pull-requests: write # needed for commenting on PRs
steps:
- name: Harden Runner
uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
with:
egress-policy: audit
@@ -218,14 +228,15 @@ jobs:
CODER_IMAGE_TAG: ${{ needs.get_info.outputs.CODER_IMAGE_TAG }}
steps:
- name: Harden Runner
uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
with:
egress-policy: audit
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
fetch-depth: 0
persist-credentials: false
- name: Setup Node
uses: ./.github/actions/setup-node
@@ -237,7 +248,7 @@ jobs:
uses: ./.github/actions/setup-sqlc
- name: GHCR Login
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
with:
registry: ghcr.io
username: ${{ github.actor }}
@@ -250,12 +261,13 @@ jobs:
make gen/mark-fresh
export DOCKER_IMAGE_NO_PREREQUISITES=true
version="$(./scripts/version.sh)"
export CODER_IMAGE_BUILD_BASE_TAG="$(CODER_IMAGE_BASE=coder-base ./scripts/image_tag.sh --version "$version")"
CODER_IMAGE_BUILD_BASE_TAG="$(CODER_IMAGE_BASE=coder-base ./scripts/image_tag.sh --version "$version")"
export CODER_IMAGE_BUILD_BASE_TAG
make -j build/coder_linux_amd64
./scripts/build_docker.sh \
--arch amd64 \
--target ${{ env.CODER_IMAGE_TAG }} \
--version $version \
--target "${CODER_IMAGE_TAG}" \
--version "$version" \
--push \
build/coder_linux_amd64
@@ -276,7 +288,7 @@ jobs:
PR_HOSTNAME: "pr${{ needs.get_info.outputs.PR_NUMBER }}.${{ secrets.PR_DEPLOYMENTS_DOMAIN }}"
steps:
- name: Harden Runner
uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
with:
egress-policy: audit
@@ -293,13 +305,13 @@ jobs:
set -euo pipefail
foundTag=$(
gh api /orgs/coder/packages/container/coder-preview/versions |
jq -r --arg tag "pr${{ env.PR_NUMBER }}" '.[] |
jq -r --arg tag "pr${PR_NUMBER}" '.[] |
select(.metadata.container.tags == [$tag]) |
.metadata.container.tags[0]'
)
if [ -z "$foundTag" ]; then
echo "Image not found"
echo "${{ env.CODER_IMAGE_TAG }} not found in ghcr.io/coder/coder-preview"
echo "${CODER_IMAGE_TAG} not found in ghcr.io/coder/coder-preview"
exit 1
else
echo "Image found"
@@ -314,40 +326,42 @@ jobs:
curl -X POST "https://api.cloudflare.com/client/v4/zones/${{ secrets.PR_DEPLOYMENTS_ZONE_ID }}/dns_records" \
-H "Authorization: Bearer ${{ secrets.PR_DEPLOYMENTS_CLOUDFLARE_API_TOKEN }}" \
-H "Content-Type:application/json" \
--data '{"type":"CNAME","name":"*.${{ env.PR_HOSTNAME }}","content":"${{ env.PR_HOSTNAME }}","ttl":1,"proxied":false}'
--data '{"type":"CNAME","name":"*.'"${PR_HOSTNAME}"'","content":"'"${PR_HOSTNAME}"'","ttl":1,"proxied":false}'
- name: Create PR namespace
if: needs.get_info.outputs.NEW == 'true' || github.event.inputs.deploy == 'true'
run: |
set -euo pipefail
# try to delete the namespace, but don't fail if it doesn't exist
kubectl delete namespace "pr${{ env.PR_NUMBER }}" || true
kubectl create namespace "pr${{ env.PR_NUMBER }}"
kubectl delete namespace "pr${PR_NUMBER}" || true
kubectl create namespace "pr${PR_NUMBER}"
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
persist-credentials: false
- name: Check and Create Certificate
if: needs.get_info.outputs.NEW == 'true' || github.event.inputs.deploy == 'true'
run: |
# Using kubectl to check if a Certificate resource already exists
# we are doing this to avoid letsenrypt rate limits
if ! kubectl get certificate pr${{ env.PR_NUMBER }}-tls -n pr-deployment-certs > /dev/null 2>&1; then
if ! kubectl get certificate "pr${PR_NUMBER}-tls" -n pr-deployment-certs > /dev/null 2>&1; then
echo "Certificate doesn't exist. Creating a new one."
envsubst < ./.github/pr-deployments/certificate.yaml | kubectl apply -f -
else
echo "Certificate exists. Skipping certificate creation."
fi
echo "Copy certificate from pr-deployment-certs to pr${{ env.PR_NUMBER }} namespace"
until kubectl get secret pr${{ env.PR_NUMBER }}-tls -n pr-deployment-certs &> /dev/null
echo "Copy certificate from pr-deployment-certs to pr${PR_NUMBER} namespace"
until kubectl get secret "pr${PR_NUMBER}-tls" -n pr-deployment-certs &> /dev/null
do
echo "Waiting for secret pr${{ env.PR_NUMBER }}-tls to be created..."
echo "Waiting for secret pr${PR_NUMBER}-tls to be created..."
sleep 5
done
(
kubectl get secret pr${{ env.PR_NUMBER }}-tls -n pr-deployment-certs -o json |
kubectl get secret "pr${PR_NUMBER}-tls" -n pr-deployment-certs -o json |
jq 'del(.metadata.namespace,.metadata.creationTimestamp,.metadata.resourceVersion,.metadata.selfLink,.metadata.uid,.metadata.managedFields)' |
kubectl -n pr${{ env.PR_NUMBER }} apply -f -
kubectl -n "pr${PR_NUMBER}" apply -f -
)
- name: Set up PostgreSQL database
@@ -355,13 +369,13 @@ jobs:
run: |
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install coder-db bitnami/postgresql \
--namespace pr${{ env.PR_NUMBER }} \
--namespace "pr${PR_NUMBER}" \
--set auth.username=coder \
--set auth.password=coder \
--set auth.database=coder \
--set persistence.size=10Gi
kubectl create secret generic coder-db-url -n pr${{ env.PR_NUMBER }} \
--from-literal=url="postgres://coder:coder@coder-db-postgresql.pr${{ env.PR_NUMBER }}.svc.cluster.local:5432/coder?sslmode=disable"
kubectl create secret generic coder-db-url -n "pr${PR_NUMBER}" \
--from-literal=url="postgres://coder:coder@coder-db-postgresql.pr${PR_NUMBER}.svc.cluster.local:5432/coder?sslmode=disable"
- name: Create a service account, role, and rolebinding for the PR namespace
if: needs.get_info.outputs.NEW == 'true' || github.event.inputs.deploy == 'true'
@@ -383,8 +397,8 @@ jobs:
run: |
set -euo pipefail
helm dependency update --skip-refresh ./helm/coder
helm upgrade --install "pr${{ env.PR_NUMBER }}" ./helm/coder \
--namespace "pr${{ env.PR_NUMBER }}" \
helm upgrade --install "pr${PR_NUMBER}" ./helm/coder \
--namespace "pr${PR_NUMBER}" \
--values ./pr-deploy-values.yaml \
--force
@@ -393,8 +407,8 @@ jobs:
run: |
helm repo add coder-logstream-kube https://helm.coder.com/logstream-kube
helm upgrade --install coder-logstream-kube coder-logstream-kube/coder-logstream-kube \
--namespace "pr${{ env.PR_NUMBER }}" \
--set url="https://${{ env.PR_HOSTNAME }}"
--namespace "pr${PR_NUMBER}" \
--set url="https://${PR_HOSTNAME}"
- name: Get Coder binary
if: needs.get_info.outputs.NEW == 'true' || github.event.inputs.deploy == 'true'
@@ -402,16 +416,16 @@ jobs:
set -euo pipefail
DEST="${HOME}/coder"
URL="https://${{ env.PR_HOSTNAME }}/bin/coder-linux-amd64"
URL="https://${PR_HOSTNAME}/bin/coder-linux-amd64"
mkdir -p "$(dirname ${DEST})"
mkdir -p "$(dirname "$DEST")"
COUNT=0
until $(curl --output /dev/null --silent --head --fail "$URL"); do
until curl --output /dev/null --silent --head --fail "$URL"; do
printf '.'
sleep 5
COUNT=$((COUNT+1))
if [ $COUNT -ge 60 ]; then
if [ "$COUNT" -ge 60 ]; then
echo "Timed out waiting for URL to be available"
exit 1
fi
@@ -420,7 +434,7 @@ jobs:
curl -fsSL "$URL" -o "${DEST}"
chmod +x "${DEST}"
"${DEST}" version
mv "${DEST}" /usr/local/bin/coder
sudo mv "${DEST}" /usr/local/bin/coder
- name: Create first user
if: needs.get_info.outputs.NEW == 'true' || github.event.inputs.deploy == 'true'
@@ -435,24 +449,24 @@ jobs:
# add mask so that the password is not printed to the logs
echo "::add-mask::$password"
echo "password=$password" >> $GITHUB_OUTPUT
echo "password=$password" >> "$GITHUB_OUTPUT"
coder login \
--first-user-username pr${{ env.PR_NUMBER }}-admin \
--first-user-email pr${{ env.PR_NUMBER }}@coder.com \
--first-user-password $password \
--first-user-username "pr${PR_NUMBER}-admin" \
--first-user-email "pr${PR_NUMBER}@coder.com" \
--first-user-password "$password" \
--first-user-trial=false \
--use-token-as-session \
https://${{ env.PR_HOSTNAME }}
"https://${PR_HOSTNAME}"
# Create a user for the github.actor
# TODO: update once https://github.com/coder/coder/issues/15466 is resolved
# coder users create \
# --username ${{ github.actor }} \
# --username ${GITHUB_ACTOR} \
# --login-type github
# promote the user to admin role
# coder org members edit-role ${{ github.actor }} organization-admin
# coder org members edit-role ${GITHUB_ACTOR} organization-admin
# TODO: update once https://github.com/coder/internal/issues/207 is resolved
- name: Send Slack notification
@@ -461,17 +475,19 @@ jobs:
curl -s -o /dev/null -X POST -H 'Content-type: application/json' \
-d \
'{
"pr_number": "'"${{ env.PR_NUMBER }}"'",
"pr_url": "'"${{ env.PR_URL }}"'",
"pr_title": "'"${{ env.PR_TITLE }}"'",
"pr_access_url": "'"https://${{ env.PR_HOSTNAME }}"'",
"pr_username": "'"pr${{ env.PR_NUMBER }}-admin"'",
"pr_email": "'"pr${{ env.PR_NUMBER }}@coder.com"'",
"pr_password": "'"${{ steps.setup_deployment.outputs.password }}"'",
"pr_actor": "'"${{ github.actor }}"'"
"pr_number": "'"${PR_NUMBER}"'",
"pr_url": "'"${PR_URL}"'",
"pr_title": "'"${PR_TITLE}"'",
"pr_access_url": "'"https://${PR_HOSTNAME}"'",
"pr_username": "'"pr${PR_NUMBER}-admin"'",
"pr_email": "'"pr${PR_NUMBER}@coder.com"'",
"pr_password": "'"${PASSWORD}"'",
"pr_actor": "'"${GITHUB_ACTOR}"'"
}' \
${{ secrets.PR_DEPLOYMENTS_SLACK_WEBHOOK }}
echo "Slack notification sent"
env:
PASSWORD: ${{ steps.setup_deployment.outputs.password }}
- name: Find Comment
uses: peter-evans/find-comment@3eae4d37986fb5a8592848f6a574fdf654e61f9e # v3.1.0
@@ -504,7 +520,7 @@ jobs:
run: |
set -euo pipefail
cd .github/pr-deployments/template
coder templates push -y --variable namespace=pr${{ env.PR_NUMBER }} kubernetes
coder templates push -y --variable "namespace=pr${PR_NUMBER}" kubernetes
# Create workspace
coder create --template="kubernetes" kube --parameter cpu=2 --parameter memory=4 --parameter home_disk_size=2 -y
+1 -1
View File
@@ -14,7 +14,7 @@ jobs:
steps:
- name: Harden Runner
uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
with:
egress-policy: audit
+184 -62
View File
@@ -32,15 +32,43 @@ env:
CODER_RELEASE_NOTES: ${{ inputs.release_notes }}
jobs:
# Only allow maintainers/admins to release.
check-perms:
runs-on: ${{ github.repository_owner == 'coder' && 'depot-ubuntu-22.04-8' || 'ubuntu-latest' }}
steps:
- name: Allow only maintainers/admins
uses: actions/github-script@v7.0.1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const {data} = await github.rest.repos.getCollaboratorPermissionLevel({
owner: context.repo.owner,
repo: context.repo.repo,
username: context.actor
});
const role = data.role_name || data.user?.role_name || data.permission;
const perms = data.user?.permissions || {};
core.info(`Actor ${context.actor} permission=${data.permission}, role_name=${role}`);
const allowed =
role === 'admin' ||
role === 'maintain' ||
perms.admin === true ||
perms.maintain === true;
if (!allowed) core.setFailed('Denied: requires maintain or admin');
# build-dylib is a separate job to build the dylib on macOS.
build-dylib:
runs-on: ${{ github.repository_owner == 'coder' && 'depot-macos-latest' || 'macos-latest' }}
needs: check-perms
steps:
# Harden Runner doesn't work on macOS.
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
fetch-depth: 0
persist-credentials: false
# If the event that triggered the build was an annotated tag (which our
# tags are supposed to be), actions/checkout has a bug where the tag in
@@ -53,14 +81,16 @@ jobs:
- name: Setup build tools
run: |
brew install bash gnu-getopt make
echo "$(brew --prefix bash)/bin" >> $GITHUB_PATH
echo "$(brew --prefix gnu-getopt)/bin" >> $GITHUB_PATH
echo "$(brew --prefix make)/libexec/gnubin" >> $GITHUB_PATH
{
echo "$(brew --prefix bash)/bin"
echo "$(brew --prefix gnu-getopt)/bin"
echo "$(brew --prefix make)/libexec/gnubin"
} >> "$GITHUB_PATH"
- name: Switch XCode Version
uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0
with:
xcode-version: "16.0.0"
xcode-version: "16.1.0"
- name: Setup Go
uses: ./.github/actions/setup-go
@@ -114,7 +144,7 @@ jobs:
release:
name: Build and publish
needs: build-dylib
needs: [build-dylib, check-perms]
runs-on: ${{ github.repository_owner == 'coder' && 'depot-ubuntu-22.04-8' || 'ubuntu-latest' }}
permissions:
# Required to publish a release
@@ -134,14 +164,15 @@ jobs:
version: ${{ steps.version.outputs.version }}
steps:
- name: Harden Runner
uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
with:
egress-policy: audit
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
fetch-depth: 0
persist-credentials: false
# If the event that triggered the build was an annotated tag (which our
# tags are supposed to be), actions/checkout has a bug where the tag in
@@ -156,9 +187,9 @@ jobs:
run: |
set -euo pipefail
version="$(./scripts/version.sh)"
echo "version=$version" >> $GITHUB_OUTPUT
echo "version=$version" >> "$GITHUB_OUTPUT"
# Speed up future version.sh calls.
echo "CODER_FORCE_VERSION=$version" >> $GITHUB_ENV
echo "CODER_FORCE_VERSION=$version" >> "$GITHUB_ENV"
echo "$version"
# Verify that all expectations for a release are met.
@@ -200,7 +231,7 @@ jobs:
release_notes_file="$(mktemp -t release_notes.XXXXXX)"
echo "$CODER_RELEASE_NOTES" > "$release_notes_file"
echo CODER_RELEASE_NOTES_FILE="$release_notes_file" >> $GITHUB_ENV
echo CODER_RELEASE_NOTES_FILE="$release_notes_file" >> "$GITHUB_ENV"
- name: Show release notes
run: |
@@ -208,7 +239,7 @@ jobs:
cat "$CODER_RELEASE_NOTES_FILE"
- name: Docker Login
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
with:
registry: ghcr.io
username: ${{ github.actor }}
@@ -222,7 +253,7 @@ jobs:
# Necessary for signing Windows binaries.
- name: Setup Java
uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
with:
distribution: "zulu"
java-version: "11.0"
@@ -286,17 +317,17 @@ jobs:
# Setup GCloud for signing Windows binaries.
- name: Authenticate to Google Cloud
id: gcloud_auth
uses: google-github-actions/auth@71f986410dfbc7added4569d411d040a91dc6935 # v2.1.8
uses: google-github-actions/auth@b7593ed2efd1c1617e1b0254da33b86225adb2a5 # v2.1.12
with:
workload_identity_provider: ${{ secrets.GCP_CODE_SIGNING_WORKLOAD_ID_PROVIDER }}
service_account: ${{ secrets.GCP_CODE_SIGNING_SERVICE_ACCOUNT }}
workload_identity_provider: ${{ vars.GCP_CODE_SIGNING_WORKLOAD_ID_PROVIDER }}
service_account: ${{ vars.GCP_CODE_SIGNING_SERVICE_ACCOUNT }}
token_format: "access_token"
- name: Setup GCloud SDK
uses: google-github-actions/setup-gcloud@77e7a554d41e2ee56fc945c52dfd3f33d12def9a # v2.1.4
uses: google-github-actions/setup-gcloud@cb1e50a9932213ecece00a606661ae9ca44f3397 # v2.2.0
- name: Download dylibs
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
with:
name: dylibs
path: ./build
@@ -323,6 +354,8 @@ jobs:
env:
CODER_SIGN_WINDOWS: "1"
CODER_SIGN_DARWIN: "1"
CODER_SIGN_GPG: "1"
CODER_GPG_RELEASE_KEY_BASE64: ${{ secrets.GPG_RELEASE_KEY_BASE64 }}
CODER_WINDOWS_RESOURCES: "1"
AC_CERTIFICATE_FILE: /tmp/apple_cert.p12
AC_CERTIFICATE_PASSWORD_FILE: /tmp/apple_cert_password.txt
@@ -348,9 +381,9 @@ jobs:
set -euo pipefail
if [[ "${CODER_RELEASE:-}" != *t* ]] || [[ "${CODER_DRY_RUN:-}" == *t* ]]; then
# Empty value means use the default and avoid building a fresh one.
echo "tag=" >> $GITHUB_OUTPUT
echo "tag=" >> "$GITHUB_OUTPUT"
else
echo "tag=$(CODER_IMAGE_BASE=ghcr.io/coder/coder-base ./scripts/image_tag.sh)" >> $GITHUB_OUTPUT
echo "tag=$(CODER_IMAGE_BASE=ghcr.io/coder/coder-base ./scripts/image_tag.sh)" >> "$GITHUB_OUTPUT"
fi
- name: Create empty base-build-context directory
@@ -364,7 +397,7 @@ jobs:
# This uses OIDC authentication, so no auth variables are required.
- name: Build base Docker image via depot.dev
if: steps.image-base-tag.outputs.tag != ''
uses: depot/build-push-action@636daae76684e38c301daa0c5eca1c095b24e780 # v1.14.0
uses: depot/build-push-action@2583627a84956d07561420dcc1d0eb1f2af3fac0 # v1.15.0
with:
project: wl5hnrrkns
context: base-build-context
@@ -385,7 +418,7 @@ jobs:
# available immediately
for i in {1..10}; do
rc=0
raw_manifests=$(docker buildx imagetools inspect --raw "${{ steps.image-base-tag.outputs.tag }}") || rc=$?
raw_manifests=$(docker buildx imagetools inspect --raw "${IMAGE_TAG}") || rc=$?
if [[ "$rc" -eq 0 ]]; then
break
fi
@@ -407,6 +440,8 @@ jobs:
echo "$manifests" | grep -q linux/amd64
echo "$manifests" | grep -q linux/arm64
echo "$manifests" | grep -q linux/arm/v7
env:
IMAGE_TAG: ${{ steps.image-base-tag.outputs.tag }}
# GitHub attestation provides SLSA provenance for Docker images, establishing a verifiable
# record that these images were built in GitHub Actions with specific inputs and environment.
@@ -419,7 +454,7 @@ jobs:
id: attest_base
if: ${{ !inputs.dry_run && steps.image-base-tag.outputs.tag != '' }}
continue-on-error: true
uses: actions/attest@a63cfcc7d1aab266ee064c58250cfc2c7d07bc31 # v2.2.1
uses: actions/attest@ce27ba3b4a9a139d9a20a4a07d69fabb52f1e5bc # v2.4.0
with:
subject-name: ${{ steps.image-base-tag.outputs.tag }}
predicate-type: "https://slsa.dev/provenance/v1"
@@ -474,7 +509,7 @@ jobs:
# Save multiarch image tag for attestation
multiarch_image="$(./scripts/image_tag.sh)"
echo "multiarch_image=${multiarch_image}" >> $GITHUB_OUTPUT
echo "multiarch_image=${multiarch_image}" >> "$GITHUB_OUTPUT"
# For debugging, print all docker image tags
docker images
@@ -482,25 +517,60 @@ jobs:
# if the current version is equal to the highest (according to semver)
# version in the repo, also create a multi-arch image as ":latest" and
# push it
created_latest_tag=false
if [[ "$(git tag | grep '^v' | grep -vE '(rc|dev|-|\+|\/)' | sort -r --version-sort | head -n1)" == "v$(./scripts/version.sh)" ]]; then
# shellcheck disable=SC2046
./scripts/build_docker_multiarch.sh \
--push \
--target "$(./scripts/image_tag.sh --version latest)" \
$(cat build/coder_"$version"_linux_{amd64,arm64,armv7}.tag)
created_latest_tag=true
echo "created_latest_tag=true" >> $GITHUB_OUTPUT
echo "created_latest_tag=true" >> "$GITHUB_OUTPUT"
else
echo "created_latest_tag=false" >> $GITHUB_OUTPUT
echo "created_latest_tag=false" >> "$GITHUB_OUTPUT"
fi
env:
CODER_BASE_IMAGE_TAG: ${{ steps.image-base-tag.outputs.tag }}
- name: SBOM Generation and Attestation
if: ${{ !inputs.dry_run }}
env:
COSIGN_EXPERIMENTAL: '1'
MULTIARCH_IMAGE: ${{ steps.build_docker.outputs.multiarch_image }}
VERSION: ${{ steps.version.outputs.version }}
CREATED_LATEST_TAG: ${{ steps.build_docker.outputs.created_latest_tag }}
run: |
set -euxo pipefail
# Generate SBOM for multi-arch image with version in filename
echo "Generating SBOM for multi-arch image: ${MULTIARCH_IMAGE}"
syft "${MULTIARCH_IMAGE}" -o spdx-json > "coder_${VERSION}_sbom.spdx.json"
# Attest SBOM to multi-arch image
echo "Attesting SBOM to multi-arch image: ${MULTIARCH_IMAGE}"
cosign clean --force=true "${MULTIARCH_IMAGE}"
cosign attest --type spdxjson \
--predicate "coder_${VERSION}_sbom.spdx.json" \
--yes \
"${MULTIARCH_IMAGE}"
# If latest tag was created, also attest it
if [[ "${CREATED_LATEST_TAG}" == "true" ]]; then
latest_tag="$(./scripts/image_tag.sh --version latest)"
echo "Generating SBOM for latest image: ${latest_tag}"
syft "${latest_tag}" -o spdx-json > coder_latest_sbom.spdx.json
echo "Attesting SBOM to latest image: ${latest_tag}"
cosign clean --force=true "${latest_tag}"
cosign attest --type spdxjson \
--predicate coder_latest_sbom.spdx.json \
--yes \
"${latest_tag}"
fi
- name: GitHub Attestation for Docker image
id: attest_main
if: ${{ !inputs.dry_run }}
continue-on-error: true
uses: actions/attest@a63cfcc7d1aab266ee064c58250cfc2c7d07bc31 # v2.2.1
uses: actions/attest@ce27ba3b4a9a139d9a20a4a07d69fabb52f1e5bc # v2.4.0
with:
subject-name: ${{ steps.build_docker.outputs.multiarch_image }}
predicate-type: "https://slsa.dev/provenance/v1"
@@ -537,14 +607,14 @@ jobs:
- name: Get latest tag name
id: latest_tag
if: ${{ !inputs.dry_run && steps.build_docker.outputs.created_latest_tag == 'true' }}
run: echo "tag=$(./scripts/image_tag.sh --version latest)" >> $GITHUB_OUTPUT
run: echo "tag=$(./scripts/image_tag.sh --version latest)" >> "$GITHUB_OUTPUT"
# If this is the highest version according to semver, also attest the "latest" tag
- name: GitHub Attestation for "latest" Docker image
id: attest_latest
if: ${{ !inputs.dry_run && steps.build_docker.outputs.created_latest_tag == 'true' }}
continue-on-error: true
uses: actions/attest@a63cfcc7d1aab266ee064c58250cfc2c7d07bc31 # v2.2.1
uses: actions/attest@ce27ba3b4a9a139d9a20a4a07d69fabb52f1e5bc # v2.4.0
with:
subject-name: ${{ steps.latest_tag.outputs.tag }}
predicate-type: "https://slsa.dev/provenance/v1"
@@ -580,7 +650,7 @@ jobs:
# Report attestation failures but don't fail the workflow
- name: Check attestation status
if: ${{ !inputs.dry_run }}
run: |
run: | # zizmor: ignore[template-injection] We're just reading steps.attest_x.outcome here, no risk of injection
if [[ "${{ steps.attest_base.outcome }}" == "failure" && "${{ steps.attest_base.conclusion }}" != "skipped" ]]; then
echo "::warning::GitHub attestation for base image failed"
fi
@@ -599,6 +669,30 @@ jobs:
- name: ls build
run: ls -lh build
- name: Publish Coder CLI binaries and detached signatures to GCS
if: ${{ !inputs.dry_run }}
run: |
set -euxo pipefail
version="$(./scripts/version.sh)"
# Source array of slim binaries
declare -A binaries
binaries["coder-darwin-amd64"]="coder-slim_${version}_darwin_amd64"
binaries["coder-darwin-arm64"]="coder-slim_${version}_darwin_arm64"
binaries["coder-linux-amd64"]="coder-slim_${version}_linux_amd64"
binaries["coder-linux-arm64"]="coder-slim_${version}_linux_arm64"
binaries["coder-linux-armv7"]="coder-slim_${version}_linux_armv7"
binaries["coder-windows-amd64.exe"]="coder-slim_${version}_windows_amd64.exe"
binaries["coder-windows-arm64.exe"]="coder-slim_${version}_windows_arm64.exe"
for cli_name in "${!binaries[@]}"; do
slim_binary="${binaries[$cli_name]}"
detached_signature="${slim_binary}.asc"
gcloud storage cp "./build/${slim_binary}" "gs://releases.coder.com/coder-cli/${version}/${cli_name}"
gcloud storage cp "./build/${detached_signature}" "gs://releases.coder.com/coder-cli/${version}/${cli_name}.asc"
done
- name: Publish release
run: |
set -euo pipefail
@@ -612,28 +706,41 @@ jobs:
fi
declare -p publish_args
# Build the list of files to publish
files=(
./build/*_installer.exe
./build/*.zip
./build/*.tar.gz
./build/*.tgz
./build/*.apk
./build/*.deb
./build/*.rpm
"./coder_${VERSION}_sbom.spdx.json"
)
# Only include the latest SBOM file if it was created
if [[ "${CREATED_LATEST_TAG}" == "true" ]]; then
files+=(./coder_latest_sbom.spdx.json)
fi
./scripts/release/publish.sh \
"${publish_args[@]}" \
--release-notes-file "$CODER_RELEASE_NOTES_FILE" \
./build/*_installer.exe \
./build/*.zip \
./build/*.tar.gz \
./build/*.tgz \
./build/*.apk \
./build/*.deb \
./build/*.rpm
"${files[@]}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CODER_GPG_RELEASE_KEY_BASE64: ${{ secrets.GPG_RELEASE_KEY_BASE64 }}
VERSION: ${{ steps.version.outputs.version }}
CREATED_LATEST_TAG: ${{ steps.build_docker.outputs.created_latest_tag }}
- name: Authenticate to Google Cloud
uses: google-github-actions/auth@71f986410dfbc7added4569d411d040a91dc6935 # v2.1.8
uses: google-github-actions/auth@b7593ed2efd1c1617e1b0254da33b86225adb2a5 # v2.1.12
with:
workload_identity_provider: ${{ secrets.GCP_WORKLOAD_ID_PROVIDER }}
service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }}
workload_identity_provider: ${{ vars.GCP_WORKLOAD_ID_PROVIDER }}
service_account: ${{ vars.GCP_SERVICE_ACCOUNT }}
- name: Setup GCloud SDK
uses: google-github-actions/setup-gcloud@77e7a554d41e2ee56fc945c52dfd3f33d12def9a # 2.1.4
uses: google-github-actions/setup-gcloud@cb1e50a9932213ecece00a606661ae9ca44f3397 # 2.2.0
- name: Publish Helm Chart
if: ${{ !inputs.dry_run }}
@@ -645,10 +752,12 @@ jobs:
cp "build/provisioner_helm_${version}.tgz" build/helm
gsutil cp gs://helm.coder.com/v2/index.yaml build/helm/index.yaml
helm repo index build/helm --url https://helm.coder.com/v2 --merge build/helm/index.yaml
gsutil -h "Cache-Control:no-cache,max-age=0" cp build/helm/coder_helm_${version}.tgz gs://helm.coder.com/v2
gsutil -h "Cache-Control:no-cache,max-age=0" cp build/helm/provisioner_helm_${version}.tgz gs://helm.coder.com/v2
gsutil -h "Cache-Control:no-cache,max-age=0" cp build/helm/index.yaml gs://helm.coder.com/v2
gsutil -h "Cache-Control:no-cache,max-age=0" cp helm/artifacthub-repo.yml gs://helm.coder.com/v2
gsutil -h "Cache-Control:no-cache,max-age=0" cp "build/helm/coder_helm_${version}.tgz" gs://helm.coder.com/v2
gsutil -h "Cache-Control:no-cache,max-age=0" cp "build/helm/provisioner_helm_${version}.tgz" gs://helm.coder.com/v2
gsutil -h "Cache-Control:no-cache,max-age=0" cp "build/helm/index.yaml" gs://helm.coder.com/v2
gsutil -h "Cache-Control:no-cache,max-age=0" cp "helm/artifacthub-repo.yml" gs://helm.coder.com/v2
helm push "build/coder_helm_${version}.tgz" oci://ghcr.io/coder/chart
helm push "build/provisioner_helm_${version}.tgz" oci://ghcr.io/coder/chart
- name: Upload artifacts to actions (if dry-run)
if: ${{ inputs.dry_run }}
@@ -663,6 +772,15 @@ jobs:
./build/*.apk
./build/*.deb
./build/*.rpm
./coder_${{ steps.version.outputs.version }}_sbom.spdx.json
retention-days: 7
- name: Upload latest sbom artifact to actions (if dry-run)
if: inputs.dry_run && steps.build_docker.outputs.created_latest_tag == 'true'
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: latest-sbom-artifact
path: ./coder_latest_sbom.spdx.json
retention-days: 7
- name: Send repository-dispatch event
@@ -684,18 +802,18 @@ jobs:
# TODO: skip this if it's not a new release (i.e. a backport). This is
# fine right now because it just makes a PR that we can close.
- name: Harden Runner
uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
with:
egress-policy: audit
- name: Update homebrew
env:
# Variables used by the `gh` command
GH_REPO: coder/homebrew-coder
GH_TOKEN: ${{ secrets.CDRCI_GITHUB_TOKEN }}
VERSION: ${{ needs.release.outputs.version }}
run: |
# Keep version number around for reference, removing any potential leading v
coder_version="$(echo "${{ needs.release.outputs.version }}" | tr -d v)"
coder_version="$(echo "${VERSION}" | tr -d v)"
set -euxo pipefail
@@ -714,9 +832,9 @@ jobs:
wget "$checksums_url" -O checksums.txt
# Get the SHAs
darwin_arm_sha="$(cat checksums.txt | grep "darwin_arm64.zip" | awk '{ print $1 }')"
darwin_intel_sha="$(cat checksums.txt | grep "darwin_amd64.zip" | awk '{ print $1 }')"
linux_sha="$(cat checksums.txt | grep "linux_amd64.tar.gz" | awk '{ print $1 }')"
darwin_arm_sha="$(grep "darwin_arm64.zip" checksums.txt | awk '{ print $1 }')"
darwin_intel_sha="$(grep "darwin_amd64.zip" checksums.txt | awk '{ print $1 }')"
linux_sha="$(grep "linux_amd64.tar.gz" checksums.txt | awk '{ print $1 }')"
echo "macOS arm64: $darwin_arm_sha"
echo "macOS amd64: $darwin_intel_sha"
@@ -729,7 +847,7 @@ jobs:
# Check if a PR already exists.
pr_count="$(gh pr list --search "head:$brew_branch" --json id,closed | jq -r ".[] | select(.closed == false) | .id" | wc -l)"
if [[ "$pr_count" > 0 ]]; then
if [ "$pr_count" -gt 0 ]; then
echo "Bailing out as PR already exists" 2>&1
exit 0
fi
@@ -748,8 +866,8 @@ jobs:
-B master -H "$brew_branch" \
-t "coder $coder_version" \
-b "" \
-r "${{ github.actor }}" \
-a "${{ github.actor }}" \
-r "${GITHUB_ACTOR}" \
-a "${GITHUB_ACTOR}" \
-b "This automatic PR was triggered by the release of Coder v$coder_version"
publish-winget:
@@ -760,7 +878,7 @@ jobs:
steps:
- name: Harden Runner
uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
with:
egress-policy: audit
@@ -770,9 +888,10 @@ jobs:
GH_TOKEN: ${{ secrets.CDRCI_GITHUB_TOKEN }}
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
fetch-depth: 0
persist-credentials: false
# If the event that triggered the build was an annotated tag (which our
# tags are supposed to be), actions/checkout has a bug where the tag in
@@ -791,7 +910,7 @@ jobs:
# The package version is the same as the tag minus the leading "v".
# The version in this output already has the leading "v" removed but
# we do it again to be safe.
$version = "${{ needs.release.outputs.version }}".Trim('v')
$version = $env:VERSION.Trim('v')
$release_assets = gh release view --repo coder/coder "v${version}" --json assets | `
ConvertFrom-Json
@@ -823,13 +942,14 @@ jobs:
# For wingetcreate. We need a real token since we're pushing a commit
# to GitHub and then making a PR in a different repo.
WINGET_GH_TOKEN: ${{ secrets.CDRCI_GITHUB_TOKEN }}
VERSION: ${{ needs.release.outputs.version }}
- name: Comment on PR
run: |
# wait 30 seconds
Start-Sleep -Seconds 30.0
# Find the PR that wingetcreate just made.
$version = "${{ needs.release.outputs.version }}".Trim('v')
$version = $env:VERSION.Trim('v')
$pr_list = gh pr list --repo microsoft/winget-pkgs --search "author:cdrci Coder.Coder version ${version}" --limit 1 --json number | `
ConvertFrom-Json
$pr_number = $pr_list[0].number
@@ -840,6 +960,7 @@ jobs:
# For gh CLI. We need a real token since we're commenting on a PR in a
# different repo.
GH_TOKEN: ${{ secrets.CDRCI_GITHUB_TOKEN }}
VERSION: ${{ needs.release.outputs.version }}
# publish-sqlc pushes the latest schema to sqlc cloud.
# At present these pushes cannot be tagged, so the last push is always the latest.
@@ -850,14 +971,15 @@ jobs:
if: ${{ !inputs.dry_run }}
steps:
- name: Harden Runner
uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
with:
egress-policy: audit
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
fetch-depth: 1
persist-credentials: false
# We need golang to run the migration main.go
- name: Setup Go
+4 -4
View File
@@ -20,17 +20,17 @@ jobs:
steps:
- name: Harden Runner
uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
with:
egress-policy: audit
- name: "Checkout code"
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
persist-credentials: false
- name: "Run analysis"
uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1
uses: ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde # v2.4.2
with:
results_file: results.sarif
results_format: sarif
@@ -47,6 +47,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@5f8171a638ada777af81d42b55959a643bb29017 # v3.28.12
uses: github/codeql-action/upload-sarif@76621b61decf072c1cee8dd1ce2d2a82d33c17ed # v3.29.5
with:
sarif_file: results.sarif
+14 -10
View File
@@ -27,18 +27,20 @@ jobs:
runs-on: ${{ github.repository_owner == 'coder' && 'depot-ubuntu-22.04-8' || 'ubuntu-latest' }}
steps:
- name: Harden Runner
uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
with:
egress-policy: audit
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
persist-credentials: false
- name: Setup Go
uses: ./.github/actions/setup-go
- name: Initialize CodeQL
uses: github/codeql-action/init@5f8171a638ada777af81d42b55959a643bb29017 # v3.28.12
uses: github/codeql-action/init@76621b61decf072c1cee8dd1ce2d2a82d33c17ed # v3.29.5
with:
languages: go, javascript
@@ -48,7 +50,7 @@ jobs:
rm Makefile
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@5f8171a638ada777af81d42b55959a643bb29017 # v3.28.12
uses: github/codeql-action/analyze@76621b61decf072c1cee8dd1ce2d2a82d33c17ed # v3.29.5
- name: Send Slack notification on failure
if: ${{ failure() }}
@@ -67,14 +69,15 @@ jobs:
runs-on: ${{ github.repository_owner == 'coder' && 'depot-ubuntu-22.04-8' || 'ubuntu-latest' }}
steps:
- name: Harden Runner
uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
with:
egress-policy: audit
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
fetch-depth: 0
persist-credentials: false
- name: Setup Go
uses: ./.github/actions/setup-go
@@ -134,15 +137,16 @@ jobs:
# This environment variables forces scripts/build_docker.sh to build
# the base image tag locally instead of using the cached version from
# the registry.
export CODER_IMAGE_BUILD_BASE_TAG="$(CODER_IMAGE_BASE=coder-base ./scripts/image_tag.sh --version "$version")"
CODER_IMAGE_BUILD_BASE_TAG="$(CODER_IMAGE_BASE=coder-base ./scripts/image_tag.sh --version "$version")"
export CODER_IMAGE_BUILD_BASE_TAG
# We would like to use make -j here, but it doesn't work with the some recent additions
# to our code generation.
make "$image_job"
echo "image=$(cat "$image_job")" >> $GITHUB_OUTPUT
echo "image=$(cat "$image_job")" >> "$GITHUB_OUTPUT"
- name: Run Trivy vulnerability scanner
uses: aquasecurity/trivy-action@6c175e9c4083a92bbca2f9724c8a5e33bc2d97a5
uses: aquasecurity/trivy-action@dc5a429b52fcf669ce959baa2c2dd26090d2a6c4
with:
image-ref: ${{ steps.build.outputs.image }}
format: sarif
@@ -150,7 +154,7 @@ jobs:
severity: "CRITICAL,HIGH"
- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@5f8171a638ada777af81d42b55959a643bb29017 # v3.28.12
uses: github/codeql-action/upload-sarif@76621b61decf072c1cee8dd1ce2d2a82d33c17ed # v3.29.5
with:
sarif_file: trivy-results.sarif
category: "Trivy"
+6 -4
View File
@@ -18,7 +18,7 @@ jobs:
pull-requests: write
steps:
- name: Harden Runner
uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
with:
egress-policy: audit
@@ -96,12 +96,14 @@ jobs:
contents: write
steps:
- name: Harden Runner
uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
with:
egress-policy: audit
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
persist-credentials: false
- name: Run delete-old-branches-action
uses: beatlabs/delete-old-branches-action@4eeeb8740ff8b3cb310296ddd6b43c3387734588 # v0.0.11
with:
@@ -118,7 +120,7 @@ jobs:
actions: write
steps:
- name: Harden Runner
uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
with:
egress-policy: audit
+11 -8
View File
@@ -12,21 +12,24 @@ permissions:
jobs:
comment:
runs-on: ubuntu-latest
environment: aidev
if: >-
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@coder')) ||
(github.event_name == 'issues' && contains(github.event.issue.body, '@coder'))
environment: dev.coder.com
timeout-minutes: 5
steps:
- name: Start Coder workspace
uses: coder/start-workspace-action@26d3600161d67901f24d8612793d3b82771cde2d
uses: coder/start-workspace-action@f97a681b4cc7985c9eef9963750c7cc6ebc93a19
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
trigger-phrase: "@coder"
github-username: >-
${{
(github.event_name == 'issue_comment' && github.event.comment.user.login) ||
(github.event_name == 'issues' && github.event.issue.user.login)
}}
coder-url: ${{ secrets.CODER_URL }}
coder-token: ${{ secrets.CODER_TOKEN }}
template-name: ${{ secrets.CODER_TEMPLATE_NAME }}
workspace-name: issue-${{ github.event.issue.number }}
parameters: |-
Coder Image: codercom/oss-dogfood:latest
Coder Repository Base Directory: "~"
AI Code Prompt: "Use the gh CLI tool to read the details of issue https://github.com/${{ github.repository }}/issues/${{ github.event.issue.number }} and then address it."
AI Prompt: "Use the gh CLI tool to read the details of issue https://github.com/${{ github.repository }}/issues/${{ github.event.issue.number }} and then address it."
Region: us-pittsburgh
user-mapping: ${{ secrets.CODER_USER_MAPPING }}
+7 -1
View File
@@ -1,3 +1,6 @@
[default]
extend-ignore-identifiers-re = ["gho_.*"]
[default.extend-identifiers]
alog = "alog"
Jetbrains = "JetBrains"
@@ -24,6 +27,8 @@ EDE = "EDE"
HELO = "HELO"
LKE = "LKE"
byt = "byt"
typ = "typ"
Inferrable = "Inferrable"
[files]
extend-exclude = [
@@ -42,5 +47,6 @@ extend-exclude = [
"site/src/pages/SetupPage/countries.tsx",
"provisioner/terraform/testdata/**",
# notifications' golden files confuse the detector because of quoted-printable encoding
"coderd/notifications/testdata/**"
"coderd/notifications/testdata/**",
"agent/agentcontainers/testdata/devcontainercli/**",
]
+10 -5
View File
@@ -21,27 +21,32 @@ jobs:
pull-requests: write # required to post PR review comments by the action
steps:
- name: Harden Runner
uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
with:
egress-policy: audit
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
persist-credentials: false
- name: Check Markdown links
uses: umbrelladocs/action-linkspector@49cf4f8da82db70e691bb8284053add5028fa244 # v1.3.2
uses: umbrelladocs/action-linkspector@874d01cae9fd488e3077b08952093235bd626977 # v1.3.7
id: markdown-link-check
# checks all markdown files from /docs including all subfolders
with:
reporter: github-pr-review
config_file: ".github/.linkspector.yml"
fail_on_error: "true"
filter_mode: "nofilter"
filter_mode: "file"
- name: Send Slack notification
if: failure() && github.event_name == 'schedule'
run: |
curl -X POST -H 'Content-type: application/json' -d '{"msg":"Broken links found in the documentation. Please check the logs at ${{ env.LOGS_URL }}"}' ${{ secrets.DOCS_LINK_SLACK_WEBHOOK }}
curl \
-X POST \
-H 'Content-type: application/json' \
-d '{"msg":"Broken links found in the documentation. Please check the logs at '"${LOGS_URL}"'"}' "${{ secrets.DOCS_LINK_SLACK_WEBHOOK }}"
echo "Sent Slack notification"
env:
LOGS_URL: https://github.com/coder/coder/actions/runs/${{ github.run_id }}
+7
View File
@@ -50,6 +50,8 @@ site/stats/
*.tfplan
*.lock.hcl
.terraform/
!coderd/testdata/parameters/modules/.terraform/
!provisioner/terraform/testdata/modules-source-caching/.terraform/
**/.coderv2/*
**/__debug_bin
@@ -79,3 +81,8 @@ result
# Zed
.zed_server
# dlv debug binaries for go tests
__debug_bin*
**/.claude/settings.local.json
+11 -29
View File
@@ -24,30 +24,19 @@ linters-settings:
enabled-checks:
# - appendAssign
# - appendCombine
- argOrder
# - assignOp
# - badCall
- badCond
- badLock
- badRegexp
- boolExprSimplify
# - builtinShadow
- builtinShadowDecl
- captLocal
- caseOrder
- codegenComment
# - commentedOutCode
- commentedOutImport
- commentFormatting
- defaultCaseOrder
- deferUnlambda
# - deprecatedComment
# - docStub
- dupArg
- dupBranchBody
- dupCase
- dupImport
- dupSubExpr
# - elseif
- emptyFallthrough
# - emptyStringTest
@@ -56,8 +45,6 @@ linters-settings:
# - exitAfterDefer
# - exposedSyncMutex
# - filepathJoin
- flagDeref
- flagName
- hexLiteral
# - httpNoBody
# - hugeParam
@@ -65,47 +52,36 @@ linters-settings:
# - importShadow
- indexAlloc
- initClause
- mapKey
- methodExprCall
# - nestingReduce
- newDeref
- nilValReturn
# - octalLiteral
- offBy1
# - paramTypeCombine
# - preferStringWriter
# - preferWriteByte
# - ptrToRefParam
# - rangeExprCopy
# - rangeValCopy
- regexpMust
- regexpPattern
# - regexpSimplify
- ruleguard
- singleCaseSwitch
- sloppyLen
# - sloppyReassign
- sloppyTypeAssert
- sortSlice
- sprintfQuotedString
- sqlQuery
# - stringConcatSimplify
# - stringXbytes
# - suspiciousSorting
- switchTrue
- truncateCmp
- typeAssertChain
# - typeDefFirst
- typeSwitchVar
# - typeUnparen
- underef
# - unlabelStmt
# - unlambda
# - unnamedResult
# - unnecessaryBlock
# - unnecessaryDefer
# - unslice
- valSwap
- weakCond
# - whyNoLint
# - wrapperFunc
@@ -188,6 +164,7 @@ linters-settings:
- name: unnecessary-stmt
- name: unreachable-code
- name: unused-parameter
exclude: "**/*_test.go"
- name: unused-receiver
- name: var-declaration
- name: var-naming
@@ -203,6 +180,13 @@ linters-settings:
- G601
issues:
exclude-dirs:
- node_modules
- .git
exclude-files:
- scripts/rules.go
# Rules listed here: https://github.com/securego/gosec#available-rules
exclude-rules:
- path: _test\.go
@@ -214,17 +198,15 @@ issues:
- path: scripts/*
linters:
- exhaustruct
- path: scripts/rules.go
linters:
- ALL
fix: true
max-issues-per-linter: 0
max-same-issues: 0
run:
skip-dirs:
- node_modules
- .git
skip-files:
- scripts/rules.go
timeout: 10m
# Over time, add more and more linters from
+36
View File
@@ -0,0 +1,36 @@
{
"mcpServers": {
"go-language-server": {
"type": "stdio",
"command": "go",
"args": [
"run",
"github.com/isaacphi/mcp-language-server@latest",
"-workspace",
"./",
"-lsp",
"go",
"--",
"run",
"golang.org/x/tools/gopls@latest"
],
"env": {}
},
"typescript-language-server": {
"type": "stdio",
"command": "go",
"args": [
"run",
"github.com/isaacphi/mcp-language-server@latest",
"-workspace",
"./site/",
"-lsp",
"pnpx",
"--",
"typescript-language-server",
"--stdio"
],
"env": {}
}
}
}
+5 -2
View File
@@ -49,7 +49,7 @@
"[javascript][javascriptreact][json][jsonc][typescript][typescriptreact]": {
"editor.defaultFormatter": "biomejs.biome",
"editor.codeActionsOnSave": {
"quickfix.biome": "explicit"
"source.fixAll.biome": "explicit"
// "source.organizeImports.biome": "explicit"
}
},
@@ -57,5 +57,8 @@
"[css][html][markdown][yaml]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"typos.config": ".github/workflows/typos.toml"
"typos.config": ".github/workflows/typos.toml",
"[markdown]": {
"editor.defaultFormatter": "DavidAnson.vscode-markdownlint"
}
}
Symlink
+1
View File
@@ -0,0 +1 @@
CLAUDE.md
+138
View File
@@ -0,0 +1,138 @@
# Coder Development Guidelines
@.claude/docs/WORKFLOWS.md
@.cursorrules
@README.md
@package.json
## 🚀 Essential Commands
| Task | Command | Notes |
|-------------------|--------------------------|----------------------------------|
| **Development** | `./scripts/develop.sh` | ⚠️ Don't use manual build |
| **Build** | `make build` | Fat binaries (includes server) |
| **Build Slim** | `make build-slim` | Slim binaries |
| **Test** | `make test` | Full test suite |
| **Test Single** | `make test RUN=TestName` | Faster than full suite |
| **Test Postgres** | `make test-postgres` | Run tests with Postgres database |
| **Test Race** | `make test-race` | Run tests with Go race detector |
| **Lint** | `make lint` | Always run after changes |
| **Generate** | `make gen` | After database changes |
| **Format** | `make fmt` | Auto-format code |
| **Clean** | `make clean` | Clean build artifacts |
### Frontend Commands (site directory)
- `pnpm build` - Build frontend
- `pnpm dev` - Run development server
- `pnpm check` - Run code checks
- `pnpm format` - Format frontend code
- `pnpm lint` - Lint frontend code
- `pnpm test` - Run frontend tests
### Documentation Commands
- `pnpm run format-docs` - Format markdown tables in docs
- `pnpm run lint-docs` - Lint and fix markdown files
- `pnpm run storybook` - Run Storybook (from site directory)
## 🔧 Critical Patterns
### Database Changes (ALWAYS FOLLOW)
1. Modify `coderd/database/queries/*.sql` files
2. Run `make gen`
3. If audit errors: update `enterprise/audit/table.go`
4. Run `make gen` again
### LSP Navigation (USE FIRST)
#### Go LSP (for backend code)
- **Find definitions**: `mcp__go-language-server__definition symbolName`
- **Find references**: `mcp__go-language-server__references symbolName`
- **Get type info**: `mcp__go-language-server__hover filePath line column`
- **Rename symbol**: `mcp__go-language-server__rename_symbol filePath line column newName`
#### TypeScript LSP (for frontend code in site/)
- **Find definitions**: `mcp__typescript-language-server__definition symbolName`
- **Find references**: `mcp__typescript-language-server__references symbolName`
- **Get type info**: `mcp__typescript-language-server__hover filePath line column`
- **Rename symbol**: `mcp__typescript-language-server__rename_symbol filePath line column newName`
### OAuth2 Error Handling
```go
// OAuth2-compliant error responses
writeOAuth2Error(ctx, rw, http.StatusBadRequest, "invalid_grant", "description")
```
### Authorization Context
```go
// Public endpoints needing system access
app, err := api.Database.GetOAuth2ProviderAppByClientID(dbauthz.AsSystemRestricted(ctx), clientID)
// Authenticated endpoints with user context
app, err := api.Database.GetOAuth2ProviderAppByClientID(ctx, clientID)
```
## 📋 Quick Reference
### Full workflows available in imported WORKFLOWS.md
### New Feature Checklist
- [ ] Run `git pull` to ensure latest code
- [ ] Check if feature touches database - you'll need migrations
- [ ] Check if feature touches audit logs - update `enterprise/audit/table.go`
## 🏗️ Architecture
- **coderd**: Main API service
- **provisionerd**: Infrastructure provisioning
- **Agents**: Workspace services (SSH, port forwarding)
- **Database**: PostgreSQL with `dbauthz` authorization
## 🧪 Testing
### Race Condition Prevention
- Use unique identifiers: `fmt.Sprintf("test-client-%s-%d", t.Name(), time.Now().UnixNano())`
- Never use hardcoded names in concurrent tests
### OAuth2 Testing
- Full suite: `./scripts/oauth2/test-mcp-oauth2.sh`
- Manual testing: `./scripts/oauth2/test-manual-flow.sh`
### Timing Issues
NEVER use `time.Sleep` to mitigate timing issues. If an issue
seems like it should use `time.Sleep`, read through https://github.com/coder/quartz and specifically the [README](https://github.com/coder/quartz/blob/main/README.md) to better understand how to handle timing issues.
## 🎯 Code Style
### Detailed guidelines in imported WORKFLOWS.md
- Follow [Uber Go Style Guide](https://github.com/uber-go/guide/blob/master/style.md)
- Commit format: `type(scope): message`
## 📚 Detailed Development Guides
@.claude/docs/OAUTH2.md
@.claude/docs/TESTING.md
@.claude/docs/TROUBLESHOOTING.md
@.claude/docs/DATABASE.md
## 🚨 Common Pitfalls
1. **Audit table errors** → Update `enterprise/audit/table.go`
2. **OAuth2 errors** → Return RFC-compliant format
3. **Race conditions** → Use unique test identifiers
4. **Missing newlines** → Ensure files end with newline
---
*This file stays lean and actionable. Detailed workflows and explanations are imported automatically.*
+37 -2
View File
@@ -1,6 +1,41 @@
# These APIs are versioned, so any changes need to be carefully reviewed for whether
# to bump API major or minor versions.
# These APIs are versioned, so any changes need to be carefully reviewed for
# whether to bump API major or minor versions.
agent/proto/ @spikecurtis @johnstcn
provisionerd/proto/ @spikecurtis @johnstcn
provisionersdk/proto/ @spikecurtis @johnstcn
tailnet/proto/ @spikecurtis @johnstcn
vpn/vpn.proto @spikecurtis @johnstcn
vpn/version.go @spikecurtis @johnstcn
# This caching code is particularly tricky, and one must be very careful when
# altering it.
coderd/files/ @aslilac
coderd/dynamicparameters/ @Emyrk
coderd/rbac/ @Emyrk
# Mainly dependent on coder/guts, which is maintained by @Emyrk
scripts/apitypings/ @Emyrk
scripts/gensite/ @aslilac
site/ @aslilac @Parkreiner
site/src/hooks/ @Parkreiner
# These rules intentionally do not specify any owners. More specific rules
# override less specific rules, so these files are "ignored" by the site/ rule.
site/e2e/google/protobuf/timestampGenerated.ts
site/e2e/provisionerGenerated.ts
site/src/api/countriesGenerated.ts
site/src/api/rbacresourcesGenerated.ts
site/src/api/typesGenerated.ts
site/src/testHelpers/entities.ts
site/CLAUDE.md
# The blood and guts of the autostop algorithm, which is quite complex and
# requires elite ball knowledge of most of the scheduling code to make changes
# without inadvertently affecting other parts of the codebase.
coderd/schedule/autostop.go @deansheather @DanielleMaywood
# Usage tracking code requires intimate knowledge of Tallyman and Metronome, as
# well as guidance from revenue.
coderd/usage/ @deansheather @spikecurtis
enterprise/coderd/usage/ @deansheather @spikecurtis
+1 -1
View File
@@ -1,2 +1,2 @@
<!-- markdownlint-disable MD041 -->
[https://coder.com/docs/contributing/CODE_OF_CONDUCT](https://coder.com/docs/contributing/CODE_OF_CONDUCT)
[https://coder.com/docs/about/contributing/CODE_OF_CONDUCT](https://coder.com/docs/about/contributing/CODE_OF_CONDUCT)
+132 -24
View File
@@ -36,7 +36,9 @@ GOOS := $(shell go env GOOS)
GOARCH := $(shell go env GOARCH)
GOOS_BIN_EXT := $(if $(filter windows, $(GOOS)),.exe,)
VERSION := $(shell ./scripts/version.sh)
POSTGRES_VERSION ?= 16
POSTGRES_VERSION ?= 17
POSTGRES_IMAGE ?= us-docker.pkg.dev/coder-v2-images-public/public/postgres:$(POSTGRES_VERSION)
# Use the highest ZSTD compression level in CI.
ifdef CI
@@ -250,6 +252,10 @@ $(CODER_ALL_BINARIES): go.mod go.sum \
fi
cp "$@" "./site/out/bin/coder-$$os-$$arch$$dot_ext"
if [[ "$${CODER_SIGN_GPG:-0}" == "1" ]]; then
cp "$@.asc" "./site/out/bin/coder-$$os-$$arch$$dot_ext.asc"
fi
fi
# This task builds Coder Desktop dylibs
@@ -454,16 +460,31 @@ fmt: fmt/ts fmt/go fmt/terraform fmt/shfmt fmt/biome fmt/markdown
.PHONY: fmt
fmt/go:
ifdef FILE
# Format single file
if [[ -f "$(FILE)" ]] && [[ "$(FILE)" == *.go ]] && ! grep -q "DO NOT EDIT" "$(FILE)"; then \
echo "$(GREEN)==>$(RESET) $(BOLD)fmt/go$(RESET) $(FILE)"; \
go run mvdan.cc/gofumpt@v0.8.0 -w -l "$(FILE)"; \
fi
else
go mod tidy
echo "$(GREEN)==>$(RESET) $(BOLD)fmt/go$(RESET)"
# VS Code users should check out
# https://github.com/mvdan/gofumpt#visual-studio-code
find . $(FIND_EXCLUSIONS) -type f -name '*.go' -print0 | \
xargs -0 grep --null -L "DO NOT EDIT" | \
xargs -0 go run mvdan.cc/gofumpt@v0.4.0 -w -l
xargs -0 grep -E --null -L '^// Code generated .* DO NOT EDIT\.$$' | \
xargs -0 go run mvdan.cc/gofumpt@v0.8.0 -w -l
endif
.PHONY: fmt/go
fmt/ts: site/node_modules/.installed
ifdef FILE
# Format single TypeScript/JavaScript file
if [[ -f "$(FILE)" ]] && [[ "$(FILE)" == *.ts ]] || [[ "$(FILE)" == *.tsx ]] || [[ "$(FILE)" == *.js ]] || [[ "$(FILE)" == *.jsx ]]; then \
echo "$(GREEN)==>$(RESET) $(BOLD)fmt/ts$(RESET) $(FILE)"; \
(cd site/ && pnpm exec biome format --write "../$(FILE)"); \
fi
else
echo "$(GREEN)==>$(RESET) $(BOLD)fmt/ts$(RESET)"
cd site
# Avoid writing files in CI to reduce file write activity
@@ -472,9 +493,17 @@ ifdef CI
else
pnpm run check:fix
endif
endif
.PHONY: fmt/ts
fmt/biome: site/node_modules/.installed
ifdef FILE
# Format single file with biome
if [[ -f "$(FILE)" ]] && [[ "$(FILE)" == *.ts ]] || [[ "$(FILE)" == *.tsx ]] || [[ "$(FILE)" == *.js ]] || [[ "$(FILE)" == *.jsx ]]; then \
echo "$(GREEN)==>$(RESET) $(BOLD)fmt/biome$(RESET) $(FILE)"; \
(cd site/ && pnpm exec biome format --write "../$(FILE)"); \
fi
else
echo "$(GREEN)==>$(RESET) $(BOLD)fmt/biome$(RESET)"
cd site/
# Avoid writing files in CI to reduce file write activity
@@ -483,14 +512,30 @@ ifdef CI
else
pnpm run format
endif
endif
.PHONY: fmt/biome
fmt/terraform: $(wildcard *.tf)
ifdef FILE
# Format single Terraform file
if [[ -f "$(FILE)" ]] && [[ "$(FILE)" == *.tf ]] || [[ "$(FILE)" == *.tfvars ]]; then \
echo "$(GREEN)==>$(RESET) $(BOLD)fmt/terraform$(RESET) $(FILE)"; \
terraform fmt "$(FILE)"; \
fi
else
echo "$(GREEN)==>$(RESET) $(BOLD)fmt/terraform$(RESET)"
terraform fmt -recursive
endif
.PHONY: fmt/terraform
fmt/shfmt: $(SHELL_SRC_FILES)
ifdef FILE
# Format single shell script
if [[ -f "$(FILE)" ]] && [[ "$(FILE)" == *.sh ]]; then \
echo "$(GREEN)==>$(RESET) $(BOLD)fmt/shfmt$(RESET) $(FILE)"; \
shfmt -w "$(FILE)"; \
fi
else
echo "$(GREEN)==>$(RESET) $(BOLD)fmt/shfmt$(RESET)"
# Only do diff check in CI, errors on diff.
ifdef CI
@@ -498,14 +543,25 @@ ifdef CI
else
shfmt -w $(SHELL_SRC_FILES)
endif
endif
.PHONY: fmt/shfmt
fmt/markdown: node_modules/.installed
ifdef FILE
# Format single markdown file
if [[ -f "$(FILE)" ]] && [[ "$(FILE)" == *.md ]]; then \
echo "$(GREEN)==>$(RESET) $(BOLD)fmt/markdown$(RESET) $(FILE)"; \
pnpm exec markdown-table-formatter "$(FILE)"; \
fi
else
echo "$(GREEN)==>$(RESET) $(BOLD)fmt/markdown$(RESET)"
pnpm format-docs
endif
.PHONY: fmt/markdown
lint: lint/shellcheck lint/go lint/ts lint/examples lint/helm lint/site-icons lint/markdown
# Note: we don't run zizmor in the lint target because it takes a while. CI
# runs it explicitly.
lint: lint/shellcheck lint/go lint/ts lint/examples lint/helm lint/site-icons lint/markdown lint/actions/actionlint
.PHONY: lint
lint/site-icons:
@@ -522,6 +578,7 @@ lint/go:
./scripts/check_codersdk_imports.sh
linter_ver=$(shell egrep -o 'GOLANGCI_LINT_VERSION=\S+' dogfood/coder/Dockerfile | cut -d '=' -f 2)
go run github.com/golangci/golangci-lint/cmd/golangci-lint@v$$linter_ver run
go run github.com/coder/paralleltestctx/cmd/paralleltestctx@v0.0.1 -custom-funcs="testutil.Context" ./...
.PHONY: lint/go
lint/examples:
@@ -543,13 +600,26 @@ lint/markdown: node_modules/.installed
pnpm lint-docs
.PHONY: lint/markdown
lint/actions: lint/actions/actionlint lint/actions/zizmor
.PHONY: lint/actions
lint/actions/actionlint:
go run github.com/rhysd/actionlint/cmd/actionlint@v1.7.7
.PHONY: lint/actions/actionlint
lint/actions/zizmor:
./scripts/zizmor.sh \
--strict-collection \
--persona=regular \
.
.PHONY: lint/actions/zizmor
# All files generated by the database should be added here, and this can be used
# as a target for jobs that need to run after the database is generated.
DB_GEN_FILES := \
coderd/database/dump.sql \
coderd/database/querier.go \
coderd/database/unique_constraint.go \
coderd/database/dbmem/dbmem.go \
coderd/database/dbmetrics/dbmetrics.go \
coderd/database/dbauthz/dbauthz.go \
coderd/database/dbmock/dbmock.go
@@ -581,7 +651,9 @@ GEN_FILES := \
$(TAILNETTEST_MOCKS) \
coderd/database/pubsub/psmock/psmock.go \
agent/agentcontainers/acmock/acmock.go \
agent/agentcontainers/dcspec/dcspec_gen.go
agent/agentcontainers/dcspec/dcspec_gen.go \
coderd/httpmw/loggermw/loggermock/loggermock.go \
codersdk/workspacesdk/agentconnmock/agentconnmock.go
# all gen targets should be added here and to gen/mark-fresh
gen: gen/db gen/golden-files $(GEN_FILES)
@@ -630,6 +702,8 @@ gen/mark-fresh:
coderd/database/pubsub/psmock/psmock.go \
agent/agentcontainers/acmock/acmock.go \
agent/agentcontainers/dcspec/dcspec_gen.go \
coderd/httpmw/loggermw/loggermock/loggermock.go \
codersdk/workspacesdk/agentconnmock/agentconnmock.go \
"
for file in $$files; do
@@ -669,6 +743,14 @@ agent/agentcontainers/acmock/acmock.go: agent/agentcontainers/containers.go
go generate ./agent/agentcontainers/acmock/
touch "$@"
coderd/httpmw/loggermw/loggermock/loggermock.go: coderd/httpmw/loggermw/logger.go
go generate ./coderd/httpmw/loggermw/loggermock/
touch "$@"
codersdk/workspacesdk/agentconnmock/agentconnmock.go: codersdk/workspacesdk/agentconn.go
go generate ./codersdk/workspacesdk/agentconnmock/
touch "$@"
agent/agentcontainers/dcspec/dcspec_gen.go: \
node_modules/.installed \
agent/agentcontainers/dcspec/devContainer.base.schema.json \
@@ -807,8 +889,8 @@ coderd/apidoc/swagger.json: site/node_modules/.installed coderd/apidoc/.gen
touch "$@"
update-golden-files:
echo 'WARNING: This target is deprecated. Use "make gen/golden-files" instead.' 2>&1
echo 'Running "make gen/golden-files"' 2>&1
echo 'WARNING: This target is deprecated. Use "make gen/golden-files" instead.' >&2
echo 'Running "make gen/golden-files"' >&2
make gen/golden-files
.PHONY: update-golden-files
@@ -828,39 +910,39 @@ clean/golden-files:
.PHONY: clean/golden-files
cli/testdata/.gen-golden: $(wildcard cli/testdata/*.golden) $(wildcard cli/*.tpl) $(GO_SRC_FILES) $(wildcard cli/*_test.go)
go test ./cli -run="Test(CommandHelp|ServerYAML|ErrorExamples|.*Golden)" -update
TZ=UTC go test ./cli -run="Test(CommandHelp|ServerYAML|ErrorExamples|.*Golden)" -update
touch "$@"
enterprise/cli/testdata/.gen-golden: $(wildcard enterprise/cli/testdata/*.golden) $(wildcard cli/*.tpl) $(GO_SRC_FILES) $(wildcard enterprise/cli/*_test.go)
go test ./enterprise/cli -run="TestEnterpriseCommandHelp" -update
TZ=UTC go test ./enterprise/cli -run="TestEnterpriseCommandHelp" -update
touch "$@"
tailnet/testdata/.gen-golden: $(wildcard tailnet/testdata/*.golden.html) $(GO_SRC_FILES) $(wildcard tailnet/*_test.go)
go test ./tailnet -run="TestDebugTemplate" -update
TZ=UTC go test ./tailnet -run="TestDebugTemplate" -update
touch "$@"
enterprise/tailnet/testdata/.gen-golden: $(wildcard enterprise/tailnet/testdata/*.golden.html) $(GO_SRC_FILES) $(wildcard enterprise/tailnet/*_test.go)
go test ./enterprise/tailnet -run="TestDebugTemplate" -update
TZ=UTC go test ./enterprise/tailnet -run="TestDebugTemplate" -update
touch "$@"
helm/coder/tests/testdata/.gen-golden: $(wildcard helm/coder/tests/testdata/*.yaml) $(wildcard helm/coder/tests/testdata/*.golden) $(GO_SRC_FILES) $(wildcard helm/coder/tests/*_test.go)
go test ./helm/coder/tests -run=TestUpdateGoldenFiles -update
TZ=UTC go test ./helm/coder/tests -run=TestUpdateGoldenFiles -update
touch "$@"
helm/provisioner/tests/testdata/.gen-golden: $(wildcard helm/provisioner/tests/testdata/*.yaml) $(wildcard helm/provisioner/tests/testdata/*.golden) $(GO_SRC_FILES) $(wildcard helm/provisioner/tests/*_test.go)
go test ./helm/provisioner/tests -run=TestUpdateGoldenFiles -update
TZ=UTC go test ./helm/provisioner/tests -run=TestUpdateGoldenFiles -update
touch "$@"
coderd/.gen-golden: $(wildcard coderd/testdata/*/*.golden) $(GO_SRC_FILES) $(wildcard coderd/*_test.go)
go test ./coderd -run="Test.*Golden$$" -update
TZ=UTC go test ./coderd -run="Test.*Golden$$" -update
touch "$@"
coderd/notifications/.gen-golden: $(wildcard coderd/notifications/testdata/*/*.golden) $(GO_SRC_FILES) $(wildcard coderd/notifications/*_test.go)
go test ./coderd/notifications -run="Test.*Golden$$" -update
TZ=UTC go test ./coderd/notifications -run="Test.*Golden$$" -update
touch "$@"
provisioner/terraform/testdata/.gen-golden: $(wildcard provisioner/terraform/testdata/*/*.golden) $(GO_SRC_FILES) $(wildcard provisioner/terraform/*_test.go)
go test ./provisioner/terraform -run="Test.*Golden$$" -update
TZ=UTC go test ./provisioner/terraform -run="Test.*Golden$$" -update
touch "$@"
provisioner/terraform/testdata/version:
@@ -869,12 +951,38 @@ provisioner/terraform/testdata/version:
fi
.PHONY: provisioner/terraform/testdata/version
# Set the retry flags if TEST_RETRIES is set
ifdef TEST_RETRIES
GOTESTSUM_RETRY_FLAGS := --rerun-fails=$(TEST_RETRIES)
else
GOTESTSUM_RETRY_FLAGS :=
endif
# default to 8x8 parallelism to avoid overwhelming our workspaces. Hopefully we can remove these defaults
# when we get our test suite's resource utilization under control.
GOTEST_FLAGS := -v -p $(or $(TEST_NUM_PARALLEL_PACKAGES),"8") -parallel=$(or $(TEST_NUM_PARALLEL_TESTS),"8")
# The most common use is to set TEST_COUNT=1 to avoid Go's test cache.
ifdef TEST_COUNT
GOTEST_FLAGS += -count=$(TEST_COUNT)
endif
ifdef TEST_SHORT
GOTEST_FLAGS += -short
endif
ifdef RUN
GOTEST_FLAGS += -run $(RUN)
endif
TEST_PACKAGES ?= ./...
test:
$(GIT_FLAGS) gotestsum --format standard-quiet -- -v -short -count=1 ./... $(if $(RUN),-run $(RUN))
$(GIT_FLAGS) gotestsum --format standard-quiet $(GOTESTSUM_RETRY_FLAGS) --packages="$(TEST_PACKAGES)" -- $(GOTEST_FLAGS)
.PHONY: test
test-cli:
$(GIT_FLAGS) gotestsum --format standard-quiet -- -v -short -count=1 ./cli/...
$(MAKE) test TEST_PACKAGES="./cli..."
.PHONY: test-cli
# sqlc-cloud-is-setup will fail if no SQLc auth token is set. Use this as a
@@ -910,12 +1018,12 @@ sqlc-vet: test-postgres-docker
test-postgres: test-postgres-docker
# The postgres test is prone to failure, so we limit parallelism for
# more consistent execution.
$(GIT_FLAGS) DB=ci gotestsum \
$(GIT_FLAGS) gotestsum \
--junitfile="gotests.xml" \
--jsonfile="gotests.json" \
$(GOTESTSUM_RETRY_FLAGS) \
--packages="./..." -- \
-timeout=20m \
-failfast \
-count=1
.PHONY: test-postgres
@@ -936,12 +1044,12 @@ test-postgres-docker:
docker rm -f test-postgres-docker-${POSTGRES_VERSION} || true
# Try pulling up to three times to avoid CI flakes.
docker pull gcr.io/coder-dev-1/postgres:${POSTGRES_VERSION} || {
docker pull ${POSTGRES_IMAGE} || {
retries=2
for try in $(seq 1 ${retries}); do
echo "Failed to pull image, retrying (${try}/${retries})..."
sleep 1
if docker pull gcr.io/coder-dev-1/postgres:${POSTGRES_VERSION}; then
if docker pull ${POSTGRES_IMAGE}; then
break
fi
done
@@ -969,7 +1077,7 @@ test-postgres-docker:
--restart no \
--detach \
--memory 16GB \
gcr.io/coder-dev-1/postgres:${POSTGRES_VERSION} \
${POSTGRES_IMAGE} \
-c shared_buffers=2GB \
-c effective_cache_size=1GB \
-c work_mem=8MB \
+3 -2
View File
@@ -109,9 +109,10 @@ We are always working on new integrations. Please feel free to open an issue and
### Official
- [**VS Code Extension**](https://marketplace.visualstudio.com/items?itemName=coder.coder-remote): Open any Coder workspace in VS Code with a single click
- [**JetBrains Gateway Extension**](https://plugins.jetbrains.com/plugin/19620-coder): Open any Coder workspace in JetBrains Gateway with a single click
- [**JetBrains Toolbox Plugin**](https://plugins.jetbrains.com/plugin/26968-coder): Open any Coder workspace from JetBrains Toolbox with a single click
- [**JetBrains Gateway Plugin**](https://plugins.jetbrains.com/plugin/19620-coder): Open any Coder workspace in JetBrains Gateway with a single click
- [**Dev Container Builder**](https://github.com/coder/envbuilder): Build development environments using `devcontainer.json` on Docker, Kubernetes, and OpenShift
- [**Module Registry**](https://registry.coder.com): Extend development environments with common use-cases
- [**Coder Registry**](https://registry.coder.com): Build and extend development environments with common use-cases
- [**Kubernetes Log Stream**](https://github.com/coder/coder-logstream-kube): Stream Kubernetes Pod events to the Coder startup logs
- [**Self-Hosted VS Code Extension Marketplace**](https://github.com/coder/code-marketplace): A private extension marketplace that works in restricted or airgapped networks integrating with [code-server](https://github.com/coder/code-server).
- [**Setup Coder**](https://github.com/marketplace/actions/setup-coder): An action to setup coder CLI in GitHub workflows.
+279 -100
View File
@@ -36,6 +36,7 @@ import (
"tailscale.com/util/clientmetric"
"cdr.dev/slog"
"github.com/coder/clistat"
"github.com/coder/coder/v2/agent/agentcontainers"
"github.com/coder/coder/v2/agent/agentexec"
"github.com/coder/coder/v2/agent/agentscripts"
@@ -44,7 +45,6 @@ import (
"github.com/coder/coder/v2/agent/proto/resourcesmonitor"
"github.com/coder/coder/v2/agent/reconnectingpty"
"github.com/coder/coder/v2/buildinfo"
"github.com/coder/coder/v2/cli/clistat"
"github.com/coder/coder/v2/cli/gitauth"
"github.com/coder/coder/v2/coderd/database/dbtime"
"github.com/coder/coder/v2/codersdk"
@@ -89,16 +89,16 @@ type Options struct {
ServiceBannerRefreshInterval time.Duration
BlockFileTransfer bool
Execer agentexec.Execer
ContainerLister agentcontainers.Lister
ExperimentalDevcontainersEnabled bool
Devcontainers bool
DevcontainerAPIOptions []agentcontainers.Option // Enable Devcontainers for these to be effective.
Clock quartz.Clock
}
type Client interface {
ConnectRPC24(ctx context.Context) (
proto.DRPCAgentClient24, tailnetproto.DRPCTailnetClient24, error,
ConnectRPC26(ctx context.Context) (
proto.DRPCAgentClient26, tailnetproto.DRPCTailnetClient26, error,
)
RewriteDERPMap(derpMap *tailcfg.DERPMap)
tailnet.DERPMapRewriter
}
type Agent interface {
@@ -145,6 +145,9 @@ func New(options Options) Agent {
if options.PortCacheDuration == 0 {
options.PortCacheDuration = 1 * time.Second
}
if options.Clock == nil {
options.Clock = quartz.NewReal()
}
prometheusRegistry := options.PrometheusRegistry
if prometheusRegistry == nil {
@@ -154,13 +157,11 @@ func New(options Options) Agent {
if options.Execer == nil {
options.Execer = agentexec.DefaultExecer
}
if options.ContainerLister == nil {
options.ContainerLister = agentcontainers.NoopLister{}
}
hardCtx, hardCancel := context.WithCancel(context.Background())
gracefulCtx, gracefulCancel := context.WithCancel(hardCtx)
a := &agent{
clock: options.Clock,
tailnetListenPort: options.TailnetListenPort,
reconnectingPTYTimeout: options.ReconnectingPTYTimeout,
logger: options.Logger,
@@ -192,9 +193,9 @@ func New(options Options) Agent {
prometheusRegistry: prometheusRegistry,
metrics: newAgentMetrics(prometheusRegistry),
execer: options.Execer,
lister: options.ContainerLister,
experimentalDevcontainersEnabled: options.ExperimentalDevcontainersEnabled,
devcontainers: options.Devcontainers,
containerAPIOptions: options.DevcontainerAPIOptions,
}
// Initially, we have a closed channel, reflecting the fact that we are not initially connected.
// Each time we connect we replace the channel (while holding the closeMutex) with a new one
@@ -208,6 +209,7 @@ func New(options Options) Agent {
}
type agent struct {
clock quartz.Clock
logger slog.Logger
client Client
exchangeToken func(ctx context.Context) (string, error)
@@ -229,13 +231,21 @@ type agent struct {
// we track 2 contexts and associated cancel functions: "graceful" which is Done when it is time
// to start gracefully shutting down and "hard" which is Done when it is time to close
// everything down (regardless of whether graceful shutdown completed).
gracefulCtx context.Context
gracefulCancel context.CancelFunc
hardCtx context.Context
hardCancel context.CancelFunc
closeWaitGroup sync.WaitGroup
gracefulCtx context.Context
gracefulCancel context.CancelFunc
hardCtx context.Context
hardCancel context.CancelFunc
// closeMutex protects the following:
closeMutex sync.Mutex
closeWaitGroup sync.WaitGroup
coordDisconnected chan struct{}
closing bool
// note that once the network is set to non-nil, it is never modified, as with the statsReporter. So, routines
// that run after createOrUpdateNetwork and check the networkOK checkpoint do not need to hold the lock to use them.
network *tailnet.Conn
statsReporter *statsReporter
// end fields protected by closeMutex
environmentVariables map[string]string
@@ -259,21 +269,22 @@ type agent struct {
reportConnectionsMu sync.Mutex
reportConnections []*proto.ReportConnectionRequest
network *tailnet.Conn
statsReporter *statsReporter
logSender *agentsdk.LogSender
logSender *agentsdk.LogSender
prometheusRegistry *prometheus.Registry
// metrics are prometheus registered metrics that will be collected and
// labeled in Coder with the agent + workspace.
metrics *agentMetrics
execer agentexec.Execer
lister agentcontainers.Lister
experimentalDevcontainersEnabled bool
devcontainers bool
containerAPIOptions []agentcontainers.Option
containerAPI *agentcontainers.API
}
func (a *agent) TailnetConn() *tailnet.Conn {
a.closeMutex.Lock()
defer a.closeMutex.Unlock()
return a.network
}
@@ -305,7 +316,7 @@ func (a *agent) init() {
return a.reportConnection(id, connectionType, ip)
},
ExperimentalDevContainersEnabled: a.experimentalDevcontainersEnabled,
ExperimentalContainers: a.devcontainers,
})
if err != nil {
panic(err)
@@ -325,6 +336,17 @@ func (a *agent) init() {
// will not report anywhere.
a.scriptRunner.RegisterMetrics(a.prometheusRegistry)
containerAPIOpts := []agentcontainers.Option{
agentcontainers.WithExecer(a.execer),
agentcontainers.WithCommandEnv(a.sshServer.CommandEnv),
agentcontainers.WithScriptLogger(func(logSourceID uuid.UUID) agentcontainers.ScriptLogger {
return a.logSender.GetScriptLogger(logSourceID)
}),
}
containerAPIOpts = append(containerAPIOpts, a.containerAPIOptions...)
a.containerAPI = agentcontainers.NewAPI(a.logger.Named("containers"), containerAPIOpts...)
a.reconnectingPTYServer = reconnectingpty.NewServer(
a.logger.Named("reconnecting-pty"),
a.sshServer,
@@ -334,7 +356,7 @@ func (a *agent) init() {
a.metrics.connectionsTotal, a.metrics.reconnectingPTYErrors,
a.reconnectingPTYTimeout,
func(s *reconnectingpty.Server) {
s.ExperimentalDevcontainersEnabled = a.experimentalDevcontainersEnabled
s.ExperimentalContainers = a.devcontainers
},
)
go a.runLoop()
@@ -357,9 +379,11 @@ func (a *agent) runLoop() {
if ctx.Err() != nil {
// Context canceled errors may come from websocket pings, so we
// don't want to use `errors.Is(err, context.Canceled)` here.
a.logger.Warn(ctx, "runLoop exited with error", slog.Error(ctx.Err()))
return
}
if a.isClosed() {
a.logger.Warn(ctx, "runLoop exited because agent is closed")
return
}
if errors.Is(err, io.EOF) {
@@ -448,7 +472,7 @@ func (t *trySingleflight) Do(key string, fn func()) {
fn()
}
func (a *agent) reportMetadata(ctx context.Context, aAPI proto.DRPCAgentClient24) error {
func (a *agent) reportMetadata(ctx context.Context, aAPI proto.DRPCAgentClient26) error {
tickerDone := make(chan struct{})
collectDone := make(chan struct{})
ctx, cancel := context.WithCancel(ctx)
@@ -539,7 +563,6 @@ func (a *agent) reportMetadata(ctx context.Context, aAPI proto.DRPCAgentClient24
// channel to synchronize the results and avoid both messy
// mutex logic and overloading the API.
for _, md := range manifest.Metadata {
md := md
// We send the result to the channel in the goroutine to avoid
// sending the same result multiple times. So, we don't care about
// the return values.
@@ -664,7 +687,7 @@ func (a *agent) reportMetadata(ctx context.Context, aAPI proto.DRPCAgentClient24
// reportLifecycle reports the current lifecycle state once. All state
// changes are reported in order.
func (a *agent) reportLifecycle(ctx context.Context, aAPI proto.DRPCAgentClient24) error {
func (a *agent) reportLifecycle(ctx context.Context, aAPI proto.DRPCAgentClient26) error {
for {
select {
case <-a.lifecycleUpdate:
@@ -744,7 +767,7 @@ func (a *agent) setLifecycle(state codersdk.WorkspaceAgentLifecycle) {
}
// reportConnectionsLoop reports connections to the agent for auditing.
func (a *agent) reportConnectionsLoop(ctx context.Context, aAPI proto.DRPCAgentClient24) error {
func (a *agent) reportConnectionsLoop(ctx context.Context, aAPI proto.DRPCAgentClient26) error {
for {
select {
case <-a.reportConnectionsUpdate:
@@ -767,11 +790,15 @@ func (a *agent) reportConnectionsLoop(ctx context.Context, aAPI proto.DRPCAgentC
logger.Debug(ctx, "reporting connection")
_, err := aAPI.ReportConnection(ctx, payload)
if err != nil {
return xerrors.Errorf("failed to report connection: %w", err)
// Do not fail the loop if we fail to report a connection, just
// log a warning.
// Related to https://github.com/coder/coder/issues/20194
logger.Warn(ctx, "failed to report connection to server", slog.Error(err))
// no continue here, we still need to remove it from the slice
} else {
logger.Debug(ctx, "successfully reported connection")
}
logger.Debug(ctx, "successfully reported connection")
// Remove the payload we sent.
a.reportConnectionsMu.Lock()
a.reportConnections[0] = nil // Release the pointer from the underlying array.
@@ -802,6 +829,13 @@ func (a *agent) reportConnection(id uuid.UUID, connectionType proto.Connection_T
ip = host
}
// If the IP is "localhost" (which it can be in some cases), set it to
// 127.0.0.1 instead.
// Related to https://github.com/coder/coder/issues/20194
if ip == "localhost" {
ip = "127.0.0.1"
}
a.reportConnectionsMu.Lock()
defer a.reportConnectionsMu.Unlock()
@@ -864,7 +898,7 @@ func (a *agent) reportConnection(id uuid.UUID, connectionType proto.Connection_T
// fetchServiceBannerLoop fetches the service banner on an interval. It will
// not be fetched immediately; the expectation is that it is primed elsewhere
// (and must be done before the session actually starts).
func (a *agent) fetchServiceBannerLoop(ctx context.Context, aAPI proto.DRPCAgentClient24) error {
func (a *agent) fetchServiceBannerLoop(ctx context.Context, aAPI proto.DRPCAgentClient26) error {
ticker := time.NewTicker(a.announcementBannersRefreshInterval)
defer ticker.Stop()
for {
@@ -900,14 +934,14 @@ func (a *agent) run() (retErr error) {
a.sessionToken.Store(&sessionToken)
// ConnectRPC returns the dRPC connection we use for the Agent and Tailnet v2+ APIs
aAPI, tAPI, err := a.client.ConnectRPC24(a.hardCtx)
aAPI, tAPI, err := a.client.ConnectRPC26(a.hardCtx)
if err != nil {
return err
}
defer func() {
cErr := aAPI.DRPCConn().Close()
if cErr != nil {
a.logger.Debug(a.hardCtx, "error closing drpc connection", slog.Error(err))
a.logger.Debug(a.hardCtx, "error closing drpc connection", slog.Error(cErr))
}
}()
@@ -917,7 +951,7 @@ func (a *agent) run() (retErr error) {
connMan := newAPIConnRoutineManager(a.gracefulCtx, a.hardCtx, a.logger, aAPI, tAPI)
connMan.startAgentAPI("init notification banners", gracefulShutdownBehaviorStop,
func(ctx context.Context, aAPI proto.DRPCAgentClient24) error {
func(ctx context.Context, aAPI proto.DRPCAgentClient26) error {
bannersProto, err := aAPI.GetAnnouncementBanners(ctx, &proto.GetAnnouncementBannersRequest{})
if err != nil {
return xerrors.Errorf("fetch service banner: %w", err)
@@ -934,9 +968,9 @@ func (a *agent) run() (retErr error) {
// sending logs gets gracefulShutdownBehaviorRemain because we want to send logs generated by
// shutdown scripts.
connMan.startAgentAPI("send logs", gracefulShutdownBehaviorRemain,
func(ctx context.Context, aAPI proto.DRPCAgentClient24) error {
func(ctx context.Context, aAPI proto.DRPCAgentClient26) error {
err := a.logSender.SendLoop(ctx, aAPI)
if xerrors.Is(err, agentsdk.LogLimitExceededError) {
if xerrors.Is(err, agentsdk.ErrLogLimitExceeded) {
// we don't want this error to tear down the API connection and propagate to the
// other routines that use the API. The LogSender has already dropped a warning
// log, so just return nil here.
@@ -953,7 +987,7 @@ func (a *agent) run() (retErr error) {
connMan.startAgentAPI("report metadata", gracefulShutdownBehaviorStop, a.reportMetadata)
// resources monitor can cease as soon as we start gracefully shutting down.
connMan.startAgentAPI("resources monitor", gracefulShutdownBehaviorStop, func(ctx context.Context, aAPI proto.DRPCAgentClient24) error {
connMan.startAgentAPI("resources monitor", gracefulShutdownBehaviorStop, func(ctx context.Context, aAPI proto.DRPCAgentClient26) error {
logger := a.logger.Named("resources_monitor")
clk := quartz.NewReal()
config, err := aAPI.GetResourcesMonitoringConfiguration(ctx, &proto.GetResourcesMonitoringConfigurationRequest{})
@@ -1000,7 +1034,7 @@ func (a *agent) run() (retErr error) {
connMan.startAgentAPI("handle manifest", gracefulShutdownBehaviorStop, a.handleManifest(manifestOK))
connMan.startAgentAPI("app health reporter", gracefulShutdownBehaviorStop,
func(ctx context.Context, aAPI proto.DRPCAgentClient24) error {
func(ctx context.Context, aAPI proto.DRPCAgentClient26) error {
if err := manifestOK.wait(ctx); err != nil {
return xerrors.Errorf("no manifest: %w", err)
}
@@ -1033,19 +1067,23 @@ func (a *agent) run() (retErr error) {
connMan.startAgentAPI("fetch service banner loop", gracefulShutdownBehaviorStop, a.fetchServiceBannerLoop)
connMan.startAgentAPI("stats report loop", gracefulShutdownBehaviorStop, func(ctx context.Context, aAPI proto.DRPCAgentClient24) error {
connMan.startAgentAPI("stats report loop", gracefulShutdownBehaviorStop, func(ctx context.Context, aAPI proto.DRPCAgentClient26) error {
if err := networkOK.wait(ctx); err != nil {
return xerrors.Errorf("no network: %w", err)
}
return a.statsReporter.reportLoop(ctx, aAPI)
})
return connMan.wait()
err = connMan.wait()
if err != nil {
a.logger.Info(context.Background(), "connection manager errored", slog.Error(err))
}
return err
}
// handleManifest returns a function that fetches and processes the manifest
func (a *agent) handleManifest(manifestOK *checkpoint) func(ctx context.Context, aAPI proto.DRPCAgentClient24) error {
return func(ctx context.Context, aAPI proto.DRPCAgentClient24) error {
func (a *agent) handleManifest(manifestOK *checkpoint) func(ctx context.Context, aAPI proto.DRPCAgentClient26) error {
return func(ctx context.Context, aAPI proto.DRPCAgentClient26) error {
var (
sentResult = false
err error
@@ -1059,7 +1097,7 @@ func (a *agent) handleManifest(manifestOK *checkpoint) func(ctx context.Context,
if err != nil {
return xerrors.Errorf("fetch metadata: %w", err)
}
a.logger.Info(ctx, "fetched manifest", slog.F("manifest", mp))
a.logger.Info(ctx, "fetched manifest")
manifest, err := agentsdk.ManifestFromProto(mp)
if err != nil {
a.logger.Critical(ctx, "failed to convert manifest", slog.F("manifest", mp), slog.Error(err))
@@ -1068,6 +1106,18 @@ func (a *agent) handleManifest(manifestOK *checkpoint) func(ctx context.Context,
if manifest.AgentID == uuid.Nil {
return xerrors.New("nil agentID returned by manifest")
}
if manifest.ParentID != uuid.Nil {
// This is a sub agent, disable all the features that should not
// be used by sub agents.
a.logger.Debug(ctx, "sub agent detected, disabling features",
slog.F("parent_id", manifest.ParentID),
slog.F("agent_id", manifest.AgentID),
)
if a.devcontainers {
a.logger.Info(ctx, "devcontainers are not supported on sub agents, disabling feature")
a.devcontainers = false
}
}
a.client.RewriteDERPMap(manifest.DERPMap)
// Expand the directory and send it back to coderd so external
@@ -1075,10 +1125,12 @@ func (a *agent) handleManifest(manifestOK *checkpoint) func(ctx context.Context,
//
// An example is VS Code Remote, which must know the directory
// before initializing a connection.
manifest.Directory, err = expandDirectory(manifest.Directory)
manifest.Directory, err = expandPathToAbs(manifest.Directory)
if err != nil {
return xerrors.Errorf("expand directory: %w", err)
}
// Normalize all devcontainer paths by making them absolute.
manifest.Devcontainers = agentcontainers.ExpandAllDevcontainerPaths(a.logger, expandPathToAbs, manifest.Devcontainers)
subsys, err := agentsdk.ProtoFromSubsystems(a.subsystems)
if err != nil {
a.logger.Critical(ctx, "failed to convert subsystems", slog.Error(err))
@@ -1115,16 +1167,56 @@ func (a *agent) handleManifest(manifestOK *checkpoint) func(ctx context.Context,
}
}
err = a.scriptRunner.Init(manifest.Scripts, aAPI.ScriptCompleted)
var (
scripts = manifest.Scripts
devcontainerScripts map[uuid.UUID]codersdk.WorkspaceAgentScript
)
if a.devcontainers {
// Init the container API with the manifest and client so that
// we can start accepting requests. The final start of the API
// happens after the startup scripts have been executed to
// ensure the presence of required tools. This means we can
// return existing devcontainers but actual container detection
// and creation will be deferred.
a.containerAPI.Init(
agentcontainers.WithManifestInfo(manifest.OwnerName, manifest.WorkspaceName, manifest.AgentName, manifest.Directory),
agentcontainers.WithDevcontainers(manifest.Devcontainers, manifest.Scripts),
agentcontainers.WithSubAgentClient(agentcontainers.NewSubAgentClientFromAPI(a.logger, aAPI)),
)
// Since devcontainer are enabled, remove devcontainer scripts
// from the main scripts list to avoid showing an error.
scripts, devcontainerScripts = agentcontainers.ExtractDevcontainerScripts(manifest.Devcontainers, scripts)
}
err = a.scriptRunner.Init(scripts, aAPI.ScriptCompleted)
if err != nil {
return xerrors.Errorf("init script runner: %w", err)
}
err = a.trackGoroutine(func() {
start := time.Now()
// here we use the graceful context because the script runner is not directly tied
// to the agent API.
// Here we use the graceful context because the script runner is
// not directly tied to the agent API.
//
// First we run the start scripts to ensure the workspace has
// been initialized and then the post start scripts which may
// depend on the workspace start scripts.
//
// Measure the time immediately after the start scripts have
// finished (both start and post start). For instance, an
// autostarted devcontainer will be included in this time.
err := a.scriptRunner.Execute(a.gracefulCtx, agentscripts.ExecuteStartScripts)
// Measure the time immediately after the script has finished
if a.devcontainers {
// Start the container API after the startup scripts have
// been executed to ensure that the required tools can be
// installed.
a.containerAPI.Start()
for _, dc := range manifest.Devcontainers {
cErr := a.createDevcontainer(ctx, aAPI, dc, devcontainerScripts[dc.ID])
err = errors.Join(err, cErr)
}
}
dur := time.Since(start).Seconds()
if err != nil {
a.logger.Warn(ctx, "startup script(s) failed", slog.Error(err))
@@ -1152,10 +1244,42 @@ func (a *agent) handleManifest(manifestOK *checkpoint) func(ctx context.Context,
}
}
func (a *agent) createDevcontainer(
ctx context.Context,
aAPI proto.DRPCAgentClient26,
dc codersdk.WorkspaceAgentDevcontainer,
script codersdk.WorkspaceAgentScript,
) (err error) {
var (
exitCode = int32(0)
startTime = a.clock.Now()
status = proto.Timing_OK
)
if err = a.containerAPI.CreateDevcontainer(dc.WorkspaceFolder, dc.ConfigPath); err != nil {
exitCode = 1
status = proto.Timing_EXIT_FAILURE
}
endTime := a.clock.Now()
if _, scriptErr := aAPI.ScriptCompleted(ctx, &proto.WorkspaceAgentScriptCompletedRequest{
Timing: &proto.Timing{
ScriptId: script.ID[:],
Start: timestamppb.New(startTime),
End: timestamppb.New(endTime),
ExitCode: exitCode,
Stage: proto.Timing_START,
Status: status,
},
}); scriptErr != nil {
a.logger.Warn(ctx, "reporting script completed failed", slog.Error(scriptErr))
}
return err
}
// createOrUpdateNetwork waits for the manifest to be set using manifestOK, then creates or updates
// the tailnet using the information in the manifest
func (a *agent) createOrUpdateNetwork(manifestOK, networkOK *checkpoint) func(context.Context, proto.DRPCAgentClient24) error {
return func(ctx context.Context, _ proto.DRPCAgentClient24) (retErr error) {
func (a *agent) createOrUpdateNetwork(manifestOK, networkOK *checkpoint) func(context.Context, proto.DRPCAgentClient26) error {
return func(ctx context.Context, aAPI proto.DRPCAgentClient26) (retErr error) {
if err := manifestOK.wait(ctx); err != nil {
return xerrors.Errorf("no manifest: %w", err)
}
@@ -1167,9 +1291,9 @@ func (a *agent) createOrUpdateNetwork(manifestOK, networkOK *checkpoint) func(co
network := a.network
a.closeMutex.Unlock()
if network == nil {
keySeed, err := WorkspaceKeySeed(manifest.WorkspaceID, manifest.AgentName)
keySeed, err := SSHKeySeed(manifest.OwnerName, manifest.WorkspaceName, manifest.AgentName)
if err != nil {
return xerrors.Errorf("generate seed from workspace id: %w", err)
return xerrors.Errorf("generate SSH key seed: %w", err)
}
// use the graceful context here, because creating the tailnet is not itself tied to the
// agent API.
@@ -1186,15 +1310,15 @@ func (a *agent) createOrUpdateNetwork(manifestOK, networkOK *checkpoint) func(co
}
a.closeMutex.Lock()
// Re-check if agent was closed while initializing the network.
closed := a.isClosed()
if !closed {
closing := a.closing
if !closing {
a.network = network
a.statsReporter = newStatsReporter(a.logger, network, a)
}
a.closeMutex.Unlock()
if closed {
if closing {
_ = network.Close()
return xerrors.New("agent is closed")
return xerrors.New("agent is closing")
}
} else {
// Update the wireguard IPs if the agent ID changed.
@@ -1207,6 +1331,12 @@ func (a *agent) createOrUpdateNetwork(manifestOK, networkOK *checkpoint) func(co
network.SetDERPMap(manifest.DERPMap)
network.SetDERPForceWebSockets(manifest.DERPForceWebSockets)
network.SetBlockEndpoints(manifest.DisableDirectConnections)
// Update the subagent client if the container API is available.
if a.containerAPI != nil {
client := agentcontainers.NewSubAgentClientFromAPI(a.logger, aAPI)
a.containerAPI.UpdateSubAgentClient(client)
}
}
return nil
}
@@ -1237,6 +1367,7 @@ func (a *agent) updateCommandEnv(current []string) (updated []string, err error)
"CODER": "true",
"CODER_WORKSPACE_NAME": manifest.WorkspaceName,
"CODER_WORKSPACE_AGENT_NAME": manifest.AgentName,
"CODER_WORKSPACE_OWNER_NAME": manifest.OwnerName,
// Specific Coder subcommands require the agent token exposed!
"CODER_AGENT_TOKEN": *a.sessionToken.Load(),
@@ -1309,8 +1440,8 @@ func (*agent) wireguardAddresses(agentID uuid.UUID) []netip.Prefix {
func (a *agent) trackGoroutine(fn func()) error {
a.closeMutex.Lock()
defer a.closeMutex.Unlock()
if a.isClosed() {
return xerrors.New("track conn goroutine: agent is closed")
if a.closing {
return xerrors.New("track conn goroutine: agent is closing")
}
a.closeWaitGroup.Add(1)
go func() {
@@ -1389,7 +1520,7 @@ func (a *agent) createTailnet(
if rPTYServeErr != nil &&
a.gracefulCtx.Err() == nil &&
!strings.Contains(rPTYServeErr.Error(), "use of closed network connection") {
a.logger.Error(ctx, "error serving reconnecting PTY", slog.Error(err))
a.logger.Error(ctx, "error serving reconnecting PTY", slog.Error(rPTYServeErr))
}
}); err != nil {
return nil, err
@@ -1454,8 +1585,10 @@ func (a *agent) createTailnet(
}()
if err = a.trackGoroutine(func() {
defer apiListener.Close()
apiHandler := a.apiHandler()
server := &http.Server{
Handler: a.apiHandler(),
BaseContext: func(net.Listener) context.Context { return ctx },
Handler: apiHandler,
ReadTimeout: 20 * time.Second,
ReadHeaderTimeout: 20 * time.Second,
WriteTimeout: 20 * time.Second,
@@ -1499,14 +1632,11 @@ func (a *agent) runCoordinator(ctx context.Context, tClient tailnetproto.DRPCTai
a.logger.Info(ctx, "connected to coordination RPC")
// This allows the Close() routine to wait for the coordinator to gracefully disconnect.
a.closeMutex.Lock()
if a.isClosed() {
return nil
disconnected := a.setCoordDisconnected()
if disconnected == nil {
return nil // already closed by something else
}
disconnected := make(chan struct{})
a.coordDisconnected = disconnected
defer close(disconnected)
a.closeMutex.Unlock()
ctrl := tailnet.NewAgentCoordinationController(a.logger, network)
coordination := ctrl.New(coordinate)
@@ -1528,6 +1658,17 @@ func (a *agent) runCoordinator(ctx context.Context, tClient tailnetproto.DRPCTai
return <-errCh
}
func (a *agent) setCoordDisconnected() chan struct{} {
a.closeMutex.Lock()
defer a.closeMutex.Unlock()
if a.closing {
return nil
}
disconnected := make(chan struct{})
a.coordDisconnected = disconnected
return disconnected
}
// runDERPMapSubscriber runs a coordinator and returns if a reconnect should occur.
func (a *agent) runDERPMapSubscriber(ctx context.Context, tClient tailnetproto.DRPCTailnetClient24, network *tailnet.Conn) error {
defer a.logger.Debug(ctx, "disconnected from derp map RPC")
@@ -1564,9 +1705,13 @@ func (a *agent) Collect(ctx context.Context, networkStats map[netlogtype.Connect
}
for conn, counts := range networkStats {
stats.ConnectionsByProto[conn.Proto.String()]++
// #nosec G115 - Safe conversions for network statistics which we expect to be within int64 range
stats.RxBytes += int64(counts.RxBytes)
// #nosec G115 - Safe conversions for network statistics which we expect to be within int64 range
stats.RxPackets += int64(counts.RxPackets)
// #nosec G115 - Safe conversions for network statistics which we expect to be within int64 range
stats.TxBytes += int64(counts.TxBytes)
// #nosec G115 - Safe conversions for network statistics which we expect to be within int64 range
stats.TxPackets += int64(counts.TxPackets)
}
@@ -1619,11 +1764,12 @@ func (a *agent) Collect(ctx context.Context, networkStats map[netlogtype.Connect
wg.Wait()
sort.Float64s(durations)
durationsLength := len(durations)
if durationsLength == 0 {
switch {
case durationsLength == 0:
stats.ConnectionMedianLatencyMs = -1
} else if durationsLength%2 == 0 {
case durationsLength%2 == 0:
stats.ConnectionMedianLatencyMs = (durations[durationsLength/2-1] + durations[durationsLength/2]) / 2
} else {
default:
stats.ConnectionMedianLatencyMs = durations[durationsLength/2]
}
// Convert from microseconds to milliseconds.
@@ -1730,7 +1876,7 @@ func (a *agent) HTTPDebug() http.Handler {
r.Get("/debug/magicsock", a.HandleHTTPDebugMagicsock)
r.Get("/debug/magicsock/debug-logging/{state}", a.HandleHTTPMagicsockDebugLoggingState)
r.Get("/debug/manifest", a.HandleHTTPDebugManifest)
r.NotFound(func(w http.ResponseWriter, r *http.Request) {
r.NotFound(func(w http.ResponseWriter, _ *http.Request) {
w.WriteHeader(http.StatusNotFound)
_, _ = w.Write([]byte("404 not found"))
})
@@ -1740,7 +1886,10 @@ func (a *agent) HTTPDebug() http.Handler {
func (a *agent) Close() error {
a.closeMutex.Lock()
defer a.closeMutex.Unlock()
network := a.network
coordDisconnected := a.coordDisconnected
a.closing = true
a.closeMutex.Unlock()
if a.isClosed() {
return nil
}
@@ -1749,15 +1898,22 @@ func (a *agent) Close() error {
a.setLifecycle(codersdk.WorkspaceAgentLifecycleShuttingDown)
// Attempt to gracefully shut down all active SSH connections and
// stop accepting new ones.
err := a.sshServer.Shutdown(a.hardCtx)
// stop accepting new ones. If all processes have not exited after 5
// seconds, we just log it and move on as it's more important to run
// the shutdown scripts. A typical shutdown time for containers is
// 10 seconds, so this still leaves a bit of time to run the
// shutdown scripts in the worst-case.
sshShutdownCtx, sshShutdownCancel := context.WithTimeout(a.hardCtx, 5*time.Second)
defer sshShutdownCancel()
err := a.sshServer.Shutdown(sshShutdownCtx)
if err != nil {
a.logger.Error(a.hardCtx, "ssh server shutdown", slog.Error(err))
}
err = a.sshServer.Close()
if err != nil {
a.logger.Error(a.hardCtx, "ssh server close", slog.Error(err))
if errors.Is(err, context.DeadlineExceeded) {
a.logger.Warn(sshShutdownCtx, "ssh server shutdown timeout", slog.Error(err))
} else {
a.logger.Error(sshShutdownCtx, "ssh server shutdown", slog.Error(err))
}
}
// wait for SSH to shut down before the general graceful cancel, because
// this triggers a disconnect in the tailnet layer, telling all clients to
// shut down their wireguard tunnels to us. If SSH sessions are still up,
@@ -1781,6 +1937,10 @@ func (a *agent) Close() error {
a.logger.Error(a.hardCtx, "script runner close", slog.Error(err))
}
if err := a.containerAPI.Close(); err != nil {
a.logger.Error(a.hardCtx, "container API close", slog.Error(err))
}
// Wait for the graceful shutdown to complete, but don't wait forever so
// that we don't break user expectations.
go func() {
@@ -1810,7 +1970,7 @@ lifecycleWaitLoop:
select {
case <-a.hardCtx.Done():
a.logger.Warn(context.Background(), "timed out waiting for Coordinator RPC disconnect")
case <-a.coordDisconnected:
case <-coordDisconnected:
a.logger.Debug(context.Background(), "coordinator RPC disconnected")
}
@@ -1821,8 +1981,8 @@ lifecycleWaitLoop:
}
a.hardCancel()
if a.network != nil {
_ = a.network.Close()
if network != nil {
_ = network.Close()
}
a.closeWaitGroup.Wait()
@@ -1846,30 +2006,29 @@ func userHomeDir() (string, error) {
return u.HomeDir, nil
}
// expandDirectory converts a directory path to an absolute path.
// It primarily resolves the home directory and any environment
// variables that may be set
func expandDirectory(dir string) (string, error) {
if dir == "" {
// expandPathToAbs converts a path to an absolute path. It primarily resolves
// the home directory and any environment variables that may be set.
func expandPathToAbs(path string) (string, error) {
if path == "" {
return "", nil
}
if dir[0] == '~' {
if path[0] == '~' {
home, err := userHomeDir()
if err != nil {
return "", err
}
dir = filepath.Join(home, dir[1:])
path = filepath.Join(home, path[1:])
}
dir = os.ExpandEnv(dir)
path = os.ExpandEnv(path)
if !filepath.IsAbs(dir) {
if !filepath.IsAbs(path) {
home, err := userHomeDir()
if err != nil {
return "", err
}
dir = filepath.Join(home, dir)
path = filepath.Join(home, path)
}
return dir, nil
return path, nil
}
// EnvAgentSubsystem is the environment variable used to denote the
@@ -1899,7 +2058,7 @@ const (
type apiConnRoutineManager struct {
logger slog.Logger
aAPI proto.DRPCAgentClient24
aAPI proto.DRPCAgentClient26
tAPI tailnetproto.DRPCTailnetClient24
eg *errgroup.Group
stopCtx context.Context
@@ -1908,7 +2067,7 @@ type apiConnRoutineManager struct {
func newAPIConnRoutineManager(
gracefulCtx, hardCtx context.Context, logger slog.Logger,
aAPI proto.DRPCAgentClient24, tAPI tailnetproto.DRPCTailnetClient24,
aAPI proto.DRPCAgentClient26, tAPI tailnetproto.DRPCTailnetClient24,
) *apiConnRoutineManager {
// routines that remain in operation during graceful shutdown use the remainCtx. They'll still
// exit if the errgroup hits an error, which usually means a problem with the conn.
@@ -1941,7 +2100,7 @@ func newAPIConnRoutineManager(
// but for Tailnet.
func (a *apiConnRoutineManager) startAgentAPI(
name string, behavior gracefulShutdownBehavior,
f func(context.Context, proto.DRPCAgentClient24) error,
f func(context.Context, proto.DRPCAgentClient26) error,
) {
logger := a.logger.With(slog.F("name", name))
var ctx context.Context
@@ -2016,7 +2175,7 @@ func (a *apiConnRoutineManager) wait() error {
}
func PrometheusMetricsHandler(prometheusRegistry *prometheus.Registry, logger slog.Logger) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
return http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
w.Header().Set("Content-Type", "text/plain")
// Based on: https://github.com/tailscale/tailscale/blob/280255acae604796a1113861f5a84e6fa2dc6121/ipn/localapi/localapi.go#L489
@@ -2038,12 +2197,31 @@ func PrometheusMetricsHandler(prometheusRegistry *prometheus.Registry, logger sl
})
}
// WorkspaceKeySeed converts a WorkspaceID UUID and agent name to an int64 hash.
// SSHKeySeed converts an owner userName, workspaceName and agentName to an int64 hash.
// This uses the FNV-1a hash algorithm which provides decent distribution and collision
// resistance for string inputs.
func WorkspaceKeySeed(workspaceID uuid.UUID, agentName string) (int64, error) {
//
// Why owner username, workspace name, and agent name? These are the components that are used in hostnames for the
// workspace over SSH, and so we want the workspace to have a stable key with respect to these. We don't use the
// respective UUIDs. The workspace UUID would be different if you delete and recreate a workspace with the same name.
// The agent UUID is regenerated on each build. Since Coder's Tailnet networking is handling the authentication, we
// should not be showing users warnings about host SSH keys.
func SSHKeySeed(userName, workspaceName, agentName string) (int64, error) {
h := fnv.New64a()
_, err := h.Write(workspaceID[:])
_, err := h.Write([]byte(userName))
if err != nil {
return 42, err
}
// null separators between strings so that (dog, foodstuff) is distinct from (dogfood, stuff)
_, err = h.Write([]byte{0})
if err != nil {
return 42, err
}
_, err = h.Write([]byte(workspaceName))
if err != nil {
return 42, err
}
_, err = h.Write([]byte{0})
if err != nil {
return 42, err
}
@@ -2052,5 +2230,6 @@ func WorkspaceKeySeed(workspaceID uuid.UUID, agentName string) (int64, error) {
return 42, err
}
// #nosec G115 - Safe conversion to generate int64 hash from Sum64, data loss acceptable
return int64(h.Sum64()), nil
}
+843 -99
View File
File diff suppressed because it is too large Load Diff
+149 -16
View File
@@ -1,9 +1,9 @@
// Code generated by MockGen. DO NOT EDIT.
// Source: .. (interfaces: Lister)
// Source: .. (interfaces: ContainerCLI,DevcontainerCLI)
//
// Generated by this command:
//
// mockgen -destination ./acmock.go -package acmock .. Lister
// mockgen -destination ./acmock.go -package acmock .. ContainerCLI,DevcontainerCLI
//
// Package acmock is a generated GoMock package.
@@ -13,36 +13,86 @@ import (
context "context"
reflect "reflect"
agentcontainers "github.com/coder/coder/v2/agent/agentcontainers"
codersdk "github.com/coder/coder/v2/codersdk"
gomock "go.uber.org/mock/gomock"
)
// MockLister is a mock of Lister interface.
type MockLister struct {
// MockContainerCLI is a mock of ContainerCLI interface.
type MockContainerCLI struct {
ctrl *gomock.Controller
recorder *MockListerMockRecorder
recorder *MockContainerCLIMockRecorder
isgomock struct{}
}
// MockListerMockRecorder is the mock recorder for MockLister.
type MockListerMockRecorder struct {
mock *MockLister
// MockContainerCLIMockRecorder is the mock recorder for MockContainerCLI.
type MockContainerCLIMockRecorder struct {
mock *MockContainerCLI
}
// NewMockLister creates a new mock instance.
func NewMockLister(ctrl *gomock.Controller) *MockLister {
mock := &MockLister{ctrl: ctrl}
mock.recorder = &MockListerMockRecorder{mock}
// NewMockContainerCLI creates a new mock instance.
func NewMockContainerCLI(ctrl *gomock.Controller) *MockContainerCLI {
mock := &MockContainerCLI{ctrl: ctrl}
mock.recorder = &MockContainerCLIMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use.
func (m *MockLister) EXPECT() *MockListerMockRecorder {
func (m *MockContainerCLI) EXPECT() *MockContainerCLIMockRecorder {
return m.recorder
}
// Copy mocks base method.
func (m *MockContainerCLI) Copy(ctx context.Context, containerName, src, dst string) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Copy", ctx, containerName, src, dst)
ret0, _ := ret[0].(error)
return ret0
}
// Copy indicates an expected call of Copy.
func (mr *MockContainerCLIMockRecorder) Copy(ctx, containerName, src, dst any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Copy", reflect.TypeOf((*MockContainerCLI)(nil).Copy), ctx, containerName, src, dst)
}
// DetectArchitecture mocks base method.
func (m *MockContainerCLI) DetectArchitecture(ctx context.Context, containerName string) (string, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "DetectArchitecture", ctx, containerName)
ret0, _ := ret[0].(string)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// DetectArchitecture indicates an expected call of DetectArchitecture.
func (mr *MockContainerCLIMockRecorder) DetectArchitecture(ctx, containerName any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DetectArchitecture", reflect.TypeOf((*MockContainerCLI)(nil).DetectArchitecture), ctx, containerName)
}
// ExecAs mocks base method.
func (m *MockContainerCLI) ExecAs(ctx context.Context, containerName, user string, args ...string) ([]byte, error) {
m.ctrl.T.Helper()
varargs := []any{ctx, containerName, user}
for _, a := range args {
varargs = append(varargs, a)
}
ret := m.ctrl.Call(m, "ExecAs", varargs...)
ret0, _ := ret[0].([]byte)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// ExecAs indicates an expected call of ExecAs.
func (mr *MockContainerCLIMockRecorder) ExecAs(ctx, containerName, user any, args ...any) *gomock.Call {
mr.mock.ctrl.T.Helper()
varargs := append([]any{ctx, containerName, user}, args...)
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExecAs", reflect.TypeOf((*MockContainerCLI)(nil).ExecAs), varargs...)
}
// List mocks base method.
func (m *MockLister) List(ctx context.Context) (codersdk.WorkspaceAgentListContainersResponse, error) {
func (m *MockContainerCLI) List(ctx context.Context) (codersdk.WorkspaceAgentListContainersResponse, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "List", ctx)
ret0, _ := ret[0].(codersdk.WorkspaceAgentListContainersResponse)
@@ -51,7 +101,90 @@ func (m *MockLister) List(ctx context.Context) (codersdk.WorkspaceAgentListConta
}
// List indicates an expected call of List.
func (mr *MockListerMockRecorder) List(ctx any) *gomock.Call {
func (mr *MockContainerCLIMockRecorder) List(ctx any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockLister)(nil).List), ctx)
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockContainerCLI)(nil).List), ctx)
}
// MockDevcontainerCLI is a mock of DevcontainerCLI interface.
type MockDevcontainerCLI struct {
ctrl *gomock.Controller
recorder *MockDevcontainerCLIMockRecorder
isgomock struct{}
}
// MockDevcontainerCLIMockRecorder is the mock recorder for MockDevcontainerCLI.
type MockDevcontainerCLIMockRecorder struct {
mock *MockDevcontainerCLI
}
// NewMockDevcontainerCLI creates a new mock instance.
func NewMockDevcontainerCLI(ctrl *gomock.Controller) *MockDevcontainerCLI {
mock := &MockDevcontainerCLI{ctrl: ctrl}
mock.recorder = &MockDevcontainerCLIMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use.
func (m *MockDevcontainerCLI) EXPECT() *MockDevcontainerCLIMockRecorder {
return m.recorder
}
// Exec mocks base method.
func (m *MockDevcontainerCLI) Exec(ctx context.Context, workspaceFolder, configPath, cmd string, cmdArgs []string, opts ...agentcontainers.DevcontainerCLIExecOptions) error {
m.ctrl.T.Helper()
varargs := []any{ctx, workspaceFolder, configPath, cmd, cmdArgs}
for _, a := range opts {
varargs = append(varargs, a)
}
ret := m.ctrl.Call(m, "Exec", varargs...)
ret0, _ := ret[0].(error)
return ret0
}
// Exec indicates an expected call of Exec.
func (mr *MockDevcontainerCLIMockRecorder) Exec(ctx, workspaceFolder, configPath, cmd, cmdArgs any, opts ...any) *gomock.Call {
mr.mock.ctrl.T.Helper()
varargs := append([]any{ctx, workspaceFolder, configPath, cmd, cmdArgs}, opts...)
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Exec", reflect.TypeOf((*MockDevcontainerCLI)(nil).Exec), varargs...)
}
// ReadConfig mocks base method.
func (m *MockDevcontainerCLI) ReadConfig(ctx context.Context, workspaceFolder, configPath string, env []string, opts ...agentcontainers.DevcontainerCLIReadConfigOptions) (agentcontainers.DevcontainerConfig, error) {
m.ctrl.T.Helper()
varargs := []any{ctx, workspaceFolder, configPath, env}
for _, a := range opts {
varargs = append(varargs, a)
}
ret := m.ctrl.Call(m, "ReadConfig", varargs...)
ret0, _ := ret[0].(agentcontainers.DevcontainerConfig)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// ReadConfig indicates an expected call of ReadConfig.
func (mr *MockDevcontainerCLIMockRecorder) ReadConfig(ctx, workspaceFolder, configPath, env any, opts ...any) *gomock.Call {
mr.mock.ctrl.T.Helper()
varargs := append([]any{ctx, workspaceFolder, configPath, env}, opts...)
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReadConfig", reflect.TypeOf((*MockDevcontainerCLI)(nil).ReadConfig), varargs...)
}
// Up mocks base method.
func (m *MockDevcontainerCLI) Up(ctx context.Context, workspaceFolder, configPath string, opts ...agentcontainers.DevcontainerCLIUpOptions) (string, error) {
m.ctrl.T.Helper()
varargs := []any{ctx, workspaceFolder, configPath}
for _, a := range opts {
varargs = append(varargs, a)
}
ret := m.ctrl.Call(m, "Up", varargs...)
ret0, _ := ret[0].(string)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// Up indicates an expected call of Up.
func (mr *MockDevcontainerCLIMockRecorder) Up(ctx, workspaceFolder, configPath any, opts ...any) *gomock.Call {
mr.mock.ctrl.T.Helper()
varargs := append([]any{ctx, workspaceFolder, configPath}, opts...)
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Up", reflect.TypeOf((*MockDevcontainerCLI)(nil).Up), varargs...)
}
+1 -1
View File
@@ -1,4 +1,4 @@
// Package acmock contains a mock implementation of agentcontainers.Lister for use in tests.
package acmock
//go:generate mockgen -destination ./acmock.go -package acmock .. Lister
//go:generate mockgen -destination ./acmock.go -package acmock .. ContainerCLI,DevcontainerCLI
File diff suppressed because it is too large Load Diff
+358
View File
@@ -0,0 +1,358 @@
package agentcontainers
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/coder/coder/v2/provisioner"
)
func TestSafeAgentName(t *testing.T) {
t.Parallel()
tests := []struct {
name string
folderName string
expected string
fallback bool
}{
// Basic valid names
{
folderName: "simple",
expected: "simple",
},
{
folderName: "with-hyphens",
expected: "with-hyphens",
},
{
folderName: "123numbers",
expected: "123numbers",
},
{
folderName: "mixed123",
expected: "mixed123",
},
// Names that need transformation
{
folderName: "With_Underscores",
expected: "with-underscores",
},
{
folderName: "With Spaces",
expected: "with-spaces",
},
{
folderName: "UPPERCASE",
expected: "uppercase",
},
{
folderName: "Mixed_Case-Name",
expected: "mixed-case-name",
},
// Names with special characters that get replaced
{
folderName: "special@#$chars",
expected: "special-chars",
},
{
folderName: "dots.and.more",
expected: "dots-and-more",
},
{
folderName: "multiple___underscores",
expected: "multiple-underscores",
},
{
folderName: "multiple---hyphens",
expected: "multiple-hyphens",
},
// Edge cases with leading/trailing special chars
{
folderName: "-leading-hyphen",
expected: "leading-hyphen",
},
{
folderName: "trailing-hyphen-",
expected: "trailing-hyphen",
},
{
folderName: "_leading_underscore",
expected: "leading-underscore",
},
{
folderName: "trailing_underscore_",
expected: "trailing-underscore",
},
{
folderName: "---multiple-leading",
expected: "multiple-leading",
},
{
folderName: "trailing-multiple---",
expected: "trailing-multiple",
},
// Complex transformation cases
{
folderName: "___very---complex@@@name___",
expected: "very-complex-name",
},
{
folderName: "my.project-folder_v2",
expected: "my-project-folder-v2",
},
// Empty and fallback cases - now correctly uses friendlyName fallback
{
folderName: "",
expected: "friendly-fallback",
fallback: true,
},
{
folderName: "---",
expected: "friendly-fallback",
fallback: true,
},
{
folderName: "___",
expected: "friendly-fallback",
fallback: true,
},
{
folderName: "@#$",
expected: "friendly-fallback",
fallback: true,
},
// Additional edge cases
{
folderName: "a",
expected: "a",
},
{
folderName: "1",
expected: "1",
},
{
folderName: "a1b2c3",
expected: "a1b2c3",
},
{
folderName: "CamelCase",
expected: "camelcase",
},
{
folderName: "snake_case_name",
expected: "snake-case-name",
},
{
folderName: "kebab-case-name",
expected: "kebab-case-name",
},
{
folderName: "mix3d_C4s3-N4m3",
expected: "mix3d-c4s3-n4m3",
},
{
folderName: "123-456-789",
expected: "123-456-789",
},
{
folderName: "abc123def456",
expected: "abc123def456",
},
{
folderName: " spaces everywhere ",
expected: "spaces-everywhere",
},
{
folderName: "unicode-café-naïve",
expected: "unicode-caf-na-ve",
},
{
folderName: "path/with/slashes",
expected: "path-with-slashes",
},
{
folderName: "file.tar.gz",
expected: "file-tar-gz",
},
{
folderName: "version-1.2.3-alpha",
expected: "version-1-2-3-alpha",
},
// Truncation test for names exceeding 64 characters
{
folderName: "this-is-a-very-long-folder-name-that-exceeds-sixty-four-characters-limit-and-should-be-truncated",
expected: "this-is-a-very-long-folder-name-that-exceeds-sixty-four-characte",
},
}
for _, tt := range tests {
t.Run(tt.folderName, func(t *testing.T) {
t.Parallel()
name, usingWorkspaceFolder := safeAgentName(tt.folderName, "friendly-fallback")
assert.Equal(t, tt.expected, name)
assert.True(t, provisioner.AgentNameRegex.Match([]byte(name)))
assert.Equal(t, tt.fallback, !usingWorkspaceFolder)
})
}
}
func TestExpandedAgentName(t *testing.T) {
t.Parallel()
tests := []struct {
name string
workspaceFolder string
friendlyName string
depth int
expected string
fallback bool
}{
{
name: "simple path depth 1",
workspaceFolder: "/home/coder/project",
friendlyName: "friendly-fallback",
depth: 0,
expected: "project",
},
{
name: "simple path depth 2",
workspaceFolder: "/home/coder/project",
friendlyName: "friendly-fallback",
depth: 1,
expected: "coder-project",
},
{
name: "simple path depth 3",
workspaceFolder: "/home/coder/project",
friendlyName: "friendly-fallback",
depth: 2,
expected: "home-coder-project",
},
{
name: "simple path depth exceeds available",
workspaceFolder: "/home/coder/project",
friendlyName: "friendly-fallback",
depth: 9,
expected: "home-coder-project",
},
// Cases with special characters that need sanitization
{
name: "path with spaces and special chars",
workspaceFolder: "/home/coder/My Project_v2",
friendlyName: "friendly-fallback",
depth: 1,
expected: "coder-my-project-v2",
},
{
name: "path with dots and underscores",
workspaceFolder: "/home/user.name/project_folder.git",
friendlyName: "friendly-fallback",
depth: 1,
expected: "user-name-project-folder-git",
},
// Edge cases
{
name: "empty path",
workspaceFolder: "",
friendlyName: "friendly-fallback",
depth: 0,
expected: "friendly-fallback",
fallback: true,
},
{
name: "root path",
workspaceFolder: "/",
friendlyName: "friendly-fallback",
depth: 0,
expected: "friendly-fallback",
fallback: true,
},
{
name: "single component",
workspaceFolder: "project",
friendlyName: "friendly-fallback",
depth: 0,
expected: "project",
},
{
name: "single component with depth 2",
workspaceFolder: "project",
friendlyName: "friendly-fallback",
depth: 1,
expected: "project",
},
// Collision simulation cases
{
name: "foo/project depth 1",
workspaceFolder: "/home/coder/foo/project",
friendlyName: "friendly-fallback",
depth: 0,
expected: "project",
},
{
name: "foo/project depth 2",
workspaceFolder: "/home/coder/foo/project",
friendlyName: "friendly-fallback",
depth: 1,
expected: "foo-project",
},
{
name: "bar/project depth 1",
workspaceFolder: "/home/coder/bar/project",
friendlyName: "friendly-fallback",
depth: 0,
expected: "project",
},
{
name: "bar/project depth 2",
workspaceFolder: "/home/coder/bar/project",
friendlyName: "friendly-fallback",
depth: 1,
expected: "bar-project",
},
// Path with trailing slashes
{
name: "path with trailing slash",
workspaceFolder: "/home/coder/project/",
friendlyName: "friendly-fallback",
depth: 1,
expected: "coder-project",
},
{
name: "path with multiple trailing slashes",
workspaceFolder: "/home/coder/project///",
friendlyName: "friendly-fallback",
depth: 1,
expected: "coder-project",
},
// Path with leading slashes
{
name: "path with multiple leading slashes",
workspaceFolder: "///home/coder/project",
friendlyName: "friendly-fallback",
depth: 1,
expected: "coder-project",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
name, usingWorkspaceFolder := expandedAgentName(tt.workspaceFolder, tt.friendlyName, tt.depth)
assert.Equal(t, tt.expected, name)
assert.True(t, provisioner.AgentNameRegex.Match([]byte(name)))
assert.Equal(t, tt.fallback, !usingWorkspaceFolder)
})
}
}
File diff suppressed because it is too large Load Diff
+20 -134
View File
@@ -2,150 +2,36 @@ package agentcontainers
import (
"context"
"errors"
"net/http"
"slices"
"time"
"golang.org/x/xerrors"
"github.com/coder/coder/v2/coderd/httpapi"
"github.com/coder/coder/v2/codersdk"
"github.com/coder/quartz"
)
const (
defaultGetContainersCacheDuration = 10 * time.Second
dockerCreatedAtTimeFormat = "2006-01-02 15:04:05 -0700 MST"
getContainersTimeout = 5 * time.Second
)
type devcontainersHandler struct {
cacheDuration time.Duration
cl Lister
clock quartz.Clock
// lockCh protects the below fields. We use a channel instead of a mutex so we
// can handle cancellation properly.
lockCh chan struct{}
containers *codersdk.WorkspaceAgentListContainersResponse
mtime time.Time
}
// Option is a functional option for devcontainersHandler.
type Option func(*devcontainersHandler)
// WithLister sets the agentcontainers.Lister implementation to use.
// The default implementation uses the Docker CLI to list containers.
func WithLister(cl Lister) Option {
return func(ch *devcontainersHandler) {
ch.cl = cl
}
}
// New returns a new devcontainersHandler with the given options applied.
func New(options ...Option) http.Handler {
ch := &devcontainersHandler{
lockCh: make(chan struct{}, 1),
}
for _, opt := range options {
opt(ch)
}
return ch
}
func (ch *devcontainersHandler) ServeHTTP(rw http.ResponseWriter, r *http.Request) {
select {
case <-r.Context().Done():
// Client went away.
return
default:
ct, err := ch.getContainers(r.Context())
if err != nil {
if errors.Is(err, context.Canceled) {
httpapi.Write(r.Context(), rw, http.StatusRequestTimeout, codersdk.Response{
Message: "Could not get containers.",
Detail: "Took too long to list containers.",
})
return
}
httpapi.Write(r.Context(), rw, http.StatusInternalServerError, codersdk.Response{
Message: "Could not get containers.",
Detail: err.Error(),
})
return
}
httpapi.Write(r.Context(), rw, http.StatusOK, ct)
}
}
func (ch *devcontainersHandler) getContainers(ctx context.Context) (codersdk.WorkspaceAgentListContainersResponse, error) {
select {
case <-ctx.Done():
return codersdk.WorkspaceAgentListContainersResponse{}, ctx.Err()
default:
ch.lockCh <- struct{}{}
}
defer func() {
<-ch.lockCh
}()
// make zero-value usable
if ch.cacheDuration == 0 {
ch.cacheDuration = defaultGetContainersCacheDuration
}
if ch.cl == nil {
ch.cl = &DockerCLILister{}
}
if ch.containers == nil {
ch.containers = &codersdk.WorkspaceAgentListContainersResponse{}
}
if ch.clock == nil {
ch.clock = quartz.NewReal()
}
now := ch.clock.Now()
if now.Sub(ch.mtime) < ch.cacheDuration {
// Return a copy of the cached data to avoid accidental modification by the caller.
cpy := codersdk.WorkspaceAgentListContainersResponse{
Containers: slices.Clone(ch.containers.Containers),
Warnings: slices.Clone(ch.containers.Warnings),
}
return cpy, nil
}
timeoutCtx, timeoutCancel := context.WithTimeout(ctx, getContainersTimeout)
defer timeoutCancel()
updated, err := ch.cl.List(timeoutCtx)
if err != nil {
return codersdk.WorkspaceAgentListContainersResponse{}, xerrors.Errorf("get containers: %w", err)
}
ch.containers = &updated
ch.mtime = now
// Return a copy of the cached data to avoid accidental modification by the
// caller.
cpy := codersdk.WorkspaceAgentListContainersResponse{
Containers: slices.Clone(ch.containers.Containers),
Warnings: slices.Clone(ch.containers.Warnings),
}
return cpy, nil
}
// Lister is an interface for listing containers visible to the
// workspace agent.
type Lister interface {
// ContainerCLI is an interface for interacting with containers in a workspace.
type ContainerCLI interface {
// List returns a list of containers visible to the workspace agent.
// This should include running and stopped containers.
List(ctx context.Context) (codersdk.WorkspaceAgentListContainersResponse, error)
// DetectArchitecture detects the architecture of a container.
DetectArchitecture(ctx context.Context, containerName string) (string, error)
// Copy copies a file from the host to a container.
Copy(ctx context.Context, containerName, src, dst string) error
// ExecAs executes a command in a container as a specific user.
ExecAs(ctx context.Context, containerName, user string, args ...string) ([]byte, error)
}
// NoopLister is a Lister interface that never returns any containers.
type NoopLister struct{}
// noopContainerCLI is a ContainerCLI that does nothing.
type noopContainerCLI struct{}
var _ Lister = NoopLister{}
var _ ContainerCLI = noopContainerCLI{}
func (NoopLister) List(_ context.Context) (codersdk.WorkspaceAgentListContainersResponse, error) {
func (noopContainerCLI) List(_ context.Context) (codersdk.WorkspaceAgentListContainersResponse, error) {
return codersdk.WorkspaceAgentListContainersResponse{}, nil
}
func (noopContainerCLI) DetectArchitecture(_ context.Context, _ string) (string, error) {
return "<none>", nil
}
func (noopContainerCLI) Copy(_ context.Context, _ string, _ string, _ string) error { return nil }
func (noopContainerCLI) ExecAs(_ context.Context, _ string, _ string, _ ...string) ([]byte, error) {
return nil, nil
}
+108 -30
View File
@@ -14,29 +14,16 @@ import (
"strings"
"time"
"golang.org/x/exp/maps"
"golang.org/x/xerrors"
"github.com/coder/coder/v2/agent/agentcontainers/dcspec"
"github.com/coder/coder/v2/agent/agentexec"
"github.com/coder/coder/v2/agent/usershell"
"github.com/coder/coder/v2/coderd/util/ptr"
"github.com/coder/coder/v2/codersdk"
"golang.org/x/exp/maps"
"golang.org/x/xerrors"
)
// DockerCLILister is a ContainerLister that lists containers using the docker CLI
type DockerCLILister struct {
execer agentexec.Execer
}
var _ Lister = &DockerCLILister{}
func NewDocker(execer agentexec.Execer) Lister {
return &DockerCLILister{
execer: agentexec.DefaultExecer,
}
}
// DockerEnvInfoer is an implementation of agentssh.EnvInfoer that returns
// information about a container.
type DockerEnvInfoer struct {
@@ -241,10 +228,23 @@ func run(ctx context.Context, execer agentexec.Execer, cmd string, args ...strin
return stdout, stderr, err
}
func (dcl *DockerCLILister) List(ctx context.Context) (codersdk.WorkspaceAgentListContainersResponse, error) {
// dockerCLI is an implementation for Docker CLI that lists containers.
type dockerCLI struct {
execer agentexec.Execer
}
var _ ContainerCLI = (*dockerCLI)(nil)
func NewDockerCLI(execer agentexec.Execer) ContainerCLI {
return &dockerCLI{
execer: execer,
}
}
func (dcli *dockerCLI) List(ctx context.Context) (codersdk.WorkspaceAgentListContainersResponse, error) {
var stdoutBuf, stderrBuf bytes.Buffer
// List all container IDs, one per line, with no truncation
cmd := dcl.execer.CommandContext(ctx, "docker", "ps", "--all", "--quiet", "--no-trunc")
cmd := dcli.execer.CommandContext(ctx, "docker", "ps", "--all", "--quiet", "--no-trunc")
cmd.Stdout = &stdoutBuf
cmd.Stderr = &stderrBuf
if err := cmd.Run(); err != nil {
@@ -288,7 +288,7 @@ func (dcl *DockerCLILister) List(ctx context.Context) (codersdk.WorkspaceAgentLi
// will still contain valid JSON. We will just end up missing
// information about the removed container. We could potentially
// log this error, but I'm not sure it's worth it.
dockerInspectStdout, dockerInspectStderr, err := runDockerInspect(ctx, dcl.execer, ids...)
dockerInspectStdout, dockerInspectStderr, err := runDockerInspect(ctx, dcli.execer, ids...)
if err != nil {
return codersdk.WorkspaceAgentListContainersResponse{}, xerrors.Errorf("run docker inspect: %w: %s", err, dockerInspectStderr)
}
@@ -311,6 +311,10 @@ func (dcl *DockerCLILister) List(ctx context.Context) (codersdk.WorkspaceAgentLi
// container IDs and returns the parsed output.
// The stderr output is also returned for logging purposes.
func runDockerInspect(ctx context.Context, execer agentexec.Execer, ids ...string) (stdout, stderr []byte, err error) {
if ctx.Err() != nil {
// If the context is done, we don't want to run the command.
return []byte{}, []byte{}, ctx.Err()
}
var stdoutBuf, stderrBuf bytes.Buffer
cmd := execer.CommandContext(ctx, "docker", append([]string{"inspect"}, ids...)...)
cmd.Stdout = &stdoutBuf
@@ -319,9 +323,18 @@ func runDockerInspect(ctx context.Context, execer agentexec.Execer, ids ...strin
stdout = bytes.TrimSpace(stdoutBuf.Bytes())
stderr = bytes.TrimSpace(stderrBuf.Bytes())
if err != nil {
if ctx.Err() != nil {
// If the context was canceled while running the command,
// return the context error instead of the command error,
// which is likely to be "signal: killed".
return stdout, stderr, ctx.Err()
}
if bytes.Contains(stderr, []byte("No such object:")) {
// This can happen if a container is deleted between the time we check for its existence and the time we inspect it.
return stdout, stderr, nil
}
return stdout, stderr, err
}
return stdout, stderr, nil
}
@@ -453,8 +466,9 @@ func convertDockerInspect(raw []byte) ([]codersdk.WorkspaceAgentContainer, []str
hostPortContainers[hp] = append(hostPortContainers[hp], in.ID)
}
out.Ports = append(out.Ports, codersdk.WorkspaceAgentContainerPort{
Network: network,
Port: cp,
Network: network,
Port: cp,
// #nosec G115 - Safe conversion since Docker ports are limited to uint16 range
HostPort: uint16(hp),
HostIP: p.HostIP,
})
@@ -490,19 +504,15 @@ func convertDockerInspect(raw []byte) ([]codersdk.WorkspaceAgentContainer, []str
// "8080" -> 8080, "tcp"
func convertDockerPort(in string) (uint16, string, error) {
parts := strings.Split(in, "/")
p, err := strconv.ParseUint(parts[0], 10, 16)
if err != nil {
return 0, "", xerrors.Errorf("invalid port format: %s", in)
}
switch len(parts) {
case 1:
// assume it's a TCP port
p, err := strconv.Atoi(parts[0])
if err != nil {
return 0, "", xerrors.Errorf("invalid port format: %s", in)
}
return uint16(p), "tcp", nil
case 2:
p, err := strconv.Atoi(parts[0])
if err != nil {
return 0, "", xerrors.Errorf("invalid port format: %s", in)
}
return uint16(p), parts[1], nil
default:
return 0, "", xerrors.Errorf("invalid port format: %s", in)
@@ -517,3 +527,71 @@ func isLoopbackOrUnspecified(ips string) bool {
}
return nip.IsLoopback() || nip.IsUnspecified()
}
// DetectArchitecture detects the architecture of a container by inspecting its
// image.
func (dcli *dockerCLI) DetectArchitecture(ctx context.Context, containerName string) (string, error) {
// Inspect the container to get the image name, which contains the architecture.
stdout, stderr, err := runCmd(ctx, dcli.execer, "docker", "inspect", "--format", "{{.Config.Image}}", containerName)
if err != nil {
return "", xerrors.Errorf("inspect container %s: %w: %s", containerName, err, stderr)
}
imageName := string(stdout)
if imageName == "" {
return "", xerrors.Errorf("no image found for container %s", containerName)
}
stdout, stderr, err = runCmd(ctx, dcli.execer, "docker", "inspect", "--format", "{{.Architecture}}", imageName)
if err != nil {
return "", xerrors.Errorf("inspect image %s: %w: %s", imageName, err, stderr)
}
arch := string(stdout)
if arch == "" {
return "", xerrors.Errorf("no architecture found for image %s", imageName)
}
return arch, nil
}
// Copy copies a file from the host to a container.
func (dcli *dockerCLI) Copy(ctx context.Context, containerName, src, dst string) error {
_, stderr, err := runCmd(ctx, dcli.execer, "docker", "cp", src, containerName+":"+dst)
if err != nil {
return xerrors.Errorf("copy %s to %s:%s: %w: %s", src, containerName, dst, err, stderr)
}
return nil
}
// ExecAs executes a command in a container as a specific user.
func (dcli *dockerCLI) ExecAs(ctx context.Context, containerName, uid string, args ...string) ([]byte, error) {
execArgs := []string{"exec"}
if uid != "" {
altUID := uid
if uid == "root" {
// UID 0 is more portable than the name root, so we use that
// because some containers may not have a user named "root".
altUID = "0"
}
execArgs = append(execArgs, "--user", altUID)
}
execArgs = append(execArgs, containerName)
execArgs = append(execArgs, args...)
stdout, stderr, err := runCmd(ctx, dcli.execer, "docker", execArgs...)
if err != nil {
return nil, xerrors.Errorf("exec in container %s as user %s: %w: %s", containerName, uid, err, stderr)
}
return stdout, nil
}
// runCmd is a helper function that runs a command with the given
// arguments and returns the stdout and stderr output.
func runCmd(ctx context.Context, execer agentexec.Execer, cmd string, args ...string) (stdout, stderr []byte, err error) {
var stdoutBuf, stderrBuf bytes.Buffer
c := execer.CommandContext(ctx, cmd, args...)
c.Stdout = &stdoutBuf
c.Stderr = &stderrBuf
err = c.Run()
stdout = bytes.TrimSpace(stdoutBuf.Bytes())
stderr = bytes.TrimSpace(stderrBuf.Bytes())
return stdout, stderr, err
}
@@ -0,0 +1,128 @@
package agentcontainers_test
import (
"os"
"path/filepath"
"runtime"
"strings"
"testing"
"github.com/ory/dockertest/v3"
"github.com/ory/dockertest/v3/docker"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/coder/coder/v2/agent/agentcontainers"
"github.com/coder/coder/v2/agent/agentexec"
"github.com/coder/coder/v2/testutil"
)
// TestIntegrationDockerCLI tests the DetectArchitecture, Copy, and
// ExecAs methods using a real Docker container. All tests share a
// single container to avoid setup overhead.
//
// Run manually with: CODER_TEST_USE_DOCKER=1 go test ./agent/agentcontainers -run TestIntegrationDockerCLI
//
//nolint:tparallel,paralleltest // Docker integration tests don't run in parallel to avoid flakiness.
func TestIntegrationDockerCLI(t *testing.T) {
if ctud, ok := os.LookupEnv("CODER_TEST_USE_DOCKER"); !ok || ctud != "1" {
t.Skip("Set CODER_TEST_USE_DOCKER=1 to run this test")
}
pool, err := dockertest.NewPool("")
require.NoError(t, err, "Could not connect to docker")
// Start a simple busybox container for all subtests to share.
ct, err := pool.RunWithOptions(&dockertest.RunOptions{
Repository: "busybox",
Tag: "latest",
Cmd: []string{"sleep", "infinity"},
}, func(config *docker.HostConfig) {
config.AutoRemove = true
config.RestartPolicy = docker.RestartPolicy{Name: "no"}
})
require.NoError(t, err, "Could not start test docker container")
t.Logf("Created container %q", ct.Container.Name)
t.Cleanup(func() {
assert.NoError(t, pool.Purge(ct), "Could not purge resource %q", ct.Container.Name)
t.Logf("Purged container %q", ct.Container.Name)
})
// Wait for container to start.
require.Eventually(t, func() bool {
ct, ok := pool.ContainerByName(ct.Container.Name)
return ok && ct.Container.State.Running
}, testutil.WaitShort, testutil.IntervalSlow, "Container did not start in time")
dcli := agentcontainers.NewDockerCLI(agentexec.DefaultExecer)
containerName := strings.TrimPrefix(ct.Container.Name, "/")
t.Run("DetectArchitecture", func(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitShort)
arch, err := dcli.DetectArchitecture(ctx, containerName)
require.NoError(t, err, "DetectArchitecture failed")
require.NotEmpty(t, arch, "arch has no content")
require.Equal(t, runtime.GOARCH, arch, "architecture does not match runtime, did you run this test with a remote Docker socket?")
t.Logf("Detected architecture: %s", arch)
})
t.Run("Copy", func(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitShort)
want := "Help, I'm trapped!"
tempFile := filepath.Join(t.TempDir(), "test-file.txt")
err := os.WriteFile(tempFile, []byte(want), 0o600)
require.NoError(t, err, "create test file failed")
destPath := "/tmp/copied-file.txt"
err = dcli.Copy(ctx, containerName, tempFile, destPath)
require.NoError(t, err, "Copy failed")
got, err := dcli.ExecAs(ctx, containerName, "", "cat", destPath)
require.NoError(t, err, "ExecAs failed after Copy")
require.Equal(t, want, string(got), "copied file content did not match original")
t.Logf("Successfully copied file from %s to container %s:%s", tempFile, containerName, destPath)
})
t.Run("ExecAs", func(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitShort)
// Test ExecAs without specifying user (should use container's default).
want := "root"
got, err := dcli.ExecAs(ctx, containerName, "", "whoami")
require.NoError(t, err, "ExecAs without user should succeed")
require.Equal(t, want, string(got), "ExecAs without user should output expected string")
// Test ExecAs with numeric UID (non root).
want = "1000"
_, err = dcli.ExecAs(ctx, containerName, want, "whoami")
require.Error(t, err, "ExecAs with UID 1000 should fail as user does not exist in busybox")
require.Contains(t, err.Error(), "whoami: unknown uid 1000", "ExecAs with UID 1000 should return 'unknown uid' error")
// Test ExecAs with root user (should convert "root" to "0", which still outputs root due to passwd).
want = "root"
got, err = dcli.ExecAs(ctx, containerName, "root", "whoami")
require.NoError(t, err, "ExecAs with root user should succeed")
require.Equal(t, want, string(got), "ExecAs with root user should output expected string")
// Test ExecAs with numeric UID.
want = "root"
got, err = dcli.ExecAs(ctx, containerName, "0", "whoami")
require.NoError(t, err, "ExecAs with UID 0 should succeed")
require.Equal(t, want, string(got), "ExecAs with UID 0 should output expected string")
// Test ExecAs with multiple arguments.
want = "multiple args test"
got, err = dcli.ExecAs(ctx, containerName, "", "sh", "-c", "echo '"+want+"'")
require.NoError(t, err, "ExecAs with multiple arguments should succeed")
require.Equal(t, want, string(got), "ExecAs with multiple arguments should output expected string")
t.Logf("Successfully executed commands in container %s", containerName)
})
}
@@ -1,163 +1,18 @@
package agentcontainers
import (
"fmt"
"math/rand"
"os"
"path/filepath"
"slices"
"strconv"
"strings"
"testing"
"time"
"go.uber.org/mock/gomock"
"github.com/google/go-cmp/cmp"
"github.com/google/uuid"
"github.com/ory/dockertest/v3"
"github.com/ory/dockertest/v3/docker"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/coder/coder/v2/agent/agentcontainers/acmock"
"github.com/coder/coder/v2/agent/agentexec"
"github.com/coder/coder/v2/codersdk"
"github.com/coder/coder/v2/pty"
"github.com/coder/coder/v2/testutil"
"github.com/coder/quartz"
)
// TestIntegrationDocker tests agentcontainers functionality using a real
// Docker container. It starts a container with a known
// label, lists the containers, and verifies that the expected container is
// returned. It also executes a sample command inside the container.
// The container is deleted after the test is complete.
// As this test creates containers, it is skipped by default.
// It can be run manually as follows:
//
// CODER_TEST_USE_DOCKER=1 go test ./agent/agentcontainers -run TestDockerCLIContainerLister
//
//nolint:paralleltest // This test tends to flake when lots of containers start and stop in parallel.
func TestIntegrationDocker(t *testing.T) {
if ctud, ok := os.LookupEnv("CODER_TEST_USE_DOCKER"); !ok || ctud != "1" {
t.Skip("Set CODER_TEST_USE_DOCKER=1 to run this test")
}
pool, err := dockertest.NewPool("")
require.NoError(t, err, "Could not connect to docker")
testLabelValue := uuid.New().String()
// Create a temporary directory to validate that we surface mounts correctly.
testTempDir := t.TempDir()
// Pick a random port to expose for testing port bindings.
testRandPort := testutil.RandomPortNoListen(t)
ct, err := pool.RunWithOptions(&dockertest.RunOptions{
Repository: "busybox",
Tag: "latest",
Cmd: []string{"sleep", "infnity"},
Labels: map[string]string{
"com.coder.test": testLabelValue,
"devcontainer.metadata": `[{"remoteEnv": {"FOO": "bar", "MULTILINE": "foo\nbar\nbaz"}}]`,
},
Mounts: []string{testTempDir + ":" + testTempDir},
ExposedPorts: []string{fmt.Sprintf("%d/tcp", testRandPort)},
PortBindings: map[docker.Port][]docker.PortBinding{
docker.Port(fmt.Sprintf("%d/tcp", testRandPort)): {
{
HostIP: "0.0.0.0",
HostPort: strconv.FormatInt(int64(testRandPort), 10),
},
},
},
}, func(config *docker.HostConfig) {
config.AutoRemove = true
config.RestartPolicy = docker.RestartPolicy{Name: "no"}
})
require.NoError(t, err, "Could not start test docker container")
t.Logf("Created container %q", ct.Container.Name)
t.Cleanup(func() {
assert.NoError(t, pool.Purge(ct), "Could not purge resource %q", ct.Container.Name)
t.Logf("Purged container %q", ct.Container.Name)
})
// Wait for container to start
require.Eventually(t, func() bool {
ct, ok := pool.ContainerByName(ct.Container.Name)
return ok && ct.Container.State.Running
}, testutil.WaitShort, testutil.IntervalSlow, "Container did not start in time")
dcl := NewDocker(agentexec.DefaultExecer)
ctx := testutil.Context(t, testutil.WaitShort)
actual, err := dcl.List(ctx)
require.NoError(t, err, "Could not list containers")
require.Empty(t, actual.Warnings, "Expected no warnings")
var found bool
for _, foundContainer := range actual.Containers {
if foundContainer.ID == ct.Container.ID {
found = true
assert.Equal(t, ct.Container.Created, foundContainer.CreatedAt)
// ory/dockertest pre-pends a forward slash to the container name.
assert.Equal(t, strings.TrimPrefix(ct.Container.Name, "/"), foundContainer.FriendlyName)
// ory/dockertest returns the sha256 digest of the image.
assert.Equal(t, "busybox:latest", foundContainer.Image)
assert.Equal(t, ct.Container.Config.Labels, foundContainer.Labels)
assert.True(t, foundContainer.Running)
assert.Equal(t, "running", foundContainer.Status)
if assert.Len(t, foundContainer.Ports, 1) {
assert.Equal(t, testRandPort, foundContainer.Ports[0].Port)
assert.Equal(t, "tcp", foundContainer.Ports[0].Network)
}
if assert.Len(t, foundContainer.Volumes, 1) {
assert.Equal(t, testTempDir, foundContainer.Volumes[testTempDir])
}
// Test that EnvInfo is able to correctly modify a command to be
// executed inside the container.
dei, err := EnvInfo(ctx, agentexec.DefaultExecer, ct.Container.ID, "")
require.NoError(t, err, "Expected no error from DockerEnvInfo()")
ptyWrappedCmd, ptyWrappedArgs := dei.ModifyCommand("/bin/sh", "--norc")
ptyCmd, ptyPs, err := pty.Start(agentexec.DefaultExecer.PTYCommandContext(ctx, ptyWrappedCmd, ptyWrappedArgs...))
require.NoError(t, err, "failed to start pty command")
t.Cleanup(func() {
_ = ptyPs.Kill()
_ = ptyCmd.Close()
})
tr := testutil.NewTerminalReader(t, ptyCmd.OutputReader())
matchPrompt := func(line string) bool {
return strings.Contains(line, "#")
}
matchHostnameCmd := func(line string) bool {
return strings.Contains(strings.TrimSpace(line), "hostname")
}
matchHostnameOuput := func(line string) bool {
return strings.Contains(strings.TrimSpace(line), ct.Container.Config.Hostname)
}
matchEnvCmd := func(line string) bool {
return strings.Contains(strings.TrimSpace(line), "env")
}
matchEnvOutput := func(line string) bool {
return strings.Contains(line, "FOO=bar") || strings.Contains(line, "MULTILINE=foo")
}
require.NoError(t, tr.ReadUntil(ctx, matchPrompt), "failed to match prompt")
t.Logf("Matched prompt")
_, err = ptyCmd.InputWriter().Write([]byte("hostname\r\n"))
require.NoError(t, err, "failed to write to pty")
t.Logf("Wrote hostname command")
require.NoError(t, tr.ReadUntil(ctx, matchHostnameCmd), "failed to match hostname command")
t.Logf("Matched hostname command")
require.NoError(t, tr.ReadUntil(ctx, matchHostnameOuput), "failed to match hostname output")
t.Logf("Matched hostname output")
_, err = ptyCmd.InputWriter().Write([]byte("env\r\n"))
require.NoError(t, err, "failed to write to pty")
t.Logf("Wrote env command")
require.NoError(t, tr.ReadUntil(ctx, matchEnvCmd), "failed to match env command")
t.Logf("Matched env command")
require.NoError(t, tr.ReadUntil(ctx, matchEnvOutput), "failed to match env output")
t.Logf("Matched env output")
break
}
}
assert.True(t, found, "Expected to find container with label 'com.coder.test=%s'", testLabelValue)
}
func TestWrapDockerExec(t *testing.T) {
t.Parallel()
tests := []struct {
@@ -186,7 +41,6 @@ func TestWrapDockerExec(t *testing.T) {
},
}
for _, tt := range tests {
tt := tt // appease the linter even though this isn't needed anymore
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
actualCmd, actualArgs := wrapDockerExec("my-container", tt.containerUser, tt.cmdArgs[0], tt.cmdArgs[1:]...)
@@ -196,124 +50,9 @@ func TestWrapDockerExec(t *testing.T) {
}
}
// TestContainersHandler tests the containersHandler.getContainers method using
// a mock implementation. It specifically tests caching behavior.
func TestContainersHandler(t *testing.T) {
t.Parallel()
t.Run("list", func(t *testing.T) {
t.Parallel()
fakeCt := fakeContainer(t)
fakeCt2 := fakeContainer(t)
makeResponse := func(cts ...codersdk.WorkspaceAgentContainer) codersdk.WorkspaceAgentListContainersResponse {
return codersdk.WorkspaceAgentListContainersResponse{Containers: cts}
}
// Each test case is called multiple times to ensure idempotency
for _, tc := range []struct {
name string
// data to be stored in the handler
cacheData codersdk.WorkspaceAgentListContainersResponse
// duration of cache
cacheDur time.Duration
// relative age of the cached data
cacheAge time.Duration
// function to set up expectations for the mock
setupMock func(*acmock.MockLister)
// expected result
expected codersdk.WorkspaceAgentListContainersResponse
// expected error
expectedErr string
}{
{
name: "no cache",
setupMock: func(mcl *acmock.MockLister) {
mcl.EXPECT().List(gomock.Any()).Return(makeResponse(fakeCt), nil).AnyTimes()
},
expected: makeResponse(fakeCt),
},
{
name: "no data",
cacheData: makeResponse(),
cacheAge: 2 * time.Second,
cacheDur: time.Second,
setupMock: func(mcl *acmock.MockLister) {
mcl.EXPECT().List(gomock.Any()).Return(makeResponse(fakeCt), nil).AnyTimes()
},
expected: makeResponse(fakeCt),
},
{
name: "cached data",
cacheAge: time.Second,
cacheData: makeResponse(fakeCt),
cacheDur: 2 * time.Second,
expected: makeResponse(fakeCt),
},
{
name: "lister error",
setupMock: func(mcl *acmock.MockLister) {
mcl.EXPECT().List(gomock.Any()).Return(makeResponse(), assert.AnError).AnyTimes()
},
expectedErr: assert.AnError.Error(),
},
{
name: "stale cache",
cacheAge: 2 * time.Second,
cacheData: makeResponse(fakeCt),
cacheDur: time.Second,
setupMock: func(mcl *acmock.MockLister) {
mcl.EXPECT().List(gomock.Any()).Return(makeResponse(fakeCt2), nil).AnyTimes()
},
expected: makeResponse(fakeCt2),
},
} {
tc := tc
t.Run(tc.name, func(t *testing.T) {
t.Parallel()
var (
ctx = testutil.Context(t, testutil.WaitShort)
clk = quartz.NewMock(t)
ctrl = gomock.NewController(t)
mockLister = acmock.NewMockLister(ctrl)
now = time.Now().UTC()
ch = devcontainersHandler{
cacheDuration: tc.cacheDur,
cl: mockLister,
clock: clk,
containers: &tc.cacheData,
lockCh: make(chan struct{}, 1),
}
)
if tc.cacheAge != 0 {
ch.mtime = now.Add(-tc.cacheAge)
}
if tc.setupMock != nil {
tc.setupMock(mockLister)
}
clk.Set(now).MustWait(ctx)
// Repeat the test to ensure idempotency
for i := 0; i < 2; i++ {
actual, err := ch.getContainers(ctx)
if tc.expectedErr != "" {
require.Empty(t, actual, "expected no data (attempt %d)", i)
require.ErrorContains(t, err, tc.expectedErr, "expected error (attempt %d)", i)
} else {
require.NoError(t, err, "expected no error (attempt %d)", i)
require.Equal(t, tc.expected, actual, "expected containers to be equal (attempt %d)", i)
}
}
})
}
})
}
func TestConvertDockerPort(t *testing.T) {
t.Parallel()
//nolint:paralleltest // variable recapture no longer required
for _, tc := range []struct {
name string
in string
@@ -360,7 +99,6 @@ func TestConvertDockerPort(t *testing.T) {
expectError: "invalid port",
},
} {
//nolint: paralleltest // variable recapture no longer required
t.Run(tc.name, func(t *testing.T) {
t.Parallel()
actualPort, actualNetwork, actualErr := convertDockerPort(tc.in)
@@ -410,7 +148,6 @@ func TestConvertDockerVolume(t *testing.T) {
expectError: "invalid volume",
},
} {
tc := tc
t.Run(tc.name, func(t *testing.T) {
t.Parallel()
})
@@ -675,165 +412,3 @@ func TestConvertDockerInspect(t *testing.T) {
})
}
}
// TestDockerEnvInfoer tests the ability of EnvInfo to extract information from
// running containers. Containers are deleted after the test is complete.
// As this test creates containers, it is skipped by default.
// It can be run manually as follows:
//
// CODER_TEST_USE_DOCKER=1 go test ./agent/agentcontainers -run TestDockerEnvInfoer
//
//nolint:paralleltest // This test tends to flake when lots of containers start and stop in parallel.
func TestDockerEnvInfoer(t *testing.T) {
if ctud, ok := os.LookupEnv("CODER_TEST_USE_DOCKER"); !ok || ctud != "1" {
t.Skip("Set CODER_TEST_USE_DOCKER=1 to run this test")
}
pool, err := dockertest.NewPool("")
require.NoError(t, err, "Could not connect to docker")
// nolint:paralleltest // variable recapture no longer required
for idx, tt := range []struct {
image string
labels map[string]string
expectedEnv []string
containerUser string
expectedUsername string
expectedUserShell string
}{
{
image: "busybox:latest",
labels: map[string]string{`devcontainer.metadata`: `[{"remoteEnv": {"FOO": "bar", "MULTILINE": "foo\nbar\nbaz"}}]`},
expectedEnv: []string{"FOO=bar", "MULTILINE=foo\nbar\nbaz"},
expectedUsername: "root",
expectedUserShell: "/bin/sh",
},
{
image: "busybox:latest",
labels: map[string]string{`devcontainer.metadata`: `[{"remoteEnv": {"FOO": "bar", "MULTILINE": "foo\nbar\nbaz"}}]`},
expectedEnv: []string{"FOO=bar", "MULTILINE=foo\nbar\nbaz"},
containerUser: "root",
expectedUsername: "root",
expectedUserShell: "/bin/sh",
},
{
image: "codercom/enterprise-minimal:ubuntu",
labels: map[string]string{`devcontainer.metadata`: `[{"remoteEnv": {"FOO": "bar", "MULTILINE": "foo\nbar\nbaz"}}]`},
expectedEnv: []string{"FOO=bar", "MULTILINE=foo\nbar\nbaz"},
expectedUsername: "coder",
expectedUserShell: "/bin/bash",
},
{
image: "codercom/enterprise-minimal:ubuntu",
labels: map[string]string{`devcontainer.metadata`: `[{"remoteEnv": {"FOO": "bar", "MULTILINE": "foo\nbar\nbaz"}}]`},
expectedEnv: []string{"FOO=bar", "MULTILINE=foo\nbar\nbaz"},
containerUser: "coder",
expectedUsername: "coder",
expectedUserShell: "/bin/bash",
},
{
image: "codercom/enterprise-minimal:ubuntu",
labels: map[string]string{`devcontainer.metadata`: `[{"remoteEnv": {"FOO": "bar", "MULTILINE": "foo\nbar\nbaz"}}]`},
expectedEnv: []string{"FOO=bar", "MULTILINE=foo\nbar\nbaz"},
containerUser: "root",
expectedUsername: "root",
expectedUserShell: "/bin/bash",
},
{
image: "codercom/enterprise-minimal:ubuntu",
labels: map[string]string{`devcontainer.metadata`: `[{"remoteEnv": {"FOO": "bar"}},{"remoteEnv": {"MULTILINE": "foo\nbar\nbaz"}}]`},
expectedEnv: []string{"FOO=bar", "MULTILINE=foo\nbar\nbaz"},
containerUser: "root",
expectedUsername: "root",
expectedUserShell: "/bin/bash",
},
} {
//nolint:paralleltest // variable recapture no longer required
t.Run(fmt.Sprintf("#%d", idx), func(t *testing.T) {
// Start a container with the given image
// and environment variables
image := strings.Split(tt.image, ":")[0]
tag := strings.Split(tt.image, ":")[1]
ct, err := pool.RunWithOptions(&dockertest.RunOptions{
Repository: image,
Tag: tag,
Cmd: []string{"sleep", "infinity"},
Labels: tt.labels,
}, func(config *docker.HostConfig) {
config.AutoRemove = true
config.RestartPolicy = docker.RestartPolicy{Name: "no"}
})
require.NoError(t, err, "Could not start test docker container")
t.Logf("Created container %q", ct.Container.Name)
t.Cleanup(func() {
assert.NoError(t, pool.Purge(ct), "Could not purge resource %q", ct.Container.Name)
t.Logf("Purged container %q", ct.Container.Name)
})
ctx := testutil.Context(t, testutil.WaitShort)
dei, err := EnvInfo(ctx, agentexec.DefaultExecer, ct.Container.ID, tt.containerUser)
require.NoError(t, err, "Expected no error from DockerEnvInfo()")
u, err := dei.User()
require.NoError(t, err, "Expected no error from CurrentUser()")
require.Equal(t, tt.expectedUsername, u.Username, "Expected username to match")
hd, err := dei.HomeDir()
require.NoError(t, err, "Expected no error from UserHomeDir()")
require.NotEmpty(t, hd, "Expected user homedir to be non-empty")
sh, err := dei.Shell(tt.containerUser)
require.NoError(t, err, "Expected no error from UserShell()")
require.Equal(t, tt.expectedUserShell, sh, "Expected user shell to match")
// We don't need to test the actual environment variables here.
environ := dei.Environ()
require.NotEmpty(t, environ, "Expected environ to be non-empty")
// Test that the environment variables are present in modified command
// output.
envCmd, envArgs := dei.ModifyCommand("env")
for _, env := range tt.expectedEnv {
require.Subset(t, envArgs, []string{"--env", env})
}
// Run the command in the container and check the output
// HACK: we remove the --tty argument because we're not running in a tty
envArgs = slices.DeleteFunc(envArgs, func(s string) bool { return s == "--tty" })
stdout, stderr, err := run(ctx, agentexec.DefaultExecer, envCmd, envArgs...)
require.Empty(t, stderr, "Expected no stderr output")
require.NoError(t, err, "Expected no error from running command")
for _, env := range tt.expectedEnv {
require.Contains(t, stdout, env)
}
})
}
}
func fakeContainer(t *testing.T, mut ...func(*codersdk.WorkspaceAgentContainer)) codersdk.WorkspaceAgentContainer {
t.Helper()
ct := codersdk.WorkspaceAgentContainer{
CreatedAt: time.Now().UTC(),
ID: uuid.New().String(),
FriendlyName: testutil.GetRandomName(t),
Image: testutil.GetRandomName(t) + ":" + strings.Split(uuid.New().String(), "-")[0],
Labels: map[string]string{
testutil.GetRandomName(t): testutil.GetRandomName(t),
},
Running: true,
Ports: []codersdk.WorkspaceAgentContainerPort{
{
Network: "tcp",
Port: testutil.RandomPortNoListen(t),
HostPort: testutil.RandomPortNoListen(t),
//nolint:gosec // this is a test
HostIP: []string{"127.0.0.1", "[::1]", "localhost", "0.0.0.0", "[::]", testutil.GetRandomName(t)}[rand.Intn(6)],
},
},
Status: testutil.MustRandString(t, 10),
Volumes: map[string]string{testutil.GetRandomName(t): testutil.GetRandomName(t)},
}
for _, m := range mut {
m(&ct)
}
return ct
}
+296
View File
@@ -0,0 +1,296 @@
package agentcontainers_test
import (
"context"
"fmt"
"os"
"slices"
"strconv"
"strings"
"testing"
"github.com/google/uuid"
"github.com/ory/dockertest/v3"
"github.com/ory/dockertest/v3/docker"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/coder/coder/v2/agent/agentcontainers"
"github.com/coder/coder/v2/agent/agentexec"
"github.com/coder/coder/v2/pty"
"github.com/coder/coder/v2/testutil"
)
// TestIntegrationDocker tests agentcontainers functionality using a real
// Docker container. It starts a container with a known
// label, lists the containers, and verifies that the expected container is
// returned. It also executes a sample command inside the container.
// The container is deleted after the test is complete.
// As this test creates containers, it is skipped by default.
// It can be run manually as follows:
//
// CODER_TEST_USE_DOCKER=1 go test ./agent/agentcontainers -run TestDockerCLIContainerLister
//
//nolint:paralleltest // This test tends to flake when lots of containers start and stop in parallel.
func TestIntegrationDocker(t *testing.T) {
if ctud, ok := os.LookupEnv("CODER_TEST_USE_DOCKER"); !ok || ctud != "1" {
t.Skip("Set CODER_TEST_USE_DOCKER=1 to run this test")
}
pool, err := dockertest.NewPool("")
require.NoError(t, err, "Could not connect to docker")
testLabelValue := uuid.New().String()
// Create a temporary directory to validate that we surface mounts correctly.
testTempDir := t.TempDir()
// Pick a random port to expose for testing port bindings.
testRandPort := testutil.RandomPortNoListen(t)
ct, err := pool.RunWithOptions(&dockertest.RunOptions{
Repository: "busybox",
Tag: "latest",
Cmd: []string{"sleep", "infnity"},
Labels: map[string]string{
"com.coder.test": testLabelValue,
"devcontainer.metadata": `[{"remoteEnv": {"FOO": "bar", "MULTILINE": "foo\nbar\nbaz"}}]`,
},
Mounts: []string{testTempDir + ":" + testTempDir},
ExposedPorts: []string{fmt.Sprintf("%d/tcp", testRandPort)},
PortBindings: map[docker.Port][]docker.PortBinding{
docker.Port(fmt.Sprintf("%d/tcp", testRandPort)): {
{
HostIP: "0.0.0.0",
HostPort: strconv.FormatInt(int64(testRandPort), 10),
},
},
},
}, func(config *docker.HostConfig) {
config.AutoRemove = true
config.RestartPolicy = docker.RestartPolicy{Name: "no"}
})
require.NoError(t, err, "Could not start test docker container")
t.Logf("Created container %q", ct.Container.Name)
t.Cleanup(func() {
assert.NoError(t, pool.Purge(ct), "Could not purge resource %q", ct.Container.Name)
t.Logf("Purged container %q", ct.Container.Name)
})
// Wait for container to start
require.Eventually(t, func() bool {
ct, ok := pool.ContainerByName(ct.Container.Name)
return ok && ct.Container.State.Running
}, testutil.WaitShort, testutil.IntervalSlow, "Container did not start in time")
dcl := agentcontainers.NewDockerCLI(agentexec.DefaultExecer)
ctx := testutil.Context(t, testutil.WaitShort)
actual, err := dcl.List(ctx)
require.NoError(t, err, "Could not list containers")
require.Empty(t, actual.Warnings, "Expected no warnings")
var found bool
for _, foundContainer := range actual.Containers {
if foundContainer.ID == ct.Container.ID {
found = true
assert.Equal(t, ct.Container.Created, foundContainer.CreatedAt)
// ory/dockertest pre-pends a forward slash to the container name.
assert.Equal(t, strings.TrimPrefix(ct.Container.Name, "/"), foundContainer.FriendlyName)
// ory/dockertest returns the sha256 digest of the image.
assert.Equal(t, "busybox:latest", foundContainer.Image)
assert.Equal(t, ct.Container.Config.Labels, foundContainer.Labels)
assert.True(t, foundContainer.Running)
assert.Equal(t, "running", foundContainer.Status)
if assert.Len(t, foundContainer.Ports, 1) {
assert.Equal(t, testRandPort, foundContainer.Ports[0].Port)
assert.Equal(t, "tcp", foundContainer.Ports[0].Network)
}
if assert.Len(t, foundContainer.Volumes, 1) {
assert.Equal(t, testTempDir, foundContainer.Volumes[testTempDir])
}
// Test that EnvInfo is able to correctly modify a command to be
// executed inside the container.
dei, err := agentcontainers.EnvInfo(ctx, agentexec.DefaultExecer, ct.Container.ID, "")
require.NoError(t, err, "Expected no error from DockerEnvInfo()")
ptyWrappedCmd, ptyWrappedArgs := dei.ModifyCommand("/bin/sh", "--norc")
ptyCmd, ptyPs, err := pty.Start(agentexec.DefaultExecer.PTYCommandContext(ctx, ptyWrappedCmd, ptyWrappedArgs...))
require.NoError(t, err, "failed to start pty command")
t.Cleanup(func() {
_ = ptyPs.Kill()
_ = ptyCmd.Close()
})
tr := testutil.NewTerminalReader(t, ptyCmd.OutputReader())
matchPrompt := func(line string) bool {
return strings.Contains(line, "#")
}
matchHostnameCmd := func(line string) bool {
return strings.Contains(strings.TrimSpace(line), "hostname")
}
matchHostnameOuput := func(line string) bool {
return strings.Contains(strings.TrimSpace(line), ct.Container.Config.Hostname)
}
matchEnvCmd := func(line string) bool {
return strings.Contains(strings.TrimSpace(line), "env")
}
matchEnvOutput := func(line string) bool {
return strings.Contains(line, "FOO=bar") || strings.Contains(line, "MULTILINE=foo")
}
require.NoError(t, tr.ReadUntil(ctx, matchPrompt), "failed to match prompt")
t.Logf("Matched prompt")
_, err = ptyCmd.InputWriter().Write([]byte("hostname\r\n"))
require.NoError(t, err, "failed to write to pty")
t.Logf("Wrote hostname command")
require.NoError(t, tr.ReadUntil(ctx, matchHostnameCmd), "failed to match hostname command")
t.Logf("Matched hostname command")
require.NoError(t, tr.ReadUntil(ctx, matchHostnameOuput), "failed to match hostname output")
t.Logf("Matched hostname output")
_, err = ptyCmd.InputWriter().Write([]byte("env\r\n"))
require.NoError(t, err, "failed to write to pty")
t.Logf("Wrote env command")
require.NoError(t, tr.ReadUntil(ctx, matchEnvCmd), "failed to match env command")
t.Logf("Matched env command")
require.NoError(t, tr.ReadUntil(ctx, matchEnvOutput), "failed to match env output")
t.Logf("Matched env output")
break
}
}
assert.True(t, found, "Expected to find container with label 'com.coder.test=%s'", testLabelValue)
}
// TestDockerEnvInfoer tests the ability of EnvInfo to extract information from
// running containers. Containers are deleted after the test is complete.
// As this test creates containers, it is skipped by default.
// It can be run manually as follows:
//
// CODER_TEST_USE_DOCKER=1 go test ./agent/agentcontainers -run TestDockerEnvInfoer
//
//nolint:paralleltest // This test tends to flake when lots of containers start and stop in parallel.
func TestDockerEnvInfoer(t *testing.T) {
if ctud, ok := os.LookupEnv("CODER_TEST_USE_DOCKER"); !ok || ctud != "1" {
t.Skip("Set CODER_TEST_USE_DOCKER=1 to run this test")
}
pool, err := dockertest.NewPool("")
require.NoError(t, err, "Could not connect to docker")
// nolint:paralleltest // variable recapture no longer required
for idx, tt := range []struct {
image string
labels map[string]string
expectedEnv []string
containerUser string
expectedUsername string
expectedUserShell string
}{
{
image: "busybox:latest",
labels: map[string]string{`devcontainer.metadata`: `[{"remoteEnv": {"FOO": "bar", "MULTILINE": "foo\nbar\nbaz"}}]`},
expectedEnv: []string{"FOO=bar", "MULTILINE=foo\nbar\nbaz"},
expectedUsername: "root",
expectedUserShell: "/bin/sh",
},
{
image: "busybox:latest",
labels: map[string]string{`devcontainer.metadata`: `[{"remoteEnv": {"FOO": "bar", "MULTILINE": "foo\nbar\nbaz"}}]`},
expectedEnv: []string{"FOO=bar", "MULTILINE=foo\nbar\nbaz"},
containerUser: "root",
expectedUsername: "root",
expectedUserShell: "/bin/sh",
},
{
image: "codercom/enterprise-minimal:ubuntu",
labels: map[string]string{`devcontainer.metadata`: `[{"remoteEnv": {"FOO": "bar", "MULTILINE": "foo\nbar\nbaz"}}]`},
expectedEnv: []string{"FOO=bar", "MULTILINE=foo\nbar\nbaz"},
expectedUsername: "coder",
expectedUserShell: "/bin/bash",
},
{
image: "codercom/enterprise-minimal:ubuntu",
labels: map[string]string{`devcontainer.metadata`: `[{"remoteEnv": {"FOO": "bar", "MULTILINE": "foo\nbar\nbaz"}}]`},
expectedEnv: []string{"FOO=bar", "MULTILINE=foo\nbar\nbaz"},
containerUser: "coder",
expectedUsername: "coder",
expectedUserShell: "/bin/bash",
},
{
image: "codercom/enterprise-minimal:ubuntu",
labels: map[string]string{`devcontainer.metadata`: `[{"remoteEnv": {"FOO": "bar", "MULTILINE": "foo\nbar\nbaz"}}]`},
expectedEnv: []string{"FOO=bar", "MULTILINE=foo\nbar\nbaz"},
containerUser: "root",
expectedUsername: "root",
expectedUserShell: "/bin/bash",
},
{
image: "codercom/enterprise-minimal:ubuntu",
labels: map[string]string{`devcontainer.metadata`: `[{"remoteEnv": {"FOO": "bar"}},{"remoteEnv": {"MULTILINE": "foo\nbar\nbaz"}}]`},
expectedEnv: []string{"FOO=bar", "MULTILINE=foo\nbar\nbaz"},
containerUser: "root",
expectedUsername: "root",
expectedUserShell: "/bin/bash",
},
} {
//nolint:paralleltest // variable recapture no longer required
t.Run(fmt.Sprintf("#%d", idx), func(t *testing.T) {
// Start a container with the given image
// and environment variables
image := strings.Split(tt.image, ":")[0]
tag := strings.Split(tt.image, ":")[1]
ct, err := pool.RunWithOptions(&dockertest.RunOptions{
Repository: image,
Tag: tag,
Cmd: []string{"sleep", "infinity"},
Labels: tt.labels,
}, func(config *docker.HostConfig) {
config.AutoRemove = true
config.RestartPolicy = docker.RestartPolicy{Name: "no"}
})
require.NoError(t, err, "Could not start test docker container")
t.Logf("Created container %q", ct.Container.Name)
t.Cleanup(func() {
assert.NoError(t, pool.Purge(ct), "Could not purge resource %q", ct.Container.Name)
t.Logf("Purged container %q", ct.Container.Name)
})
ctx := testutil.Context(t, testutil.WaitShort)
dei, err := agentcontainers.EnvInfo(ctx, agentexec.DefaultExecer, ct.Container.ID, tt.containerUser)
require.NoError(t, err, "Expected no error from DockerEnvInfo()")
u, err := dei.User()
require.NoError(t, err, "Expected no error from CurrentUser()")
require.Equal(t, tt.expectedUsername, u.Username, "Expected username to match")
hd, err := dei.HomeDir()
require.NoError(t, err, "Expected no error from UserHomeDir()")
require.NotEmpty(t, hd, "Expected user homedir to be non-empty")
sh, err := dei.Shell(tt.containerUser)
require.NoError(t, err, "Expected no error from UserShell()")
require.Equal(t, tt.expectedUserShell, sh, "Expected user shell to match")
// We don't need to test the actual environment variables here.
environ := dei.Environ()
require.NotEmpty(t, environ, "Expected environ to be non-empty")
// Test that the environment variables are present in modified command
// output.
envCmd, envArgs := dei.ModifyCommand("env")
for _, env := range tt.expectedEnv {
require.Subset(t, envArgs, []string{"--env", env})
}
// Run the command in the container and check the output
// HACK: we remove the --tty argument because we're not running in a tty
envArgs = slices.DeleteFunc(envArgs, func(s string) bool { return s == "--tty" })
stdout, stderr, err := run(ctx, agentexec.DefaultExecer, envCmd, envArgs...)
require.Empty(t, stderr, "Expected no stderr output")
require.NoError(t, err, "Expected no error from running command")
for _, env := range tt.expectedEnv {
require.Contains(t, stdout, env)
}
})
}
}
func run(ctx context.Context, execer agentexec.Execer, cmd string, args ...string) (stdout, stderr string, err error) {
var stdoutBuf, stderrBuf strings.Builder
execCmd := execer.CommandContext(ctx, cmd, args...)
execCmd.Stdout = &stdoutBuf
execCmd.Stderr = &stderrBuf
err = execCmd.Run()
stdout = strings.TrimSpace(stdoutBuf.String())
stderr = strings.TrimSpace(stderrBuf.String())
return stdout, stderr, err
}
+246
View File
@@ -1,6 +1,30 @@
// Code generated by dcspec/gen.sh. DO NOT EDIT.
//
// This file was generated from JSON Schema using quicktype, do not modify it directly.
// To parse and unparse this JSON data, add this code to your project and do:
//
// devContainer, err := UnmarshalDevContainer(bytes)
// bytes, err = devContainer.Marshal()
package dcspec
import (
"bytes"
"errors"
)
import "encoding/json"
func UnmarshalDevContainer(data []byte) (DevContainer, error) {
var r DevContainer
err := json.Unmarshal(data, &r)
return r, err
}
func (r *DevContainer) Marshal() ([]byte, error) {
return json.Marshal(r)
}
// Defines a dev container
type DevContainer struct {
// Docker build-related options.
@@ -284,6 +308,21 @@ type DevContainerAppPort struct {
UnionArray []AppPortElement
}
func (x *DevContainerAppPort) UnmarshalJSON(data []byte) error {
x.UnionArray = nil
object, err := unmarshalUnion(data, &x.Integer, nil, nil, &x.String, true, &x.UnionArray, false, nil, false, nil, false, nil, false)
if err != nil {
return err
}
if object {
}
return nil
}
func (x *DevContainerAppPort) MarshalJSON() ([]byte, error) {
return marshalUnion(x.Integer, nil, nil, x.String, x.UnionArray != nil, x.UnionArray, false, nil, false, nil, false, nil, false)
}
// Application ports that are exposed by the container. This can be a single port or an
// array of ports. Each port can be a number or a string. A number is mapped to the same
// port on the host. A string is passed to Docker unchanged and can be used to map ports
@@ -293,6 +332,20 @@ type AppPortElement struct {
String *string
}
func (x *AppPortElement) UnmarshalJSON(data []byte) error {
object, err := unmarshalUnion(data, &x.Integer, nil, nil, &x.String, false, nil, false, nil, false, nil, false, nil, false)
if err != nil {
return err
}
if object {
}
return nil
}
func (x *AppPortElement) MarshalJSON() ([]byte, error) {
return marshalUnion(x.Integer, nil, nil, x.String, false, nil, false, nil, false, nil, false, nil, false)
}
// The image to consider as a cache. Use an array to specify multiple images.
//
// The name of the docker-compose file(s) used to start the services.
@@ -301,17 +354,64 @@ type CacheFrom struct {
StringArray []string
}
func (x *CacheFrom) UnmarshalJSON(data []byte) error {
x.StringArray = nil
object, err := unmarshalUnion(data, nil, nil, nil, &x.String, true, &x.StringArray, false, nil, false, nil, false, nil, false)
if err != nil {
return err
}
if object {
}
return nil
}
func (x *CacheFrom) MarshalJSON() ([]byte, error) {
return marshalUnion(nil, nil, nil, x.String, x.StringArray != nil, x.StringArray, false, nil, false, nil, false, nil, false)
}
type ForwardPort struct {
Integer *int64
String *string
}
func (x *ForwardPort) UnmarshalJSON(data []byte) error {
object, err := unmarshalUnion(data, &x.Integer, nil, nil, &x.String, false, nil, false, nil, false, nil, false, nil, false)
if err != nil {
return err
}
if object {
}
return nil
}
func (x *ForwardPort) MarshalJSON() ([]byte, error) {
return marshalUnion(x.Integer, nil, nil, x.String, false, nil, false, nil, false, nil, false, nil, false)
}
type GPUUnion struct {
Bool *bool
Enum *GPUEnum
GPUClass *GPUClass
}
func (x *GPUUnion) UnmarshalJSON(data []byte) error {
x.GPUClass = nil
x.Enum = nil
var c GPUClass
object, err := unmarshalUnion(data, nil, nil, &x.Bool, nil, false, nil, true, &c, false, nil, true, &x.Enum, false)
if err != nil {
return err
}
if object {
x.GPUClass = &c
}
return nil
}
func (x *GPUUnion) MarshalJSON() ([]byte, error) {
return marshalUnion(nil, nil, x.Bool, nil, false, nil, x.GPUClass != nil, x.GPUClass, false, nil, x.Enum != nil, x.Enum, false)
}
// A command to run locally (i.e Your host machine, cloud VM) before anything else. This
// command is run before "onCreateCommand". If this is a single string, it will be run in a
// shell. If this is an array of strings, it will be run as a single command without shell.
@@ -349,7 +449,153 @@ type Command struct {
UnionMap map[string]*CacheFrom
}
func (x *Command) UnmarshalJSON(data []byte) error {
x.StringArray = nil
x.UnionMap = nil
object, err := unmarshalUnion(data, nil, nil, nil, &x.String, true, &x.StringArray, false, nil, true, &x.UnionMap, false, nil, false)
if err != nil {
return err
}
if object {
}
return nil
}
func (x *Command) MarshalJSON() ([]byte, error) {
return marshalUnion(nil, nil, nil, x.String, x.StringArray != nil, x.StringArray, false, nil, x.UnionMap != nil, x.UnionMap, false, nil, false)
}
type MountElement struct {
Mount *Mount
String *string
}
func (x *MountElement) UnmarshalJSON(data []byte) error {
x.Mount = nil
var c Mount
object, err := unmarshalUnion(data, nil, nil, nil, &x.String, false, nil, true, &c, false, nil, false, nil, false)
if err != nil {
return err
}
if object {
x.Mount = &c
}
return nil
}
func (x *MountElement) MarshalJSON() ([]byte, error) {
return marshalUnion(nil, nil, nil, x.String, false, nil, x.Mount != nil, x.Mount, false, nil, false, nil, false)
}
func unmarshalUnion(data []byte, pi **int64, pf **float64, pb **bool, ps **string, haveArray bool, pa interface{}, haveObject bool, pc interface{}, haveMap bool, pm interface{}, haveEnum bool, pe interface{}, nullable bool) (bool, error) {
if pi != nil {
*pi = nil
}
if pf != nil {
*pf = nil
}
if pb != nil {
*pb = nil
}
if ps != nil {
*ps = nil
}
dec := json.NewDecoder(bytes.NewReader(data))
dec.UseNumber()
tok, err := dec.Token()
if err != nil {
return false, err
}
switch v := tok.(type) {
case json.Number:
if pi != nil {
i, err := v.Int64()
if err == nil {
*pi = &i
return false, nil
}
}
if pf != nil {
f, err := v.Float64()
if err == nil {
*pf = &f
return false, nil
}
return false, errors.New("Unparsable number")
}
return false, errors.New("Union does not contain number")
case float64:
return false, errors.New("Decoder should not return float64")
case bool:
if pb != nil {
*pb = &v
return false, nil
}
return false, errors.New("Union does not contain bool")
case string:
if haveEnum {
return false, json.Unmarshal(data, pe)
}
if ps != nil {
*ps = &v
return false, nil
}
return false, errors.New("Union does not contain string")
case nil:
if nullable {
return false, nil
}
return false, errors.New("Union does not contain null")
case json.Delim:
if v == '{' {
if haveObject {
return true, json.Unmarshal(data, pc)
}
if haveMap {
return false, json.Unmarshal(data, pm)
}
return false, errors.New("Union does not contain object")
}
if v == '[' {
if haveArray {
return false, json.Unmarshal(data, pa)
}
return false, errors.New("Union does not contain array")
}
return false, errors.New("Cannot handle delimiter")
}
return false, errors.New("Cannot unmarshal union")
}
func marshalUnion(pi *int64, pf *float64, pb *bool, ps *string, haveArray bool, pa interface{}, haveObject bool, pc interface{}, haveMap bool, pm interface{}, haveEnum bool, pe interface{}, nullable bool) ([]byte, error) {
if pi != nil {
return json.Marshal(*pi)
}
if pf != nil {
return json.Marshal(*pf)
}
if pb != nil {
return json.Marshal(*pb)
}
if ps != nil {
return json.Marshal(*ps)
}
if haveArray {
return json.Marshal(pa)
}
if haveObject {
return json.Marshal(pc)
}
if haveMap {
return json.Marshal(pm)
}
if haveEnum {
return json.Marshal(pe)
}
if nullable {
return json.Marshal(nil)
}
return nil, errors.New("Union must not be null")
}
+148
View File
@@ -0,0 +1,148 @@
package dcspec_test
import (
"encoding/json"
"os"
"path/filepath"
"slices"
"testing"
"github.com/google/go-cmp/cmp"
"github.com/stretchr/testify/require"
"github.com/coder/coder/v2/agent/agentcontainers/dcspec"
"github.com/coder/coder/v2/coderd/util/ptr"
)
func TestUnmarshalDevContainer(t *testing.T) {
t.Parallel()
type testCase struct {
name string
file string
wantErr bool
want dcspec.DevContainer
}
tests := []testCase{
{
name: "minimal",
file: filepath.Join("testdata", "minimal.json"),
want: dcspec.DevContainer{
Image: ptr.Ref("test-image"),
},
},
{
name: "arrays",
file: filepath.Join("testdata", "arrays.json"),
want: dcspec.DevContainer{
Image: ptr.Ref("test-image"),
RunArgs: []string{"--network=host", "--privileged"},
ForwardPorts: []dcspec.ForwardPort{
{
Integer: ptr.Ref[int64](8080),
},
{
String: ptr.Ref("3000:3000"),
},
},
},
},
{
name: "devcontainers/template-starter",
file: filepath.Join("testdata", "devcontainers-template-starter.json"),
wantErr: false,
want: dcspec.DevContainer{
Image: ptr.Ref("mcr.microsoft.com/devcontainers/javascript-node:1-18-bullseye"),
Features: &dcspec.Features{},
Customizations: map[string]interface{}{
"vscode": map[string]interface{}{
"extensions": []interface{}{
"mads-hartmann.bash-ide-vscode",
"dbaeumer.vscode-eslint",
},
},
},
PostCreateCommand: &dcspec.Command{
String: ptr.Ref("npm install -g @devcontainers/cli"),
},
},
},
}
var missingTests []string
files, err := filepath.Glob("testdata/*.json")
require.NoError(t, err, "glob test files failed")
for _, file := range files {
if !slices.ContainsFunc(tests, func(tt testCase) bool {
return tt.file == file
}) {
missingTests = append(missingTests, file)
}
}
require.Empty(t, missingTests, "missing tests case for files: %v", missingTests)
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
data, err := os.ReadFile(tt.file)
require.NoError(t, err, "read test file failed")
got, err := dcspec.UnmarshalDevContainer(data)
if tt.wantErr {
require.Error(t, err, "want error but got nil")
return
}
require.NoError(t, err, "unmarshal DevContainer failed")
// Compare the unmarshaled data with the expected data.
if diff := cmp.Diff(tt.want, got); diff != "" {
require.Empty(t, diff, "UnmarshalDevContainer() mismatch (-want +got):\n%s", diff)
}
// Test that marshaling works (without comparing to original).
marshaled, err := got.Marshal()
require.NoError(t, err, "marshal DevContainer back to JSON failed")
require.NotEmpty(t, marshaled, "marshaled JSON should not be empty")
// Verify the marshaled JSON can be unmarshaled back.
var unmarshaled interface{}
err = json.Unmarshal(marshaled, &unmarshaled)
require.NoError(t, err, "unmarshal marshaled JSON failed")
})
}
}
func TestUnmarshalDevContainer_EdgeCases(t *testing.T) {
t.Parallel()
tests := []struct {
name string
json string
wantErr bool
}{
{
name: "empty JSON",
json: "{}",
wantErr: false,
},
{
name: "invalid JSON",
json: "{not valid json",
wantErr: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
_, err := dcspec.UnmarshalDevContainer([]byte(tt.json))
if tt.wantErr {
require.Error(t, err, "want error but got nil")
return
}
require.NoError(t, err, "unmarshal DevContainer failed")
})
}
}
+3 -4
View File
@@ -43,7 +43,6 @@ fi
if ! pnpm exec quicktype \
--src-lang schema \
--lang go \
--just-types-and-package \
--top-level "DevContainer" \
--out "${TMPDIR}/${DEST_FILENAME}" \
--package "dcspec" \
@@ -62,14 +61,14 @@ fi
exec 3>&-
# Format the generated code.
go run mvdan.cc/gofumpt@v0.4.0 -w -l "${TMPDIR}/${DEST_FILENAME}"
go run mvdan.cc/gofumpt@v0.8.0 -w -l "${TMPDIR}/${DEST_FILENAME}"
# Add a header so that Go recognizes this as a generated file.
if grep -q -- "\[-i extension\]" < <(sed -h 2>&1); then
# darwin sed
sed -i '' '1s/^/\/\/ Code generated by dcspec\/gen.sh. DO NOT EDIT.\n/' "${TMPDIR}/${DEST_FILENAME}"
sed -i '' '1s/^/\/\/ Code generated by dcspec\/gen.sh. DO NOT EDIT.\n\/\/\n/' "${TMPDIR}/${DEST_FILENAME}"
else
sed -i'' '1s/^/\/\/ Code generated by dcspec\/gen.sh. DO NOT EDIT.\n/' "${TMPDIR}/${DEST_FILENAME}"
sed -i'' '1s/^/\/\/ Code generated by dcspec\/gen.sh. DO NOT EDIT.\n\/\/\n/' "${TMPDIR}/${DEST_FILENAME}"
fi
mv -v "${TMPDIR}/${DEST_FILENAME}" "${DEST_PATH}"
+5
View File
@@ -0,0 +1,5 @@
{
"image": "test-image",
"runArgs": ["--network=host", "--privileged"],
"forwardPorts": [8080, "3000:3000"]
}
@@ -0,0 +1,12 @@
{
"image": "mcr.microsoft.com/devcontainers/javascript-node:1-18-bullseye",
"features": {
"ghcr.io/devcontainers/features/docker-in-docker:2": {}
},
"customizations": {
"vscode": {
"extensions": ["mads-hartmann.bash-ide-vscode", "dbaeumer.vscode-eslint"]
}
},
"postCreateCommand": "npm install -g @devcontainers/cli"
}
+1
View File
@@ -0,0 +1 @@
{ "image": "test-image" }
+91
View File
@@ -0,0 +1,91 @@
package agentcontainers
import (
"context"
"os"
"path/filepath"
"github.com/google/uuid"
"cdr.dev/slog"
"github.com/coder/coder/v2/codersdk"
)
const (
// DevcontainerLocalFolderLabel is the label that contains the path to
// the local workspace folder for a devcontainer.
DevcontainerLocalFolderLabel = "devcontainer.local_folder"
// DevcontainerConfigFileLabel is the label that contains the path to
// the devcontainer.json configuration file.
DevcontainerConfigFileLabel = "devcontainer.config_file"
// DevcontainerIsTestRunLabel is set if the devcontainer is part of a test
// and should be excluded.
DevcontainerIsTestRunLabel = "devcontainer.is_test_run"
// The default workspace folder inside the devcontainer.
DevcontainerDefaultContainerWorkspaceFolder = "/workspaces"
)
func ExtractDevcontainerScripts(
devcontainers []codersdk.WorkspaceAgentDevcontainer,
scripts []codersdk.WorkspaceAgentScript,
) (filteredScripts []codersdk.WorkspaceAgentScript, devcontainerScripts map[uuid.UUID]codersdk.WorkspaceAgentScript) {
devcontainerScripts = make(map[uuid.UUID]codersdk.WorkspaceAgentScript)
ScriptLoop:
for _, script := range scripts {
for _, dc := range devcontainers {
// The devcontainer scripts match the devcontainer ID for
// identification.
if script.ID == dc.ID {
devcontainerScripts[dc.ID] = script
continue ScriptLoop
}
}
filteredScripts = append(filteredScripts, script)
}
return filteredScripts, devcontainerScripts
}
// ExpandAllDevcontainerPaths expands all devcontainer paths in the given
// devcontainers. This is required by the devcontainer CLI, which requires
// absolute paths for the workspace folder and config path.
func ExpandAllDevcontainerPaths(logger slog.Logger, expandPath func(string) (string, error), devcontainers []codersdk.WorkspaceAgentDevcontainer) []codersdk.WorkspaceAgentDevcontainer {
expanded := make([]codersdk.WorkspaceAgentDevcontainer, 0, len(devcontainers))
for _, dc := range devcontainers {
expanded = append(expanded, expandDevcontainerPaths(logger, expandPath, dc))
}
return expanded
}
func expandDevcontainerPaths(logger slog.Logger, expandPath func(string) (string, error), dc codersdk.WorkspaceAgentDevcontainer) codersdk.WorkspaceAgentDevcontainer {
logger = logger.With(slog.F("devcontainer", dc.Name), slog.F("workspace_folder", dc.WorkspaceFolder), slog.F("config_path", dc.ConfigPath))
if wf, err := expandPath(dc.WorkspaceFolder); err != nil {
logger.Warn(context.Background(), "expand devcontainer workspace folder failed", slog.Error(err))
} else {
dc.WorkspaceFolder = wf
}
if dc.ConfigPath != "" {
// Let expandPath handle home directory, otherwise assume relative to
// workspace folder or absolute.
if dc.ConfigPath[0] == '~' {
if cp, err := expandPath(dc.ConfigPath); err != nil {
logger.Warn(context.Background(), "expand devcontainer config path failed", slog.Error(err))
} else {
dc.ConfigPath = cp
}
} else {
dc.ConfigPath = relativePathToAbs(dc.WorkspaceFolder, dc.ConfigPath)
}
}
return dc
}
func relativePathToAbs(workdir, path string) string {
path = os.ExpandEnv(path)
if !filepath.IsAbs(path) {
path = filepath.Join(workdir, path)
}
return path
}
+482
View File
@@ -0,0 +1,482 @@
package agentcontainers
import (
"bufio"
"bytes"
"context"
"encoding/json"
"errors"
"fmt"
"io"
"slices"
"strings"
"golang.org/x/xerrors"
"cdr.dev/slog"
"github.com/coder/coder/v2/agent/agentexec"
"github.com/coder/coder/v2/codersdk"
)
// DevcontainerConfig is a wrapper around the output from `read-configuration`.
// Unfortunately we cannot make use of `dcspec` as the output doesn't appear to
// match.
type DevcontainerConfig struct {
MergedConfiguration DevcontainerMergedConfiguration `json:"mergedConfiguration"`
Configuration DevcontainerConfiguration `json:"configuration"`
Workspace DevcontainerWorkspace `json:"workspace"`
}
type DevcontainerMergedConfiguration struct {
Customizations DevcontainerMergedCustomizations `json:"customizations,omitempty"`
Features DevcontainerFeatures `json:"features,omitempty"`
}
type DevcontainerMergedCustomizations struct {
Coder []CoderCustomization `json:"coder,omitempty"`
}
type DevcontainerFeatures map[string]any
// OptionsAsEnvs converts the DevcontainerFeatures into a list of
// environment variables that can be used to set feature options.
// The format is FEATURE_<FEATURE_NAME>_OPTION_<OPTION_NAME>=<value>.
// For example, if the feature is:
//
// "ghcr.io/coder/devcontainer-features/code-server:1": {
// "port": 9090,
// }
//
// It will produce:
//
// FEATURE_CODE_SERVER_OPTION_PORT=9090
//
// Note that the feature name is derived from the last part of the key,
// so "ghcr.io/coder/devcontainer-features/code-server:1" becomes
// "CODE_SERVER". The version part (e.g. ":1") is removed, and dashes in
// the feature and option names are replaced with underscores.
func (f DevcontainerFeatures) OptionsAsEnvs() []string {
var env []string
for k, v := range f {
vv, ok := v.(map[string]any)
if !ok {
continue
}
// Take the last part of the key as the feature name/path.
k = k[strings.LastIndex(k, "/")+1:]
// Remove ":" and anything following it.
if idx := strings.Index(k, ":"); idx != -1 {
k = k[:idx]
}
k = strings.ReplaceAll(k, "-", "_")
for k2, v2 := range vv {
k2 = strings.ReplaceAll(k2, "-", "_")
env = append(env, fmt.Sprintf("FEATURE_%s_OPTION_%s=%s", strings.ToUpper(k), strings.ToUpper(k2), fmt.Sprintf("%v", v2)))
}
}
slices.Sort(env)
return env
}
type DevcontainerConfiguration struct {
Customizations DevcontainerCustomizations `json:"customizations,omitempty"`
}
type DevcontainerCustomizations struct {
Coder CoderCustomization `json:"coder,omitempty"`
}
type CoderCustomization struct {
DisplayApps map[codersdk.DisplayApp]bool `json:"displayApps,omitempty"`
Apps []SubAgentApp `json:"apps,omitempty"`
Name string `json:"name,omitempty"`
Ignore bool `json:"ignore,omitempty"`
AutoStart bool `json:"autoStart,omitempty"`
}
type DevcontainerWorkspace struct {
WorkspaceFolder string `json:"workspaceFolder"`
}
// DevcontainerCLI is an interface for the devcontainer CLI.
type DevcontainerCLI interface {
Up(ctx context.Context, workspaceFolder, configPath string, opts ...DevcontainerCLIUpOptions) (id string, err error)
Exec(ctx context.Context, workspaceFolder, configPath string, cmd string, cmdArgs []string, opts ...DevcontainerCLIExecOptions) error
ReadConfig(ctx context.Context, workspaceFolder, configPath string, env []string, opts ...DevcontainerCLIReadConfigOptions) (DevcontainerConfig, error)
}
// DevcontainerCLIUpOptions are options for the devcontainer CLI Up
// command.
type DevcontainerCLIUpOptions func(*DevcontainerCLIUpConfig)
type DevcontainerCLIUpConfig struct {
Args []string // Additional arguments for the Up command.
Stdout io.Writer
Stderr io.Writer
}
// WithRemoveExistingContainer is an option to remove the existing
// container.
func WithRemoveExistingContainer() DevcontainerCLIUpOptions {
return func(o *DevcontainerCLIUpConfig) {
o.Args = append(o.Args, "--remove-existing-container")
}
}
// WithUpOutput sets additional stdout and stderr writers for logs
// during Up operations.
func WithUpOutput(stdout, stderr io.Writer) DevcontainerCLIUpOptions {
return func(o *DevcontainerCLIUpConfig) {
o.Stdout = stdout
o.Stderr = stderr
}
}
// DevcontainerCLIExecOptions are options for the devcontainer CLI Exec
// command.
type DevcontainerCLIExecOptions func(*DevcontainerCLIExecConfig)
type DevcontainerCLIExecConfig struct {
Args []string // Additional arguments for the Exec command.
Stdout io.Writer
Stderr io.Writer
}
// WithExecOutput sets additional stdout and stderr writers for logs
// during Exec operations.
func WithExecOutput(stdout, stderr io.Writer) DevcontainerCLIExecOptions {
return func(o *DevcontainerCLIExecConfig) {
o.Stdout = stdout
o.Stderr = stderr
}
}
// WithExecContainerID sets the container ID to target a specific
// container.
func WithExecContainerID(id string) DevcontainerCLIExecOptions {
return func(o *DevcontainerCLIExecConfig) {
o.Args = append(o.Args, "--container-id", id)
}
}
// WithRemoteEnv sets environment variables for the Exec command.
func WithRemoteEnv(env ...string) DevcontainerCLIExecOptions {
return func(o *DevcontainerCLIExecConfig) {
for _, e := range env {
o.Args = append(o.Args, "--remote-env", e)
}
}
}
// DevcontainerCLIExecOptions are options for the devcontainer CLI ReadConfig
// command.
type DevcontainerCLIReadConfigOptions func(*devcontainerCLIReadConfigConfig)
type devcontainerCLIReadConfigConfig struct {
stdout io.Writer
stderr io.Writer
}
// WithReadConfigOutput sets additional stdout and stderr writers for logs
// during ReadConfig operations.
func WithReadConfigOutput(stdout, stderr io.Writer) DevcontainerCLIReadConfigOptions {
return func(o *devcontainerCLIReadConfigConfig) {
o.stdout = stdout
o.stderr = stderr
}
}
func applyDevcontainerCLIUpOptions(opts []DevcontainerCLIUpOptions) DevcontainerCLIUpConfig {
conf := DevcontainerCLIUpConfig{Stdout: io.Discard, Stderr: io.Discard}
for _, opt := range opts {
if opt != nil {
opt(&conf)
}
}
return conf
}
func applyDevcontainerCLIExecOptions(opts []DevcontainerCLIExecOptions) DevcontainerCLIExecConfig {
conf := DevcontainerCLIExecConfig{Stdout: io.Discard, Stderr: io.Discard}
for _, opt := range opts {
if opt != nil {
opt(&conf)
}
}
return conf
}
func applyDevcontainerCLIReadConfigOptions(opts []DevcontainerCLIReadConfigOptions) devcontainerCLIReadConfigConfig {
conf := devcontainerCLIReadConfigConfig{stdout: io.Discard, stderr: io.Discard}
for _, opt := range opts {
if opt != nil {
opt(&conf)
}
}
return conf
}
type devcontainerCLI struct {
logger slog.Logger
execer agentexec.Execer
}
var _ DevcontainerCLI = &devcontainerCLI{}
func NewDevcontainerCLI(logger slog.Logger, execer agentexec.Execer) DevcontainerCLI {
return &devcontainerCLI{
execer: execer,
logger: logger,
}
}
func (d *devcontainerCLI) Up(ctx context.Context, workspaceFolder, configPath string, opts ...DevcontainerCLIUpOptions) (string, error) {
conf := applyDevcontainerCLIUpOptions(opts)
logger := d.logger.With(slog.F("workspace_folder", workspaceFolder), slog.F("config_path", configPath))
args := []string{
"up",
"--log-format", "json",
"--workspace-folder", workspaceFolder,
}
if configPath != "" {
args = append(args, "--config", configPath)
}
args = append(args, conf.Args...)
cmd := d.execer.CommandContext(ctx, "devcontainer", args...)
// Capture stdout for parsing and stream logs for both default and provided writers.
var stdoutBuf bytes.Buffer
cmd.Stdout = io.MultiWriter(
&stdoutBuf,
&devcontainerCLILogWriter{
ctx: ctx,
logger: logger.With(slog.F("stdout", true)),
writer: conf.Stdout,
},
)
// Stream stderr logs and provided writer if any.
cmd.Stderr = &devcontainerCLILogWriter{
ctx: ctx,
logger: logger.With(slog.F("stderr", true)),
writer: conf.Stderr,
}
if err := cmd.Run(); err != nil {
_, err2 := parseDevcontainerCLILastLine[devcontainerCLIResult](ctx, logger, stdoutBuf.Bytes())
if err2 != nil {
err = errors.Join(err, err2)
}
return "", err
}
result, err := parseDevcontainerCLILastLine[devcontainerCLIResult](ctx, logger, stdoutBuf.Bytes())
if err != nil {
return "", err
}
return result.ContainerID, nil
}
func (d *devcontainerCLI) Exec(ctx context.Context, workspaceFolder, configPath string, cmd string, cmdArgs []string, opts ...DevcontainerCLIExecOptions) error {
conf := applyDevcontainerCLIExecOptions(opts)
logger := d.logger.With(slog.F("workspace_folder", workspaceFolder), slog.F("config_path", configPath))
args := []string{"exec"}
// For now, always set workspace folder even if --container-id is provided.
// Otherwise the environment of exec will be incomplete, like `pwd` will be
// /home/coder instead of /workspaces/coder. The downside is that the local
// `devcontainer.json` config will overwrite settings serialized in the
// container label.
if workspaceFolder != "" {
args = append(args, "--workspace-folder", workspaceFolder)
}
if configPath != "" {
args = append(args, "--config", configPath)
}
args = append(args, conf.Args...)
args = append(args, cmd)
args = append(args, cmdArgs...)
c := d.execer.CommandContext(ctx, "devcontainer", args...)
c.Stdout = io.MultiWriter(conf.Stdout, &devcontainerCLILogWriter{
ctx: ctx,
logger: logger.With(slog.F("stdout", true)),
writer: io.Discard,
})
c.Stderr = io.MultiWriter(conf.Stderr, &devcontainerCLILogWriter{
ctx: ctx,
logger: logger.With(slog.F("stderr", true)),
writer: io.Discard,
})
if err := c.Run(); err != nil {
return xerrors.Errorf("devcontainer exec failed: %w", err)
}
return nil
}
func (d *devcontainerCLI) ReadConfig(ctx context.Context, workspaceFolder, configPath string, env []string, opts ...DevcontainerCLIReadConfigOptions) (DevcontainerConfig, error) {
conf := applyDevcontainerCLIReadConfigOptions(opts)
logger := d.logger.With(slog.F("workspace_folder", workspaceFolder), slog.F("config_path", configPath))
args := []string{"read-configuration", "--include-merged-configuration"}
if workspaceFolder != "" {
args = append(args, "--workspace-folder", workspaceFolder)
}
if configPath != "" {
args = append(args, "--config", configPath)
}
c := d.execer.CommandContext(ctx, "devcontainer", args...)
c.Env = append(c.Env, env...)
var stdoutBuf bytes.Buffer
c.Stdout = io.MultiWriter(
&stdoutBuf,
&devcontainerCLILogWriter{
ctx: ctx,
logger: logger.With(slog.F("stdout", true)),
writer: conf.stdout,
},
)
c.Stderr = &devcontainerCLILogWriter{
ctx: ctx,
logger: logger.With(slog.F("stderr", true)),
writer: conf.stderr,
}
if err := c.Run(); err != nil {
return DevcontainerConfig{}, xerrors.Errorf("devcontainer read-configuration failed: %w", err)
}
config, err := parseDevcontainerCLILastLine[DevcontainerConfig](ctx, logger, stdoutBuf.Bytes())
if err != nil {
return DevcontainerConfig{}, err
}
return config, nil
}
// parseDevcontainerCLILastLine parses the last line of the devcontainer CLI output
// which is a JSON object.
func parseDevcontainerCLILastLine[T any](ctx context.Context, logger slog.Logger, p []byte) (T, error) {
var result T
s := bufio.NewScanner(bytes.NewReader(p))
var lastLine []byte
for s.Scan() {
b := s.Bytes()
if len(b) == 0 || b[0] != '{' {
continue
}
lastLine = b
}
if err := s.Err(); err != nil {
return result, err
}
if len(lastLine) == 0 || lastLine[0] != '{' {
logger.Error(ctx, "devcontainer result is not json", slog.F("result", string(lastLine)))
return result, xerrors.Errorf("devcontainer result is not json: %q", string(lastLine))
}
if err := json.Unmarshal(lastLine, &result); err != nil {
logger.Error(ctx, "parse devcontainer result failed", slog.Error(err), slog.F("result", string(lastLine)))
return result, err
}
return result, nil
}
// devcontainerCLIResult is the result of the devcontainer CLI command.
// It is parsed from the last line of the devcontainer CLI stdout which
// is a JSON object.
type devcontainerCLIResult struct {
Outcome string `json:"outcome"` // "error", "success".
// The following fields are set if outcome is success.
ContainerID string `json:"containerId"`
RemoteUser string `json:"remoteUser"`
RemoteWorkspaceFolder string `json:"remoteWorkspaceFolder"`
// The following fields are set if outcome is error.
Message string `json:"message"`
Description string `json:"description"`
}
func (r *devcontainerCLIResult) UnmarshalJSON(data []byte) error {
type wrapperResult devcontainerCLIResult
var wrappedResult wrapperResult
if err := json.Unmarshal(data, &wrappedResult); err != nil {
return err
}
*r = devcontainerCLIResult(wrappedResult)
return r.Err()
}
func (r devcontainerCLIResult) Err() error {
if r.Outcome == "success" {
return nil
}
return xerrors.Errorf("devcontainer up failed: %s (description: %s, message: %s)", r.Outcome, r.Description, r.Message)
}
// devcontainerCLIJSONLogLine is a log line from the devcontainer CLI.
type devcontainerCLIJSONLogLine struct {
Type string `json:"type"` // "progress", "raw", "start", "stop", "text", etc.
Level int `json:"level"` // 1, 2, 3.
Timestamp int `json:"timestamp"` // Unix timestamp in milliseconds.
Text string `json:"text"`
// More fields can be added here as needed.
}
// devcontainerCLILogWriter splits on newlines and logs each line
// separately.
type devcontainerCLILogWriter struct {
ctx context.Context
logger slog.Logger
writer io.Writer
}
func (l *devcontainerCLILogWriter) Write(p []byte) (n int, err error) {
s := bufio.NewScanner(bytes.NewReader(p))
for s.Scan() {
line := s.Bytes()
if len(line) == 0 {
continue
}
if line[0] != '{' {
l.logger.Debug(l.ctx, "@devcontainer/cli", slog.F("line", string(line)))
continue
}
var logLine devcontainerCLIJSONLogLine
if err := json.Unmarshal(line, &logLine); err != nil {
l.logger.Error(l.ctx, "parse devcontainer json log line failed", slog.Error(err), slog.F("line", string(line)))
continue
}
if logLine.Level >= 3 {
l.logger.Info(l.ctx, "@devcontainer/cli", slog.F("line", string(line)))
_, _ = l.writer.Write([]byte(strings.TrimSpace(logLine.Text) + "\n"))
continue
}
// If we've successfully parsed the final log line, it will successfully parse
// but will not fill out any of the fields for `logLine`. In this scenario we
// assume it is the final log line, unmarshal it as that, and check if the
// outcome is a non-empty string.
if logLine.Level == 0 {
var lastLine devcontainerCLIResult
if err := json.Unmarshal(line, &lastLine); err == nil && lastLine.Outcome != "" {
_, _ = l.writer.Write(line)
_, _ = l.writer.Write([]byte{'\n'})
}
}
l.logger.Debug(l.ctx, "@devcontainer/cli", slog.F("line", string(line)))
}
if err := s.Err(); err != nil {
l.logger.Error(l.ctx, "devcontainer log line scan failed", slog.Error(err))
}
return len(p), nil
}
@@ -0,0 +1,750 @@
package agentcontainers_test
import (
"bytes"
"context"
"encoding/json"
"errors"
"flag"
"fmt"
"io"
"os"
"os/exec"
"path/filepath"
"runtime"
"strings"
"testing"
"github.com/google/go-cmp/cmp"
"github.com/ory/dockertest/v3"
"github.com/ory/dockertest/v3/docker"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"cdr.dev/slog"
"cdr.dev/slog/sloggers/slogtest"
"github.com/coder/coder/v2/agent/agentcontainers"
"github.com/coder/coder/v2/agent/agentexec"
"github.com/coder/coder/v2/codersdk"
"github.com/coder/coder/v2/pty"
"github.com/coder/coder/v2/testutil"
)
func TestDevcontainerCLI_ArgsAndParsing(t *testing.T) {
t.Parallel()
testExePath, err := os.Executable()
require.NoError(t, err, "get test executable path")
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: true}).Leveled(slog.LevelDebug)
t.Run("Up", func(t *testing.T) {
t.Parallel()
tests := []struct {
name string
logFile string
workspace string
config string
opts []agentcontainers.DevcontainerCLIUpOptions
wantArgs string
wantError bool
}{
{
name: "success",
logFile: "up.log",
workspace: "/test/workspace",
wantArgs: "up --log-format json --workspace-folder /test/workspace",
wantError: false,
},
{
name: "success with config",
logFile: "up.log",
workspace: "/test/workspace",
config: "/test/config.json",
wantArgs: "up --log-format json --workspace-folder /test/workspace --config /test/config.json",
wantError: false,
},
{
name: "already exists",
logFile: "up-already-exists.log",
workspace: "/test/workspace",
wantArgs: "up --log-format json --workspace-folder /test/workspace",
wantError: false,
},
{
name: "docker error",
logFile: "up-error-docker.log",
workspace: "/test/workspace",
wantArgs: "up --log-format json --workspace-folder /test/workspace",
wantError: true,
},
{
name: "bad outcome",
logFile: "up-error-bad-outcome.log",
workspace: "/test/workspace",
wantArgs: "up --log-format json --workspace-folder /test/workspace",
wantError: true,
},
{
name: "does not exist",
logFile: "up-error-does-not-exist.log",
workspace: "/test/workspace",
wantArgs: "up --log-format json --workspace-folder /test/workspace",
wantError: true,
},
{
name: "with remove existing container",
logFile: "up.log",
workspace: "/test/workspace",
opts: []agentcontainers.DevcontainerCLIUpOptions{
agentcontainers.WithRemoveExistingContainer(),
},
wantArgs: "up --log-format json --workspace-folder /test/workspace --remove-existing-container",
wantError: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitMedium)
testExecer := &testDevcontainerExecer{
testExePath: testExePath,
wantArgs: tt.wantArgs,
wantError: tt.wantError,
logFile: filepath.Join("testdata", "devcontainercli", "parse", tt.logFile),
}
dccli := agentcontainers.NewDevcontainerCLI(logger, testExecer)
containerID, err := dccli.Up(ctx, tt.workspace, tt.config, tt.opts...)
if tt.wantError {
assert.Error(t, err, "want error")
assert.Empty(t, containerID, "expected empty container ID")
} else {
assert.NoError(t, err, "want no error")
assert.NotEmpty(t, containerID, "expected non-empty container ID")
}
})
}
})
t.Run("Exec", func(t *testing.T) {
t.Parallel()
tests := []struct {
name string
workspaceFolder string
configPath string
cmd string
cmdArgs []string
opts []agentcontainers.DevcontainerCLIExecOptions
wantArgs string
wantError bool
}{
{
name: "simple command",
workspaceFolder: "/test/workspace",
configPath: "",
cmd: "echo",
cmdArgs: []string{"hello"},
wantArgs: "exec --workspace-folder /test/workspace echo hello",
wantError: false,
},
{
name: "command with multiple args",
workspaceFolder: "/test/workspace",
configPath: "/test/config.json",
cmd: "ls",
cmdArgs: []string{"-la", "/workspace"},
wantArgs: "exec --workspace-folder /test/workspace --config /test/config.json ls -la /workspace",
wantError: false,
},
{
name: "empty command args",
workspaceFolder: "/test/workspace",
configPath: "",
cmd: "bash",
cmdArgs: nil,
wantArgs: "exec --workspace-folder /test/workspace bash",
wantError: false,
},
{
name: "workspace not found",
workspaceFolder: "/nonexistent/workspace",
configPath: "",
cmd: "echo",
cmdArgs: []string{"test"},
wantArgs: "exec --workspace-folder /nonexistent/workspace echo test",
wantError: true,
},
{
name: "with container ID",
workspaceFolder: "/test/workspace",
configPath: "",
cmd: "echo",
cmdArgs: []string{"hello"},
opts: []agentcontainers.DevcontainerCLIExecOptions{agentcontainers.WithExecContainerID("test-container-123")},
wantArgs: "exec --workspace-folder /test/workspace --container-id test-container-123 echo hello",
wantError: false,
},
{
name: "with container ID and config",
workspaceFolder: "/test/workspace",
configPath: "/test/config.json",
cmd: "bash",
cmdArgs: []string{"-c", "ls -la"},
opts: []agentcontainers.DevcontainerCLIExecOptions{agentcontainers.WithExecContainerID("my-container")},
wantArgs: "exec --workspace-folder /test/workspace --config /test/config.json --container-id my-container bash -c ls -la",
wantError: false,
},
{
name: "with container ID and output capture",
workspaceFolder: "/test/workspace",
configPath: "",
cmd: "cat",
cmdArgs: []string{"/etc/hostname"},
opts: []agentcontainers.DevcontainerCLIExecOptions{
agentcontainers.WithExecContainerID("test-container-789"),
},
wantArgs: "exec --workspace-folder /test/workspace --container-id test-container-789 cat /etc/hostname",
wantError: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitMedium)
testExecer := &testDevcontainerExecer{
testExePath: testExePath,
wantArgs: tt.wantArgs,
wantError: tt.wantError,
logFile: "", // Exec doesn't need log file parsing
}
dccli := agentcontainers.NewDevcontainerCLI(logger, testExecer)
err := dccli.Exec(ctx, tt.workspaceFolder, tt.configPath, tt.cmd, tt.cmdArgs, tt.opts...)
if tt.wantError {
assert.Error(t, err, "want error")
} else {
assert.NoError(t, err, "want no error")
}
})
}
})
t.Run("ReadConfig", func(t *testing.T) {
t.Parallel()
tests := []struct {
name string
logFile string
workspaceFolder string
configPath string
opts []agentcontainers.DevcontainerCLIReadConfigOptions
wantArgs string
wantError bool
wantConfig agentcontainers.DevcontainerConfig
}{
{
name: "WithCoderCustomization",
logFile: "read-config-with-coder-customization.log",
workspaceFolder: "/test/workspace",
configPath: "",
wantArgs: "read-configuration --include-merged-configuration --workspace-folder /test/workspace",
wantError: false,
wantConfig: agentcontainers.DevcontainerConfig{
MergedConfiguration: agentcontainers.DevcontainerMergedConfiguration{
Customizations: agentcontainers.DevcontainerMergedCustomizations{
Coder: []agentcontainers.CoderCustomization{
{
DisplayApps: map[codersdk.DisplayApp]bool{
codersdk.DisplayAppVSCodeDesktop: true,
codersdk.DisplayAppWebTerminal: true,
},
},
{
DisplayApps: map[codersdk.DisplayApp]bool{
codersdk.DisplayAppVSCodeInsiders: true,
codersdk.DisplayAppWebTerminal: false,
},
},
},
},
},
},
},
{
name: "WithoutCoderCustomization",
logFile: "read-config-without-coder-customization.log",
workspaceFolder: "/test/workspace",
configPath: "/test/config.json",
wantArgs: "read-configuration --include-merged-configuration --workspace-folder /test/workspace --config /test/config.json",
wantError: false,
wantConfig: agentcontainers.DevcontainerConfig{
MergedConfiguration: agentcontainers.DevcontainerMergedConfiguration{
Customizations: agentcontainers.DevcontainerMergedCustomizations{
Coder: nil,
},
},
},
},
{
name: "FileNotFound",
logFile: "read-config-error-not-found.log",
workspaceFolder: "/nonexistent/workspace",
configPath: "",
wantArgs: "read-configuration --include-merged-configuration --workspace-folder /nonexistent/workspace",
wantError: true,
wantConfig: agentcontainers.DevcontainerConfig{},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitMedium)
testExecer := &testDevcontainerExecer{
testExePath: testExePath,
wantArgs: tt.wantArgs,
wantError: tt.wantError,
logFile: filepath.Join("testdata", "devcontainercli", "readconfig", tt.logFile),
}
dccli := agentcontainers.NewDevcontainerCLI(logger, testExecer)
config, err := dccli.ReadConfig(ctx, tt.workspaceFolder, tt.configPath, []string{}, tt.opts...)
if tt.wantError {
assert.Error(t, err, "want error")
assert.Equal(t, agentcontainers.DevcontainerConfig{}, config, "expected empty config on error")
} else {
assert.NoError(t, err, "want no error")
assert.Equal(t, tt.wantConfig, config, "expected config to match")
}
})
}
})
}
// TestDevcontainerCLI_WithOutput tests that WithUpOutput and WithExecOutput capture CLI
// logs to provided writers.
func TestDevcontainerCLI_WithOutput(t *testing.T) {
t.Parallel()
// Prepare test executable and logger.
testExePath, err := os.Executable()
require.NoError(t, err, "get test executable path")
t.Run("Up", func(t *testing.T) {
t.Parallel()
if runtime.GOOS == "windows" {
t.Skip("Windows uses CRLF line endings, golden file is LF")
}
// Buffers to capture stdout and stderr.
outBuf := &bytes.Buffer{}
errBuf := &bytes.Buffer{}
// Simulate CLI execution with a standard up.log file.
wantArgs := "up --log-format json --workspace-folder /test/workspace"
testExecer := &testDevcontainerExecer{
testExePath: testExePath,
wantArgs: wantArgs,
wantError: false,
logFile: filepath.Join("testdata", "devcontainercli", "parse", "up.log"),
}
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: true}).Leveled(slog.LevelDebug)
dccli := agentcontainers.NewDevcontainerCLI(logger, testExecer)
// Call Up with WithUpOutput to capture CLI logs.
ctx := testutil.Context(t, testutil.WaitMedium)
containerID, err := dccli.Up(ctx, "/test/workspace", "", agentcontainers.WithUpOutput(outBuf, errBuf))
require.NoError(t, err, "Up should succeed")
require.NotEmpty(t, containerID, "expected non-empty container ID")
// Read expected log content.
expLog, err := os.ReadFile(filepath.Join("testdata", "devcontainercli", "parse", "up.golden"))
require.NoError(t, err, "reading expected log file")
// Verify stdout buffer contains the CLI logs and stderr is empty.
assert.Equal(t, string(expLog), outBuf.String(), "stdout buffer should match CLI logs")
assert.Empty(t, errBuf.String(), "stderr buffer should be empty on success")
})
t.Run("Exec", func(t *testing.T) {
t.Parallel()
logFile := filepath.Join(t.TempDir(), "exec.log")
f, err := os.Create(logFile)
require.NoError(t, err, "create exec log file")
_, err = f.WriteString("exec command log\n")
require.NoError(t, err, "write to exec log file")
err = f.Close()
require.NoError(t, err, "close exec log file")
// Buffers to capture stdout and stderr.
outBuf := &bytes.Buffer{}
errBuf := &bytes.Buffer{}
// Simulate CLI execution for exec command with container ID.
wantArgs := "exec --workspace-folder /test/workspace --container-id test-container-456 echo hello"
testExecer := &testDevcontainerExecer{
testExePath: testExePath,
wantArgs: wantArgs,
wantError: false,
logFile: logFile,
}
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: true}).Leveled(slog.LevelDebug)
dccli := agentcontainers.NewDevcontainerCLI(logger, testExecer)
// Call Exec with WithExecOutput and WithContainerID to capture any command output.
ctx := testutil.Context(t, testutil.WaitMedium)
err = dccli.Exec(ctx, "/test/workspace", "", "echo", []string{"hello"},
agentcontainers.WithExecContainerID("test-container-456"),
agentcontainers.WithExecOutput(outBuf, errBuf),
)
require.NoError(t, err, "Exec should succeed")
assert.NotEmpty(t, outBuf.String(), "stdout buffer should not be empty for exec with log file")
assert.Empty(t, errBuf.String(), "stderr buffer should be empty")
})
}
// testDevcontainerExecer implements the agentexec.Execer interface for testing.
type testDevcontainerExecer struct {
testExePath string
wantArgs string
wantError bool
logFile string
}
// CommandContext returns a test binary command that simulates devcontainer responses.
func (e *testDevcontainerExecer) CommandContext(ctx context.Context, name string, args ...string) *exec.Cmd {
// Only handle "devcontainer" commands.
if name != "devcontainer" {
// For non-devcontainer commands, use a standard execer.
return agentexec.DefaultExecer.CommandContext(ctx, name, args...)
}
// Create a command that runs the test binary with special flags
// that tell it to simulate a devcontainer command.
testArgs := []string{
"-test.run=TestDevcontainerHelperProcess",
"--",
name,
}
testArgs = append(testArgs, args...)
//nolint:gosec // This is a test binary, so we don't need to worry about command injection.
cmd := exec.CommandContext(ctx, e.testExePath, testArgs...)
// Set this environment variable so the child process knows it's the helper.
cmd.Env = append(os.Environ(),
"TEST_DEVCONTAINER_WANT_HELPER_PROCESS=1",
"TEST_DEVCONTAINER_WANT_ARGS="+e.wantArgs,
"TEST_DEVCONTAINER_WANT_ERROR="+fmt.Sprintf("%v", e.wantError),
"TEST_DEVCONTAINER_LOG_FILE="+e.logFile,
)
return cmd
}
// PTYCommandContext returns a PTY command.
func (*testDevcontainerExecer) PTYCommandContext(_ context.Context, name string, args ...string) *pty.Cmd {
// This method shouldn't be called for our devcontainer tests.
panic("PTYCommandContext not expected in devcontainer tests")
}
// This is a special test helper that is executed as a subprocess.
// It simulates the behavior of the devcontainer CLI.
//
//nolint:revive,paralleltest // This is a test helper function.
func TestDevcontainerHelperProcess(t *testing.T) {
// If not called by the test as a helper process, do nothing.
if os.Getenv("TEST_DEVCONTAINER_WANT_HELPER_PROCESS") != "1" {
return
}
helperArgs := flag.Args()
if len(helperArgs) < 1 {
fmt.Fprintf(os.Stderr, "No command\n")
os.Exit(2)
}
if helperArgs[0] != "devcontainer" {
fmt.Fprintf(os.Stderr, "Unknown command: %s\n", helperArgs[0])
os.Exit(2)
}
// Verify arguments against expected arguments and skip
// "devcontainer", it's not included in the input args.
wantArgs := os.Getenv("TEST_DEVCONTAINER_WANT_ARGS")
gotArgs := strings.Join(helperArgs[1:], " ")
if gotArgs != wantArgs {
fmt.Fprintf(os.Stderr, "Arguments don't match.\nWant: %q\nGot: %q\n",
wantArgs, gotArgs)
os.Exit(2)
}
logFilePath := os.Getenv("TEST_DEVCONTAINER_LOG_FILE")
if logFilePath != "" {
// Read and output log file for commands that need it (like "up")
output, err := os.ReadFile(logFilePath)
if err != nil {
fmt.Fprintf(os.Stderr, "Reading log file %s failed: %v\n", logFilePath, err)
os.Exit(2)
}
_, _ = io.Copy(os.Stdout, bytes.NewReader(output))
}
if os.Getenv("TEST_DEVCONTAINER_WANT_ERROR") == "true" {
os.Exit(1)
}
os.Exit(0)
}
// TestDockerDevcontainerCLI tests the DevcontainerCLI component with real Docker containers.
// This test verifies that containers can be created and recreated using the actual
// devcontainer CLI and Docker. It is skipped by default and can be run with:
//
// CODER_TEST_USE_DOCKER=1 go test ./agent/agentcontainers -run TestDockerDevcontainerCLI
//
// The test requires Docker to be installed and running.
func TestDockerDevcontainerCLI(t *testing.T) {
t.Parallel()
if os.Getenv("CODER_TEST_USE_DOCKER") != "1" {
t.Skip("skipping Docker test; set CODER_TEST_USE_DOCKER=1 to run")
}
if _, err := exec.LookPath("devcontainer"); err != nil {
t.Fatal("this test requires the devcontainer CLI: npm install -g @devcontainers/cli")
}
// Connect to Docker.
pool, err := dockertest.NewPool("")
require.NoError(t, err, "connect to Docker")
t.Run("ContainerLifecycle", func(t *testing.T) {
t.Parallel()
// Set up workspace directory with a devcontainer configuration.
workspaceFolder := t.TempDir()
configPath := setupDevcontainerWorkspace(t, workspaceFolder)
// Use a long timeout because container operations are slow.
ctx := testutil.Context(t, testutil.WaitLong)
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: true}).Leveled(slog.LevelDebug)
// Create the devcontainer CLI under test.
dccli := agentcontainers.NewDevcontainerCLI(logger, agentexec.DefaultExecer)
// Create a container.
firstID, err := dccli.Up(ctx, workspaceFolder, configPath)
require.NoError(t, err, "create container")
require.NotEmpty(t, firstID, "container ID should not be empty")
defer removeDevcontainerByID(t, pool, firstID)
// Verify container exists.
firstContainer, found := findDevcontainerByID(t, pool, firstID)
require.True(t, found, "container should exist")
// Remember the container creation time.
firstCreated := firstContainer.Created
// Recreate the container.
secondID, err := dccli.Up(ctx, workspaceFolder, configPath, agentcontainers.WithRemoveExistingContainer())
require.NoError(t, err, "recreate container")
require.NotEmpty(t, secondID, "recreated container ID should not be empty")
defer removeDevcontainerByID(t, pool, secondID)
// Verify the new container exists and is different.
secondContainer, found := findDevcontainerByID(t, pool, secondID)
require.True(t, found, "recreated container should exist")
// Verify it's a different container by checking creation time.
secondCreated := secondContainer.Created
assert.NotEqual(t, firstCreated, secondCreated, "recreated container should have different creation time")
// Verify the first container is removed by the recreation.
_, found = findDevcontainerByID(t, pool, firstID)
assert.False(t, found, "first container should be removed")
})
}
// setupDevcontainerWorkspace prepares a test environment with a minimal
// devcontainer.json configuration and returns the path to the config file.
func setupDevcontainerWorkspace(t *testing.T, workspaceFolder string) string {
t.Helper()
// Create the devcontainer directory structure.
devcontainerDir := filepath.Join(workspaceFolder, ".devcontainer")
err := os.MkdirAll(devcontainerDir, 0o755)
require.NoError(t, err, "create .devcontainer directory")
// Write a minimal configuration with test labels for identification.
configPath := filepath.Join(devcontainerDir, "devcontainer.json")
content := `{
"image": "alpine:latest",
"containerEnv": {
"TEST_CONTAINER": "true"
},
"runArgs": ["--label=com.coder.test=devcontainercli", "--label=` + agentcontainers.DevcontainerIsTestRunLabel + `=true"]
}`
err = os.WriteFile(configPath, []byte(content), 0o600)
require.NoError(t, err, "create devcontainer.json file")
return configPath
}
// findDevcontainerByID locates a container by its ID and verifies it has our
// test label. Returns the container and whether it was found.
func findDevcontainerByID(t *testing.T, pool *dockertest.Pool, id string) (*docker.Container, bool) {
t.Helper()
container, err := pool.Client.InspectContainer(id)
if err != nil {
t.Logf("Inspect container failed: %v", err)
return nil, false
}
require.Equal(t, "devcontainercli", container.Config.Labels["com.coder.test"], "sanity check failed: container should have the test label")
return container, true
}
// removeDevcontainerByID safely cleans up a test container by ID, verifying
// it has our test label before removal to prevent accidental deletion.
func removeDevcontainerByID(t *testing.T, pool *dockertest.Pool, id string) {
t.Helper()
errNoSuchContainer := &docker.NoSuchContainer{}
// Check if the container has the expected label.
container, err := pool.Client.InspectContainer(id)
if err != nil {
if errors.As(err, &errNoSuchContainer) {
t.Logf("Container %s not found, skipping removal", id)
return
}
require.NoError(t, err, "inspect container")
}
require.Equal(t, "devcontainercli", container.Config.Labels["com.coder.test"], "sanity check failed: container should have the test label")
t.Logf("Removing container with ID: %s", id)
err = pool.Client.RemoveContainer(docker.RemoveContainerOptions{
ID: container.ID,
Force: true,
RemoveVolumes: true,
})
if err != nil && !errors.As(err, &errNoSuchContainer) {
assert.NoError(t, err, "remove container failed")
}
}
func TestDevcontainerFeatures_OptionsAsEnvs(t *testing.T) {
t.Parallel()
realConfigJSON := `{
"mergedConfiguration": {
"features": {
"./code-server": {
"port": 9090
},
"ghcr.io/devcontainers/features/docker-in-docker:2": {
"moby": "false"
}
}
}
}`
var realConfig agentcontainers.DevcontainerConfig
err := json.Unmarshal([]byte(realConfigJSON), &realConfig)
require.NoError(t, err, "unmarshal JSON payload")
tests := []struct {
name string
features agentcontainers.DevcontainerFeatures
want []string
}{
{
name: "code-server feature",
features: agentcontainers.DevcontainerFeatures{
"./code-server": map[string]any{
"port": 9090,
},
},
want: []string{
"FEATURE_CODE_SERVER_OPTION_PORT=9090",
},
},
{
name: "docker-in-docker feature",
features: agentcontainers.DevcontainerFeatures{
"ghcr.io/devcontainers/features/docker-in-docker:2": map[string]any{
"moby": "false",
},
},
want: []string{
"FEATURE_DOCKER_IN_DOCKER_OPTION_MOBY=false",
},
},
{
name: "multiple features with multiple options",
features: agentcontainers.DevcontainerFeatures{
"./code-server": map[string]any{
"port": 9090,
"password": "secret",
},
"ghcr.io/devcontainers/features/docker-in-docker:2": map[string]any{
"moby": "false",
"docker-dash-compose-version": "v2",
},
},
want: []string{
"FEATURE_CODE_SERVER_OPTION_PASSWORD=secret",
"FEATURE_CODE_SERVER_OPTION_PORT=9090",
"FEATURE_DOCKER_IN_DOCKER_OPTION_DOCKER_DASH_COMPOSE_VERSION=v2",
"FEATURE_DOCKER_IN_DOCKER_OPTION_MOBY=false",
},
},
{
name: "feature with non-map value (should be ignored)",
features: agentcontainers.DevcontainerFeatures{
"./code-server": map[string]any{
"port": 9090,
},
"./invalid-feature": "not-a-map",
},
want: []string{
"FEATURE_CODE_SERVER_OPTION_PORT=9090",
},
},
{
name: "real config example",
features: realConfig.MergedConfiguration.Features,
want: []string{
"FEATURE_CODE_SERVER_OPTION_PORT=9090",
"FEATURE_DOCKER_IN_DOCKER_OPTION_MOBY=false",
},
},
{
name: "empty features",
features: agentcontainers.DevcontainerFeatures{},
want: nil,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
got := tt.features.OptionsAsEnvs()
if diff := cmp.Diff(tt.want, got); diff != "" {
require.Failf(t, "OptionsAsEnvs() mismatch (-want +got):\n%s", diff)
}
})
}
}
+80
View File
@@ -0,0 +1,80 @@
package agentcontainers
import (
"context"
"fmt"
"os/exec"
"runtime"
"strings"
"cdr.dev/slog"
"github.com/coder/coder/v2/agent/agentexec"
"github.com/coder/coder/v2/agent/usershell"
"github.com/coder/coder/v2/pty"
)
// CommandEnv is a function that returns the shell, working directory,
// and environment variables to use when executing a command. It takes
// an EnvInfoer and a pre-existing environment slice as arguments.
// This signature matches agentssh.Server.CommandEnv.
type CommandEnv func(ei usershell.EnvInfoer, addEnv []string) (shell, dir string, env []string, err error)
// commandEnvExecer is an agentexec.Execer that uses a CommandEnv to
// determine the shell, working directory, and environment variables
// for commands. It wraps another agentexec.Execer to provide the
// necessary context.
type commandEnvExecer struct {
logger slog.Logger
commandEnv CommandEnv
execer agentexec.Execer
}
func newCommandEnvExecer(
logger slog.Logger,
commandEnv CommandEnv,
execer agentexec.Execer,
) *commandEnvExecer {
return &commandEnvExecer{
logger: logger,
commandEnv: commandEnv,
execer: execer,
}
}
// Ensure commandEnvExecer implements agentexec.Execer.
var _ agentexec.Execer = (*commandEnvExecer)(nil)
func (e *commandEnvExecer) prepare(ctx context.Context, inName string, inArgs ...string) (name string, args []string, dir string, env []string) {
shell, dir, env, err := e.commandEnv(nil, nil)
if err != nil {
e.logger.Error(ctx, "get command environment failed", slog.Error(err))
return inName, inArgs, "", nil
}
caller := "-c"
if runtime.GOOS == "windows" {
caller = "/c"
}
name = shell
for _, arg := range append([]string{inName}, inArgs...) {
args = append(args, fmt.Sprintf("%q", arg))
}
args = []string{caller, strings.Join(args, " ")}
return name, args, dir, env
}
func (e *commandEnvExecer) CommandContext(ctx context.Context, cmd string, args ...string) *exec.Cmd {
name, args, dir, env := e.prepare(ctx, cmd, args...)
c := e.execer.CommandContext(ctx, name, args...)
c.Dir = dir
c.Env = env
return c
}
func (e *commandEnvExecer) PTYCommandContext(ctx context.Context, cmd string, args ...string) *pty.Cmd {
name, args, dir, env := e.prepare(ctx, cmd, args...)
c := e.execer.PTYCommandContext(ctx, name, args...)
c.Dir = dir
c.Env = env
return c
}
+124
View File
@@ -0,0 +1,124 @@
package ignore
import (
"bytes"
"context"
"errors"
"io/fs"
"os"
"path/filepath"
"strings"
"github.com/go-git/go-git/v5/plumbing/format/config"
"github.com/go-git/go-git/v5/plumbing/format/gitignore"
"github.com/spf13/afero"
"golang.org/x/xerrors"
"cdr.dev/slog"
)
const (
gitconfigFile = ".gitconfig"
gitignoreFile = ".gitignore"
gitInfoExcludeFile = ".git/info/exclude"
)
func FilePathToParts(path string) []string {
components := []string{}
if path == "" {
return components
}
for segment := range strings.SplitSeq(filepath.Clean(path), string(filepath.Separator)) {
if segment != "" {
components = append(components, segment)
}
}
return components
}
func readIgnoreFile(fileSystem afero.Fs, path, ignore string) ([]gitignore.Pattern, error) {
var ps []gitignore.Pattern
data, err := afero.ReadFile(fileSystem, filepath.Join(path, ignore))
if err != nil && !errors.Is(err, os.ErrNotExist) {
return nil, err
}
for s := range strings.SplitSeq(string(data), "\n") {
if !strings.HasPrefix(s, "#") && len(strings.TrimSpace(s)) > 0 {
ps = append(ps, gitignore.ParsePattern(s, FilePathToParts(path)))
}
}
return ps, nil
}
func ReadPatterns(ctx context.Context, logger slog.Logger, fileSystem afero.Fs, path string) ([]gitignore.Pattern, error) {
var ps []gitignore.Pattern
subPs, err := readIgnoreFile(fileSystem, path, gitInfoExcludeFile)
if err != nil {
return nil, err
}
ps = append(ps, subPs...)
if err := afero.Walk(fileSystem, path, func(path string, info fs.FileInfo, err error) error {
if err != nil {
logger.Error(ctx, "encountered error while walking for git ignore files",
slog.F("path", path),
slog.Error(err))
return nil
}
if !info.IsDir() {
return nil
}
subPs, err := readIgnoreFile(fileSystem, path, gitignoreFile)
if err != nil {
return err
}
ps = append(ps, subPs...)
return nil
}); err != nil {
return nil, err
}
return ps, nil
}
func loadPatterns(fileSystem afero.Fs, path string) ([]gitignore.Pattern, error) {
data, err := afero.ReadFile(fileSystem, path)
if err != nil && !errors.Is(err, os.ErrNotExist) {
return nil, err
}
decoder := config.NewDecoder(bytes.NewBuffer(data))
conf := config.New()
if err := decoder.Decode(conf); err != nil {
return nil, xerrors.Errorf("decode config: %w", err)
}
excludes := conf.Section("core").Options.Get("excludesfile")
if excludes == "" {
return nil, nil
}
return readIgnoreFile(fileSystem, "", excludes)
}
func LoadGlobalPatterns(fileSystem afero.Fs) ([]gitignore.Pattern, error) {
home, err := os.UserHomeDir()
if err != nil {
return nil, err
}
return loadPatterns(fileSystem, filepath.Join(home, gitconfigFile))
}
+38
View File
@@ -0,0 +1,38 @@
package ignore_test
import (
"fmt"
"testing"
"github.com/stretchr/testify/require"
"github.com/coder/coder/v2/agent/agentcontainers/ignore"
)
func TestFilePathToParts(t *testing.T) {
t.Parallel()
tests := []struct {
path string
expected []string
}{
{"", []string{}},
{"/", []string{}},
{"foo", []string{"foo"}},
{"/foo", []string{"foo"}},
{"./foo/bar", []string{"foo", "bar"}},
{"../foo/bar", []string{"..", "foo", "bar"}},
{"foo/bar/baz", []string{"foo", "bar", "baz"}},
{"/foo/bar/baz", []string{"foo", "bar", "baz"}},
{"foo/../bar", []string{"bar"}},
}
for _, tt := range tests {
t.Run(fmt.Sprintf("`%s`", tt.path), func(t *testing.T) {
t.Parallel()
parts := ignore.FilePathToParts(tt.path)
require.Equal(t, tt.expected, parts)
})
}
}
+294
View File
@@ -0,0 +1,294 @@
package agentcontainers
import (
"context"
"slices"
"github.com/google/uuid"
"golang.org/x/xerrors"
"cdr.dev/slog"
agentproto "github.com/coder/coder/v2/agent/proto"
"github.com/coder/coder/v2/codersdk"
)
// SubAgent represents an agent running in a dev container.
type SubAgent struct {
ID uuid.UUID
Name string
AuthToken uuid.UUID
Directory string
Architecture string
OperatingSystem string
Apps []SubAgentApp
DisplayApps []codersdk.DisplayApp
}
// CloneConfig makes a copy of SubAgent without ID and AuthToken. The
// name is inherited from the devcontainer.
func (s SubAgent) CloneConfig(dc codersdk.WorkspaceAgentDevcontainer) SubAgent {
return SubAgent{
Name: dc.Name,
Directory: s.Directory,
Architecture: s.Architecture,
OperatingSystem: s.OperatingSystem,
DisplayApps: slices.Clone(s.DisplayApps),
Apps: slices.Clone(s.Apps),
}
}
func (s SubAgent) EqualConfig(other SubAgent) bool {
return s.Name == other.Name &&
s.Directory == other.Directory &&
s.Architecture == other.Architecture &&
s.OperatingSystem == other.OperatingSystem &&
slices.Equal(s.DisplayApps, other.DisplayApps) &&
slices.Equal(s.Apps, other.Apps)
}
type SubAgentApp struct {
Slug string `json:"slug"`
Command string `json:"command"`
DisplayName string `json:"displayName"`
External bool `json:"external"`
Group string `json:"group"`
HealthCheck SubAgentHealthCheck `json:"healthCheck"`
Hidden bool `json:"hidden"`
Icon string `json:"icon"`
OpenIn codersdk.WorkspaceAppOpenIn `json:"openIn"`
Order int32 `json:"order"`
Share codersdk.WorkspaceAppSharingLevel `json:"share"`
Subdomain bool `json:"subdomain"`
URL string `json:"url"`
}
func (app SubAgentApp) ToProtoApp() (*agentproto.CreateSubAgentRequest_App, error) {
proto := agentproto.CreateSubAgentRequest_App{
Slug: app.Slug,
External: &app.External,
Hidden: &app.Hidden,
Order: &app.Order,
Subdomain: &app.Subdomain,
}
if app.Command != "" {
proto.Command = &app.Command
}
if app.DisplayName != "" {
proto.DisplayName = &app.DisplayName
}
if app.Group != "" {
proto.Group = &app.Group
}
if app.Icon != "" {
proto.Icon = &app.Icon
}
if app.URL != "" {
proto.Url = &app.URL
}
if app.HealthCheck.URL != "" {
proto.Healthcheck = &agentproto.CreateSubAgentRequest_App_Healthcheck{
Interval: app.HealthCheck.Interval,
Threshold: app.HealthCheck.Threshold,
Url: app.HealthCheck.URL,
}
}
if app.OpenIn != "" {
switch app.OpenIn {
case codersdk.WorkspaceAppOpenInSlimWindow:
proto.OpenIn = agentproto.CreateSubAgentRequest_App_SLIM_WINDOW.Enum()
case codersdk.WorkspaceAppOpenInTab:
proto.OpenIn = agentproto.CreateSubAgentRequest_App_TAB.Enum()
default:
return nil, xerrors.Errorf("unexpected codersdk.WorkspaceAppOpenIn: %#v", app.OpenIn)
}
}
if app.Share != "" {
switch app.Share {
case codersdk.WorkspaceAppSharingLevelAuthenticated:
proto.Share = agentproto.CreateSubAgentRequest_App_AUTHENTICATED.Enum()
case codersdk.WorkspaceAppSharingLevelOwner:
proto.Share = agentproto.CreateSubAgentRequest_App_OWNER.Enum()
case codersdk.WorkspaceAppSharingLevelPublic:
proto.Share = agentproto.CreateSubAgentRequest_App_PUBLIC.Enum()
case codersdk.WorkspaceAppSharingLevelOrganization:
proto.Share = agentproto.CreateSubAgentRequest_App_ORGANIZATION.Enum()
default:
return nil, xerrors.Errorf("unexpected codersdk.WorkspaceAppSharingLevel: %#v", app.Share)
}
}
return &proto, nil
}
type SubAgentHealthCheck struct {
Interval int32 `json:"interval"`
Threshold int32 `json:"threshold"`
URL string `json:"url"`
}
// SubAgentClient is an interface for managing sub agents and allows
// changing the implementation without having to deal with the
// agentproto package directly.
type SubAgentClient interface {
// List returns a list of all agents.
List(ctx context.Context) ([]SubAgent, error)
// Create adds a new agent.
Create(ctx context.Context, agent SubAgent) (SubAgent, error)
// Delete removes an agent by its ID.
Delete(ctx context.Context, id uuid.UUID) error
}
// NewSubAgentClient returns a SubAgentClient that uses the provided
// agent API client.
type subAgentAPIClient struct {
logger slog.Logger
api agentproto.DRPCAgentClient26
}
var _ SubAgentClient = (*subAgentAPIClient)(nil)
func NewSubAgentClientFromAPI(logger slog.Logger, agentAPI agentproto.DRPCAgentClient26) SubAgentClient {
if agentAPI == nil {
panic("developer error: agentAPI cannot be nil")
}
return &subAgentAPIClient{
logger: logger.Named("subagentclient"),
api: agentAPI,
}
}
func (a *subAgentAPIClient) List(ctx context.Context) ([]SubAgent, error) {
a.logger.Debug(ctx, "listing sub agents")
resp, err := a.api.ListSubAgents(ctx, &agentproto.ListSubAgentsRequest{})
if err != nil {
return nil, err
}
agents := make([]SubAgent, len(resp.Agents))
for i, agent := range resp.Agents {
id, err := uuid.FromBytes(agent.GetId())
if err != nil {
return nil, err
}
authToken, err := uuid.FromBytes(agent.GetAuthToken())
if err != nil {
return nil, err
}
agents[i] = SubAgent{
ID: id,
Name: agent.GetName(),
AuthToken: authToken,
}
}
return agents, nil
}
func (a *subAgentAPIClient) Create(ctx context.Context, agent SubAgent) (_ SubAgent, err error) {
a.logger.Debug(ctx, "creating sub agent", slog.F("name", agent.Name), slog.F("directory", agent.Directory))
displayApps := make([]agentproto.CreateSubAgentRequest_DisplayApp, 0, len(agent.DisplayApps))
for _, displayApp := range agent.DisplayApps {
var app agentproto.CreateSubAgentRequest_DisplayApp
switch displayApp {
case codersdk.DisplayAppPortForward:
app = agentproto.CreateSubAgentRequest_PORT_FORWARDING_HELPER
case codersdk.DisplayAppSSH:
app = agentproto.CreateSubAgentRequest_SSH_HELPER
case codersdk.DisplayAppVSCodeDesktop:
app = agentproto.CreateSubAgentRequest_VSCODE
case codersdk.DisplayAppVSCodeInsiders:
app = agentproto.CreateSubAgentRequest_VSCODE_INSIDERS
case codersdk.DisplayAppWebTerminal:
app = agentproto.CreateSubAgentRequest_WEB_TERMINAL
default:
return SubAgent{}, xerrors.Errorf("unexpected codersdk.DisplayApp: %#v", displayApp)
}
displayApps = append(displayApps, app)
}
apps := make([]*agentproto.CreateSubAgentRequest_App, 0, len(agent.Apps))
for _, app := range agent.Apps {
protoApp, err := app.ToProtoApp()
if err != nil {
return SubAgent{}, xerrors.Errorf("convert app: %w", err)
}
apps = append(apps, protoApp)
}
resp, err := a.api.CreateSubAgent(ctx, &agentproto.CreateSubAgentRequest{
Name: agent.Name,
Directory: agent.Directory,
Architecture: agent.Architecture,
OperatingSystem: agent.OperatingSystem,
DisplayApps: displayApps,
Apps: apps,
})
if err != nil {
return SubAgent{}, err
}
defer func() {
if err != nil {
// Best effort.
_, _ = a.api.DeleteSubAgent(ctx, &agentproto.DeleteSubAgentRequest{
Id: resp.GetAgent().GetId(),
})
}
}()
agent.Name = resp.GetAgent().GetName()
agent.ID, err = uuid.FromBytes(resp.GetAgent().GetId())
if err != nil {
return SubAgent{}, err
}
agent.AuthToken, err = uuid.FromBytes(resp.GetAgent().GetAuthToken())
if err != nil {
return SubAgent{}, err
}
for _, appError := range resp.GetAppCreationErrors() {
app := apps[appError.GetIndex()]
a.logger.Warn(ctx, "unable to create app",
slog.F("agent_name", agent.Name),
slog.F("agent_id", agent.ID),
slog.F("directory", agent.Directory),
slog.F("app_slug", app.Slug),
slog.F("field", appError.GetField()),
slog.F("error", appError.GetError()),
)
}
return agent, nil
}
func (a *subAgentAPIClient) Delete(ctx context.Context, id uuid.UUID) error {
a.logger.Debug(ctx, "deleting sub agent", slog.F("id", id.String()))
_, err := a.api.DeleteSubAgent(ctx, &agentproto.DeleteSubAgentRequest{
Id: id[:],
})
return err
}
// noopSubAgentClient is a SubAgentClient that does nothing.
type noopSubAgentClient struct{}
var _ SubAgentClient = noopSubAgentClient{}
func (noopSubAgentClient) List(_ context.Context) ([]SubAgent, error) {
return nil, nil
}
func (noopSubAgentClient) Create(_ context.Context, _ SubAgent) (SubAgent, error) {
return SubAgent{}, xerrors.New("noopSubAgentClient does not support creating sub agents")
}
func (noopSubAgentClient) Delete(_ context.Context, _ uuid.UUID) error {
return xerrors.New("noopSubAgentClient does not support deleting sub agents")
}
+308
View File
@@ -0,0 +1,308 @@
package agentcontainers_test
import (
"testing"
"github.com/google/uuid"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/coder/coder/v2/agent/agentcontainers"
"github.com/coder/coder/v2/agent/agenttest"
agentproto "github.com/coder/coder/v2/agent/proto"
"github.com/coder/coder/v2/coderd/util/ptr"
"github.com/coder/coder/v2/codersdk"
"github.com/coder/coder/v2/codersdk/agentsdk"
"github.com/coder/coder/v2/tailnet"
"github.com/coder/coder/v2/testutil"
)
func TestSubAgentClient_CreateWithDisplayApps(t *testing.T) {
t.Parallel()
t.Run("CreateWithDisplayApps", func(t *testing.T) {
t.Parallel()
tests := []struct {
name string
displayApps []codersdk.DisplayApp
expectedApps []agentproto.CreateSubAgentRequest_DisplayApp
}{
{
name: "single display app",
displayApps: []codersdk.DisplayApp{codersdk.DisplayAppVSCodeDesktop},
expectedApps: []agentproto.CreateSubAgentRequest_DisplayApp{
agentproto.CreateSubAgentRequest_VSCODE,
},
},
{
name: "multiple display apps",
displayApps: []codersdk.DisplayApp{
codersdk.DisplayAppVSCodeDesktop,
codersdk.DisplayAppSSH,
codersdk.DisplayAppPortForward,
},
expectedApps: []agentproto.CreateSubAgentRequest_DisplayApp{
agentproto.CreateSubAgentRequest_VSCODE,
agentproto.CreateSubAgentRequest_SSH_HELPER,
agentproto.CreateSubAgentRequest_PORT_FORWARDING_HELPER,
},
},
{
name: "all display apps",
displayApps: []codersdk.DisplayApp{
codersdk.DisplayAppPortForward,
codersdk.DisplayAppSSH,
codersdk.DisplayAppVSCodeDesktop,
codersdk.DisplayAppVSCodeInsiders,
codersdk.DisplayAppWebTerminal,
},
expectedApps: []agentproto.CreateSubAgentRequest_DisplayApp{
agentproto.CreateSubAgentRequest_PORT_FORWARDING_HELPER,
agentproto.CreateSubAgentRequest_SSH_HELPER,
agentproto.CreateSubAgentRequest_VSCODE,
agentproto.CreateSubAgentRequest_VSCODE_INSIDERS,
agentproto.CreateSubAgentRequest_WEB_TERMINAL,
},
},
{
name: "no display apps",
displayApps: []codersdk.DisplayApp{},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitShort)
logger := testutil.Logger(t)
statsCh := make(chan *agentproto.Stats)
agentAPI := agenttest.NewClient(t, logger, uuid.New(), agentsdk.Manifest{}, statsCh, tailnet.NewCoordinator(logger))
agentClient, _, err := agentAPI.ConnectRPC26(ctx)
require.NoError(t, err)
subAgentClient := agentcontainers.NewSubAgentClientFromAPI(logger, agentClient)
// When: We create a sub agent with display apps.
subAgent, err := subAgentClient.Create(ctx, agentcontainers.SubAgent{
Name: "sub-agent-" + tt.name,
Directory: "/workspaces/coder",
Architecture: "amd64",
OperatingSystem: "linux",
DisplayApps: tt.displayApps,
})
require.NoError(t, err)
displayApps, err := agentAPI.GetSubAgentDisplayApps(subAgent.ID)
require.NoError(t, err)
// Then: We expect the apps to be created.
require.Equal(t, tt.expectedApps, displayApps)
})
}
})
t.Run("CreateWithApps", func(t *testing.T) {
t.Parallel()
tests := []struct {
name string
apps []agentcontainers.SubAgentApp
expectedApps []*agentproto.CreateSubAgentRequest_App
}{
{
name: "SlugOnly",
apps: []agentcontainers.SubAgentApp{
{
Slug: "code-server",
},
},
expectedApps: []*agentproto.CreateSubAgentRequest_App{
{
Slug: "code-server",
},
},
},
{
name: "AllFields",
apps: []agentcontainers.SubAgentApp{
{
Slug: "jupyter",
Command: "jupyter lab --port=8888",
DisplayName: "Jupyter Lab",
External: false,
Group: "Development",
HealthCheck: agentcontainers.SubAgentHealthCheck{
Interval: 30,
Threshold: 3,
URL: "http://localhost:8888/api",
},
Hidden: false,
Icon: "/icon/jupyter.svg",
OpenIn: codersdk.WorkspaceAppOpenInTab,
Order: int32(1),
Share: codersdk.WorkspaceAppSharingLevelAuthenticated,
Subdomain: true,
URL: "http://localhost:8888",
},
},
expectedApps: []*agentproto.CreateSubAgentRequest_App{
{
Slug: "jupyter",
Command: ptr.Ref("jupyter lab --port=8888"),
DisplayName: ptr.Ref("Jupyter Lab"),
External: ptr.Ref(false),
Group: ptr.Ref("Development"),
Healthcheck: &agentproto.CreateSubAgentRequest_App_Healthcheck{
Interval: 30,
Threshold: 3,
Url: "http://localhost:8888/api",
},
Hidden: ptr.Ref(false),
Icon: ptr.Ref("/icon/jupyter.svg"),
OpenIn: agentproto.CreateSubAgentRequest_App_TAB.Enum(),
Order: ptr.Ref(int32(1)),
Share: agentproto.CreateSubAgentRequest_App_AUTHENTICATED.Enum(),
Subdomain: ptr.Ref(true),
Url: ptr.Ref("http://localhost:8888"),
},
},
},
{
name: "AllSharingLevels",
apps: []agentcontainers.SubAgentApp{
{
Slug: "owner-app",
Share: codersdk.WorkspaceAppSharingLevelOwner,
},
{
Slug: "authenticated-app",
Share: codersdk.WorkspaceAppSharingLevelAuthenticated,
},
{
Slug: "public-app",
Share: codersdk.WorkspaceAppSharingLevelPublic,
},
{
Slug: "organization-app",
Share: codersdk.WorkspaceAppSharingLevelOrganization,
},
},
expectedApps: []*agentproto.CreateSubAgentRequest_App{
{
Slug: "owner-app",
Share: agentproto.CreateSubAgentRequest_App_OWNER.Enum(),
},
{
Slug: "authenticated-app",
Share: agentproto.CreateSubAgentRequest_App_AUTHENTICATED.Enum(),
},
{
Slug: "public-app",
Share: agentproto.CreateSubAgentRequest_App_PUBLIC.Enum(),
},
{
Slug: "organization-app",
Share: agentproto.CreateSubAgentRequest_App_ORGANIZATION.Enum(),
},
},
},
{
name: "WithHealthCheck",
apps: []agentcontainers.SubAgentApp{
{
Slug: "health-app",
HealthCheck: agentcontainers.SubAgentHealthCheck{
Interval: 60,
Threshold: 5,
URL: "http://localhost:3000/health",
},
},
},
expectedApps: []*agentproto.CreateSubAgentRequest_App{
{
Slug: "health-app",
Healthcheck: &agentproto.CreateSubAgentRequest_App_Healthcheck{
Interval: 60,
Threshold: 5,
Url: "http://localhost:3000/health",
},
},
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitShort)
logger := testutil.Logger(t)
statsCh := make(chan *agentproto.Stats)
agentAPI := agenttest.NewClient(t, logger, uuid.New(), agentsdk.Manifest{}, statsCh, tailnet.NewCoordinator(logger))
agentClient, _, err := agentAPI.ConnectRPC26(ctx)
require.NoError(t, err)
subAgentClient := agentcontainers.NewSubAgentClientFromAPI(logger, agentClient)
// When: We create a sub agent with display apps.
subAgent, err := subAgentClient.Create(ctx, agentcontainers.SubAgent{
Name: "sub-agent-" + tt.name,
Directory: "/workspaces/coder",
Architecture: "amd64",
OperatingSystem: "linux",
Apps: tt.apps,
})
require.NoError(t, err)
apps, err := agentAPI.GetSubAgentApps(subAgent.ID)
require.NoError(t, err)
// Then: We expect the apps to be created.
require.Len(t, apps, len(tt.expectedApps))
for i, expectedApp := range tt.expectedApps {
actualApp := apps[i]
assert.Equal(t, expectedApp.Slug, actualApp.Slug)
assert.Equal(t, expectedApp.Command, actualApp.Command)
assert.Equal(t, expectedApp.DisplayName, actualApp.DisplayName)
assert.Equal(t, ptr.NilToEmpty(expectedApp.External), ptr.NilToEmpty(actualApp.External))
assert.Equal(t, expectedApp.Group, actualApp.Group)
assert.Equal(t, ptr.NilToEmpty(expectedApp.Hidden), ptr.NilToEmpty(actualApp.Hidden))
assert.Equal(t, expectedApp.Icon, actualApp.Icon)
assert.Equal(t, ptr.NilToEmpty(expectedApp.Order), ptr.NilToEmpty(actualApp.Order))
assert.Equal(t, ptr.NilToEmpty(expectedApp.Subdomain), ptr.NilToEmpty(actualApp.Subdomain))
assert.Equal(t, expectedApp.Url, actualApp.Url)
if expectedApp.OpenIn != nil {
require.NotNil(t, actualApp.OpenIn)
assert.Equal(t, *expectedApp.OpenIn, *actualApp.OpenIn)
} else {
assert.Equal(t, expectedApp.OpenIn, actualApp.OpenIn)
}
if expectedApp.Share != nil {
require.NotNil(t, actualApp.Share)
assert.Equal(t, *expectedApp.Share, *actualApp.Share)
} else {
assert.Equal(t, expectedApp.Share, actualApp.Share)
}
if expectedApp.Healthcheck != nil {
require.NotNil(t, expectedApp.Healthcheck)
assert.Equal(t, expectedApp.Healthcheck.Interval, actualApp.Healthcheck.Interval)
assert.Equal(t, expectedApp.Healthcheck.Threshold, actualApp.Healthcheck.Threshold)
assert.Equal(t, expectedApp.Healthcheck.Url, actualApp.Healthcheck.Url)
} else {
assert.Equal(t, expectedApp.Healthcheck, actualApp.Healthcheck)
}
}
})
}
})
}
@@ -0,0 +1,68 @@
{"type":"text","level":3,"timestamp":1744102135254,"text":"@devcontainers/cli 0.75.0. Node.js v23.9.0. darwin 24.4.0 arm64."}
{"type":"start","level":2,"timestamp":1744102135254,"text":"Run: docker buildx version"}
{"type":"stop","level":2,"timestamp":1744102135300,"text":"Run: docker buildx version","startTimestamp":1744102135254}
{"type":"text","level":2,"timestamp":1744102135300,"text":"github.com/docker/buildx v0.21.2 1360a9e8d25a2c3d03c2776d53ae62e6ff0a843d\r\n"}
{"type":"text","level":2,"timestamp":1744102135300,"text":"\u001b[1m\u001b[31m\u001b[39m\u001b[22m\r\n"}
{"type":"start","level":2,"timestamp":1744102135300,"text":"Run: docker -v"}
{"type":"stop","level":2,"timestamp":1744102135309,"text":"Run: docker -v","startTimestamp":1744102135300}
{"type":"start","level":2,"timestamp":1744102135309,"text":"Resolving Remote"}
{"type":"start","level":2,"timestamp":1744102135311,"text":"Run: git rev-parse --show-cdup"}
{"type":"stop","level":2,"timestamp":1744102135316,"text":"Run: git rev-parse --show-cdup","startTimestamp":1744102135311}
{"type":"start","level":2,"timestamp":1744102135316,"text":"Run: docker ps -q -a --filter label=devcontainer.local_folder=/code/devcontainers-template-starter --filter label=devcontainer.config_file=/code/devcontainers-template-starter/.devcontainer/devcontainer.json"}
{"type":"stop","level":2,"timestamp":1744102135333,"text":"Run: docker ps -q -a --filter label=devcontainer.local_folder=/code/devcontainers-template-starter --filter label=devcontainer.config_file=/code/devcontainers-template-starter/.devcontainer/devcontainer.json","startTimestamp":1744102135316}
{"type":"start","level":2,"timestamp":1744102135333,"text":"Run: docker inspect --type container 4f22413fe134"}
{"type":"stop","level":2,"timestamp":1744102135347,"text":"Run: docker inspect --type container 4f22413fe134","startTimestamp":1744102135333}
{"type":"start","level":2,"timestamp":1744102135348,"text":"Run: docker ps -q -a --filter label=devcontainer.local_folder=/code/devcontainers-template-starter --filter label=devcontainer.config_file=/code/devcontainers-template-starter/.devcontainer/devcontainer.json"}
{"type":"stop","level":2,"timestamp":1744102135364,"text":"Run: docker ps -q -a --filter label=devcontainer.local_folder=/code/devcontainers-template-starter --filter label=devcontainer.config_file=/code/devcontainers-template-starter/.devcontainer/devcontainer.json","startTimestamp":1744102135348}
{"type":"start","level":2,"timestamp":1744102135364,"text":"Run: docker inspect --type container 4f22413fe134"}
{"type":"stop","level":2,"timestamp":1744102135378,"text":"Run: docker inspect --type container 4f22413fe134","startTimestamp":1744102135364}
{"type":"start","level":2,"timestamp":1744102135379,"text":"Inspecting container"}
{"type":"start","level":2,"timestamp":1744102135379,"text":"Run: docker inspect --type container 4f22413fe13472200500a66ca057df5aafba6b45743afd499c3f26fc886eb236"}
{"type":"stop","level":2,"timestamp":1744102135393,"text":"Run: docker inspect --type container 4f22413fe13472200500a66ca057df5aafba6b45743afd499c3f26fc886eb236","startTimestamp":1744102135379}
{"type":"stop","level":2,"timestamp":1744102135393,"text":"Inspecting container","startTimestamp":1744102135379}
{"type":"start","level":2,"timestamp":1744102135393,"text":"Run in container: /bin/sh"}
{"type":"start","level":2,"timestamp":1744102135394,"text":"Run in container: uname -m"}
{"type":"text","level":2,"timestamp":1744102135428,"text":"aarch64\n"}
{"type":"text","level":2,"timestamp":1744102135428,"text":""}
{"type":"stop","level":2,"timestamp":1744102135428,"text":"Run in container: uname -m","startTimestamp":1744102135394}
{"type":"start","level":2,"timestamp":1744102135428,"text":"Run in container: (cat /etc/os-release || cat /usr/lib/os-release) 2>/dev/null"}
{"type":"text","level":2,"timestamp":1744102135428,"text":"PRETTY_NAME=\"Debian GNU/Linux 11 (bullseye)\"\nNAME=\"Debian GNU/Linux\"\nVERSION_ID=\"11\"\nVERSION=\"11 (bullseye)\"\nVERSION_CODENAME=bullseye\nID=debian\nHOME_URL=\"https://www.debian.org/\"\nSUPPORT_URL=\"https://www.debian.org/support\"\nBUG_REPORT_URL=\"https://bugs.debian.org/\"\n"}
{"type":"text","level":2,"timestamp":1744102135428,"text":""}
{"type":"stop","level":2,"timestamp":1744102135428,"text":"Run in container: (cat /etc/os-release || cat /usr/lib/os-release) 2>/dev/null","startTimestamp":1744102135428}
{"type":"start","level":2,"timestamp":1744102135429,"text":"Run in container: (command -v getent >/dev/null 2>&1 && getent passwd 'node' || grep -E '^node|^[^:]*:[^:]*:node:' /etc/passwd || true)"}
{"type":"stop","level":2,"timestamp":1744102135429,"text":"Run in container: (command -v getent >/dev/null 2>&1 && getent passwd 'node' || grep -E '^node|^[^:]*:[^:]*:node:' /etc/passwd || true)","startTimestamp":1744102135429}
{"type":"start","level":2,"timestamp":1744102135430,"text":"Run in container: test -f '/var/devcontainer/.patchEtcEnvironmentMarker'"}
{"type":"text","level":2,"timestamp":1744102135430,"text":""}
{"type":"text","level":2,"timestamp":1744102135430,"text":""}
{"type":"stop","level":2,"timestamp":1744102135430,"text":"Run in container: test -f '/var/devcontainer/.patchEtcEnvironmentMarker'","startTimestamp":1744102135430}
{"type":"start","level":2,"timestamp":1744102135430,"text":"Run in container: test -f '/var/devcontainer/.patchEtcProfileMarker'"}
{"type":"text","level":2,"timestamp":1744102135430,"text":""}
{"type":"text","level":2,"timestamp":1744102135430,"text":""}
{"type":"stop","level":2,"timestamp":1744102135430,"text":"Run in container: test -f '/var/devcontainer/.patchEtcProfileMarker'","startTimestamp":1744102135430}
{"type":"text","level":2,"timestamp":1744102135431,"text":"userEnvProbe: loginInteractiveShell (default)"}
{"type":"text","level":1,"timestamp":1744102135431,"text":"LifecycleCommandExecutionMap: {\n \"onCreateCommand\": [],\n \"updateContentCommand\": [],\n \"postCreateCommand\": [\n {\n \"origin\": \"devcontainer.json\",\n \"command\": \"npm install -g @devcontainers/cli\"\n }\n ],\n \"postStartCommand\": [],\n \"postAttachCommand\": [],\n \"initializeCommand\": []\n}"}
{"type":"text","level":2,"timestamp":1744102135431,"text":"userEnvProbe: not found in cache"}
{"type":"text","level":2,"timestamp":1744102135431,"text":"userEnvProbe shell: /bin/bash"}
{"type":"start","level":2,"timestamp":1744102135431,"text":"Run in container: /bin/bash -lic echo -n 5805f204-cd2b-4911-8a88-96de28d5deb7; cat /proc/self/environ; echo -n 5805f204-cd2b-4911-8a88-96de28d5deb7"}
{"type":"start","level":2,"timestamp":1744102135431,"text":"Run in container: mkdir -p '/home/node/.devcontainer' && CONTENT=\"$(cat '/home/node/.devcontainer/.onCreateCommandMarker' 2>/dev/null || echo ENOENT)\" && [ \"${CONTENT:-2025-04-07T09:21:41.201379807Z}\" != '2025-04-07T09:21:41.201379807Z' ] && echo '2025-04-07T09:21:41.201379807Z' > '/home/node/.devcontainer/.onCreateCommandMarker'"}
{"type":"text","level":2,"timestamp":1744102135432,"text":""}
{"type":"text","level":2,"timestamp":1744102135432,"text":""}
{"type":"text","level":2,"timestamp":1744102135432,"text":"Exit code 1"}
{"type":"stop","level":2,"timestamp":1744102135432,"text":"Run in container: mkdir -p '/home/node/.devcontainer' && CONTENT=\"$(cat '/home/node/.devcontainer/.onCreateCommandMarker' 2>/dev/null || echo ENOENT)\" && [ \"${CONTENT:-2025-04-07T09:21:41.201379807Z}\" != '2025-04-07T09:21:41.201379807Z' ] && echo '2025-04-07T09:21:41.201379807Z' > '/home/node/.devcontainer/.onCreateCommandMarker'","startTimestamp":1744102135431}
{"type":"start","level":2,"timestamp":1744102135432,"text":"Run in container: mkdir -p '/home/node/.devcontainer' && CONTENT=\"$(cat '/home/node/.devcontainer/.updateContentCommandMarker' 2>/dev/null || echo ENOENT)\" && [ \"${CONTENT:-2025-04-07T09:21:41.201379807Z}\" != '2025-04-07T09:21:41.201379807Z' ] && echo '2025-04-07T09:21:41.201379807Z' > '/home/node/.devcontainer/.updateContentCommandMarker'"}
{"type":"text","level":2,"timestamp":1744102135434,"text":""}
{"type":"text","level":2,"timestamp":1744102135434,"text":""}
{"type":"text","level":2,"timestamp":1744102135434,"text":"Exit code 1"}
{"type":"stop","level":2,"timestamp":1744102135434,"text":"Run in container: mkdir -p '/home/node/.devcontainer' && CONTENT=\"$(cat '/home/node/.devcontainer/.updateContentCommandMarker' 2>/dev/null || echo ENOENT)\" && [ \"${CONTENT:-2025-04-07T09:21:41.201379807Z}\" != '2025-04-07T09:21:41.201379807Z' ] && echo '2025-04-07T09:21:41.201379807Z' > '/home/node/.devcontainer/.updateContentCommandMarker'","startTimestamp":1744102135432}
{"type":"start","level":2,"timestamp":1744102135434,"text":"Run in container: mkdir -p '/home/node/.devcontainer' && CONTENT=\"$(cat '/home/node/.devcontainer/.postCreateCommandMarker' 2>/dev/null || echo ENOENT)\" && [ \"${CONTENT:-2025-04-07T09:21:41.201379807Z}\" != '2025-04-07T09:21:41.201379807Z' ] && echo '2025-04-07T09:21:41.201379807Z' > '/home/node/.devcontainer/.postCreateCommandMarker'"}
{"type":"text","level":2,"timestamp":1744102135435,"text":""}
{"type":"text","level":2,"timestamp":1744102135435,"text":""}
{"type":"text","level":2,"timestamp":1744102135435,"text":"Exit code 1"}
{"type":"stop","level":2,"timestamp":1744102135435,"text":"Run in container: mkdir -p '/home/node/.devcontainer' && CONTENT=\"$(cat '/home/node/.devcontainer/.postCreateCommandMarker' 2>/dev/null || echo ENOENT)\" && [ \"${CONTENT:-2025-04-07T09:21:41.201379807Z}\" != '2025-04-07T09:21:41.201379807Z' ] && echo '2025-04-07T09:21:41.201379807Z' > '/home/node/.devcontainer/.postCreateCommandMarker'","startTimestamp":1744102135434}
{"type":"start","level":2,"timestamp":1744102135435,"text":"Run in container: mkdir -p '/home/node/.devcontainer' && CONTENT=\"$(cat '/home/node/.devcontainer/.postStartCommandMarker' 2>/dev/null || echo ENOENT)\" && [ \"${CONTENT:-2025-04-08T08:48:29.406495039Z}\" != '2025-04-08T08:48:29.406495039Z' ] && echo '2025-04-08T08:48:29.406495039Z' > '/home/node/.devcontainer/.postStartCommandMarker'"}
{"type":"text","level":2,"timestamp":1744102135436,"text":""}
{"type":"text","level":2,"timestamp":1744102135436,"text":""}
{"type":"text","level":2,"timestamp":1744102135436,"text":"Exit code 1"}
{"type":"stop","level":2,"timestamp":1744102135436,"text":"Run in container: mkdir -p '/home/node/.devcontainer' && CONTENT=\"$(cat '/home/node/.devcontainer/.postStartCommandMarker' 2>/dev/null || echo ENOENT)\" && [ \"${CONTENT:-2025-04-08T08:48:29.406495039Z}\" != '2025-04-08T08:48:29.406495039Z' ] && echo '2025-04-08T08:48:29.406495039Z' > '/home/node/.devcontainer/.postStartCommandMarker'","startTimestamp":1744102135435}
{"type":"stop","level":2,"timestamp":1744102135436,"text":"Resolving Remote","startTimestamp":1744102135309}
{"outcome":"success","containerId":"4f22413fe13472200500a66ca057df5aafba6b45743afd499c3f26fc886eb236","remoteUser":"node","remoteWorkspaceFolder":"/workspaces/devcontainers-template-starter"}
@@ -0,0 +1 @@
bad outcome
@@ -0,0 +1,13 @@
{"type":"text","level":3,"timestamp":1744102042893,"text":"@devcontainers/cli 0.75.0. Node.js v23.9.0. darwin 24.4.0 arm64."}
{"type":"start","level":2,"timestamp":1744102042893,"text":"Run: docker buildx version"}
{"type":"stop","level":2,"timestamp":1744102042941,"text":"Run: docker buildx version","startTimestamp":1744102042893}
{"type":"text","level":2,"timestamp":1744102042941,"text":"github.com/docker/buildx v0.21.2 1360a9e8d25a2c3d03c2776d53ae62e6ff0a843d\r\n"}
{"type":"text","level":2,"timestamp":1744102042941,"text":"\u001b[1m\u001b[31m\u001b[39m\u001b[22m\r\n"}
{"type":"start","level":2,"timestamp":1744102042941,"text":"Run: docker -v"}
{"type":"stop","level":2,"timestamp":1744102042950,"text":"Run: docker -v","startTimestamp":1744102042941}
{"type":"start","level":2,"timestamp":1744102042950,"text":"Resolving Remote"}
{"type":"start","level":2,"timestamp":1744102042952,"text":"Run: git rev-parse --show-cdup"}
{"type":"stop","level":2,"timestamp":1744102042957,"text":"Run: git rev-parse --show-cdup","startTimestamp":1744102042952}
{"type":"start","level":2,"timestamp":1744102042957,"text":"Run: docker ps -q -a --filter label=devcontainer.local_folder=/code/devcontainers-template-starter --filter label=devcontainer.config_file=/code/devcontainers-template-starter/.devcontainer/devcontainer.json"}
{"type":"stop","level":2,"timestamp":1744102042967,"text":"Run: docker ps -q -a --filter label=devcontainer.local_folder=/code/devcontainers-template-starter --filter label=devcontainer.config_file=/code/devcontainers-template-starter/.devcontainer/devcontainer.json","startTimestamp":1744102042957}
{"outcome":"error","message":"Command failed: docker ps -q -a --filter label=devcontainer.local_folder=/code/devcontainers-template-starter --filter label=devcontainer.config_file=/code/devcontainers-template-starter/.devcontainer/devcontainer.json","description":"An error occurred setting up the container."}
@@ -0,0 +1,15 @@
{"type":"text","level":3,"timestamp":1744102555495,"text":"@devcontainers/cli 0.75.0. Node.js v23.9.0. darwin 24.4.0 arm64."}
{"type":"start","level":2,"timestamp":1744102555495,"text":"Run: docker buildx version"}
{"type":"stop","level":2,"timestamp":1744102555539,"text":"Run: docker buildx version","startTimestamp":1744102555495}
{"type":"text","level":2,"timestamp":1744102555539,"text":"github.com/docker/buildx v0.21.2 1360a9e8d25a2c3d03c2776d53ae62e6ff0a843d\r\n"}
{"type":"text","level":2,"timestamp":1744102555539,"text":"\u001b[1m\u001b[31m\u001b[39m\u001b[22m\r\n"}
{"type":"start","level":2,"timestamp":1744102555539,"text":"Run: docker -v"}
{"type":"stop","level":2,"timestamp":1744102555548,"text":"Run: docker -v","startTimestamp":1744102555539}
{"type":"start","level":2,"timestamp":1744102555548,"text":"Resolving Remote"}
Error: Dev container config (/code/devcontainers-template-starter/foo/.devcontainer/devcontainer.json) not found.
at H6 (/opt/homebrew/Cellar/devcontainer/0.75.0/libexec/lib/node_modules/@devcontainers/cli/dist/spec-node/devContainersSpecCLI.js:484:3219)
at async BC (/opt/homebrew/Cellar/devcontainer/0.75.0/libexec/lib/node_modules/@devcontainers/cli/dist/spec-node/devContainersSpecCLI.js:484:4957)
at async d7 (/opt/homebrew/Cellar/devcontainer/0.75.0/libexec/lib/node_modules/@devcontainers/cli/dist/spec-node/devContainersSpecCLI.js:665:202)
at async f7 (/opt/homebrew/Cellar/devcontainer/0.75.0/libexec/lib/node_modules/@devcontainers/cli/dist/spec-node/devContainersSpecCLI.js:664:14804)
at async /opt/homebrew/Cellar/devcontainer/0.75.0/libexec/lib/node_modules/@devcontainers/cli/dist/spec-node/devContainersSpecCLI.js:484:1188
{"outcome":"error","message":"Dev container config (/code/devcontainers-template-starter/foo/.devcontainer/devcontainer.json) not found.","description":"Dev container config (/code/devcontainers-template-starter/foo/.devcontainer/devcontainer.json) not found."}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,64 @@
@devcontainers/cli 0.75.0. Node.js v23.9.0. darwin 24.4.0 arm64.
Resolving Feature dependencies for 'ghcr.io/devcontainers/features/docker-in-docker:2'...
Soft-dependency 'ghcr.io/devcontainers/features/common-utils' is not required. Removing from installation order...
Files to omit: ''
Run: docker buildx build --load --build-context dev_containers_feature_content_source=/var/folders/1y/cm8mblxd7_x9cljwl_jvfprh0000gn/T/devcontainercli/container-features/0.75.0-1744102171193 --build-arg _DEV_CONTAINERS_BASE_IMAGE=mcr.microsoft.com/devcontainers/javascript-node:1-18-bullseye --build-arg _DEV_CONTAINERS_IMAGE_USER=root --build-arg _DEV_CONTAINERS_FEATURE_CONTENT_SOURCE=dev_container_feature_content_temp --target dev_containers_target_stage -f /var/folders/1y/cm8mblxd7_x9cljwl_jvfprh0000gn/T/devcontainercli/container-features/0.75.0-1744102171193/Dockerfile.extended -t vsc-devcontainers-template-starter-81d8f17e32abef6d434cbb5a37fe05e5c8a6f8ccede47a61197f002dcbf60566-features /var/folders/1y/cm8mblxd7_x9cljwl_jvfprh0000gn/T/devcontainercli/empty-folder
#0 building with "orbstack" instance using docker driver
#1 [internal] load build definition from Dockerfile.extended
#1 transferring dockerfile: 3.09kB done
#1 DONE 0.0s
#2 resolve image config for docker-image://docker.io/docker/dockerfile:1.4
#2 DONE 1.3s
#3 docker-image://docker.io/docker/dockerfile:1.4@sha256:9ba7531bd80fb0a858632727cf7a112fbfd19b17e94c4e84ced81e24ef1a0dbc
#3 CACHED
#4 [internal] load .dockerignore
#4 transferring context: 2B done
#4 DONE 0.0s
#5 [internal] load metadata for mcr.microsoft.com/devcontainers/javascript-node:1-18-bullseye
#5 DONE 0.0s
#6 [context dev_containers_feature_content_source] load .dockerignore
#6 transferring dev_containers_feature_content_source: 2B done
#6 DONE 0.0s
#7 [dev_containers_feature_content_normalize 1/3] FROM mcr.microsoft.com/devcontainers/javascript-node:1-18-bullseye
#7 DONE 0.0s
#8 [context dev_containers_feature_content_source] load from client
#8 transferring dev_containers_feature_content_source: 82.11kB 0.0s done
#8 DONE 0.0s
#9 [dev_containers_feature_content_normalize 2/3] COPY --from=dev_containers_feature_content_source devcontainer-features.builtin.env /tmp/build-features/
#9 CACHED
#10 [dev_containers_target_stage 2/5] RUN mkdir -p /tmp/dev-container-features
#10 CACHED
#11 [dev_containers_target_stage 3/5] COPY --from=dev_containers_feature_content_normalize /tmp/build-features/ /tmp/dev-container-features
#11 CACHED
#12 [dev_containers_target_stage 4/5] RUN echo "_CONTAINER_USER_HOME=$( (command -v getent >/dev/null 2>&1 && getent passwd 'root' || grep -E '^root|^[^:]*:[^:]*:root:' /etc/passwd || true) | cut -d: -f6)" >> /tmp/dev-container-features/devcontainer-features.builtin.env && echo "_REMOTE_USER_HOME=$( (command -v getent >/dev/null 2>&1 && getent passwd 'node' || grep -E '^node|^[^:]*:[^:]*:node:' /etc/passwd || true) | cut -d: -f6)" >> /tmp/dev-container-features/devcontainer-features.builtin.env
#12 CACHED
#13 [dev_containers_feature_content_normalize 3/3] RUN chmod -R 0755 /tmp/build-features/
#13 CACHED
#14 [dev_containers_target_stage 5/5] RUN --mount=type=bind,from=dev_containers_feature_content_source,source=docker-in-docker_0,target=/tmp/build-features-src/docker-in-docker_0 cp -ar /tmp/build-features-src/docker-in-docker_0 /tmp/dev-container-features && chmod -R 0755 /tmp/dev-container-features/docker-in-docker_0 && cd /tmp/dev-container-features/docker-in-docker_0 && chmod +x ./devcontainer-features-install.sh && ./devcontainer-features-install.sh && rm -rf /tmp/dev-container-features/docker-in-docker_0
#14 CACHED
#15 exporting to image
#15 exporting layers done
#15 writing image sha256:275dc193c905d448ef3945e3fc86220cc315fe0cb41013988d6ff9f8d6ef2357 done
#15 naming to docker.io/library/vsc-devcontainers-template-starter-81d8f17e32abef6d434cbb5a37fe05e5c8a6f8ccede47a61197f002dcbf60566-features done
#15 DONE 0.0s
Run: docker buildx build --load --build-context dev_containers_feature_content_source=/var/folders/1y/cm8mblxd7_x9cljwl_jvfprh0000gn/T/devcontainercli/container-features/0.75.0-1744102171193 --build-arg _DEV_CONTAINERS_BASE_IMAGE=mcr.microsoft.com/devcontainers/javascript-node:1-18-bullseye --build-arg _DEV_CONTAINERS_IMAGE_USER=root --build-arg _DEV_CONTAINERS_FEATURE_CONTENT_SOURCE=dev_container_feature_content_temp --target dev_containers_target_stage -f /var/folders/1y/cm8mblxd7_x9cljwl_jvfprh0000gn/T/devcontainercli/container-features/0.75.0-1744102171193/Dockerfile.extended -t vsc-devcontainers-template-starter-81d8f17e32abef6d434cbb5a37fe05e5c8a6f8ccede47a61197f002dcbf60566-features /var/folders/1y/cm8mblxd7_x9cljwl_jvfprh0000gn/T/devcontainercli/empty-folder
Run: docker run --sig-proxy=false -a STDOUT -a STDERR --mount type=bind,source=/code/devcontainers-template-starter,target=/workspaces/devcontainers-template-starter,consistency=cached --mount type=volume,src=dind-var-lib-docker-0pctifo8bbg3pd06g3j5s9ae8j7lp5qfcd67m25kuahurel7v7jm,dst=/var/lib/docker -l devcontainer.local_folder=/code/devcontainers-template-starter -l devcontainer.config_file=/code/devcontainers-template-starter/.devcontainer/devcontainer.json --privileged --entrypoint /bin/sh vsc-devcontainers-template-starter-81d8f17e32abef6d434cbb5a37fe05e5c8a6f8ccede47a61197f002dcbf60566-features -c echo Container started
Container started
Not setting dockerd DNS manually.
Running the postCreateCommand from devcontainer.json...
added 1 package in 784ms
{"outcome":"success","containerId":"bc72db8d0c4c4e941bd9ffc341aee64a18d3397fd45b87cd93d4746150967ba8","remoteUser":"node","remoteWorkspaceFolder":"/workspaces/devcontainers-template-starter"}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,2 @@
{"type":"text","level":3,"timestamp":1749557935646,"text":"@devcontainers/cli 0.75.0. Node.js v20.16.0. linux 6.8.0-60-generic x64."}
{"type":"text","level":2,"timestamp":1749557935646,"text":"Error: Dev container config (/home/coder/.devcontainer/devcontainer.json) not found.\n at v7 (/usr/local/nvm/versions/node/v20.16.0/lib/node_modules/@devcontainers/cli/dist/spec-node/devContainersSpecCLI.js:668:6918)\n at async /usr/local/nvm/versions/node/v20.16.0/lib/node_modules/@devcontainers/cli/dist/spec-node/devContainersSpecCLI.js:484:1188"}
@@ -0,0 +1,8 @@
{"type":"text","level":3,"timestamp":1749557820014,"text":"@devcontainers/cli 0.75.0. Node.js v20.16.0. linux 6.8.0-60-generic x64."}
{"type":"start","level":2,"timestamp":1749557820014,"text":"Run: git rev-parse --show-cdup"}
{"type":"stop","level":2,"timestamp":1749557820023,"text":"Run: git rev-parse --show-cdup","startTimestamp":1749557820014}
{"type":"start","level":2,"timestamp":1749557820023,"text":"Run: docker ps -q -a --filter label=devcontainer.local_folder=/home/coder/coder --filter label=devcontainer.config_file=/home/coder/coder/.devcontainer/devcontainer.json"}
{"type":"stop","level":2,"timestamp":1749557820039,"text":"Run: docker ps -q -a --filter label=devcontainer.local_folder=/home/coder/coder --filter label=devcontainer.config_file=/home/coder/coder/.devcontainer/devcontainer.json","startTimestamp":1749557820023}
{"type":"start","level":2,"timestamp":1749557820039,"text":"Run: docker ps -q -a --filter label=devcontainer.local_folder=/home/coder/coder"}
{"type":"stop","level":2,"timestamp":1749557820054,"text":"Run: docker ps -q -a --filter label=devcontainer.local_folder=/home/coder/coder","startTimestamp":1749557820039}
{"mergedConfiguration":{"customizations":{"coder":[{"displayApps":{"vscode":true,"web_terminal":true}},{"displayApps":{"vscode_insiders":true,"web_terminal":false}}]}}}
@@ -0,0 +1,8 @@
{"type":"text","level":3,"timestamp":1749557820014,"text":"@devcontainers/cli 0.75.0. Node.js v20.16.0. linux 6.8.0-60-generic x64."}
{"type":"start","level":2,"timestamp":1749557820014,"text":"Run: git rev-parse --show-cdup"}
{"type":"stop","level":2,"timestamp":1749557820023,"text":"Run: git rev-parse --show-cdup","startTimestamp":1749557820014}
{"type":"start","level":2,"timestamp":1749557820023,"text":"Run: docker ps -q -a --filter label=devcontainer.local_folder=/home/coder/coder --filter label=devcontainer.config_file=/home/coder/coder/.devcontainer/devcontainer.json"}
{"type":"stop","level":2,"timestamp":1749557820039,"text":"Run: docker ps -q -a --filter label=devcontainer.local_folder=/home/coder/coder --filter label=devcontainer.config_file=/home/coder/coder/.devcontainer/devcontainer.json","startTimestamp":1749557820023}
{"type":"start","level":2,"timestamp":1749557820039,"text":"Run: docker ps -q -a --filter label=devcontainer.local_folder=/home/coder/coder"}
{"type":"stop","level":2,"timestamp":1749557820054,"text":"Run: docker ps -q -a --filter label=devcontainer.local_folder=/home/coder/coder","startTimestamp":1749557820039}
{"mergedConfiguration":{"customizations":{}}}
+48
View File
@@ -0,0 +1,48 @@
package watcher
import (
"context"
"sync"
"github.com/fsnotify/fsnotify"
)
// NewNoop creates a new watcher that does nothing.
func NewNoop() Watcher {
return &noopWatcher{done: make(chan struct{})}
}
type noopWatcher struct {
mu sync.Mutex
closed bool
done chan struct{}
}
func (*noopWatcher) Add(string) error {
return nil
}
func (*noopWatcher) Remove(string) error {
return nil
}
// Next blocks until the context is canceled or the watcher is closed.
func (n *noopWatcher) Next(ctx context.Context) (*fsnotify.Event, error) {
select {
case <-ctx.Done():
return nil, ctx.Err()
case <-n.done:
return nil, ErrClosed
}
}
func (n *noopWatcher) Close() error {
n.mu.Lock()
defer n.mu.Unlock()
if n.closed {
return ErrClosed
}
n.closed = true
close(n.done)
return nil
}
@@ -0,0 +1,70 @@
package watcher_test
import (
"context"
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/coder/coder/v2/agent/agentcontainers/watcher"
"github.com/coder/coder/v2/testutil"
)
func TestNoopWatcher(t *testing.T) {
t.Parallel()
// Create the noop watcher under test.
wut := watcher.NewNoop()
// Test adding/removing files (should have no effect).
err := wut.Add("some-file.txt")
assert.NoError(t, err, "noop watcher should not return error on Add")
err = wut.Remove("some-file.txt")
assert.NoError(t, err, "noop watcher should not return error on Remove")
ctx, cancel := context.WithCancel(t.Context())
defer cancel()
// Start a goroutine to wait for Next to return.
errC := make(chan error, 1)
go func() {
_, err := wut.Next(ctx)
errC <- err
}()
select {
case <-errC:
require.Fail(t, "want Next to block")
default:
}
// Cancel the context and check that Next returns.
cancel()
select {
case err := <-errC:
assert.Error(t, err, "want Next error when context is canceled")
case <-time.After(testutil.WaitShort):
t.Fatal("want Next to return after context was canceled")
}
// Test Close.
err = wut.Close()
assert.NoError(t, err, "want no error on Close")
}
func TestNoopWatcher_CloseBeforeNext(t *testing.T) {
t.Parallel()
wut := watcher.NewNoop()
err := wut.Close()
require.NoError(t, err, "close watcher failed")
ctx := context.Background()
_, err = wut.Next(ctx)
assert.Error(t, err, "want Next to return error when watcher is closed")
}
+195
View File
@@ -0,0 +1,195 @@
// Package watcher provides file system watching capabilities for the
// agent. It defines an interface for monitoring file changes and
// implementations that can be used to detect when configuration files
// are modified. This is primarily used to track changes to devcontainer
// configuration files and notify users when containers need to be
// recreated to apply the new configuration.
package watcher
import (
"context"
"path/filepath"
"sync"
"github.com/fsnotify/fsnotify"
"golang.org/x/xerrors"
)
var ErrClosed = xerrors.New("watcher closed")
// Watcher defines an interface for monitoring file system changes.
// Implementations track file modifications and provide an event stream
// that clients can consume to react to changes.
type Watcher interface {
// Add starts watching a file for changes.
Add(file string) error
// Remove stops watching a file for changes.
Remove(file string) error
// Next blocks until a file system event occurs or the context is canceled.
// It returns the next event or an error if the watcher encountered a problem.
Next(context.Context) (*fsnotify.Event, error)
// Close shuts down the watcher and releases any resources.
Close() error
}
type fsnotifyWatcher struct {
*fsnotify.Watcher
mu sync.Mutex // Protects following.
watchedFiles map[string]bool // Files being watched (absolute path -> bool).
watchedDirs map[string]int // Refcount of directories being watched (absolute path -> count).
closed bool // Protects closing of done.
done chan struct{}
}
// NewFSNotify creates a new file system watcher that watches parent directories
// instead of individual files for more reliable event detection.
func NewFSNotify() (Watcher, error) {
w, err := fsnotify.NewWatcher()
if err != nil {
return nil, xerrors.Errorf("create fsnotify watcher: %w", err)
}
return &fsnotifyWatcher{
Watcher: w,
done: make(chan struct{}),
watchedFiles: make(map[string]bool),
watchedDirs: make(map[string]int),
}, nil
}
func (f *fsnotifyWatcher) Add(file string) error {
absPath, err := filepath.Abs(file)
if err != nil {
return xerrors.Errorf("absolute path: %w", err)
}
dir := filepath.Dir(absPath)
f.mu.Lock()
defer f.mu.Unlock()
// Already watching this file.
if f.closed || f.watchedFiles[absPath] {
return nil
}
// Start watching the parent directory if not already watching.
if f.watchedDirs[dir] == 0 {
if err := f.Watcher.Add(dir); err != nil {
return xerrors.Errorf("add directory to watcher: %w", err)
}
}
// Increment the reference count for this directory.
f.watchedDirs[dir]++
// Mark this file as watched.
f.watchedFiles[absPath] = true
return nil
}
func (f *fsnotifyWatcher) Remove(file string) error {
absPath, err := filepath.Abs(file)
if err != nil {
return xerrors.Errorf("absolute path: %w", err)
}
dir := filepath.Dir(absPath)
f.mu.Lock()
defer f.mu.Unlock()
// Not watching this file.
if f.closed || !f.watchedFiles[absPath] {
return nil
}
// Remove the file from our watch list.
delete(f.watchedFiles, absPath)
// Decrement the reference count for this directory.
f.watchedDirs[dir]--
// If no more files in this directory are being watched, stop
// watching the directory.
if f.watchedDirs[dir] <= 0 {
f.watchedDirs[dir] = 0 // Ensure non-negative count.
if err := f.Watcher.Remove(dir); err != nil {
return xerrors.Errorf("remove directory from watcher: %w", err)
}
delete(f.watchedDirs, dir)
}
return nil
}
func (f *fsnotifyWatcher) Next(ctx context.Context) (event *fsnotify.Event, err error) {
defer func() {
if ctx.Err() != nil {
event = nil
err = ctx.Err()
}
}()
for {
select {
case <-ctx.Done():
return nil, ctx.Err()
case evt, ok := <-f.Events:
if !ok {
return nil, ErrClosed
}
// Get the absolute path to match against our watched files.
absPath, err := filepath.Abs(evt.Name)
if err != nil {
continue
}
f.mu.Lock()
if f.closed {
f.mu.Unlock()
return nil, ErrClosed
}
isWatched := f.watchedFiles[absPath]
f.mu.Unlock()
if !isWatched {
continue // Ignore events for files not being watched.
}
return &evt, nil
case err, ok := <-f.Errors:
if !ok {
return nil, ErrClosed
}
return nil, xerrors.Errorf("watcher error: %w", err)
case <-f.done:
return nil, ErrClosed
}
}
}
func (f *fsnotifyWatcher) Close() (err error) {
f.mu.Lock()
f.watchedFiles = nil
f.watchedDirs = nil
closed := f.closed
f.closed = true
f.mu.Unlock()
if closed {
return ErrClosed
}
close(f.done)
if err := f.Watcher.Close(); err != nil {
return xerrors.Errorf("close watcher: %w", err)
}
return nil
}
@@ -0,0 +1,139 @@
package watcher_test
import (
"context"
"os"
"path/filepath"
"runtime"
"testing"
"github.com/fsnotify/fsnotify"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/coder/coder/v2/agent/agentcontainers/watcher"
"github.com/coder/coder/v2/testutil"
)
func TestFSNotifyWatcher(t *testing.T) {
t.Parallel()
// Create test files.
dir := t.TempDir()
testFile := filepath.Join(dir, "test.json")
err := os.WriteFile(testFile, []byte(`{"test": "initial"}`), 0o600)
require.NoError(t, err, "create test file failed")
// Create the watcher under test.
wut, err := watcher.NewFSNotify()
require.NoError(t, err, "create FSNotify watcher failed")
defer wut.Close()
// Add the test file to the watch list.
err = wut.Add(testFile)
require.NoError(t, err, "add file to watcher failed")
ctx := testutil.Context(t, testutil.WaitShort)
// Modify the test file to trigger an event.
err = os.WriteFile(testFile, []byte(`{"test": "modified"}`), 0o600)
require.NoError(t, err, "modify test file failed")
// Verify that we receive the event we want.
for {
event, err := wut.Next(ctx)
require.NoError(t, err, "next event failed")
require.NotNil(t, event, "want non-nil event")
if !event.Has(fsnotify.Write) {
t.Logf("Ignoring event: %s", event)
continue
}
require.Truef(t, event.Has(fsnotify.Write), "want write event: %s", event.String())
require.Equal(t, event.Name, testFile, "want event for test file")
break
}
// Rename the test file to trigger a rename event.
err = os.Rename(testFile, testFile+".bak")
require.NoError(t, err, "rename test file failed")
// Verify that we receive the event we want.
for {
event, err := wut.Next(ctx)
require.NoError(t, err, "next event failed")
require.NotNil(t, event, "want non-nil event")
if !event.Has(fsnotify.Rename) {
t.Logf("Ignoring event: %s", event)
continue
}
require.Truef(t, event.Has(fsnotify.Rename), "want rename event: %s", event.String())
require.Equal(t, event.Name, testFile, "want event for test file")
break
}
err = os.WriteFile(testFile, []byte(`{"test": "new"}`), 0o600)
require.NoError(t, err, "write new test file failed")
// Verify that we receive the event we want.
for {
event, err := wut.Next(ctx)
require.NoError(t, err, "next event failed")
require.NotNil(t, event, "want non-nil event")
if !event.Has(fsnotify.Create) {
t.Logf("Ignoring event: %s", event)
continue
}
require.Truef(t, event.Has(fsnotify.Create), "want create event: %s", event.String())
require.Equal(t, event.Name, testFile, "want event for test file")
break
}
// TODO(DanielleMaywood):
// Unfortunately it appears this atomic-rename phase of the test is flakey on macOS.
//
// This test flake could be indicative of an issue that may present itself
// in a running environment. Fortunately, we only use this (as of 2025-07-29)
// for our dev container integration. We do not expect the host workspace
// (where this is used), to ever be run on macOS, as containers are a linux
// paradigm.
if runtime.GOOS != "darwin" {
err = os.WriteFile(testFile+".atomic", []byte(`{"test": "atomic"}`), 0o600)
require.NoError(t, err, "write new atomic test file failed")
err = os.Rename(testFile+".atomic", testFile)
require.NoError(t, err, "rename atomic test file failed")
// Verify that we receive the event we want.
for {
event, err := wut.Next(ctx)
require.NoError(t, err, "next event failed")
require.NotNil(t, event, "want non-nil event")
if !event.Has(fsnotify.Create) {
t.Logf("Ignoring event: %s", event)
continue
}
require.Truef(t, event.Has(fsnotify.Create), "want create event: %s", event.String())
require.Equal(t, event.Name, testFile, "want event for test file")
break
}
}
// Test removing the file from the watcher.
err = wut.Remove(testFile)
require.NoError(t, err, "remove file from watcher failed")
}
func TestFSNotifyWatcher_CloseBeforeNext(t *testing.T) {
t.Parallel()
wut, err := watcher.NewFSNotify()
require.NoError(t, err, "create FSNotify watcher failed")
err = wut.Close()
require.NoError(t, err, "close watcher failed")
ctx := context.Background()
_, err = wut.Next(ctx)
assert.Error(t, err, "want Next to return error when watcher is closed")
}
+1
View File
@@ -28,6 +28,7 @@ func BenchmarkGenerateDeterministicKey(b *testing.B) {
for range b.N {
// always record the result of DeterministicPrivateKey to prevent
// the compiler eliminating the function call.
// #nosec G404 - Using math/rand is acceptable for benchmarking deterministic keys
r = agentrsa.GenerateDeterministicKey(rand.Int64())
}

Some files were not shown because too many files have changed in this diff Show More