mirror of
https://github.com/coder/coder.git
synced 2026-10-16 14:48:56 +08:00
3b283eb0474b22a091cd5971045ec0791d6f1001
17187
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
3b283eb047 |
fix(site): preserve personal instructions drafts (#30626)
> 🤖 This PR was modified by Coder Agents on behalf of Jake Howell.
Prevent personal instructions drafts from being overwritten by delayed
query results. Block editing until instructions load, show initial-load
errors distinctly from empty prompts, and preserve dirty edits during
later query updates.
Reset successful saves from the server response and cache it before
refetching so a failed refresh cannot restore stale instructions.
Includes behavioral tests and loading, error, and empty Storybook
states.
Reproduction:
1. The user already has a nonempty saved personal-instructions prompt.
2. Open settings with the initial GET delayed.
3. Type a new draft into the enabled textarea.
4. The GET returns the existing saved prompt.
5. Formik replaces the draft with that prompt.
6. Further typing and Save submit the saved prompt plus subsequent
edits, losing the original draft.
<details>
<summary>Implementation decisions</summary>
- Keep Formik reinitialization for initial hydration and pristine
updates, guarded by the existing personal-model form draft pattern.
- Use the confirmed mutation response as the clean form baseline and
cache value.
- Leave the existing Saved-indicator behavior unchanged; no additional
retry UI.
</details>
|
||
|
|
5261723186 |
fix(site/src): replace role="application" on recharts charts (#30375)
> [!NOTE]
> This PR was generated by Coder Agents on behalf of @aqandrew.
Fixes DEQ-408 (axe `custom-role-application` on the user engagement
chart). Also fixes DEQ-342
recharts' `accessibilityLayer` sets `role="application"` on the chart
`<svg>` by default. This PR overrides it on all three charts that use it
(user engagement, template active users, license seat consumption) with
`role="group"` and `aria-roledescription="chart"`. It also gives each
chart an accessible name and description through recharts'
`title`/`desc` props.
`accessibilityLayer` stays, so keyboard users can still move the tooltip
with the arrow keys. To make that work for screen readers,
`ChartContainer` now renders a polite `role="status"` live region that
is always mounted. `ChartTooltipContent` builds the announcement during
render from the same label and item values the tooltip shows, and an
effect keyed on that string pushes it into the live region. Each point
is announced, for example "175 users January 02".
Not verified: NVDA behaviour (whether Tab focus switches to focus mode
so the arrows reach the chart), and an axe re-run on
`/deployment/overview`.
Frontend-review notes:
- **FE1:** the assertions live in story `play` functions. recharts'
keyboard navigation depends on real layout (`getBoundingClientRect`), so
jsdom unit tests can't exercise it.
- **FE10:** `<desc>` is checked with a selector. `dom-accessibility-api`
doesn't compute descriptions from SVG `<desc>`, although Chromium does
per SVG-AAM.
- **FE8:** the announcement string is derived during render. The one
remaining effect only pushes it into `ChartContainer`'s state, because a
component can't update another component's state while rendering.
<details>
<summary>Implementation plan</summary>
## Findings (recharts 2.15.4, verified in `node_modules`)
- `generateCategoricalChart.js:1937-1953`: with `accessibilityLayer`,
the `<svg>` gets `tabIndex = props.tabIndex ?? 0`, `role = props.role ??
"application"`, and `onKeyDown`/`onFocus` handlers. The handlers are
attached whatever the role is, so `role="group"` keeps
ArrowLeft/ArrowRight working.
- Keyboard navigation (`AccessibilityManager.spoofMouse`) goes through
the same `triggeredAfterMouseMove` path as the mouse, so the tooltip
shows the same content for both.
- `container/Surface.js:41`: the `title` and `desc` props render as
`<title>` and `<desc>` children of the `<svg>`. These give the SVG its
accessible name and description.
- `component/Tooltip.js`: `content` is always rendered and receives an
`active` prop. The tooltip wrapper (`TooltipBoundingBox`, `tabIndex=-1`)
is a sibling of the `<svg>` and is `visibility: hidden` when inactive.
That makes it unreliable as a live region, so announcements need their
own element that is always mounted.
- Three charts use `accessibilityLayer`: `UserEngagementChart`
(flagged), `ActiveUserChart`, `LicenseSeatConsumptionChart`. All three
are fixed.
## Changes
1. **Shared live region in `Chart.tsx`:** `ChartContainer` holds the
announcement state and renders an always-mounted `sr-only` live region
next to `ResponsiveContainer`. `ChartTooltipContent` sets the
announcement while active and clears it when inactive.
2. **Per-chart props:** keep `accessibilityLayer`; add `role="group"`,
`aria-roledescription="chart"`, `title` (the section name), and `desc`
(date range plus "Use the left and right arrow keys to read each day.").
## Tests (red, then green)
`play` functions on the existing stories, which run in Chromium through
`@storybook/addon-vitest`:
- **User engagement:** the chart is a named group with roledescription
"chart" and the expected `<desc>`. There is no `application` role.
Focusing the chart and pressing ArrowRight updates the live region.
- **The other two charts:** role and name only.
- **`components/Chart` default story:** without formatters, the
announcement is built from the label, the item name and the value
("January Users 186").
With the source changes reverted, all three tests fail.
## Decision log
- **Role:** `group` rather than `img`, because `img` hides the content
and conflicts with the focusable, arrow-key-driven chart. `figure` has
no interaction meaning, and `graphics-document` has poor screen-reader
support.
- **Keep the arrow-key tooltip** for keyboard users without a screen
reader, and announce changes through a live region.
- **Add `aria-roledescription="chart"`**, so screen readers say "chart"
rather than "grouping".
- **Memoize the `ChartContext` value** in `ChartContainer`, so
announcement updates don't re-render every `useChart` consumer.
`components/Chart` isn't covered by the React Compiler.
- **Deviations from the plan:**
- The live region gained `role="status"`, so it can be queried by role.
- The plan keyed the announcement effect on `active` and `payload`. The
first version instead ran on every render and read the text from the
DOM. Following review, the string is now derived from the label and item
values (strings and numbers only), and the effect depends on that
string.
- The test focuses the chart directly instead of pressing Tab, because
the first Tab stop is the "How we calculate" button.
- The description is checked on `<desc>` rather than with
`toHaveAccessibleDescription` (see FE10 above).
- The planned "live region empties on leave" assertion was dropped,
because recharts doesn't clear the tooltip on blur.
## Known tradeoffs
- **Mouse hover:** moving the mouse over the chart also triggers
announcements for screen-reader users, once per point.
- **NVDA:** NVDA users need to be in focus mode for the arrow keys to
reach the chart. The `desc` hint covers this.
- **No data table:** this PR doesn't add a table alternative to the
chart, so the WCAG 1.1.1 risk for the data itself remains.
</details>
|
||
|
|
4d1f95e73e |
feat: order lifecycle scripts by their dependencies (#30765)
feat(agent): enforce lifecycle script ordering Honor `coder_script_order` dependencies for startup and shutdown scripts using the existing outcome-aware unit manager. Cron, legacy scripts, and scripts without dependencies retain their existing behavior. - Wait for all prerequisites before running. `success` requires a successful prerequisite; `completion` also accepts failure, timeout, or skip. Skip dependents as soon as a required success becomes impossible, preserving the original failure as the lifecycle error. - Reject invalid dependency graphs before any scripts start and write the reason to every selected script's log. - Log unmet dependencies every 30 seconds and explain skips. Populate display names in the manifest so skip messages use readable names, falling back to Terraform addresses. - Exclude dependency waits from script timeouts, record an outcome on every exit, and use fresh state per execution. Cancellation stops waiters without starting dependents or emitting skip messages. Add regression coverage for ordering, skip propagation, timeouts, cancellation, invalid graphs, and unchanged unordered execution. Refs https://linear.app/codercom/issue/PLAT-549/phase-3-enforce-lifecycle-script-ordering |
||
|
|
fa926fcc77 |
docs(docs/admin/security): document workspace secrets (#30252)
Adds a short "Workspace secrets" section to the secrets security page, explaining what workspace secrets are and how they differ from template parameters. Part of [RELAY-7](https://linear.app/codercom/issue/RELAY-7/agent-relay-deliver-provider-credentials-via-coder-secrets-instead-of). **Stack** (design decisions in #30248) 1. #30248 Database schema, queries, and RBAC 2. #30249 Encryption at rest 3. #30250 Set secrets on workspace builds 4. #30251 Deliver secrets to the agent 5. **#30252 Docs (this PR)** 6. #30388 List a build's secrets 7. #30459 Audit a build's secrets - Workspace secrets are set on the create workspace or create build request. - They never reach the provisioner, so they stay out of build parameters, Terraform state, insights, and metrics. - The agent delivers them the same way as user secrets, and they can't be read back through the API. The section is intentionally brief. The API reference covers the request fields. --- *Created by Coder Agents on behalf of @Emyrk.* |
||
|
|
7d75210abf |
feat: deliver workspace secrets in the agent manifest (#30251)
Delivers workspace secrets to the agent, so they show up as env vars and files in the workspace. Part of [RELAY-7](https://linear.app/codercom/issue/RELAY-7/agent-relay-deliver-provider-credentials-via-coder-secrets-instead-of). **Stack** (design decisions in #30248) 1. #30248 Database schema, queries, and RBAC 2. #30249 Encryption at rest 3. #30250 Set secrets on workspace builds 4. **#30251 Deliver secrets to the agent (this PR)** 5. #30252 Docs 6. #30388 List a build's secrets 7. #30459 Audit a build's secrets - The agent receives the secrets of the build that created it, alongside the owner's user secrets. - A workspace secret wins over a user secret on the same env var or file path. - An agent from an older build gets no workspace secrets. - The agent itself needs no changes. <details> <summary>Implementation details</summary> - `GetManifest` finds the agent's build through its resource and provisioner job, then lists that build's live secrets as `AsWorkspaceSecretManager`. - In this PR, precedence comes from order: user secrets are emitted first and workspace secrets after, so the agent applies the workspace value last. #30388 replaces this with `workspacesecrets.Resolve`, which decides one winner per target and is shared with the build secrets API. - The deployment's file path policy applies to both kinds of secret. When file delivery is blocked, a file-only secret is dropped. </details> --- *Created by Coder Agents on behalf of @Emyrk.* |
||
|
|
116660193e |
chore: bump bundled terraform to 1.16.6 (#30516)
Bump the bundled Terraform binary from 1.16.2 to 1.16.6 (latest stable, [released 2026-10-14](https://github.com/hashicorp/terraform/releases/tag/v1.16.6)), following the same file set as #29331: - `provisioner/terraform/install.go`: `TerraformVersion` (`maxTerraformVersion` stays at 1.16.9 since this is a patch bump) - `install.sh`, `scripts/Dockerfile.base` - `mise.toml`, `mise.lock` (checksums from HashiCorp's `terraform_1.16.6_SHA256SUMS`) - `flake.nix` (fetchurl SRI hashes derived from the same SHA256SUMS) - `docs/install/prepare/airgap.md`: the example Dockerfile `ARG TERRAFORM_VERSION` had drifted back to 1.11.0 after the docs move; updated to 1.16.6 Verified locally with `go test ./provisioner/terraform/ -run 'TestInstall|Version'`. Opened by Superblink on behalf of @droopy4096. _Updated from 1.16.5 to 1.16.6 (adds an HTTP/2 resource-exhaustion fix). Branch name still says 1.16.5. Fixture fingerprint (`generation.sha1`) regenerated; `go test ./provisioner/terraform/ -run 'TestInstall|Version|Golden'` passes._ --------- Co-authored-by: coder[bot] <137810501+coder[bot]@users.noreply.github.com> Co-authored-by: Dmitry Makovey <dmakovey@yahoo.com> |
||
|
|
f25b6294b6 |
feat: set workspace secrets on workspace builds (#30250)
Lets clients set secrets when creating a workspace or a build. Secrets are saved with the build and are never sent to the provisioner. Part of [RELAY-7](https://linear.app/codercom/issue/RELAY-7/agent-relay-deliver-provider-credentials-via-coder-secrets-instead-of). **Stack** (design decisions in #30248) 1. #30248 Database schema, queries, and RBAC 2. #30249 Encryption at rest 3. **#30250 Set secrets on workspace builds (this PR)** 4. #30251 Deliver secrets to the agent 5. #30252 Docs 6. #30388 List a build's secrets 7. #30459 Audit a build's secrets - `secrets` is a new field on the create workspace and create build requests. - Each secret is delivered as an env var, a file, or both. `ephemeral` secrets last for one build only. - Secrets carry forward to every later build until a request replaces or removes them. - A secret set on another secret's env var or file path replaces that secret entirely. - A null `value` removes a secret, which needs `update` permission on the owner's workspace secrets. - Deleting a workspace clears its secret values. Secrets are stored but not delivered to the agent until #30251. <details> <summary>Example request</summary> ```json POST /api/v2/workspaces/{workspace}/builds { "transition": "start", "secrets": [ { "name": "openai-key", "value": "sk-...", "env_name": "OPENAI_API_KEY" }, { "name": "kubeconfig", "value": "apiVersion: v1 ...", "file_path": "~/.kube/config" }, { "name": "session-jwt", "value": "eyJ...", "env_name": "SESSION_JWT", "ephemeral": true }, { "name": "old-token", "value": null } ] } ``` </details> <details> <summary>Implementation details</summary> - Validation reuses the user secret field rules and the file path delivery policy. It rejects: - duplicate names, env names, or file paths within one request - a removal that also sets a target or `ephemeral` - In the build transaction, the builder: 1. copies the previous build's live, non-ephemeral secrets that the request does not name or take over 2. inserts the requested secrets 3. "Earlier builds' rows are cleared when the new build's job completes - Copying and clearing run as `AsWorkspaceSecretManager`, so autostart and other system-initiated builds work without secret permissions. Requested secrets are authorized as the build's actor. - Each row records `source` (`request` or `carry_forward`). - Per-build limit violations return a 400. - A completed delete in `provisionerdserver`, or an orphan delete in the builder, clears the workspace's values and keeps the rows. </details> --- *Created by Coder Agents on behalf of @Emyrk.* |
||
|
|
5cd67a418d |
chore: johnstcn -> mafredri as code owner for protobufs (#30852)
Replace Cian with maf as a code owner for our protobufs. |
||
|
|
58a71f6238 |
feat(enterprise/dbcrypt): encrypt workspace secrets (#30249)
Encrypts workspace secret values at rest with the existing database encryption keys, and adds workspace secrets to the `coder server dbcrypt` commands. Part of [RELAY-7](https://linear.app/codercom/issue/RELAY-7/agent-relay-deliver-provider-credentials-via-coder-secrets-instead-of). **Stack** (design decisions in #30248) 1. #30248 Database schema, queries, and RBAC 2. **#30249 Encryption at rest (this PR)** 3. #30250 Set secrets on workspace builds 4. #30251 Deliver secrets to the agent 5. #30252 Docs 6. #30388 List a build's secrets 7. #30459 Audit a build's secrets - Values are encrypted when a secret is written and decrypted when it is read. - `dbcrypt rotate` and `dbcrypt decrypt` re-encrypt or decrypt workspace secrets, 1,000 at a time. - `dbcrypt delete` clears workspace secret values instead of deleting the rows, so build history is kept. <details> <summary>Implementation details</summary> - `InsertWorkspaceSecret` and `UpdateEncryptedWorkspaceSecretValue` encrypt, and `ListActiveWorkspaceSecrets` and `GetWorkspaceSecrets` decrypt. Only live rows reach these paths, so there is no NULL handling. - Rotate and decrypt page through `GetWorkspaceSecrets` by `id`, so memory is bounded on large deployments. Only live rows are listed, about one set per workspace. - If a build clears a row between the list and the update, the update matches no row and that row is skipped. - Secret size limits count stored ciphertext bytes, the same as user secrets. Fixing that for both is tracked in #30441. </details> --- *Created by Coder Agents on behalf of @Emyrk.* |
||
|
|
d36c1535d5 |
fix: bump Go version from 1.26.5 to 1.26.9 (#30807)
Bump the Go toolchain from 1.26.5 to 1.26.9 ([released 2026-10-02](https://go.dev/doc/devel/release#go1.26.9)). Tracked in Linear: [ENT-210](https://linear.app/codercom/issue/ENT-210/ironbank-critical-bump-go-to-1269-fix-by-2026-10-29). Iron Bank fix-by date for the Critical finding is **2026-10-29**. Go 1.26.9 includes fixes for the findings Iron Bank reported against `coder/coder-enterprise/coder-service-2:2.38.0`. Of the 19 still-valid advisories, 12 are only fixed in 1.26.9, including the Critical one: - Critical: [GO-2026-6612](https://pkg.go.dev/vuln/GO-2026-6612) / CVE-2026-78663 (HTTP/2 server double flow-control refund) - High: GO-2026-6603, -6605, -6607, -6608, -6609, -6610, -6611, -6613 - Low: GO-2026-6599, -6600, -6617 The other 7 (GO-2026-5026, -5942, -6088, -6089, -6090 High; -6091, -6218 Medium) are fixed since 1.26.6. The full list with links is in ENT-210. ## Changes Same file set as #27157: - `go.mod`: `go 1.26.5` to `go 1.26.9` - `mise.toml` / `mise.lock`: Go toolchain pin and the archive URLs and SHA-256 checksums for each platform (taken from the official `go.dev/dl` release list) ## Verification - `go build ./enterprise/cmd/coder` with go1.26.9 succeeds; `go mod tidy -diff` is clean. - `govulncheck -mode binary` on the resulting binary reports none of the 19 advisories above. The same scan of the released 2.38.0 binary (go1.26.5) reports all 19. ## Not in this PR `golang.org/x/net` v0.60.0 (the module-side half of GO-2026-6603, -6610, -6611, -6612 and -6617) is already on `main` via #30772 and is backported to the release branches in #30814 (2.38), #30815 (2.37), #30816 (2.36), #30817 (2.35) and #30818 (2.34), tracked in [ENT-211](https://linear.app/codercom/issue/ENT-211/ironbank-critical-bump-golangorgxnet-to-v0600-on-release-branches-fix). The Go 1.27.1 bump (#30288) stays a separate, larger change. Go backports: #30808 (2.38), #30809 (2.37), #30810 (2.36), #30813 (2.35), #30811 (2.34). Opened by Superblink on behalf of @droopy4096. |
||
|
|
9eba637584 |
docs(docs/ai-coder/agents): reformat to one sentence per line (#30700)
Reformats the Coder Agents docs under `docs/ai-coder/agents` to one sentence per line, as the [docs style guide](https://github.com/coder/coder/blob/main/docs/.style/style-guide/formatting.md#one-sentence-per-line) requires. Hard-wrapped paragraphs are unwrapped and lines holding several sentences are split, so a later edit to one sentence shows up as a one-line diff. Apart from the exception below, only whitespace inside paragraphs and list items changes, and the rendered pages are the same. Comparing the changed files against `main` word for word, ignoring whitespace and blockquote `>` markers, finds differences only on the reworded lines. `git diff --word-diff` is easier to read than the line diff. 59 lines that already contained an em or en dash were reworded by hand, because `lint/emdash` treats every reflowed line as newly added. Each uses a parenthetical, a separate sentence, or a colon after a lead-in. Dashes on lines the reflow did not touch are left alone. Applied with an in-progress formatter, limited to pages listed in `docs/manifest.json` and excluding generated reference docs. This is one of a batch of PRs that split the docs by area (21 files changed, 870 insertions(+), 1294 deletions(-)). --- 🤖 Built with AI assistance. |
||
|
|
7aef110ca2 |
feat: add workspace secrets table, queries, and RBAC (#30248)
Adds the database table, queries, and permissions for workspace secrets: secrets set on a workspace build and delivered to the agent, never to Terraform. Each secret belongs to one workspace build. A new build copies the previous build's secrets, then the old copies lose their values but stay as history. |
||
|
|
17ec9459c0 |
fix(scripts/dogfood): pass GO_LINT_NEW_CODE_BASE to the image lint run (#30851)
Fixes the `build_image (26.04)` failure in the `dogfood` workflow on PRs into `main` (seen on #30807). Tracked in [ENT-213](https://linear.app/codercom/issue/ENT-213). ## Problem `lint/go/new-code` (added in #30622) runs `.golangci.new-code.yaml` with `--new-from-merge-base=$(GO_LINT_NEW_CODE_BASE)`, which defaults to `origin/main`. `ci.yaml` sets `GO_LINT_NEW_CODE_BASE` to `HEAD^1` for PRs and `HEAD` otherwise. `scripts/dogfood/test_image.sh` doesn't pass it into the container, and the dogfood checkout (depth 2) has no `origin/main`. So `make lint` inside the image reports the whole tree (1263 issues: errcheck 437, forbidigo 42, nolintlint 784) and fails "Test image tooling". Pushes to `main` run the same validation before pushing the image, so the next dogfood-triggering merge to `main` would also fail and skip the Docker Hub push. ## Change `scripts/dogfood/test_image.sh` only: - Under GitHub Actions, and when `GO_LINT_NEW_CODE_BASE` isn't already set, default it to `HEAD^1` for `pull_request` and `HEAD` otherwise, mirroring `ci.yaml`. - Forward it into the container with `--env GO_LINT_NEW_CODE_BASE`. - Local runs are unchanged: the variable stays unset unless you set it, so the Makefile default (`origin/main`) applies. This PR touches `scripts/dogfood/**`, which triggers the `dogfood` workflow, so its own `build_image (26.04)` run is the end-to-end test. Opened by Superblink on behalf of @droopy4096. Co-authored-by: coder[bot] <137810501+coder[bot]@users.noreply.github.com> Co-authored-by: Dmitry Makovey <dmakovey@yahoo.com> |
||
|
|
c6a47c4428 |
docs: replace references to the retired Enterprise license tier (#30853)
## Summary Coder has only Community and Premium license tiers, but several docs pages, CLI help strings, and SDK field comments still called features "Enterprise" or "enterprise-only". This PR changes them to say Premium and regenerates the reference docs built from those strings. Resolves [DOCS-1298](https://linear.app/codercom/issue/DOCS-1298/remove-references-to-the-retired-enterprise-license-tier). ## Changes - `docs/admin/users/quotas.md`: Replace "scoped to Groups in Enterprise and organizations in Premium" with a correct sentence. Quotas are Premium, allowances are set on groups, and each user's budget is calculated separately in each organization (per `GetQuotaAllowanceForUser`). - `docs/user-guides/workspace-lifecycle.md`: Replace "Enterprise" with Premium, and correct the quotas sentence to match the quotas page. - `docs/ai-coder/agents/platform-controls/mcp-servers.md`: Replace "enterprise entitlement" with Premium license. - `cli/templatecreate.go`, `cli/templateedit.go`: Update `--require-active-version`, `--allow-user-autostart`, and `--allow-user-autostop` help text. Point the `--require-active-version` help at the renamed `#template-update-policies` section, because the old `#require-automatic-updates-enterprise` anchor is broken. Make the errors for these flags tier-neutral. - `enterprise/cli/features.go`: `coder features` now says "List license features and entitlements", and its AGPL error no longer names a tier. - `codersdk/templates.go`, `codersdk/organizations.go`: Update field comments that feed the API reference and TypeScript types. - `docs/reference/glossary.md`: The Premium entry now says "paid license tier" instead of "paid enterprise tier". - `docs/.style/style-guide/voice-and-tone.md`: The example sentence now says "Premium licensing". - Regenerated: CLI golden files, `docs/reference/cli/`, `docs/manifest.json`, `docs/manifest/generated/cli.json`, `docs/reference/api/`, `coderd/apidoc/`, and `site/src/api/typesGenerated.ts`. ## Testing - `go test ./cli -run 'TestCommandHelp|TestCliTemplateCreate'` and `go test ./enterprise/cli -run 'TestEnterpriseCommandHelp|TestTemplateCreate|TestTemplateEdit|TestFeaturesList'` pass. - The pre-commit hook passed, including `make gen`, `fmt`, `lint/go`, `lint/ts`, `lint/markdown`, and a slim build. <details> <summary>Decisions and out-of-scope items</summary> ### Decisions - **Premium wording and legacy Enterprise licenses:** Coder still accepts existing Enterprise licenses, and `FeatureSetEnterprise` includes the features labeled Premium here. Docs and help text say "Premium" because that is the tier sold today, and about 25 other docs pages already use "Premium feature". Error strings are tier-neutral, so they're accurate for every license holder. - **Glossary and style guide:** The issue marked these as borderline. Both were one-word changes, so I made them. ### Not changed - `docs/reference/api/enterprise.md` keeps the "Enterprise" sidebar title. It comes from the swagger tag on the `enterprise/` Go package, so renaming it is a larger change. - Other "Enterprise" references the review flagged as out of scope: the `coder server --help` option group, quiet hours SDK comments, internal `coderd` comments, and the dashboard's "Enterprise" badge on the require-active-version option. - No docs page says that legacy Enterprise licenses are still valid. - Uses that don't refer to the license tier: GitHub Enterprise, Red Hat Enterprise Linux, "enterprise environments", and `enterprise/` package paths. </details> --- _This PR was generated by Coder Agents on behalf of @nickvigilante._ |
||
|
|
4ae1b7bd28 |
docs(docs/user-guides): fix tab block class typo on the remote desktops page (#30862)
## Summary The VNC section of the Remote desktops page opened its nested tab block with `<div class="tab">` instead of `<div class="tabs">`. The new docs site converts only `class="tabs"` blocks into tabs, so **Coder Desktop** and **CLI** rendered as `<h4>` headings directly under the `## VNC` heading. The outer tab's **Desktop Client** label isn't a heading, so the page skipped from h2 to h4, and axe reports `heading-order`. This was the only occurrence of the typo in `docs/`. ## QA | Page | Production | Expected after merge | | --- | --- | --- | | Remote desktops, VNC section | [beta-docs @main](https://coder.com/beta-docs/@main/user-guides/workspace-access/remote-desktops/#vnc) | **Coder Desktop** and **CLI** render as tabs inside **Desktop Client**, with no h4 headings | The default version on beta-docs (v2.37.4) has the same typo, so the fix shows there only after the next release. A docs-engine change that warns on `class="tab"` at build time is tracked separately. Linear: [DOCS-1306](https://linear.app/codercom/issue/DOCS-1306/fix-div-classtab-typo-that-leaves-stray-h4-headings-on-remote-desktops) --- 🤖 Built with AI assistance. |
||
|
|
0dc36786de |
docs(docs/.style): add compliance-claims wording rule to the style guide (DOCS-1256) (#30778)
Adds a "Describe what Coder does, not compliance outcomes" rule to the
docs style guide's word-choice page, so writers and reviewers have one
place for compliance-claim wording.
- The rule says to describe Coder's controls, not the reader's
compliance status, and to back every certification, audit, validation,
or authorization claim with a current artifact.
- A Do/Don't table covers SOC 2, ISO/IEC 27001, FIPS 140-3, FedRAMP and
DoD Impact Levels, DISA STIG, Iron Bank, CMMC, HIPAA, GDPR, DORA, and
the AI Act, with the reason behind each entry.
- The style guide README coverage counts move from 79 to 80 rules (Word
choice: 17 rules, 10 planned), and the Vale README lists the planned
`Coder.ComplianceClaims` rule.
Resolves DOCS-1256.
<details>
<summary>Decision log</summary>
- **Self-contained phrasing.** The approved phrasing comes from an
internal assessment that can't be linked from public docs, so the rule
states each term directly instead of pointing to it.
- **Facts checked before writing:**
- The AICPA issues no SOC 2 certificate; a CPA firm issues an
attestation report.
- ISO doesn't certify; a certification body certifies a management
system within a scope.
- CMVP validates modules under a certificate number; FIPS 140-2
certificates moved to the Historical list in September 2026.
- FedRAMP authorizes cloud service offerings, which a self-hosted
deployment isn't.
- CMMC certifies organizations; HIPAA has no certification program.
- **Scope limits:** protocol conformance ("specification-compliant OIDC
provider") and sentences where the reader is the subject stay allowed,
so the planned lint rule doesn't flag them.
- **Enforcement:** the footer marks `Coder.ComplianceClaims` as planned.
The Vale rule itself is separate work.
- Checks: `make lint/style-claims`, `markdownlint-cli2`, `vale`,
`check_emdash.sh`, and the pre-commit hook pass locally.
</details>
<details>
<summary>CI note: Storybook failure is unrelated</summary>
The `Storybook` job failed when the Pixel snapshot service marked its
build as failed (31 snapshots awaiting review). This PR changes only
Markdown under `docs/.style/` and touches no `site/` code or stories.
</details>
---
_Generated by Coder Agents on behalf of @nickvigilante._
|
||
|
|
1f61a290e7 |
docs(docs/ai-coder): reformat AI Gateway client and Agent Firewall docs to one sentence per line (#30702)
Reformats the AI Gateway client and proxy docs, the Agent Firewall docs, and the top-level pages under `docs/ai-coder` to one sentence per line, as the [docs style guide](https://github.com/coder/coder/blob/main/docs/.style/style-guide/formatting.md#one-sentence-per-line) requires. Hard-wrapped paragraphs are unwrapped and lines holding several sentences are split, so a later edit to one sentence shows up as a one-line diff. Apart from the exception below, only whitespace inside paragraphs and list items changes, and the rendered pages are the same. Comparing the changed files against `main` word for word, ignoring whitespace and blockquote `>` markers, finds differences only on the reworded lines. `git diff --word-diff` is easier to read than the line diff. 1 lines that already contained an em or en dash were reworded by hand, because `lint/emdash` treats every reflowed line as newly added. Each uses a parenthetical, a separate sentence, or a colon after a lead-in. Dashes on lines the reflow did not touch are left alone. Applied with an in-progress formatter, limited to pages listed in `docs/manifest.json` and excluding generated reference docs. This is one of a batch of PRs that split the docs by area (27 files changed, 414 insertions(+), 513 deletions(-)). --- 🤖 Built with AI assistance. |
||
|
|
c58ac71ca3 |
docs(docs/tutorials): reformat to one sentence per line (#30703)
Reformats the tutorials under `docs/tutorials` to one sentence per line, as the [docs style guide](https://github.com/coder/coder/blob/main/docs/.style/style-guide/formatting.md#one-sentence-per-line) requires. Hard-wrapped paragraphs are unwrapped and lines holding several sentences are split, so a later edit to one sentence shows up as a one-line diff. Apart from the exception below, only whitespace inside paragraphs and list items changes, and the rendered pages are the same. Comparing the changed files against `main` word for word, ignoring whitespace and blockquote `>` markers, finds differences only on the reworded lines. `git diff --word-diff` is easier to read than the line diff. 9 lines that already contained an em or en dash were reworded by hand, because `lint/emdash` treats every reflowed line as newly added. Each uses a parenthetical, a separate sentence, or a colon after a lead-in. Dashes on lines the reflow did not touch are left alone. The two reverse proxy tutorials also write `*.coder.example.com` in backticks instead of escaping the asterisk, which the formatter would otherwise drop. Applied with an in-progress formatter, limited to pages listed in `docs/manifest.json` and excluding generated reference docs. This is one of a batch of PRs that split the docs by area (19 files changed, 656 insertions(+), 1265 deletions(-)). --- 🤖 Built with AI assistance. |
||
|
|
c85ebc1346 |
fix: make workspace create denials on behalf of another user actionable (#30537)
Creating a workspace for another user as a caller without permission returned the same 403 as creating your own: "You are unable to create a workspace in this organization. It is possible to have access to the template, but not be able to create a workspace." For service accounts and integrations that always create for someone else, that doesn't say who the workspace was for, which organization, or what to do about it. When the caller is not the owner, the two 403s now say what is missing and for whom. Messages and details only; status codes and authorization are unchanged, and self-creates keep their existing text. Missing create permission: > You can't create workspaces for other users in this organization. > Creating a workspace for "alice" needs permission to create workspaces owned by other users in organization "coder", which your account doesn't have. Use an account with that permission (for example an organization admin), or create the workspace as "alice". Missing `use` on the template: > You can't use the template "demo" to create workspaces for other users. > Creating a workspace for "alice" from this template needs "use" access to template "demo", which your account doesn't have. Ask a template admin to grant it, or use an account that has it. `preflightWorkspaceCreate` now receives the caller's ID and the owner (name included) instead of just the owner ID. `coder create` prints the detail already, and the web UI shows it through `ErrorAlert`. **How it renders** Web UI (create page, `ErrorAlert`): <img width="2592" height="1490" alt="Web UI error for creating a workspace on behalf of another user" src="https://github.com/user-attachments/assets/9b1f1378-e4df-40df-8b6f-ca6cccdc4238" /> CLI (`coder create alice/ws1 --template demo` as a plain member): ``` error: Trace=[create workspace: ] You can't create workspaces for other users in this organization. Creating a workspace for "alice" needs permission to create workspaces owned by other users in organization "coder", which your account doesn't have. Use an account with that permission (for example an organization admin), or create the workspace as "alice". ``` Refs PLAT-726. Related owner-state inconsistencies are tracked in PLAT-749. |
||
|
|
7e69cd0af7 |
chore: refresh AI model price book (#30828)
## Price book changes 0 models added, 0 models removed, 24 models changed. <details> <summary>Changed</summary> - openrouter/deepseek/deepseek-v4-pro - openrouter/deepseek/deepseek-v4-pro-0813 - openrouter/deepseek/deepseek-v4.1-flash - openrouter/google/gemma-4-31b-it - openrouter/minimax/minimax-m2.5 - openrouter/mistralai/mistral-small-3.2-24b-instruct - openrouter/moonshotai/kimi-k3 - openrouter/openai/gpt-5.6-sol - openrouter/openai/gpt-5.6-sol-pro - openrouter/openai/gpt-oss-120b - openrouter/qwen/qwen3.6-35b-a3b - openrouter/qwen/qwen3.8-27b - openrouter/tencent/hy3 - openrouter/tencent/hy4-preview - openrouter/z-ai/glm-5 - openrouter/z-ai/glm-5.1 - openrouter/z-ai/glm-5.2 - openrouter/z-ai/glm-5.3 - openrouter/~deepseek/deepseek-flash-latest - openrouter/~deepseek/deepseek-pro-latest - openrouter/~google/gemini-pro-latest - openrouter/~moonshotai/kimi-latest - openrouter/~z-ai/glm-flash-latest - openrouter/~z-ai/glm-latest </details> ## Review notes Regenerated by `make gen/aibridge-prices` from the live [models.dev](https://models.dev) catalog. Both artifacts come from one snapshot, so they ship together: - `coderd/aibridge/prices/data/prices.json` - `site/src/modules/aiModels/knownModels/knownModelsGenerated.json` These are customer-visible cost numbers taken from upstream data, so this PR is never merged automatically. The summary above lists what moved; check the diff for exact figures before approving. Opened automatically by the [aigateway-prices-refresh workflow](https://github.com/coder/coder/actions/runs/38710433812). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
||
|
|
aef7f15510 |
fix(coderd/x/chatd): only retry without drop_block when it's rejected (#30821)
In #29792, once a provider and model had accepted `drop_block`, any 400 on a request with it retried once without it, since I didn't know what error a provider returns for an unsupported beta. That turned out to hide real errors. On dogfood, a chat replaying some very tall screenshots hit Anthropic's many-image limit: ``` messages.9.content.43.image.source.base64.data: At least one of the image dimensions exceed max allowed size for many-image requests: 3000 pixels ``` The retry without `drop_block` then hit the stale thinking block, so the chat failed with the binding error instead, and the image error only showed up in a warn log. To fix, we'll only retry without `drop_block` when the 400 is a known rejection of the field or its beta, and otherwise return the error as is and keep the hint. The catch is that if a provider rejects the beta with an error we don't recognise, chats on that model will see it until a restart clears the hint, rather than us recovering. Claude Code (as of 2.1.300) does the same on Anthropic's own API, Claude Platform on AWS included: it only retries without the beta when the 400 names it or the `block_binding` field. On Bedrock, Vertex and Mantle it also retries on any 400 it doesn't otherwise recognise, which we could copy if that catch turns out to matter. The oversized screenshots are a separate problem, since chatd doesn't resize images at all. |
||
|
|
1d57682dab |
fix: give buttons accessible names (#30796)
Fixes the axe `button-name` (WCAG 4.1.2) findings from the Deque audit:
- fixes DEQ-431
- fixes DEQ-456
- fixes DEQ-101 (duplicate of DEQ-456)
- fixes DEQ-138
affected buttons:
- **Workspace sharing role selects** (DEQ-431, DEQ-456, DEQ-101): Radix
Select triggers render `role="combobox"`, and ARIA doesn't let a
combobox take its name from its content. That's why the visible
"Use"/"Admin" text didn't count. Each member row's select is now named
`Role for <member>`. The add-member form's select is named `Role`.
- **Agent logs "Copy selected logs" button** (DEQ-138): the icon-only
button had a name only in its tooltip. It now has `sr-only` text,
matching the download button next to it.
Adds Vitest coverage in `WorkspaceSharingForm.test.tsx`. The test finds
each select by its accessible name and checks that changing the role
calls the update callback. It fails without the fix.
<details>
<summary>Implementation notes and review decisions</summary>
**Mapping axe selectors to components**
- DEQ-431: `form > div > button:nth-child(2)` is `RoleSelectField` in
`AddWorkspaceUserOrGroup`.
- DEQ-456 / DEQ-101: `table > tbody > tr > td:nth-child(2) > button` is
`RoleSelect` in `WorkspaceSharingForm`.
- DEQ-138: `section:nth-child(3)` (agent card logs section) `> … >
div:nth-child(2) > button:nth-child(1)` is the copy button in the
`AgentRow` logs toolbar. `data-state="closed"` with no `aria-expanded`
means it's a Tooltip trigger.
**Justified findings from the frontend review (`frontend-deep-review`
and `frontend-review`)**
- FE1/TS5, no Vitest for the copy button: rendering `AgentRow` with
streamed logs needs the proxy context and websocket log fixtures. The
change only adds an `sr-only` label. I removed a story `play` assertion
that I'd first added, because FE1 bans assertions in `play` functions.
- FE6, label-in-name (WCAG 2.5.3): the combobox's visible text is its
*value* ("Use"/"Admin"), not its label. The visible label is the "Role"
column header, and the accessible names include it. Screen readers still
announce the value from the trigger's content.
- Not changed: the copy button's tooltip switches to "Copied!" but
screen readers hear no announcement. That was already the case before
this PR, and it's a different WCAG criterion (4.1.3), so it's out of
scope here.
**Checks run:** `pnpm check`, `pnpm lint:types`, `pnpm lint`, the unit
tests, the `AgentRow` / `WorkspaceSharingPage` / `WorkspaceActions`
story tests, and `make pre-commit`.
</details>
---
_Generated by Coder Agents on behalf of @aqandrew._
|
||
|
|
603dd420d1 |
feat: add ServerTailnet logs and metrics for unreachable agents (#30133)
Add default-level metrics and warn-level diagnostics to investigate ServerTailnet reachability failures causing agent-specific 502s, without restarting coderd or enabling debug logging. - Enrich request logs and PTY/chatd warnings with agent ID, failure reason, wait duration, coordinator state, WireGuard handshake and byte counts, and DERP regions. - Add metrics for unreachable attempts by reason, reachability latency, embedded DERP connections, and offline app/terminal requests. - Distinguish reachability failures from subsequent TCP dial failures, cap reverse proxy dials at one minute, and exclude expected chatd readiness polls and superseded-agent dials from unreachable counts. - Report missing handshakes as zero time instead of 1970, also fixing `coder ping`. Part of PLAT-680, a sub-issue of PLAT-360. |
||
|
|
609c5b95fb |
chore: bump github.com/moby/sys/user from 0.4.0 to 0.4.1 (#30534)
Bumps [github.com/moby/sys/user](https://github.com/moby/sys) from 0.4.0 to 0.4.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/moby/sys/releases">github.com/moby/sys/user's releases</a>.</em></p> <blockquote> <h2>mountinfo v0.4.1</h2> <p>Fixes and improvements:</p> <ul> <li>Fix PrefixFilter() being too greedy (<a href="https://redirect.github.com/moby/sys/issues/61">#61</a>)</li> <li>TestMountedBy*: add missing pre-checks (ce8f425e79a74602c4055fb1776f38043d56827b)</li> <li>Documentation improvements (<a href="https://redirect.github.com/moby/sys/issues/52">#52</a>)</li> </ul> <h2>user/v0.4.1</h2> <h2>What's Changed</h2> <ul> <li>user: prevent possible DoS via unbounded parsing of user and group database files in CVE-2026-61801 / <a href="https://github.com/moby/sys/security/advisories/GHSA-mjcv-p78q-w5fw">GHSA-mjcv-p78q-w5fw</a>. This fixes a similar issue as CVE-2026-47262 in containerd.</li> <li>user: prevent falling back to looking up numeric usernames and improve handling of numeric user/group to prevent looking up numeric values as usernames. This fixes a similar issue as CVE-2026-46680 in containerd. <a href="https://redirect.github.com/moby/sys/pull/221">moby/sys#221</a></li> <li>user: bump Go to 1.18, modernize <a href="https://redirect.github.com/moby/sys/pull/198">moby/sys#198</a></li> <li>user: make code a bit more DRY <a href="https://redirect.github.com/moby/sys/pull/225">moby/sys#225</a></li> <li>user: test cleanups <a href="https://redirect.github.com/moby/sys/pull/226">moby/sys#226</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/moby/sys/compare/user/v0.4.0...user/v0.4.1">https://github.com/moby/sys/compare/user/v0.4.0...user/v0.4.1</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/moby/sys/commit/85a71bbe1faa36c552a960e6a5f3d0cfb632fbbe"><code>85a71bb</code></a> Merge commit from fork</li> <li><a href="https://github.com/moby/sys/commit/2c56c3d5d089bfa66d01b6c0bb69428e9d5d18c5"><code>2c56c3d</code></a> user: limit line length in ParseGroupFilter</li> <li><a href="https://github.com/moby/sys/commit/bba2f13154cb607bfbc7e209f8d9100ef4000329"><code>bba2f13</code></a> user: limit reads from user database files</li> <li><a href="https://github.com/moby/sys/commit/ee79b0e8cbbf36c26a182e94e0ec41c5c1c09c34"><code>ee79b0e</code></a> Merge pull request <a href="https://redirect.github.com/moby/sys/issues/221">#221</a> from thaJeztah/limit_uidgid</li> <li><a href="https://github.com/moby/sys/commit/6eb9f1533f265128f3172f26319ac4ec337e2cdc"><code>6eb9f15</code></a> user: GetAdditionalGroups: treat numeric group arguments as GIDs only</li> <li><a href="https://github.com/moby/sys/commit/c66bd2df666e11742905d01b82273f8a1db1be0c"><code>c66bd2d</code></a> user: prevent falling back to looking up numeric usernames</li> <li><a href="https://github.com/moby/sys/commit/c87335998b73cbe3ecbf4bb8372e3118edb8e835"><code>c873359</code></a> Merge pull request <a href="https://redirect.github.com/moby/sys/issues/226">#226</a> from thaJeztah/user_test_cleanups</li> <li><a href="https://github.com/moby/sys/commit/f41a5ef1732cf3793717f6b0ff126116ddde8874"><code>f41a5ef</code></a> Merge pull request <a href="https://redirect.github.com/moby/sys/issues/225">#225</a> from thaJeztah/user_dry</li> <li><a href="https://github.com/moby/sys/commit/5c2e8a01a7ce7f2456dbcd706173161e035d4df5"><code>5c2e8a0</code></a> user: add test-cases for maxID (math.MaxInt32)</li> <li><a href="https://github.com/moby/sys/commit/e001aea433c246e3011c4f3bdab96a209f194510"><code>e001aea</code></a> user: use sub-tests</li> <li>Additional commits viewable in <a href="https://github.com/moby/sys/compare/user/v0.4.0...user/v0.4.1">compare view</a></li> </ul> </details> <br /> [](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 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> |
||
|
|
e7c2fd5d2e |
feat: add Gemini 4 Argon to Agents and AI Gateway (#30780)
Add Gemini 4 Argon to the Agents known models catalog, so it appears as a suggestion when an admin adds a chat model, and regenerate the AI Gateway price book from models.dev. | Provider | Model ID | Placed before | |---|---|---| | google | `gemini-4-argon` | `gemini-3.1-pro-preview` | | openrouter, vercel | `google/gemini-4-argon` | `google/gemini-3.8-flash` | **Pricing.** The price book carries Google's launch rates on google, openrouter, vercel, and copilot: $2 per 1M input tokens, $10 per 1M output tokens, and $0.10 per 1M cached input tokens. Google doubles them on 2026-12-01 ($4, $20, $0.20); the weekly refresh picks that up once models.dev changes. The google entry keeps models.dev's 32,768 max output tokens, the cap Google enforces on non-streaming `generateContent` calls (larger values return HTTP 400 there). **Thinking levels.** `googleSupportedThinkingLevels` did not recognize the `argon` name token and failed closed, so chatd sent Argon no `thinking_level` and no `include_thoughts`: the native Google path dropped the reasoning effort, and neither path showed thought summaries. Argon accepts LOW, MEDIUM, and HIGH like Gemini 3.1 Pro and rejects MINIMAL, so the map now treats it like the Pro family. **Upstream drift.** `prices.json` covers every model of its 8 providers, so the regeneration also brings the changes since the last weekly refresh, all on OpenRouter and Vercel: 14 other new entries, 26 entries models.dev delisted, and 51 price changes. The catalog picks up the same changes for 8 curated OpenRouter entries (DeepSeek, Kimi, Qwen, and GLM). ## Testing - Live requests to `gemini-4-argon` through the AI Gateway's Google provider (Google's OpenAI-compatible endpoint): `reasoning_effort` and `thinking_level` values `low`, `medium`, and `high` return 200 and `minimal` returns 400; `include_thoughts` returns thought text in streaming and non-streaming responses. - Red-green: removing the `argon` token fails `TestGoogleSupportedThinkingLevels/gemini-4-argon` (expected LOW, MEDIUM, HIGH; got nil). - Regenerating from the saved models.dev snapshot reproduces both generated files byte for byte. - `go test ./scripts/aibridgepricesgen/... ./coderd/aibridge/prices/... ./coderd/x/chatd/chatprovider/...` and `pnpm exec vitest run --project=unit src/modules/aiModels/` pass. The pre-commit hook passed; local pre-push checks were skipped, so CI is the first full run. ## Review record - Frontend review: the only `site/` change is the generated `knownModelsGenerated.json`, so the FE1 to FE10 checklist does not apply; no hand-written frontend code changed. > Xum opened this PR on behalf of @ibetitsmike. |
||
|
|
11f1ee7d9f |
ci: fail the test process with a heap profile when memory passes a per-runner limit (#30487)
test: add memory guard and heap profiles for CI timeouts Add a memory guard to `cli`, `agent`, and `enterprise/cli` to diagnose recurring macOS `test-go-pg` timeouts. Recent logs show runaway memory usage and heavy swapping, but the allocation source remains unknown. - Check Go runtime memory once per second, with per-process CI limits of 5 GiB on macOS and 6 GiB on Linux and Windows. Disabled when `CODER_TEST_MEMORY_LIMIT_MIB` is unset. - On exceeding the limit, save a heap profile, attempt a second profile after forced GC with a five-second wait limit, then panic with memory usage, profile paths, and all goroutine stacks. - Upload heap profiles from unsuccessful CI jobs on every OS, retaining them for seven days. - Test guard lifecycle, environment parsing, panic diagnostics, profile validity, and post-GC allocation attribution. Validate with race tests, vet, lint, and a manual macOS test. Refs https://linear.app/codercom/issue/PLAT-251/flake-test-go-pg-macos-job-timeoutcancelled Refs https://github.com/coder/internal/issues/1365 |
||
|
|
c647260901 |
docs(docs/ai-coder/ai-gateway): reformat to one sentence per line (#30701)
Reformats the AI Gateway docs directly under `docs/ai-coder/ai-gateway` to one sentence per line, as the [docs style guide](https://github.com/coder/coder/blob/main/docs/.style/style-guide/formatting.md#one-sentence-per-line) requires. Hard-wrapped paragraphs are unwrapped and lines holding several sentences are split, so a later edit to one sentence shows up as a one-line diff. Apart from the exception below, only whitespace inside paragraphs and list items changes, and the rendered pages are the same. Comparing the changed files against `main` word for word, ignoring whitespace and blockquote `>` markers, finds differences only on the reworded lines. `git diff --word-diff` is easier to read than the line diff. 4 lines that already contained an em or en dash were reworded by hand, because `lint/emdash` treats every reflowed line as newly added. Each uses a parenthetical, a separate sentence, or a colon after a lead-in. Dashes on lines the reflow did not touch are left alone. Applied with an in-progress formatter, limited to pages listed in `docs/manifest.json` and excluding generated reference docs. This is one of a batch of PRs that split the docs by area (10 files changed, 395 insertions(+), 570 deletions(-)). --- 🤖 Built with AI assistance. |
||
|
|
4f7bddb640 |
fix(site/src/pages/TemplateBuilder): use a radio group for module category filters (#30523)
Fixes the axe `aria-valid-attr-value` violation reported in DEQ-288 on
the template builder's "Select modules" step.
The category filters were Radix `Tabs` with no `TabsContent`. Radix
`TabsTrigger` always sets `aria-controls` to `<baseId>-content-<value>`,
so the active "All" trigger pointed at an id that did not exist. (axe
skips `aria-controls` on tabs with `aria-selected="false"`, which is why
only the active one was flagged.)
The categories filter the same grid as the search field, so they are not
tabs and there is no panel per category. They now render as a Radix
`RadioGroup` (`role="radiogroup"` with `role="radio"` / `aria-checked`
items) labelled "Filter modules by category". Arrow keys move focus and
check the item, following the APG radio pattern. Keyboard focus shows
the same ring as `TabLink`. The styling matches the previous tabs;
computed colors, borders, padding, and positions are identical. The
shared `#/components/RadioGroup` wrapper renders a dot indicator, so
this uses the Radix primitive directly.
The `useKebabMenu` call is removed with the tabs. It was never wired up
here (no measure props and no overflow menu rendered), and the row
already wraps.
Verification:
- Ran axe-core 4.11 against the `Default` and `FilteredByCategory`
stories. On `main` it reports `aria-valid-attr-value` on
`#radix-…-trigger-All`. On this branch that violation is gone. The
remaining `nested-interactive` and `target-size` findings come from
`ModuleCard` and are out of scope.
- Keyboard check in Playwright: Tab lands on the checked radio,
ArrowRight/ArrowLeft check the adjacent category and filter the grid,
and Tab leaves the group in one stop. The focus ring shows on keyboard
focus only, not on mouse click.
- `pnpm test:storybook` for `ModuleSelectStep.stories.tsx` (5 passed),
`pnpm lint:types`, `pnpm check`, `pnpm lint`.
> 🤖 This PR was generated by Coder Agents on behalf of @aqandrew.
|
||
|
|
1872b183ee |
docs(docs/admin): reformat setup and integrations docs to one sentence per line (#30704)
Reformats the setup and integrations docs under `docs/admin/setup` and `docs/admin/integrations` to one sentence per line, as the [docs style guide](https://github.com/coder/coder/blob/main/docs/.style/style-guide/formatting.md#one-sentence-per-line) requires. Hard-wrapped paragraphs are unwrapped and lines holding several sentences are split, so a later edit to one sentence shows up as a one-line diff. Apart from the exception below, only whitespace inside paragraphs and list items changes, and the rendered pages are the same. Comparing the changed files against `main` word for word, ignoring whitespace and blockquote `>` markers, finds differences only on the reworded lines. `git diff --word-diff` is easier to read than the line diff. 1 lines that already contained an em or en dash were reworded by hand, because `lint/emdash` treats every reflowed line as newly added. Each uses a parenthetical, a separate sentence, or a colon after a lead-in. Dashes on lines the reflow did not touch are left alone. Applied with an in-progress formatter, limited to pages listed in `docs/manifest.json` and excluding generated reference docs. This is one of a batch of PRs that split the docs by area (25 files changed, 380 insertions(+), 572 deletions(-)). --- 🤖 Built with AI assistance. |
||
|
|
238a476e9a |
chore: bump github.com/hashicorp/terraform-json from 0.28.0 to 0.29.0 (#30774)
Bumps [github.com/hashicorp/terraform-json](https://github.com/hashicorp/terraform-json) from 0.28.0 to 0.29.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.29.0</h2> <p>ENHANCEMENTS:</p> <ul> <li>version: Allow parsing of a <code>format_version</code> field, added in Terraform 1.17 (<a href="https://redirect.github.com/hashicorp/terraform-json/pull/208">#208</a>)</li> <li>Add <code>init_output</code> log type for use when parsing logs from the <code>init</code> command (<a href="https://redirect.github.com/hashicorp/terraform-json/pull/181">#181</a>)</li> <li>logging: Add support for <code>state migrate</code> message types (<a href="https://redirect.github.com/hashicorp/terraform-json/pull/210">#210</a>)</li> <li>Add support for JSON output from <code>workspace list</code> command (<a href="https://redirect.github.com/hashicorp/terraform-json/pull/198">#198</a>)</li> <li>Enable parsing <code>state_store_initialization_start</code> JSON log message from <code>init</code> command (<a href="https://redirect.github.com/hashicorp/terraform-json/pull/212">#212</a>)</li> </ul> <p>BUG FIXES:</p> <ul> <li>Avoid panic in <code>(WorkspaceListOutput) CurrentWorkspace</code> if no workspaces are listed (<a href="https://redirect.github.com/hashicorp/terraform-json/pull/214">#214</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/hashicorp/terraform-json/commit/8f4894d138d0fe71436cba6dbc8f16577e9a9e7d"><code>8f4894d</code></a> fix: Avoid panic in <code>(WorkspaceListOutput) CurrentWorkspace</code> if no workspaces...</li> <li><a href="https://github.com/hashicorp/terraform-json/commit/540e4c2dd221e4b115258ea0a3a8c8fc24bb3b03"><code>540e4c2</code></a> test: Enable parsing <code>state_store_initialization_start </code> JSON message, add te...</li> <li><a href="https://github.com/hashicorp/terraform-json/commit/456fd358731ed4d6fc2e30f6e6a12d6532761682"><code>456fd35</code></a> refactor: Rename JSON message type constants to use <code>Message</code> prefix in name ...</li> <li><a href="https://github.com/hashicorp/terraform-json/commit/ebdaf2c44e73a2f66e3e048dc6b9b73846a8a7bd"><code>ebdaf2c</code></a> logging: Add support for <code>state migrate</code> message types (<a href="https://redirect.github.com/hashicorp/terraform-json/issues/210">#210</a>)</li> <li><a href="https://github.com/hashicorp/terraform-json/commit/5a1ca9230975ec15a9885e4a35b755646fda3028"><code>5a1ca92</code></a> Add support for JSON output from <code>workspace list</code> (<a href="https://redirect.github.com/hashicorp/terraform-json/issues/198">#198</a>)</li> <li><a href="https://github.com/hashicorp/terraform-json/commit/e0b680713a97433a2b3aff9395516bded146210b"><code>e0b6807</code></a> feat: Add <code>init_output</code> log type for use when parsing a subset of logs from t...</li> <li><a href="https://github.com/hashicorp/terraform-json/commit/1835ed6fbee33db47013369b2f0dff44655894ef"><code>1835ed6</code></a> version: Allow parsing of a format_version field, added in v1.17 (<a href="https://redirect.github.com/hashicorp/terraform-json/issues/208">#208</a>)</li> <li><a href="https://github.com/hashicorp/terraform-json/commit/f4ef9969cba17897dc68940e97b0f3f203807630"><code>f4ef996</code></a> build(deps): bump actions/checkout from 7.0.0 to 7.0.1 in the github-actions-...</li> <li><a href="https://github.com/hashicorp/terraform-json/commit/4a96b30be8a74ee37652aebdaadfbeefaab2de52"><code>4a96b30</code></a> build(deps): bump actions/setup-go from 6.5.0 to 7.0.0 in the github-actions-...</li> <li>See full diff in <a href="https://github.com/hashicorp/terraform-json/compare/v0.28.0...v0.29.0">compare view</a></li> </ul> </details> <br /> [](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 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> |
||
|
|
ed6a8441dc |
docs(docs/user-guides): reformat to one sentence per line (#30705)
Reformats the user guides under `docs/user-guides` to one sentence per line, as the [docs style guide](https://github.com/coder/coder/blob/main/docs/.style/style-guide/formatting.md#one-sentence-per-line) requires. Hard-wrapped paragraphs are unwrapped and lines holding several sentences are split, so a later edit to one sentence shows up as a one-line diff. Apart from the exception below, only whitespace inside paragraphs and list items changes, and the rendered pages are the same. Comparing the changed files against `main` word for word, ignoring whitespace and blockquote `>` markers, finds differences only on the reworded lines. `git diff --word-diff` is easier to read than the line diff. 7 lines that already contained an em or en dash were reworded by hand, because `lint/emdash` treats every reflowed line as newly added. Each uses a parenthetical, a separate sentence, or a colon after a lead-in. Dashes on lines the reflow did not touch are left alone. Applied with an in-progress formatter, limited to pages listed in `docs/manifest.json` and excluding generated reference docs. This is one of a batch of PRs that split the docs by area (29 files changed, 715 insertions(+), 1068 deletions(-)). --- 🤖 Built with AI assistance. |
||
|
|
935e076210 |
docs: delete unlisted pages and their screenshots (#30758)
Deletes seven docs files and 10 screenshots that are not in the docs manifest and are superseded or empty: - `docs/about/why-coder.md`: a TODO stub. The one link to it, a "Do" example in the style guide, now names its source in plain text. - `docs/tutorials/example-guide.md`: a contributor template with no inbound links. Its guidance is recorded in DOCS-1207 for a tutorial section in `contributing/documentation.md`, which is still to write. - `docs/start/first-template.md` and six step 6 screenshots in `docs/images/templates/`. Content is cataloged in DOCS-1209 for the Templates landing page. - `docs/start/first-workspace.md` and three screenshots in `docs/images/start/`. Content is cataloged in DOCS-1208 for the Workspaces landing page. - `docs/start/local-deploy.md` and `docs/images/start/setup-page.png`. Redundant with `get-started/` and `install/cli.md`. The deleted files stay recoverable at `adcce66826`. This replaces #30710, #30711, #30712, #30713 and #30714, which are closed in favor of this PR. Linear: DOCS-1205, DOCS-1206, DOCS-1207, DOCS-1211, DOCS-1212. Related: DOCS-1208, DOCS-1209. I ran `lint/docs-html`, `lint/docs-manifest`, `lint/docs-redirects` and `lint/emdash` locally. > Generated by Coder Agents on behalf of @nickvigilante. |
||
|
|
63e5a6eb2c |
chore: bump google.golang.org/api from 0.300.0 to 0.301.0 (#30770)
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.300.0 to 0.301.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.301.0</h2> <h2><a href="https://github.com/googleapis/google-api-go-client/compare/v0.300.0...v0.301.0">0.301.0</a> (2026-10-07)</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/3754">#3754</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/ebafad334e2218c37dbbcc267219e338fbd0d056">ebafad3</a>)</li> <li><strong>all:</strong> Auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3756">#3756</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/e85ebac72dd7e12c538a14f6e2b8a1c83f9872b9">e85ebac</a>)</li> <li><strong>all:</strong> Auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3759">#3759</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/267f7a8c8e539f21e64b696686bb9476bf0c5ef0">267f7a8</a>)</li> <li><strong>all:</strong> Auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3760">#3760</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/282280c028412560d8c259c0e5ce80cd3c16d624">282280c</a>)</li> <li><strong>all:</strong> Auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3761">#3761</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/3f7eebf8a548d20db29fa5c654f2de96c4f8db14">3f7eebf</a>)</li> <li><strong>option/internaloption:</strong> Add EnableDirectPathXdsOverInterconnect (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3742">#3742</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/9bda4c115cedcef9f5938378563e04592f56fe18">9bda4c1</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.300.0...v0.301.0">0.301.0</a> (2026-10-07)</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/3754">#3754</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/ebafad334e2218c37dbbcc267219e338fbd0d056">ebafad3</a>)</li> <li><strong>all:</strong> Auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3756">#3756</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/e85ebac72dd7e12c538a14f6e2b8a1c83f9872b9">e85ebac</a>)</li> <li><strong>all:</strong> Auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3759">#3759</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/267f7a8c8e539f21e64b696686bb9476bf0c5ef0">267f7a8</a>)</li> <li><strong>all:</strong> Auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3760">#3760</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/282280c028412560d8c259c0e5ce80cd3c16d624">282280c</a>)</li> <li><strong>all:</strong> Auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3761">#3761</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/3f7eebf8a548d20db29fa5c654f2de96c4f8db14">3f7eebf</a>)</li> <li><strong>option/internaloption:</strong> Add EnableDirectPathXdsOverInterconnect (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3742">#3742</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/9bda4c115cedcef9f5938378563e04592f56fe18">9bda4c1</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/googleapis/google-api-go-client/commit/22cea49978ad0d51b64d4ec4a193fb477400fac4"><code>22cea49</code></a> chore(main): release 0.301.0 (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3755">#3755</a>)</li> <li><a href="https://github.com/googleapis/google-api-go-client/commit/3f7eebf8a548d20db29fa5c654f2de96c4f8db14"><code>3f7eebf</code></a> feat(all): auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3761">#3761</a>)</li> <li><a href="https://github.com/googleapis/google-api-go-client/commit/6fa455aa97d4db710919bd387b95015f8e179537"><code>6fa455a</code></a> chore(all): update all to v7 (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3758">#3758</a>)</li> <li><a href="https://github.com/googleapis/google-api-go-client/commit/282280c028412560d8c259c0e5ce80cd3c16d624"><code>282280c</code></a> feat(all): auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3760">#3760</a>)</li> <li><a href="https://github.com/googleapis/google-api-go-client/commit/9bda4c115cedcef9f5938378563e04592f56fe18"><code>9bda4c1</code></a> feat(option/internaloption): add EnableDirectPathXdsOverInterconnect (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3742">#3742</a>)</li> <li><a href="https://github.com/googleapis/google-api-go-client/commit/52cd18f7989503b45c5c2a43e4b7a5a00de02e76"><code>52cd18f</code></a> chore(all): update all (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3757">#3757</a>)</li> <li><a href="https://github.com/googleapis/google-api-go-client/commit/267f7a8c8e539f21e64b696686bb9476bf0c5ef0"><code>267f7a8</code></a> feat(all): auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3759">#3759</a>)</li> <li><a href="https://github.com/googleapis/google-api-go-client/commit/e85ebac72dd7e12c538a14f6e2b8a1c83f9872b9"><code>e85ebac</code></a> feat(all): auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3756">#3756</a>)</li> <li><a href="https://github.com/googleapis/google-api-go-client/commit/ebafad334e2218c37dbbcc267219e338fbd0d056"><code>ebafad3</code></a> feat(all): auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3754">#3754</a>)</li> <li><a href="https://github.com/googleapis/google-api-go-client/commit/81143a2b633c2b7885760150ace96573acfba373"><code>81143a2</code></a> chore: embargo generation of integrations:v2 (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3753">#3753</a>)</li> <li>See full diff in <a href="https://github.com/googleapis/google-api-go-client/compare/v0.300.0...v0.301.0">compare view</a></li> </ul> </details> <br /> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
f4dcbf01aa |
chore: bump github.com/brianvoe/gofakeit/v7 from 7.17.0 to 7.18.0 (#30773)
Bumps [github.com/brianvoe/gofakeit/v7](https://github.com/brianvoe/gofakeit) from 7.17.0 to 7.18.0. <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/brianvoe/gofakeit/commit/cda0d12f40c422ea813591ec3b01ab0666e4cf84"><code>cda0d12</code></a> datetime - added addtional compensation for date formatting</li> <li><a href="https://github.com/brianvoe/gofakeit/commit/dcfd43a768864284a1189378578fe8068ef38f54"><code>dcfd43a</code></a> Merge pull request <a href="https://redirect.github.com/brianvoe/gofakeit/issues/400">#400</a> from 00200200/fix/struct-time-unpadded-format</li> <li><a href="https://github.com/brianvoe/gofakeit/commit/0843461ed662b8e04c07fee66b310e2c89ff7383"><code>0843461</code></a> Limit unpadded date fallback and assert calendar boundaries</li> <li><a href="https://github.com/brianvoe/gofakeit/commit/77d7e48aff92482afeeac0bd5e405386cef98a4d"><code>77d7e48</code></a> Fix struct time field parsing with unpadded date formats</li> <li><a href="https://github.com/brianvoe/gofakeit/commit/0edecf3ab8e582cb6fb63216e64634ff524624a2"><code>0edecf3</code></a> Merge pull request <a href="https://redirect.github.com/brianvoe/gofakeit/issues/399">#399</a> from jakezwang/fix/finite-float-range-overflow</li> <li><a href="https://github.com/brianvoe/gofakeit/commit/f0bf10be1e11d82fc33018316543501cd6086f88"><code>f0bf10b</code></a> Fix finite float ranges with overflowing spans</li> <li><a href="https://github.com/brianvoe/gofakeit/commit/0cd394dc8cc283909974bbe729d376322d83929c"><code>0cd394d</code></a> Merge pull request <a href="https://redirect.github.com/brianvoe/gofakeit/issues/398">#398</a> from aykhans/docs/add-missing-readme-functions</li> <li><a href="https://github.com/brianvoe/gofakeit/commit/d2376abf9a9b97002fdf2c73789e9b8e6275e90a"><code>d2376ab</code></a> docs: add missing functions to README</li> <li>See full diff in <a href="https://github.com/brianvoe/gofakeit/compare/v7.17.0...v7.18.0">compare view</a></li> </ul> </details> <br /> [](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 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> |
||
|
|
1657112b33 |
ci: bump the github-actions group with 4 updates (#30776)
Bumps the github-actions group with 4 updates: [step-security/harden-runner](https://github.com/step-security/harden-runner), [actions/upload-artifact](https://github.com/actions/upload-artifact), [fluxcd/flux2/action](https://github.com/fluxcd/flux2) and [linear/linear-release-action](https://github.com/linear/linear-release-action). Updates `step-security/harden-runner` from 2.21.1 to 2.22.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.22.1</h2> <h2>What's Changed</h2> <ul> <li>Fixed security rules not initializing on GHES self-hosted runners</li> <li>Fixed GHES connectivity in block mode by implicitly allowing the GHES hostname</li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/step-security/harden-runner/compare/v2.22.0...v2.22.1">https://github.com/step-security/harden-runner/compare/v2.22.0...v2.22.1</a></p> <h2>v2.22.0</h2> <h2>What's Changed</h2> <ul> <li>Linux ARM64 support for community tier</li> <li>GHES support for self-hosted VMs (enterprise tier)</li> <li>MacOS and Windows runner deny list support for block policy (enterprise tier).</li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/step-security/harden-runner/compare/v2.21.1...v2.22.0">https://github.com/step-security/harden-runner/compare/v2.21.1...v2.22.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/step-security/harden-runner/commit/ccd8616d44fd3846e67624a50d5aad6d37bf2d25"><code>ccd8616</code></a> Merge pull request <a href="https://redirect.github.com/step-security/harden-runner/issues/704">#704</a> from h0x0er/jatin/ghes-endp</li> <li><a href="https://github.com/step-security/harden-runner/commit/037ccfd0b8acd0743d7ce4b3e53f67dc16f831b9"><code>037ccfd</code></a> implicitly add ghes endpoint in allowList</li> <li><a href="https://github.com/step-security/harden-runner/commit/e7438c7b4d9fde75004beb1805ca407c067d5340"><code>e7438c7</code></a> Merge pull request <a href="https://redirect.github.com/step-security/harden-runner/issues/703">#703</a> from h0x0er/jatin/ghes-codebuild-fixes</li> <li><a href="https://github.com/step-security/harden-runner/commit/afb0b33c8978810916155d52997450fe76eea40a"><code>afb0b33</code></a> fixes for armour rules not getting initialised</li> <li><a href="https://github.com/step-security/harden-runner/commit/351661ca32ac09a36dc5ee2d536e3128f2a3c8ed"><code>351661c</code></a> Merge pull request <a href="https://redirect.github.com/step-security/harden-runner/issues/701">#701</a> from step-security/rc-44</li> <li><a href="https://github.com/step-security/harden-runner/commit/1dc7f2e42d1e949acb71b995cb46ef39bcf6ee43"><code>1dc7f2e</code></a> Merge pull request <a href="https://redirect.github.com/step-security/harden-runner/issues/702">#702</a> from h0x0er/jatin/ghes-changes-up</li> <li><a href="https://github.com/step-security/harden-runner/commit/af5ca3847fec87ec2d45ed150d07fe3afaca39e4"><code>af5ca38</code></a> simplified ghes config creation</li> <li><a href="https://github.com/step-security/harden-runner/commit/9a6d710958b49c0266ea466f1d9505af191114fa"><code>9a6d710</code></a> fix2</li> <li><a href="https://github.com/step-security/harden-runner/commit/74c65eac851c4c0546996bb406adcf91e6dd97c4"><code>74c65ea</code></a> fix</li> <li><a href="https://github.com/step-security/harden-runner/commit/ceac8169ef2b77fd1324abbf8bae8edd2d6d3199"><code>ceac816</code></a> resovled comments</li> <li>Additional commits viewable in <a href="https://github.com/step-security/harden-runner/compare/e14015d583714f6e62063499dc959a02595150a1...ccd8616d44fd3846e67624a50d5aad6d37bf2d25">compare view</a></li> </ul> </details> <br /> Updates `actions/upload-artifact` from 7.0.1 to 7.0.2 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/upload-artifact/releases">actions/upload-artifact's releases</a>.</em></p> <blockquote> <h2>v7.0.2</h2> <h2>What's Changed</h2> <ul> <li>Improves artifact download retries when the service returns HTTP 429 (rate limiting), including honoring valid Retry-After headers.</li> <li>Updates <code>@actions/artifact</code> to v6.3.1.</li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/tunc-d"><code>@tunc-d</code></a> made their first contribution in <a href="https://redirect.github.com/actions/upload-artifact/pull/821">actions/upload-artifact#821</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/upload-artifact/compare/v7.0.1...v7.0.2">https://github.com/actions/upload-artifact/compare/v7.0.1...v7.0.2</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/upload-artifact/commit/cf430e030ddbb5b0abf93d22962f4752f3646cd9"><code>cf430e0</code></a> Merge pull request <a href="https://redirect.github.com/actions/upload-artifact/issues/822">#822</a> from actions/tunc-d-prepare-upload-v7-0-2</li> <li><a href="https://github.com/actions/upload-artifact/commit/c2acdedd35a8824a1552c7137f8c18288c3ea469"><code>c2acded</code></a> chore: prepare v7.0.2 release</li> <li><a href="https://github.com/actions/upload-artifact/commit/4687c1bbaa0a58abb517d90b4bbade6754c80c1a"><code>4687c1b</code></a> Merge pull request <a href="https://redirect.github.com/actions/upload-artifact/issues/821">#821</a> from actions/tunc-d-upload-artifact-package-bump</li> <li><a href="https://github.com/actions/upload-artifact/commit/8cbe1bebdb858105d8fdd88f81404d4de4595719"><code>8cbe1be</code></a> Bump <code>@actions/artifact</code> to 6.3.1</li> <li>See full diff in <a href="https://github.com/actions/upload-artifact/compare/043fb46d1a93c77aae656e7c1c64a875d1fc6a0a...cf430e030ddbb5b0abf93d22962f4752f3646cd9">compare view</a></li> </ul> </details> <br /> Updates `fluxcd/flux2/action` from 2.9.5 to 2.9.6 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/fluxcd/flux2/releases">fluxcd/flux2/action's releases</a>.</em></p> <blockquote> <h2>v2.9.6</h2> <h2>Highlights</h2> <p>Flux v2.9.6 is a patch release that stops helm-controller from reapplying chart CRDs on every upgrade when server-side apply is enabled, and recovers HelmReleases left with a drifted <code>Ready=Unknown</code> condition after a failed status patch. source-controller normalizes Azure Blob listing ETags so unchanged containers are no longer re-downloaded on every reconcile, and evicts stale Helm repository index entries from the cache so repositories with frequently changing indexes no longer fail with "Cache is full". kustomize-controller extends SOPS decryption error redaction to <code>spec.postBuild.substituteFrom</code> values, so substituted secrets echoed back in API validation errors are masked out of status conditions and events, and adds the opt-in <code>DisableCommitStatusEvent</code> feature gate. Users are encouraged to upgrade for the best experience.</p> <p>ℹ️ Please follow the <a href="https://github.com/fluxcd/flux2/discussions/5572">Upgrade Procedure for Flux v2.7+</a> for a smooth upgrade from Flux v2.6 to the latest version.</p> <p>Fixes:</p> <ul> <li>Stop reapplying chart CRDs on upgrades when using server-side apply with the default <code>Create</code> policy (helm-controller)</li> <li>Recover HelmReleases stranded with a drifted <code>Ready=Unknown</code> condition after a failed status patch (helm-controller)</li> <li>Ignore <code>NotFound</code> when deleting the HelmChart (helm-controller)</li> <li>Normalize Azure Blob listing ETags so unchanged containers are not re-downloaded on every reconcile (source-controller)</li> <li>Evict stale Helm repository index entries from the cache to avoid "Cache is full" errors (source-controller)</li> <li>Extend SOPS decryption error redaction to <code>spec.postBuild.substituteFrom</code> values (kustomize-controller)</li> </ul> <p>Improvements:</p> <ul> <li>Add the opt-in <code>DisableCommitStatusEvent</code> feature gate (kustomize-controller)</li> </ul> <h2>Components changelog</h2> <ul> <li>source-controller <a href="https://github.com/fluxcd/source-controller/blob/v1.9.6/CHANGELOG.md">v1.9.6</a></li> <li>kustomize-controller <a href="https://github.com/fluxcd/kustomize-controller/blob/v1.9.6/CHANGELOG.md">v1.9.6</a></li> <li>helm-controller <a href="https://github.com/fluxcd/helm-controller/blob/v1.6.5/CHANGELOG.md">v1.6.5</a></li> </ul> <h2>CLI changelog</h2> <ul> <li>[release/v2.9.x] Format reproducible created timestamp in UTC by <a href="https://github.com/fluxcdbot"><code>@fluxcdbot</code></a> in <a href="https://redirect.github.com/fluxcd/flux2/pull/6081">fluxcd/flux2#6081</a></li> <li>Update toolkit components by <a href="https://github.com/fluxcdbot"><code>@fluxcdbot</code></a> in <a href="https://redirect.github.com/fluxcd/flux2/pull/6097">fluxcd/flux2#6097</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/fluxcd/flux2/compare/v2.9.5...v2.9.6">https://github.com/fluxcd/flux2/compare/v2.9.5...v2.9.6</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/fluxcd/flux2/commit/b9c17924adb533d3617ec7de97a7b0f4acc07b39"><code>b9c1792</code></a> Merge pull request <a href="https://redirect.github.com/fluxcd/flux2/issues/6097">#6097</a> from fluxcd/update-components-release/v2.9.x</li> <li><a href="https://github.com/fluxcd/flux2/commit/847c02bb967a9021af601762cefab103a01acbd6"><code>847c02b</code></a> Update toolkit components</li> <li><a href="https://github.com/fluxcd/flux2/commit/5156dee7c62dde24752a3317dbdf6e089e6e15eb"><code>5156dee</code></a> Merge pull request <a href="https://redirect.github.com/fluxcd/flux2/issues/6098">#6098</a> from fluxcd/update-pkg-deps/release/v2.9.x</li> <li><a href="https://github.com/fluxcd/flux2/commit/c2437feed91b522a3d4f607e5c4d08111898b315"><code>c2437fe</code></a> Update fluxcd/pkg dependencies</li> <li><a href="https://github.com/fluxcd/flux2/commit/0a66b4a91da048b159f2c1c925013922ed4c4e1c"><code>0a66b4a</code></a> Merge pull request <a href="https://redirect.github.com/fluxcd/flux2/issues/6081">#6081</a> from fluxcd/backport-6074-to-release/v2.9.x</li> <li><a href="https://github.com/fluxcd/flux2/commit/d3ab1f61604076f8bda82e7f3cab93db249e0711"><code>d3ab1f6</code></a> Format reproducible created timestamp in UTC</li> <li>See full diff in <a href="https://github.com/fluxcd/flux2/compare/dd233c4fadef306a62b7893204f8e3817fecc2b2...b9c17924adb533d3617ec7de97a7b0f4acc07b39">compare view</a></li> </ul> </details> <br /> Updates `linear/linear-release-action` from 0.18.0 to 0.18.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/linear/linear-release-action/releases">linear/linear-release-action's releases</a>.</em></p> <blockquote> <h2>v0.18.1</h2> <h2>What's Changed</h2> <ul> <li>Support release descriptions in the GitHub Action by <a href="https://github.com/duong-vu"><code>@duong-vu</code></a> in <a href="https://redirect.github.com/linear/linear-release-action/pull/71">linear/linear-release-action#71</a></li> <li>Skip the automatic GitHub token on GitHub Enterprise runners by <a href="https://github.com/RomainCscn"><code>@RomainCscn</code></a> in <a href="https://redirect.github.com/linear/linear-release-action/pull/72">linear/linear-release-action#72</a></li> <li>Verify CLI installs against committed checksums by <a href="https://github.com/RomainCscn"><code>@RomainCscn</code></a> in <a href="https://redirect.github.com/linear/linear-release-action/pull/73">linear/linear-release-action#73</a></li> <li>Release v0.18.1 by <a href="https://github.com/RomainCscn"><code>@RomainCscn</code></a> in <a href="https://redirect.github.com/linear/linear-release-action/pull/74">linear/linear-release-action#74</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/duong-vu"><code>@duong-vu</code></a> made their first contribution in <a href="https://redirect.github.com/linear/linear-release-action/pull/71">linear/linear-release-action#71</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/linear/linear-release-action/compare/v0.18.0...v0.18.1">https://github.com/linear/linear-release-action/compare/v0.18.0...v0.18.1</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/linear/linear-release-action/commit/30f9ae77461ec29f07fffe0c52edd1909bfbb6f5"><code>30f9ae7</code></a> Release v0.18.1 (<a href="https://redirect.github.com/linear/linear-release-action/issues/74">#74</a>)</li> <li><a href="https://github.com/linear/linear-release-action/commit/8db66b644c0bffd50aaa89b51c8eae0120f94b87"><code>8db66b6</code></a> Verify CLI installs against committed checksums (<a href="https://redirect.github.com/linear/linear-release-action/issues/73">#73</a>)</li> <li><a href="https://github.com/linear/linear-release-action/commit/65ed0ec8b3bdc6823789a0d3f361120d932c54ac"><code>65ed0ec</code></a> Skip the automatic GitHub token on GitHub Enterprise runners (<a href="https://redirect.github.com/linear/linear-release-action/issues/72">#72</a>)</li> <li><a href="https://github.com/linear/linear-release-action/commit/bc513a9e552e26d94d6e885af2f6c02f7a16c800"><code>bc513a9</code></a> Add release description input to action (<a href="https://redirect.github.com/linear/linear-release-action/issues/71">#71</a>)</li> <li>See full diff in <a href="https://github.com/linear/linear-release-action/compare/d4af10092984f9bc6d5efa075b242bdf01333463...30f9ae77461ec29f07fffe0c52edd1909bfbb6f5">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 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> |
||
|
|
710584c1bc |
chore: bump github.com/prometheus/client_golang from 1.24.1 to 1.25.0 (#30775)
Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.24.1 to 1.25.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.25.0</h2> <p>⚠️ This release raises the minimum required Go version to 1.26 and includes breaking API changes in <code>api/prometheus/v1</code> (see the [CHANGE] entries below). ⚠️</p> <h2>1.25.0 / 2026-10-07</h2> <ul> <li>[CHANGE] Minimum required Go version is now 1.26, only the two latest Go versions (1.26 and 1.27) are supported from now on. <a href="https://redirect.github.com/prometheus/client_golang/issues/2138">#2138</a></li> <li>[CHANGE] api/prometheus/v1: <code>Query</code>, <code>QueryRange</code>, <code>Series</code>, <code>LabelNames</code>, and <code>LabelValues</code> now return <code>Infos</code> annotations in addition to <code>Warnings</code>, matching the Prometheus server's info annotations. This changes the signatures of these methods and of <code>api.Client</code>'s <code>Do</code>/<code>DoGetFallback</code>; custom API client implementations must be updated. <a href="https://redirect.github.com/prometheus/client_golang/issues/1963">#1963</a></li> <li>[CHANGE] api/prometheus/v1: Rework <code>TSDBBlocks</code> result types to align with the Prometheus server's <code>tsdb.BlockMeta</code>: <code>TSDBBlocksResult</code> now contains <code>Blocks []TSDBBlockMeta</code> directly instead of mirroring the full API envelope, nested types are renamed (<code>TSDBBlockMeta</code>, <code>TSDBBlockStats</code>, <code>TSDBBlockMetaCompaction</code>), stat fields are <code>uint64</code> with <code>omitempty</code> tags, and the optional compaction <code>parents</code> field is included. <a href="https://redirect.github.com/prometheus/client_golang/issues/1928">#1928</a></li> <li>[FEATURE] testutil: Add <code>GatherAndFormat</code> to encode a subset of metrics from a Gatherer. <a href="https://redirect.github.com/prometheus/client_golang/issues/2091">#2091</a></li> <li>[FEATURE] promhttp: Add <code>HandlerOpts.AcceptedFormats</code> to customize the formats negotiated from the incoming <code>Accept</code> header, enabling opt-in to experimental formats such as OpenMetrics 2.0 without changing default negotiation. <a href="https://redirect.github.com/prometheus/client_golang/issues/2146">#2146</a></li> <li>[ENHANCEMENT] promhttp: Negotiated metrics responses now include a <code>Vary</code> header. <a href="https://redirect.github.com/prometheus/client_golang/issues/2142">#2142</a></li> <li>[ENHANCEMENT] prometheus: Regenerate the default runtime collector metrics for Go 1.25 and Go 1.26. <a href="https://redirect.github.com/prometheus/client_golang/issues/2090">#2090</a>, <a href="https://redirect.github.com/prometheus/client_golang/issues/2095">#2095</a></li> <li>[ENHANCEMENT] testutil: Finalize OpenMetrics output in <code>GatherAndFormat</code> and <code>CollectAndFormat</code> (terminating <code># EOF</code>). <a href="https://redirect.github.com/prometheus/client_golang/issues/2125">#2125</a></li> <li>[BUGFIX] api: Match complete URL path placeholders only; a <code>:foo</code> argument no longer substitutes inside <code>:foobar</code>. <a href="https://redirect.github.com/prometheus/client_golang/issues/2136">#2136</a></li> <li>[BUGFIX] exp/api/remote: Reset the pooled buffer before generic proto marshaling, preventing corrupted remote-write payloads. <a href="https://redirect.github.com/prometheus/client_golang/issues/2139">#2139</a></li> <li>[BUGFIX] testutil/promlint: Fix "mibi" unit prefix to "mebi". <a href="https://redirect.github.com/prometheus/client_golang/issues/2135">#2135</a></li> </ul> <!-- raw HTML omitted --> <h2>What's Changed</h2> <ul> <li>fix: Remove unneeded and broken CI badge by <a href="https://github.com/bwplotka"><code>@bwplotka</code></a> in <a href="https://redirect.github.com/prometheus/client_golang/pull/2057">prometheus/client_golang#2057</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/2060">prometheus/client_golang#2060</a></li> <li>build(deps): bump the codeql group with 4 updates by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/prometheus/client_golang/pull/2066">prometheus/client_golang#2066</a></li> <li>build(deps): bump github.com/klauspost/compress from 1.19.0 to 1.19.1 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/prometheus/client_golang/pull/2071">prometheus/client_golang#2071</a></li> <li>build(deps): bump golang.org/x/sys from 0.46.0 to 0.47.0 in the golang-org-x group across 1 directory by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/prometheus/client_golang/pull/2069">prometheus/client_golang#2069</a></li> <li>build(deps): bump github.com/klauspost/compress from 1.19.0 to 1.19.1 in /exp by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/prometheus/client_golang/pull/2072">prometheus/client_golang#2072</a></li> <li>build(deps): bump github.com/prometheus/common from 0.69.0 to 0.70.1 in /exp by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/prometheus/client_golang/pull/2073">prometheus/client_golang#2073</a></li> <li>build(deps): bump github.com/prometheus/common from 0.69.0 to 0.70.1 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/prometheus/client_golang/pull/2070">prometheus/client_golang#2070</a></li> <li>build(deps): bump google.golang.org/grpc from 1.79.3 to 1.82.1 in /tutorials/whatsup by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/prometheus/client_golang/pull/2075">prometheus/client_golang#2075</a></li> <li>Pin GitHub Actions by <a href="https://github.com/SuperQ"><code>@SuperQ</code></a> in <a href="https://redirect.github.com/prometheus/client_golang/pull/2074">prometheus/client_golang#2074</a></li> <li>build(deps): bump actions/checkout from 7.0.0 to 7.0.1 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/prometheus/client_golang/pull/2067">prometheus/client_golang#2067</a></li> <li>promhttp: fix panic on requests with nil URL by <a href="https://github.com/SAY-5"><code>@SAY-5</code></a> in <a href="https://redirect.github.com/prometheus/client_golang/pull/2065">prometheus/client_golang#2065</a></li> <li>Return info annotations in addition to warnings in the API by <a href="https://github.com/zenador"><code>@zenador</code></a> in <a href="https://redirect.github.com/prometheus/client_golang/pull/1963">prometheus/client_golang#1963</a></li> <li>build(deps): bump ossf/scorecard-action from 2.4.3 to 2.4.4 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/prometheus/client_golang/pull/2082">prometheus/client_golang#2082</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/2084">prometheus/client_golang#2084</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/2086">prometheus/client_golang#2086</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/2088">prometheus/client_golang#2088</a></li> <li>Regenerate Go collector runtime metrics for Go 1.25 and Go 1.26 by <a href="https://github.com/bwplotka"><code>@bwplotka</code></a> in <a href="https://redirect.github.com/prometheus/client_golang/pull/2090">prometheus/client_golang#2090</a></li> <li>go.mod: remove obsolete exclude rule by <a href="https://github.com/thaJeztah"><code>@thaJeztah</code></a> in <a href="https://redirect.github.com/prometheus/client_golang/pull/2077">prometheus/client_golang#2077</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/2093">prometheus/client_golang#2093</a></li> <li>README: document the OpenTelemetry OTLP push bridge by <a href="https://github.com/mvanhorn"><code>@mvanhorn</code></a> in <a href="https://redirect.github.com/prometheus/client_golang/pull/1987">prometheus/client_golang#1987</a></li> <li>docs: add AGENTS.md contributor and maintainer guide by <a href="https://github.com/bwplotka"><code>@bwplotka</code></a> in <a href="https://redirect.github.com/prometheus/client_golang/pull/2056">prometheus/client_golang#2056</a></li> <li>testutil: add GatherAndFormat helper by <a href="https://github.com/wieghx"><code>@wieghx</code></a> in <a href="https://redirect.github.com/prometheus/client_golang/pull/2091">prometheus/client_golang#2091</a></li> <li>build(deps): bump the codeql group with 4 updates by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/prometheus/client_golang/pull/2101">prometheus/client_golang#2101</a></li> <li>build(deps): bump google.golang.org/protobuf from 1.36.11 to 1.36.12 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/prometheus/client_golang/pull/2097">prometheus/client_golang#2097</a></li> <li>build(deps): bump github.com/klauspost/compress from 1.19.1 to 1.19.2 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/prometheus/client_golang/pull/2098">prometheus/client_golang#2098</a></li> <li>build(deps): bump google.golang.org/protobuf from 1.36.11 to 1.36.12 in /exp by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/prometheus/client_golang/pull/2099">prometheus/client_golang#2099</a></li> <li>build(deps): bump github.com/klauspost/compress from 1.19.1 to 1.19.2 in /exp by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/prometheus/client_golang/pull/2100">prometheus/client_golang#2100</a></li> <li>build(deps): bump github.com/prometheus/procfs from 0.21.1 to 0.22.0 in the prometheus group across 1 directory by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/prometheus/client_golang/pull/2096">prometheus/client_golang#2096</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/v1.25.0/CHANGELOG.md">github.com/prometheus/client_golang's changelog</a>.</em></p> <blockquote> <h2>1.25.0 / 2026-10-07</h2> <ul> <li>[CHANGE] Minimum required Go version is now 1.26, only the two latest Go versions (1.26 and 1.27) are supported from now on. <a href="https://redirect.github.com/prometheus/client_golang/issues/2138">#2138</a></li> <li>[CHANGE] api/prometheus/v1: <code>Query</code>, <code>QueryRange</code>, <code>Series</code>, <code>LabelNames</code>, and <code>LabelValues</code> now return <code>Infos</code> annotations in addition to <code>Warnings</code>, matching the Prometheus server's info annotations. This changes the signatures of these methods and of <code>api.Client</code>'s <code>Do</code>/<code>DoGetFallback</code>; custom API client implementations must be updated. <a href="https://redirect.github.com/prometheus/client_golang/issues/1963">#1963</a></li> <li>[CHANGE] api/prometheus/v1: Rework <code>TSDBBlocks</code> result types to align with the Prometheus server's <code>tsdb.BlockMeta</code>: <code>TSDBBlocksResult</code> now contains <code>Blocks []TSDBBlockMeta</code> directly instead of mirroring the full API envelope, nested types are renamed (<code>TSDBBlockMeta</code>, <code>TSDBBlockStats</code>, <code>TSDBBlockMetaCompaction</code>), stat fields are <code>uint64</code> with <code>omitempty</code> tags, and the optional compaction <code>parents</code> field is included. <a href="https://redirect.github.com/prometheus/client_golang/issues/1928">#1928</a></li> <li>[FEATURE] testutil: Add <code>GatherAndFormat</code> to encode a subset of metrics from a Gatherer. <a href="https://redirect.github.com/prometheus/client_golang/issues/2091">#2091</a></li> <li>[FEATURE] promhttp: Add <code>HandlerOpts.AcceptedFormats</code> to customize the formats negotiated from the incoming <code>Accept</code> header, enabling opt-in to experimental formats such as OpenMetrics 2.0 without changing default negotiation. <a href="https://redirect.github.com/prometheus/client_golang/issues/2146">#2146</a></li> <li>[ENHANCEMENT] promhttp: Negotiated metrics responses now include a <code>Vary</code> header. <a href="https://redirect.github.com/prometheus/client_golang/issues/2142">#2142</a></li> <li>[ENHANCEMENT] prometheus: Regenerate the default runtime collector metrics for Go 1.25 and Go 1.26. <a href="https://redirect.github.com/prometheus/client_golang/issues/2090">#2090</a>, <a href="https://redirect.github.com/prometheus/client_golang/issues/2095">#2095</a></li> <li>[ENHANCEMENT] testutil: Finalize OpenMetrics output in <code>GatherAndFormat</code> and <code>CollectAndFormat</code> (terminating <code># EOF</code>). <a href="https://redirect.github.com/prometheus/client_golang/issues/2125">#2125</a></li> <li>[BUGFIX] api: Match complete URL path placeholders only; a <code>:foo</code> argument no longer substitutes inside <code>:foobar</code>. <a href="https://redirect.github.com/prometheus/client_golang/issues/2136">#2136</a></li> <li>[BUGFIX] exp/api/remote: Reset the pooled buffer before generic proto marshaling, preventing corrupted remote-write payloads. <a href="https://redirect.github.com/prometheus/client_golang/issues/2139">#2139</a></li> <li>[BUGFIX] testutil/promlint: Fix "mibi" unit prefix to "mebi". <a href="https://redirect.github.com/prometheus/client_golang/issues/2135">#2135</a></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/prometheus/client_golang/commit/0d88875bc7494ed8414e067756ff3399e3068c64"><code>0d88875</code></a> Cut v1.25.0 (<a href="https://redirect.github.com/prometheus/client_golang/issues/2164">#2164</a>)</li> <li><a href="https://github.com/prometheus/client_golang/commit/e9946ee846c4916ae4def4318b422b084aad687c"><code>e9946ee</code></a> Cut v1.25.0-rc.0 (<a href="https://redirect.github.com/prometheus/client_golang/issues/2154">#2154</a>)</li> <li><a href="https://github.com/prometheus/client_golang/commit/de866d63fa67a78f723397d33624b89a439dbe73"><code>de866d6</code></a> Merge pull request <a href="https://redirect.github.com/prometheus/client_golang/issues/2152">#2152</a> from prometheus/dependabot/go_modules/api/prometheus...</li> <li><a href="https://github.com/prometheus/client_golang/commit/a37302f6f0677b61954ae08077c85221c21f4883"><code>a37302f</code></a> prometheus: fix modernize lint findings (<a href="https://redirect.github.com/prometheus/client_golang/issues/2151">#2151</a>)</li> <li><a href="https://github.com/prometheus/client_golang/commit/a3fa3807231bcb72fc56c10e65c72e1102013907"><code>a3fa380</code></a> build(deps): bump google.golang.org/grpc</li> <li><a href="https://github.com/prometheus/client_golang/commit/9da3fcc7c7b60c0565771518ecb9043df23f286a"><code>9da3fcc</code></a> fix: updates for tsdb blocks handling (<a href="https://redirect.github.com/prometheus/client_golang/issues/1928">#1928</a>)</li> <li><a href="https://github.com/prometheus/client_golang/commit/0ecb5c28f53c957e8adabe6707ad8609641e50f0"><code>0ecb5c2</code></a> api: match complete URL placeholders (<a href="https://redirect.github.com/prometheus/client_golang/issues/2136">#2136</a>)</li> <li><a href="https://github.com/prometheus/client_golang/commit/2ad001aa7b446e3a245de21c0f397c57289d7d94"><code>2ad001a</code></a> exp/api/remote: reset buffer before generic marshal (<a href="https://redirect.github.com/prometheus/client_golang/issues/2139">#2139</a>)</li> <li><a href="https://github.com/prometheus/client_golang/commit/0db8d43ff97adbb75da10c57fceaf8fb8ee13d05"><code>0db8d43</code></a> promhttp: vary negotiated metrics responses (<a href="https://redirect.github.com/prometheus/client_golang/issues/2142">#2142</a>)</li> <li><a href="https://github.com/prometheus/client_golang/commit/b1f9c7a6cbb2cd6000042806b7f688cabb9d3771"><code>b1f9c7a</code></a> Merge pull request <a href="https://redirect.github.com/prometheus/client_golang/issues/2144">#2144</a> from prometheus/dependabot/go_modules/exp/github.com...</li> <li>Additional commits viewable in <a href="https://github.com/prometheus/client_golang/compare/v1.24.1...v1.25.0">compare view</a></li> </ul> </details> <br /> [](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 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> |
||
|
|
e129c7786c |
chore: bump github.com/shopspring/decimal from 1.4.0 to 1.5.0 (#30767)
Bumps [github.com/shopspring/decimal](https://github.com/shopspring/decimal) from 1.4.0 to 1.5.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/shopspring/decimal/releases">github.com/shopspring/decimal's releases</a>.</em></p> <blockquote> <h2>v1.5.0</h2> <p><strong>Full Changelog</strong> can be found in <a href="https://github.com/shopspring/decimal/blob/master/CHANGELOG.md">CHANGELOG.md</a>. Please read its <strong>BEHAVIOR CHANGES</strong> section before upgrading.</p> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/PauliusLozys"><code>@PauliusLozys</code></a> made their first contribution in <a href="https://redirect.github.com/shopspring/decimal/pull/403">shopspring/decimal#403</a></li> <li><a href="https://github.com/JohnAD"><code>@JohnAD</code></a> made their first contribution in <a href="https://redirect.github.com/shopspring/decimal/pull/389">shopspring/decimal#389</a></li> <li><a href="https://github.com/jtwatson"><code>@jtwatson</code></a> made their first contribution in <a href="https://redirect.github.com/shopspring/decimal/pull/395">shopspring/decimal#395</a></li> <li><a href="https://github.com/c-tonneslan"><code>@c-tonneslan</code></a> made their first contribution in <a href="https://redirect.github.com/shopspring/decimal/pull/425">shopspring/decimal#425</a></li> <li><a href="https://github.com/Streppel"><code>@Streppel</code></a> made their first contribution in <a href="https://redirect.github.com/shopspring/decimal/pull/414">shopspring/decimal#414</a></li> <li><a href="https://github.com/orinnz"><code>@orinnz</code></a> made their first contribution in <a href="https://redirect.github.com/shopspring/decimal/pull/438">shopspring/decimal#438</a></li> <li><a href="https://github.com/amitmishra11"><code>@amitmishra11</code></a> made their first contribution in <a href="https://redirect.github.com/shopspring/decimal/pull/426">shopspring/decimal#426</a></li> <li><a href="https://github.com/SashaMIT"><code>@SashaMIT</code></a> made their first contribution in <a href="https://redirect.github.com/shopspring/decimal/pull/437">shopspring/decimal#437</a></li> <li><a href="https://github.com/jakezwang"><code>@jakezwang</code></a> made their first contribution in <a href="https://redirect.github.com/shopspring/decimal/pull/433">shopspring/decimal#433</a></li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/shopspring/decimal/blob/master/CHANGELOG.md">github.com/shopspring/decimal's changelog</a>.</em></p> <blockquote> <h2>Decimal v1.5.0</h2> <h4>BEHAVIOR CHANGES</h4> <ul> <li><code>NewFromString</code> and <code>UnmarshalBinary</code>, and so JSON, text, SQL, gob and Spanner decoding, reject exponents larger than the new <code>MaxDecodeExponent</code> setting (default 10,000). Such input could hang the process or use gigabytes of memory. Raise <code>MaxDecodeExponent</code> if you need larger exponents <a href="https://redirect.github.com/shopspring/decimal/pull/440">#440</a></li> <li><code>Pow</code>, <code>PowWithPrecision</code>, <code>PowInt32</code> and <code>PowBigInt</code> round correctly. Results for fractional exponents have <code>PowPrecisionNegativeExponent</code> (16) decimal places, and negative powers that used to return 0 keep 16 significant digits, so <code>10^-18</code> is <code>0.000000000000000001</code>. Results too large to represent return an error, or 0 from <code>Pow</code>, instead of hanging or panicking <a href="https://redirect.github.com/shopspring/decimal/pull/439">#439</a></li> <li><code>RoundUp</code>, <code>RoundDown</code>, <code>RoundCeil</code> and <code>RoundFloor</code> always return exponent <code>-places</code>, like <code>Round</code>. Values don't change, but <code>Exponent()</code>, <code>Coefficient()</code> and <code>String()</code> with <code>TrimTrailingZeros = false</code> can <a href="https://redirect.github.com/shopspring/decimal/pull/426">#426</a> <a href="https://redirect.github.com/shopspring/decimal/pull/441">#441</a></li> <li><code>Truncate</code> supports negative precision: <code>5432</code> truncated to <code>-2</code> is <code>5400</code>. Before, it returned <code>5432</code> unchanged <a href="https://redirect.github.com/shopspring/decimal/pull/426">#426</a></li> <li><code>Shift</code> panics when the exponent overflows an int32, instead of wrapping around <a href="https://redirect.github.com/shopspring/decimal/pull/437">#437</a></li> <li><code>NewFromString</code> rejects a sign right after a leading decimal point, such as <code>".-5"</code> <a href="https://redirect.github.com/shopspring/decimal/pull/447">#447</a></li> </ul> <h4>FEATURES</h4> <ul> <li>Add <code>TrimTrailingZeros</code> and <code>UseScientificNotation</code> settings for string output <a href="https://redirect.github.com/shopspring/decimal/pull/389">#389</a> <a href="https://redirect.github.com/shopspring/decimal/pull/416">#416</a></li> <li>Add Spanner support with <code>EncodeSpanner</code> and <code>DecodeSpanner</code> for <code>Decimal</code> and <code>NullDecimal</code> <a href="https://redirect.github.com/shopspring/decimal/pull/395">#395</a></li> </ul> <h4>ENHANCEMENTS</h4> <ul> <li>Most operations are faster and allocate less, about twice as fast on average across the benchmarks <a href="https://redirect.github.com/shopspring/decimal/pull/444">#444</a> <a href="https://redirect.github.com/shopspring/decimal/pull/445">#445</a> <a href="https://redirect.github.com/shopspring/decimal/pull/446">#446</a> <a href="https://redirect.github.com/shopspring/decimal/pull/447">#447</a> <a href="https://redirect.github.com/shopspring/decimal/pull/448">#448</a> <a href="https://redirect.github.com/shopspring/decimal/pull/449">#449</a> <a href="https://redirect.github.com/shopspring/decimal/pull/451">#451</a></li> <li>Faster <code>UnmarshalJSON</code>, <code>Scan</code> and <code>NewFromString</code> <a href="https://redirect.github.com/shopspring/decimal/pull/403">#403</a></li> <li><code>ExpHullAbrham</code> raises its partial sum to a power by squaring. Large inputs that took minutes now take seconds <a href="https://redirect.github.com/shopspring/decimal/pull/450">#450</a></li> <li>Document that <code>NewFromFloat</code> returns the shortest decimal that converts back to the same float, and how to convert large whole numbers exactly <a href="https://redirect.github.com/shopspring/decimal/pull/442">#442</a></li> <li>Split <code>decimal.go</code> into <code>decimal.go</code>, <code>math.go</code> and <code>encoding.go</code> <a href="https://redirect.github.com/shopspring/decimal/pull/452">#452</a></li> <li>Lint with golangci-lint in CI, and test on Go 1.26 and 1.27 <a href="https://redirect.github.com/shopspring/decimal/pull/453">#453</a> <a href="https://redirect.github.com/shopspring/decimal/pull/454">#454</a></li> </ul> <h4>BUGFIXES</h4> <ul> <li>Fix <code>Float64</code> hanging on decimals with huge exponents <a href="https://redirect.github.com/shopspring/decimal/pull/438">#438</a></li> <li>Fix <code>ExpHullAbrham</code> returning <code>10^exp</code> instead of 1 for tiny inputs <a href="https://redirect.github.com/shopspring/decimal/pull/433">#433</a></li> <li>Fix a data race in <code>ExpTaylor</code> <a href="https://redirect.github.com/shopspring/decimal/pull/414">#414</a></li> <li>Fix <code>NumDigits</code> for some exact powers of ten <a href="https://redirect.github.com/shopspring/decimal/pull/425">#425</a></li> <li>Fix the <code>omitzero</code> struct tag for <code>Decimal</code> fields in nested structs <a href="https://redirect.github.com/shopspring/decimal/pull/415">#415</a></li> <li>Fix <code>RoundCash</code> giving wrong results with a low <code>DivisionPrecision</code> <a href="https://redirect.github.com/shopspring/decimal/pull/443">#443</a></li> <li><code>NullDecimal</code> is no longer <code>Valid</code> after a failed <code>Scan</code>, <code>UnmarshalJSON</code> or <code>DecodeSpanner</code> <a href="https://redirect.github.com/shopspring/decimal/pull/443">#443</a></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/shopspring/decimal/commit/f658fbf1eb94abc869558633a0b9b239300899f4"><code>f658fbf</code></a> docs: changelog for v1.5.0 (<a href="https://redirect.github.com/shopspring/decimal/issues/455">#455</a>)</li> <li><a href="https://github.com/shopspring/decimal/commit/b2609858efe06dcfd25d4ecdec1a80531856d4d6"><code>b260985</code></a> ci: test on Go 1.26 and 1.27 instead of 1.22 and 1.23 (<a href="https://redirect.github.com/shopspring/decimal/issues/454">#454</a>)</li> <li><a href="https://github.com/shopspring/decimal/commit/d25658fa8de1d9ace7cc9f068f7469f9e44ec581"><code>d25658f</code></a> chore: lint with golangci-lint in CI instead of Go Report Card (<a href="https://redirect.github.com/shopspring/decimal/issues/453">#453</a>)</li> <li><a href="https://github.com/shopspring/decimal/commit/fc257b4a95d135982828135d99f17b7f6075c13f"><code>fc257b4</code></a> chore: split decimal.go into math.go and encoding.go (<a href="https://redirect.github.com/shopspring/decimal/issues/452">#452</a>)</li> <li><a href="https://github.com/shopspring/decimal/commit/aed8543466e85124e50ef52648894a2d1b6c1cd7"><code>aed8543</code></a> fix: RoundCash with a low DivisionPrecision and NullDecimal.Valid after error...</li> <li><a href="https://github.com/shopspring/decimal/commit/811854c508d5eaf855afb2267e364498a985b2d0"><code>811854c</code></a> perf: faster QuoRem, DivRound, Round, RoundBank, RoundUp, RoundCeil and Round...</li> <li><a href="https://github.com/shopspring/decimal/commit/9b6d1186ce89d33fe37ae8f2785d83a4966f9ec1"><code>9b6d118</code></a> perf: raise the ExpHullAbrham sum to its power by squaring (<a href="https://redirect.github.com/shopspring/decimal/issues/450">#450</a>)</li> <li><a href="https://github.com/shopspring/decimal/commit/cc8953c6b309c7031dd45e91891ced6fbb0581da"><code>cc8953c</code></a> perf: build trig constants once (<a href="https://redirect.github.com/shopspring/decimal/issues/449">#449</a>)</li> <li><a href="https://github.com/shopspring/decimal/commit/84990cbfac3cfdada111489558da172cc40ce593"><code>84990cb</code></a> perf: faster String, MarshalJSON and NewFromString; reject a sign after the d...</li> <li><a href="https://github.com/shopspring/decimal/commit/71ebcfdcdf6d4a5e1751294ae667666273b03fe3"><code>71ebcfd</code></a> Fix the scale of the small-input exponential result (<a href="https://redirect.github.com/shopspring/decimal/issues/433">#433</a>)</li> <li>Additional commits viewable in <a href="https://github.com/shopspring/decimal/compare/v1.4.0...v1.5.0">compare view</a></li> </ul> </details> <br /> [](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 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> |
||
|
|
62ea1fd422 |
chore: bump the x group across 1 directory with 8 updates (#30772)
Bumps the x group with 8 updates in the / directory: | Package | From | To | | --- | --- | --- | | [golang.org/x/crypto](https://github.com/golang/crypto) | `0.57.0` | `0.58.0` | | [golang.org/x/mod](https://github.com/golang/mod) | `0.41.0` | `0.42.0` | | [golang.org/x/net](https://github.com/golang/net) | `0.59.0` | `0.60.0` | | [golang.org/x/sync](https://github.com/golang/sync) | `0.23.0` | `0.24.0` | | [golang.org/x/sys](https://github.com/golang/sys) | `0.48.0` | `0.49.0` | | [golang.org/x/term](https://github.com/golang/term) | `0.46.0` | `0.47.0` | | [golang.org/x/text](https://github.com/golang/text) | `0.42.0` | `0.43.0` | | [golang.org/x/tools](https://github.com/golang/tools) | `0.50.0` | `0.51.0` | Updates `golang.org/x/crypto` from 0.57.0 to 0.58.0 <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/golang/crypto/commit/8fdf07b3114278fb3b78c1cf1814e08bd851eb4c"><code>8fdf07b</code></a> go.mod: update golang.org/x dependencies</li> <li><a href="https://github.com/golang/crypto/commit/2437861a30358e949c7be3c9f876233fd28c20fe"><code>2437861</code></a> salsa20: fix keystream reuse in LoongArch LSX tail</li> <li><a href="https://github.com/golang/crypto/commit/c3db4df58582058384d318c87f1c912848d8c464"><code>c3db4df</code></a> acme: prefer test log helpers in test contexts</li> <li><a href="https://github.com/golang/crypto/commit/4e01a8447cadd21a75969d3db82ba6191202cebc"><code>4e01a84</code></a> acme: adds support for profiles draft</li> <li><a href="https://github.com/golang/crypto/commit/8f0f1112abdbc13b6e53068b813cc327e40f2f9f"><code>8f0f111</code></a> ssh: check that no Unicode-aware string function is used</li> <li><a href="https://github.com/golang/crypto/commit/b39ff6d641ecc5bb4b241737cb0c6b646f3e12a9"><code>b39ff6d</code></a> ssh: add certificate algorithms for ML-DSA keys</li> <li><a href="https://github.com/golang/crypto/commit/4465db3225a5d7b6f86e015ad0a10ab81342aca1"><code>4465db3</code></a> ssh: add the ML-DSA public key algorithms</li> <li><a href="https://github.com/golang/crypto/commit/83e695bb1a7ac85613745a2544464f652ddcffcf"><code>83e695b</code></a> ssh: implement ETM mode for CBC ciphers</li> <li><a href="https://github.com/golang/crypto/commit/946083a5fb28da882ed9fa6eb561e000f47e3ee7"><code>946083a</code></a> ssh: only drop a trailing carriage return</li> <li><a href="https://github.com/golang/crypto/commit/543dde943b04b875f2220324e0e9881be7d0092d"><code>543dde9</code></a> ssh: accept known_hosts entries with a multi-word comment</li> <li>Additional commits viewable in <a href="https://github.com/golang/crypto/compare/v0.57.0...v0.58.0">compare view</a></li> </ul> </details> <br /> Updates `golang.org/x/mod` from 0.41.0 to 0.42.0 <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/golang/mod/commit/b5136e5ba156da612a1efc6e49b55988a134a5e0"><code>b5136e5</code></a> sumdb/tlog: use recorded responses in TestCertificateTransparency</li> <li><a href="https://github.com/golang/mod/commit/1e9a5aeb397f5c4abf7aa1927d01575defde85d3"><code>1e9a5ae</code></a> go.mod: update golang.org/x dependencies</li> <li>See full diff in <a href="https://github.com/golang/mod/compare/v0.41.0...v0.42.0">compare view</a></li> </ul> </details> <br /> Updates `golang.org/x/net` from 0.59.0 to 0.60.0 <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/golang/net/commit/18ece0ce30bc35fa81fe72028bf309bb3ff3f4a5"><code>18ece0c</code></a> http2: prevent crash due to HPACK encoder race</li> <li><a href="https://github.com/golang/net/commit/2d03f9dcd22da1be6f645ddfd0541fd94d68e5db"><code>2d03f9d</code></a> http2: avoid 2x refund on stream close with buffered data</li> <li><a href="https://github.com/golang/net/commit/cc7d34fd2dd5864bcafe3e5e0a84919240be98c0"><code>cc7d34f</code></a> http2: avoid excessive work on initial window changes</li> <li><a href="https://github.com/golang/net/commit/57f4235f83712a299328015548240512213a3852"><code>57f4235</code></a> http2: apply header limits to Trailer headers too</li> <li><a href="https://github.com/golang/net/commit/01e3d0338c2256320c59c863f9298e9544a99feb"><code>01e3d03</code></a> http2: coalesce dials via wrapped Transport.RoundTrip</li> <li><a href="https://github.com/golang/net/commit/28247830e9fb37184c6be718f483a0c7d0949022"><code>2824783</code></a> http2: delete malformed framing-related headers</li> <li><a href="https://github.com/golang/net/commit/b13c0c165994a0042e0c4a4d01e2b998097967c9"><code>b13c0c1</code></a> internal/http3: delete HTTP/3 package</li> <li><a href="https://github.com/golang/net/commit/520c891fe60b2ffd4b4ee349d95cac4c1c0d9ee1"><code>520c891</code></a> quic: off-path support in loss/congestion/rtt</li> <li><a href="https://github.com/golang/net/commit/656874fd46a65a97eac94003e0eb8751be4403d0"><code>656874f</code></a> quic: determine local address for connections</li> <li><a href="https://github.com/golang/net/commit/a818e160ee8fbf01b12286ff806fab82f0ed764f"><code>a818e16</code></a> quic: add a pathAddrs type, holding a local/peer address pair</li> <li>Additional commits viewable in <a href="https://github.com/golang/net/compare/v0.59.0...v0.60.0">compare view</a></li> </ul> </details> <br /> Updates `golang.org/x/sync` from 0.23.0 to 0.24.0 <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/golang/sync/commit/36f2d70ecde9857dc4e363242a1369c7645d6770"><code>36f2d70</code></a> errgroup: modernize the usage of closures in goroutines</li> <li>See full diff in <a href="https://github.com/golang/sync/compare/v0.23.0...v0.24.0">compare view</a></li> </ul> </details> <br /> Updates `golang.org/x/sys` from 0.48.0 to 0.49.0 <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/golang/sys/commit/b6b8557e8e2974925aec7a136ba0e323eedc5f43"><code>b6b8557</code></a> unix/linux: unify ppc64x syscall wrappers</li> <li><a href="https://github.com/golang/sys/commit/aab6988eff65f762ecf6b757c3571b8a45f40618"><code>aab6988</code></a> unix: add PrctlArg5Ptr</li> <li><a href="https://github.com/golang/sys/commit/cdfd9840b35fca673dd1b27ef69a13b9f5be0d04"><code>cdfd984</code></a> unix: pass fcntl data as unsafe.Pointer in FcntlF{lock,store} on darwin</li> <li><a href="https://github.com/golang/sys/commit/782b836d3ae6ebda757c7b3800818e737c623614"><code>782b836</code></a> unix/linux: don't warn about closed stderr from child process</li> <li><a href="https://github.com/golang/sys/commit/61592fb02e581c922feaf3d9ada8547488b70964"><code>61592fb</code></a> unix: return syscall error in *listxattrNS on BSD</li> <li><a href="https://github.com/golang/sys/commit/c136fdad42c8b16318f29da74e73194c779ba862"><code>c136fda</code></a> unix/linux/Dockerfile: update to Go 1.26.8</li> <li><a href="https://github.com/golang/sys/commit/f1d0d79251083d5d223af16c0d8c5207a355c627"><code>f1d0d79</code></a> unix: pass xattr data as unsafe.Pointer in BSD xattr syscalls</li> <li><a href="https://github.com/golang/sys/commit/67f850b71cbdd0a9bb58e2c45cb487ab5a72f83f"><code>67f850b</code></a> unix: update linux to v7.2</li> <li><a href="https://github.com/golang/sys/commit/eb1f6591861ee38df32e043d27508fd1effa4854"><code>eb1f659</code></a> unix: add O_EXEC and O_SEARCH on darwin</li> <li><a href="https://github.com/golang/sys/commit/51bc73186f49d1a8f85b1fa28d0c14585ac812cd"><code>51bc731</code></a> unix: add Mmsghdr for linux</li> <li>Additional commits viewable in <a href="https://github.com/golang/sys/compare/v0.48.0...v0.49.0">compare view</a></li> </ul> </details> <br /> Updates `golang.org/x/term` from 0.46.0 to 0.47.0 <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/golang/term/commit/0851034afad912733699827b3bb94436f059797f"><code>0851034</code></a> go.mod: update golang.org/x dependencies</li> <li>See full diff in <a href="https://github.com/golang/term/compare/v0.46.0...v0.47.0">compare view</a></li> </ul> </details> <br /> Updates `golang.org/x/text` from 0.42.0 to 0.43.0 <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/golang/text/commit/ac40b0f06c159afb5bfca4d1860f8b4b60dbc160"><code>ac40b0f</code></a> go.mod: update golang.org/x dependencies</li> <li><a href="https://github.com/golang/text/commit/6dcc5b674302d746762d908ed0e2ad65d84f36f1"><code>6dcc5b6</code></a> unicode/bidi: avoid quadratic behavior in Paragraph.Order and Paragraph.Line</li> <li><a href="https://github.com/golang/text/commit/d0ecd29e39d37c5647d8db9e2edb40d61b220e2a"><code>d0ecd29</code></a> secure/bidirule: lazily precompute ASCII table</li> <li>See full diff in <a href="https://github.com/golang/text/compare/v0.42.0...v0.43.0">compare view</a></li> </ul> </details> <br /> Updates `golang.org/x/tools` from 0.50.0 to 0.51.0 <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/golang/tools/commit/ea2f152dc35325e4b9b639583972375972350a84"><code>ea2f152</code></a> go.mod: update golang.org/x dependencies</li> <li><a href="https://github.com/golang/tools/commit/00443da123aa0b0f0729b6a72badabad7835b1d0"><code>00443da</code></a> go/analysis/passes/printf: pin testdata Go versions</li> <li><a href="https://github.com/golang/tools/commit/9ba0a15b6ac31e1d2748917e6f219e1d98c7c4fa"><code>9ba0a15</code></a> internal/refactor/inline: check import accessibility before Go version</li> <li><a href="https://github.com/golang/tools/commit/25196fcc818e9cc69a8ff7e263f5f60183c46b4e"><code>25196fc</code></a> cmd/toolstash: check -linkobj files to support early export</li> <li><a href="https://github.com/golang/tools/commit/ead0503d8e7d79d756adf531c515223974a10c51"><code>ead0503</code></a> gopls/internal/golang: unexport dragon*Question variables</li> <li><a href="https://github.com/golang/tools/commit/5693030baf216af18b7756b08f6b6fa4a7e379b2"><code>5693030</code></a> gopls/internal/golang: call arguments mistreated in inlineAllCalls</li> <li><a href="https://github.com/golang/tools/commit/134264d72fba423ca1ad358683cd3c32699b010e"><code>134264d</code></a> gopls/internal/golang/stubmethods: do not panic when FindByPos fails</li> <li><a href="https://github.com/golang/tools/commit/01d93d7fa1ae1cd76076088e56c42f7b4734e7b0"><code>01d93d7</code></a> gopls/internal/golang: slay the dragon: update questions</li> <li><a href="https://github.com/golang/tools/commit/405de3911f7d546b09f02249f64c59b5fa3b5d53"><code>405de39</code></a> go/callgraph: fix benchmarks to analyze whole program</li> <li><a href="https://github.com/golang/tools/commit/231a7fadf2aa68064ab7a5b5b01363fc3f25e127"><code>231a7fa</code></a> go/ssa, cmd/deadcode: release type information once functions are built</li> <li>Additional commits viewable in <a href="https://github.com/golang/tools/compare/v0.50.0...v0.51.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 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> |
||
|
|
ee5e3a4029 |
feat: send script resource addresses and dependencies in the agent manifest (#30627)
feat: include script dependencies in agent manifests Send persisted script Terraform addresses and dependency lists on every manifest request, preserving them across agent restarts, reconnects, and shutdown without rebuilding the workspace. - Add `resource_address` and `dependencies` to the agent proto, with `SUCCESS` and `COMPLETION` requirements. - Reuse shared database-to-SDK validation and add bidirectional SDK/proto conversion. Reject empty prerequisite addresses and invalid requirements rather than accepting partial lists. - Bump the agent API to v2.13 and update the agent's RPC connection. Older agents ignore the new fields; older servers return empty fields. - Test manifest delivery, subagent isolation, round trips, invalid dependencies, and unchanged encoding when the new fields are unset. Script execution is unchanged; ordering enforcement follows in PLAT-549. Production dependency lists remain empty until #30556 merges. Stacked on #30625. Refs PLAT-548. |
||
|
|
fb09983c77 |
feat: attach script order dependencies during conversion (#30556)
feat(provisioner): transport resolved script order dependencies Attach finalized `coder_script_order` dependencies to scripts during START imports, covering workspace agents and devcontainer subagents. Dependencies are sorted by prerequisite address and preserve `success` or `completion` requirements. Invalid graphs attach nothing. - Reject Graph responses exceeding the 4 MiB DRPC limit with a readable error reporting the size and limit instead of a transport failure. This check applies to all templates. - Preserve START-only conversion: STOP imports carry addresses but no dependencies. Templates without ordering rules are otherwise unchanged. - Add tests for dependency attachment, requirement preservation, sorting, devcontainer scripts, and oversized responses. Server-side consumption remains a separate follow-up. Refs [PLAT-547](https://linear.app/codercom/issue/PLAT-547/phase-2-transport-resolved-script-dependencies-from-provisioner). |
||
|
|
6afd1515e0 |
fix(coderd/templatebuilder): guard quickstart C/C++ install on every tool it installs (#30374)
The Quickstart base's C/C++ branch guarded on `command -v gcc`, but installs `gcc g++ make cmake`. `codercom/enterprise-base:ubuntu` ships gcc but not cmake, so cmake was never installed while the script reported success. The guard now checks every tool the install provides (`gcc`, `g++`, `make`, `cmake`). Adds `TestQuickstartCppInstallGuard`, which runs the rendered C/C++ branch against stubbed tools and asserts the install runs when any of them is missing. It fails without the fix. Fixes DOCS-736. The matching example template change is in the DOCS-613 PR. Generated by Coder Agents on behalf of @nickvigilante. |
||
|
|
b8c9195b3f |
fix(site/src/pages/AgentsPage): make git panel refresh match a page reload (#30678)
The git panel's refresh button invalidated the PR diff contents but not the chat, whose `diff_statuses` back the PR tabs, so a page reload could show PR state the button missed. Refresh now also invalidates the chat entity. The button was also disabled until the panel had git context, which left no way to pick up a repo created after the chat touched its path. It is now always enabled; the diff style toggles stay disabled without git context. ### Before (Scenario A) https://github.com/user-attachments/assets/82dc7c48-148f-4661-af73-8400a275b05d ### After (Scenario A) https://github.com/user-attachments/assets/0f24e390-39d3-4b43-9f4c-63d499837e33 ### Before (Scenario B) https://github.com/user-attachments/assets/a779031a-8bb9-466b-9cf3-a56ad02a98d5 ### After (Scenario B) https://github.com/user-attachments/assets/05c081e7-7ad1-4608-8ef7-1bac4940034c <details> <summary>Decision log</summary> The git panel's refresh button should show everything a page reload would. Investigation found five ways it didn't, each fixed in its own PR on the current `changes` protocol: 1. `execute` without a workdir didn't record the directory the process ran in (`agent/agentproc`). 2. Refresh only rescanned repos already being watched, so a repo created or recreated after its path was recorded stayed hidden (`agent/agentgit`). A connection with no repos also got no first message. 3. After a git watch reconnect, the new full state was merged into the previous connection's map, so deleted repos stayed visible (`useGitWatcher`). 4. A chat watch reconnect didn't refetch the open chat, so missed `diff_status_change` events were lost (`AgentsPageLayout`). 5. Refresh didn't refetch the chat, whose diff statuses back the PR tabs, and was disabled until git context existed (`GitPanel`, `AgentChatPageView`). Considered and deferred: a snapshot protocol with diffs fetched by hash, which would keep large multi-repo diffs under the 4 MiB proxy read limit, and making scans faster at scale. Neither is needed to fix refresh, and together they made a single ~5900-line change that couldn't be reviewed. The refresh spinner still runs for a fixed time, since tying it to the response needs a request ID in the protocol. </details> --- _Generated by Coder Agents on behalf of @DanielleMaywood._ |
||
|
|
dad010ff11 |
fix(site/src/pages/AgentsPage): refetch the open chat when the chat watch reconnects (#30677)
Events missed while the chat watch socket was disconnected, such as `diff_status_change`, only reach the open chat through a refetch. The socket's `onOpen` handler already invalidated the chat lists, but not the open chat, so its PR state could stay stale until a page reload. `onOpen` now also invalidates the open chat entity and its diff contents. This includes the first open, adding one refetch on page load, the same as the existing chat list invalidation. ### Before https://github.com/user-attachments/assets/b88a18d2-dfef-45bc-87f0-4c2d492b8ed7 ### After https://github.com/user-attachments/assets/65f84af2-7d2b-4a51-ae33-56cca62d9946 <details> <summary>Decision log</summary> The git panel's refresh button should show everything a page reload would. Investigation found five ways it didn't, each fixed in its own PR on the current `changes` protocol: 1. `execute` without a workdir didn't record the directory the process ran in (`agent/agentproc`). 2. Refresh only rescanned repos already being watched, so a repo created or recreated after its path was recorded stayed hidden (`agent/agentgit`). A connection with no repos also got no first message. 3. After a git watch reconnect, the new full state was merged into the previous connection's map, so deleted repos stayed visible (`useGitWatcher`). 4. A chat watch reconnect didn't refetch the open chat, so missed `diff_status_change` events were lost (`AgentsPageLayout`). 5. Refresh didn't refetch the chat, whose diff statuses back the PR tabs, and was disabled until git context existed (`GitPanel`, `AgentChatPageView`). Considered and deferred: a snapshot protocol with diffs fetched by hash, which would keep large multi-repo diffs under the 4 MiB proxy read limit, and making scans faster at scale. Neither is needed to fix refresh, and together they made a single ~5900-line change that couldn't be reviewed. The refresh spinner still runs for a fixed time, since tying it to the response needs a request ID in the protocol. </details> --- _Generated by Coder Agents on behalf of @DanielleMaywood._ |
||
|
|
63eef9efde |
fix(site/src/pages/AgentsPage/hooks): replace git state on reconnect (#30676)
When the git watch socket reconnected, the agent's full state was merged into the map from the previous connection. Repos deleted while disconnected, or lost because the agent restarted, stayed in the panel until the page was reloaded. The first `changes` message of each connection now replaces the map. Later messages on the same connection are still applied as deltas. With an agent that includes #30675, this also clears the panel when the new connection has no repos. ### Before https://github.com/user-attachments/assets/3df52312-8234-4c71-8e84-06dfabe8509c ### After https://github.com/user-attachments/assets/2113a74c-f916-4ac4-bf11-1b58d78d1901 <details> <summary>Decision log</summary> The git panel's refresh button should show everything a page reload would. Investigation found five ways it didn't, each fixed in its own PR on the current `changes` protocol: 1. `execute` without a workdir didn't record the directory the process ran in (`agent/agentproc`). 2. Refresh only rescanned repos already being watched, so a repo created or recreated after its path was recorded stayed hidden (`agent/agentgit`). A connection with no repos also got no first message. 3. After a git watch reconnect, the new full state was merged into the previous connection's map, so deleted repos stayed visible (`useGitWatcher`). 4. A chat watch reconnect didn't refetch the open chat, so missed `diff_status_change` events were lost (`AgentsPageLayout`). 5. Refresh didn't refetch the chat, whose diff statuses back the PR tabs, and was disabled until git context existed (`GitPanel`, `AgentChatPageView`). Considered and deferred: a snapshot protocol with diffs fetched by hash, which would keep large multi-repo diffs under the 4 MiB proxy read limit, and making scans faster at scale. Neither is needed to fix refresh, and together they made a single ~5900-line change that couldn't be reviewed. The refresh spinner still runs for a fixed time, since tying it to the response needs a request ID in the protocol. </details> --- _Generated by Coder Agents on behalf of @DanielleMaywood._ |
||
|
|
e981ff4eec |
fix(agent/agentgit): re-resolve chat paths on refresh (#30675)
A git watch `refresh` only rescanned the repos already being watched. A path recorded before its repo existed, for example before `git init`, or a repo that was deleted and recreated, stayed hidden until the client reconnected, so a page reload showed repos the refresh button didn't. Refresh now resolves the chat's paths again, as a new connection does. The first scan of a connection is also sent even when no repos are watched, so a client can replace state left over from an earlier connection; later scans with no repos still send nothing. ### Before https://github.com/user-attachments/assets/33bf9046-0448-4537-9a97-c97f51e1cc39 ### After https://github.com/user-attachments/assets/82b15d03-6460-4fe0-b5e7-b4bafbbd72d1 <details> <summary>Decision log</summary> The git panel's refresh button should show everything a page reload would. Investigation found five ways it didn't, each fixed in its own PR on the current `changes` protocol: 1. `execute` without a workdir didn't record the directory the process ran in (`agent/agentproc`). 2. Refresh only rescanned repos already being watched, so a repo created or recreated after its path was recorded stayed hidden (`agent/agentgit`). A connection with no repos also got no first message. 3. After a git watch reconnect, the new full state was merged into the previous connection's map, so deleted repos stayed visible (`useGitWatcher`). 4. A chat watch reconnect didn't refetch the open chat, so missed `diff_status_change` events were lost (`AgentsPageLayout`). 5. Refresh didn't refetch the chat, whose diff statuses back the PR tabs, and was disabled until git context existed (`GitPanel`, `AgentChatPageView`). Considered and deferred: a snapshot protocol with diffs fetched by hash, which would keep large multi-repo diffs under the 4 MiB proxy read limit, and making scans faster at scale. Neither is needed to fix refresh, and together they made a single ~5900-line change that couldn't be reviewed. The refresh spinner still runs for a fixed time, since tying it to the response needs a request ID in the protocol. </details> --- _Generated by Coder Agents on behalf of @DanielleMaywood._ |
||
|
|
2b844aa649 |
fix(agent/agentproc): track the default working directory for chat processes (#30674)
A process started through the agent's process API without a `workdir` runs in the agent's default directory, but only an explicit `workdir` was recorded in the chat's path store. Repositories touched that way were never watched by the git panel. The path store now records `proc.workDir`, the directory the process actually ran in, whether requested or defaulted. ### Before https://github.com/user-attachments/assets/b98c290a-0c77-4ce4-bb00-eb4088d2067e ### After https://github.com/user-attachments/assets/0383aa1a-eced-4338-97af-3c54501cdedb <details> <summary>Decision log</summary> The git panel's refresh button should show everything a page reload would. Investigation found five ways it didn't, each fixed in its own PR on the current `changes` protocol: 1. `execute` without a workdir didn't record the directory the process ran in (`agent/agentproc`). 2. Refresh only rescanned repos already being watched, so a repo created or recreated after its path was recorded stayed hidden (`agent/agentgit`). A connection with no repos also got no first message. 3. After a git watch reconnect, the new full state was merged into the previous connection's map, so deleted repos stayed visible (`useGitWatcher`). 4. A chat watch reconnect didn't refetch the open chat, so missed `diff_status_change` events were lost (`AgentsPageLayout`). 5. Refresh didn't refetch the chat, whose diff statuses back the PR tabs, and was disabled until git context existed (`GitPanel`, `AgentChatPageView`). Considered and deferred: a snapshot protocol with diffs fetched by hash, which would keep large multi-repo diffs under the 4 MiB proxy read limit, and making scans faster at scale. Neither is needed to fix refresh, and together they made a single ~5900-line change that couldn't be reviewed. The refresh spinner still runs for a fixed time, since tying it to the response needs a request ID in the protocol. </details> --- _Generated by Coder Agents on behalf of @DanielleMaywood._ |
||
|
|
c856d5fb22 |
feat: accept template version IDs in --template-version (#30563)
Follow-up to #30199. `--template-version` on `coder create`, `start`, `stop`, and `update` (plus `--stop-template-version` on `update`) now takes a template version ID as well as a name. Passing a version UUID used to 404 with a pretty unhelpful `get template version by name` error. `resolveTemplateVersionID` still looks up by name first, so a version that happens to be named like a UUID resolves the same way it did before. If that 404s and the input parses as a UUID, it falls back to fetching the version by ID. Either way the version has to belong to the selected template. That check matters most for `create`, which only sends the version ID and lets the server derive the template from it, so without it `coder create --template foo --template-version <id of a bar version>` would quietly create a `bar` workspace. The name is now path-escaped before the lookup. Previously something like `../../../templateversions/<id>` could reach other API routes through the name lookup and skip the template check entirely. Not-found errors now read `template version "x" not found for template "foo"` instead of the raw SDK error, so anything matching on the old text will need updating. Flag help and the generated CLI docs say "name or ID" now. |
||
|
|
200cffcfd8 |
fix(scripts/release): promote stable on immutable releases (#30745)
## Problem `./scripts/release_promote_stable.sh v2.37.4` failed today with: ``` edit release failed: PATCH https://api.github.com/repos/coder/coder/releases/403906567: 404 Not Found ``` Releases on this repo are immutable (`gh release view v2.37.4 --json isImmutable` → `true`). `promoteVersionToStable` cloned the entire `RepositoryRelease` into `EditRelease`, so the PATCH carried `tag_name`, `target_commitish` and the assets. GitHub rejects that on an immutable release even when the values are unchanged, and answers 404 rather than 422. The same edit with only `body`, `prerelease` and `make_latest` succeeds (that's how v2.37.4 was promoted by hand). ## Change - Build a minimal `RepositoryRelease{Body, Prerelease, MakeLatest}` for the edit. - Drop the `Draft: false` assignment (published releases are never drafts, and `draft` is not an editable field on immutable releases). - Dry-run now logs the body diff instead of a diff of the whole object. - Remove the now-unused `cloneRelease` helper. Verified with `go test ./scripts/release/` and a `promote --dry-run` against v2.36.7. Every release published since immutable releases were enabled is affected, so without this the command cannot promote anything. Related: the release-process review notes that this step is also missing from the runbook and should become a workflow job on every `.0` mainline release. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
2b9fad8bba |
feat: add chat project sharing database layer (#30479)
Database and authorization layer for chat project sharing (experiment `chat-projects`), part 1 of 2. #30439 adds the API on top of it. Nothing here changes behavior: projects start with empty ACLs, no endpoint writes them yet, and deleting a project still detaches its chats. Project deletion is in #30683. - **Schema:** migration `000621` adds `user_acl` and `group_acl` jsonb columns to `chat_projects`, typed as `ChatACL` like chats, with GIN indexes. It also adds the `chat_project:share` API key scope. - **Queries:** - `GetChatProjectsOwnedOrSharedWithUserID`: owned projects plus projects with an ACL entry for the user directly, through a group, or through the Everyone group (whose ID is the organization ID). Entries count only for members of the project's organization. Keys match regardless of actions, so dbauthz filters the rows. - `IsChatProjectAccessibleByUserID`: whether a user owns a project or holds a `read` or `*` grant on it, for code running under a system subject. With sharing disabled, dbauthz answers owner-only. - `GetChatProjectByIDForUpdate`: lets the ACL update read, modify, and write in one transaction. - `UpdateChatProjectACLByID`. - **RBAC:** - New `share` action on `chat_project`. dbauthz requires it to update the ACL. - `ChatProject.RBACObject` attaches the project ACL. Memory objects get a derived ACL: project `read` grants memory read, and `read` with `update` grants memory create and delete. Wildcard grants count. Read sharees change memories through their chats' agents, which #30439 gates. Project instructions authorize through the same object, so a `read` grant reads them and an `update` grant edits them. - `--disable-chat-sharing` also covers projects: ACLs are ignored, the ACL update is rejected, and roles deny `chat_project:share`. The help text and chat sharing docs say so. - **Audit:** `user_acl` and `group_acl` changes are tracked. - **Tests:** - Querier tests run the access queries both raw and through dbauthz (owner, direct user, group, Everyone, wildcard grants, a member of another org, grants without read). - RBAC object and memory ACL tests, with an authorizer check, in both sharing modes. - dbauthz cases including the disabled guards, and the `chat_project:share` negation in the roles test. The generated TypeScript changes only add the new scope value. > Generated by Coder Agents. |
||
|
|
2254965ef8 |
docs: update release calendar for v2.38 (#30757)
Updates the release calendar in `docs/reference/releases.md`. For the `2.38` release: * `2.38` becomes Mainline * `2.37` Stable * `2.36` Security Support * `2.35` Not Supported * `2.32` drops off. Latest patch versions are bumped to `v2.34.12`, `v2.35.9`, `v2.36.7`, `v2.37.4`, and `v2.38.0`, and a `2.39` "Not Released" row is added. The `2.35` row's link text (`v2.35.6`) is fixed to match its target (`v2.35.7`, now `v2.35.9`). Generated with `scripts/update-release-calendar.sh`, then hand-adjusted: - 2.38 links to its changelog post, `broader-model-access-and-tighter-governance-controls-in-238`, since `coder-2-38` returns 404. The longer link widens the table, so every row is realigned. - 2.35 keeps `coder-2-35-1`; the script's `coder-2-35` returns 404. - 2.38's date is the GitHub release publish date (October 06, the first Tuesday). The script uses the tag commit date (October 01). The "latest ESR version" link in the ESR section is also updated from `v2.34.5` to `v2.34.12`. Note: re-running the script will revert the two link overrides above. --- _Generated by Coder Agents on behalf of @Lisa-Fiander._ |