Commit Graph

337 Commits

Author SHA1 Message Date
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
471324b451
Merge pull request #57 from antons/feature/drafts-without-recipient
feat(gmail): allow drafts without a recipient
2026-01-10 22:26:53 +00:00
Peter Steinberger
7899c4feae fix(gmail): preserve draft To on update (#57) (thanks @antons) 2026-01-10 23:26:32 +01:00
Anton Sotkov
4e92b5972b feat(gmail): allow drafts without a recipient 2026-01-10 13:34:26 +02:00
Peter Steinberger
f371b054db release: v0.5.4
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 03:53:28 +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
8e878fe485 fix(cli): avoid vet shadow
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 03:13:12 +01:00
Peter Steinberger
ecef6a0f10 fix(cli): infer default account 2026-01-10 03:12:21 +01:00
Peter Steinberger
7b664d5ac4 chore(release): fix verify-release.sh for tap 2026-01-10 02:12:57 +01:00
Peter Steinberger
0af3c331ff fix(release): embed version in artifacts
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 02:06:20 +01:00
Peter Steinberger
c15727e9ab release: v0.5.1
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-09 23:38:59 +01:00
Peter Steinberger
c428b0af5d chore(release): add windows arm64 target 2026-01-09 23:37:22 +01:00
Peter Steinberger
810e0c5257 release: v0.5.0
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-09 22:56:59 +01:00
Peter Steinberger
e05b08992c fix(gmail): avoid err shadow in drafts update 2026-01-09 22:54:51 +01:00
Peter Steinberger
8d918ceb53
Merge pull request #55 from antons/feature/update-drafts
feat(gmail): add drafts update command
2026-01-09 21:48:17 +00:00
Peter Steinberger
95e883dc8f fix(gmail): preserve draft thread headers on update (#55) (thanks @antons) 2026-01-09 22:47:52 +01:00
Anton Sotkov
a528467dcd refactor(drafts): share compose core 2026-01-09 22:46:04 +01:00
Anton Sotkov
21fbf16390 feat(gmail): add drafts update command 2026-01-09 22:46:04 +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
b14c0ce908 fix(auth): filter non-token keys in auth tokens list 2026-01-09 16:43:14 +01:00
Peter Steinberger
3606b751ad docs(auth): link OAuth client setup 2026-01-09 15:29:20 +01:00
Peter Steinberger
bfe101a45f fix(lint): satisfy wsl/err113 2026-01-09 13:26:52 +01:00
Peter Steinberger
82a75efc41 docs(readme): remove lefthook mention 2026-01-09 13:22:21 +01:00
Peter Steinberger
334570fa8e fix(auth): skip keychain access for file backend 2026-01-09 11:29:36 +01:00
Peter Steinberger
7e12fa212f docs(readme): refresh features and auth/keyring 2026-01-09 11:08:15 +01:00
Peter Steinberger
962ccf3353 feat(auth): hint keyring file password 2026-01-09 10:52:52 +01:00
Peter Steinberger
abb3e63638 test(gmail): prevent watch serve CI hang 2026-01-09 10:35:25 +01:00
Peter Steinberger
dacfa8a178 fix(cli): keyring config UX + make gog args 2026-01-09 10:32:33 +01:00
Peter Steinberger
fde7e6ffd4 ci: fix fmt-check and lint 2026-01-09 10:09:53 +01:00
Peter Steinberger
269f8e5a1f feat(auth): add keyring backend config command 2026-01-09 10:05:40 +01:00
Peter Steinberger
ba41885b1c test: raise coverage to 85% 2026-01-09 09:18:16 +01:00
Peter Steinberger
6c6a354e54
Merge pull request #53 from visionik/fix/recurring-event-timezone
fix(calendar): add timezone to EventDateTime for recurring events
2026-01-09 05:00:19 +00:00
Peter Steinberger
00dcff3f20 fix(calendar): infer timeZone for recurring events (#53, thanks @visionik) 2026-01-09 05:58:01 +01:00
Jonathan Taylor
6ec670d0df fix(calendar): add timezone to EventDateTime for recurring events
Google Calendar API requires an explicit TimeZone field on EventDateTime
when creating recurring events. Without it, the API returns:
'Missing time zone definition for start time.'

This change extracts the timezone from the RFC3339 offset in the --from/--to
values and maps common US offsets to IANA timezone names.

Fixes recurring event creation via:
  gog calendar create primary --summary 'Test' \
    --from '2026-01-08T11:00:00-05:00' \
    --to '2026-01-08T11:30:00-05:00' \
    --rrule 'RRULE:FREQ=DAILY;INTERVAL=28'
2026-01-09 05:53:40 +01:00
Peter Steinberger
8fe47fce70
Merge pull request #35 from salmonumbrella/feature/email-tracking
feat(tracking): add optional email open tracking
2026-01-09 03:51:04 +00:00
Peter Steinberger
8b18ae87c9 fix(lint): resolve wsl lint findings (#35)
Thanks @salmonumbrella.

Co-authored-by: salmonumbrella <salmonumbrella@users.noreply.github.com>
2026-01-09 04:49:53 +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
47c06796b0 fix(lint): tidy cmd/ui lint findings (#35)
Thanks @salmonumbrella.

Co-authored-by: salmonumbrella <salmonumbrella@users.noreply.github.com>
2026-01-09 04:34:31 +01:00
Peter Steinberger
f60cf96b00 fix(tracking): remove duplicate ciphertext error (#35)
Thanks @salmonumbrella.

Co-authored-by: salmonumbrella <salmonumbrella@users.noreply.github.com>
2026-01-09 04:22:23 +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
2fe888e1fc chore(deps): update tracking deps (#35)
Thanks @salmonumbrella.

Co-authored-by: salmonumbrella <salmonumbrella@users.noreply.github.com>
2026-01-09 04:21:16 +01:00
salmonumbrella
de6a6574da Fix lint errors for email tracking 2026-01-09 04:21:05 +01:00
Peter Steinberger
088bb6c801 fix(secrets): linux dbus guard (#51, thanks @salmonumbrella) 2026-01-09 01:58:50 +01:00
salmonumbrella
64aa17f167 fix(secrets): detect headless Linux and avoid D-Bus hangs (#45)
On headless Linux systems (e.g., Raspberry Pi), gnome-keyring may be
installed but not running. When this happens, the keyring library's
attempt to connect to D-Bus SecretService hangs indefinitely.

This change adds two layers of protection:

1. D-Bus detection: If DBUS_SESSION_BUS_ADDRESS is not set and backend
   is "auto", automatically use file backend (avoids hang entirely)

2. Timeout fallback: If D-Bus is present but unresponsive, timeout after
   5 seconds with guidance to use file backend

The D-Bus detection handles the common case cleanly without goroutine
leaks. The timeout is a safety net for edge cases where D-Bus is set
but SecretService is still unresponsive.

Fixes #45

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 01:55:37 +01:00
Peter Steinberger
ce861c8b31 chore(tracking): wsl fix 2026-01-09 01:53:42 +01:00
Peter Steinberger
29181a3890 chore(tracking): lint cleanup 2026-01-09 01:53:42 +01:00