All 17 playbook findings (P0-P3) resolved. v0.2.0 includes enterprise hardening, workflow expansion, multi-tenant profiles, Forms pipeline, and systemd support. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
113 lines
6.6 KiB
Markdown
113 lines
6.6 KiB
Markdown
# GARC Changelog
|
||
|
||
All notable changes to this project are documented here.
|
||
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||
|
||
---
|
||
|
||
## [0.1.0] — 2026-04-15 — Initial Release
|
||
|
||
This is the first public release of GARC. Core operations for Gmail, Calendar,
|
||
Drive, Sheets, Tasks, and People are functional end-to-end. Several enterprise
|
||
features are deferred to v0.2 (see Known Limitations in README).
|
||
|
||
### Added
|
||
|
||
**CLI entrypoint**
|
||
- `bin/garc` — Main CLI with full command dispatch (gmail / calendar / drive / sheets / task / people / memory / ingress / daemon / agent / approve / auth / bootstrap / setup / status / heartbeat)
|
||
|
||
**Google Workspace operations**
|
||
- `lib/gmail.sh` + `scripts/garc-gmail-helper.py` — send / reply / search / read / inbox / draft / labels / profile
|
||
- `lib/calendar.sh` + `scripts/garc-calendar-helper.py` — today / week / list / create / delete / freebusy
|
||
- `lib/drive.sh` + `scripts/garc-drive-helper.py` — list / search / upload / download / create-doc / share / info
|
||
- `lib/sheets.sh` + `scripts/garc-sheets-helper.py` — info / read / append / update / search / clear
|
||
- `lib/task.sh` + `scripts/garc-tasks-helper.py` — list / create / done / show / update / delete / clear-completed / tasklists
|
||
- `lib/people.sh` + `scripts/garc-people-helper.py` — lookup / directory / list / contacts
|
||
|
||
**Agent runtime**
|
||
- `lib/bootstrap.sh` — Disclosure chain loading from Google Drive (SOUL.md → USER.md → MEMORY.md → RULES.md → HEARTBEAT.md)
|
||
- `lib/memory.sh` — Google Sheets memory sync (pull / push / search)
|
||
- `lib/agent.sh` — Agent registry via Google Sheets (list / register / show)
|
||
- `lib/approve.sh` — Execution gate and approval flow (gate / list / act / create)
|
||
- `lib/heartbeat.sh` — System state logging to Google Sheets
|
||
- `lib/ingress.sh` — Queue/ingress system with JSONL local cache (enqueue / list / run-once / done / fail / stats)
|
||
- `lib/daemon.sh` — Gmail polling daemon with macOS launchd support (start / stop / status / poll-once / install)
|
||
- `lib/kg.sh` — Knowledge graph via Google Drive Docs
|
||
|
||
**Auth & config**
|
||
- `scripts/garc-auth-helper.py` — OAuth2 scope inference + token management
|
||
- `scripts/garc-core.py` — Shared auth, retry, and utilities
|
||
- `scripts/garc-setup.py` — One-shot workspace provisioner (garc setup all)
|
||
- `config/scope-map.json` — 42 task types × Google OAuth scopes × keyword patterns
|
||
- `config/gate-policy.json` — Execution gate policies (none / preview / approval)
|
||
- `config/config.env.example` — Configuration template
|
||
- `agents.yaml` — Default agent declarations (main / crm-agent / doc-agent / expense-processor)
|
||
|
||
**Claude Code bridge**
|
||
- `scripts/garc-ingress-helper.py` — Task type inference + Claude Code execution prompt builder
|
||
- `.claude/skills/garc-runtime/SKILL.md` — Claude Code skill definition
|
||
|
||
**Documentation**
|
||
- `README.md` — Quickstart, usage, prerequisites, known limitations, roadmap
|
||
- `README.ja.md` — Japanese translation
|
||
- `docs/quickstart.md` — 15-minute setup guide
|
||
- `docs/google-cloud-setup.md` — Google Cloud Console step-by-step
|
||
- `docs/garc-architecture.md` — Full architecture reference
|
||
- `docs/garc-vs-larc.md` — GARC vs LARC comparison
|
||
- `docs/gws-api-alignment.md` — GWS API command mappings
|
||
|
||
### Known Limitations (v0.1.0)
|
||
|
||
- Google Chat integration not implemented — Gmail used as fallback for notifications
|
||
- Service Account / Domain-wide Delegation not supported — user OAuth only
|
||
- No audit log
|
||
- `garc auth revoke` not implemented
|
||
- Editing existing Google Docs body not implemented
|
||
- Google Forms → auto-enqueue pipeline not implemented
|
||
- macOS only for daemon install (launchd); Linux systemd not yet supported
|
||
- Single Google Workspace organization only
|
||
|
||
---
|
||
|
||
## [0.2.0] — 2026-04-15 — Enterprise Hardening + Workflow Expansion
|
||
|
||
All 17 findings from the v0.1.0 operational readiness audit have been resolved.
|
||
|
||
### Fixed (P0 — Blockers)
|
||
|
||
- **agent register**: upsert by `agent_id` — re-running no longer creates duplicate rows
|
||
- **daemon poll-once**: extracted `_gmail_poll_cycle` for synchronous single-cycle execution; `sleep 5 / kill` timeout removed
|
||
- **requests warnings**: suppressed `urllib3` / `googleapiclient` `DeprecationWarning` on Python 3.12+; `requests` added to `requirements.txt`
|
||
|
||
### Fixed (P1 — Operational risks)
|
||
|
||
- **OAuth refresh**: `RefreshError` (revoked token) now deletes the stale token file and falls through to a new OAuth flow; scope coverage verified before returning cached credentials
|
||
- **ingress stale-reset**: new `garc ingress stale-reset [--timeout N]` resets `in_progress` items stuck longer than N minutes back to `pending`
|
||
- **Sheets empty rows**: `garc sheets trim-sheet` and `garc sheets clean-all` use `batchUpdate deleteDimension` to remove trailing empty rows
|
||
- **Approval notification**: `garc ingress run-once` on approval-gated items sends a Gmail notification to `GARC_APPROVAL_EMAIL`; `GARC_AUTO_CONFIRM` env var added
|
||
|
||
### Added (P2 — Enterprise features)
|
||
|
||
- **Google Chat**: `scripts/garc-chat-helper.py` + `garc send chat send/list-spaces/list-messages`
|
||
- **Service Account / DWD**: `garc auth service-account verify`, `GARC_IMPERSONATE_EMAIL`, `--type service-account` flag on `garc auth login`
|
||
- **Audit log**: `audit` tab in Sheets; `garc audit list [--agent] [--since]`; async audit hook in `bin/garc`
|
||
- **`garc auth revoke`**: POST to Google revoke endpoint + deletes local token file
|
||
- **Google Docs editing**: `_doc_insert_text` + `append_doc` properly calls `batchUpdate insertText`; `garc drive append-doc <doc_id> --content` added
|
||
- **KG improvements**: Drive file listing pagination fixed; shell injection in `kg.sh` eliminated; `garc-kg-query.py` extracted as a proper CLI tool
|
||
|
||
### Added (P3 — Roadmap)
|
||
|
||
- **Multi-tenant profiles**: `lib/profile.sh` — `garc profile list/use/add/show/remove/current`; `bin/garc` auto-loads `~/.garc/profiles/<name>/config.env` and token when `GARC_PROFILE` is set
|
||
- **Google Forms pipeline**: `garc-forms-helper.py` + `lib/forms.sh` — `garc forms list/responses/watch`; polls Forms for new responses and enqueues them via `garc ingress`
|
||
- **Linux systemd support**: `_daemon_install_service` detects OS (Darwin → launchd plist, Linux → `.service` + `.timer` units); `--system` flag for system-wide install
|
||
- **Python version gate**: `pyproject.toml` (`python_requires = ">=3.10,<3.13"`); startup check in `bin/garc`; `garc doctor` diagnostics command
|
||
|
||
---
|
||
|
||
## Unreleased
|
||
|
||
### v0.3 — Stability (planned)
|
||
- GCP Secret Manager integration for credential management
|
||
- Agent-to-agent approval chains
|
||
- `garc kg` — Sheets-backed persistent index (vs local JSON cache)
|
||
- GitHub Actions CI matrix (Python 3.10 / 3.11 / 3.12)
|