Skip to content

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.4.0 (2026-10-10)

Features

  • mcp: gsuite-mcp, an MCP server for Google Workspace (#29) (3b1a9fe)

0.3.0 (2026-10-10)

Features

  • skill: make the agent skill installable on skills.sh, Claude Code and Gemini CLI (#28) (857a964)

Documentation

  • point GSpreadManager references at the archive tag (#25) (2ff6656)
  • skill: rewrite the OpenClaw skill for 0.2.0 and keep it in sync (#26) (a5a422d)

0.2.0 (2026-10-09)

⚠ BREAKING CHANGES

  • core: trash/delete/share/delete_event/delete_worksheet return False only when the resource doesn't exist; any other failure (auth, permissions, rate limit, 400) raises a GSuiteError instead of also returning False. get_event/Drive.get no longer turn arbitrary exceptions into None, and Gmail.get_signature only tolerates API errors.
  • api: the API now fails closed. Without GSUITE_API_KEY every request gets a 401; deployments protected some other way (Cloud Run IAM, localhost) must set GSUITE_ALLOW_NO_API_KEY=true. The default host is 127.0.0.1 (settings and gsuite serve), CORS is off unless GSUITE_CORS_ORIGINS is set, error bodies are RFC 9457 problem details instead of {"detail": ...}, and the admin key is only read from the X-Admin-Key header.

Features

  • api: harden the REST API (#14) (b40a668)
  • async foundation and AsyncSheets (#21) (b022075)
  • core: retries, pagination and timeouts for every Google request (#15) (503bd21)
  • drive: complete Drive client, REST routes and CLI (#16) (7c584ee)
  • gmail,calendar: threaded replies, attachments, drafts, labels and Meet (#18) (9c36fff)
  • sheets: expose the GSpreadManager engine on the public API (#20) (0e3c7a0)
  • sheets: formatting, protection, find/replace, worksheets and pandas (#17) (35fb962)
  • sheets: incorporate the GSpreadManager engine (#19) (70c11e5)
  • Tasks and Contacts packages with REST API and CLI (#22) (cfdd84c)

Bug Fixes

  • add Sheets to default OAuth scopes (#9) (a082784)
  • CI test failure + publish workflow for gsuite-api (#5) (4367008)
  • ci: get main green and run every test (#11) (13d3979)

Documentation

  • documentation site, integration tests and a smaller Docker image (#23) (9c9d27f)

[0.1.3] - 2026-02-11

Fixed

  • auth: is_authenticated() now correctly returns True after loading valid credentials from SQLite
  • auth: refresh() no longer fails with invalid_scope error
  • Root cause: Credentials.from_authorized_user_info() doesn't properly handle scopes; now using Credentials constructor directly

[0.1.0] - 2026-01-28

Added

  • Initial monorepo structure with Clean Architecture
  • gsuite-core: Unified OAuth2 authentication with token storage (SQLite, Secret Manager)
  • gsuite-gmail: Gmail client with fluent message API and query builder
  • gsuite-calendar: Calendar client for events and calendars
  • gsuite-drive: Drive client for files, folders, and sharing
  • gsuite-sheets: Sheets client inspired by gspread API
  • gsuite-api: Unified FastAPI REST gateway
  • gsuite-cli: Typer CLI with Rich output
  • Comprehensive test suite with mocks (2500+ lines)
  • Custom exception hierarchy (gsuite_core.exceptions)
  • PEP 561 compliant with py.typed markers
  • Structured logging with HttpError handling

Architecture

  • Monorepo with independent packages
  • Shared authentication across all services
  • Provider-agnostic design with interfaces
  • Type hints throughout (Python 3.11+)