Commit Graph

86 Commits

Author SHA1 Message Date
Peter Steinberger
e58ccfb87b fix: refine gmail thread modify command 2025-12-31 13:08:27 +01:00
Alex Hillman
356058ac7c Add thread modify command for batch label operations
This adds a new `gmail thread modify` subcommand that uses the Gmail API's
Threads.Modify endpoint to apply label changes to all messages in a thread
at once.

Usage:
  gog gmail thread modify <threadId> --add "Label1,Label2" --remove "Label3"

Features:
- Resolves label names to IDs automatically
- Supports both adding and removing labels in a single operation
- JSON output mode for programmatic use

BREAKING CHANGE: The `gmail thread` command is now a parent command with
subcommands. Use `gmail thread get <id>` instead of `gmail thread <id>`.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 03:56:56 +00:00
Peter Steinberger
05069448ce feat(docs): create/copy/info/text 2025-12-26 22:24:22 +01:00
Peter Steinberger
f158aa7ebf fix(gmail): thread attachment downloads 2025-12-26 21:34:08 +01:00
Peter Steinberger
2b86e5c7fe style(googleauth): improve success footer contrast 2025-12-26 20:56:43 +01:00
Peter Steinberger
f6910f4395 fix(drive): permissions list without empty page token 2025-12-26 20:53:06 +01:00
Peter Steinberger
c888a85b1c test: add regression coverage 2025-12-26 19:20:53 +01:00
Peter Steinberger
eedfba8a5f fix(sheets): avoid --json flag collision 2025-12-26 19:20:44 +01:00
Peter Steinberger
720dec78ee fix(googleauth): restore accounts template 2025-12-26 19:20:40 +01:00
Peter Steinberger
4713e3f8d9 refactor(googleauth): embed html templates 2025-12-26 18:32:19 +01:00
Peter Steinberger
ba6e44775c test(cmd): cover docs/sheets/slides exports 2025-12-26 18:32:13 +01:00
Peter Steinberger
30fbee4a8f refactor(cmd): unify drive exports and table output 2025-12-26 18:32:06 +01:00
Peter Steinberger
9c1f2aaabb feat: add docs/slides/sheets export commands 2025-12-26 18:01:07 +01:00
Peter Steinberger
c205ace50e test(drive): add export format coverage 2025-12-26 17:50:34 +01:00
Peter Steinberger
0a84c2b34a feat(drive): export docs as docx 2025-12-26 17:44:48 +01:00
Peter Steinberger
1b69c2e334 feat(drive): support --format for Google Docs exports 2025-12-26 17:41:15 +01:00
Peter Steinberger
6c4ee18d83 test(gmail): cover padded base64 attachments 2025-12-26 17:32:47 +01:00
Peter Steinberger
9ff2928dda fix(gmail): make attachment download reliable 2025-12-26 17:24:38 +01:00
Peter Steinberger
f044d59522 chore(cli): remove --debug flag
Some checks failed
ci / test (push) Has been cancelled
2025-12-26 16:20:33 +01:00
Peter Steinberger
cd793f2c65 chore(cli): prefer --verbose over --debug 2025-12-26 16:14:02 +01:00
Peter Steinberger
9d8d36a94e feat: take over PR #18 integration 2025-12-26 15:35:15 +01:00
Peter Steinberger
04299d2248 test: enforce drive flag contract 2025-12-26 10:32:50 +00:00
Peter Steinberger
cba4f1fc97 feat(cli)!: normalize drive parent flags 2025-12-26 10:32:45 +00:00
Peter Steinberger
7663e52643 fix(calendar): confirm only on delete 2025-12-26 10:21:08 +00:00
Peter Steinberger
4744cfbaf4 fix: apply confirmations to destructive cmds 2025-12-26 10:20:03 +00:00
Peter Steinberger
1a0f03ced7 fix: satisfy govet shadow lints 2025-12-26 10:16:08 +00:00
Peter Steinberger
18f2a9fd4f feat(cli)!: switch to --json/--plain 2025-12-26 10:15:12 +00:00
Peter Steinberger
65b5ccb303 test: fix linter shadows 2025-12-26 09:35:39 +00:00
Peter Steinberger
9817b49d8e test: expand paging and reply coverage 2025-12-26 09:34:59 +00:00
Peter Steinberger
7c00bba72e feat(drive): page permissions list 2025-12-26 09:34:52 +00:00
Peter Steinberger
150f4aa411 feat(cli)!: normalize flags and args 2025-12-26 09:21:28 +00:00
Peter Steinberger
79d76c7b9a feat(calendar): add --max and --page to calendars 2025-12-26 08:49:08 +00:00
Peter Steinberger
e8dc1af8a1 refactor(secrets): remove Keychain trust env toggle 2025-12-26 08:33:34 +00:00
Peter Steinberger
3f2f858820 fix(secrets): trust Keychain application by default 2025-12-26 08:20:50 +00:00
salmonumbrella
fa2ee8fb60
fix(ci): update golangci-lint to v2 and fix config
- Update Makefile to install golangci-lint v2.1.6
- Migrate .golangci.yml to v2 format
- Add exclusions for common false positives
- Remove unused helper functions
2025-12-24 20:19:39 -08:00
salmonumbrella
f4243c33a8
feat(calendar): add --all flag to events command
List events from all calendars at once with merged, time-sorted output.
2025-12-24 19:49:30 -08:00
salmonumbrella
e7fae164f4
feat: add context propagation, security fixes, and new features
Drive:
- Add context propagation to all API calls
- Add path traversal security fix in download

Gmail:
- Add context propagation to labels and thread commands
- Simplify MIME building (remove unused ReplyTo, BodyHTML)
- Add --from flag for send-as aliases in send and drafts
- Simplify base64 decoding
- Add path traversal security fix in attachments

Calendar:
- Add needsAction status support to respond command
- Add --comment flag for response comments
- Add organizer check to prevent self-response

Auth:
- Add browser-based account management command (auth manage)
- Add web UI for managing connected accounts

Maintenance:
- Update golangci-lint config for v2 compatibility
2025-12-24 19:14:01 -08:00
salmonumbrella
d2be673d10
feat: add retry logic, concurrent fetching, and extended commands
Resilience:
- RetryTransport with circuit breaker for 429/5xx resilience
- Exponential backoff with jitter, respects Retry-After headers
- Circuit breaker auto-resets after 30s of successful requests

Performance:
- Concurrent gmail thread fetching (fixes N+1 query pattern)
- Bounded concurrency with semaphore (max 10 parallel)

New calendar commands:
- colors: list available event/calendar colors
- conflicts: check availability across calendars
- search: find events by text query
- time: show current time in multiple timezones

New gmail commands:
- autoforward: get/enable/disable auto-forwarding
- delegates: list/add/remove mail delegation
- filters: list/create/delete inbox filters
- forwarding: manage forwarding addresses
- sendas: manage send-as aliases
- vacation: get/enable/disable vacation responder
- batch: bulk operations (mark-read, archive, label, delete)
- watch: Pub/Sub push with webhook forwarding

New services:
- Sheets: read/write/append spreadsheet data
- Tasks: manage tasklists and tasks

Developer experience:
- Shell completion (bash, zsh, fish, powershell)
- version command with build info
- --debug flag for verbose logging
- lefthook for pre-commit hooks

Documentation:
- Expanded README with examples
- Gmail watch/Pub/Sub guide (docs/watch.md)
- Architecture spec (docs/spec.md)
- Release process (docs/RELEASING.md)
2025-12-24 17:51:21 -08:00
Peter Steinberger
76937a074d test: cover gmail push historyId formats 2025-12-24 18:31:40 +00:00
Peter Steinberger
21af864b50 fix: accept numeric gmail historyId 2025-12-24 18:31:40 +00:00
Peter Steinberger
20f217f923 fix: add people auth service 2025-12-24 19:22:48 +01:00
Peter Steinberger
4f695ababe fix: avoid err shadowing in gmail watch 2025-12-24 19:00:07 +01:00
Peter Steinberger
aea131abb9 test: cover gmail watch flow 2025-12-24 17:53:48 +00:00
Peter Steinberger
b59ea1e8cb feat: add gmail watch and history commands 2025-12-24 17:53:48 +00:00
Peter Steinberger
93c35dd73c test(tasks): add validation coverage 2025-12-24 18:52:33 +01: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
5a7afe5143 feat(gmail): restore reply-to-address header 2025-12-24 18:25:18 +01:00
Shane Lindsay
0774fb9c64 feat(gmail): support HTML bodies 2025-12-24 18:25:18 +01:00
Peter Steinberger
e1bc61d26b test(gmail): expand base64url decoding coverage 2025-12-24 18:09:42 +01:00