Commit Graph

131 Commits

Author SHA1 Message Date
Peter Steinberger
62a7257aba
feat(contacts): add dedupe preview (#555)
Adds a read-only contacts dedupe preview command with JSON/table output, generated command docs, README/spec docs, and changelog credit for the extracted idea from #116.\n\nCo-authored-by: Rohan Patnaik <rohan-patnaik@users.noreply.github.com>
2026-05-05 06:37:36 +01:00
Peter Steinberger
e9c496efd5
feat(drive): add read-only reporting commands (#554)
Co-authored-by: Rohan Patnaik <rohan-patnaik@users.noreply.github.com>
2026-05-05 05:36:55 +01:00
Peter Steinberger
e8e1ac4635
feat(gmail): export filters as WebUI XML (#553)
* feat(gmail): export filters as WebUI XML

* fix(gmail): satisfy filter export lint
2026-05-05 04:02:53 +01:00
Peter Steinberger
3ed52354a0
docs(skill): improve gog agent guidance (#552)
Co-authored-by: Tim Pietrusky <timpietrusky@gmail.com>
2026-05-05 02:47:31 +01:00
Peter Steinberger
b836495775
feat(sheets): add conditional formatting and banding
Adds Google Sheets conditional formatting and alternating color banding commands, with force-guarded clears, docs, regression tests, and live Google smoke verification.\n\nCo-authored-by: gobang <50824182+codBang@users.noreply.github.com>
2026-05-05 02:14:13 +01:00
Peter Steinberger
aa7c0a2f90
feat(sheets): clear table data rows
Adds header-safe table data row clearing for Google Sheets tables, including --force enforcement, footer-skip range calculation, docs, tests, and live Google smoke verification.
2026-05-04 23:14:42 +01:00
Peter Steinberger
5d3b1c0980
feat(sheets): append table rows
Adds table-aware row appends for Google Sheets tables, including docs, generated command page, width validation, and live Google smoke verification.
2026-05-04 10:09:36 +01:00
Peter Steinberger
322695f78c
feat(sheets): add table basics
Adds Google Sheets table list/get/create/delete commands, local table column type validation, generated command docs, and a dedicated Sheets tables docs page.\n\nCo-authored-by: Pedro Henrique Gomes Venturott <27008096+Pedrohgv@users.noreply.github.com>
2026-05-04 09:41:02 +01:00
Peter Steinberger
b4d6f559c3
feat(docs): add rich text formatting commands 2026-05-04 08:28:38 +01:00
Peter Steinberger
7b288cc922
feat(raw): add lossless API dump commands
Co-authored-by: Ali Karbassi <ali@karbassi.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-04 07:55:15 +01:00
Peter Steinberger
8b8fd09fa2
docs: add generated command pages site 2026-05-04 07:25:56 +01:00
Drew Burchfield
46900109e0
fix(safety): compile baked policy to code to resist binary tampering
Compile baked safety-profile policies into generated hash switches so the raw allow/deny rule strings are no longer embedded as a patchable YAML blob.

Verification before merge:
- `go test ./cmd/bake-safety-profile ./internal/safetyprofile ./internal/cmd`
- `make lint`
- `./build-safe.sh safety-profiles/agent-safe.yaml -o bin/gog-agent-safe-review`
- `./build-safe.sh safety-profiles/readonly.yaml -o bin/gog-readonly-review`
- runtime block checks for agent-safe and readonly baked binaries

Co-authored-by: drewburchfield <drewburchfield@gmail.com>
2026-05-04 05:55:05 +01:00
Peter Steinberger
6fd874075e
feat(calendar): add event ownership transfer 2026-05-04 05:50:28 +01:00
Peter Steinberger
6867fe850c
feat(docs): add tab-aware editing fixes
Co-authored-by: Don Bowman <5131923+donbowman@users.noreply.github.com>
Co-authored-by: JoseLuis Vilar <13889217+chopenhauer@users.noreply.github.com>
2026-05-04 05:22:49 +01:00
Peter Steinberger
f26af3adba
feat(safety): add baked safety profiles (#536)
* feat(safety): add baked safety profiles

Co-authored-by: Drew Burchfield <1084679+drewburchfield@users.noreply.github.com>

* fix(safety): narrow readonly profile parent allows

* fix(safety): verify basename safe-build outputs

* fix(backup): promote Gmail checkpoints into final manifest

* docs(safety): explain baked safety profiles

* feat(safety): filter profiled help and schema

* fix(safety): avoid help filter shadow warnings

* fix(backup): make plaintext export resilient

* docs(changelog): mention safety help filtering

* fix(backup): satisfy export lint checks

---------

Co-authored-by: Drew Burchfield <1084679+drewburchfield@users.noreply.github.com>
2026-04-29 03:35:18 +01:00
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