0.17.0
Added
slides create-from-markdown: import slidey-flavored decks with per-slide YAML frontmatter (layout:,content:),## Notesspeaker notes, Font Awesome icon shortcodes, mermaid diagrams,::cols::/::col2::/::col3::/::right::columns, and::boxes::/::arrows::icon-row blocks. New flags:--fa-style,--mmdc,--strict,--keep-temp-images,--no-notes— thanks @njreid.- Calendar: add
calendar events --sort=start|end|summary|calendarand--order=asc|descso--alloutput can be returned chronologically across calendars instead of per-calendar API iteration order. Also documentsnowin the--from/--tohelp strings (already accepted bytimeparse) — the relative form agents need when planning "from now on" — thanks @gado-ships-it. - Calendar: add
calendar events --locationto include event locations in table output. Embedded newlines in the location string are collapsed so multi-line addresses still render on one row — thanks @gado-ships-it. - Auth: add
gog auth import --client --emailwith--refresh-token-stdin,--refresh-token-file, or--refresh-token-envfor non-interactive token import without exposing secrets in argv — thanks @jcarnegie. - Drive: add
drive share --notifyfor invite targets that require a Drive notification email. - Calendar: keep
calendar appointmentsas an explicit diagnostic because the Calendar API still rejectseventTypes=appointmentSchedule. (#329) - CLI: add nested
docs tabs ...andforms questions ...aliases for consistent sub-item command patterns while preserving existing flat commands. (#433) - Drive: add
drive audit sharing|userplus guardeddrive bulk remove-public|update-rolepermission operations with dry-run and confirmation support. (#336) - Drive: add
drive labels file list|apply|removealongside Drive Labels API v2 discovery. (#339) - Maps: add directions, distance matrix, geocode, and reverse-geocode commands alongside Places search/details. (#571)
- Photos: add read-only
photos list|search|get|downloadfor app-created Google Photos media. (#381)
Fixed
- CLI: make mutating dry-runs for contacts, Docs, Drive, Meet, and Slides stop before auth/API calls while still validating local inputs; harden live smoke tests for self-sharing, disabled Meet, Gmail filter labels, and forced batch deletes.
- CLI: make
drive upload,drive bulk remove-public/update-role,calendar subscribe,docs clear,slides create-from-markdown,slides insert-text,slides replace-text,auth tokens import, and Gmail tracking key rotation dry-runs use the standard parseable dry-run envelope without auth/API access. - CLI: keep additional Docs write/update/delete/format/find-replace, Drive mkdir/changes, Gmail label create/modify, and Slides add/delete/replace/update-notes dry-runs offline before auth/API calls.
- CLI: give destructive Classroom, Gmail, Keep, and Tasks dry-runs stable JSON operation names and structured request payloads instead of prose
opvalues with null requests. - CLI: keep Docs tab edits, Sheets tab deletes, Drive deletes, comment deletes, auth removals, Gmail delegate/watch removals, Classroom guardian deletes, and other-contact deletes dry-run parseable without auth/API access.
- CLI: make dry-runs for Gmail label edits, Sheets table deletes, Sheets banding/conditional clears, and Forms deletes stop before auth/API calls, and make Forms dry-runs validate choice, scale, quiz, and empty update inputs locally.
- CLI: make dry-runs for Calendar secondary calendars, Forms create/publish/watch/move, Gmail label delete, Sheets table append/clear, Sheets named-range edits, Apps Script create, and Slides template creation stay offline before auth/API calls.
- Calendar: keep
calendar create/update --dry-runwith--location-searchor--place-idoffline before Places API lookup while still validating the requested lookup. - CLI: make dry-runs for Admin group/user/org-unit edits, Contacts delete, Docs tab export, Drive tab download/share/unshare, and Gmail watch renew stay offline before auth/API calls; redact Admin user create passwords in dry-run output.
- Auth: keep fresh OAuth saves working even when old file-keyring token entries are unreadable, and clarify that
--services allmeans all user OAuth services while Workspace-only services use service accounts. - Auth: include Chat reaction scopes in
--services chatand keep the generated auth scope table freshness-tested. - Auth: keep the accounts manager bound to loopback addresses, generate callback URLs from the actual listener host, and avoid deleting renamed-account tokens before replacements are stored.
- Gmail: reject off-palette
gmail labels stylecolors locally instead of forwarding an opaque Gmail API error. - Drive: make
drive share --dry-runstop before permission creation for user and domain shares, including--notify. - Forms: make
forms create --descriptionapply the description with a follow-up batch update, and preserve zero-valued indexes informs move-question. - Analytics: show Analytics Admin/Data API enablement hints instead of an Admin SDK hint for GA API-disabled errors.
- Docs: make
docs find-replace --format markdownstrip inline and block Markdown markers while preserving nested bold/italic/code/link formatting in the inserted Google Doc content. (#586) — thanks @sebsnyk. - YouTube: preserve API-key authentication when wrapping requests with the retry transport, so public
youtube/ytreads no longer fail as unregistered callers. (#578) — thanks @adityarya24. - Docs: update OAuth success/accounts GitHub links to the
openclaw/gogclirepository. (#561)