mirror of
https://github.com/coder/coder.git
synced 2026-09-22 13:10:21 +08:00
c4792cf104f27d47abb6cf8914143c6d57eaf26c
14694
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
c4792cf104 |
fix: show Anthropic Opus 4.7+ thinking (#26026)
## Summary - Updates Coder's pinned `github.com/coder/fantasy` fork to include coder/fantasy#39. - Exposes Anthropic `thinking_display` as a typed chat model provider option with `summarized` and `omitted` values. - Validates configured `thinking_display` values and maps them to `fantasyanthropic.ProviderOptions.ThinkingDisplay`. - Regenerates the API/UI option schemas so the admin model config form gets a generated select field. ## Tests - `go mod tidy` - `make gen` - `go test ./codersdk ./coderd/x/chatd/chatprovider ./coderd -run 'TestChatModelProviderOptions|TestAnthropicThinkingDisplayFromChat|TestProviderOptionsFromChatModelConfig_AnthropicThinkingDisplay|TestMergeMissingProviderOptions_AnthropicThinkingDisplay|TestValidateChatModelProviderOptions_AnthropicThinkingDisplay'` - `go test ./coderd/x/chatd/... ./codersdk` - `go test ./coderd -run 'TestValidateChatModelProviderOptions_AnthropicThinkingDisplay'` - `pnpm --dir site exec -- biome lint --error-on-warnings src/api/chatModelOptionsGenerated.json src/api/typesGenerated.ts` - pre-commit hook, including fmt, lint, and slim build > Mux working on behalf of Mike. |
||
|
|
5578ac5f3d |
fix(cli): bound Coder Connect SSH probe (#26090)
Coder Connect DNS should answer from the local Coder Connect resolver, so `coder ssh --stdio` now gives the optional DNS availability probe a 100ms budget and falls back to the normal tunnel when DNS paths blackhole absolute `.coder.` lookups instead of answering NXDOMAIN. Closes https://github.com/coder/coder/issues/22581. |
||
|
|
4627b01415 |
fix: reduce agentfake manager startup time (#25669)
Signed-off-by: Callum Styan <callumstyan@gmail.com> Co-authored-by: Mux <noreply@coder.com> |
||
|
|
6dedae4858 |
fix(site): count workspaces to delete scoped to organization (#25943)
ref DEVEX-268 branched from #24799 ^Modifies that PR to include a Storybook test to verify correct behavior when deleting a template that's attached to a workspace --------- Co-authored-by: Carolina Urrea <73137943+canourrea23@users.noreply.github.com> |
||
|
|
242c4d791b | fix(coderd): isolate OIDC fake IDP in parallel subtests (#26075) | ||
|
|
45475b803e |
test(agent): remove race in TestAgent_Session_TTY_QuietLogin/Hushlogin (#25865)
The subtest previously called session.Shell(), wrote "exit 0" through a client-side PTY, and then waited indefinitely on session.Wait(). Under the race detector the byte stream occasionally arrived at the agent before the remote shell was in its read loop and was silently discarded; the shell never exited, session.Wait() blocked until the go-test watchdog kicked in and killed the test binary. The agent writes the message of the day announcement banner synchronously in agentssh.startPTYSession before forking the user shell. The subtest now repeatedly sends "exit 0" and the writes/waiting on session.Wait are time bound. Also fixes a pre-existing test bug where the empty bytes intended to create ~/.hushlogin were written to the MOTD path. The previous test passed only because the MOTD file ended up empty, not because the hushlogin code path was exercised. With the file now placed at the correct path, the assertion genuinely validates isQuietLogin. Generated with assistance from Coder Agents. |
||
|
|
b95697a370 |
ci: rewrite release workflow to be fully GitHub Actions-driven (#25162)
Replace the local interactive release CLI and legacy shell scripts with a non-interactive Go tool (`scripts/release-action/`) and a rewritten `release.yaml` workflow. Release managers trigger releases from the GitHub Actions UI by selecting a branch, picking a release type (`rc`, `release`, or `create-release-branch`), and optionally providing a commit SHA. The Go tool has four subcommands: `calculate-version` (computes next version from git state), `generate-notes` (release notes from commit log and PR metadata), `publish` (creates GitHub release with checksums), and the workflow handles tag creation, branch creation, building, and downstream publishing. `scripts/version.sh` fallback now uses `git describe` (nearest ancestor tag) instead of global latest so dev builds on release branches show the correct version series. |
||
|
|
d5b0e93c6c |
fix!: reject OIDC login when email_verified claim is non-bool or absent (#25713)
## Problem The OIDC callback checks `email_verified` via a Go type assertion (`verifiedRaw.(bool)`). When an IdP returns the claim as a string (`"false"`), a number, or omits it entirely, the assertion fails silently and the email is implicitly treated as verified. Several real IdPs (SAML-to-OIDC bridges, certain Azure AD B2C configurations) emit string-typed booleans, making this reachable in practice. ## Fix Add `coerceEmailVerified()` to handle `bool`, `string` (`"true"`/`"false"`/`"1"`/`"0"` via `strconv.ParseBool`), `float64`, `json.Number`, and `int`/`int64` variants. Rewrite the check to be fail-closed: an absent claim, an unrecognized type, or any non-truthy value is treated as unverified and rejected. The existing `IgnoreEmailVerified` config option remains as an escape hatch. Fixes https://linear.app/codercom/issue/PLAT-228 > Generated with [Coder Agents](https://coder.com) by @f0ssel <details><summary>Implementation plan</summary> ### Production code (`coderd/userauth.go`) - Added `encoding/json` import - Added `coerceEmailVerified(v interface{}) (verified bool, ok bool)` helper near EOF - Replaced the type-assertion block (lines ~1342-1363) with fail-closed logic that uses `coerceEmailVerified` ### Unit tests (`coderd/userauth_internal_test.go`, new file) - Table-driven test covering: `bool`, `string` (`"true"`, `"false"`, `"1"`, `"0"`, `"TRUE"`, `"t"`, `"f"`, `"invalid"`, `""`), `json.Number`, `float64`, `int`, `int64`, `nil`, `[]string{}`, `map[string]string{}` ### Integration tests (`coderd/userauth_test.go`, `coderd/users_test.go`) - Added 3 new test cases: `EmailVerifiedMissingIgnored` (200), `EmailVerifiedAsStringTrue` (200), `EmailVerifiedAsStringFalse` (403) - Updated existing test cases that omitted `email_verified` and expected success to include `"email_verified": true` ### FakeIDP (`coderd/coderdtest/oidctest/idp.go`) - `encodeClaims` now defaults `email_verified` to `true` (like `exp`, `aud`, `iss`) so tests that don't care about the verification flow are unaffected </details> |
||
|
|
53d287a139 |
fix(coderd)!: restrict OIDC email fallback to first-time account linking (#25712)
## Problem `findLinkedUser` in `coderd/userauth.go` falls back to email-based user lookup when no `linked_id` match is found. This fallback was used for **all logins**, not just first-time linking. An attacker who registers the victim's email at the IdP (with a different OIDC subject) bypasses the `linked_id` check and gets matched to the victim's Coder account. Combined with the `email_verified` type assertion bypass (PLAT-228), this creates a chained account-takeover vector. ## Fix Restrict the email fallback in `findLinkedUser` so that when a user found by email already has a `user_link` with a non-empty `linked_id` that **differs** from the current login's `linked_id`, the function returns no user. This blocks account takeover while preserving: - **First-time linking**: No existing `user_link` exists, email fallback works as before. - **Legacy links**: Empty `linked_id` (pre-migration), email fallback still works. - **Normal logins**: Matching `linked_id` resolves via the primary path, no fallback needed. Also adds a `UpdateUserLinkedID` query to backfill `linked_id` on legacy links (only when currently empty) during login, gradually migrating them to the secure path. The `findLinkedUser` signature now accepts `loginType` explicitly instead of relying on `user.LoginType`, ensuring the correct link is checked in the legacy lookup. ## Breaking change Marked `release/breaking`. An account whose `user_link` already has a populated `linked_id` that does not match the subject the IdP presents will now be denied login (403) instead of silently resolving via the email fallback. The most likely trigger is changing `CODER_OIDC_ISSUER_URL` (the `linked_id` is `issuer||subject`), or two identities sharing one email. Accounts with an empty (legacy) `linked_id` are unaffected and are backfilled on their next login. Fixes: https://linear.app/codercom/issue/PLAT-229 <details><summary>Implementation details</summary> ### Files changed - `coderd/userauth.go`: Core fix in `findLinkedUser` + backfill logic in `oauthLogin` - `coderd/database/queries/user_links.sql`: New `UpdateUserLinkedID` query - `coderd/database/dbauthz/dbauthz.go`: Authorization for new query (`ActionUpdate` on the user object, matching `InsertUserLink`) - `coderd/userauth_test.go`: New OIDC and GitHub tests - Generated files: `queries.sql.go`, `querier.go`, `dbmock.go`, `querymetrics.go` ### New tests - `TestUserOIDC/OIDCEmailFallbackBlockedByExistingLink`: Attacker with a different `sub` but the same email is rejected (403) when the victim has an existing link (covers signups enabled and disabled). - `TestUserOIDC/OIDCFirstTimeLinkByEmailAllowed`: User created via SCIM/API (no `user_link`) can still link via email on first OIDC login, and the `linked_id` is populated. - `TestUserOIDC/OIDCLegacyLinkBackfill`: User with empty `linked_id` can login and their `linked_id` is backfilled with the correct value. - `TestUserOIDC/OIDCEmailFallbackBlockedByIssuerChange`: Existing link recorded under a previous issuer is rejected (403) after the issuer changes (documents the breaking behavior). - `TestUserOAuth2Github/EmailFallbackBlockedByExistingLink`: GitHub attacker with a different user ID but the victim's email is rejected (403). </details> > [!NOTE] > This PR was authored by Coder Agents on behalf of @f0ssel. --------- Co-authored-by: Coder Agents <agents@coder.com> |
||
|
|
76bf462bbf |
fix(coderd): prevent user-admin from resetting owner password (#25709)
`PUT /api/v2/users/{user}/password` was protected only by
`ActionUpdatePersonal`, which the built-in `user-admin` role holds
site-wide. No guard prevented targeting an owner. The old-password check
is skipped for non-self resets, so a user-admin could reset any owner's
password and authenticate as them, gaining full deployment control.
Add an owner-role guard to `putUserPassword` that refuses password-reset
requests when the target holds the owner role unless the caller is also
an owner. This is modeled on the guard in `putUserStatus`, but differs
in that it conditionally allows owner-to-owner resets (whereas
`putUserStatus` blocks all suspension of owners regardless of caller).
Fixes https://linear.app/codercom/issue/PLAT-227
<details><summary>Implementation details</summary>
- Guard inserted after the `Authorize` check, before `httpapi.Read`
- `apiKey.UserID != user.ID` gates the check so self-password-change is
unaffected
- Acting user's roles fetched from DB to verify owner status (same
pattern as `putUserStatus`)
- Returns HTTP 400 consistent with sibling handler error style
- Two new test cases: `UserAdminCannotResetOwnerPassword`,
`OwnerCanResetOwnerPassword`
</details>
> Generated with [Coder Agents](https://coder.com) by @f0ssel
|
||
|
|
20d678b886 |
fix(agent): install connstats callback at statsReporter creation (#25819)
The stats reporter only installed the connstats callback on the TUN device after the report loop negotiated an interval with the server. Traffic that flowed before that point (e.g. an SSH handshake) was silently dropped because the TUN wrapper's stats.Load() returned nil. We now install the connstats callback immediately and we no longer re-install the callback every interval unless the interval changed. Fixes flaky TestAgent_Stats_SSH, TestAgent_Stats_ReconnectingPTY, and TestAgent_Stats_Magic by ensuring the connstats callback is always installed before network traffic can flow. Closes coder/internal#505 Closes CODAGT-517 |
||
|
|
6bd413163f |
fix(coderd): update references to workspace's include_deleted query param (#25826)
fixes DEVEX-206 |
||
|
|
61a35185cf |
fix: upgrade Go toolchain from 1.26.2 to 1.26.4 (#26066)
Upgrades the Go toolchain from 1.26.2 to 1.26.4 to address two stdlib CVEs: - **CVE-2026-27145** (Low): `crypto/x509` `VerifyHostname` has quadratic cost with large DNS SAN lists, enabling DoS with untrusted certificates. - **CVE-2026-42507** (Low): `net/textproto` includes attacker-controlled input in errors without escaping, enabling log injection. ### Changes - `go.mod`: Bump `go` directive from 1.26.2 to 1.26.4 - `mise.toml`: Bump `go` tool version from 1.26.2 to 1.26.4 - `mise.lock`: Regenerated with updated Go checksums Resolves ENT-104 > Generated by Coder Agents on behalf of @Shelnutt2 |
||
|
|
6366c380fe |
fix: correct user:* scope typo (#26049)
The wildcard entry in `externalLowLevel` was `"user.*"` (period) instead of `"user:*"` (colon). Every other entry uses the `resource:action` colon convention, and `parseLowLevelScope` rejects the period form, so the wildcard was silently dropped from `ExternalScopeNames()` and could not be requested via `coder tokens create --scope=user:*`. Closes https://github.com/coder/coder/issues/25623 |
||
|
|
b075db51e8 |
fix(cli): serialize TestUseKeyring subtests to avoid OS keyring flakes (#25924)
`TestUseKeyring/Logout` flaked on Windows in CI: after `coder logout` returned `nil`, `env.keyring.Read(env.clientURL)` still returned the credential instead of `os.ErrNotExist`. The CI logs showed the logout HTTP call succeeded and the keyring service name and server URL were correct. The OS keyring is shared global state on Windows and macOS, and concurrent in-process access seems to produce intermittent failures on Windows (ERROR_NOT_FOUND, stale reads after delete). This change serializes TestUseKeyring subtests in an attempt to fix the intermittent failures. The root cause is unknown. Generated with assistance by Coder Agents |
||
|
|
6b556ea873 |
fix(site): default agent logs tab to failed script, else All Logs (#25442)
> 🤖 This PR was modified by Coder Agents on behalf of Jake Howell. The agent logs tab was snapping to **Startup Script** whenever `getAgentHealthIssues` returned _any_ issue, including non-script issues like: - agent `status` of `connecting`, `timeout`, or `disconnected` - lifecycle `shutting_down`, `shutdown_error`, or `shutdown_timeout` - any script with status `timed_out`, `exit_failure`, or `pipes_left_open` So users routinely landed on a filtered Startup Script view (even mid-connect) and had to click back to **All Logs** to see the full picture. ### Change - Default to **All Logs** on mount. - Once logs stream in, if any script has actually failed _and_ its source has rendered log entries, auto-select that script's tab. The visibility check is the same one the tab list uses, so we never point `selectedLogTab` at a tab that isn't rendered. - A ref ensures the auto-select fires at most once and never overrides a manual tab change by the user. - The failure predicate (`exit_code` truthy or `status` set and not `"ok"`) is extracted into an `isScriptFailed` helper so the auto-select and the per-tab error indicator stay aligned. ### Behavior matrix | Agent state | Before | After | | ------------------------------------------------------ | --------------- | ------------------------------ | | Healthy, scripts running normally | All Logs | All Logs | | `connecting` / `timeout` / `disconnected` | Startup Script | All Logs | | `shutting_down` / `shutdown_error` | Startup Script | All Logs | | Startup Script failed, has logs | Startup Script | Startup Script | | Non-startup script failed, has logs (e.g. install) | Startup Script | The failed script's tab | | Failed script with **no logs**, other sources have logs| Startup Script (broken: tab not rendered) | All Logs | ### Test coverage Four `play` functions on `AgentRow.stories.tsx`, each pinned to a hardcoded tab name so a predicate regression can't silently pass: - **`StartError`** — failed script with logs is auto-selected. - **`StartErrorWithoutFailedSourceLogs`** — failed script with no logs keeps All Logs active; we never point at an invisible tab. - **`ConnectingWithStartupLogs`** — connecting agent with no script failure stays on All Logs (locks in the bug fix for connection-only issues). - **`NonStartupScriptError`** — only a non-startup script fails (Startup Script is OK); the auto-select tracks the failure, not position or display name. Each play function was verified to actually run by deliberately failing the assertion once and confirming the test errored. <details> <summary>Decision log</summary> The shape evolved during review: 1. First pass: collapse to `useState("all")`. Reviewer noted this lost the auto-jump for legitimate failures. 2. Second pass: `useState(failedSourceId ?? "all")`. Codex flagged that `failedSourceId` could point to a tab with no rendered entries, breaking the Logs panel. 3. Final pass (this PR): `useState("all")` + `useEffect` + ref. Auto-jump only fires once, only when the failed source has rendered logs, and never overrides a manual selection. Deferred from coder-agents-review feedback: - **DEREM-5**: `agent.log_sources.find(...)` can disagree with the tab bar's sort order when multiple non-startup scripts fail concurrently. Low probability, one click to recover. Worth a follow-up if it becomes a real complaint. </details> ### Verification - `pnpm check` (biome) — clean - `pnpm lint:types` (tsc) — clean - `pnpm vitest run --project "storybook (chromium)" src/modules/resources/AgentRow` — 28/28 passed --------- Co-authored-by: Atif Ali <atif@coder.com> Co-authored-by: Jeremy Ruppel <jeremy.ruppel@gmail.com> |
||
|
|
502c5acca8 |
fix(coderd): preserve gateway model names (#26039)
OpenAI-compatible gateway providers such as OpenRouter require slash-namespaced model IDs to reach the intended upstream model, but native OpenAI routing strips those prefixes. Preserve full model IDs for gateway provider types, reject OpenRouter-like providers configured as native `openai` when a slash model would be stripped, and validate chat model config changes under the provider reference lock while still allowing unrelated edits to existing configs. Split from #26005. > Mux created this PR on behalf of Mike. |
||
|
|
2cbce86eee |
chore: update install docs for v2.34.0 release (#26058)
Updates the install docs for the v2.34.0 release, branched off the latest `main`. Supersedes #25995: same release-docs update, but cut from current `main` and with every "Latest Release" link refreshed. The automated PR carried stale patch links and a `vv2.34.0` typo. ## Changes - `docs/install/releases/index.md`: regenerate the release calendar. 2.34 → Mainline, 2.33 → Stable, and every "Latest Release" link points to the current patch per minor (`2.24.6, 2.29.16, 2.30.9, 2.31.14, 2.32.5, 2.33.6, 2.34.0`). - `docs/install/rancher.md`: version selector → Mainline `2.34.0`, Stable `2.33.6`. - `docs/install/kubernetes.md`: Helm `--version` → Mainline `2.34.0`, Stable `2.33.6` (chart + OCI), matching the Rancher guide. Addresses the review feedback on #25995: the `vv2.34.0` typo, bumping Stable to `2.33.6`, and keeping the Kubernetes guide in sync with Rancher. <details> <summary>Notes for reviewers</summary> - Verified with `markdownlint-cli2` (0 errors) and `markdown-table-formatter --check` (no reformatting needed). - The calendar was regenerated via `scripts/update-release-calendar.sh`. That script's `get_latest_patch` does not exclude prerelease tags, so it selected `v2.34.0-rc.0` over `v2.34.0`; that row was corrected by hand. A follow-up fix to the script would prevent this recurring. - The linkspector 404 on `coder.com/changelog/coder-2-34` is expected for a fresh release; that page publishes alongside the release. </details> --- *Generated by Coder Agents on behalf of @f0ssel.* |
||
|
|
c5631a853a |
feat(coderd/aibridged): add boundary correlation fields to RecordInterceptionRequest (#25884)
Add `optional string boundary_session_id` (field 15) and `optional int64 boundary_sequence_number` (field 16) to `RecordInterceptionRequest` in the AI Bridge proto definition. Regenerate Go bindings. No behavior change. ## Context The [Gateway and Firewall Correlation RFC](https://www.notion.so/coderhq/Gateway-and-Firewall-Correlation-RFC-31ad579be592803aa8b3d48348ccdde9) defines a system for linking Agent Firewall (boundary) audit events with AI Bridge interceptions so that admins can trace an LLM request back to the exact network activity that produced it. The correlation mechanism works as follows: 1. Each boundary process generates a session UUID on startup and assigns a monotonically increasing sequence number to every audit event it records. 2. When boundary proxies a request to AI Bridge, it injects `X-Coder-Agent-Firewall-Session-Id` and `X-Coder-Agent-Firewall-Sequence-Number` headers. 3. AI Bridge reads these headers, records them on the interception, and strips them before forwarding to the upstream LLM provider. 4. The persisted session ID and sequence number allow the frontend to discover which boundary session an interception belongs to, and to fetch only the boundary audit events that occurred between any two interceptions by filtering on the sequence number range. This PR implements the first step: adding the proto fields that carry the correlation data from AI Bridge to coderd's recording service. ## How these fields will be used The two immediate downstream issues depend on these fields: **AIGOV-260** adds `boundary_session_id UUID NULL` and `boundary_sequence_number BIGINT NULL` columns to the `aibridge_interceptions` database table, with a partial index on `boundary_session_id`. The `RecordInterception` server handler (`coderd/aibridgedserver/aibridgedserver.go`) will read the new proto fields via `GetBoundarySessionId()` and `GetBoundarySequenceNumber()` and pass them through to the database insert query. **AIGOV-259** adds the capture-and-strip logic in the AI Bridge interception processor (`aibridge/bridge.go`). It reads the `X-Coder-Agent-Firewall-Session-Id` and `X-Coder-Agent-Firewall-Sequence-Number` headers from the incoming request, adds `BoundarySessionID *string` and `BoundarySequenceNumber *int64` fields to the `InterceptionRecord` struct (`aibridge/recorder/types.go`), and strips the headers before forwarding upstream. The translator (`coderd/aibridged/translator.go`) will then map these struct fields onto the proto fields added here. Fixes https://linear.app/codercom/issue/AIGOV-252 > [!NOTE] > This PR was generated by [Coder Agents](https://coder.com). |
||
|
|
ce2e56785f |
fix(enterprise/coderd/license): suppress AI Governance seat-count error for not-entitled licenses (#25885)
When a Premium deployment has no AI Governance addon but has accumulated `ai_seat_state` rows (from prior Gateway testing or Task usage), the backend emitted an error in the `LicenseBanner`: "Your deployment has N active AI Governance seats but the license is not entitled to this feature." This is alarming and inactionable for customers who never purchased the addon. Suppress the `EntitlementNotEntitled` case that appended to `entitlements.Errors`. Customers who purchased AI Governance still see all their seat-limit warnings (90% threshold, over-limit, grace period) since those are gated on `entitled` / `grace_period` and are unaffected. Fixes https://linear.app/codercom/issue/AIGOV-392 > Generated by Coder Agents on behalf of @SasSwart |
||
|
|
52722b800b |
chore: rename boundary command to agent-firewall (#25889)
Renames the `coder boundary` CLI subcommand to `coder agent-firewall` as part of the Boundaries → Agent Firewall rebrand. `coder boundary` is retained as a hidden, deprecated alias that prints a deprecation notice to stderr before running. Both commands use separate builder functions backed by the same boundary base command and license verification logic. Closes https://linear.app/codercom/issue/AIGOV-236 <details><summary>Implementation notes</summary> **Approach:** Two separate `*serpent.Command` objects (not `Aliases`) so the deprecated `boundary` path can print a stderr warning while `agent-firewall` stays clean. **Changes:** - `enterprise/cli/boundary.go`: Split old `boundary()` into `buildAgentFirewallCmd()` and `buildBoundaryAliasCmd()`. Error messages in `verifyLicense` now reference "agent-firewall". - `enterprise/cli/root.go`: Register both commands. - `cli/root.go`: Update YAML-only option validation bypass for the new command name. - Tests: Rename to `TestAgentFirewallSubcommand`, add `TestBoundaryAlias`, update license verification tests to use `agent-firewall`. - Golden files and CLI reference docs regenerated. - `docs/ai-coder/agent-firewall/version.md` and `docs/manifest.json` updated. </details> > Generated with [Coder Agents](https://coder.com/agents) by @SasSwart |
||
|
|
3ab1323bc9 |
fix!: rename chat stream silence timeout error (#25973)
Renames the Agents chat stream-silence error from `startup_timeout` to `stream_silence_timeout` now that the timeout applies to any gap between provider stream parts, not just first-token startup. Updates the SDK enum, generated API docs/types, chat error copy, and Agents UI stories/status labels so the user-facing wording describes a stalled provider response instead of startup delay. > **Breaking change:** This is a very minor breaking change for the Coder Agents API: the public chat error kind enum no longer includes `startup_timeout`, so clients matching that specific value should handle `stream_silence_timeout` instead. |
||
|
|
b7635b5036 |
fix(aibridge): strip proxy headers from bridge requests to fix Bedrock SigV4 signing (#26019)
## Problem On bridge routes, aibridge acts as a client and originates new outbound requests via the SDK. Proxy headers (`X-Forwarded-For`, `X-Forwarded-Host`, etc.) from the inbound client request were forwarded on the outbound request. The SigV4 signer signs all headers present, so any in-transit modification by an egress proxy (e.g. appending an IP to `X-Forwarded-For`) invalidated the signature, causing AWS Bedrock to reject the request with: > 403: "The request signature we calculated does not match the signature you provided." ## Changes - Strip proxy headers in `PrepareClientHeaders` on bridge routes - Add unit test for proxy header stripping in `client_headers_test.go` - Add integration test that verifies SigV4 signature remains valid after an egress proxy modifies headers in transit - Add integration test that verifies passthrough routes still set forwarded headers correctly Related to internal [Slack thread](https://codercom.slack.com/archives/C096PFVBZKN/p1779919049215969). > 🤖 Generated by Coder Agents, modified and reviewed by @ssncferreira |
||
|
|
d1d4b89bd7 |
fix(site): scope menu item icon sizing to direct children (#26040)
The descendant selector `[&_img]:size-icon-sm` in `menuItemClass` was matching the `<img>` nested inside `<Avatar>` on the User settings row of the mobile menu, pinning the avatar image to `1.125rem` instead of letting it fill its Avatar container. The same descendant rule also applied to nested SVGs. Switch both rules to direct-child selectors (`[&>svg]`, `[&>img]`), matching the symmetric `shrink-0` rules already next to them and the same pattern used in `Button.tsx`. Menu items that contain nested `<img>`s already set their own sizes explicitly (`w-4 h-4` in `ProxySettingsSub`, `!size-3.5` in `WorkspacePill`), so this only stops overriding components like `Avatar` that manage their own internal sizing. Also removes the now-dead `[&_img]:w-full [&_img]:h-full` workaround in `UserDropdownContent.tsx` that fought the same bug per-item; that menu item no longer renders an `<img>`, and the root fix makes the workaround unnecessary anyway. Refs [CODAGT-552](https://linear.app/codercom/issue/CODAGT-552/mobile-menu-user-avatar-image-is-undersized-inside-its-container) <details> <summary>Investigation notes</summary> **Repro (before):** mobile viewport, user has an image avatar set, open hamburger menu, observe the avatar in the User settings row is smaller than its bordered square. **Root cause:** `site/src/components/DropdownMenu/menuClasses.ts` set `[&_img]:size-icon-sm` using a Tailwind descendant selector (`_`). That matches every `<img>` *inside* a menu item, including the one nested inside `<AvatarPrimitive.Root>`. The Avatar's inner image is supposed to be `aspect-square size-full object-contain` and inherit its size from the Avatar root (`--avatar-default` ≈ 24px by default), but the descendant rule overrides that and pins it to 1.125rem. **Prior workaround:** `UserDropdownContent.tsx` previously added `[&_img]:w-full [&_img]:h-full` per-item to fight the same bug on desktop. That menu item no longer renders an `<img>`, so the override was already dead code; removed here for hygiene. **Safety check on the wider change:** every other menu item that contains a nested `<img>` already sets its own sizes explicitly: - `ProxySettingsSub` (`MobileMenu.tsx`): `<ExternalImage className="w-4 h-4" />` - `WorkspacePill.tsx`: `[&_svg]:!size-3.5 [&_img]:!size-3.5` on the menu content Direct-child icons (`ChevronRightIcon`, `CircleHelpIcon`, `XIcon`, lucide icons in `UserDropdownContent.tsx`) remain direct children of the menu item, so `[&>svg]:size-icon-sm` keeps sizing them as before. </details> --- _Authored by Coder Agent on behalf of @tracyjohnsonux._ |
||
|
|
becc858fa8 |
fix(coderd/x/chatd): retry provider stream cancellations (#26010)
Closes CODAGT-541. ## Problem An Agents chat stream could die with a terminal `context cancelled` error and surface to the user as a permanent chat failure, even when no context in our process had actually been canceled. The cancellation was a provider-returned error value (HTTP/2 RST_STREAM mid-body surfacing as `context.Canceled` from Go's net/http2), not a real caller cancel. The chain that produced the bug: - fantasy passed the provider's `context.Canceled` through unchanged. - `chaterror.Classify` short-circuited any `errors.Is(err, context.Canceled)` (or `"context canceled"` text) as terminal generic, before checking HTTP status codes or other retry signals. - `chatretry.Retry` did not retry. - The frontend rendered `type:"error"` and the chat was dead. The same short-circuit also masked retryable 5xx responses whose underlying transport error happened to wrap `context.Canceled`. ## Approach `context.Canceled` has no inherent intent. The same error value can mean a user pressing Stop, a server shutdown, the silence guard firing, or a provider-side stream reset. The only layer that can disambiguate is the one holding both the returned error and the caller context. That is `chatretry`. This PR centralizes the policy there and keeps `chaterror` context-free. ## Changes `coderd/x/chatd/chaterror/classify.go` - Add `ErrProviderTransportReset` sentinel to explicitly mark provider-side stream cancellations. - Remove the broad `context.Canceled` / `"context canceled"` short-circuit so status codes and other retry signals can win. - Classify `ErrProviderTransportReset` (with no status code) as a retryable timeout. - Keep a fallback that classifies bare `context.Canceled` as terminal-generic when no other signal is present, so legitimate caller cancels still terminate cleanly. `coderd/x/chatd/chatretry/chatretry.go` - Add `contextError(ctx)` that returns `context.Cause(ctx)` when set, falling back to `ctx.Err()`, so caller-owned cancel causes (`ErrInterrupted`, `errStreamSilenceTimeout`, server shutdown sentinels) propagate cleanly out of the retry loop. - Add `classifyProviderAttemptError(err)` that wraps a bare `context.Canceled` in `ErrProviderTransportReset` and reclassifies. Errors that already classify as retryable or carry a status code are left alone. - Restructure `Retry` so the policy is explicit and readable: check caller cancellation before attempting, run the attempt, check caller cancellation again before normalizing the provider error, then classify and retry. ## End-to-end behavior - Provider returns `context.Canceled` while caller context is healthy: classified as a retryable timeout, retried, the user sees a brief `type:"retry"` event and the chat continues. - User presses Stop: `contextError(ctx)` returns `ErrInterrupted`. Retry stops. `chatloop` flushes partial content and persists. - Stream-silence guard fires: `attemptCtx` is canceled with `errStreamSilenceTimeout`, `guardedStream` produces a classified retryable error, retry proceeds normally on the still-alive parent. - Server shutdown: parent context's cause propagates out, retry stops. |
||
|
|
a67f53870f |
chore: bump github.com/nats-io/nats-server/v2 from 2.12.8 to 2.14.2 (#26046)
Bumps [github.com/nats-io/nats-server/v2](https://github.com/nats-io/nats-server) from 2.12.8 to 2.14.2. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/nats-io/nats-server/releases">github.com/nats-io/nats-server/v2's releases</a>.</em></p> <blockquote> <h2>Release v2.14.2</h2> <h2>Changelog</h2> <p>Refer to the <a href="https://docs.nats.io/release-notes/whats_new/whats_new_214">2.14 Upgrade Guide</a> for backwards compatibility notes with 2.12.x. Please note that the 2.13.x version was skipped.</p> <h3>Go Version</h3> <ul> <li>1.26.3</li> </ul> <h3>Dependencies</h3> <ul> <li>golang.org/x/crypto v0.52.0</li> <li>golang.org/x/sys v0.45.0</li> <li>github.com/nats-io/jwt/v2 v2.8.2</li> <li>github.com/nats-io/nkeys v0.4.16</li> </ul> <h3>Improved</h3> <p>General</p> <ul> <li>The client ID is now available through the embedded <code>ClientAuthentication</code> API (<a href="https://redirect.github.com/nats-io/nats-server/issues/8217">#8217</a>)</li> </ul> <h3>Fixed</h3> <p>General</p> <ul> <li>A race condition when handling subscription interest over routes has been fixed (<a href="https://redirect.github.com/nats-io/nats-server/issues/8235">#8235</a>)</li> <li>Potential protocol-level corruption from rewriting <code>$JS.ACK</code> subjects has been fixed (<a href="https://redirect.github.com/nats-io/nats-server/issues/8242">#8242</a>)</li> <li>Potential protocol-level corruption from buffer misuse in compressed WebSocket clients has been fixed (<a href="https://redirect.github.com/nats-io/nats-server/issues/8244">#8244</a>)</li> <li>The <code>/accstatz</code> monitoring endpoint no longer omits accounts with only leaf connections (<a href="https://redirect.github.com/nats-io/nats-server/issues/8252">#8252</a>)</li> </ul> <p>JetStream</p> <ul> <li>Fixed a case where Raft peers were not correctly tracked after an inactivity stall during catchup (<a href="https://redirect.github.com/nats-io/nats-server/issues/8226">#8226</a>)</li> <li>Quorum needed is now calculated correctly when bootstrapping the metalayer when gateway URLs resolve to multiple IP addresses (<a href="https://redirect.github.com/nats-io/nats-server/issues/8238">#8238</a>)</li> <li>The filestore no longer performs a block skip check on streams with extremely high subject counts, as it could result in runaway CPU usage (<a href="https://redirect.github.com/nats-io/nats-server/issues/8227">#8227</a>)</li> <li>Fixed a case where the filestore would not release a lock after handling a write error (<a href="https://redirect.github.com/nats-io/nats-server/issues/8232">#8232</a>)</li> <li>Purge operations on both file and memory stores are now more consistent with each other (<a href="https://redirect.github.com/nats-io/nats-server/issues/8241">#8241</a>)</li> <li>Fixed a case where the consumer lock would not release a lock after handling a start sequence error (<a href="https://redirect.github.com/nats-io/nats-server/issues/8230">#8230</a>)</li> <li>Counter streams and message schedules now have configuration constraints applied to prevent incorrect usage patterns (<a href="https://redirect.github.com/nats-io/nats-server/issues/8240">#8240</a>)</li> <li>Improved stream and consumer scale down behaviour consistency (<a href="https://redirect.github.com/nats-io/nats-server/issues/8253">#8253</a>)</li> <li>Fixed an issue where the per-subject state last block was not stored correctly with a max messages per subject limit of 1 (<a href="https://redirect.github.com/nats-io/nats-server/issues/8254">#8254</a>)</li> <li>Fixed a drift that could occur in the peer sets after a peer remove of an online node (<a href="https://redirect.github.com/nats-io/nats-server/issues/8258">#8258</a>)</li> </ul> <h3>Complete Changes</h3> <p><a href="https://github.com/nats-io/nats-server/compare/v2.14.1...v2.14.2">https://github.com/nats-io/nats-server/compare/v2.14.1...v2.14.2</a></p> <h2>Release v2.14.2-RC.1</h2> <h2>Changelog</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/nats-io/nats-server/commit/1d065926bb99ed14ebe9cf6a21529d28310fc8d3"><code>1d06592</code></a> Release v2.14.2</li> <li><a href="https://github.com/nats-io/nats-server/commit/4e1aefa11412f699f6e31549ea215389824d4c07"><code>4e1aefa</code></a> Cherry-picks for v2.14.2 (<a href="https://redirect.github.com/nats-io/nats-server/issues/8256">#8256</a>)</li> <li><a href="https://github.com/nats-io/nats-server/commit/ac092ff7c60aa4a0fa3f466198aa89d58bd15f47"><code>ac092ff</code></a> Update dependencies</li> <li><a href="https://github.com/nats-io/nats-server/commit/01e589d49a512276adfa9f60699560c5be63bfd5"><code>01e589d</code></a> [FIXED] Peer set desync/re-add after stream peer-remove</li> <li><a href="https://github.com/nats-io/nats-server/commit/3d122e82432917c2e4395523a33e929cc71ec5ca"><code>3d122e8</code></a> De-flake TestJetStreamConsumerPrioritized</li> <li><a href="https://github.com/nats-io/nats-server/commit/3836d96692a7b9d1405ea404161e6a7f48ba3115"><code>3836d96</code></a> [FIXED] Initial MaxMsgsPerSubject update not enforced</li> <li><a href="https://github.com/nats-io/nats-server/commit/92cf2e314fe7ef38f3ac6223f874efa0f58819e0"><code>92cf2e3</code></a> [FIXED] Filestore only stores last block when MaxMsgsPerSubject 1</li> <li><a href="https://github.com/nats-io/nats-server/commit/3288b4fe279b6f689dc985758add443acb9095db"><code>3288b4f</code></a> (2.14) [IMPROVED] Remove redundant error check in filestore</li> <li><a href="https://github.com/nats-io/nats-server/commit/6ea46d54029a662ae3545da70b01c32976f6cdbc"><code>6ea46d5</code></a> [FIXED] Stream and consumer scale down consistency</li> <li><a href="https://github.com/nats-io/nats-server/commit/5edd91c01a32945e1a4837a104c59114972c9bfb"><code>5edd91c</code></a> [FIXED] AccountStatz omits accounts with only leaf connections</li> <li>Additional commits viewable in <a href="https://github.com/nats-io/nats-server/compare/v2.12.8...v2.14.2">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> |
||
|
|
dc6202f7da |
chore: bump github.com/prometheus/common from 0.67.5 to 0.68.1 (#26041)
Bumps [github.com/prometheus/common](https://github.com/prometheus/common) from 0.67.5 to 0.68.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/prometheus/common/releases">github.com/prometheus/common's releases</a>.</em></p> <blockquote> <h2>v0.68.1</h2> <h2>What's Changed</h2> <ul> <li>build(deps): bump golang.org/x/net from 0.52.0 to 0.53.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/prometheus/common/pull/903">prometheus/common#903</a></li> <li>build(deps): bump golang.org/x/net from 0.53.0 to 0.55.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/prometheus/common/pull/914">prometheus/common#914</a></li> <li>Synchronize common files from prometheus/prometheus by <a href="https://github.com/prombot"><code>@prombot</code></a> in <a href="https://redirect.github.com/prometheus/common/pull/915">prometheus/common#915</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/prometheus/common/compare/v0.68.0...v0.68.1">https://github.com/prometheus/common/compare/v0.68.0...v0.68.1</a></p> <h2>v0.68.0</h2> <h2>What's Changed</h2> <ul> <li>Synchronize common files from prometheus/prometheus by <a href="https://github.com/prombot"><code>@prombot</code></a> in <a href="https://redirect.github.com/prometheus/common/pull/873">prometheus/common#873</a></li> <li>Synchronize common files from prometheus/prometheus by <a href="https://github.com/prombot"><code>@prombot</code></a> in <a href="https://redirect.github.com/prometheus/common/pull/874">prometheus/common#874</a></li> <li>build(deps): bump github.com/golang-jwt/jwt/v5 from 5.3.0 to 5.3.1 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/prometheus/common/pull/879">prometheus/common#879</a></li> <li>build(deps): bump golang.org/x/net from 0.48.0 to 0.49.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/prometheus/common/pull/878">prometheus/common#878</a></li> <li>Synchronize common files from prometheus/prometheus by <a href="https://github.com/prombot"><code>@prombot</code></a> in <a href="https://redirect.github.com/prometheus/common/pull/875">prometheus/common#875</a></li> <li>Synchronize common files from prometheus/prometheus by <a href="https://github.com/prombot"><code>@prombot</code></a> in <a href="https://redirect.github.com/prometheus/common/pull/880">prometheus/common#880</a></li> <li>Remove logic adding unit to metrics name by <a href="https://github.com/vesari"><code>@vesari</code></a> in <a href="https://redirect.github.com/prometheus/common/pull/877">prometheus/common#877</a></li> <li>Synchronize common files from prometheus/prometheus by <a href="https://github.com/prombot"><code>@prombot</code></a> in <a href="https://redirect.github.com/prometheus/common/pull/881">prometheus/common#881</a></li> <li>Update for Go 1.26 by <a href="https://github.com/SuperQ"><code>@SuperQ</code></a> in <a href="https://redirect.github.com/prometheus/common/pull/883">prometheus/common#883</a></li> <li>build(deps): bump golang.org/x/net from 0.49.0 to 0.51.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/prometheus/common/pull/882">prometheus/common#882</a></li> <li>version: Add a slog helper by <a href="https://github.com/SuperQ"><code>@SuperQ</code></a> in <a href="https://redirect.github.com/prometheus/common/pull/886">prometheus/common#886</a></li> <li>Remove Arthur from maintainers list by <a href="https://github.com/ArthurSens"><code>@ArthurSens</code></a> in <a href="https://redirect.github.com/prometheus/common/pull/885">prometheus/common#885</a></li> <li>Synchronize common files from prometheus/prometheus by <a href="https://github.com/prombot"><code>@prombot</code></a> in <a href="https://redirect.github.com/prometheus/common/pull/895">prometheus/common#895</a></li> <li>Synchronize common files from prometheus/prometheus by <a href="https://github.com/prombot"><code>@prombot</code></a> in <a href="https://redirect.github.com/prometheus/common/pull/896">prometheus/common#896</a></li> <li>config: change NewOAuth2RoundTripper to accept variadic HTTPClientOption by <a href="https://github.com/alliasgher"><code>@alliasgher</code></a> in <a href="https://redirect.github.com/prometheus/common/pull/898">prometheus/common#898</a></li> <li>config: guard against nil oauth2 credential in RoundTrip by <a href="https://github.com/alliasgher"><code>@alliasgher</code></a> in <a href="https://redirect.github.com/prometheus/common/pull/897">prometheus/common#897</a></li> <li>build(deps): bump golang.org/x/net from 0.51.0 to 0.52.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/prometheus/common/pull/890">prometheus/common#890</a></li> <li>build(deps): bump go.yaml.in/yaml/v2 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/common/pull/891">prometheus/common#891</a></li> <li>build(deps): bump golang.org/x/oauth2 from 0.34.0 to 0.36.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/prometheus/common/pull/892">prometheus/common#892</a></li> <li>Move interface assertions to a test file by <a href="https://github.com/msiegen"><code>@msiegen</code></a> in <a href="https://redirect.github.com/prometheus/common/pull/839">prometheus/common#839</a></li> <li>fix(http_config): fix client cert rotation when no CA is configured by <a href="https://github.com/machine424"><code>@machine424</code></a> in <a href="https://redirect.github.com/prometheus/common/pull/908">prometheus/common#908</a></li> <li>Remove CircleCI by <a href="https://github.com/ArthurSens"><code>@ArthurSens</code></a> in <a href="https://redirect.github.com/prometheus/common/pull/910">prometheus/common#910</a></li> <li>Fix: apply DialContextFunc to OAuth2 token-fetch transport by <a href="https://github.com/yuri-tceretian"><code>@yuri-tceretian</code></a> in <a href="https://redirect.github.com/prometheus/common/pull/911">prometheus/common#911</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/alliasgher"><code>@alliasgher</code></a> made their first contribution in <a href="https://redirect.github.com/prometheus/common/pull/898">prometheus/common#898</a></li> <li><a href="https://github.com/msiegen"><code>@msiegen</code></a> made their first contribution in <a href="https://redirect.github.com/prometheus/common/pull/839">prometheus/common#839</a></li> <li><a href="https://github.com/machine424"><code>@machine424</code></a> made their first contribution in <a href="https://redirect.github.com/prometheus/common/pull/908">prometheus/common#908</a></li> <li><a href="https://github.com/yuri-tceretian"><code>@yuri-tceretian</code></a> made their first contribution in <a href="https://redirect.github.com/prometheus/common/pull/911">prometheus/common#911</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/prometheus/common/compare/v0.67.5...v0.68.0">https://github.com/prometheus/common/compare/v0.67.5...v0.68.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/prometheus/common/commit/212057321e897d625d07379aaddaca01afca7710"><code>2120573</code></a> Update common Prometheus files (<a href="https://redirect.github.com/prometheus/common/issues/915">#915</a>)</li> <li><a href="https://github.com/prometheus/common/commit/228386adfe1e9c8ede570fbca47782a9abca1a35"><code>228386a</code></a> build(deps): bump golang.org/x/net from 0.53.0 to 0.55.0 (<a href="https://redirect.github.com/prometheus/common/issues/914">#914</a>)</li> <li><a href="https://github.com/prometheus/common/commit/b8c88b4866403159e523c588dc7563b0f78c0418"><code>b8c88b4</code></a> build(deps): bump golang.org/x/net from 0.52.0 to 0.53.0 (<a href="https://redirect.github.com/prometheus/common/issues/903">#903</a>)</li> <li><a href="https://github.com/prometheus/common/commit/1e0ae832fb26a2c20c2c0d6ee1289111c668be18"><code>1e0ae83</code></a> config: apply DialContextFunc to OAuth2 token-fetch transport (<a href="https://redirect.github.com/prometheus/common/issues/911">#911</a>)</li> <li><a href="https://github.com/prometheus/common/commit/b51d01ba2175d103309dcee11f6c01bd03487a64"><code>b51d01b</code></a> Remove CircleCI (<a href="https://redirect.github.com/prometheus/common/issues/910">#910</a>)</li> <li><a href="https://github.com/prometheus/common/commit/0f3c348807322ea84d92fc7688b1b37a08e17d1f"><code>0f3c348</code></a> Merge pull request <a href="https://redirect.github.com/prometheus/common/issues/908">#908</a> from machine424/ttlsco</li> <li><a href="https://github.com/prometheus/common/commit/732a9cf781621a8d8f895ef933b78cf4e9f5d6af"><code>732a9cf</code></a> fix(http_config): fix client cert rotation when no CA is configured</li> <li><a href="https://github.com/prometheus/common/commit/ce9215c53d8c8e507c5f72a69d80568c072be3d9"><code>ce9215c</code></a> Move interface assertions to a test file (<a href="https://redirect.github.com/prometheus/common/issues/839">#839</a>)</li> <li><a href="https://github.com/prometheus/common/commit/1ba5ed78ffdaf199c6dded3ff8ac88edbdb53712"><code>1ba5ed7</code></a> build(deps): bump golang.org/x/oauth2 from 0.34.0 to 0.36.0 (<a href="https://redirect.github.com/prometheus/common/issues/892">#892</a>)</li> <li><a href="https://github.com/prometheus/common/commit/8f8ada69df73ad76cabef710856070a42ef420c0"><code>8f8ada6</code></a> build(deps): bump go.yaml.in/yaml/v2 from 2.4.3 to 2.4.4 (<a href="https://redirect.github.com/prometheus/common/issues/891">#891</a>)</li> <li>Additional commits viewable in <a href="https://github.com/prometheus/common/compare/v0.67.5...v0.68.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) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
02ffd456d1 |
chore: bump github.com/aws/smithy-go from 1.25.1 to 1.27.0 (#26043)
Bumps [github.com/aws/smithy-go](https://github.com/aws/smithy-go) from 1.25.1 to 1.27.0. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/aws/smithy-go/blob/main/CHANGELOG.md">github.com/aws/smithy-go's changelog</a>.</em></p> <blockquote> <h1>Release (2026-06-02)</h1> <h2>General Highlights</h2> <ul> <li><strong>Dependency Update</strong>: Updated to the latest SDK module versions</li> </ul> <h2>Module Highlights</h2> <ul> <li><code>github.com/aws/smithy-go</code>: v1.27.0 <ul> <li><strong>Feature</strong>: Add APIs for schema-based serialization.</li> <li><strong>Feature</strong>: Add support for all current AWS and Smithy protocols.</li> <li><strong>Bug Fix</strong>: Enforce max nesting depth of 128 on CBOR payloads.</li> </ul> </li> <li><code>github.com/aws/smithy-go/aws-http-auth</code>: <a href="https://github.com/aws/smithy-go/blob/main/aws-http-auth/CHANGELOG.md#v120-2026-06-02">v1.2.0</a> <ul> <li><strong>Feature</strong>: Add event stream signer.</li> </ul> </li> </ul> <h1>Release (2026-05-27)</h1> <h2>General Highlights</h2> <ul> <li><strong>Dependency Update</strong>: Updated to the latest SDK module versions</li> </ul> <h2>Module Highlights</h2> <ul> <li><code>github.com/aws/smithy-go</code>: v1.26.0 <ul> <li><strong>Feature</strong>: Add StringSlice to endpoint rulesfn.</li> </ul> </li> </ul> <h1>Release (2026-04-23)</h1> <h2>General Highlights</h2> <ul> <li><strong>Dependency Update</strong>: Updated to the latest SDK module versions</li> </ul> <h2>Module Highlights</h2> <ul> <li><code>github.com/aws/smithy-go</code>: v1.25.1 <ul> <li><strong>Bug Fix</strong>: Fixed a memory leak in the LRU cache implementation used by some AWS services.</li> </ul> </li> </ul> <h1>Release (2026-04-15)</h1> <h2>General Highlights</h2> <ul> <li><strong>Dependency Update</strong>: Updated to the latest SDK module versions</li> </ul> <h2>Module Highlights</h2> <ul> <li><code>github.com/aws/smithy-go</code>: v1.25.0 <ul> <li><strong>Feature</strong>: Add support for endpointBdd trait</li> </ul> </li> </ul> <h1>Release (2026-04-02)</h1> <h2>General Highlights</h2> <ul> <li><strong>Dependency Update</strong>: Updated to the latest SDK module versions</li> </ul> <h2>Module Highlights</h2> <ul> <li><code>github.com/aws/smithy-go</code>: v1.24.3 <ul> <li><strong>Bug Fix</strong>: Add additional sigv4 configuration.</li> </ul> </li> <li><code>github.com/aws/smithy-go/aws-http-auth</code>: <a href="https://github.com/aws/smithy-go/blob/main/aws-http-auth/CHANGELOG.md#v113-2026-04-02">v1.1.3</a> <ul> <li><strong>Bug Fix</strong>: Add additional sigv4 configuration.</li> </ul> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/aws/smithy-go/commit/3f6ece24dd0646e1f43ce05d980bcb4880a6e7fe"><code>3f6ece2</code></a> Release 2026-06-02</li> <li><a href="https://github.com/aws/smithy-go/commit/3432807d26fd8d74013bd20d7d4c56ff379e2e16"><code>3432807</code></a> Revert "changelog"</li> <li><a href="https://github.com/aws/smithy-go/commit/9663ed6253396a37d3cca9e37a9410118a370bc1"><code>9663ed6</code></a> changelog</li> <li><a href="https://github.com/aws/smithy-go/commit/bcd9f540477b856423b2a8f679574df8026a5dbe"><code>bcd9f54</code></a> enforce a max nesting depth of 128 on cbor payloads (<a href="https://redirect.github.com/aws/smithy-go/issues/670">#670</a>)</li> <li><a href="https://github.com/aws/smithy-go/commit/ff093e96647027be14e7079a03359bc8c80d6b6f"><code>ff093e9</code></a> changelog</li> <li><a href="https://github.com/aws/smithy-go/commit/1db7cb38af94cbdbf000a31a56f5a1d20191fa68"><code>1db7cb3</code></a> hold off on unsafe string for now</li> <li><a href="https://github.com/aws/smithy-go/commit/473b1947c03deea1898ffd01fbba8de765d5eed7"><code>473b194</code></a> update README again</li> <li><a href="https://github.com/aws/smithy-go/commit/6620de4fc429f2553f793bb170a997e6c9d2e439"><code>6620de4</code></a> update README</li> <li><a href="https://github.com/aws/smithy-go/commit/22c5357d5d20fd4262b62ca7bb3530d7759a79bf"><code>22c5357</code></a> introduce schema-based serialization (<a href="https://redirect.github.com/aws/smithy-go/issues/666">#666</a>)</li> <li><a href="https://github.com/aws/smithy-go/commit/6857390fd160b416d0e369dc9dc5c2b3736178fc"><code>6857390</code></a> fix: remove deprecated io/ioutil from codegen templates (<a href="https://redirect.github.com/aws/smithy-go/issues/669">#669</a>)</li> <li>Additional commits viewable in <a href="https://github.com/aws/smithy-go/compare/v1.25.1...v1.27.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> |
||
|
|
3ffccf38ac |
chore: bump github.com/jedib0t/go-pretty/v6 from 6.7.1 to 6.8.0 (#26047)
Bumps [github.com/jedib0t/go-pretty/v6](https://github.com/jedib0t/go-pretty) from 6.7.1 to 6.8.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/jedib0t/go-pretty/releases">github.com/jedib0t/go-pretty/v6's releases</a>.</em></p> <blockquote> <h2>v6.8.0</h2> <h2>What's Changed</h2> <ul> <li>progress: fix speed decay on done trackers and log overwrite; fixes <a href="https://redirect.github.com/jedib0t/go-pretty/issues/405">#405</a> by <a href="https://github.com/jedib0t"><code>@jedib0t</code></a> in <a href="https://redirect.github.com/jedib0t/go-pretty/pull/406">jedib0t/go-pretty#406</a></li> <li>fix: wrap wide runes when wrapLen is odd in WrapHard by <a href="https://github.com/koriyoshi2041"><code>@koriyoshi2041</code></a> in <a href="https://redirect.github.com/jedib0t/go-pretty/pull/408">jedib0t/go-pretty#408</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/koriyoshi2041"><code>@koriyoshi2041</code></a> made their first contribution in <a href="https://redirect.github.com/jedib0t/go-pretty/pull/408">jedib0t/go-pretty#408</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/jedib0t/go-pretty/compare/v6.7.10...v6.8.0">https://github.com/jedib0t/go-pretty/compare/v6.7.10...v6.8.0</a></p> <h2>v6.7.10</h2> <h2>What's Changed</h2> <ul> <li>Fix panic on text align with unicode by <a href="https://github.com/edznux-dd"><code>@edznux-dd</code></a> in <a href="https://redirect.github.com/jedib0t/go-pretty/pull/404">jedib0t/go-pretty#404</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/edznux-dd"><code>@edznux-dd</code></a> made their first contribution in <a href="https://redirect.github.com/jedib0t/go-pretty/pull/404">jedib0t/go-pretty#404</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/jedib0t/go-pretty/compare/v6.7.9...v6.7.10">https://github.com/jedib0t/go-pretty/compare/v6.7.9...v6.7.10</a></p> <h2>v6.7.9</h2> <h2>What's Changed</h2> <ul> <li>table: markdown padding for human-friendly output; fixes <a href="https://redirect.github.com/jedib0t/go-pretty/issues/402">#402</a> by <a href="https://github.com/jedib0t"><code>@jedib0t</code></a> in <a href="https://redirect.github.com/jedib0t/go-pretty/pull/403">jedib0t/go-pretty#403</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/jedib0t/go-pretty/compare/v6.7.8...v6.7.9">https://github.com/jedib0t/go-pretty/compare/v6.7.8...v6.7.9</a></p> <h2>v6.7.8</h2> <h2>What's Changed</h2> <ul> <li>progress: SortByIndex for better control of sorting by <a href="https://github.com/jedib0t"><code>@jedib0t</code></a> in <a href="https://redirect.github.com/jedib0t/go-pretty/pull/398">jedib0t/go-pretty#398</a></li> <li>progress: address race conditions in render/stop/trackers; fixes 399 by <a href="https://github.com/jedib0t"><code>@jedib0t</code></a> in <a href="https://redirect.github.com/jedib0t/go-pretty/pull/401">jedib0t/go-pretty#401</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/jedib0t/go-pretty/compare/v6.7.7...v6.7.8">https://github.com/jedib0t/go-pretty/compare/v6.7.7...v6.7.8</a></p> <h2>v6.7.7</h2> <h2>What's Changed</h2> <ul> <li>table: fix border with no data rows (original behavior) by <a href="https://github.com/jedib0t"><code>@jedib0t</code></a> in <a href="https://redirect.github.com/jedib0t/go-pretty/pull/397">jedib0t/go-pretty#397</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/jedib0t/go-pretty/compare/v6.7.6...v6.7.7">https://github.com/jedib0t/go-pretty/compare/v6.7.6...v6.7.7</a></p> <h2>v6.7.6</h2> <h2>What's Changed</h2> <ul> <li>text: fix alignment issues with box/block chars by <a href="https://github.com/jedib0t"><code>@jedib0t</code></a> in <a href="https://redirect.github.com/jedib0t/go-pretty/pull/389">jedib0t/go-pretty#389</a></li> <li>table: FilterBy: add row filtering support by <a href="https://github.com/jedib0t"><code>@jedib0t</code></a> in <a href="https://redirect.github.com/jedib0t/go-pretty/pull/390">jedib0t/go-pretty#390</a></li> <li>table: split style.go into individual files by <a href="https://github.com/jedib0t"><code>@jedib0t</code></a> in <a href="https://redirect.github.com/jedib0t/go-pretty/pull/392">jedib0t/go-pretty#392</a></li> <li>table: fix border with no data rows; fixes <a href="https://redirect.github.com/jedib0t/go-pretty/issues/395">#395</a> by <a href="https://github.com/jedib0t"><code>@jedib0t</code></a> in <a href="https://redirect.github.com/jedib0t/go-pretty/pull/396">jedib0t/go-pretty#396</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/jedib0t/go-pretty/compare/v6.7.5...v6.7.6">https://github.com/jedib0t/go-pretty/compare/v6.7.5...v6.7.6</a></p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/jedib0t/go-pretty/commit/45fb00d043b710d670b9e921f9e9c58111460522"><code>45fb00d</code></a> text: wrap wide runes when wrapLen is odd in WrapHard (<a href="https://redirect.github.com/jedib0t/go-pretty/issues/408">#408</a>)</li> <li><a href="https://github.com/jedib0t/go-pretty/commit/ad1754989240b73f22b3f4911dd5d3d40b7c22c8"><code>ad17549</code></a> progress: fix speed decay on done trackers and log overwrite; fixes <a href="https://redirect.github.com/jedib0t/go-pretty/issues/405">#405</a> (<a href="https://redirect.github.com/jedib0t/go-pretty/issues/406">#406</a>)</li> <li><a href="https://github.com/jedib0t/go-pretty/commit/66563fd9a0aa2096db65417e9cb0b5841957d8aa"><code>66563fd</code></a> text: fix panic on align with unicode (<a href="https://redirect.github.com/jedib0t/go-pretty/issues/404">#404</a>)</li> <li><a href="https://github.com/jedib0t/go-pretty/commit/017a359e50d97a9f5ed869ceed4b2e23acdea9de"><code>017a359</code></a> table: markdown padding for human-friendly output; fixes <a href="https://redirect.github.com/jedib0t/go-pretty/issues/402">#402</a> (<a href="https://redirect.github.com/jedib0t/go-pretty/issues/403">#403</a>)</li> <li><a href="https://github.com/jedib0t/go-pretty/commit/f05e1de9926ede0af62f680829a87133a0ad5fd7"><code>f05e1de</code></a> progress: address race conditions in render/stop/trackers; fixes 399 (<a href="https://redirect.github.com/jedib0t/go-pretty/issues/401">#401</a>)</li> <li><a href="https://github.com/jedib0t/go-pretty/commit/1cebbc5ded6de0bb3419c7d0bc34abaa97f389f4"><code>1cebbc5</code></a> progress: SortByIndex for better control of sorting (<a href="https://redirect.github.com/jedib0t/go-pretty/issues/398">#398</a>)</li> <li><a href="https://github.com/jedib0t/go-pretty/commit/b0a2ab976f5d85d1368824a904e645a636c1b3c8"><code>b0a2ab9</code></a> table: fix border with no data rows (original behavior) (<a href="https://redirect.github.com/jedib0t/go-pretty/issues/397">#397</a>)</li> <li><a href="https://github.com/jedib0t/go-pretty/commit/73867ddb662b6ce805252e910c4922548f0fd337"><code>73867dd</code></a> table: fix border with no data rows; fixes <a href="https://redirect.github.com/jedib0t/go-pretty/issues/395">#395</a> (<a href="https://redirect.github.com/jedib0t/go-pretty/issues/396">#396</a>)</li> <li><a href="https://github.com/jedib0t/go-pretty/commit/b2eda901ed06554942e31e54ab28af675494291a"><code>b2eda90</code></a> table: split style.go into individual files (<a href="https://redirect.github.com/jedib0t/go-pretty/issues/392">#392</a>)</li> <li><a href="https://github.com/jedib0t/go-pretty/commit/0b7174f7b48136ba1bf9e59679f18e88571b6e31"><code>0b7174f</code></a> README.me: link to package README.md instead of folder (<a href="https://redirect.github.com/jedib0t/go-pretty/issues/391">#391</a>)</li> <li>Additional commits viewable in <a href="https://github.com/jedib0t/go-pretty/compare/v6.7.1...v6.8.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> |
||
|
|
62338f3f08 |
chore: bump github.com/nats-io/nats.go from 1.51.0 to 1.52.0 (#26044)
Bumps [github.com/nats-io/nats.go](https://github.com/nats-io/nats.go) from 1.51.0 to 1.52.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/nats-io/nats.go/releases">github.com/nats-io/nats.go's releases</a>.</em></p> <blockquote> <h2>Release v1.52.0</h2> <h2>Changelog</h2> <p>This release focuses on 2.14 nats-server features support.</p> <h3>ADDED</h3> <ul> <li>JetStream: <ul> <li>Added fast batch stream config field (<a href="https://redirect.github.com/nats-io/nats.go/issues/2052">#2052</a>)</li> <li>Added message scheduling headers and publish opts (<a href="https://redirect.github.com/nats-io/nats.go/issues/2051">#2051</a>)</li> <li>Updated <code>StreamConfig</code> with <code>Consumer</code> field and added <code>AckFlowControlPolicy</code> (<a href="https://redirect.github.com/nats-io/nats.go/issues/2070">#2070</a>)</li> <li>Added reset consumer API (<a href="https://redirect.github.com/nats-io/nats.go/issues/2069">#2069</a>)</li> </ul> </li> </ul> <h3>FIXED</h3> <ul> <li>Core NATS: <ul> <li>Fix Subscription.StatusChanged channel closure on Closed Subscription. Thanks <a href="https://github.com/nithimani38-prog"><code>@nithimani38-prog</code></a> for the contribution (<a href="https://redirect.github.com/nats-io/nats.go/issues/2034">#2034</a>)</li> </ul> </li> </ul> <h3>IMPROVED</h3> <ul> <li>Fixed Flaky JS cluster tests (<a href="https://redirect.github.com/nats-io/nats.go/issues/2062">#2062</a>)</li> </ul> <h3>Complete Changes</h3> <p><a href="https://github.com/nats-io/nats.go/compare/v1.51.0...v1.52.0">https://github.com/nats-io/nats.go/compare/v1.51.0...v1.52.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/nats-io/nats.go/commit/e9f2a36e31b1065f69b252ea090c01e8869eab0b"><code>e9f2a36</code></a> Release v1.52.0 (<a href="https://redirect.github.com/nats-io/nats.go/issues/2074">#2074</a>)</li> <li><a href="https://github.com/nats-io/nats.go/commit/609274f8c57b65c9d11b01b008b0e40fadfc9d5b"><code>609274f</code></a> [FIXED] Subscription.StatusChanged channel closure on Closed Subscription (<a href="https://redirect.github.com/nats-io/nats.go/issues/2">#2</a>...</li> <li><a href="https://github.com/nats-io/nats.go/commit/f7cde748abc86c2981cb1391ca828fceea02af66"><code>f7cde74</code></a> [IMPROVED] Use latest release build for badge in README (<a href="https://redirect.github.com/nats-io/nats.go/issues/2064">#2064</a>)</li> <li><a href="https://github.com/nats-io/nats.go/commit/c7476ea556818d561945e78863adab422f00de03"><code>c7476ea</code></a> [IMPROVED] Reject empty consumer info in CONSUMER.RESET response (<a href="https://redirect.github.com/nats-io/nats.go/issues/2072">#2072</a>)</li> <li><a href="https://github.com/nats-io/nats.go/commit/8fde36fd10a34224e22f4f8a8ad1f61ecaedd18f"><code>8fde36f</code></a> [ADDED] ResetConsumer JetStream API (<a href="https://redirect.github.com/nats-io/nats.go/issues/2069">#2069</a>)</li> <li><a href="https://github.com/nats-io/nats.go/commit/dcfd0fcc6f63c4a2e4436e5aa3ecd4e1dcc598df"><code>dcfd0fc</code></a> [ADDED] StreamSource.Consumer config field and AckFlowControlPolicy (<a href="https://redirect.github.com/nats-io/nats.go/issues/2070">#2070</a>)</li> <li><a href="https://github.com/nats-io/nats.go/commit/7a28503b5d5d633d2caaa2639571e5f19c8eebec"><code>7a28503</code></a> [ADDED] Publish options and consts for message scheduling (<a href="https://redirect.github.com/nats-io/nats.go/issues/2051">#2051</a>)</li> <li><a href="https://github.com/nats-io/nats.go/commit/6c91a518e305e56c6481cf63ba52416300b7f5d3"><code>6c91a51</code></a> [ADDED] AllowBatchPublish stream config field (<a href="https://redirect.github.com/nats-io/nats.go/issues/2052">#2052</a>)</li> <li><a href="https://github.com/nats-io/nats.go/commit/a614d0be24c7e9a22a406572bee44d897cff27c3"><code>a614d0b</code></a> [FIXED] Flaky JS cluster tests due to race in setupJSClusterWithSize (<a href="https://redirect.github.com/nats-io/nats.go/issues/2062">#2062</a>)</li> <li>See full diff in <a href="https://github.com/nats-io/nats.go/compare/v1.51.0...v1.52.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> |
||
|
|
167ac7b879 | feat: add nats experiment (#25703) | ||
|
|
c895ab7e5b |
revert(site): downgrade vite to 8.0.10, plugin-react to 6.0.1, vitest to 4.1.5 (#26034)
Reverts the version bumps from #25951. Vite 8.0.14's optimizer emits a broken pre-bundled `@mui/material/styles` chunk that references `init_emotion_react_browser_development_esm` without importing it from the sibling `@emotion/react` chunk. Loading any page that imports MUI styles fails immediately in dev with: ``` ReferenceError: init_emotion_react_browser_development_esm is not defined at /node_modules/.vite/deps/styles-<hash>.js ``` <sub>Coder Agents on behalf of @Emyrk.</sub> |
||
|
|
5b692bf1cc |
test: rename ExpectMatchContext to ExpectMatch (#25998)
Cleans the last few instances of ExpectMatch that didn't use the new `(ctx, ...)` variant, then deletes the deprecated method and renames `ExpectMatchContext` to drop the `Context` suffix. |
||
|
|
7d7cc27581 |
test: batch 07 of refactoring CLI tests not to use PTY (#25997)
Closes [coder/internal#1400](https://github.com/coder/internal/issues/1400) Final batch of refactored CLI tests to avoid creating PTYs. |
||
|
|
88d9ce57e1 |
chore: bump the coder-modules group across 6 directories with 2 updates (#26031)
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> |
||
|
|
48930dd232 |
docs: highlight that user secrets can be managed from the dashboard (#26030)
Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com> |
||
|
|
b9c3eea5a1 | test(cli): scope retryWithInterval logger per subtest (#26023) | ||
|
|
f1ebc42859 |
refactor(coderd/rbac): enumerate org-member and org-service-account perms (#25928)
`organization-member` was created from `allPermsExcept(...)`. This is changed to an explicit enumeration of capabilities. - New resources no longer auto-grant to org members or service accounts. - Adding one now requires an explicit decision in `coderd/rbac/roles.go`. |
||
|
|
96e3a64b12 |
feat: add AI Gateway coderd key CRUD endpoints (#25565)
Adds create, list and delete endpoints for AI Gateway keys. Those keys are used to authenticate into Coderd. All endpoints require Owner permission. |
||
|
|
6ef687cdfb | chore: remove Nix dev image from dogfood template and pipeline (#26022) | ||
|
|
6c230d6e0f |
chore(.github): remove fly.io workspace-proxy deployment (#25126)
Removes the fly.io-based workspace-proxy deployment from CI. The dogfood
workspace proxies in Paris (`cdg`), Sydney (`syd`), and Johannesburg
(`jnb`) are no longer deployed via fly.io, and the São Paulo proxy
session-token secret was already unreferenced in `deploy.yaml`.
## Changes
- Deleted `.github/fly-wsproxies/{paris,sydney,jnb}-coder.toml`.
- Removed the `deploy-wsproxies` job from
`.github/workflows/deploy.yaml`,
along with its `workflow_call.secrets` block declaring the five `FLY_*`
inputs.
- Removed the matching `secrets:` pass-through from the `deploy` job in
`.github/workflows/ci.yaml`.
The Kubernetes/EKS dogfood deploy job and `should_deploy.sh` logic are
unchanged.
## Repository secrets that can now be deleted
Once this lands, the following GitHub Actions repository secrets are no
longer referenced anywhere in this repo and are safe to remove:
- `FLY_API_TOKEN`
- `FLY_PARIS_CODER_PROXY_SESSION_TOKEN`
- `FLY_SYDNEY_CODER_PROXY_SESSION_TOKEN`
- `FLY_JNB_CODER_PROXY_SESSION_TOKEN`
- `FLY_SAO_PAULO_CODER_PROXY_SESSION_TOKEN` (was already passed through
but unused inside `deploy.yaml`)
Worth double-checking they aren't referenced by any other repos / org
workflows before deleting from the org/repo settings.
## Out of scope (intentionally left alone)
- `site/static/icon/fly.io.svg` — region icon, used at runtime for any
user-deployed workspace proxy that picks the fly.io icon.
- `docs/install/other/index.md` — unofficial "Run Coder on Fly.io"
community install entry, unrelated to our CI.
- `site/src/testHelpers/entities.ts` `*.fly.dev.coder.com` strings — UI
test fixtures.
## Validation
- `python3 -c "yaml.safe_load(...)"` on both edited workflows.
- `make pre-commit` ran via the git hook on commit (actionlint,
shellcheck,
typos, helm, markdown, etc. all green).
- Repo-wide grep confirms no remaining `FLY_`, `flyctl`, `fly.toml`, or
`fly-wsproxies` references in `.github/` or `scripts/`.
|
||
|
|
7a84a851ce |
fix(coderd): subscribe to pubsub before accepting websocket in watchChats (#25663)
The watchChats handler called SubscribeWithErr after websocket.Accept, creating a window where clients could trigger events before the subscription was active. Move the subscription before the accept so events accumulate in the pubsub internal queue and drain naturally once the encoder is ready. Fixes CODAGT-480 |
||
|
|
faf0add985 |
test(coderd/coderdtest/oidctest): scope IDP NotFound errors to IDP paths (#25892)
The FakeIDP mux.NotFound handler called t.Errorf for any unrecognized HTTP request, failing the owning test. It also never wrote an HTTP response, so the stale caller got a 200 with an empty body, hiding the problem on the caller side. When the IDP runs as a real HTTP server (WithServing), OS port reuse across concurrent test binaries can route stale connections to the IDP port. The source is enterprise provisionerd reconnects and DERP clients from parallel tests whose coderd servers have shut down. Check whether the NotFound request path starts with a known IDP route prefix (/oauth2/, /.well-known/, /login/, /external-auth-validate/). IDP paths: t.Errorf, logger.Error, and 404 response. Non-IDP paths: t.Logf, logger.Warn, and 421 Misdirected Request response. Both branches now return a proper HTTP error so the offending caller can be traced. |
||
|
|
8b058dc949 |
feat: add coderd_api_websocket_probes_total metric (#25012)
Relates to CODAGT-115 Adds metric `coderd_api_websocket_probes_total`. Every successful heartbeat for a given path will increment the metric. Comparing this with `coderd_api_concurrent_websockets` will give an indication of how many websocket connections are open but in a 'wedged' state (when heartbeats stopped versus when we closed the connection). |
||
|
|
7703e7a26e |
fix: preserve AI provider preset types (#25925)
> Mux created this PR on behalf of Mike. AI provider creation previously collapsed OpenAI-compatible presets like Google and generic OpenAI-compatible providers to `openai`, which lost the backend provider discriminator. Preserve selected provider types in the create payload, keep explicit stored types authoritative when reconstructing edit form values, and add frontend plus backend regressions for the supported preset types. |
||
|
|
8a9580a294 |
fix(site): fix provider link on models page pointing to stale path (#26011)
Fixes https://linear.app/codercom/issue/CODAGT-547 The "Connect a provider" link shown on `/agents/settings/models` when no providers are configured was pointing to `/agents/settings/providers` (a stale duplicate view) instead of `/ai/settings` (the canonical provider configuration page). Audited all frontend source files for references to the stale path. This was the only link; other references to `/ai/settings` already point to the correct page. <details><summary>Generated by Coder Agents</summary> This PR was generated by Coder Agents on behalf of @tracyjohnsonux. </details> --------- Co-authored-by: Jaayden Halko <jaayden@coder.com> |
||
|
|
b49344519b |
test: batch 06 of refactoring CLI tests not to use PTY (#25990)
Part of [coder/internal#1400](https://github.com/coder/internal/issues/1400) Batch of refactored CLI tests to avoid creating PTYs. |
||
|
|
38360518af |
test: batch 05 of refactoring CLI tests not to use PTY (#25984)
Part of [coder/internal#1400](https://github.com/coder/internal/issues/1400) Batch of refactored CLI tests to avoid creating PTYs. |
||
|
|
887ea21237 |
feat: show Spinner before agent logs are rendered (#25820)
related to DEVEX-313 https://github.com/user-attachments/assets/5fb074bd-7ee7-4f11-9c0a-30567cd71abc |
||
|
|
ec19bc41d8 | fix: escape appearance values in HTML output (#25804) |