Commit Graph

976 Commits

Author SHA1 Message Date
Peter Steinberger
1c789e5143 style(auth): suppress mkdir taint false-positive 2026-03-09 03:24:11 +00:00
Peter Steinberger
e19bac1f1d feat(calendar): improve selection and recurring scope handling (#319) (thanks @salmonumbrella) 2026-03-09 03:16:58 +00:00
Peter Steinberger
4fb1cf823e style(auth): normalize auth token export nosec marker 2026-03-09 03:16:58 +00:00
Peter Steinberger
521b4d45a5 feat(sheets): add find-replace and fix note clearing (#341) (thanks @Shehryar) 2026-03-09 03:07:30 +00:00
Peter Steinberger
af0a597e21 style(auth): move gosec waiver inline 2026-03-09 03:07:30 +00:00
Peter Steinberger
77f0798461 fix(auth): add proxy-friendly OAuth callback flags (#227) (thanks @cyberfox) 2026-03-09 02:58:53 +00:00
Peter Steinberger
6c607710bb style(auth): drop stale nolint annotations 2026-03-09 00:48:06 +00:00
Peter Steinberger
10009cb059 style(refactor): satisfy gate after helper extractions 2026-03-09 00:47:36 +00:00
Peter Steinberger
2fcd86d1d7 test(cmd): share command UI test contexts 2026-03-09 00:45:34 +00:00
Peter Steinberger
aaafcca8e2 refactor(calendar): share mutation execution helpers 2026-03-09 00:44:21 +00:00
Peter Steinberger
b68d9e9968 refactor(gmail): share compose planning helpers 2026-03-09 00:42:24 +00:00
Peter Steinberger
c38a701c3b refactor(comments): share drive-backed comment ops 2026-03-09 00:40:28 +00:00
Peter Steinberger
6103f9d035 refactor(cmd): share service bootstrap and paging helpers 2026-03-09 00:37:34 +00:00
Peter Steinberger
59b9214f29 style(drive): drop stale upload nolint 2026-03-08 23:43:36 +00:00
Peter Steinberger
1710b549bc refactor(drive): split listing and upload flows 2026-03-08 23:42:52 +00:00
Peter Steinberger
af9f9f0ec5 test(calendar): share calendar test harness 2026-03-08 23:41:01 +00:00
Peter Steinberger
16876c95e0 style(refactor): satisfy gate after helper extractions 2026-03-08 23:34:26 +00:00
Peter Steinberger
c858909e85 refactor(core): drop old selector matcher shim 2026-03-08 23:33:19 +00:00
Peter Steinberger
2a43e5d91e test(refactor): share docs API test harness 2026-03-08 23:33:06 +00:00
Peter Steinberger
ae7d9ed23b refactor(core): move selector matching out of cmd 2026-03-08 23:30:28 +00:00
Peter Steinberger
cc2e705220 refactor(selectors): share exact-match resolution helpers 2026-03-08 23:29:27 +00:00
Peter Steinberger
644951e87b refactor(calendar): extract event planning helpers 2026-03-08 23:28:32 +00:00
Peter Steinberger
325fae5646 refactor(docs): extract shared mutation engine 2026-03-08 23:27:15 +00:00
Peter Steinberger
c38fbb3592 feat(docs): extend find-replace with markdown, images, and first-occurrence support (#305)
Co-authored-by: Chris Parsons <chris.p@rsons.org>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 21:36:34 +00:00
Peter Steinberger
2aa193e0a5 feat(chat): add react shorthand command for reactions create (#435)
- 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>
2026-03-08 21:24:03 +00:00
Peter Steinberger
2fe9d9524e feat(tasks): add recur aliases and RRULE support for task repeats (#408)
- 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>
2026-03-08 21:22:02 +00:00
Peter Steinberger
e323f691e8 feat(keep): add create and delete commands (#413)
- 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>
2026-03-08 21:19:48 +00:00
Peter Steinberger
a3b5bc851e style(config): satisfy alias cleanup spacing lint 2026-03-08 19:43:49 +00:00
Peter Steinberger
47540f979e style(config): satisfy alias cleanup spacing lint 2026-03-08 19:42:15 +00:00
Peter Steinberger
61da6eee5c fix(config): satisfy alias cleanup lint 2026-03-08 19:41:31 +00:00
Peter Steinberger
6047619e2a test(calendar): cover alias resolution paths 2026-03-08 19:40:10 +00:00
Peter Steinberger
566c999307 refactor(calendar): normalize alias output keys 2026-03-08 19:40:07 +00:00
Peter Steinberger
146ae97372 refactor(config): share alias map storage 2026-03-08 19:36:06 +00:00
Peter Steinberger
7a95eb26b0 fix(config): validate and serialize calendar alias writes 2026-03-08 19:35:09 +00:00
Peter Steinberger
cd40aa4d6b refactor(calendar): make default-primary command-owned 2026-03-08 19:34:19 +00:00
Peter Steinberger
a6577e8728 refactor(calendar): unify selector resolution 2026-03-08 19:33:47 +00:00
salmonumbrella
905c0e4aa0
feat(calendar): add calendar aliases (supersedes #104) (#393)
* 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>
2026-03-08 17:34:11 +00:00
nilzzzzzz
79546b9a60
feat(sheets): add read-format command and borders guardrails (#284)
* feat(sheets): add read-format and harden borders formatting

* style(sheets): satisfy format check on landed branch (#284)

* refactor(sheets): satisfy read-format lint on landed branch (#284)

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-03-08 17:23:24 +00:00
tengis
45c272ffe8
feat(auth): add Application Default Credentials (ADC) auth mode (#357)
* 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>
2026-03-08 17:18:18 +00:00
Peter Steinberger
f40b34837e refactor(slides): extract template replacement builders 2026-03-08 05:25:18 +00:00
Peter Steinberger
4a840b517f refactor(cmd): split calendar and gmail entry files 2026-03-08 05:17:56 +00:00
Peter Steinberger
49729c16c4 refactor(cmd): share destructive mutation guardrails 2026-03-08 05:07:52 +00:00
Peter Steinberger
2d38040e24 fix(forms): address lint nits in tests (#274) (thanks @alexknowshtml) 2026-03-08 04:49:07 +00:00
Peter Steinberger
5c3eaa4594 fix(forms): harden question management and watches (#274) (thanks @alexknowshtml) 2026-03-08 04:49:07 +00:00
Alex Hillman
1de23055b8 Add forms question management and watch commands
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>
2026-03-08 04:49:07 +00:00
Peter Steinberger
4a69ebbfa5 fix(slides): clean template replacement parsing (#273) (thanks @penguinco) 2026-03-08 04:43:36 +00:00
Peter Steinberger
12e50379a5 fix(slides): harden template replacements (#273) (thanks @penguinco) 2026-03-08 04:43:36 +00:00
penguinco
922c1fbb8b feat(slides): add create-from-template command with text replacement
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>
2026-03-08 04:43:36 +00:00
Peter Steinberger
ffd8cd482b feat(docs): add html export format (#141) (thanks @in-liberty420) 2026-03-08 04:36:21 +00:00
Peter Steinberger
647f3f6441 fix(sheets): harden tab delete flow (#309) (thanks @JulienMalige) 2026-03-08 04:32:36 +00:00