ci: test merge queue support#11
Closed
chaptersix wants to merge 28 commits into
Closed
Conversation
…emporalio#1056) The `temporal task-queue config set` help text referenced three flags that don't exist: - `--fairness-key-weight-set <key>=<weight>` - `--fairness-key-weight-unset <key>` - `--fairness-key-weight-unset-all` The real flags, defined a few lines below in the same YAML block, are: - `--fairness-key-weight <key>=<weight>` (with `<key>=default` to unset a single key) - `--fairness-key-weight-clear-all` This PR updates the example block and the unset instructions in `commands.yaml` to match, and regenerates `commands.gen.go`. Verified locally with `go run ./cmd/temporal task-queue config set --help`. This bug also surfaces in the auto-generated docs site at [docs/cli/task-queue.mdx](https://docs.temporal.io/cli/task-queue#set), which a customer hit in [this Slack thread](https://temporaltechnologies.slack.com/archives/C0748KDH2DD/p1779899719317389?thread_ts=1779898503.202859&cid=C0748KDH2DD). The docs PR over in `temporalio/documentation#4625` works around it by referencing the real flag names directly. Co-authored-by: Alex Stanfield <13949480+chaptersix@users.noreply.github.com>
…1054) VLN-1354: pin and bump GitHub Actions to latest versions Pin all GitHub Actions to full 40-character commit SHAs and bump to latest versions across all workflows: - actions/checkout v4.3.1 -> v6.0.2 - actions/setup-go -> v6.4.0 - actions/upload-artifact (already pinned, kept current) - actions/create-github-app-token v2.2.2 -> v3.1.1 (temporalio#1037) - actions/github-script v8.0.0 -> v9.0.0 (temporalio#1036) - docker/setup-qemu-action v3.2.0 -> v4.1.0 - docker/setup-buildx-action v3.10.0 -> v4.1.0 (temporalio#1035) - docker/login-action v3.5.0 -> v4.2.0 - goreleaser/goreleaser-action v6.4.0 -> v7.2.1 (temporalio#1039) Resolves open Dependabot PRs temporalio#1035, temporalio#1036, temporalio#1037, temporalio#1038, temporalio#1039. Left temporalio/public-actions refs unchanged per exception policy. --------- Co-authored-by: picatz <14850816+picatz@users.noreply.github.com> Co-authored-by: Alex Stanfield <13949480+chaptersix@users.noreply.github.com>
Bumps [golang.org/x/mod](https://github.com/golang/mod) from 0.35.0 to 0.36.0. <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/golang/mod/commit/643da9ba74f1165d8cae1505d453b3de3cf21b7b"><code>643da9b</code></a> go.mod: update golang.org/x dependencies</li> <li><a href="https://github.com/golang/mod/commit/ccc3cdf529d1eee2a832437eb1b85240044d21cb"><code>ccc3cdf</code></a> zip: include 'but content has correct sum' note in TestVCS</li> <li><a href="https://github.com/golang/mod/commit/ab3031803214705d2c9f1102318b083e7086a155"><code>ab30318</code></a> zip: update zip hashes for new flate compression</li> <li>See full diff in <a href="https://github.com/golang/mod/compare/v0.35.0...v0.36.0">compare view</a></li> </ul> </details> <br /> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## Related issues Closes temporalio#1030 ## What changed? Adds `temporal schedule list-matching-times` command implementing the `ListScheduleMatchingTimes` RPC. Allows users to preview when a schedule's spec would match within a given time range (past or future) without taking any actions. ## Checklist **Stability** - [x] Breaking changes are marked with 💥 in the PR title and release notes - [x] Changes to JSON output (`-o json` / `-o jsonl`) are treated as breaking changes **Design** - [x] This feature does not depend on Cloud-only APIs or behavior (it works against an OSS server) - [x] New commands follow `temporal <noun> <verb>` structure (e.g. `temporal workflow start`) - [x] New flags are named after the API concept, not the implementation mechanism (good: `--search-attribute`, bad: `--index-field`) - [x] New flags don't duplicate an existing flag that serves the same purpose - [x] New flags do not have short aliases without strong justification - [x] Experimental features are marked with `(Experimental feature)` in `commands.yaml` **Help text** (see style guide at the top of `commands.yaml`) - [x] All flags shown in help text and examples are implemented and functional - [x] Summaries use sentence case and have no trailing period - [x] Long descriptions end with a period and include at least one example invocation - [x] Examples use long flags (`--namespace`, not `-n`), one flag per line - [x] Placeholder values use `YourXxx` form (`YourWorkflowId`, `YourNamespace`) **Behavior** - [x] Results go to stdout; errors and warnings go to stderr - [x] Error messages are lowercase with no trailing punctuation **Tests** - [x] Added functional test(s) (`SharedServerSuite`) - [ ] Added unit test(s) (`func TestXxx`) where applicable ## Manual tests **Setup** ``` temporal server start-dev --headless temporal schedule create \ --schedule-id YourScheduleId \ --interval 1h \ --workflow-id YourWorkflowId \ --task-queue YourTaskQueue \ --workflow-type YourWorkflowType ``` **Happy path** ``` $ temporal schedule list-matching-times \ --schedule-id YourScheduleId \ --start-time 2025-01-01T00:00:00Z \ --end-time 2025-01-01T23:59:59Z Time 2025-01-01T00:00:00Z 2025-01-01T01:00:00Z ... $ temporal schedule list-matching-times \ --schedule-id YourScheduleId \ --start-time 2025-01-01T00:00:00Z \ --end-time 2025-01-01T23:59:59Z \ -o json {"startTime":["2025-01-01T00:00:00Z","2025-01-01T01:00:00Z",...]} ``` **Error case** ``` $ temporal schedule list-matching-times \ --schedule-id nonexistent-id \ --start-time 2025-01-01T00:00:00Z \ --end-time 2025-01-01T23:59:59Z Error: ... $ echo $? 1 ``` **Composition** ``` $ temporal schedule list-matching-times \ --schedule-id YourScheduleId \ --start-time 2025-06-01T00:00:00Z \ --end-time 2025-06-07T23:59:59Z \ -o json | jq '.startTime | length' 168 ```
- remove time.Sleep() needed before v1.26.2 because of server cache bug - update test assertions of "2 seconds ago" to "now" since we won't wait <!--- Note to EXTERNAL Contributors --> <!-- Thanks for opening a PR! If it is a significant code change, please **make sure there is an open issue** for this. We work best with you when we have accepted the idea first before you code. --> <!--- For ALL Contributors 👇 --> ## What was changed test `TestTaskQueue_Describe_Simple` at `commands.taskqueue_test.go` was updated to remove unnecessary `time.Sleep(1 * time.Second) ` ## Why? <!-- Tell your future self why have you made these changes --> The waiting was a necessary workaround of server cache bug, bug was fixed on v1.26.2 ## Checklist <!--- add/delete as needed ---> 1. Closes temporalio#741 3. How was this tested: <!--- Please describe how you tested your changes/how we can test them --> Running the unit tests 4. Any docs updates needed? <!--- update README if applicable or point out where to update docs.temporal.io --> Co-authored-by: Alex Stanfield <13949480+chaptersix@users.noreply.github.com>
<!--- For ALL Contributors --> ## What was changed `temporal server start-dev` now prints a `Persistence:` line at the end of the startup banner. In-memory (no `--db-filename`): ``` Persistence: in-memory (Workflow Executions are lost when the server process exits) ``` File-backed: ``` Persistence: file (/path/to/dev.sqlite) ``` ## Why? Per temporalio#634, the start-dev banner did not surface what form of persistence the dev server uses, so users could not tell at a glance whether Workflow Executions would survive a restart. ## Checklist 1. Closes temporalio#634 2. How was this tested: Two new tests in `internal/temporalcli/commands.server_test.go` start the dev server, capture stdout, and assert that the banner contains `Persistence:` plus the expected backend description. Both pass locally and fail when the banner change is reverted. ``` $ go test -run TestServer_StartDev_BannerPersistence ./internal/temporalcli/ ok github.com/temporalio/cli/internal/temporalcli 10.318s ``` --------- Signed-off-by: Sai Asish Y <say.apm35@gmail.com> Co-authored-by: Alex Stanfield <13949480+chaptersix@users.noreply.github.com>
…alio#1012) Closes temporalio#838. Implements the design @cretz proposed in the issue thread: when `--yes` bypasses the confirmation prompt, skip the `CountWorkflowExecutions` request entirely. ## What was changed - [internal/temporalcli/commands.workflow.go](internal/temporalcli/commands.workflow.go) — `SingleWorkflowOrBatchOptions.workflowExecOrBatch`: `CountWorkflow` only runs in the `!s.Yes` branch. - [internal/temporalcli/commands.workflow_reset.go](internal/temporalcli/commands.workflow_reset.go) — same pattern in `TemporalWorkflowResetCommand`'s batch path. When `--yes` skips the count, the prompt text changes from `Start batch against approximately N workflow(s)? y/N` to `Start batch against workflows matching query "<query>"? y/N`, so the output (which `promptYes` still prints in the auto-confirm path) stays informative. The non-`--yes` interactive flow is untouched: it still counts, still prompts, still prints the same `approximately N workflow(s)` message. ## Why `workflowExecOrBatch` (terminate / signal / cancel) and the reset command both unconditionally call `CountWorkflowExecutions` before starting a batch. The result is only used to fill in the `approximately N workflow(s)` confirmation. When `--yes` is set, the prompt is skipped — but the count call still runs, and on clusters where the visibility API is timing out it fails the entire batch start. The original report is from a Postgres-backed cluster where the batch query itself works but the count times out; users can't start batch jobs they otherwise have permission to run. ## How was this tested Added `TestWorkflow_Terminate_BatchWorkflow_SkipsCountWhenYes` that: 1. Installs a unary gRPC interceptor that counts `CountWorkflowExecutionsRequest` and `StartBatchOperationRequest` calls. 2. Starts one workflow, then runs `workflow terminate --query ... --yes`. 3. Asserts: 0 `CountWorkflow` calls, 1 `StartBatchOperation` call, prompt text contains `matching query` and not `approximately`. The interceptor pattern matches the existing `testTerminateBatchWorkflow` helper. Ran the new test plus a sample of the existing batch tests locally; they pass. (`TestWorkflow_Terminate_BatchWorkflowSuccess` flakes locally on the unrelated `Completed` assertion both with and without my changes — pre-existing timing issue, not caused by this PR.) --------- Co-authored-by: Alex Stanfield <13949480+chaptersix@users.noreply.github.com>
## What was changed - `workflow show` (table and detailed modes, not `-o json`) now displays the actual operation name instead of the generic `NexusOperationScheduled`/`NexusOperationCompleted` event type when the Nexus endpoint is `__temporal_system`. - `workflow describe` no longer includes pending Nexus operations on the `__temporal_system` endpoint in the "Pending Nexus Operations" list or count. ## Why? System Nexus operations (endpoint `__temporal_system`) are implementation details of high-level SDK operations like `SignalWithStartWorkflowExecution`. Surfacing them as `NexusOperationScheduled`/`NexusOperationCompleted` events is confusing. By unwrapping the operation name, the history and describe output reflect what the workflow actually did at a semantic level. Similarly, pending system operations in describe are noise the user has no actionable interest in. ## Checklist <!--- add/delete as needed ---> 1. Closes NA 2. How was this tested: - Unit tests added in `commands.workflow_show_test.go` covering all six NexusOperation event types, the non-system-endpoint no-op path, and the missing-scheduled-event (reverse traversal / orphaned completion) path. - Functional tests added to `commands.workflow_view_test.go` to show system operations are unwrapped but user defined are not - Manual validation: ran `temporal workflow show -w <id>` against a live workflow that executes a `SignalWithStartWorkflowExecution` system nexus operation and confirmed events 5 and 6 now show as `SignalWithStartWorkflowExecutionScheduled` and `SignalWithStartWorkflowExecutionCompleted`. 4. Any docs updates needed? No
…nfig (temporalio#1057) ## Summary - `dependency-type` is only valid inside `allow`, not `ignore` in dependabot.yml - Replaces the invalid `ignore` entry with `allow: [{dependency-type: direct}]` to achieve the same goal of skipping indirect/transitive dependency updates - Adds a CI workflow using `check-jsonschema` to validate `dependabot.yml` on PRs and pushes to main - Fixes the Dependabot config validation failure introduced in temporalio#1044 ## Test plan - [ ] Verify the `.github/dependabot.yml` validation check passes on this PR - [ ] Verify `check-jsonschema --builtin-schema vendor.dependabot .github/dependabot.yml` passes locally
Bumps the github-actions group with 2 updates: [goreleaser/goreleaser-action](https://github.com/goreleaser/goreleaser-action) and [actions/create-github-app-token](https://github.com/actions/create-github-app-token). Updates `goreleaser/goreleaser-action` from 7.2.1 to 7.2.2 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/goreleaser/goreleaser-action/releases">goreleaser/goreleaser-action's releases</a>.</em></p> <blockquote> <h2>v7.2.2</h2> <h2>What's Changed</h2> <ul> <li>ci(deps): bump the actions group with 3 updates by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/goreleaser/goreleaser-action/pull/560">goreleaser/goreleaser-action#560</a></li> <li>fix: nightly resolution to select newest published release by <a href="https://github.com/Copilot"><code>@Copilot</code></a> in <a href="https://redirect.github.com/goreleaser/goreleaser-action/pull/562">goreleaser/goreleaser-action#562</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/Copilot"><code>@Copilot</code></a> made their first contribution in <a href="https://redirect.github.com/goreleaser/goreleaser-action/pull/562">goreleaser/goreleaser-action#562</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/goreleaser/goreleaser-action/compare/v7...v7.2.2">https://github.com/goreleaser/goreleaser-action/compare/v7...v7.2.2</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/goreleaser/goreleaser-action/commit/5daf1e915a5f0af01ddbcd89a43b8061ff4f1a89"><code>5daf1e9</code></a> fix: nightly resolution to select newest published release (<a href="https://redirect.github.com/goreleaser/goreleaser-action/issues/562">#562</a>)</li> <li><a href="https://github.com/goreleaser/goreleaser-action/commit/5cc7ebb73d78b8f1d7b03c568e7df999c2889ccf"><code>5cc7ebb</code></a> ci: update actions</li> <li><a href="https://github.com/goreleaser/goreleaser-action/commit/702f5f91c9334614254ddeabeebaf820d707f0d6"><code>702f5f9</code></a> ci(deps): bump the actions group with 3 updates (<a href="https://redirect.github.com/goreleaser/goreleaser-action/issues/560">#560</a>)</li> <li>See full diff in <a href="https://github.com/goreleaser/goreleaser-action/compare/1a80836c5c9d9e5755a25cb59ec6f45a3b5f41a8...5daf1e915a5f0af01ddbcd89a43b8061ff4f1a89">compare view</a></li> </ul> </details> <br /> Updates `actions/create-github-app-token` from 3.1.1 to 3.2.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/create-github-app-token/releases">actions/create-github-app-token's releases</a>.</em></p> <blockquote> <h2>v3.2.0</h2> <h2><a href="https://github.com/actions/create-github-app-token/compare/v3.1.1...v3.2.0">3.2.0</a> (2026-05-12)</h2> <h3>Features</h3> <ul> <li>add support for enterprise-level GitHub Apps (<a href="https://redirect.github.com/actions/create-github-app-token/issues/263">#263</a>) (<a href="https://github.com/actions/create-github-app-token/commit/952a2a7073df6bfa5f49bc469ec895b6ec1acea4">952a2a7</a>)</li> <li>support full repository names in <code>repositories</code> input (<a href="https://redirect.github.com/actions/create-github-app-token/issues/372">#372</a>) (<a href="https://github.com/actions/create-github-app-token/commit/85eb8dd41472213aed25d1a126460e0069138ab6">85eb8dd</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><strong>deps:</strong> bump <code>@actions/core</code> from 3.0.0 to 3.0.1 in the production-dependencies group (<a href="https://redirect.github.com/actions/create-github-app-token/issues/364">#364</a>) (<a href="https://github.com/actions/create-github-app-token/commit/43e5c345bfd4d4f3ecea019ad0042001a09dd857">43e5c34</a>)</li> <li>validate private-key input (<a href="https://redirect.github.com/actions/create-github-app-token/issues/376">#376</a>) (<a href="https://github.com/actions/create-github-app-token/commit/f24bbd89643991c0de27ae823c01791b2c6bafdd">f24bbd8</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/actions/create-github-app-token/blob/main/CHANGELOG.md">actions/create-github-app-token's changelog</a>.</em></p> <blockquote> <h1>Changelog</h1> <h2><a href="https://github.com/actions/create-github-app-token/compare/v3.1.1...v3.2.0">3.2.0</a> (2026-05-12)</h2> <h3>Features</h3> <ul> <li>add support for enterprise-level GitHub Apps (<a href="https://redirect.github.com/actions/create-github-app-token/issues/263">#263</a>) (<a href="https://github.com/actions/create-github-app-token/commit/952a2a7073df6bfa5f49bc469ec895b6ec1acea4">952a2a7</a>)</li> <li>support full repository names in <code>repositories</code> input (<a href="https://redirect.github.com/actions/create-github-app-token/issues/372">#372</a>) (<a href="https://github.com/actions/create-github-app-token/commit/85eb8dd41472213aed25d1a126460e0069138ab6">85eb8dd</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><strong>deps:</strong> bump <code>@actions/core</code> from 3.0.0 to 3.0.1 in the production-dependencies group (<a href="https://redirect.github.com/actions/create-github-app-token/issues/364">#364</a>) (<a href="https://github.com/actions/create-github-app-token/commit/43e5c345bfd4d4f3ecea019ad0042001a09dd857">43e5c34</a>)</li> <li>validate private-key input (<a href="https://redirect.github.com/actions/create-github-app-token/issues/376">#376</a>) (<a href="https://github.com/actions/create-github-app-token/commit/f24bbd89643991c0de27ae823c01791b2c6bafdd">f24bbd8</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/create-github-app-token/commit/bcd2ba49218906704ab6c1aa796996da409d3eb1"><code>bcd2ba4</code></a> chore(main): release 3.2.0 (<a href="https://redirect.github.com/actions/create-github-app-token/issues/370">#370</a>)</li> <li><a href="https://github.com/actions/create-github-app-token/commit/f24bbd89643991c0de27ae823c01791b2c6bafdd"><code>f24bbd8</code></a> fix: validate private-key input (<a href="https://redirect.github.com/actions/create-github-app-token/issues/376">#376</a>)</li> <li><a href="https://github.com/actions/create-github-app-token/commit/363531b6d972a60a00b3f1e6bb139e5e6c764cd9"><code>363531b</code></a> docs: capitalize Git as a proper noun in README (<a href="https://redirect.github.com/actions/create-github-app-token/issues/374">#374</a>)</li> <li><a href="https://github.com/actions/create-github-app-token/commit/fd2801133e469d2950f2c5af5e591d6b2ad833c8"><code>fd28011</code></a> docs: update procedure to configure Git (<a href="https://redirect.github.com/actions/create-github-app-token/issues/287">#287</a>)</li> <li><a href="https://github.com/actions/create-github-app-token/commit/85eb8dd41472213aed25d1a126460e0069138ab6"><code>85eb8dd</code></a> feat: support full repository names in <code>repositories</code> input (<a href="https://redirect.github.com/actions/create-github-app-token/issues/372">#372</a>)</li> <li><a href="https://github.com/actions/create-github-app-token/commit/c9aabb83728c3bd519212fa657ebc07e1f2a5dec"><code>c9aabb8</code></a> build(deps-dev): bump yaml from 2.8.3 to 2.8.4 in the development-dependencie...</li> <li><a href="https://github.com/actions/create-github-app-token/commit/e02e816e5591415258a53bf735aff57977dcd5e2"><code>e02e816</code></a> build(deps-dev): bump undici from 7.24.6 to 8.2.0 (<a href="https://redirect.github.com/actions/create-github-app-token/issues/366">#366</a>)</li> <li><a href="https://github.com/actions/create-github-app-token/commit/8d835bfd37aa48fcb8e709925115857568d98bc4"><code>8d835bf</code></a> build(deps-dev): bump esbuild from 0.27.4 to 0.28.0 in the development-depend...</li> <li><a href="https://github.com/actions/create-github-app-token/commit/952a2a7073df6bfa5f49bc469ec895b6ec1acea4"><code>952a2a7</code></a> feat: add support for enterprise-level GitHub Apps (<a href="https://redirect.github.com/actions/create-github-app-token/issues/263">#263</a>)</li> <li><a href="https://github.com/actions/create-github-app-token/commit/43e5c345bfd4d4f3ecea019ad0042001a09dd857"><code>43e5c34</code></a> fix(deps): bump <code>@actions/core</code> from 3.0.0 to 3.0.1 in the production-dependenc...</li> <li>Additional commits viewable in <a href="https://github.com/actions/create-github-app-token/compare/1b10c78c7865c340bc4f6099eb2f838309f1e8c3...bcd2ba49218906704ab6c1aa796996da409d3eb1">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## Related issues <!-- Closes temporalio#123 --> Closes temporalio#609 ## What changed? <!-- Describe what this PR does at a high level. --> Prefix generated dev server cluster IDs with `dev-server-` for better identification. Previously cluster IDs were plain UUIDs with no indication they came from a dev server. ## Checklist <!-- Your PR should satisfy all these requirements. However, feel free to remove items that don't apply to the PR. Consider giving this checklist to an AI agent before opening your PR. --> **Stability** - [x] Breaking changes are marked with 💥 in the PR title and release notes **Design** - [x] This feature does not depend on Cloud-only APIs or behavior (it works against an OSS server) **Tests** - [x] Added functional test(s) — existing tests cover this change ## Manual tests <!-- Edit the code samples below to provide setup and happy-path and error-path testing instructions. --> **Setup** ``` temporal server start-dev --headless ``` **Happy path** ``` $ temporal operator cluster describe ClusterId dev-server-<uuid> ``` **Error case** N/A Co-authored-by: Alex Stanfield <13949480+chaptersix@users.noreply.github.com>
…#941) ## Related issues Closes temporalio#673 ## What changed? Auto-generate deprecation warnings from a `deprecated: true` YAML flag instead of manually writing CAUTION boxes in command descriptions. Deprecation warnings are also printed to stderr at runtime so users see them when invoking deprecated commands, without breaking JSON output. ### Before Deprecation required manually adding a CAUTION box to the description and `(Deprecated)` to the summary: ```yaml - name: temporal task-queue get-build-id-reachability summary: Show Build ID availability (Deprecated) description: | ` `` +-----------------------------------------------------------------------------+ | CAUTION: This command is deprecated and will be removed in a later release. | +-----------------------------------------------------------------------------+ ` `` Show if a given Build ID can be used for new, existing, or closed Workflows... ``` No runtime warning was shown when invoking the command. ### After Set `deprecated: true` and optionally `deprecation-message`. The CAUTION box, `(Deprecated)` summary suffix, and stderr runtime warning are all auto-generated: ```yaml - name: temporal task-queue get-build-id-reachability deprecated: true description: | Show if a given Build ID can be used for new, existing, or closed Workflows... - name: temporal task-queue versioning deprecated: true deprecation-message: This API has been deprecated by Worker Deployment. description: | Provides commands to add, list, remove, or replace... ``` Runtime stderr output: ``` $ temporal task-queue get-build-id-reachability --task-queue foo --build-id bar warning: this command is deprecated and will be removed in a later release ... ``` JSON output is not affected (warning goes to stderr only): ``` $ temporal task-queue get-build-ids -o json --task-queue foo 2>/dev/null [{"buildIds":["1.0"],"defaultForSet":"1.0","isDefaultSet":true}] ``` ## Checklist **Stability** - [x] Breaking changes are marked with 💥 in the PR title and release notes - [x] Changes to JSON output (`-o json` / `-o jsonl`) are treated as breaking changes **Design** - [x] This feature does not depend on Cloud-only APIs or behavior (it works against an OSS server) **Help text** (see style guide at the top of `commands.yaml`) - [x] Summaries use sentence case and have no trailing period - [x] Long descriptions end with a period and include at least one example invocation **Behavior** - [x] Results go to stdout; errors and warnings go to stderr - [x] Error messages are lowercase with no trailing punctuation **Tests** - [x] Added functional test(s) (`SharedServerSuite`) - [x] Added unit test(s) (`func TestXxx`) where applicable ## Manual tests **Setup** ``` temporal server start-dev --headless ``` **Happy path -- stderr warning on deprecated command** ``` $ temporal task-queue get-build-ids \ --task-queue YourTaskQueue warning: this command is deprecated and will be removed in a later release ... ``` **Happy path -- JSON output not polluted** ``` $ temporal task-queue get-build-ids \ -o json \ --task-queue YourTaskQueue 2>/dev/null [...] ``` **Happy path -- help text shows CAUTION box** ``` $ temporal task-queue get-build-id-reachability --help +-----------------------------------------------------------------------------+ | CAUTION: This command is deprecated and will be removed in a later release. | +-----------------------------------------------------------------------------+ Show if a given Build ID can be used for new, existing, or closed Workflows... ``` **Happy path -- custom deprecation message** ``` $ temporal task-queue versioning --help +-------------------------------------------------------------+ | CAUTION: This API has been deprecated by Worker Deployment. | +-------------------------------------------------------------+ ... ```
## NOTE: REQUIRES OSS SERVER VERSION v1.32.0
## What changed?
Add support for stand alone nexus operations to the CLI.
## Checklist
<!-- Your PR should satisfy all these requirements. However, feel free
to remove items that don't apply to the PR. Consider giving this
checklist to an AI agent before opening your PR. -->
**Stability**
- [ ] Breaking changes are marked with 💥 in the PR title and release
notes
- [ ] Changes to JSON output (`-o json` / `-o jsonl`) are treated as
breaking changes
**Design**
- [x] This feature does not depend on Cloud-only APIs or behavior (it
works against an OSS server)
- [x] New commands follow `temporal <noun> <verb>` structure (e.g.
`temporal workflow start`)
- [x] New flags are named after the API concept, not the implementation
mechanism (good: `--search-attribute`, bad: `--index-field`)
- [x] New flags don't duplicate an existing flag that serves the same
purpose
- [ ] New flags do not have short aliases without strong justification
- [x] Experimental features are marked with `(Experimental)` in
`commands.yaml`
**Help text** (see style guide at the top of `commands.yaml`)
- [x] All flags shown in help text and examples are implemented and
functional
- [x] Summaries use sentence case and have no trailing period
- [x] Long descriptions end with a period and include at least one
example invocation
- [ ] Examples use long flags (`--namespace`, not `-n`), one flag per
line
- [x] Placeholder values use `YourXxx` form (`YourWorkflowId`,
`YourNamespace`)
**Behavior**
- [x] Results go to stdout; errors and warnings go to stderr
- [x] Error messages are lowercase with no trailing punctuation
**Tests**
- [x] Added functional test(s) (`SharedServerSuite`)
- [x] Added unit test(s) (`func TestXxx`) where applicable
## Manual tests
<!-- Edit the code samples below to provide setup and happy-path and
error-path testing instructions. -->
**Setup**
```
temporal operator nexus endpoint create
--name my-endpoint
--target-namespace default
--target-task-queue my-tq
```
**Happy path**
```
$ temporal nexus operation start
--endpoint my-endpoint
--service my-service
--operation my-op
--operation-id my-op-1
--input '"hello"'
Started Nexus Operation:
Endpoint my-endpoint
Service my-service
Operation my-op
OperationId my-op-1
RunId 7e7c8b2a-...-...
Namespace default
```
**Error case**
```
$ temporal nexus operation start
--service my-service
--operation my-op
--operation-id my-op-2
Error: required flag(s) "endpoint" not set
```
**Composition** — start an operation, then fetch its result, then list/describe:
```
$ temporal nexus operation start
--endpoint my-endpoint
--service my-service
--operation my-op
--operation-id my-op-3
--input '"world"'
$ temporal nexus operation result --operation-id my-op-3
Results:
Status COMPLETED
Result "got: world"
$ temporal nexus operation describe --operation-id my-op-3
OperationId my-op-3
RunId 7e7c8b2a-...-...
Endpoint my-endpoint
Service my-service
Operation my-op
Status Succeeded
...
```
Adds implementation of the `UpdateWorkerDeploymentVersionComputeConfig` gRPC API call with a `temporal worker deployment update-version-compute-config` CLI command. There is a `--remove` CLI flag that allows the user to explicitly delete the compute config from a Worker Deployment Version. --------- Signed-off-by: Jay Pipes <jay.pipes@temporal.io>
## What changed?
Address some issues found in the Nexus Operation command like:
* Operation ID should be required
* Some missing fields on start
## Checklist
<!-- Your PR should satisfy all these requirements. However, feel free
to remove items that don't apply to the PR. Consider giving this
checklist to an AI agent before opening your PR. -->
**Stability**
- [ ] Breaking changes are marked with 💥 in the PR title and release
notes
- [ ] Changes to JSON output (`-o json` / `-o jsonl`) are treated as
breaking changes
**Design**
- [x] This feature does not depend on Cloud-only APIs or behavior (it
works against an OSS server)
- [x] New commands follow `temporal <noun> <verb>` structure (e.g.
`temporal workflow start`)
- [x] New flags are named after the API concept, not the implementation
mechanism (good: `--search-attribute`, bad: `--index-field`)
- [x] New flags don't duplicate an existing flag that serves the same
purpose
- [x] New flags do not have short aliases without strong justification
- [x] Experimental features are marked with `(Experimental)` in
`commands.yaml`
**Help text** (see style guide at the top of `commands.yaml`)
- [x] All flags shown in help text and examples are implemented and
functional
- [x] Summaries use sentence case and have no trailing period
- [x] Long descriptions end with a period and include at least one
example invocation
- [ ] Examples use long flags (`--namespace`, not `-n`), one flag per
line
- [x] Placeholder values use `YourXxx` form (`YourWorkflowId`,
`YourNamespace`)
**Behavior**
- [x] Results go to stdout; errors and warnings go to stderr
- [ ] Error messages are lowercase with no trailing punctuation
**Tests**
- [x] Added functional test(s) (`SharedServerSuite`)
- [ ] Added unit test(s) (`func TestXxx`) where applicable
## Manual tests
**Setup**
```
temporal operator nexus endpoint create
--name my-endpoint
--target-namespace default
--target-task-queue my-tq
```
**Happy path**
```
$ temporal nexus operation start
--endpoint my-endpoint
--service my-service
--operation my-op
--operation-id my-op-1
--input '"hello"'
Started Nexus Operation:
Endpoint my-endpoint
Service my-service
Operation my-op
OperationId my-op-1
RunId 7e7c8b2a-...-...
Namespace default
```
**Error case**
```
$ temporal nexus operation start
--service my-service
--operation my-op
--operation-id my-op-2
Error: required flag(s) "endpoint" not set
```
**Composition** — start an operation, then fetch its result, then list/describe:
```
$ temporal nexus operation start
--endpoint my-endpoint
--service my-service
--operation my-op
--operation-id my-op-3
--input '"world"'
$ temporal nexus operation result --operation-id my-op-3
Results:
Status COMPLETED
Result "got: world"
$ temporal nexus operation describe --operation-id my-op-3
OperationId my-op-3
RunId 7e7c8b2a-...-...
Endpoint my-endpoint
Service my-service
Operation my-op
Status Succeeded
...
```
Some customers were confused with the ability to create an "empty" WorkerDeploymentVersion with the `temporal worker deployment create-version` CLI command. This PR removes the ability to create a WDV that does not have any compute configuration associated with it. As we add support for non-Lambda compute providers like Google Cloud Run, we will update the conditional check in the CLI command implementation to verify that at least one "set" of compute provider configuration CLI options has been specified. Signed-off-by: Jay Pipes <jay.pipes@temporal.io> Co-authored-by: Alex Stanfield <13949480+chaptersix@users.noreply.github.com>
## Related issues Closes temporalio#1077 ## What changed? The helper to iterate over `envConfigPropsToFieldNames` has a side effect if the parent is nil and `failIfParentNotFound=true` it will set `confProfile.TLS = &envconvfig.ClientConfigTLS{}`. When the `k=="tls"` check happens, `confProfile.TLS != nil` and it will emit `tls: true`. Map iteration is non-deterministic and there are 9 `tls.*` keys vs 1 `tls` key so the mutation is more likely to happen before checking the `tls` key. ## Checklist **Tests** - [X] Added unit test Co-authored-by: Alex Stanfield <13949480+chaptersix@users.noreply.github.com>
) ## Related issues Closes temporalio#1013 ## What changed? - Added `authority` to `envConfigPropsToFieldNames` map so `client-authority` can be get/set via config commands - Wired `cfg.ClientAuthority` to `profile.Authority` in `client.go` - Updated `DefaultConfigFilePath()` call sites for envconfig v1.0.2 signature change (returns `string` instead of `(string, error)`) - Bumped `go.temporal.io/sdk/contrib/envconfig` to v1.0.2 - Added `authority` field to config tests ## Checklist **Stability** - ✅ No breaking changes - ✅ Works against OSS server - ✅ Flag named after API concept (client-authority) - ✅ No duplicate flags - ✅ No short aliases - ✅ Added test coverage in commands.config_test.go **Design** - ✅ Works against OSS server - ✅ Flag named after API concept (client-authority) - ✅ No duplicate flags - ✅ No short aliases **Tests** - [ ] Added functional test (SharedServerSuite) — config set/get test needed ## Manual tests **Setup** ``` temporal server start-dev --headless ``` **Happy path** ``` $ temporal config set --prop authority --value my-authority $ temporal config get --prop authority Property Value authority my-authority ``` **Error case** ``` $ temporal config set --prop authority Error: required flag --value not set ```
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.80.0 to 1.81.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/grpc/grpc-go/releases">google.golang.org/grpc's releases</a>.</em></p> <blockquote> <h2>Release 1.81.1</h2> <h1>Security</h1> <ul> <li>xds/rbac: Fix a potential authorization bypass caused by incorrectly falling through URI/DNS SANs to Subject Distinguished Name (DN) when matching the authenticated principal name. With this fix, only the first non-empty identity source will be used, as per <a href="https://github.com/grpc/proposal/blob/master/A41-xds-rbac.md">gRFC A41</a>. (<a href="https://redirect.github.com/grpc/grpc-go/issues/9111">#9111</a>) <ul> <li>Special Thanks: <a href="https://github.com/al4an444"><code>@al4an444</code></a></li> </ul> </li> </ul> <h1>Bug Fixes</h1> <ul> <li>otel: Segregate client and server RPC information used for metrics and traces, to avoid one overwriting the other. (<a href="https://redirect.github.com/grpc/grpc-go/issues/9081">#9081</a>)</li> </ul> <h2>Release 1.81.0</h2> <h1>Behavior Changes</h1> <ul> <li>balancer/rls: Switch gauge metrics to asynchronous emission (once per collection cycle) to reduce telemetry noise and align with other gRPC language implementations. (<a href="https://redirect.github.com/grpc/grpc-go/issues/8808">#8808</a>)</li> </ul> <h1>Dependencies</h1> <ul> <li>Minimum supported Go version is now 1.25. (<a href="https://redirect.github.com/grpc/grpc-go/issues/8969">#8969</a>)</li> </ul> <h1>Bug Fixes</h1> <ul> <li>xds: Use the leaf cluster's security config for the TLS handshake instead of the aggregate cluster's config. (<a href="https://redirect.github.com/grpc/grpc-go/issues/8956">#8956</a>)</li> <li>transport: Send a <code>RST_STREAM</code> when receiving an <code>END_STREAM</code> when the stream is not already half-closed. (<a href="https://redirect.github.com/grpc/grpc-go/issues/8832">#8832</a>)</li> <li>xds: Fix ADS resource name validation to prevent a panic. (<a href="https://redirect.github.com/grpc/grpc-go/issues/8970">#8970</a>)</li> </ul> <h1>New Features</h1> <ul> <li>grpc/stats: Add support for custom labels in per-call metrics (<a href="https://github.com/grpc/proposal/blob/master/A108-otel-custom-per-call-label.md">gRFC A108</a>). (<a href="https://redirect.github.com/grpc/grpc-go/issues/9008">#9008</a>)</li> <li>xds: Add support for Server Name Indication (SNI) and SAN validation (<a href="https://github.com/grpc/proposal/blob/master/A101-SNI-setting-and-SNI-SAN-validation.md">gRFC A101</a>). Disabled by default. To enable, set <code>GRPC_EXPERIMENTAL_XDS_SNI=true</code> environment variable. (<a href="https://redirect.github.com/grpc/grpc-go/issues/9016">#9016</a>)</li> <li>xds: Add support to control which fields get propagated from ORCA backend metric reports to LRS load reports (<a href="https://github.com/grpc/proposal/blob/master/A85-lrs-custom-metrics-changes.md">gRFC A85</a>). Disabled by default. To enable, set <code>GRPC_EXPERIMENTAL_XDS_ORCA_LRS_PROPAGATION=true</code>. (<a href="https://redirect.github.com/grpc/grpc-go/issues/9005">#9005</a>)</li> <li>xds: Add metrics to track xDS client connectivity and cached resource state (<a href="https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md">gRFC A78</a>). (<a href="https://redirect.github.com/grpc/grpc-go/issues/8807">#8807</a>)</li> <li>stats/otel: Enhance <code>grpc.subchannel.disconnections</code> metric by adding disconnection reason to the <code>grpc.disconnect_error</code> label (<a href="https://github.com/grpc/proposal/blob/master/A94-subchannel-otel-metrics.md">gRFC A94</a>). This provides granular insights into why subchannels are closing. (<a href="https://redirect.github.com/grpc/grpc-go/issues/8973">#8973</a>)</li> <li>mem: Add <code>mem.Buffer.Slice()</code> API to slice the buffer like a slice. (<a href="https://redirect.github.com/grpc/grpc-go/issues/8977">#8977</a>) <ul> <li>Special Thanks: <a href="https://github.com/ash2k"><code>@ash2k</code></a></li> </ul> </li> </ul> <h1>Performance Improvements</h1> <ul> <li>alts: Pool read buffers to lower memory utilization when sockets are unreadable. (<a href="https://redirect.github.com/grpc/grpc-go/issues/8964">#8964</a>)</li> <li>transport: Pool HTTP/2 framer read buffers to reduce idle memory consumption. Currently limited to Linux for ALTS and non-encrypted transports (TCP, Unix). To disable, set <code>GRPC_GO_EXPERIMENTAL_HTTP_FRAMER_READ_BUFFER_POOLING=false</code> and report any issues. (<a href="https://redirect.github.com/grpc/grpc-go/issues/9032">#9032</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/grpc/grpc-go/commit/caf0772c2bcb8bc15d43eb53448e921f34f0b7e8"><code>caf0772</code></a> Change version from 1.81.1-dev to 1.81.1 (<a href="https://redirect.github.com/grpc/grpc-go/issues/9122">#9122</a>)</li> <li><a href="https://github.com/grpc/grpc-go/commit/6ccbeebf058ede71e43a5ac28fada2a736573215"><code>6ccbeeb</code></a> Cherry-pick <a href="https://redirect.github.com/grpc/grpc-go/issues/9111">#9111</a> into v1.81.x (<a href="https://redirect.github.com/grpc/grpc-go/issues/9121">#9121</a>)</li> <li><a href="https://github.com/grpc/grpc-go/commit/b33c29e41b438e371c8504de9bdf64a80098cc29"><code>b33c29e</code></a> Cherry-pick <a href="https://redirect.github.com/grpc/grpc-go/issues/9081">#9081</a> into v1.81.x (<a href="https://redirect.github.com/grpc/grpc-go/issues/9102">#9102</a>)</li> <li><a href="https://github.com/grpc/grpc-go/commit/c45fae6d06a5c192b7b96418a2bc26a96b856834"><code>c45fae6</code></a> Change version to 1.81.1-dev (<a href="https://redirect.github.com/grpc/grpc-go/issues/9063">#9063</a>)</li> <li><a href="https://github.com/grpc/grpc-go/commit/cb18228317ff523e63d931b4058b0329585b7dcd"><code>cb18228</code></a> Change version to 1.81.0 (<a href="https://redirect.github.com/grpc/grpc-go/issues/9062">#9062</a>)</li> <li><a href="https://github.com/grpc/grpc-go/commit/96748f973e20bbfcafa19a8bdffc85ad5da138d1"><code>96748f9</code></a> Cherry-pick <a href="https://redirect.github.com/grpc/grpc-go/issues/9105">#9105</a> to 1.81.x (<a href="https://redirect.github.com/grpc/grpc-go/issues/9106">#9106</a>)</li> <li><a href="https://github.com/grpc/grpc-go/commit/91832222f0144f76527b630ca55cfea6e1aa015a"><code>9183222</code></a> Cherry pick <a href="https://redirect.github.com/grpc/grpc-go/issues/9055">#9055</a>, <a href="https://redirect.github.com/grpc/grpc-go/issues/9032">#9032</a> to v1.81.x (<a href="https://redirect.github.com/grpc/grpc-go/issues/9095">#9095</a>)</li> <li><a href="https://github.com/grpc/grpc-go/commit/5cba6da4211f3b130238c792937f5921741b616a"><code>5cba6da</code></a> Revert "deps: update dependencies for all modules (<a href="https://redirect.github.com/grpc/grpc-go/issues/9065">#9065</a>)" (<a href="https://redirect.github.com/grpc/grpc-go/issues/9067">#9067</a>)</li> <li><a href="https://github.com/grpc/grpc-go/commit/af8a9364aa7523ab24d214e9ef13e6ad64d5c5f9"><code>af8a936</code></a> deps: update dependencies for all modules (<a href="https://redirect.github.com/grpc/grpc-go/issues/9065">#9065</a>)</li> <li><a href="https://github.com/grpc/grpc-go/commit/cdc60dfaaadde45e16aa3c28237c0e655a722c1a"><code>cdc60df</code></a> transport: optimize heap allocations in ready reader and update syscall conne...</li> <li>Additional commits viewable in <a href="https://github.com/grpc/grpc-go/compare/v1.80.0...v1.81.1">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>
## What changed? Clarifies `temporal activity pause --help` to state that pausing an Activity does not stop or extend the Activity's Schedule-To-Close Timeout. Regenerated `internal/temporalcli/commands.gen.go` from `internal/temporalcli/commands.yaml`. ## Why? The existing help explains that Pause prevents future retries and does not interrupt some in-flight attempts, but it does not mention that Schedule-To-Close continues running while paused. That can surprise operators because "pause" can imply the Activity is safe from timing out. This adds the timeout caveat and points users to `temporal activity update-options` before a long pause. ## Testing ```bash go run ./cmd/gen-commands \ -input internal/temporalcli/commands.yaml \ -pkg temporalcli \ -context "*CommandContext" \ > internal/temporalcli/commands.gen.go go run ./cmd/temporal activity pause --help go test ./cmd/gen-commands ``` Verified the help output includes the Schedule-To-Close warning.
## Related issues <!-- Closes temporalio#123 --> ## What changed? - WISOTT - For more information, you can also view the relevant PR's: 1. Server PR: temporalio/temporal#10763 2. API PR: temporalio/api#808 ## Checklist <!-- Your PR should satisfy all these requirements. However, feel free to remove items that don't apply to the PR. Consider giving this checklist to an AI agent before opening your PR. --> **Stability** - [ ] Breaking changes are marked with 💥 in the PR title and release notes - [ ] Changes to JSON output (`-o json` / `-o jsonl`) are treated as breaking changes **Design** - [ ] This feature does not depend on Cloud-only APIs or behavior (it works against an OSS server) - [x] New commands follow `temporal <noun> <verb>` structure (e.g. `temporal workflow start`) - [x] New flags are named after the API concept, not the implementation mechanism (good: `--search-attribute`, bad: `--index-field`) - [x] New flags don't duplicate an existing flag that serves the same purpose - [x] New flags do not have short aliases without strong justification - [ ] Experimental features are marked with `(Experimental)` in `commands.yaml` **Help text** (see style guide at the top of `commands.yaml`) - [ ] All flags shown in help text and examples are implemented and functional - [ ] Summaries use sentence case and have no trailing period - [ ] Long descriptions end with a period and include at least one example invocation - [ ] Examples use long flags (`--namespace`, not `-n`), one flag per line - [ ] Placeholder values use `YourXxx` form (`YourWorkflowId`, `YourNamespace`) **Behavior** - [x] Results go to stdout; errors and warnings go to stderr - [x] Error messages are lowercase with no trailing punctuation **Tests** - [x] Added functional test(s) (`SharedServerSuite`) - [ ] Added unit test(s) (`func TestXxx`) where applicable ## Manual tests **Setup** Requires a server that includes temporalio/temporal#10763 and a workflow whose Task Queue is present in the target Worker Deployment Version. ```bash temporal server start-dev --headless temporal workflow start \ --type YourWorkflowType \ --task-queue YourTaskQueue \ --workflow-id YourWorkflowId ``` Use an existing Worker Deployment Version for the target: ```text Deployment name: YourDeploymentName Build ID: YourBuildId ``` **Happy path** ```bash temporal workflow update-options \ --workflow-id YourWorkflowId \ --versioning-override-behavior one_time \ --versioning-override-deployment-name YourDeploymentName \ --versioning-override-build-id YourBuildId ``` Expected output: ```text Update workflow options succeeded ``` Verify table output: ```bash temporal workflow describe \ --workflow-id YourWorkflowId ``` Expected: `OverrideBehavior` is `OneTime`, with `OverrideTargetVersionDeploymentName` and `OverrideTargetVersionBuildId` set. Verify JSON output: ```bash temporal workflow describe \ --workflow-id YourWorkflowId \ --output json ``` Expected: `versioningInfo.versioningOverride.oneTime.targetDeploymentVersion` contains the deployment name and build ID. **Error case** ```bash temporal workflow update-options \ --workflow-id YourWorkflowId \ --versioning-override-behavior one_time ``` Expected: ```text Error: missing deployment name and/or build id with 'one_time' behavior ``` ```bash echo $? ``` Expected: ```text 1 ``` **Composition** ```bash temporal workflow update-options \ --query 'WorkflowId = "YourWorkflowId"' \ --yes \ --versioning-override-behavior one_time \ --versioning-override-deployment-name YourDeploymentName \ --versioning-override-build-id YourBuildId ``` Expected: a batch update-options job is started. Use `temporal batch describe` to inspect the batch, then `temporal workflow describe` on an affected Workflow Execution to verify the one-time override.
## Related issues <!-- Closes temporalio#123 --> ## What changed? Bump ui-server to v2.50.1 for News Feed feature <!-- Describe what this PR does at a high level. -->
## Related issues Related to #[1104](temporalio#1104) ## What changed? <!-- Describe what this PR does at a high level. --> This adds a command-line option that configures the embedded UI server to disable the news feed feature. ## Checklist <!-- Your PR should satisfy all these requirements. However, feel free to remove items that don't apply to the PR. Consider giving this checklist to an AI agent before opening your PR. --> ## Manual tests <!-- Edit the code samples below to provide setup and happy-path and error-path testing instructions. --> **Setup #1 (default case)** ``` temporal server start-dev ``` **Happy path #1 (default case)** Open the Web UI and observe that the news fetch feature is enabled, as it is by default. This is visible by way of a megaphone icon in the top navigation. **Setup two (feature disabled)** ``` temporal server start-dev --ui-disable-news-fetch ``` **Happy path two (feature disabled)** Open the Web UI and observe that the news fetch feature is disabled, since the environment variable is set to disable it, as described in the documentation. This is evident by the megaphone icon being omitted from the top navigation and the Web UI not making a request for the feed. --------- Co-authored-by: alex.stanfield <13949480+chaptersix@users.noreply.github.com>
…temporalio#1112) ## Summary This consolidates the excellent groundwork in temporalio#980, temporalio#1076, and temporalio#981 into a single change, and verifies the result against a real Docusaurus 3.10.1 build. Huge thanks to @lennessyy — the approach here is entirely built on those PRs; this just stitches them together and irons out a few interactions between them. gen-docs now escapes the patterns that break Docusaurus MDX (JSX) compilation, on **every** path that writes a command description (including the new split paths): - bare angle-bracket placeholders in prose (e.g. `<base64-encoded-cert>`, `<key>`) → `\<...\>` - single-quoted JSON examples (e.g. `'{"a":"b"}'`, `'Key={"a":"b"}'`) → braces escaped in body text, backticked in option tables - custom heading IDs (e.g. `## Heading {#id}`) → `{/* #id */}`, the form that compiles under Docusaurus 3.10 and still produces the custom anchor Fenced code blocks and inline code spans are left untouched. It also adds the `-subdir` flag (subcommands of the named command are written to a subdirectory, e.g. `-subdir cloud` → `cloud/*.mdx`, with deeper subcommands nested as headings), and a generic auto-generated notice. ## What changed relative to the existing PRs All three PRs were on the right track. The differences here are about how they interact: - **temporalio#1076 (MDX escaping):** kept as the core of this change, including the `{#id}` → `{/* #id */}` heading conversion — which I confirmed is exactly right for the 3.10 upgrade (see verification below). Escaping is now also applied to the `-subdir` split output, so cloud docs get the same treatment. Re-added unit tests for the escaping logic. - **temporalio#980 (`-subdir`):** kept the split mechanism. Unified the `encodeJSONExample` regex so it matches both `'{...}'` and `'Key={...}'` (the standalone-vs-key-value cases the two PRs handled separately). Intentionally did **not** carry over temporalio#980's index-page generation: `command-reference/index.mdx` and `cloud/index.mdx` are hand-maintained on the docs site (custom ordering, the `ReleaseNoteHeader` component), so gen-docs deliberately does not emit them — generating them would overwrite that curated content. The companion docs PR restores those files after each regeneration. - **temporalio#981 (generic notice):** folded in — the previous notice pointed at paths that no longer exist and don't hold for cloud-cli inputs. ## Companion PR temporalio/documentation#4836
## Related issues <!-- Closes temporalio#123 --> ## What changed? Bump UI server v2.52.0 ## Checklist <!-- Your PR should satisfy all these requirements. However, feel free to remove items that don't apply to the PR. Consider giving this checklist to an AI agent before opening your PR. --> **Stability** - [ ] Breaking changes are marked with 💥 in the PR title and release notes - [ ] Changes to JSON output (`-o json` / `-o jsonl`) are treated as breaking changes **Design** - [ ] This feature does not depend on Cloud-only APIs or behavior (it works against an OSS server) - [ ] New commands follow `temporal <noun> <verb>` structure (e.g. `temporal workflow start`) - [ ] New flags are named after the API concept, not the implementation mechanism (good: `--search-attribute`, bad: `--index-field`) - [ ] New flags don't duplicate an existing flag that serves the same purpose - [ ] New flags do not have short aliases without strong justification - [ ] Experimental features are marked with `(Experimental)` in `commands.yaml` **Help text** (see style guide at the top of `commands.yaml`) - [ ] All flags shown in help text and examples are implemented and functional - [ ] Summaries use sentence case and have no trailing period - [ ] Long descriptions end with a period and include at least one example invocation - [ ] Examples use long flags (`--namespace`, not `-n`), one flag per line - [ ] Placeholder values use `YourXxx` form (`YourWorkflowId`, `YourNamespace`) **Behavior** - [ ] Results go to stdout; errors and warnings go to stderr - [ ] Error messages are lowercase with no trailing punctuation **Tests** - [ ] Added functional test(s) (`SharedServerSuite`) - [ ] Added unit test(s) (`func TestXxx`) where applicable
…n used (temporalio#1116) ## Related issues CLDDX-141 ## What changed? When delegating to an extension (e.g. `temporal-cloud`, non-zero exit codes don't make it back to the user, so there's no programmatic way to know if the command succeeded. This change uses the exit code of the extension as the exit command for the `temporal` command that wrapped it. ## Checklist **Stability** - [ ] Breaking changes are marked with 💥 in the PR title and release notes - [ ] Changes to JSON output (`-o json` / `-o jsonl`) are treated as breaking changes **Design** - [ ] This feature does not depend on Cloud-only APIs or behavior (it works against an OSS server) - [ ] New commands follow `temporal <noun> <verb>` structure (e.g. `temporal workflow start`) - [ ] New flags are named after the API concept, not the implementation mechanism (good: `--search-attribute`, bad: `--index-field`) - [ ] New flags don't duplicate an existing flag that serves the same purpose - [ ] New flags do not have short aliases without strong justification - [ ] Experimental features are marked with `(Experimental)` in `commands.yaml` **Help text** (see style guide at the top of `commands.yaml`) - [ ] All flags shown in help text and examples are implemented and functional - [ ] Summaries use sentence case and have no trailing period - [ ] Long descriptions end with a period and include at least one example invocation - [ ] Examples use long flags (`--namespace`, not `-n`), one flag per line - [ ] Placeholder values use `YourXxx` form (`YourWorkflowId`, `YourNamespace`) **Behavior** - [ ] Results go to stdout; errors and warnings go to stderr - [ ] Error messages are lowercase with no trailing punctuation **Tests** - [ ] Added functional test(s) (`SharedServerSuite`) - [ ] Added unit test(s) (`func TestXxx`) where applicable ## Manual tests **Setup** Create an executable file named `temporal-exit` somewhere on your PATH ``` #!/bin/bash exit $1 ``` **Happy path** ``` $ temporal exit 0; echo $? 0 ``` **Error case** ``` $ temporal exit 1; echo $? 1 ``` Co-authored-by: Alex Stanfield <13949480+chaptersix@users.noreply.github.com>
Use the proper name for the SA NexusEndpoint -> Endpoint. ## Related issues <!-- Closes temporalio#123 --> ## What changed? Fix the description for list. ## Checklist <!-- Your PR should satisfy all these requirements. However, feel free to remove items that don't apply to the PR. Consider giving this checklist to an AI agent before opening your PR. --> **Stability** - [ ] Breaking changes are marked with 💥 in the PR title and release notes - [ ] Changes to JSON output (`-o json` / `-o jsonl`) are treated as breaking changes **Design** - [ ] This feature does not depend on Cloud-only APIs or behavior (it works against an OSS server) - [ ] New commands follow `temporal <noun> <verb>` structure (e.g. `temporal workflow start`) - [ ] New flags are named after the API concept, not the implementation mechanism (good: `--search-attribute`, bad: `--index-field`) - [ ] New flags don't duplicate an existing flag that serves the same purpose - [ ] New flags do not have short aliases without strong justification - [ ] Experimental features are marked with `(Experimental)` in `commands.yaml` **Help text** (see style guide at the top of `commands.yaml`) - [ ] All flags shown in help text and examples are implemented and functional - [ ] Summaries use sentence case and have no trailing period - [ ] Long descriptions end with a period and include at least one example invocation - [ ] Examples use long flags (`--namespace`, not `-n`), one flag per line - [ ] Placeholder values use `YourXxx` form (`YourWorkflowId`, `YourNamespace`) **Behavior** - [ ] Results go to stdout; errors and warnings go to stderr - [ ] Error messages are lowercase with no trailing punctuation **Tests** - [ ] Added functional test(s) (`SharedServerSuite`) - [ ] Added unit test(s) (`func TestXxx`) where applicable ## Manual tests <!-- Edit the code samples below to provide setup and happy-path and error-path testing instructions. --> **Setup** ``` temporal server start-dev --headless temporal workflow start \ --type YourWorkflowType \ --task-queue YourTaskQueue \ --workflow-id YourWorkflowId ``` **Happy path** ``` $ temporal <command> \ --flag value <expected output> ``` **Error case** ``` $ temporal <command> \ --invalid-combination Error: <expected error message> $ echo $? 1 ``` **Composition** <!-- How might a user combine this with existing commands? e.g. using the output of one command as input to another --> ``` $ temporal <command-one> ... $ temporal <command-two> --flag <value-from-above> <expected output> ```
Owner
Author
|
Recreating after syncing the fork default branch so the test diff is limited to the merge-queue CI changes. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fork-local validation of GitHub merge queue support. Adds the
merge_grouptrigger to required CI workflows and ensures Validate Server Version runs for merge-group commits.