Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion docs/release-notes/2.5.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,17 @@ Every asset carries a GitHub build-provenance attestation. Linux binaries are st

- **`runtime:check`:** the hidden packaging check reports the native binary's version, commit, build date and compilation target, and exits 0 when it runs successfully. Its output and help replace the PHP runtime and extension report from 2.x.
- **Connection URLs:** runtime base URLs containing user information, queries, fragments or whitespace are refused before a request. Use token options or profile token references for authentication.
- **Doctor output:** human diagnostics show untrusted formatter markup literally and escape terminal controls and embedded line breaks. Machine JSON retains Server data as structurally encoded values.
- **Doctor output:** human diagnostics show untrusted formatter markup literally and escape terminal controls and embedded line breaks, like the other commands' human output. Machine JSON retains Server data as structurally encoded values.
- **Shell completion:** generating a script requires an executable name made of ASCII letters, digits, dots, underscores and hyphens, starting with a letter or underscore. Unsafe names are refused before any shell code is emitted. Completion debug logs now use a private `completion` directory alongside the CLI config file, and refuse unsafe log entries instead of following temporary-file links.
- **Prompting without a terminal:** 2.x treated a non-terminal stdin as interactive and printed a "Do you want to run … instead?" prompt to stdout before exiting 1. 2.5.0 prompts only on a terminal; otherwise it reports the error on stderr, as 2.x did with `-n`.
- **`--format=xml`:** this works in the standalone binary. The 2.x standalone binary failed with a PHP fatal error, because it lacked the DOM extension. The output matches the 2.x PHAR.
- **IDs and names in request paths:** these are now percent-encoded. 2.x inserted workflow IDs, signal, query and update names and similar values into the URL unencoded, so a value containing `/`, `?`, `#`, `%` or a space reached the wrong route. Values made only of letters, digits and `-._~` are sent unchanged.
- **Empty and dot IDs:** an empty ID or name, `.` or `..` is refused with exit 2 before any request. In 2.x these produced a different URL.
- **Redirects:** `dw` makes one attempt to the configured URL and refuses an HTTP redirect instead of following it. A redirect is never reported as a completed command. Use the Server's actual URL.
- **Commands that change state are sent once:** a start, signal, update, cancel, terminate, schedule, namespace, worker or task change is never retried automatically. When the response is lost the command exits 3 and says the outcome is unknown. For signals and updates the error names the request ID, and the next steps say to check workflow history and command receipts before retrying with the same ID.
- **`--tls-verify=false`:** this works against HTTPS as in 2.x, and every command that connects this way now also prints one warning on stderr, also with `--json` and `-q`.
- **Server text in human output:** messages, names and values from the Server are printed as text. Console markup in them is shown literally, and terminal control characters and line breaks are escaped. Machine JSON and JSONL keep the Server's values unchanged.
- **Command keys for signals and updates:** `workflow:signal` and `workflow:update` send a request ID: `--request-id`, or one generated per invocation as `cli-signal-…` or `cli-update-…`. The ID is printed with the result and included in error output. This follows the 2.x source after 2.3.x (cli#61); published 2.3.x sent signals without a key.
- **Validation errors with `--json`:** an invalid `--status` or similar canonical option value returns the structured JSON error with exit 2. Published 2.3.x wrote these to stderr.
- **`workflow:list-runs`:** prints one Server response page and leaves its `next_page_token` for the caller. It refuses a response that names a different workflow or operation.
- **Malformed Server responses:** where 2.x printed a PHP warning or a PHP type error naming its internal source path, `dw` prints the line with an empty value, or an error that names the malformed field.
Loading