- add 'chat messages react <message> <emoji>' as a direct shorthand for reaction creation
- keep 'reaction' as the alias for the 'reactions' command group
- add regression coverage for the shorthand path
Co-authored-by: Fernando Pina dos Santos <fernando.dossantos@trilogy.com>
- add --recur and --recur-rrule aliases for repeat materialization
- support RRULE FREQ with optional INTERVAL when generating concrete task occurrences
- document the materialized repeat behavior in README and changelog
Co-authored-by: salmonumbrella <182032677+salmonumbrella@users.noreply.github.com>
- add keep create/delete commands for text and checklist notes
- validate checklist items and switch Keep service-account scope to writable access
- refresh README and changelog for Keep write support
Co-authored-by: John Westerlund <john.westerlund@cygnisec.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(config): add CalendarAliases field to config
Add support for storing calendar aliases in config.json, following the
same pattern as account aliases. Includes CRUD functions and tests.
* feat(calendar): add calendar alias CLI commands
Add gog calendar alias {list,set,unset} commands for managing calendar
aliases. These allow mapping friendly names like 'family' to full
calendar IDs like '3656f8abc123@group.calendar.google.com'.
* feat(calendar): add alias resolution helper
Add resolveCalendarID helper function and register CalendarAliasCmd
in the calendar command tree.
* feat(calendar): resolve aliases in create/update/delete commands
Update CalendarCreateCmd, CalendarUpdateCmd, CalendarDeleteCmd,
CalendarProposeTimeCmd, and CalendarRespondCmd to resolve calendar
aliases before using the calendar ID.
* feat(calendar): resolve aliases in specialized event commands
Update focus-time, out-of-office, working-location, and time commands
to resolve calendar aliases.
* feat(calendar): resolve aliases in search and multi-calendar commands
Update search, freebusy, and conflicts commands to resolve calendar
aliases. Multi-calendar commands now resolve each calendar ID in the
comma-separated list.
* fix(calendar): clear CI lint issues in alias PR
* feat(calendar): add calendar aliases (#393)
* fix(calendar): satisfy alias lint on landed branch (#393)
---------
Co-authored-by: Zachary <zachary@tamas.sh>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
* feat: add Application Default Credentials (ADC) auth mode
When GOG_AUTH_MODE=adc, the CLI authenticates using ambient credentials
(GKE Workload Identity, GOOGLE_APPLICATION_CREDENTIALS, or gcloud ADC)
instead of the keyring-based OAuth flow. This enables use in environments
like GKE pods where the service account accesses resources explicitly
shared with it — no domain-wide delegation or user impersonation needed.
The account email is no longer required in ADC mode; requireAccount()
returns "adc" as a placeholder when no --account/GOG_ACCOUNT is set.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(auth): add ADC mode (#357) (thanks @tengis617)
* fix(auth): satisfy ADC lint on landed branch (#357)
* test(auth): fix ADC test whitespace lint (#357)
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
New commands: add-question, delete-question, move-question, update, and
watch create/list/delete/renew. Covers the full Google Forms API surface
for form modification via batchUpdate and response watches.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds `gog slides create-from-template` command to create presentations
from templates with automatic placeholder text replacement.
Features:
- {{key}} placeholder format (auto-wrapped)
- Multiple replacement sources: --replace flags and --replacements JSON file
- Type conversion for JSON (numbers, booleans → strings)
- --exact flag for arbitrary string replacement
- Replacement statistics in output
- JSON/text output modes
Implementation:
- Copy template via Drive API
- Batch text replacement via Slides API ReplaceAllText
- Comprehensive error handling and validation
- 7 test cases covering all features and edge cases
Usage: gog slides create-from-template <templateId> <title> \
--replace "key=value" \
--replacements data.json
Co-authored-by: Cursor <cursoragent@cursor.com>