Commit Graph

25 Commits

Author SHA1 Message Date
Peter Steinberger
750881b8d2 feat(gmail): add --body-file support 2026-01-15 09:51:19 +00:00
Peter Steinberger
7899c4feae fix(gmail): preserve draft To on update (#57) (thanks @antons) 2026-01-10 23:26:32 +01:00
salmonumbrella
07ffcb5d84
fix(paths): expand ~ in user-provided file paths (#56)
* fix(paths): expand ~ in user-provided file paths

When users specify paths with ~ (e.g., --out ~/Downloads/file.pdf) and
the path is quoted in the shell command, the tilde is not expanded by
the shell. This caused files to be written to a literal ~/Downloads
directory instead of the user's home directory.

Add config.ExpandPath() function that expands ~ at the beginning of
paths to the user's home directory. Apply this fix to all user-provided
file paths across:

- gmail attachment download (--out)
- drive download/export (--out)
- drive upload (localPath argument)
- auth token export (--out)
- auth credentials/import/keep (input paths)
- gmail thread attachments (--out-dir)
- gmail send/drafts (--attach)

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

* fix(lint): address wrapcheck and wsl issues

* fix(calendar): support ISO 8601 time format and add 'list' alias

- Add parsing for ISO 8601 datetime with numeric timezone without colon
  (e.g., 2026-01-09T16:38:41-0800), which is the format produced by
  macOS `date +%Y-%m-%dT%H:%M:%S%z`
- Add 'list' as an alias for 'events' subcommand for more intuitive CLI
  usage (gog calendar list instead of gog calendar events)

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

* chore(changelog): note PR #56

* chore(lint): dedupe file string

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-10 02:19:30 +00:00
Peter Steinberger
29181a3890 chore(tracking): lint cleanup 2026-01-09 01:53:42 +01:00
Peter Steinberger
120a5aa066 refactor(tracking): extract deploy helpers 2026-01-09 01:53:42 +01:00
Peter Steinberger
74f7c15d66 fix(gmail): avoid nil tracking config 2026-01-09 00:01:48 +01:00
Peter Steinberger
818c4b2af3 fix(gmail): handle reply info pointer 2026-01-09 00:01:05 +01:00
Peter Steinberger
af6e659f72 refactor(tracking): reduce send complexity 2026-01-09 00:00:22 +01:00
Peter Steinberger
18a6e3c97f feat(tracking): per-account setup + track-split 2026-01-08 23:52:57 +01:00
Peter Steinberger
1d595747f5 feat(calendar,gmail): calendar parity + email open tracking (#38) 2026-01-08 04:44:18 +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
716106da4f feat(gmail): support thread-id replies 2026-01-03 13:03:27 +01:00
salmonumbrella
fd172846fa fix(gmail): use Reply-To header for reply-all per RFC 5322
When the original message has a Reply-To header, use that address
instead of From when auto-populating recipients for --reply-all.
This follows RFC 5322 email conventions for reply handling.

- Add ReplyToAddr field to replyInfo struct
- Fetch Reply-To header in fetchReplyInfo()
- Update buildReplyAllRecipients to prioritize Reply-To over From
- Add tests for Reply-To header behavior

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 13:02:59 +01:00
salmonumbrella
bf7d500849 feat(gmail): add --reply-all flag for send command
Add --reply-all flag that automatically populates recipients from the
original message when replying. Original sender and To recipients go
to To, original Cc recipients go to Cc. Filters out self and
deduplicates addresses. Explicit --to/--cc flags override auto-populated
recipients.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 13:02:59 +01:00
salmonumbrella
141c89a590 feat(cli): add flag aliases and improve error messages
- Add --limit as alias for --max across all commands
- Add --thread-id and --in-reply-to as aliases for --reply-to-message-id
- Enhance unknown flag errors with "Run with --help" hint
- Add tests for Kong parse error formatting and flag aliases

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 13:02:59 +01:00
Peter Steinberger
3c1afc6caf chore: tighten lint rules and fix findings 2025-12-31 19:47:32 +01:00
Peter Steinberger
4252ad53f4 refactor(cli): migrate to kong 2025-12-31 17:24:31 +01:00
Peter Steinberger
9d8d36a94e feat: take over PR #18 integration 2025-12-26 15:35:15 +01:00
Peter Steinberger
18f2a9fd4f feat(cli)!: switch to --json/--plain 2025-12-26 10:15:12 +00:00
Peter Steinberger
150f4aa411 feat(cli)!: normalize flags and args 2025-12-26 09:21:28 +00: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
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
0ebd388875 test: cover gmail + contacts via Execute 2025-12-12 16:51:01 +00:00
Peter Steinberger
bfbc6e4323 Unify Google CLI with auth, services, and CI 2025-12-12 14:18:38 +00:00