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
--fromemails with their configured display name. -
6e4daaf: Gmail helpers rollup: mail-builder migration, --attach flag (upload endpoint), +read helper
- Migrate
+send,+reply,+reply-all, and+forwardto themail-buildercrate for RFC-compliant MIME construction - Add
--fromflag to+sendfor send-as alias support - Add
-a/--attachflag to all mail helpers (+send,+reply,+reply-all,+forward) withmime_guess2auto-detection, 25MB size validation, and upload endpoint support (35MB API limit vs 5MB metadata-only) - Add
+readhelper to extract message body and headers (text, HTML, or JSON output) - Make
OriginalMessage.thread_idoptional (Option<String>) for draft compatibility - RFC 2822 display name quoting is handled natively by
mail-builder - Introduce
UploadSourceenum in executor for type-safe upload strategies
- Migrate
Patch Changes
-
1e90380: fix(gmail): remove dead
--attachmentarg from+sendThe
+sendsubcommand defined a duplicate"attachment"arg alongside the
"attach"arg already provided bycommon_mail_args. Sinceparse_attachments
reads"attach", the--attachmentflag 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.rsmodule. Fixes raw ANSI escape codes inwatch.rsthat bypassedNO_COLORand TTY detection, upgradessanitize_for_terminalto 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
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/googleworkspace/cli/releases/download/v0.18.0/gws-installer.sh | shInstall prebuilt binaries via powershell script
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
npm install @googleworkspace/cli@0.18.0Download gws 0.18.0
| File | Platform | Checksum |
|---|---|---|
| gws-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
| gws-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
| gws-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| gws-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
| gws-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
| gws-aarch64-unknown-linux-musl.tar.gz | ARM64 MUSL Linux | checksum |
| gws-x86_64-unknown-linux-musl.tar.gz | x64 MUSL Linux | checksum |
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:
gh attestation verify <file-path of downloaded artifact> --repo googleworkspace/cliYou can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>