Skip to content

Releases: openclaw/gogcli

v0.16.0

10 May 15:18
v0.16.0
280eea7

Choose a tag to compare

0.16.0

Added

  • Admin: expand admin users create with GAM-style aliases, generated passwords, suspended/archived creation, recovery contact fields, and password hash metadata; add admin users delete for cleanup.
  • Admin: add admin orgunits commands to list, inspect, create, update, and delete Workspace organizational units.
  • Sites: add Drive-backed sites commands to list, search, inspect, and open New Google Sites. (#574) β€” thanks @thewilloftheshadow.
  • Analytics/Search Console: add GA4 analytics accounts|report plus Search Console site, search analytics, and sitemap commands. (#402) β€” thanks @haresh-seenivasagan.
  • Gmail: add gmail send --body-html-file for sending HTML email bodies from files without shell command substitution. (#575) β€” thanks @toruvieI.
  • YouTube: add youtube (alias yt) command group for YouTube Data API v3 β€” list activities, videos, playlists, comment threads, and channels; API key via config youtube_api_key or GOG_YOUTUBE_API_KEY; OAuth for --mine with gog auth add ... --services youtube. (#313) β€” thanks @satputekuldip.
  • Forms: add quiz grading flags to forms add-question so choice and short-answer questions can set answer keys and point values when created. (#570) β€” thanks @dbernaltbn.
  • Calendar: resolve event locations through Places API with --location-search / --place-id, storing the resolved Place ID in private extended properties. (#140 / #138) β€” thanks @salmonumbrella.
  • Drive: add drive changes start-token/list/watch/stop commands for incremental sync and webhook automation. (#335)
  • Drive: add drive activity query for Drive Activity API v2 audit trails with item, folder, time, and action filters. (#337)
  • Meet: add meet create/get/update/end/history/participants commands for Google Meet meeting spaces and conference records. (#468) β€” thanks @regaw-leinad.
  • Forms: add forms publish to publish/unpublish existing forms and return the responder URL for automated form creation flows. (#565 / #564) β€” thanks @bogdanovich.

Fixed

  • Auth: make auth service-account status show stored, a clear missing-key message, and the exact setup hint when no service-account key is configured.
  • Admin: retry the post-create state update so admin users create --suspended and --archived remain reliable while the Admin SDK finishes provisioning the new user.
  • Calendar: make calendar update --with-meet idempotent when an event already has conference data, add explicit --regenerate-meet, and show recurringEventId in plain event output. (#576 / #573) β€” thanks @alexisperumal and @NodeJSmith.
  • Release: fail closed when macOS signing secrets are missing and verify Darwin release assets are not ad-hoc signed, so Homebrew upgrades keep stable Keychain trust. (#569) β€” thanks @aaroneden.
  • Auth: list one row per OAuth client when the same account is authorized under multiple clients, and let auth list --client filter that token bucket. (#563) β€” thanks @UnPractical91.
  • Docs: clarify how to pass file-keyring environment into headless OpenClaw/systemd agent processes. (#566) β€” thanks @chsbusch-dot.
  • Docs: avoid infinite loops when local Markdown parsing ends on Thai, CJK, emoji, or other multi-byte runes. (#560 / #559) β€” thanks @ninyawee.
  • Agent skill: replace stale bundled gog skill paths with the current docs and auth package locations. (#558 / #557) β€” thanks @WadydX.
  • CI: run the docs validation gate in GitHub Actions and the local make ci target. (#562 / #561) β€” thanks @WadydX.

v0.15.0

05 May 05:49
v0.15.0
e0338d5

Choose a tag to compare

0.15.0

Added

  • Export exact Google API JSON when the normal CLI view is too lossy: docs raw, sheets raw, slides raw, drive raw, gmail raw, calendar raw, people raw, contacts raw, tasks raw, and forms raw, with --pretty, safer Drive defaults, Sheets grid-data warnings, and a raw-output security audit. (#495, #496) β€” thanks @karbassi.
  • Audit Drive storage without changing files: drive tree, drive du, and drive inventory now report folder contents, sizes, and inventory data for cleanup/review workflows. (#116) β€” thanks @rohan-patnaik.
  • Find duplicate contacts safely: contacts dedupe is preview-only, matches by email/phone by default, supports opt-in name matching, and emits JSON/table merge plans without applying changes. (#116) β€” thanks @rohan-patnaik.
  • Read Gmail messages in agent-safe form: gmail get --sanitize-content / --safe and gmail thread get --sanitize-content return sanitized content without exposing raw Gmail payloads in JSON. (#238, #220) β€” thanks @urasmutlu.
  • Ship official container images: release tags now publish a non-root GHCR Docker image, with file-keyring docs for container automation. (#539, #444) β€” thanks @HuckOps and @rdehuyss.
  • Request custom Drive fields: drive ls --fields and drive get --fields pass Drive API field masks for data beyond the default JSON set. (#495) β€” thanks @karbassi.
  • Format Google Docs from the CLI: docs format and plain-text docs write formatting flags cover fonts, colors, bold/italic/underline/strikethrough, alignment, and line spacing. (#479) β€” thanks @mmaghsoodnia.
  • Manage Google Docs tabs: docs add-tab, docs rename-tab, docs delete-tab, plus tab-scoped Markdown append and find-replace flows. (#547, #541) β€” thanks @chopenhauer and @donbowman.
  • Work with structured Google Sheets tables: sheets table list/get/create/delete, sheets table append, and header-safe sheets table clear. (#470) β€” thanks @Pedrohgv.
  • Format Sheets visually: sheets conditional-format and sheets banding add rule-based formatting and alternating color banded ranges. (#378) β€” thanks @codBang.
  • Add Meet links to existing calendar events with calendar update --with-meet. (#538) β€” thanks @alexisperumal.
  • Move calendar events between calendars with calendar move / calendar transfer, including organizer changes. (#448) β€” thanks @markusbkoch.
  • Export Gmail filters as Gmail WebUI-importable Atom XML, while keeping API JSON export via --format json. (#174) β€” thanks @gwpl.
  • Build safer agent binaries with baked agent-safe, readonly, and full safety profiles, fail-closed command filtering, filtered help/schema output, docs, and build tooling. (#366, #239) β€” thanks @drewburchfield.
  • Use gog from coding agents more safely with the bundled gog skill for JSON-first Google Workspace automation. (#353, #451) β€” thanks @TimPietrusky and @sluramod.

Fixed

  • Make full-mailbox backups survive large Gmail exports by promoting completed checkpoint shards into the final manifest and byte-splitting fallback message shards before GitHub rejects oversized blobs.
  • Make backup exports more resumable and fault-tolerant by streaming decrypted shards, preserving Gmail Markdown mirrors, handling very large JSONL rows, and writing Markdown fallbacks for malformed MIME messages instead of aborting.
  • Keep agent safety profiles harder to patch by compiling baked policies into generated hash switches instead of embedding raw allow/deny YAML strings. (#540) β€” thanks @drewburchfield.
  • Show correct versions for go install ...@tag binaries by inferring module versions from Go build info when linker metadata is absent. (#545, #544) β€” thanks @joshavant.
  • Accept the documented calendar events list / ls selector forms, including positional calendar IDs, --cal, --calendars, and --all. (#546) β€” thanks @BCudeOpenClaw.
  • Keep docs find-replace --dry-run read-only while still reporting match counts, and allow empty replacement strings to delete matches safely. (#542) β€” thanks @chrismdp.

v0.14.0

28 Apr 09:38
v0.14.0
469f4b4

Choose a tag to compare

0.14.0

Added

  • Backup: add gog backup with age-encrypted Git shards, Gmail labels/raw message export, Calendar/Contacts/Tasks/Drive metadata adapters, manifest status, full decrypt-and-verify, shard cat, local plaintext export, docs, and security-focused regression coverage.
  • Backup: expand gog backup push --services all with Drive content export/download, Gmail settings, native Workspace Docs/Sheets/Slides/Form data, Apps Script projects, Chat, Classroom, best-effort optional service error shards, and plaintext Drive file export.
  • Backup: extend --services all with Drive permissions/comments/revisions, Calendar ACL/settings/colors, contact groups, Cloud Identity groups, Workspace Admin Directory users/groups/members, Keep notes, and local Gmail message caching for resumable full-mailbox fetches.
  • Backup: add gog backup export --gmail-format markdown for local readable Gmail mirrors with Markdown notes and extracted attachment files.
  • Gmail: add gmail messages search --body-format html for returning HTML message bodies when --include-body is used. (#520) β€” thanks @alexknowshtml.
  • Contacts: add contacts export for vCard 4.0 .vcf exports by resource, email/name search, or all contacts, including best-effort label categories. (#519, #500) β€” thanks @dinakars777.
  • Docs: add experimental docs export --tab / drive download --tab to export a single Google Docs tab as PDF, DOCX, text, Markdown, or HTML. (#535) β€” thanks @johnbenjaminlewis.
  • Slides: add slides insert-text and slides replace-text for editing existing slide text elements and replacing template tokens. (#521) β€” thanks @chrissanchez-iops.
  • Drive: add drive search --drive and --parent for scoping search to a shared drive or folder. (#525) β€” thanks @LeanSheng.
  • Calendar: add --start-timezone / --end-timezone to calendar create and calendar update for preserving named IANA event timezones when RFC3339 inputs only carry numeric offsets. (#422)
  • Contacts: include birthdays in contacts list and contacts search text and JSON output. (#441)
  • Auth: add gog auth doctor to diagnose keyring backend/password drift, unreadable file-keyring tokens, and refresh-token failures such as Workspace invalid_rapt. (#377, #338)
  • Backup: bound individual Drive content exports with --drive-content-timeout so one stuck Google export records an encrypted error row instead of blocking the full backup.
  • Backup: add Gmail message-list checkpoints, streaming shard construction, and stderr progress counters so full-mailbox backups can resume cleanly after interruption without keeping every raw message in RAM.
  • Backup: push encrypted incomplete Gmail checkpoint commits during long cached fetches so day-scale mailbox backups have offsite progress before the final manifest is committed.
  • Backup: push Gmail checkpoint commits through a single ordered background queue so cached fetches continue while GitHub uploads run.
  • Slides docs: document the Markdown structure accepted by slides create-from-markdown. (#497)
  • Google API: expose a reusable authenticated HTTP client for commands that need custom HTTP policies. (#534) β€” thanks @johnbenjaminlewis.

Fixed

  • Auth: keep gog auth list and gog auth tokens list useful when one file-keyring token cannot be decrypted; unreadable entries are now reported instead of aborting the whole listing. (#377)
  • Auth: time out Linux D-Bus keyring write operations and report when OAuth completed but saving the refresh token failed, so manual auth no longer looks like a stuck paste when token persistence is blocked. (#130)
  • Auth: store Google OIDC sub claims with OAuth tokens and migrate matching subject-keyed accounts when a Google email rename is reauthorized. (#504)
  • Gmail: build outbound Date headers with the configured timezone so replies do not inherit a wrong host-local offset. (#514, #472) β€” thanks @dinakars777.
  • Gmail: auto-fill draft reply subjects from the original message when gmail drafts create --reply-to-message-id omits --subject. (#488) β€” thanks @jbowerbir.
  • Gmail: fall back to the People profile name for primary-account From headers when Gmail send-as settings omit a display name. (#431) β€” thanks @moeedahmed.
  • Gmail: expose reply threading headers in default gmail get --format metadata output and fail explicit reply targets that cannot provide a Message-ID. (#528, #512) β€” thanks @solomonneas.
  • Gmail: apply Gmail system-label filters for searches like in:spam is:unread so thread, message, and batch message searches do not return read spam. (#449)
  • Gmail: preserve renewed watch expiration fields when a long-running gmail watch serve process records push delivery state after gmail watch renew runs separately. (#526)
  • Gmail: reuse the shared paginated list runner for thread and message search so --all, --page, text, and JSON output stay consistent.
  • Gmail: clarify that gmail batch delete is permanent and point default-scope workflows at gmail trash. (#151)
  • Drive/Docs/Sheets/Slides: treat --out - as stdout for downloads and exports instead of creating -/-.ext files; reject --json --out - to keep byte streams parseable. (#286)
  • Docs: deprecate editing-command --tab-id in favor of --tab, and resolve tab titles to canonical tab IDs before mutations. (#533) β€” thanks @johnbenjaminlewis.
  • Docs: convert Markdown formatting for docs write --append --markdown instead of appending raw Markdown syntax. (#530, #272) β€” thanks @eric-x-liu.
  • Docs: include available tab names when docs cat --tab / structure lookup cannot find the requested tab. (#532) β€” thanks @johnbenjaminlewis.
  • Docs: size remote Markdown images consistently for docs write --replace --markdown by reusing the Docs image insertion path after Drive conversion, and return a clear error for local image paths that the Docs API cannot fetch directly. (#518) β€” thanks @vinothd-oai.
  • Drive: print large upload progress to stderr while keeping JSON output parseable. (#529)
  • Drive: include hasThumbnail and thumbnailLink in drive ls, drive search, and drive get JSON responses. (#486) β€” thanks @gtapps.
  • Drive: include driveId in drive ls, drive search, and drive get field masks so Shared Drive files can be identified in JSON output. (#524) β€” thanks @LeanSheng.
  • Calendar: display calendar events times and JSON local fields in the calendar timezone instead of preserving arbitrary event offsets. (#493)
  • Email tracking: add versioned tracking-key rotation so new pixels use the current key while old tracking ids keep decrypting through prior keys. (#293)
  • Email tracking: deduplicate repeated pixel opens and cap recorded opens per IP per hour to reduce D1 abuse from replay or high-volume requests. (#294)
  • Email tracking: add daily Worker retention cleanup for open rows older than 90 days and cap admin /opens responses at 500 rows. (#292)
  • Email tracking: make gmail track setup --deploy reusable with existing D1 databases and valid temporary Wrangler configs.
  • Backup: split Gmail checkpoint commits by row count and plaintext byte size so large messages stay below GitHub's blob limit.
  • Secrets: time out macOS Keychain read/write/list operations with a clear recovery hint instead of hanging indefinitely when a permission prompt cannot surface. (#515, #513) β€” thanks @sardoru.
  • Secrets: encode file-backend key names so stored tokens work on Windows, while still reading/removing legacy raw entries. (#527, #502) β€” thanks @solomonneas.
  • CLI: show direct Google Cloud API enablement links and matching auth add --services ... hints when Google returns API-not-enabled errors.
  • Install docs: document Windows release ZIP/PATH setup and clarify that source builds require the Go version declared in go.mod, not Ubuntu 24.04's Go 1.22 package. (#157, #135)
  • Auth docs: clarify that consumer Gmail refresh tokens expire after 7 days when the OAuth app remains External + Testing, and that publishing the personal OAuth app is the long-lived-token path. (#121)
  • CI: pin GitHub Actions workflow dependencies to immutable commit SHAs. (#288)

v0.13.0

20 Apr 22:13
v0.13.0
5cd913e

Choose a tag to compare

0.13.0

Highlights

Added

  • Gmail: add --gmail-no-send, GOG_GMAIL_NO_SEND, gmail_no_send, and per-account config no-send guards for blocking send operations. (#454) β€” thanks @veteranbv.
  • Gmail: add gmail forward / gmail fwd to forward a message with optional note, verified send-as alias, and original attachments. (#482) β€” thanks @spencer-c-reed.
  • Gmail: add gmail autoreply to reply once to matching messages, label the thread for dedupe, and optionally archive/mark read.
  • Gmail: add gmail messages search --full to print complete message bodies instead of truncating text output. (#447) β€” thanks @GodsBoy.
  • Gmail: add gmail labels style to update user label colors and list/message visibility. (#457) β€” thanks @iskw9973.
  • Drive: convert Markdown uploads to Google Docs and strip leading YAML frontmatter by default, with --keep-frontmatter to opt out. (#487) β€” thanks @johnbenjaminlewis.
  • Drive: allow drive share --role commenter for comment-only sharing. (#443) β€” thanks @pavelzak.
  • Drive: show owner email in drive ls and drive search table output. (#458) β€” thanks @laihenyi.
  • Slides: add slides thumbnail / slides thumb to fetch rendered slide thumbnail URLs or download PNG/JPEG images. (#498) β€” thanks @gianpaj.
  • Sheets: add sheets chart to list, inspect, create, update, and delete embedded charts. (#434) β€” thanks @andybergon.
  • Sheets: add add-sheet, rename-sheet, and delete-sheet tab aliases plus sheets add-tab --index. (#442) β€” thanks @alexknowshtml.
  • Calendar: add calendar create-calendar / new-calendar to create secondary calendars with description, timezone, and location. (#455) β€” thanks @alexknowshtml.
  • Auth: add auth credentials remove to delete stored OAuth client credentials and associated refresh tokens. (#473) β€” thanks @yamagucci.
  • Auth: add ads as an auth service for Google Ads API tokens. (#264) β€” thanks @ufkhan97.
  • Secrets: allow GOG_KEYRING_SERVICE_NAME to override the keyring namespace. (#463) β€” thanks @mkurz.
  • Agent safety: allow dotted command paths in --enable-commands and add --disable-commands / GOG_DISABLE_COMMANDS denylist support. (#218, #173) β€” thanks @EricYangTL and @spookyuser.
  • Contacts: add --gender to contacts create and contacts update, and include gender in contacts get text output. (#438) β€” thanks @klodr.
  • Chat: make chat spaces find use case-insensitive substring matching by default, with --exact for legacy exact lookup. (#506) β€” thanks @mvanhorn.

Fixed

  • Calendar: avoid ambiguous timezone guessing from offset-only event times, preserve timezones for focus-time events, and use exclusive next-midnight bounds for full-day ranges. (#492, #509, #510) β€” thanks @RaphaelRUzan and @dinakars777.
  • Gmail: preserve sent and received body content by using quoted-printable plain text, non-7bit non-ASCII HTML, and safer UTF-8 charset handling. (#476, #477, #511) β€” thanks @shashankkr9, @yeager, and @dinakars777.
  • Docs: restore docs write --replace --markdown conversion and preserve sed formatting ranges, UTF-16 offsets, and & whole-match replacements. (#501, #483) β€” thanks @twilsher and @bill492.
  • Sheets: preserve valid chart ranges that target sheet ID 0 while still remapping sample-style zero IDs when the spreadsheet has no zero-ID sheet. (#434) β€” thanks @andybergon.
  • Auth: remove stale aliases and account-client mappings from config when auth remove deletes an account. (#467) β€” thanks @mvanhorn.
  • Contacts: reject all individual update flags when contacts update --from-file is used. (#439) β€” thanks @klodr.
  • Tasks: clear task due dates when tasks update --due= is provided. (#507) β€” thanks @dinakars777.
  • CLI: generate native zsh completions without relying on bashcompinit. (#481) β€” thanks @piiq.
  • Windows: expand ~\... paths and run the integration live-test wrapper through PowerShell. (#452) β€” thanks @gagradebnath.
  • Tracking: prefer file-stored tracking secrets over stale keyring values unless keyring storage is configured. (#469) β€” thanks @alexuser.
  • Time parsing: accept tues, thur, and thurs as weekday expressions. (#440) β€” thanks @sjhddh.

v0.12.0

09 Mar 05:52

Choose a tag to compare

0.12.0

Highlights

Added

  • Admin: add Workspace Admin Directory commands for users and groups, including user list/get/create/suspend and group membership list/add/remove. (#403) β€” thanks @dl-alexandre.
  • Auth: add Application Default Credentials mode via GOG_AUTH_MODE=adc for Workload Identity, Cloud Run, and local gcloud ADC flows without stored OAuth refresh tokens. (#357) β€” thanks @tengis617.
  • Auth: add --access-token / GOG_ACCESS_TOKEN for direct access-token auth in headless or CI flows, bypassing stored refresh tokens. (#419) β€” thanks @mmkal.
  • Auth: add auth add|manage --listen-addr plus --redirect-host for browser OAuth behind proxies or remote loopback forwarding. (#227) β€” thanks @cyberfox.
  • Auth: add auth add --redirect-uri for manual/remote OAuth flows, so custom callback hosts can be reused across the printed auth URL, state cache, and code exchange. (#398) β€” thanks @salmonumbrella.
  • Auth: add --extra-scopes to auth add for appending custom OAuth scope URIs beyond the built-in service scopes. (#421) β€” thanks @peteradams2026.
  • Docs: add --tab-id to editing commands so write/update/insert/delete/find-replace can target a specific Google Docs tab. (#330) β€” thanks @ignacioreyna.
  • Docs: extend docs find-replace with --first, --content-file, Markdown replacement, inline image insertion, and image sizing syntax. (#305) β€” thanks @chparsons.
  • Docs: add --pageless to docs create, docs write, and docs update to switch documents into pageless mode after writes. (#300) β€” thanks @shohei-majima.
  • Docs: add native Google Docs Markdown export via docs export --format md. (#282) β€” thanks @fprochazka.
  • Docs: add native Google Docs HTML export via docs export --format html. (#141) β€” thanks @in-liberty420.
  • Sheets: add named range management (sheets named-ranges) and let range-based Sheets commands accept named range names where GridRange-backed operations are needed. (#278) β€” thanks @TheCrazyLex.
  • Sheets: add add-tab, rename-tab, and delete-tab commands for managing spreadsheet tabs, with delete dry-run/confirmation guardrails. (#309) β€” thanks @JulienMalige.
  • Sheets: add merge, unmerge, number-format, freeze, resize-columns, and resize-rows commands for spreadsheet layout/format control. (#320) β€” thanks @Shehryar.
  • Sheets: add sheets update-note / set-note to write or clear cell notes across a range. (#430) β€” thanks @andybergon.
  • Sheets: add sheets find-replace to replace text across a spreadsheet or a specific tab, with exact-match, regex, and formula search options. (#341) β€” thanks @Shehryar.
  • Sheets: add sheets insert to insert rows/columns into a sheet. (#203) β€” thanks @andybergon.
  • Sheets: add sheets create --parent to place new spreadsheets in a Drive folder. (#424) β€” thanks @ManManavadaria.
  • Sheets: add sheets read-format to inspect userEnteredFormat / effectiveFormat per cell. (#284) β€” thanks @nilzzzzzz.
  • Sheets: add sheets links (alias hyperlinks) to list cell links from ranges, including rich-text links. (#374) β€” thanks @omothm.
  • Forms: add form update/question-management commands plus response watch create/list/delete/renew, with delete-question validation and confirmation guardrails. (#274) β€” thanks @alexknowshtml.
  • Slides: add create-from-template with --replace / --replacements, dry-run support, and template placeholder replacement stats. (#273) β€” thanks @penguinco.
  • Calendar: add calendar alias list|set|unset, and let calendar commands resolve configured aliases before API/name lookup. (#393) β€” thanks @salmonumbrella.
  • Calendar: let calendar freebusy / calendar conflicts accept --cal, names, indices, and --all like calendar events. (#319) β€” thanks @salmonumbrella.
  • Calendar: add calendar subscribe (aliases sub, add-calendar) to add a shared calendar to the current account’s calendar list. (#327) β€” thanks @cdthompson.
  • Gmail: add watch serve --history-types filtering (messageAdded|messageDeleted|labelAdded|labelRemoved) and include deletedMessageIds in webhook payloads. (#168) β€” thanks @salmonumbrella.
  • Gmail: add gmail labels rename to rename user labels by ID or exact name, with system-label guards and wrong-case ID safety. (#391) β€” thanks @adam-zethraeus.
  • Gmail: add gmail messages modify for single-message label changes, complementing thread- and batch-level modify flows. (#281) β€” thanks @zerone0x.
  • Gmail: add gmail filters export to dump filter definitions as JSON to stdout or a file for backup/script workflows. (#119) β€” thanks @Jeswang.
  • Keep: add keep create for text/checklist notes and keep delete for note removal. (#413) β€” thanks @jgwesterlund.
  • Contacts: support --org, --title, --url, --note, and --custom on create/update; include custom fields in get output with deterministic ordering. (#199) β€” thanks @phuctm97.
  • Contacts: add --relation type=person to contact create/update, include relations in text contacts get, and cover relation payload updates. (#351) β€” thanks @karbassi.
  • Contacts: add --address to contact create/update and include addresses in text contacts get. (#148) β€” thanks @beezly.
  • Drive: add drive ls --all (alias --global) to list across all accessible files; make --all and --parent mutually exclusive. (#107) β€” thanks @struong.
  • Chat: add chat messages reactions create|list|delete to manage emoji reactions on messages; chat messages react <message> <emoji> as a shorthand for creating reactions; reaction is an alias for reactions. (#426) β€” thanks @fernandopps.
  • Tasks: add --recur / --recur-rrule aliases for repeat materialization, including RRULE INTERVAL support for generated occurrences. (#408) β€” thanks @salmonumbrella.

Fixed

  • Google API: use transport-level response-header timeouts for API clients while keeping token exchanges bounded, so large downloads are not cut short by http.Client.Timeout. (#425) β€” thanks @laihenyi.
  • Timezone: embed the IANA timezone database so Windows builds can resolve calendar timezones correctly. (#388) β€” thanks @visionik.
  • Auth: persist rotated OAuth refresh tokens returned during API calls so later commands keep working without re-auth. (#373) β€” thanks @joshp123.
  • Auth: allow pure service-account mode when the configured subject matches the service account itself, instead of forcing domain-wide delegation impersonation. (#399) β€” thanks @carrotRakko.
  • Auth: keep Keep-only service-account fallback isolated to Keep commands so other Google services do not accidentally pick it up. (#414) β€” thanks @jgwesterlund.
  • Auth: add --gmail-scope full|readonly, and disable include_granted_scopes for readonly/limited auth requests to avoid Drive/Gmail scope accumulation. (#113) β€” thanks @salmonumbrella.
  • Auth: preserve scope-shaping flags in the remote step-2 replay guidance for auth add --remote. (#427) β€” thanks @doodaaatimmy-creator.
  • Calendar: preserve full RRULE values and recurring-event timezones during updates so recurrence edits don’t lose BYDAY lists or hit missing-timezone API errors. (#392) β€” thanks @salmonumbrella.
  • Calendar: let recurring calendar update --scope=future and calendar delete --scope=future start from an instance event ID by resolving the parent series first. (#319) β€” thanks @salmonumbrella.
  • Calendar: use Calendars.Get for timezone lookups so service-account flows don’t 404 on calendarList/primary. (#325) β€” thanks @markwatson.
  • Calendar: hide cancelled/deleted events from calendar events list output by explicitly setting showDeleted=false. (#362) β€” thanks @sharukh010.
  • Calendar: reject ambiguous calendar-name selectors for calendar events instead of guessing. (#131) β€” thanks @salmonumbrella.
  • Calendar: respond patches only attendees to avoid custom reminders validation errors. (#265) β€” thanks @sebasrodriguez.
  • Calendar: force-send minutes=0 for --reminder popup:0m so zero-minute popup reminders survive Google Calendar API JSON omission rules. (#316) β€” thanks @salmonumbrella.
  • Calendar: clarify that RFC3339 --from/--to timestamps must include a timezone while keeping date and relative-time help intact. (#409) β€” thanks @dbhurley.
  • Gmail: add a fetch delay in watch serve so History API reads don't race message indexing. (#397) β€” thanks @salmonumbrella.
  • Gmail: preserve the selected --client during watch serve push handling instead of falling back to the default client. (#411) β€” thanks @chrysb.
  • Gmail: allow Workspace-managed send-as aliases with empty verification status in send and drafts create. (#407) β€” thanks @salmonumbrella.
  • Gmail: fall back to MimeType charset hints when Content-Type headers are missing s...
Read more

v0.11.0

15 Feb 03:28

Choose a tag to compare

0.11.0

Added

  • Apps Script: add appscript command group (create/get projects, fetch content, run deployed functions).
  • Forms: add forms command group (create/get forms, list/get responses).
  • Docs: add docs comments for listing and managing Google Doc comments. (#263) β€” thanks @alextnetto.
  • Sheets: add sheets notes to read cell notes. (#208) β€” thanks @andybergon.
  • Gmail: add gmail send --quote to include quoted original message in replies. (#169) β€” thanks @terry-li-hm.
  • Drive: add drive ls|search --no-all-drives to restrict queries to "My Drive" for faster/narrower results. (#258)
  • Contacts: update contacts from JSON via contacts update --from-file (PR #200 β€” thanks @jrossi).

Fixed

  • Drive: make drive delete move files to trash by default; add --permanent for irreversible deletion. (#262) β€” thanks @laihenyi.
  • Drive/Gmail: pass through Drive API filter queries in drive search; RFC 2047-encode non-ASCII display names in mail headers (From/To/Cc/Bcc/Reply-To). (#260) β€” thanks @salmonumbrella.
  • Calendar: allow opting into attendee notifications for updates and cancellations via calendar update|delete --send-updates all|externalOnly|none. (#163) β€” thanks @tonimelisma.
  • Calendar: fall back to fixed-offset timezones (Etc/GMTΒ±N) for recurring events when given RFC3339 offset datetimes; harden Gmail attachment output paths and cache validation; honor proxy defaults for Google API transports. (#228) β€” thanks @salmonumbrella.
  • Auth: manual OAuth flow uses an ephemeral loopback redirect port (avoids unsafe/privileged ports in browsers). (#172) β€” thanks @spookyuser.
  • Gmail: include primary display name in gmail send From header when using service account impersonation (domain-wide delegation). (#184) β€” thanks @salmonumbrella.
  • Gmail: when gmail attachment --out points to a directory (or ends with a trailing slash), combine with --name and avoid false cache hits on directories. (#248) β€” thanks @zerone0x.
  • Drive: include shared drives in drive ls and drive search; reject drive download --format for non-Google Workspace files. (#256) β€” thanks @salmonumbrella.
  • Drive: validate drive download --format values and error early for unknown formats. (#259)

v0.10.0

14 Feb 03:32

Choose a tag to compare

0.10.0

Added

  • Docs/Slides: add docs update markdown formatting + table insertion, plus markdown-driven slides creation and template-based slide creation. (#219) β€” thanks @maxceem.
  • Slides: add add-slide/list-slides/delete-slide/read-slide/update-notes/replace-slide for image decks, including --before insertion and --notes '' clear behavior. (#214) β€” thanks @chrismdp.
  • Docs: add tab support (docs list-tabs, docs cat --tab, docs cat --all-tabs) and editing commands (docs write|insert|delete|find-replace). (#225) β€” thanks @alexknowshtml.
  • Docs: add docs create --file to import Markdown into Google Docs with inline image support and hardened temp-file cleanup. (#244) β€” thanks @maxceem.
  • Drive: add drive upload --replace to update files in-place (preserves fileId/shared link). (#232) β€” thanks @salmonumbrella.
  • Drive: add upload conversion flags --convert (auto) and --convert-to (doc|sheet|slides). (#240) β€” thanks @Danielkweber.
  • Drive: share files with an entire Workspace domain via drive share --to domain. (#192) β€” thanks @Danielkweber.
  • Gmail: add --exclude-labels to watch serve (defaults: SPAM,TRASH). (#194) β€” thanks @salmonumbrella.
  • Gmail: add gmail labels delete <labelIdOrName> with confirm + system-label guardrails and case-sensitive ID handling. (#231) β€” thanks @Helmi.
  • Contacts: support contacts update --birthday and --notes; unify shared date parsing and docs. (#233) β€” thanks @rosssivertsen.

Fixed

  • Live tests: make scripts/live-test.sh and scripts/live-chat-test.sh CWD-safe (repo-root aware builds and sourcing).
  • Calendar: interpret date-only and relative day --to values as inclusive end-of-day while keeping --to now as a point-in-time bound. (#204) β€” thanks @mjaskolski.
  • Auth: improve remote/server-friendly manual OAuth flow (auth add --remote). (#187) β€” thanks @salmonumbrella.
  • Gmail: avoid false quoted-printable detection for already-decoded URLs with uppercase hex-like tokens while still decoding unambiguous markers (=3D, chained escapes, soft breaks). (#186) β€” thanks @100menotu001.
  • Sheets: preserve TSV tab delimiters for sheets get --plain output. (#212) β€” thanks @salmonumbrella.
  • CLI: land PR #201 with conflict-resolution fixes for --fields rewrite, calendar --all paging, schema command-path parsing, and case-sensitive Gmail watch exclude-label IDs. (#201) β€” thanks @salmonumbrella.
  • Secrets: set keyring item labels to gogcli so macOS security prompts show a clear item name. (#106) β€” thanks @maxceem.

v0.9.0

22 Jan 04:14

Choose a tag to compare

0.9.0 - 2026-01-22

Highlights

  • Auth: multi-org login with per-client OAuth credentials + token isolation. (#96)

Added

  • Calendar: show event timezone and local times; add --weekday output. (#92) β€” thanks @salmonumbrella.
  • Gmail: show thread message count in search output. (#99) β€” thanks @jeanregisser.
  • Gmail: message-level search with optional body decoding. (#88) β€” thanks @mbelinky.

Fixed

  • Auth: fix Gmail search example in auth success template. (#89) β€” thanks @rvben.
  • CLI: remove redundant newlines in text output for calendar, chat, Gmail, and groups commands. (#91) β€” thanks @salmonumbrella.
  • Gmail: include primary account display name in send From header when available. (#93) β€” thanks @salmonumbrella.
  • Keyring: persist OAuth tokens across Homebrew upgrades. (#94) β€” thanks @salmonumbrella.
  • Docs: update Gmail command examples in README. (#95) β€” thanks @chrisrodz.
  • Contacts: include birthdays in contact get output. (#102) β€” thanks @salmonumbrella.
  • Calendar: force custom reminders payload to send UseDefault=false. (#100) β€” thanks @salmonumbrella.
  • Gmail: add read alias + default thread get. (#103) β€” thanks @salmonumbrella.

v0.8.0

19 Jan 02:31

Choose a tag to compare

0.8.0

Added

  • Chat: spaces, messages, threads, and DM commands (Workspace only). (#84) β€” thanks @salmonumbrella.
  • People: profile lookup, directory search, and relations commands. (#84) β€” thanks @salmonumbrella.

Fixed

  • Chat: normalize thread IDs and show a clearer error for consumer accounts. (#84)

v0.7.0

17 Jan 21:05

Choose a tag to compare

0.7.0

Highlights

  • Classroom: full command suite (courses, roster, coursework/materials, announcements, topics, invitations, guardians, profiles) plus course URLs. (#73) β€” thanks @salmonumbrella.
  • Calendar: propose-time command and enterprise event types (Focus Time/Out of Office/Working Location). (#75) β€” thanks @salmonumbrella.
  • Gmail: attachment details in gmail get (humanized sizes + JSON fields). (#83) β€” thanks @jeanregisser.

Added

  • Auth: permission upgrade UI in the account manager + missing service icons. (#73) β€” thanks @salmonumbrella.
  • CLI: auth aliases, time now, --enable-commands allowlist, and day-of-week JSON fields. (#75) β€” thanks @salmonumbrella.
  • Tasks: repeat schedules + tasks get command. (#75) β€” thanks @salmonumbrella.

Fixed

  • Calendar: propose-time decline sends updates, default events to primary, and improved error guidance. (#75)
  • Gmail: resync on stale history 404s and skip missing message fetches without masking non-404 failures. (#70) β€” thanks @antons.
  • Gmail: include gmail.settings.sharing scope for filter operations to avoid 403 insufficientPermissions. (#69) β€” thanks @ryanh-ai.
  • Auth: request Gmail settings scopes so settings commands work reliably.
  • Auth: account manager upgrade respects managed services and skips Keep OAuth scopes. (#73) β€” thanks @salmonumbrella.
  • Classroom: normalize assignee updates + fix grade update masks; scan pages when filtering coursework/materials by topic; add leave confirmation. (#73, #74) β€” thanks @salmonumbrella.
  • Tasks: normalize due dates to RFC3339 so date-only inputs work reliably (including repeat).
  • Timezone: honor --timezone local and allow env/config defaults for Gmail + Calendar output. (#79) β€” thanks @salmonumbrella.
  • CLI: enable shell completions and stop flag suggestions after --. (#77) β€” thanks @salmonumbrella.
  • Groups: friendlier Cloud Identity errors for consumer accounts and missing scopes.

Build

  • Deps: update Go modules and JS worker dev deps; bump pinned dev tools; switch WSL to v5.

Tests

  • Live: add scripts/live-test.sh wrapper and expand smoke coverage across services.
  • Calendar: add integration tests for propose-time.
  • Gmail: add attachment output tests for gmail get.
  • Classroom: add integration smoke tests and command coverage.
  • Drive: expand drive drives coverage (formatting + query/paging params).
  • Auth: use net.ListenConfig.Listen in tests to satisfy newer lint.