Commit Graph

68 Commits

Author SHA1 Message Date
Peter Steinberger
2313c1be4c fix: add gmail filter scope regression test (#69) (thanks @ryanh-ai) 2026-01-16 09:11:19 +00:00
Ryan H
0447664fcd fix(gmail): add settings.sharing scope for filter operations
Filter creation requires the gmail.settings.sharing scope. Without it,
users get a 403 insufficientPermissions error when trying to create
filters via `gog gmail settings filters create`.

Fixes #68
2026-01-16 09:08:11 +00:00
Peter Steinberger
29813305b9 chore: update deps + tests (0.6.2 Unreleased) 2026-01-15 17:26:19 +00:00
Peter Steinberger
f2347515d8 fix(keep): use keep.readonly scope (#64) (thanks @jeremys) 2026-01-11 02:24:48 +01:00
Peter Steinberger
bdace30a35 test(auth): cover sheets scope matrix
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-11 00:13:17 +01:00
Peter Steinberger
11562321ec fix(auth): include drive scope for sheets export
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-11 00:06:04 +01: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
Peter Steinberger
6d462c5864 fix(lint): satisfy wsl 2026-01-09 21:05:08 +01:00
Peter Steinberger
b44d1d5d97 feat(auth): add groups service 2026-01-09 21:05:05 +01:00
Peter Steinberger
4af0cb83f1 fix(auth): verify account matches authorized email 2026-01-09 17:30:19 +01:00
Peter Steinberger
bfe101a45f fix(lint): satisfy wsl/err113 2026-01-09 13:26:52 +01:00
Peter Steinberger
334570fa8e fix(auth): skip keychain access for file backend 2026-01-09 11:29:36 +01:00
Peter Steinberger
ba41885b1c test: raise coverage to 85% 2026-01-09 09:18:16 +01:00
Peter Steinberger
852083613f fix(lint): tidy wsl spacing (#35)
Thanks @salmonumbrella.

Co-authored-by: salmonumbrella <salmonumbrella@users.noreply.github.com>
2026-01-09 04:41:05 +01:00
Peter Steinberger
6547ac0b04 fix(lint): satisfy fmt/lint checks (#35)
Thanks @salmonumbrella.

Co-authored-by: salmonumbrella <salmonumbrella@users.noreply.github.com>
2026-01-09 04:39:24 +01:00
Peter Steinberger
7beb1bc52f fix(lint): tidy test lint findings (#35)
Thanks @salmonumbrella.

Co-authored-by: salmonumbrella <salmonumbrella@users.noreply.github.com>
2026-01-09 04:34:38 +01:00
Peter Steinberger
c1ebd60210 test: expand coverage and tracking regressions (#35)
Thanks @salmonumbrella.

Co-authored-by: salmonumbrella <salmonumbrella@users.noreply.github.com>
2026-01-09 04:21:16 +01:00
Peter Steinberger
a9fc01a5e7 refactor(input): improve prompts and EOF handling 2026-01-08 21:26:28 +01:00
Peter Steinberger
e3b3ca9e64 test(googleauth): remove duplicate ReadLine test 2026-01-08 20:21:56 +01:00
Peter Steinberger
e9370fc593 refactor(input): share ReadLine helper 2026-01-08 20:21:43 +01:00
Peter Steinberger
7a59bad6e6 fix(auth): accept manual OAuth URL without newline 2026-01-08 12:26:52 +01:00
Peter Steinberger
9bf5e12c47 feat(cli): wire keep/groups and improve help 2026-01-08 12:08:38 +01:00
Peter Steinberger
3c9ea2326f feat(gmail): add gmail.settings.basic scope for filters 2026-01-08 11:34:23 +01:00
Peter Steinberger
1d595747f5 feat(calendar,gmail): calendar parity + email open tracking (#38) 2026-01-08 04:44:18 +01:00
Peter Steinberger
1790fd3024 refactor(auth): harden auth manage email resolution 2026-01-08 03:30:08 +01:00
Peter Steinberger
024deee55d feat(auth): add services metadata and listing 2026-01-08 01:24:22 +01:00
Peter Steinberger
204e44ee31 fix(auth): request docs scope for docs service 2026-01-08 00:28:56 +01:00
Peter Steinberger
c724e392fe fix(auth): align docs scope with drive 2026-01-08 00:20:00 +01:00
Peter Steinberger
1f30c5475b fix(auth): store real email in auth manage
Always request userinfo email scope and resolve the account email via userinfo during the callback.\n\nCo-authored-by: salmonumbrella <182032677+salmonumbrella@users.noreply.github.com>
2026-01-07 23:58:38 +01:00
Peter Steinberger
43f6ac5c87 refactor(auth): centralize service metadata 2026-01-07 23:38:06 +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
Elie Habib
1cdd178a04 feat: add Google Keep support (Workspace only)
Add support for Google Keep API with domain-wide delegation for
Google Workspace accounts.

New commands:
- `gog keep list` - list all notes
- `gog keep get <noteId>` - get a specific note
- `gog auth keep <email> --key <path>` - configure service account

The Keep API requires Workspace with domain-wide delegation because
Google restricts the Keep scope to enterprise use. Once configured,
the service account is auto-detected for the specified email.

Features:
- Service account authentication with impersonation
- Auto-detection of stored service account credentials
- JSON output support for scripting
- Manual override with --service-account and --impersonate flags
2026-01-07 21:23:05 +01:00
salmonumbrella
20ee771f7b fix: remove stale nolint directive
Main branch fixed the contextcheck issue by using ctx instead of
context.Background(), so the nolint directive is no longer needed.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 06:52:36 +01:00
salmonumbrella
6816c47dbd fix: suppress contextcheck for intentional fresh shutdown context
The server shutdown intentionally uses a fresh context.Background()
so it can complete gracefully even if the parent context is canceled.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 06:52:36 +01:00
salmonumbrella
f7afbf8e5a fix: suppress nolintlint for platform-specific contextcheck
The contextcheck linter only triggers on macOS (where EnsureKeychainAccess
has a real implementation), but on Linux the stub doesn't trigger it,
causing nolintlint to complain the directive is unused.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 06:52:36 +01:00
salmonumbrella
4e896d6f5a fix: address lint issues in keychain checks 2026-01-03 06:52:36 +01:00
salmonumbrella
fffc6c1664 feat(auth): check keychain in manage server flow 2026-01-03 06:52:36 +01:00
Peter Steinberger
0bb5da41da fix: satisfy lint for oauth + keyring 2026-01-02 19:58:34 +01:00
Peter Steinberger
6f1f24bd7a fix: finish oauth flow immediately 2026-01-02 18:19:26 +01:00
Peter Steinberger
19d833fd3e feat: add token validation + keyring backend override 2026-01-02 14:03:06 +01:00
Peter Steinberger
3c1afc6caf chore: tighten lint rules and fix findings 2025-12-31 19:47:32 +01:00
Peter Steinberger
e616a5b733 chore: tighten lint rules 2025-12-31 17:51:45 +01:00
Peter Steinberger
ddef9fa17a chore(lint): tighten golangci rules 2025-12-31 17:38:29 +01:00
Peter Steinberger
348f6d2a05 test: raise coverage and tighten lint 2025-12-31 14:31:49 +01:00
Peter Steinberger
e0dfc7eecc docs(auth): clarify auth flow wait 2025-12-31 13:19:51 +01:00
salmonumbrella
4e063e2244 test(auth): add test for context cancellation in waitPostSuccess
Extract inline select block into waitPostSuccess function and add
unit tests verifying context cancellation behavior for Ctrl+C support.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 13:19:01 +01:00
salmonumbrella
35ee438109 refactor(auth): standardize sync comment format
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 13:19:01 +01:00
salmonumbrella
815ba0d371 fix(auth): inject countdown value via template to eliminate sync requirement
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 13:19:01 +01:00
salmonumbrella
032c86bf16 refactor(auth): consolidate success templates into one
- Merge success_new.html content/layout into success.html
- Add animated gradient orbs from original success.html
- Use Go template conditionals to handle both cases:
  - With email/services (account manager flow)
  - Without email (simple OAuth flow)
- Delete redundant success_new.html
- Rename renderSuccessPageNew to renderSuccessPageWithDetails
- Update tests to cover both template modes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 13:19:01 +01:00