Commit Graph

11955 Commits

Author SHA1 Message Date
Kacper Sawicki 6ca70d3618 feat(cli): add --no-build flag to state push for state-only updates (#21374)
## Summary

Adds a `--no-build` flag to `coder state push` that updates the
Terraform state directly without triggering a workspace build.

## Use Case

This enables state-only migrations, such as migrating Kubernetes
resources from deprecated types (e.g., `kubernetes_config_map`) to
versioned types (e.g., `kubernetes_config_map_v1`):

```bash
coder state pull my-workspace > state.json
terraform init
terraform state rm -state=state.json kubernetes_config_map.example
terraform import -state=state.json kubernetes_config_map_v1.example default/example
coder state push --no-build my-workspace state.json
```

## Changes

- Add `PUT /api/v2/workspacebuilds/{id}/state` endpoint to update state
without triggering a build
- Add `UpdateWorkspaceBuildState` SDK method
- Add `--no-build`/`-n` flag to `coder state push`
- Add confirmation prompt (can be skipped with `--yes`/`-y`) since this
is a potentially dangerous operation
- Add test for `--no-build` functionality

Fixes #21336
2026-01-12 15:16:59 +01:00
Ehab Younes a581431bc8 fix(site): show apps with disabled health status on workspaces list (#21428)
- Fix to display apps with disabled health status on workspaces list
- Migrate WorkspacesPage jest test into vitest
- Modularize vitest setup into separate files:
  - setup/polyfills.ts: Blob, ResizeObserver polyfills
  - setup/domStubs.ts: Radix UI pointer capture stubs
  - setup/mocks.ts: useProxyLatency mock
  - setup/msw.ts: MSW server lifecycle

Fixed #20319
2026-01-12 13:37:30 +03:00
dependabot[bot] d5100543ea chore: bump the coder-modules group across 3 directories with 4 updates (#21474)
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>
2026-01-12 00:44:22 +00:00
Zach 091d31224d fix: replace moby/moby namesgenerator with internal implementation (#21377)
Replace the external moby/moby/pkg/namesgenerator dependency with an
internal implementation using gofakeit/v7. The moby package has ~25k
unique name combinations, and with its retry parameter only adds a
random digit 0-9, giving ~250k possibilities. In parallel tests, this
has led to collisions (flakes).

The new internal API at coderd/util/namesgenerator eliminates the
external dependnecy and offers functions with explicit uniqueness
guarantees. This PR also consolidates fragmented name generation in a
few places to use the new package.

| Old (moby/moby)                     | New                    |
|-------------------------------------|------------------------|
| namesgenerator.GetRandomName(0)     | NameWith("_")          |
| namesgenerator.GetRandomName(>0)    | NameDigitWith("_")     |
| testutil.GetRandomName(t)           | UniqueName()           |
| testutil.GetRandomNameHyphenated(t) | UniqueNameWith("-")    |

namesgenerator package API:
- NameWith(delim): random name, not unique
- NameDigitWith(delim): random name with 1-9 suffix, not unique
- UniqueName(): guaranteed unique via atomic counter
- UniqueNameWith(delim): unique with custom delimiter

Names continue to be docker style `[adjective][delim][surname]`. Unique
names are truncated to 32 characters (preserving the numeric suffix) to
fit common name length limits in Coder.

Related test flakes:
https://github.com/coder/internal/issues/1212
https://github.com/coder/internal/issues/118
https://github.com/coder/internal/issues/1068
2026-01-09 15:40:26 -07:00
Yevhenii Shcherbina 1bfd776cb4 docs: add docs for boundary rules engine (#21471)
Closes: https://github.com/coder/boundary/issues/146

- added docs for rules engine
- move all boundary-related docs under new `boundary` directory
2026-01-09 15:04:51 -05:00
Jiachen Jiang a09d85cc26 docs: provide guidance on shared workspaces (#21214)
Co-authored-by: ケイラ <mckayla@hey.com>
2026-01-09 11:07:46 -08:00
Steven Masley 60b3fd0783 chore!: send modules archive over the proto messages (#21398)
# What this does

Dynamic parameters caches the `./terraform/modules` directory for parameter usage. What this PR does is send over this archive to the provisioner when building workspaces.

This allow terraform to skip downloading modules from their registries, a step that takes seconds. 

<img width="1223" height="429" alt="Screenshot From 2025-12-29 12-57-52" src="https://github.com/user-attachments/assets/16066e0a-ac79-4296-819d-924f4b0418dc" />


# Wire protocol

The wire protocol reuses the same mechanism used to download the modules `provisoner -> coder`. It splits up large archives into multiple protobuf messages so larger archives can be sent under the message size limit.

# 🚨  Behavior Change (Breaking Change) 🚨 

**Before this PR** modules were downloaded on every workspace build. This means unpinned modules always fetched the latest version

**After this PR** modules are cached at template import time, and their versions are effectively pinned for all subsequent workspace builds.
2026-01-09 11:33:34 -06:00
Steven Masley d2044c2ee9 chore: update protobuf to reuse file request (#21447)
**This is just the protobuf changes for the PR https://github.com/coder/coder/pull/21398**

Moved `UploadFileRequest` from `provisionerd.proto` -> `provisioner.proto`.

Renamed to `FileUpload` because it is now bi-directional.

This **is backwards compatible**. I tested it to confirm the payloads are identical.  Types were just renamed and moved around.

```golang
func TestTypeUpgrade(t *testing.T) {
	t.Parallel()

	x := &proto2.UploadFileRequest{
		Type: &proto2.UploadFileRequest_ChunkPiece{
			ChunkPiece: &proto.ChunkPiece{
				Data:         []byte("Hello World!"),
				FullDataHash: []byte("Foobar"),
				PieceIndex:   42,
			},
		},
	}

	data, err := protobuf.Marshal(x)
	require.NoError(t, err)

	// Exactly the same output
	// EhgKDEhlbGxvIFdvcmxkIRIGRm9vYmFyGCo= on `main`
	// EhgKDEhlbGxvIFdvcmxkIRIGRm9vYmFyGCo= on this branch
	fmt.Println(base64.StdEncoding.EncodeToString(data))
}
```


# What this does

This allows provisioner daemons to download files from `coderd`'s `files` table. This is used to send over cached module files and prevent the need of downloading these modules on each workspace build.
2026-01-09 11:23:32 -06:00
Steven Masley 89f4d60e7b chore: remove experiment "terraform-directory-reuse" (#21397)
Experiment is no longer required, the new method will be released without an experiment and without a toggle

Main PR is: https://github.com/coder/coder/pull/21398
2026-01-09 11:13:16 -06:00
Spike Curtis 4bc49ed6eb docs: update scale architecture and add 10k user doc (#21454)
Updates 2k, 3k docs to match previous changes to 1k ( #21362), including new database recommendations.

Adds a 10k doc.
2026-01-09 08:16:11 +04:00
Yevhenii Shcherbina 1e8c292855 docs: update boundary docs (#21458) 2026-01-08 15:11:03 -05:00
Yevhenii Shcherbina 960c892413 chore: update claude-code module version (#21459) 2026-01-08 14:37:52 -05:00
Zach ba499d84af chore: update boundary version in dogfood (#21457)
Bumping to pick up new bug fixes for dogfooding.
2026-01-08 09:46:29 -07:00
Cian Johnston b116d22c5f chore: manage tool versions in go.mod (#21455)
Go 1.24 adds [tool
dependencies](https://go.dev/doc/modules/managing-dependencies#tools).
This allows us to track versions of tools in our `go.mod` instead of
sprinkling various `go run` commands throughout our codebase.

NOTE: there are still various hard-coded `go install` commands in our
dogfood Dockerfile. As that list is likely severely outdated, will leave
that for a separate PR.
2026-01-08 16:25:28 +00:00
Zach 1081d42760 docs: fix boundary log proto docs (#21451)
Simple docs fix to correctly reflect how boundary actually works in
terms of allowing HTTP requests.
2026-01-08 08:28:25 -07:00
Spike Curtis 8ea9f587e8 chore: add import formatting to make fmt/go (#21453)
Modifies `make fmt/go` to also use https://github.com/daixiang0/gci to format our imports to a standard format.

It introduces a new shell script to do the formatting so that our formatting tools are in one place.
2026-01-08 15:36:03 +04:00
Spike Curtis bddb808b25 chore: arrange imports in a standard way (#21452)
Fixes all our Go file imports to match the preferred spec that we've _mostly_ been using. For example:

```
import (
	"context"
	"time"

	"github.com/prometheus/client_golang/prometheus"
	"golang.org/x/xerrors"
	"gopkg.in/natefinch/lumberjack.v2"

	"cdr.dev/slog/v3"
	"github.com/coder/coder/v2/codersdk/agentsdk"
	"github.com/coder/serpent"
)
```

3 groups: standard library, 3rd partly libs, Coder libs.

This PR makes the change across the codebase. The PR in the stack above modifies our formatting to maintain this state of affairs, and is a separate PR so it's possible to review that one in detail.
2026-01-08 15:24:11 +04:00
blinkagent[bot] b20d1bf159 fix: use square icon for stop button instead of pause icon (#21386)
The pause icon (`||`) for the Stop button was confusing as it suggests
pause/resume functionality. Changed to a square icon (`□`) which is the
standard icon for stop in media players and interfaces.

### Before
<img width="100" alt="before"
src="https://github.com/user-attachments/assets/77e2fee5-cb66-4b47-9a2a-0dccce5c28ca"
/>

### After
The button will now display a square () stop icon instead of the pause
(⏸) icon.

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: Jaayden Halko <jaayden@coder.com>
2026-01-08 05:41:08 -05:00
Cian Johnston 0f446f99dd feat(cli): add logs cmd (#21430)
This PR adds a command to view the provisioner and agent logs for a
given workspace.
Note: I did investigate using the existing `cliui` methods to tail the
logs but they are tailored to a very specific use-case.

Other changes:
- Adds `Agents` to `dbfake.WorkspaceResponse`
- Adds methods to generate provisioner and agent logs in `dbgen`

---------

Co-authored-by: Steven Masley <Emyrk@users.noreply.github.com>
2026-01-08 09:58:10 +00:00
Spike Curtis 49b34a716a fix: fix slog to always use array of Fields (#21426)
Upgrades to slog v3 which includes a small, but backward incompatible API change to the acceptible call arguments when logging. This change allows us to verify via compile time type checking that arguments are correct and won't cause a panic, as was possible in slog v1, which this replaces (v2 was tagged but never used in coder/coder).

It also updates dependencies that also use slog and were updated.

I've left the `aibridge` dependency as a commit SHA, under the assumption that the team there (cc @pawbana @dannykopping ) will tag and update the dependency soon and on their own schedule.

Other dependencies, I pushed new tags.
2026-01-08 10:29:41 +04:00
Jake Howell d1b0722034 feat: standardise sizes of ./site/static/icon/*.svg (#21347)
Related to #21320

This pull-request ensures that all the icons are now `256px * 256px` so
that they're standardised across all rendering situations.

| Previous | Now |
| --- | --- |
| <img width="886" height="1652" alt="CleanShot 2025-12-21 at 12 25
03@2x"
src="https://github.com/user-attachments/assets/c298325c-4419-485b-97e2-bb54e6ccc8c0"
/> | <img width="962" height="980" alt="CleanShot 2025-12-21 at 12 26
35@2x"
src="https://github.com/user-attachments/assets/c9cef5ee-115d-4318-8e12-188ea79cc88b"
/> |

* All `*.svg` files are now `256px * 256px` and..
  * Added a `do.svg` file.
  * Added a `ruby.svg` file.
  * Added a `gcp.svg` file.
* All `*.png` files are now `256px * 256px` and..
  * Updated the `aws.png` file to match `aws.svg` (deprecated).
  * Updated the `azure.png` file to match `azure.svg` (deprecated).
  * Updated the `docker.png` file to match `docker.svg` (deprecated).
  * Updated the `do.png` file to fill the full `256px` width.
  * Deprecated the `do.png`.
  * Deprecated the `ruby.png`.
  * Deprecated the `gcp.png`.
2026-01-08 13:39:31 +11:00
Jake Howell 1a9a1106ca feat: implement customised formatDate() function (#21423)
Closes #21301

This pull-request adds a very simple `function formatDate(date: Date,
options: Intl.DateTimeFormatOptions)` function which will allow us to
standardise the rendering of dates across the application. This is
inline with the content of #21252.
2026-01-08 10:52:23 +11:00
Atif Ali 17ba151ed2 chore(site): update mux icon (#21450) 2026-01-08 00:13:20 +05:00
Zach 646e9cc6a9 fix: update dogfood boundary and claude-code module versions (#21449)
Using the compile_boundary_from_source option resulted in a ~45sec
compilation time, which then hit agentapi-wait-for-start.sh's timeout.
Move back to just using a release tag instead to avoid hitting this
timeout.

Also bump the claude-code module version to pick up changes from
https://github.com/coder/registry/pull/637
2026-01-07 11:10:06 -07:00
Danielle Maywood c77c0fce52 fix(cli/open): wait for agent to be created (#21448)
Fix https://github.com/coder/internal/issues/596

---

🤖 Claude Code with Claude Opus 4.5
2026-01-07 16:06:00 +00:00
Sas Swart 9a0024c45f chore: add tracing to prebuilds (#21443)
The implementation for prebuilt workspaces is complex and conversations
regarding edge cases and bugs frequently get bogged down by minutiae,
because it's hard to reason about the behaviour of the system.

To alleviate this, I've introduced otel tracing to the StoreReconciler
(see attached). We can now directly observe the behaviour of the
prebuilds system under load in order to inform our decisions.

Traces are terminated at the boundary between prebuilds and workspace
builder, because of prebuilt workspaces' "fire and forget" philosophy
and to prevent span explosion.

<img width="3024" height="1718" alt="image"
src="https://github.com/user-attachments/assets/f9b207be-8f2c-475e-98a8-46ef70bda446"
/>
2026-01-07 11:04:40 +02:00
Cian Johnston 6bd2d1c85f chore(cli): seed healthcheck cache in TestSupportBundle (#21436)
Fixes https://github.com/coder/internal/issues/272

This test periodically fails due to the healthcheck timing out.
The problem is compounded due to the fact that we stand up a new
coderdtest instance for each test.

This PR does the following:
* Updates the subtests to share a single `coderdtest` instance.
* Hits the `/debug/health` endpoint before completing the setup phase so
that the result is cached.

This will not completely remove the issue, as the healthcheck could
still fail due to test-infrastructure-related issues. In this case we
may decide to add a retry in this 'seed' function.
2026-01-07 08:47:31 +00:00
Jake Howell c3e3249a2a fix: manually override pagination sizes (#21424)
Closes #21260

Pagination buttons could overflow their container on narrower pages
(e.g. audit / logs) because the page button was effectively fixed-width.
This updates the pagination button styling to allow it to expand with
its content (`min-w-8 w-auto`), preventing overflow while keeping the
same icon-button look.

| Previously | Now |
| --- | --- | 
| <img width="451" height="118" alt="pagination-old-treatment"
src="https://github.com/user-attachments/assets/ae77e604-89fb-4dc3-9233-d103494e1906"
/> | <img width="451" height="118" alt="pagination-new-treatment"
src="https://github.com/user-attachments/assets/5a948d8a-4643-4eff-95b9-4c2852850447"
/> |
2026-01-06 23:46:04 +00:00
Danielle Maywood fa561bcd0a feat(site): support deleting dev containers (#21249)
Closes https://github.com/coder/coder/issues/19062

Add logic to the frontend to allow deleting Dev Containers
2026-01-06 22:49:17 +00:00
Atif Ali 989def7a94 docs: document coder_script resource (#21409)
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-07 00:04:46 +05:00
Danielle Maywood 467c8bbd6b fix: prevent notification for dormant delete on dormant-removal (#21427)
Ensure we do not send "Marked for deletion" notifications when disabling dormancy deletion
2026-01-06 16:26:28 +00:00
Atif Ali ef45ce4dfb chore(docs): update example URL format in AI Bridge docs (#21435)
We are using a mix of styles for the URL, so moving the example URLs to
be code blocks.
This is a cosmetic change.  

<table>
<tr>
 <td> Before
 <td> After
<tr>
<td> <img width="712" height="607" alt="image"
src="https://github.com/user-attachments/assets/05733e45-b83f-4801-9657-db72095a0300"
/>
<td> <img width="701" height="584" alt="image"
src="https://github.com/user-attachments/assets/61418ea6-0882-4fb5-81fd-ec1a67473579"
/>
</table>
2026-01-06 21:14:13 +05:00
Zach 6a40fb0e2c chore: update dogfood boundary version (#21421)
Update the dogfood boundary version to a more recent unreleased githash
from main. This change allows dogfooding boundary audit logs and all
other recent boundary changes.
2026-01-06 08:26:39 -07:00
Yevhenii Shcherbina 2a7a33bb46 docs: update manifest in docs (#21434)
Follow-up for https://github.com/coder/coder/pull/21420
2026-01-06 09:58:30 -05:00
Spike Curtis ed6d41a5ef docs: simplify 1k scale architecture and change db recommendation (#21362)
DRAFT: I'd like feedback on this approach for 1k before I give the others the same treatment and add a 10k document.



- Bumps database requirements to 8 vCPU, 30 GB memory. In our testing database was nearly always the bottleneck. (This could come back down again with improvements to how we use it.)

- Removes specific machine type recommendations.
    - This only applies to VM-based deployments and many of our customers use Kubernetes.
    - The major clouds upgrade their machine teirs, so our recommendations go out of date
    - In its place we just give CPU and memory requirements
- Removes API requests per second
    - It's not a metric that many operators will know until they are already operating
    - Our API requests vary wildly in cost depending on what they are
    - Replaces them with Users | Running Workspaces | Concurrent Builds - which represents our scale testing scenarios, and are easier for operators to reason about.
- Removes specific advice about workspace sizing, instead gives the minimum specs for the agent
- Gives Kubernetes resource request/limits in notes
- Adds advice about not needing high performance disks for Coderd, but that provisioners will benefit.
2026-01-06 14:29:41 +04:00
Spike Curtis 41a966c284 fix: sort latest key by sequence correctly (#21425)
Fixes an issue where we will not correctly return the latest key by sequence number if the fetch returns them in a order where the latest key is not last. The db query uses `ORDER BY sequence DESC` it is likely we have been operating incorrectly.

Adds a second key to one of the test cases which fails without this fix.

Also includes some debug logging statements I found helpful while chasing key rotation issues.
2026-01-06 14:01:51 +04:00
Yevhenii Shcherbina f792f0b162 docs: introduce landjail for boundary (#21420) 2026-01-05 18:54:49 -05:00
Asher 4a97df3768 chore: rename flag to disable template insights (#21329)
Because this affects more than just the template insights
page (specifically it also affects the deployment stats endpoint which
is shown on bottom bar and Prometheus), the group is being renamed
generically to just "stats collection".  In the future if we need to
affect the other stats we can put those options here.

Then, because this change only affects a portion of stats, specifically
usage stats like connection and application time, bytes sent, etc, add a
new sub-group called "usage stats".

Then finally add back the "enable" flag.  This also gives us a place to
one day place an "anonymize" flag if we need to go that route.
2026-01-05 11:44:06 -09:00
ケイラ 5691d38db7 chore: migrate tar tests to vitest (#21406) 2026-01-05 13:18:04 -07:00
Cian Johnston 172cd13b24 fix: restore /tmp/.coder-startup-script.done in dogfood template (#21419) 2026-01-05 16:12:35 +00:00
George K e10fceb23c fix(coderd/database): allow same custom role name for different orgs (#21312)
Previously the `idx_custom_roles_name_lower` index prevented that.

A check constraint was also added to ensure the `organization_id` column cannot be set to the all-zero UUID.
2026-01-05 07:43:08 -08:00
Jakub Domeracki 55cc6b807c fix: adjust the TF version drift causing flakes (#21416)
Fixes:
https://github.com/coder/internal/issues/1172#issuecomment-3687019525
2026-01-05 15:06:35 +01:00
dependabot[bot] 13668d82d6 chore: bump rust from 0d8bf26 to 6cff8a3 in /dogfood/coder (#21415)
Bumps rust from `0d8bf26` to `6cff8a3`.


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=rust&package-manager=docker&previous-version=slim&new-version=slim)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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

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

---

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

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


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-05 12:18:34 +00:00
dependabot[bot] 32f3481634 chore: bump github.com/gohugoio/hugo from 0.153.1 to 0.154.2 (#21413)
Bumps [github.com/gohugoio/hugo](https://github.com/gohugoio/hugo) from
0.153.1 to 0.154.2.
<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.154.2</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix alpha/fuzzy border issue with new webp decoder for images with
with transparent background e9b9b36f <a
href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/14339">#14339</a></li>
</ul>
<h2>v0.154.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Add WASM licensing information to README 8f3527f6 <a
href="https://github.com/bep"><code>@​bep</code></a></li>
<li>Fix partial decorator detection in partial with blocks with outer
range break or continue 09048aad <a
href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/14333">#14333</a></li>
</ul>
<h2>v0.154.0</h2>
<p>Hugo <code>v0.154.0</code> is the <strong>14th release</strong> this
year (not counting patch releases) and introduces <a
href="https://gohugo.io/quick-reference/glossary/#partial-decorator">partial
decorators</a>, or “partials with a twist.” This is a very powerful
construct that I, <a
href="https://github.com/bep"><code>@​bep</code></a>, have always wanted
to have in Hugo, but I could never wrap my head around an
implementation. Until now.</p>
<p>A small and not very useful example:</p>
<pre lang="handlebars"><code>{{ with partial &quot;b.html&quot;
&quot;World&quot; }}Hello {{ . }}{{ end }}
{{ define &quot;_partials/b.html&quot; }}&lt;b&gt;{{ inner .
}}&lt;/b&gt;{{ end }}
</code></pre>
<p>The above renders to:</p>
<pre lang="handlebars"><code>&lt;b&gt;Hello World&lt;/b&gt;
</code></pre>
<ul>
<li>The new <code>inner</code> keyword can be used zero or more times in
a partial template, typically with different data (e.g. pages in a
range), and its presence signals a reversal of the execution -- the
callee becomes the caller.</li>
<li>Decorators can be deeply nested, see <a
href="https://redirect.github.com/gohugoio/hugoDocs/pull/3330">this
PR</a> for an example.</li>
</ul>
<p>This release also brings some new utility funcs in the <a
href="https://gohugo.io/functions/reflect/">reflect</a> package to
identify the core types in Hugo. For example, to identify an <a
href="https://gohugo.io/quick-reference/glossary/#processable-image">processable
image</a> hasn't been trivial, now it is:</p>
<pre lang="handlebars"><code>{{ $obj := . }}
{{ if reflect.IsResource $obj }}
   {{ if reflect.IsImageResource $obj }}
        // It has width/height and we can process it.
   {{ else }}
       // Just link to it.
   {{ end }}
{{ end }}
</code></pre>
<h2>Bug fixes</h2>
<ul>
<li>tpl/collections: Fix apply to work with built-in funcs like len
5c7fad23 <a href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/13418">#13418</a></li>
<li>Revert &quot;resources/page: Fix slugorcontentbasename for section
pages&quot; bf1d20d7 <a
href="https://github.com/bep"><code>@​bep</code></a> <a
href="https://redirect.github.com/gohugoio/hugo/issues/14104">#14104</a>
<a
href="https://redirect.github.com/gohugoio/hugo/issues/14325">#14325</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/f66d0944461bf32c4e69588bc3e093f14e4e149d"><code>f66d094</code></a>
releaser: Bump versions for release of 0.154.2</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/e9b9b36f46ccc6250ffa72188c8a5c52f96b119e"><code>e9b9b36</code></a>
Fix alpha/fuzzy border issue with new webp decoder for images with with
trans...</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/b8a2c10d06d815cdaf61ef2f03fb37267612da2e"><code>b8a2c10</code></a>
snap: Limit build platforms to amd64, arm64, ppc64el, and s390x</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/601df3883484535a95979d3c0536220570498d4f"><code>601df38</code></a>
snap: Update to core 24</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/3bed212a2f1853bc80d58a287c8a2d51decba61c"><code>3bed212</code></a>
releaser: Prepare repository for 0.155.0-DEV</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/e2fd6764be86d0cde988a7de6334fda0f43de871"><code>e2fd676</code></a>
releaser: Bump versions for release of 0.154.1</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/8f3527f61c9a7d5ecd35ec35b0f4755ec7b93531"><code>8f3527f</code></a>
Add WASM licensing information to README</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/09048aad7655385e9a287448eed65408d0b850ab"><code>09048aa</code></a>
Fix partial decorator detection in partial with blocks with outer range
break...</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/f42c422a12987c9ccb1927fc17da37feedd0c7fb"><code>f42c422</code></a>
releaser: Prepare repository for 0.155.0-DEV</li>
<li><a
href="https://github.com/gohugoio/hugo/commit/0b71db299a2bd89be876d7dc972ded03a222f560"><code>0b71db2</code></a>
releaser: Bump versions for release of 0.154.0</li>
<li>Additional commits viewable in <a
href="https://github.com/gohugoio/hugo/compare/v0.153.1...v0.154.2">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.153.1&new-version=0.154.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>
2026-01-05 12:12:11 +00:00
Jake Howell f524e00df7 feat: implement DEPRECATED_ICONS (#21346)
Closes #21320

This PR introduces a list of deprecated icons that should no longer be displayed in the UI. These icons are kept for backward compatibility but are now filtered out from:

1. The emoji picker component
2. The icons page listing

The deprecated icons include:
- Duplicate icons that have better alternatives (e.g., `apple-grey.svg` → `apple-black.svg`)
- PNG versions of icons that already have SVG versions (e.g., `aws.png` → `aws.svg`)
- Monochrome variants that are no longer needed (e.g., `docker-white.svg`)
2026-01-05 11:20:23 +11:00
blinkagent[bot] 874f3994b5 docs: update VS Code Web subpath comment to reflect current support (#21375)
Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
2026-01-02 17:16:27 +05:00
Zach 07924037e7 feat: add boundary log forwarding from agent to coderd (#21345)
Add agent forwarding of boundary audit logs from workspaces to coderd
via agent API, and re-emission of boundary logs to coderd stderr. This
change adds a server to the workspace agent that always listens on a
unix socket for boundary to connect and send audit logs.

coderd log format example:
```
[API] 2025-12-23 18:31:46.755 [info] coderd.agentrpc: boundary_request owner=.. workspace_name=.. agent_name=.. decision=.. workspace_id=.. http_method=.. http_url=.. event_time=.. request_id=..
```

Corresponding boundary PR: https://github.com/coder/boundary/pull/124
RFC:
https://www.notion.so/coderhq/Agent-Boundary-Logs-2afd579be59280f29629fc9823ac41ba
https://github.com/coder/coder/issues/21280
2025-12-31 16:38:19 -07:00
William Burton 21241abc4e chore: add airflow icon (#21401) 2025-12-31 14:00:31 +00:00
Susana Ferreira e5377fbd93 refactor: add aiproxy test helpers to reduce boilerplate (#21404)
## Description

Adds test helper functions to reduce boilerplate in `aibridgeproxyd`
tests:
* `newTestProxy`: creates a proxy server with functional options, waits
for it to be ready
* `newProxyClient`: creates an HTTP client configured to use the proxy
* `newTargetServer`: creates a mock HTTPS server and returns its URL

Related to:
https://github.com/coder/coder/pull/21344#discussion_r2638930199
2025-12-31 10:15:59 +00:00
dependabot[bot] 9ac865b72f chore: bump github.com/zclconf/go-cty-yaml from 1.1.0 to 1.2.0 (#21366)
Bumps
[github.com/zclconf/go-cty-yaml](https://github.com/zclconf/go-cty-yaml)
from 1.1.0 to 1.2.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/zclconf/go-cty-yaml/blob/master/CHANGELOG.md">github.com/zclconf/go-cty-yaml's
changelog</a>.</em></p>
<blockquote>
<h1>1.2.0 (December 17, 2025)</h1>
<ul>
<li>
<p>The YAML decoder now has more complete support for <a
href="https://yaml.org/type/merge.html"><code>tag:yaml.org,2002:merge</code></a>,
including support for merging a sequence of mappings rather than just a
single mapping.</p>
<p>Unfortunately the specification for this tag is terse and incomplete,
and other existing implementations disagree even with the few behaviors
that <em>are</em> described in the specification, so this library
implements behavior that matches existing implementations while
diverging slightly from the spec:</p>
<ul>
<li>The untagged scalar value <code>&lt;&lt;</code> is resolved as
<code>tag:yaml.org,2002:merge</code> only in the mapping key position.
In all other positions it's resolved as a normal string,
<code>&quot;&lt;&lt;&quot;</code>. Writing out the tag explicitly
instead of using the shorthand is allowed in mapping key position and
rejected as an error in all other positions.</li>
<li>Multiple merge keys can appear in the same mapping, and will each be
handled separately as if they had all been written as a single
merge.</li>
<li>Later mentions of a key override earlier mentions of a key in all
cases. This is the main deviation from the spec text: the spec requires
that the <em>earliest</em> mention of each key takes priority when
merging, but that is the opposite of the normal behavior for duplicate
keys in a mapping (without merging) and other implementations seem to
ignore that exception.</li>
</ul>
<p>There are a few other implementations that disagree with what this
library implements. That's unfortunate, but unavoidable because existing
implementations are in conflict with one another already. The choices in
this implementation were based on a survey of various other popular
implementatins and will not be changed in a breaking way after this
release.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/zclconf/go-cty-yaml/commit/85d6bca569955bb5db10d31ce6ad8f669764fbb2"><code>85d6bca</code></a>
v1.2.0 release</li>
<li><a
href="https://github.com/zclconf/go-cty-yaml/commit/229f4819225d7e96c0ce1e7100823f726aece5e8"><code>229f481</code></a>
Allow a !!merge key to be used with a sequence of mappings</li>
<li><a
href="https://github.com/zclconf/go-cty-yaml/commit/5da71a8db19c2906c0813f89c3245b050d9193a2"><code>5da71a8</code></a>
Add GitHub funding metadata</li>
<li>See full diff in <a
href="https://github.com/zclconf/go-cty-yaml/compare/v1.1.0...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/zclconf/go-cty-yaml&package-manager=go_modules&previous-version=1.1.0&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-12-30 13:28:42 +00:00