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
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>
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
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>
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>
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>
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>
- 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>