Previously +append always used hardcoded "A1" range, limiting appends
to the first sheet. Add optional --range flag (default: "A1") to allow
appending to any sheet tab using A1 notation.
* refactor: migrate skill registry from yaml to toml to drop unmaintained serde_yaml dependency
* chore: add changeset for yaml to toml migration
* fix(tests): resolve TOML test suite formatting
* fix(auth): implement platform-aware keyring storage
* chore: regenerate skills [skip ci]
* fix(auth): address PR comments on error handling and TOCTOU vulnerabilities
* fix(test): isolate config directory to prevent race conditions during cargo test
* refactor(auth): deduplicate key generation logic in credential store
* fix(test): execute credential tests serially to prevent environment pollution
* fix(auth): sanitize os keyring error strings and handle missing file fallbacks
This commit removes the inadvertently included skills, uses output::sanitize_for_terminal to protect the user from escape sequence injection via keyring errors, and ensures removal of the fallback file properly alerts the user when an io error occurs.
* chore: regenerate skills [skip ci]
---------
Co-authored-by: jpoehnelt-bot <jpoehnelt-bot@users.noreply.github.com>
Co-authored-by: googleworkspace-bot <googleworkspace-bot@users.noreply.github.com>
* feat: add HTTP proxy support via environment variables
When http_proxy/https_proxy/all_proxy environment variables are set,
use reqwest (which natively supports proxy) for token refresh instead
of yup-oauth2's hyper-based client (which doesn't support proxy).
This enables gws to work in environments that require HTTP proxy to
access Google APIs (e.g., users in China).
Changes:
- Cargo.toml: Enable reqwest's default features including proxy support
- src/auth.rs: Add proxy-aware token refresh using reqwest as fallback
Fixes#422
* feat: add proxy support for auth login flow
When proxy env vars are set, use a custom OAuth flow with reqwest
for token exchange instead of yup-oauth2's hyper-based client.
Changes to auth_commands.rs:
- Add login_with_proxy_support() for proxy-aware OAuth login
- Add exchange_code_with_reqwest() for token exchange via reqwest
- Detect proxy env vars and choose appropriate flow
* fix: address proxy auth review feedback
* fix: reuse shared reqwest client for auth flows
When --draft is set, calls users.drafts.create instead of
users.messages.send. Message construction is identical; only the
API method and metadata wrapper change. Threaded drafts (replies
and forwards) preserve threadId in the draft metadata.