diff --git a/.changeset/fix-send-attachment-arg.md b/.changeset/fix-send-attachment-arg.md deleted file mode 100644 index 0e376ea5..00000000 --- a/.changeset/fix-send-attachment-arg.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@googleworkspace/cli": patch ---- - -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. diff --git a/.changeset/gmail-default-sender.md b/.changeset/gmail-default-sender.md deleted file mode 100644 index 14a7952d..00000000 --- a/.changeset/gmail-default-sender.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@googleworkspace/cli": minor ---- - -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. diff --git a/.changeset/gmail-helpers-rollup.md b/.changeset/gmail-helpers-rollup.md deleted file mode 100644 index dc293c13..00000000 --- a/.changeset/gmail-helpers-rollup.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@googleworkspace/cli": minor ---- - -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`) for draft compatibility -- RFC 2822 display name quoting is handled natively by `mail-builder` -- Introduce `UploadSource` enum in executor for type-safe upload strategies diff --git a/.changeset/gmail-self-reply-fix.md b/.changeset/gmail-self-reply-fix.md deleted file mode 100644 index 7d0bffab..00000000 --- a/.changeset/gmail-self-reply-fix.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@googleworkspace/cli": patch ---- - -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. diff --git a/.changeset/output-hygiene.md b/.changeset/output-hygiene.md deleted file mode 100644 index da066051..00000000 --- a/.changeset/output-hygiene.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@googleworkspace/cli": patch ---- - -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. diff --git a/CHANGELOG.md b/CHANGELOG.md index f70e0df8..7864bcf6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,38 @@ # @googleworkspace/cli +## 0.18.0 + +### 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`) 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. + ## 0.17.0 ### Minor Changes diff --git a/Cargo.lock b/Cargo.lock index fc347bc4..10e12097 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -896,7 +896,7 @@ dependencies = [ [[package]] name = "gws" -version = "0.17.0" +version = "0.18.0" dependencies = [ "aes-gcm", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index b7b87d5a..1f73b8f7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,7 @@ [package] name = "gws" -version = "0.17.0" +version = "0.18.0" edition = "2021" description = "Google Workspace CLI — dynamic command surface from Discovery Service" license = "Apache-2.0" diff --git a/flake.lock b/flake.lock index 1f675e1e..8b5984ee 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1773646010, - "narHash": "sha256-iYrs97hS7p5u4lQzuNWzuALGIOdkPXvjz7bviiBjUu8=", + "lastModified": 1773734432, + "narHash": "sha256-IF5ppUWh6gHGHYDbtVUyhwy/i7D261P7fWD1bPefOsw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5b2c2d84341b2afb5647081c1386a80d7a8d8605", + "rev": "cda48547b432e8d3b18b4180ba07473762ec8558", "type": "github" }, "original": { diff --git a/package.json b/package.json index d27568c0..10f4de27 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@googleworkspace/cli", - "version": "0.17.0", + "version": "0.18.0", "private": true, "description": "Google Workspace CLI — dynamic command surface from Discovery Service", "license": "Apache-2.0",