Commit Graph

116 Commits

Author SHA1 Message Date
Peter Steinberger
e98f44d665
fix(tracking): rotate email tracking keys 2026-04-28 10:22:55 +01:00
Peter Steinberger
9ce77eff13
fix(tracking): expire old open records 2026-04-28 09:32:26 +01:00
Peter Steinberger
dfc5b75f86
fix(tracking): rate-limit pixel recording 2026-04-28 09:19:13 +01:00
Peter Steinberger
0a5d06e98b
fix(auth): tolerate unreadable file keyring tokens 2026-04-28 09:15:19 +01:00
Peter Steinberger
77a16d10ef
feat(gmail): append send-as signatures 2026-04-28 08:40:43 +01:00
Peter Steinberger
1eaad2556c
feat(backup): add markdown Gmail export 2026-04-28 07:29:27 +01:00
Peter Steinberger
1763b3905f
fix(docs): harden tab export landing
Co-authored-by: Ben Lewis <johnbenjaminlewis@gmail.com>
2026-04-28 06:30:38 +01:00
Peter Steinberger
7ee069d88d
feat(backup): push gmail checkpoints asynchronously 2026-04-28 04:52:13 +01:00
Peter Steinberger
532601a0f1
fix(auth): preserve accounts across Google email renames 2026-04-28 04:01:06 +01:00
Peter Steinberger
d6111be738
fix(backup): split gmail checkpoints by plaintext size 2026-04-28 04:01:00 +01:00
Peter Steinberger
7b9197ebd1
feat(auth): add auth doctor diagnostics 2026-04-28 02:49:38 +01:00
Peter Steinberger
8e4f5acebb
fix(drive): support stdout downloads 2026-04-28 02:26:43 +01:00
Peter Steinberger
e30d870b3f
feat(contacts): export vCards
Co-authored-by: Dinakar Sarbada <dinakars777@users.noreply.github.com>
2026-04-28 02:01:07 +01:00
Peter Steinberger
9d7ca4ec5f
feat(backup): checkpoint long gmail fetches 2026-04-28 01:41:58 +01:00
Peter Steinberger
e6b6046bb1
fix(slides): harden text edit commands 2026-04-28 01:18:26 +01:00
Peter Steinberger
6e0af2c463
test(gmail): cover html body-format search 2026-04-27 22:42:45 +01:00
Peter Steinberger
28d9e9873a
feat(cli): improve google api hints and upload/timezone handling 2026-04-27 20:29:39 +01:00
Peter Steinberger
b8f53df696
perf(backup): stream gmail backup shards 2026-04-27 13:13:52 +01:00
Peter Steinberger
ff5e85b159
feat(backup): resume full gmail backups 2026-04-27 13:02:43 +01:00
Peter Steinberger
eb6886633d
fix(backup): bound drive content exports 2026-04-27 12:42:34 +01:00
Peter Steinberger
efc3df2ed8
feat(backup): expand google backup coverage 2026-04-27 12:09:37 +01:00
Peter Steinberger
6430dd1a99
fix(secrets): time out macOS keyring operations
Co-authored-by: Sardor Umarov <sardoru@gmail.com>
2026-04-27 11:22:17 +01:00
Peter Steinberger
8135cc3ff8
fix(secrets): make file keyring keys Windows-safe
Co-authored-by: solomonneas <srneas@gmail.com>
2026-04-27 11:20:48 +01:00
Peter Steinberger
068ff0e593
feat(backup): expand workspace backup coverage 2026-04-27 11:13:40 +01:00
Peter Steinberger
6f917ee74e
feat(backup): add workspace service adapters 2026-04-27 10:31:44 +01:00
Peter Steinberger
ee9b552dcd
feat(backup): add plaintext read and export commands 2026-04-27 10:15:26 +01:00
Peter Steinberger
e49e9f45c3
feat(backup): add encrypted Google backups 2026-04-27 09:19:06 +01:00
Peter Steinberger
64ab3772bf
feat(gmail,contacts): land label style and contact gender
Co-authored-by: iskkw9973 <ishikawam.dev@gmail.com>
Co-authored-by: klodr <klodr@users.noreply.github.com>
2026-04-20 19:17:47 +01:00
Peter Steinberger
dbeca138c3
docs: add generated command reference 2026-04-20 19:06:53 +01:00
spencer-c-reed
13a1aaea13
feat(gmail): add forward command
Add `gog gmail forward` / `gog gmail fwd` with optional notes, verified send-as selection, forwarded headers, thread metadata, and attachment carry-over.

Hardening in this landing pass:
- include forward/fwd in Gmail no-send guard paths
- enforce per-account no-send before any Gmail API fetch/send work
- de-duplicate forwarded header formatting and test service setup
- update README, spec, and changelog

Validation:
- make fmt
- go test ./internal/cmd -run Forward\|NoSend
- make lint && make test && make build
- make ci
- clawdbot live smoke: read-only gmail search/thread get, forward dry-run with real message id, --gmail-no-send forward blocked before send

Co-authored-by: Spencer Reed <spencer.cavendish.reed@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 17:28:27 +01:00
Alex Hillman
db3a32432c
feat(calendar): add secondary calendar creation
Adds `gog calendar create-calendar` / `new-calendar` for secondary Google Calendar creation with summary, description, timezone, and location.

Landing polish:
- removed unrelated `.byline` cache files from the PR branch
- validates IANA timezone names locally
- dry-run no longer opens the Calendar service
- includes location in text output
- added request/body, text, dry-run, and validation tests
- README/spec/CHANGELOG entries

Local verification:
- go test ./internal/cmd -run TestCalendarCreateCalendarCmd
- make lint
- make test
- make build
- make ci
- live Calendar smoke with clawdbot@gmail.com: created secondary calendar, verified summary/timezone/location, deleted it via the same auth path

Thanks @alexknowshtml.

Co-authored-by: Alex Hillman <alex@indyhall.org>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-20 17:14:11 +01:00
Gianfranco P
a1fd0a8333
feat(slides): add rendered slide thumbnails
Adds `gog slides thumbnail` / `thumb` for rendered slide thumbnail URLs and optional PNG/JPEG downloads.

Landing polish:
- supports `--out` with `--output` alias
- uses shared output-file helper for expansion, parent creation, and private perms
- preserves close/write errors
- adds missing presentation-id test plus docs/spec/CHANGELOG

Local verification:
- go test ./internal/cmd -run TestSlidesThumbnail
- make lint
- make test
- make build
- make ci
- live Slides smoke with clawdbot@gmail.com: created deck, listed slide, downloaded medium PNG thumbnail, verified PNG bytes, trashed deck

Thanks @gianpaj.

Co-authored-by: gianpaj <gianpa@gmail.com>
2026-04-20 16:52:53 +01:00
Ben Lewis
5d332f7746
feat(drive): convert Markdown uploads to Docs
Adds Markdown upload conversion to Google Docs via `--convert` / `--convert-to doc`, strips leading YAML frontmatter by default, and provides `--keep-frontmatter` for the opt-out path.

Landing polish:
- byte-based frontmatter stripping with BOM/CRLF coverage
- Drive upload media tests for stripped and preserved frontmatter
- README/spec/CHANGELOG coverage

Local verification:
- focused `go test ./internal/cmd -run ...`
- make lint
- make test
- make build
- make ci
- live Drive smoke with clawdbot@gmail.com: converted Markdown upload, Markdown export verified no frontmatter, opt-out verified preserved content, both files trashed

Thanks @johnbenjaminlewis.

Co-authored-by: Ben Lewis <johnbenjaminlewis@gmail.com>
2026-04-20 16:39:48 +01:00
takashiyamaguchi
c73bb23fec
feat(auth): add credentials remove command
Adds `gog auth credentials remove [<client>|all]` with token/domain cleanup, JSON output, dry-run support, docs, and regression tests.

Local verification:
- make fmt
- make lint
- make test
- make build
- make ci

Thanks @yamagucci.

Co-authored-by: takashiyamaguchi <yama0628taka@gmail.com>
2026-04-20 16:32:03 +01:00
Peter Steinberger
2d0533557c
docs(readme): sync examples with CLI 2026-04-20 16:15:51 +01:00
Peter Steinberger
d84148a424
feat(gmail): add command and send safety guards
Co-authored-by: EricYangTL <eric@topazlabs.com>
Co-authored-by: spookyuser <16196262+spookyuser@users.noreply.github.com>
Co-authored-by: VeteranBV <henrysowell@gmail.com>
2026-04-20 16:05:19 +01:00
Peter Steinberger
c4665c4bff
feat(auth): add ads service and keyring namespace override
Co-authored-by: Umar Khan <ufkhan97@gmail.com>

Co-authored-by: Matthias Kurz <m.kurz@irregular.at>
2026-04-20 15:29:03 +01:00
Peter Steinberger
68e0e2e6ba
chore(deps): update dependencies 2026-04-20 13:06:44 +01:00
Peter Steinberger
4067cc6e57
feat(gmail): add autoreply command 2026-03-13 17:02:21 +00:00
Peter Steinberger
e19bac1f1d feat(calendar): improve selection and recurring scope handling (#319) (thanks @salmonumbrella) 2026-03-09 03:16:58 +00:00
Peter Steinberger
77f0798461 fix(auth): add proxy-friendly OAuth callback flags (#227) (thanks @cyberfox) 2026-03-09 02:58:53 +00:00
penguinco
922c1fbb8b feat(slides): add create-from-template command with text replacement
Adds `gog slides create-from-template` command to create presentations
from templates with automatic placeholder text replacement.

Features:
- {{key}} placeholder format (auto-wrapped)
- Multiple replacement sources: --replace flags and --replacements JSON file
- Type conversion for JSON (numbers, booleans → strings)
- --exact flag for arbitrary string replacement
- Replacement statistics in output
- JSON/text output modes

Implementation:
- Copy template via Drive API
- Batch text replacement via Slides API ReplaceAllText
- Comprehensive error handling and validation
- 7 test cases covering all features and edge cases

Usage: gog slides create-from-template <templateId> <title> \
    --replace "key=value" \
    --replacements data.json
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-03-08 04:43:36 +00:00
Peter Steinberger
ffd8cd482b feat(docs): add html export format (#141) (thanks @in-liberty420) 2026-03-08 04:36:21 +00:00
Filip Prochazka
15e58b015d feat(docs): add markdown (md) export format via Google Drive API
Google added native text/markdown export support for Google Docs in
July 2024. This wires up the existing Drive export pipeline to support
--format md, leveraging Google's server-side conversion.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-08 04:24:23 +00:00
Zainan Victor Zhou
b10c81a989 feat(auth): add --extra-scopes flag for fine-grained custom OAuth scope selection
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 03:14:44 +00:00
Peter Steinberger
b4ad4c76e4 feat(contacts): document relation field support (#351) (thanks @karbassi) 2026-03-08 01:31:46 +00:00
Peter Steinberger
b935d76592 feat(gmail): harden label rename resolution (#391) (thanks @adam-zethraeus) 2026-03-08 01:17:29 +00:00
Zeldris
ccfb573051
docs: brew official formula (#361)
* docs: brew official formula

* docs(install): note official Homebrew formula (#361) (thanks @zeldrisho)

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-03-07 23:32:53 +00:00
salmonumbrella
caf38a3d33
fix(gmail-watch): delay history fetch in watch serve (#397)
* fix(gmail-watch): delay history fetch in watch serve

* fix: land gmail watch fetch delay and changelog (#397) (thanks @salmonumbrella)

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-03-07 14:54:54 +00:00
Peter Steinberger
9eb42121e9 docs: update drive ls --all docs/changelog (#107) (thanks @struong) 2026-03-03 05:06:17 +00:00