v0.18.0
googleworkspace/cliv0.18.0Mar 18, 2026by github-actions[bot]
AI Summary
Major release introducing new Gmail helpers and MIME construction improvements.
Key Highlights
- Migrated mail helpers to mail-builder for RFC-compliant MIME construction.
- Added --attach flag for uploading files up to 35MB using upload endpoint.
- Added +read helper to extract message bodies and headers.
- Auto-populated From header with display names from send-as settings.
New Features
- New +read helper for mail extraction.
- Enhanced mail helpers with --attach and --from flags.
- Migration to mail-builder crate.
Full Release Notes
## Release Notes ### Minor Changes - 908cf73: feat(gmail): auto-populate From header with display name from send-as settings Fetch the user's send-as identities to set the From header with a display name in all mail helpers (+send, +reply, +reply-all, +forward), matching Gmail web client behavior. Also enriches bare `--from` emails with their configured display name. - 6e4daaf: Gmail helpers rollup: mail-builder migration, --attach flag (upload endpoint), +read helper - Migrate `+send`, `+reply`, `+reply-all`, and `+forward` to the `mail-builder` crate for RFC-compliant MIME construction - Add `--from` flag to `+send` for send-as alias support - Add `-a`/`--attach` flag to all mail helpers (`+send`, `+reply`, `+reply-all`, `+forward`) with `mime_guess2` auto-detection, 25MB size validation, and upload endpoint support (35MB API limit vs 5MB metadata-only) - Add `+read` helper to extract message body and headers (text, HTML, or JSON output) - Make `OriginalMessage.thread_id` optional (`Option<String>`) for draft compatibility - RFC 2822 display name quoting is handled natively by `mail-builder` - Introduce `UploadSource` enum in executor for type-safe upload strategies ### Patch Changes - 1e90380: fix(gmail): remove dead `--attachment` arg from `+send` The `+send` subcommand defined a duplicate `"attachment"` arg alongside the `"attach"` arg already provided by `common_mail_args`. Since `parse_attachments` reads `"attach"`, the `--attachment` flag was silently ignored. Removed the dead duplicate. - 908cf73: fix(gmail): handle reply-all to own message correctly Reply-all to a message you sent no longer errors with "No To recipient remains." The original To recipients are now used as reply targets, matching Gmail web client behavior. - 2e909ae: Consolidate terminal sanitization, coloring, and output helpers into a new `output.rs` module. Fixes raw ANSI escape codes in `watch.rs` that bypassed `NO_COLOR` and TTY detection, upgrades `sanitize_for_terminal` to also strip dangerous Unicode characters (bidi overrides, zero-width spaces, directional isolates), and sanitizes previously raw API error body and user query outputs. ## Install gws 0.18.0 ### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://github.com/googleworkspace/cli/releases/download/v0.18.0/gws-installer.sh | sh ``` ### Install prebuilt binaries via powershell script ```sh powershell -ExecutionPolicy Bypass -c "irm https://github.com/googleworkspace/cli/releases/download/v0.18.0/gws-installer.ps1 | iex" ``` ### Install prebuilt binaries into your npm project ```sh npm install @googleworkspace/cli@0.18.0 ``` ## Download gws 0.18.0 | File | Platform | Checksum | |--------|----------|----------| | [gws-aarch64-apple-darwin.tar.gz](https://github.com/googleworkspace/cli/releases/download/v0.18.0/gws-aarch64-apple-darwin.tar.gz) | Apple Silicon macOS | [checksum](https://github.com/googleworkspace/cli/releases/download/v0.18.0/gws-aarch64-apple-darwin.tar.gz.sha256) | | [gws-x86_64-apple-darwin.tar.gz](https://github.com/googleworkspace/cli/releases/download/v0.18.0/gws-x86_64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://github.com/googleworkspace/cli/releases/download/v0.18.0/gws-x86_64-apple-darwin.tar.gz.sha256) | | [gws-x86_64-pc-windows-msvc.zip](https://github.com/googleworkspace/cli/releases/download/v0.18.0/gws-x86_64-pc-windows-msvc.zip) | x64 Windows | [checksum](https://github.com/googleworkspace/cli/releases/download/v0.18.0/gws-x86_64-pc-windows-msvc.zip.sha256) | | [gws-aarch64-unknown-linux-gnu.tar.gz](https://github.com/googleworkspace/cli/releases/download/v0.18.0/gws-aarch64-unknown-linux-gnu.tar.gz) | ARM64 Linux | [checksum](https://github.com/googleworkspace/cli/releases/download/v0.18.0/gws-aarch64-unknown-linux-gnu.tar.gz.sha256) | | [gws-x86_64-unknown-linux-gnu.tar.gz](https://github.com/googleworkspace/cli/releases/download/v0.18.0/gws-x86_64-unknown-linux-gnu.tar.gz) | x64 Linux | [checksum](https://github.com/googleworkspace/cli/releases/download/v0.18.0/gws-x86_64-unknown-linux-gnu.tar.gz.sha256) | | [gws-aarch64-unknown-linux-musl.tar.gz](https://github.com/googleworkspace/cli/releases/download/v0.18.0/gws-aarch64-unknown-linux-musl.tar.gz) | ARM64 MUSL Linux | [checksum](https://github.com/googleworkspace/cli/releases/download/v0.18.0/gws-aarch64-unknown-linux-musl.tar.gz.sha256) | | [gws-x86_64-unknown-linux-musl.tar.gz](https://github.com/googleworkspace/cli/releases/download/v0.18.0/gws-x86_64-unknown-linux-musl.tar.gz) | x64 MUSL Linux | [checksum](https://github.com/googleworkspace/cli/releases/download/v0.18.0/gws-x86_64-unknown-linux-musl.tar.gz.sha256) | ## Verifying GitHub Artifact Attestations The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the [GitHub CLI](https://cli.github.com/manual/gh_attestation_verify): ```sh gh attestation verify <file-path of downloaded artifact> --repo googleworkspace/cli ``` You can also download the attestation from [GitHub](https://github.com/googleworkspace/cli/attestations) and verify against that directly: ```sh gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> ```