Commit Graph

47 Commits

Author SHA1 Message Date
salmonumbrella
33685adafe feat: add chat support and expand people commands 2026-01-18 05:42:12 +00:00
salmonumbrella
2cdeb8bf73 feat(cli): expand calendar event types and tasks 2026-01-17 07:46:21 +00:00
salmonumbrella
05986fb6ce
fix(timezone): honor --timezone local (#79)
* feat(gmail): add timezone support for date output

Add --timezone and --local flags to gmail search and watch serve commands
to control how dates are displayed. By default uses local timezone.
Users can specify any IANA timezone (e.g., America/New_York, UTC).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* test(gmail): fix execute test for timezone changes

Update TestExecute_GmailSearch_JSON to use explicit --timezone UTC flag
and expect the correctly converted time (22:04 UTC from 15:04 -0700).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(gmail): add -z short flag for --timezone

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* test(gmail): add unit tests for resolveOutputLocation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* docs(gmail): clarify timezone flag help text

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* test(gmail): add timezone conversion tests for formatGmailDateInLocation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(config): add default_timezone setting

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(gmail): support GOG_TIMEZONE env var and config for timezone

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(config): add gog config command for timezone and settings

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(calendar): respect GOG_TIMEZONE and config for timezone

Update calendar time command to follow the same timezone priority as gmail:
1. --timezone flag (explicit)
2. GOG_TIMEZONE env var
3. Config file default_timezone
4. Fall back to Google Calendar's timezone (calendar-specific fallback)

Add getConfiguredTimezone helper that returns nil when no explicit timezone
is configured, allowing calendar commands to use their own fallback behavior.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* test(gmail): add tests for GOG_TIMEZONE env var and getConfiguredTimezone

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix(config): warn on invalid timezone instead of error

When default_timezone in config is invalid, print a warning to stderr
and fall back to local timezone instead of returning a hard error.

Invalid flag/env var still returns errors (user mistake in current
session), but invalid config should not break the CLI (stale config).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* refactor(gmail): remove unused formatGmailDate, add nolint directive

- Remove unused formatGmailDate wrapper function (all callers use
  formatGmailDateInLocation directly with explicit location)
- Add nolint:nilnil directive to getConfiguredTimezone with explanation
  that nil return signals caller to use its own fallback

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix(timezone): honor --timezone local

* refactor(cli): unify config/timezone helpers

* test(cmd): isolate config env in timezone tests

* refactor(config): centralize config key metadata

* fix(config): drop unused key spec lookup

* fix(config): standardize config key errors

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-17 04:53:31 +00:00
Peter Steinberger
f5f33ca7a6 fix: adjust classroom topic scan + manage upgrade scopes (#73) (thanks @salmonumbrella) 2026-01-17 01:56:32 +00:00
salmonumbrella
5e55964a85 fix(classroom): add tests, nil guards, and topic filter
- Add comprehensive unit tests for classroom helper functions
  (date/time parsing, error wrapping, profile helpers)
- Add profileEmail() helper for nil-safe email extraction
- Fix nil pointer guards for Profile access (12 locations in
  courses, rosters, and guardians)
- Add --topic filter for coursework and materials list commands
- Update docs/spec.md with new filter options

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 10:41:58 +00:00
salmonumbrella
58941b433a docs: note classroom roster and materials 2026-01-16 10:41:58 +00:00
salmonumbrella
fe2b85fb66 docs: document classroom commands 2026-01-16 10:41:58 +00:00
Peter Steinberger
c94b6d4417 feat(drive): add drives subcommand (#67) (thanks @pasogott) 2026-01-15 17:14:01 +00:00
Peter Steinberger
2bb6a8b37c feat(auth): add --readonly and --drive-scope (#58) (thanks @jeremys)
Some checks failed
ci / test (push) Has been cancelled
ci / worker (push) Has been cancelled
ci / darwin-cgo-build (push) Has been cancelled
2026-01-10 23:57:15 +01:00
Anton Sotkov
4e92b5972b feat(gmail): allow drafts without a recipient 2026-01-10 13:34:26 +02:00
Peter Steinberger
ecef6a0f10 fix(cli): infer default account 2026-01-10 03:12:21 +01:00
Anton Sotkov
21fbf16390 feat(gmail): add drafts update command 2026-01-09 22:46:04 +01:00
Peter Steinberger
b44d1d5d97 feat(auth): add groups service 2026-01-09 21:05:05 +01:00
Peter Steinberger
18a6e3c97f feat(tracking): per-account setup + track-split 2026-01-08 23:52:57 +01:00
Peter Steinberger
80a784e074 feat(cli): add --output/--output-dir aliases 2026-01-08 12:08:42 +01:00
Peter Steinberger
1f2153ea62 feat(gmail): add labels create command 2026-01-08 08:03:01 +01:00
Peter Steinberger
037c38afa4 docs(tracking): add email tracking docs 2026-01-08 05:26:03 +01:00
Peter Steinberger
024deee55d feat(auth): add services metadata and listing 2026-01-08 01:24:22 +01:00
Peter Steinberger
4580729793 feat(auth): add docs service 2026-01-07 21:55:58 +01:00
Peter Steinberger
b1b9067a23 fix(auth): default --services to user 2026-01-07 21:36:35 +01:00
Peter Steinberger
39921a3831 Calendar: add --add-attendee flag
Co-authored-by: salmonumbrella <182032677+salmonumbrella@users.noreply.github.com>
2026-01-07 17:10:58 +01:00
Peter Steinberger
d1c53e9d5c feat(config): add JSON5 config and auth status 2026-01-03 13:20:36 +01:00
Peter Steinberger
19d833fd3e feat: add token validation + keyring backend override 2026-01-02 14:03:06 +01:00
Peter Steinberger
6a17462eab chore: add release verification scripts 2025-12-31 20:15:56 +01:00
Peter Steinberger
4252ad53f4 refactor(cli): migrate to kong 2025-12-31 17:24:31 +01:00
Peter Steinberger
e70b576dc9 fix: refine gmail thread modify command 2025-12-31 13:10:16 +01:00
Peter Steinberger
191feb70b8 docs: make release checklist always full 2025-12-28 18:50:36 +01:00
Peter Steinberger
2d3896eab8 docs(site): link footer author 2025-12-26 22:25:11 +01:00
Peter Steinberger
fa246dac39 docs(site): add gogcli.sh landing page 2025-12-26 21:18:04 +01:00
Peter Steinberger
9c255b4a9a
Create CNAME 2025-12-26 21:10:45 +01:00
Peter Steinberger
f44758d2fc docs(refactor): clean up notes 2025-12-26 20:39:54 +01:00
Peter Steinberger
55107160f1 docs: add refactor notes 2025-12-26 18:32:25 +01:00
Peter Steinberger
61d7fa60e8 docs: update drive parent flags 2025-12-26 10:32:53 +00:00
Peter Steinberger
eca9fa9f90 docs: update output and safety flags 2025-12-26 10:15:20 +00:00
Peter Steinberger
84a4b5ca43 docs: document drive permissions paging 2025-12-26 09:35:05 +00:00
Peter Steinberger
150f4aa411 feat(cli)!: normalize flags and args 2025-12-26 09:21:28 +00:00
Peter Steinberger
20f217f923 fix: add people auth service 2025-12-24 19:22:48 +01:00
Peter Steinberger
fcb047a22d docs: document gmail watch 2025-12-24 17:55:00 +00:00
Peter Steinberger
d50d7f7bcc feat(tasks): add Tasks support 2025-12-24 18:50:59 +01:00
Peter Steinberger
277143ab3f test(gmail): expand MIME + docs 2025-12-24 18:25:18 +01:00
Shane Lindsay
d6ae2e09aa docs(gmail): document --body-html 2025-12-24 18:25:18 +01:00
Peter Steinberger
6ee747d36e fix: make file-keyring non-interactive safe 2025-12-24 17:32:14 +01:00
Peter Steinberger
c98040a857 docs: clarify full release includes Homebrew 2025-12-17 22:25:35 +01:00
Peter Steinberger
fd05a988e7 docs: update 0.1.1 changelog and examples 2025-12-17 21:25:04 +01:00
Peter Steinberger
80533f76b6 docs: add releasing playbook
Some checks failed
ci / test (push) Has been cancelled
2025-12-12 17:08:22 +00:00
Peter Steinberger
001d61210c People API: per-endpoint scopes + other contacts scope 2025-12-12 14:44:40 +00:00
Peter Steinberger
bfbc6e4323 Unify Google CLI with auth, services, and CI 2025-12-12 14:18:38 +00:00