Commit Graph
100 Commits
Author SHA1 Message Date
Steven Masley b44a421412 chore: update coder/preview to 1.0.8 (#22859) 2026-03-10 12:12:31 -05:00
Steven Masley 537260aa22 fix: early oidc refresh with fake idp tests (#22712)
Wrote unit tests that implement a fake idp to verify the oauth package
actually refreshes the token
2026-03-06 16:51:27 +00:00
Steven Masley c805c8c02c chore: setting time forward for expiration math (#22687)
It was set backwards, which allowed invalid refresh tokens. Making
things worse.
2026-03-06 12:29:54 +00:00
Steven Masley f6b4b7edab ci: remove sqlc push to cloud (#22574)
I left a vestigial piece, whooops
2026-03-03 14:49:00 -06:00
Steven Masley 8ea0c2f3bc ci: remove ci action to push schema to sqlc cloud (#22572)
SQLc cloud no longer exists
2026-03-03 14:21:07 -06:00
Steven Masley f49dea683c chore: prematurely refresh oidc token near expiry during workspace build (#22502)
Closes https://github.com/coder/coder/issues/22429
2026-03-03 18:13:00 +00:00
Steven Masley bca638a498 feat: validate prebuild presets using dynamic parameter validation (#21858)
Prebuilds need to be valid. Before this change, you can push a template
version that's preset will fail when making a prebuild. This PR ensures
all presets that are used for prebuilds are valid
2026-03-03 16:50:18 +00:00
Steven Masley 583e6daaab chore: also proxy coder_session_token headers for websockets (#22499)
When using dev frontend flow
2026-03-02 12:23:28 -06:00
Steven Masley 7bc454eed8 chore: version is 2.31 not 1.31 (#22494) 2026-03-02 16:23:09 +00:00
Steven Masley 21bc185254 doc: add language to mention disruptive nature of cookie host prefix (#22384) 2026-02-27 15:59:01 +00:00
Steven Masley 3353e687e7 chore: use header auth over cookies for agents (#22226)
All non-browser connections should not use cookies
2026-02-25 09:53:41 -06:00
Steven Masley 93e823931b fix: allow sharing ports >9999 (#22273)
Closes https://github.com/coder/coder/issues/22267
2026-02-24 23:46:43 -06:00
Steven Masley 2ed4c7e6df test: fail test and report on init error (#22269)
Closes https://github.com/coder/internal/issues/1353

Does not solve the issue, but the error is currently opaque. This fails
the test when the init fails, hopefully raising up the error.
2026-02-23 12:48:36 -06:00
Steven Masley e2cbf03f85 fix: ensure stopping a workspace before starting it when updating (#22201)
Dynamic parameters were not following the same code path as legacy

Closes https://github.com/coder/coder/issues/20333
2026-02-20 14:21:33 -06:00
Steven Masley 67044d80a0 chore: automatically set 'host-prefix-cookie' in https deployments (#22224)
The feature was never released, so this is not a breaking change
2026-02-20 17:17:50 +00:00
Steven Masley b0f35316da chore!: automatically use secure cookies if using https access-url (#22198)
`--secure-auth-cookie` now automatically sources it's default value from `--access-url`

If the access url uses HTTPS, secure is set to `true`. 
To revert to old behavior, set the value explicitly to `false`
2026-02-20 10:33:37 -06:00
Steven Masley efdaaa2c8f chore: add oidc redirect url to override access url (#21521)
If a deployment has 2 domains, overriding the oidc url allows the oidc
redirect to differ from the access_url

response to https://github.com/coder/coder/discussions/21500

**This config setting is hidden by default**
2026-02-20 09:11:01 -06:00
Steven Masley e5f64eb21d chore: optionally prefix authentication related cookies (#22148)
When the deployment option is enabled auth cookies are prefixed with
`__HOST-`
([info](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Set-Cookie)).

This is all done in a middleware that intercepts all requests and strips
the prefix on incoming request cookies.
2026-02-20 09:01:00 -06:00
Steven Masley 01f06671a1 chore: return 404, not 400 if missing or authz deny (#22069) 2026-02-13 08:19:07 -06:00
Steven Masley 7f7ff9cd40 chore: add dockerignore to ignore build directory (#22053) 2026-02-11 11:52:45 -06:00
Steven Masley d167a977ef test: fix race condition in TestAPI/Delete/OK_with_container_and_subagent (#21982)
Closes https://github.com/coder/internal/issues/1345#event-22592902899
2026-02-07 11:37:54 -06:00
Steven Masley efd98bd93a chore: add template toggle to disable module caching (#21931)
There exists use cases to disable the new module caching behavior of
workspace builds. This was the legacy behavior.
2026-02-05 14:38:55 -06:00
Steven Masley fd00958520 test: drop windows for TestGetModulesArchive due to flakiness (#21897)
Coder is run in a linux container almost always anyway

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

closes https://github.com/coder/internal/issues/1288
2026-02-04 08:29:44 -06:00
Steven Masley b1e18f2398 fix: use dynamic parameter resolution in the cli (#21734)
Uses dynamic parameters EvaluateTemplateVersion vs TemplateVersionRichParameters to determine initial parameter state.

Closes https://github.com/coder/coder/issues/19879
2026-02-03 14:10:49 -06:00
Steven Masley 6759b51cd6 feat: add endpoint to fetch singular org member (#21732) 2026-02-03 12:48:25 -06:00
Steven Masley a16debee76 test: template import should never complete, use Plan over apply (#21895)
Closes https://github.com/coder/internal/issues/1221
2026-02-03 10:16:53 -06:00
Steven Masley 956e123d96 test: fix flakiness around tar block size in test (#21854)
So 1000 bytes and 1001 bytes is both 1024 bytes

Closes
https://github.com/coder/internal/issues/1324#issuecomment-3836984358
2026-02-02 12:58:43 -06:00
Steven Masley 6b3d4377c3 feat: archive modules in size order until limit is hit (#21773)
Archiving modules attempts to save as many modules as it can before it hits the limit. Enabling the template as much as it can, rather than a hard failure.
2026-02-02 09:03:18 -06:00
Steven Masley dfbd541cee chore: move List util out of db2sdk to avoid circular imports (#21733) 2026-01-28 13:07:53 -06:00
Steven Masley 921fad098b chore: make corrupted directories non-fatal (#21707)
From https://github.com/coder/coder/pull/20563#discussion_r2513135196
Closes https://github.com/coder/coder/issues/20751
2026-01-28 11:35:17 -06:00
Steven Masley e13f2a9869 chore: remove extra stop_modules from provisionerd proto (#21706)
Was a duplicate of start_modules

Closes https://github.com/coder/coder/issues/21206
2026-01-28 09:25:47 -06:00
Steven Masley 799b190dee fix: do not enforce managed agent limit for non-task workspaces (#21689)
Only task workspaces have the checks in wsbuilder for violating the
managed agent caps in the license.

Stopped tasks that are resumed with a regular workspace start **still
count as usage**.
2026-01-27 19:01:17 -06:00
Steven Masley e1282b6904 chore: reword unhealthy agents on workspace page depending on the failure (#21622)
Also remove the "restart" button. The language is still there, and the
restart button is already on this page. That button being present had
users clicking it when waiting was the correct solution.

So the "Restart" option is not as pushed.
2026-01-22 11:36:07 -06:00
Steven Masley 1b03202e90 chore: add script to calculate workspace 'on' hours in a given time window (#21505)
Calculates how long each workspace has been "on" during a given time
window defined by "start/stop".
2026-01-21 14:35:37 +00:00
Steven Masley 8d6a202ee4 chore: git ignore jetbrains run configs (#21497)
Jetbrains ide users can save their debug/test run configs to `.run`.
2026-01-14 06:51:35 -06:00
Steven Masley 60b3fd0783 chore!: send modules archive over the proto messages (#21398)
# What this does

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

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

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


# Wire protocol

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

# 🚨  Behavior Change (Breaking Change) 🚨 

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

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

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

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

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

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

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

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

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


# What this does

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

Main PR is: https://github.com/coder/coder/pull/21398
2026-01-09 11:13:16 -06:00
Steven Masley 35f1c44455 test: fix path seperator on windows for unit test (#21382)
Test TestWorkspaceTemplateParamsChange writes a file to disk

Closes https://github.com/coder/internal/issues/1213
2025-12-23 15:13:16 +00:00
Steven Masley 61d7d2983f fix: remove state information from apply (#21373)
Delete builds were not deleting resources as the tf state being sent in the apply request was empty.
State removed from apply request and read from the session instead.
2025-12-22 16:18:53 +00:00
Steven Masley 8fefd91e4a feat!: support PKCE in the oauth2 client's auth/exchange flow (#21215)
**Breaking Change:** Existing oauth apps might now use PKCE. If an
unknown IdP type was being used, and it does not support PKCE, it will
break.

To fix, set the PKCE methods on the external auth to `none`
```
export CODER_EXTERNAL_AUTH_1_PKCE_METHODS=none
```
2025-12-15 17:41:47 +00:00
Steven Masley 3194bcfc9e chore: distinct operations for provisioner's 'parse', 'init', 'plan', 'apply', 'graph' (#21064)
Provisioner steps broken into smaller granular actions.
Changes:
- `ExtractArchive` moved to `init` request (was in `configure`)
- Writing `tfstate` moved to `plan` (was in `configure`)
- Moved most plan/apply outputs to `GraphComplete`
2025-12-15 11:26:41 -06:00
Steven Masley b073357414 chore: fix race condition on aggregating terraform logs (#21067)
I noticed we have a defer to make sure all log output is captured by the
async log handling routine.

```golang
	defer func() {
		_ = outWriter.Close()
		_ = errWriter.Close()
		<-doneOut
		<-doneErr
	}()
```

But `e.timings.aggregate()` compiles the **current** parsed logs. I was
getting some race conditions in testing if the logs did not completely
parse before `aggregate` was called.

So now `aggregate` happens outside the cmd exec function, to make sure
it is completed before logs are accumulated.
2025-12-15 08:52:48 -06:00
Steven Masley c3c059fbc4 chore: fix provisioner scripts shebang for nix users (#21066) 2025-12-02 13:03:21 -06:00
Steven Masley 0c43789f3a test: move TestConvertStateGolden to only linux + mac (#20901)
Windows runners are flaky for golden files
closes https://github.com/coder/internal/issues/1141
2025-11-24 10:25:08 -06:00
Steven Masley cefe07d074 feat: purge expired api keys in dbpurge (#20863)
closes https://github.com/coder/coder/issues/19889

This is in response to a migration in v2.27 that takes very long on deployments with large `api_key` tables.
2025-11-24 10:24:32 -06:00
Steven Masley a61b8bc5ce test: add golden file test for ConvertState (#20832)
Refactoring `ConvertState` is something we should eventually do. This PR
adds a golden file unit test for the output of `ConvertState` (even
errors).

That way if a refactor occurs, we can verify the output is unchanged for
our test cases.
2025-11-21 07:27:20 -06:00
Steven Masley aff208048e feat: fix build timeline to include entire stage timings (#20805)
Measure entire stage durations for each terraform cmd execution
2025-11-19 09:35:33 -06:00
Steven Masley a10c5ff381 chore: protect build timings insert for invalid enums (#20821)
Database insert errors will fail the transaction. So this error is
fatal. Properly return it for a better error call stack, and not just
hiding the error in the logs.
2025-11-19 09:34:19 -06:00
Steven Masley a2728439ff docs: add API key scopes documentation (#20742)
## Description

Adds a brief section to the API & Session Tokens documentation
explaining API key scopes.

## Changes

- Added "API Key Scopes" section to
`docs/admin/users/sessions-tokens.md`
- Includes overview of scope functionality and security benefits
- Documents scope format (`resource:action`) and wildcard usage
- Provides CLI examples for creating scoped tokens
- Lists common scope examples with descriptions

## Motivation

Users need documentation on how to create and use scoped API tokens for
improved security by limiting token permissions to only necessary
operations.

## Testing

- Reviewed documentation formatting
- Verified markdown structure
- Confirmed examples are accurate
2025-11-17 11:34:01 -06:00
Steven Masley f23836d426 chore: add more scopes to the curated catalog (#20746)
Just noticed when writing docs. These are probably obvious scopes to
allow
2025-11-14 08:30:10 -06:00
Steven Masley fe3b825b86 chore: per template opt into cached terraform directories (#20609)
For experimental and dogfood purposes, this adds the ability to opt in a single template. 
Leaving the rest of the templates as is. 

For GA, this setting might be removed or changed.
2025-11-13 14:04:12 -06:00
Steven Masley 9ca5b44b56 chore: implement persistent terraform directories (experimental) (#20563)
Prior to this, every workspace build ran `terraform init` in a fresh
directory. This would mean the `modules` are downloaded fresh. If the
module is not pinned, subsequent workspace builds would have different
modules.
2025-11-13 07:50:17 -06:00
Steven Masley 04727c06e8 chore: add experiment toggle for terraform workspace caching (#20559)
Experiments passed to provisioners to determine behavior. This adds
`--experiments` flag to provisioner daemons. Prior to this, provisioners
had no method to turn on/off experiments.
2025-11-12 14:26:15 -06:00
Steven Masley 9149c1e9f2 chore: append template metadata to protobuf config (#20558)
Adds some extra meta data sent to provisioners. Also adds a field
`reuse_terraform_workspace` to tell the provisioner whether or not to
use the caching experiment.
2025-11-12 12:46:39 -06:00
Steven Masley c47b437c12 chore: comment no-lint on gosec for unsafe zip extracting (#20741) 2025-11-12 10:42:16 -06:00
Steven Masley 7c8deaf0d6 chore: refactor terraform paths to a central structure (#20566)
Refactors all Terraform file path logic into a centralized tfpath package. This consolidates all path construction into a single, testable Layout type. 

Instead of passing around `string` for directories, pass around the `Layout` which has the file location methods on it.
2025-11-12 09:24:07 -06:00
Steven Masley 54497f4f6b chore: add revocation endpoint to oauth well-known (#20561)
Was added to apps endpoints, but not the wider site ones. This is a site
wide oauth route
2025-10-29 16:44:53 -05:00
Steven Masley a8294872a3 chore: use consistent function for statefile path (#20527)
We use `getStateFilePath` in 2 locations, and a manual `filepath.Join`
here. Just refactored to use the helper function
2025-10-29 07:44:09 -05:00
Steven Masley 924afb753f feat: add more detailed init timings in build timeline (#20503)
This uses the `terraform init -json` logs to add more visibility into
the `init` phase of `plan`. The `init` logs omit `ms` precision, so we
have to use `time.Now()` 😢

Open TF PR: https://github.com/hashicorp/terraform/pull/37818
2025-10-28 15:47:52 -05:00
Steven Masley ffe22a0ffc chore: show build timeline regardless of agent scripts count (#20470) 2025-10-27 10:09:52 -05:00
Steven Masley 13ca9ead3a chore!: ensure consistent secret token generation and hashing (#20388)
This PR uses the same sha256 hashing technique as we use for APIKeys. So
now all randomly generated secrets will be hashed with sha256 for
consistency.

This is a breaking change for the oauth tokens. Since oauth is only
allowed for dev builds and experimental, this is ok.
2025-10-23 15:38:49 -05:00
Steven Masley 4bd7c7b7e0 feat: implement oauth2 RFC 7009 token revocation endpoint (#20362)
Adds RFC 7009 token revocation endpoint
2025-10-22 15:18:42 -05:00
Steven Masley 86f0f39863 chore: make authz recorder opt in (#20310)
The authz recorder is causing a lot of memory to be allocated, and is a
memory leak for websocket connections.

This change makes it opt-in on a per request basis (ontop of `isDev`).
To get the authz headers, use `Copy as cURL` on chrome and append the
header `x-authz-checks=true`.
2025-10-21 14:15:37 +00:00
Steven Masley aec3e9e5ab chore: include codersdk comments in typescript output (#20348)
Some comments are likely still omitted as guts does not cover all cases
right now. And some cases are omitted because the output format is
ambiguous on how best to format it.
2025-10-17 08:40:56 -05:00
Steven Masley a53a5682d5 chore: update coder/guts to v1.6.0 (#20346)
- Removes redudant generic type parameters
- Removes unexported values from generted output
2025-10-16 12:07:17 -05:00
Steven Masley 3a56ea56a7 test: fix rbac benchmark to test performance instead of cache (#20097)
The benchmark should be testing the performance of `authorize`, not a
cache lookup
2025-10-01 13:23:51 -05:00
Steven Masley 679179f404 feat: scope allow_list to include resource_type (#19748)
This feature allows the `allow_list` in the scopes to specify the `type`
2025-09-17 08:32:14 -05:00
Steven Masley 3df9d8e902 test: set test flags from within an init to limit maximum test parallelism (#19575) 2025-09-17 08:24:19 -05:00
Steven Masley d527f91f47 chore: update rego policy to respect user and organisation scopes (#19741)
Prior to this change, user and org scopes were always rejected
2025-09-09 05:50:08 -05:00
Steven Masley f571730715 chore: update coder/preview to v1.0.4 (#19640) 2025-09-02 15:01:20 -04:00
Steven Masley ef0d74fb75 chore: improve performance of 'GetLatestWorkspaceBuildsByWorkspaceIDs' (#19452)
Closes https://github.com/coder/internal/issues/716

This prevents a scan over the entire `workspace_build` table by removing
a `join`. This is still imperfect as we are still scanning over the
number of builds for the workspaces in the arguments. Ideally we would
have some index or something precomputed. Then we could skip scanning
over the builds for the correct workspaces that are not the latest.
2025-08-26 09:26:11 -05:00
Steven Masley a19dfa9a0a docs: add generative ai contribution guidelines (#19427)
Initial language that gives us something to point to if needed.
2025-08-20 09:13:40 -05:00
Steven Masley 42c4792f24 test: add sub claim field to static id claims in testidp (#19399) 2025-08-18 15:20:10 -05:00
Steven Masley e92af2b050 chore: set editorconfig to use tabs instead of spaces for sql files (#19344) 2025-08-15 08:02:32 -05:00
Steven Masley 4926410146 feat: keep original token refresh error in external auth (#19339)
External auth refresh errors lose the original error thrown on the first
refresh. This PR saves that error to the database to be raised on
subsequent refresh attempts
2025-08-14 09:50:31 -05:00
Steven Masley f4f4e52173 docs: remove beta badge from docs about dynamic parameters (#19325) 2025-08-12 17:59:47 +00:00
Steven Masley ce935657f6 test: start migrating dbauthz tests to mocked db (#19257)
This PR adds a framework to move to a mocked db. And therefore massively speed up these tests.
2025-08-08 13:46:24 -05:00
Steven Masley 0a3afeddc8 chore: add more pprof labels for various go routines (#19243)
- ReplicaSync
- Notifications
- MetricsAggregator
- DBPurge
2025-08-07 20:05:32 +00:00
Steven Masley 34c46c0748 chore: rename service -> coder_service, remove agent_id label (#19241)
Pyroscope uses `service` tag for top level distinction. So move our
`service` -> `coder_service`
2025-08-07 13:58:39 -05:00
Steven Masley 8ba8b4f061 chore: add profiling labels for pprof analysis (#19232)
PProf labels segment the code into groups for determing the source of
cpu/memory profiles. Since the web server and background jobs share a
lot of the same code (eg wsbuilder), it helps to know if the load is
user induced, or background job based.
2025-08-07 11:21:17 -05:00
Steven Masley ec3b8cea91 chore: add quick filter option for authored templates (#19206) 2025-08-06 17:26:17 -05:00
Steven Masley a2e8aa9c28 chore: update coder/preview to v1.0.3 to fix nil ptr deref (#19205)
Woul happen in empty plans, AKA templates with 0 terraform content
2025-08-06 12:40:09 -05:00
Steven Masley 3024bdebcb chore: support 'me' as the username for template author (#19204)
`author:me` to find my templates. Much nicer than knowing my own
username
2025-08-06 11:45:07 -05:00
Steven Masley 5b80c47e8c feat: add author filter command to template filtering (#19202)
Can do `author:username` to filter templates created by a certain
author. Adding to help clean out some templates that I created on our
dev instance. This makes sorting a bit easier.
2025-08-06 10:41:01 -05:00
Steven Masley 4ba93824f9 chore(helm): make coder pprof endpoint available externally (#19185)
PProf is still disabled by default
2025-08-05 14:19:57 -05:00
Steven Masley 38755e204d chore: remove actDef function, had no value (#19019) 2025-07-24 14:52:03 -05:00
Steven Masley 99adb4a15b chore: update codeowners to include emyrk specific features (#18974) 2025-07-22 08:56:56 -05:00
Steven Masley aedc019b4e feat: include template variables in dynamic parameter rendering (#18819)
Closes https://github.com/coder/coder/issues/18671

Template variables now loaded into dynamic parameters.
2025-07-21 13:02:31 -05:00
Steven Masley 00ba0278d2 chore: modify parameter dynamic immutability behavior (#18583)
Immutability behavior is determined by the current build, not affected by the previous
2025-07-09 08:45:24 -06:00
Steven Masley 1319ae293f chore: support zip filetypes in the file cache (#18750) 2025-07-08 15:46:39 -06:00
Steven Masley a099a8a25c feat: use preview to compute workspace tags from terraform (#18720)
If using dynamic parameters, workspace tags are extracted using
`coder/preview`.
2025-07-03 14:35:44 -05:00
Steven Masley 699dd8e554 chore: create interface for pkgs to return codersdk errors (#18719)
This interface allows it to create rich codersdk errors and pass them up to the `wsbuilder` error handling.
2025-07-03 08:33:45 -05:00
Steven Masley 4072d228c5 feat: support dynamic parameters on create template request (#18636)
Future work is to add this checkbox to the UI to opt into dynamic
parameters from the first template create.
2025-07-02 09:44:01 -05:00
Steven Masley e396b06c25 feat: allow new immutable parameters for existing workspaces (#18579)
Closes https://github.com/coder/coder/issues/18578
2025-06-25 15:41:53 +00:00
Steven Masley fe22b2cc92 chore: update coder/preview dependency to v1.0.1 (#18550) 2025-06-24 20:46:50 +00:00
Steven Masley 06c997a100 chore: make telemetry use_classic_parameter_flow nullable (#18547) 2025-06-24 13:38:12 -05:00
Steven Masley e5eb2a8322 fix: prebuild user without ssh key when fetching owner ctx (#18541) 2025-06-24 16:49:36 +00:00
Steven Masley 341b54e604 fix: allow dynamic parameters without requiring org membership (#18531) 2025-06-24 10:33:10 -05:00