grr-cli 0.11.2

Google tools from the terminal, at maximum performance: 401 methods across 14 Google APIs in one generated command tree, zero-config, over HTTP/3
Documentation
# Changelog

All notable changes to `grr` are recorded in this file.

The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

<!--
  This file is generated by scripts/generate-changelog.mjs from the commit
  history and the git tags. Do not edit it by hand - the next run overwrites
  everything between the generated-start and generated-end markers. Text outside
  those markers is preserved.

  Commits are grouped by Conventional Commits type (feat, fix, perf, docs,
  chore, ...). A commit with no conventional type is still listed, under
  "Other", because a real change should never vanish from the changelog. A
  release with a breaking change (feat!: or a BREAKING CHANGE: footer) is called
  out in a Breaking changes section and should ship as a MAJOR bump.
-->

<!-- generated-start -->

## [Unreleased]

### Fixed

- **ci:** run the rustsec audit on a resolved lockfile, re-aim the release changelog check

### Internal

- 5 internal commits (chore 5)

### Other

- **compare:** refresh daily benchmark snapshot

## [0.11.1] - 2026-10-05

### Fixed

- **windows:** v2 CPU baseline and no UPX — portability over the last percent
- **windows:** keep v3 and UPX — the label's cause is the invocation, not the artifact

### Internal

- 4 internal commits (chore 4)

### Other

- **compare:** refresh daily benchmark snapshot
- **compare:** refresh daily benchmark snapshot

## [0.11.0] - 2026-10-04

### Added

- **site:** the essay gets BlogPosting structured data

### Internal

- 2 internal commits (chore 2)

## [0.10.0] - 2026-10-05

### Added

- **brand:** the mascot generator gates itself — assets and banner parity
- **packaging:** a container for MCP introspection hosts

### Fixed

- **windows:** the distribution binaries carry their runtime

### Internal

- 6 internal commits (chore 6)

### Other

- **compare:** refresh daily benchmark snapshot

## [0.9.1] - 2026-10-04

### Fixed

- **verify:** anchor the release grace window to the tag while the release builds

### Internal

- 4 internal commits (chore 4)

### Other

- **compare:** refresh daily benchmark snapshot

## [0.9.0] - 2026-10-04

### Added

- **skills:** installs that migrate themselves
- **site:** sitewide search — a Pagefind index and a keyboard dialog

### Changed

- **site:** out with the deprecated, in with the dead weight cut
- **auth:** one token\_request helper for the three token flows

### Fixed

- **demo:** prompt identities are scrubbed, and the validator fails closed
- **auth:** the keychain is read at first credential use, never at startup

### Documentation

- **site:** the getting-started page tells the winget story straight
- the audit's drift sweep
- **site:** the live-site audit's fixes + the System One section
- README, CONTRIBUTING and the GCP walkthrough, reviewed and trimmed
- the self-migrating installs are a headline, so say so

### Internal

- 11 internal commits (chore 10, ci 1)

### Other

- **compare:** refresh daily benchmark snapshot

## [0.8.1] - 2026-10-04

### Fixed

- **release:** archives ship the binary as grr, not the target name
- **docs-rs:** inject the cfg gates through cargo-args; render the demo GIF per release
- **release:** tag-release finally accepts the dispatch it has always been sent

### Internal

- 4 internal commits (chore 4)

### Other

- **compare:** refresh daily benchmark snapshot

## [0.8.0] - 2026-10-04

### Added

- **cli:** grr skills install — the packaged agent skills, globally
- **bench:** as-shipped sizes and the peak-memory metric

### Changed

- **scripts:** delete dead weight, share the flag contract
- delete dead code across the CLI
- **scripts:** Node 26's import.meta.dirname/filename, stat over read
- **site:** native CSS for what the shell hand-rolled

### Performance

- **ci:** PR creators wake the merge poller — kill the 5-7 min approval wait
- async the last blocking paths, trim hot-path allocations, drop dead deps

### Fixed

- **ci:** merges with GITHUB\_TOKEN fire no downstream workflows
- **ci:** token-authored pushes and releases start nothing — dispatch the chain
- **site:** the live audit's twelve content corrections
- **ci:** poller retry, changelog in the release dispatch, dead input
- **crate:** the published manifest parses without this repo's config gates

### Documentation

- packaging status told the truth (0.7.0; winget unpublished)
- grr skills install across every surface

### Internal

- 12 internal commits (chore 8, ci 4)

### Other

- **compare:** refresh daily benchmark snapshot

## [0.7.0] - 2026-10-03

### Added

- unattended releases + the stale-count sweep
- **site:** draw the service illustrations and glyphs as real pixel art
- **cli:** draw the grr crab in the version banner

### Performance

- **site:** 100 in every Lighthouse category
- **release:** pack with UPX --lzma — measured 20% smaller

### Fixed

- **site:** the last stale counts - 401/14 everywhere
- **automation:** release correctness, dependency freshness and workflow cost
- **site:** stop deriving the site's numbers by hand
- **changelog:** restore the PR body swallowed by add-paths
- **site:** a real gutter between the docs sidenav and the content
- **assets:** the repo-root logos are the current pixel art
- strip UTF-8 BOMs from twelve tracked files
- **bench:** the arm runner measured the wrong gog binary
- **ci:** \`gh pr view --json state\` returns OPEN, not open
- **ci:** merging needs contents:write, not contents:read
- **ci:** --admin has no bypass for the app token; fall back on any rejection
- **changelog:** the file cannot list the commit that writes it
- **site:** the gutter rule was losing to Tailwind's core .container
- **site:** stale metadata and doc counts, now derived
- **site:** the homepage stops advertising commands that do not exist
- **site:** honest data displays on compare and the stats strip
- **site:** the live demo plays the cast on main, not a rotted copy
- **release:** the bump PR title said vv0.7.0

### Documentation

- 0.6.0 release stats - 5-platform binary sizes
- **demo:** the README matches the self-maintaining reality
- bring the prose back in line with the tree
- 22 corrections against the current tree
- the Homebrew tap is debanjanbasu/tap

### Internal

- 11 internal commits (chore 9, ci 2)

### Other

- **compare:** refresh daily benchmark snapshot

## [0.6.0] - 2026-10-02

### Added

- cover the full consumer Workspace family - 14 APIs, 401 methods
- grr mcp server + safety profiles (--readonly, --deny-service, --deny-verb)
- grr ask - natural language to a typed method + params via System One
- terminal demo - asciinema cast with a real opencode agent segment
- linux-aarch64 release target (5th platform) + ARM runners everywhere GA
- demo embed + docs for mcp/ask/safety/account
- the API reference - all 401 methods documented, baked from the index
- the site maintains itself - CI demo recording + auto release
- the whole tree works offline - --dry-run needs no credential
- **demo:** carry-forward for transport and agent segments everywhere

### Fixed

- the demo player renders correctly - three stacked fixes
- **demo:** the scattered rendering was bare \\\\n in the cast frames
- **ci:** the generated-artifact gates and the demo recording are cross-platform
- **api:** list/describe/refresh work with zero configuration
- **release:** update Cargo.lock for v0.6.0

### Documentation

- 0.5.0 release stats - 4-platform binary sizes

### Internal

- 7 internal commits (chore 2, ci 5)

### Other

- **compare:** refresh daily benchmark snapshot

## [0.5.0] - 2026-09-28

### Breaking changes

- the command tree is generated from Google's Discovery Service

### Added

- **site:** round four - modern CSS/SVG cool pass + Rust Rewrite app-name signals

### Fixed

- restore the linux io\_uring deps the transport probe still needs
- **release:** UPX windows step - drop disabled add-path, fix GITHUB\_ENV format
- **release:** GITHUB\_PATH takes effect for later steps, not the install step itself
- **release:** pack a copy and verify before replacing - UPX segfaults on the ARM64 PE

### Documentation

- 0.4.0 is live - release stats + packaging status
- 0.5.0 changelog + refreshed stats

## [0.4.0] - 2026-09-26

### Breaking changes

- http3 is now the default feature of every crate
- 0.4.0 - one crate, full API coverage, pixel-art site

### Added

- 0.4.0 hardening - http3 always-on, nightly-only, pixel 3D site

### Fixed

- **packaging:** crates.io category slug is date-and-time
- **ci:** rewrite publish.yml byte-clean (BOM broke workflow parsing)
- **pages:** checkout the repo root, not a nested site path
- **packaging:** crates.io allows at most 5 keywords
- **packaging:** crates.io allows at most 5 categories

### Documentation

- crates.io is live — 0.3.0 published, trusted-publishing-only

### Internal

- 5 internal commits (chore 3, ci 2)

## [0.3.0] - 2026-09-24

### Added

- v0.3.0 — one CLI, six services (Gmail, Calendar, Drive, Contacts, Chat, Forms)

## [0.2.0] - 2026-09-23

### Added

- **config:** add TOML config file support with env var overrides
- **error:** remove client-side throttling, improve 429 handling with Retry-After
- **models:** add EmailMessage, ThreadMessage, AttachmentInfo, DraftInfo, LabelInfo, HistoryRecord, SendAsInfo
- **client:** add all 30+ missing API methods (messages, drafts, labels, threads, history, send-as, watch, import)
- **core:** fix h3/h2 prior-knowledge exclusion, add verified TransportInfo with h3 fallback
- **core:** add fs\_io abstraction — io\_uring-backed file I/O on Linux, tokio elsewhere
- **core:** single-allocation attachment decode + streamed disk writes
- **core:** true streaming send/import via media-upload endpoints; incremental base64 MIME assembly
- **cli:** add transport introspection command
- rename to gmail-cli; auth rework, gzip decode, model fixes, release CI
- grr v0.2.0 — zero-config rework, keyring auth, agent surface

### Changed

- cleanup and optimize workspace

### Fixed

- **core:** force per-request HTTP\_3 version on probe and all data-plane requests when h3 effective
- rejected refresh token returns Auth error instead of implicit OAuth flow
- **auth:** add token\_path override hook so tests never touch real credentials
- **auth:** preserve stored refresh token when grant response omits one
- **client:** fail fast with Auth error on 401 instead of futile stale-token retry
- **cli:** route send-with-attachments through legacy JSON path when --thread\_id given
- **io:** report io\_uring only when the io\_uring feature is compiled in
- **config:** accept snake\_case OAuth keys for TypeScript-era config migration
- **ci:** drop stray aarch64 linker from x86\_64-linux table; pass -D warnings after --
- **ci:** clippy is\_multiple\_of + -p grr-cli package refs for release

### Documentation

- add cleanup & optimization design spec
- clarify zstd/brotli removal - payload compression stays via reqwest features
- add performance-claims design spec (HTTP/3, streaming, io\_uring file I/O)
- add performance-claims implementation plan
- commit spec media-upload amendment and config path fix

### Internal

- 5 internal commits (chore 3, style 1, test 1)

### Other

- Initial commit: gmail-opencode-rust - High-performance Gmail API client with HTTP/3, QUIC, zero-copy streaming
- small fix wave partial

[unreleased]: https://github.com/debanjanbasu/grr-cli/compare/v0.11.1...HEAD
[0.11.1]: https://github.com/debanjanbasu/grr-cli/compare/v0.11.0...v0.11.1
[0.11.0]: https://github.com/debanjanbasu/grr-cli/compare/v0.10.0...v0.11.0
[0.10.0]: https://github.com/debanjanbasu/grr-cli/compare/v0.9.1...v0.10.0
[0.9.1]: https://github.com/debanjanbasu/grr-cli/compare/v0.9.0...v0.9.1
[0.9.0]: https://github.com/debanjanbasu/grr-cli/compare/v0.8.1...v0.9.0
[0.8.1]: https://github.com/debanjanbasu/grr-cli/compare/v0.8.0...v0.8.1
[0.8.0]: https://github.com/debanjanbasu/grr-cli/compare/v0.7.0...v0.8.0
[0.7.0]: https://github.com/debanjanbasu/grr-cli/compare/v0.6.0...v0.7.0
[0.6.0]: https://github.com/debanjanbasu/grr-cli/compare/v0.5.0...v0.6.0
[0.5.0]: https://github.com/debanjanbasu/grr-cli/compare/v0.4.0...v0.5.0
[0.4.0]: https://github.com/debanjanbasu/grr-cli/compare/v0.3.0...v0.4.0
[0.3.0]: https://github.com/debanjanbasu/grr-cli/compare/v0.2.0...v0.3.0
[0.2.0]: https://github.com/debanjanbasu/grr-cli/releases/tag/v0.2.0

<!-- generated-end -->