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.
Schema refresh for Jobber's current GraphQL API. The read path was rebuilt against the live schema (verified via introspection) and tested against a real account; the write path is temporarily gated pending a redesign.
- Read commands modernized to the current schema. Rewrote all query
selections in
api/queries.py:- Money now read from
amounts { total, subtotal, paymentsTotal, invoiceBalance, ... }instead of the removedtotalAmount/amountPaid/balancescalars. - Status fields are the typed enums
invoiceStatus/quoteStatus/jobStatus, and list filters useInvoiceStatusTypeEnum/QuoteStatusTypeEnum/JobStatusTypeEnum. - Single-record lookups take
EncodedId!(wasID!). - Line items read
totalPrice(wastotal) under anodes { ... }connection; invoice→jobs and clienttags/phonesupdated to their current connection shapes. - Client phone reads
phone(wasphoneNumber).
- Money now read from
invoices list --unpaidnow filters client-side by outstanding balance (the oldstatus: "UNPAID"value is not a valid enum).
- Write commands temporarily disabled (
clients create/update/delete,jobs create/update/complete,quotes create/send/approve,invoices create/send). Jobber's current schema reworked the write surface:invoiceSend/quoteSend/quoteApprove/jobCompleteno longer exist, and the create mutations require nested inputs (dueDetails,tax,lineItems,propertyId) the commands don't yet collect. These now exit with a clear message instead of a cryptic GraphQL error, pending the write redesign (1.2.0).
- Schema-shape guard tests (
tests/api/test_queries_schema.py) to prevent regressions to removed fields.
1.0.0 — 2026-06-04
- Initial public 1.0.0 release.
- OAuth 2.0 authentication flow with browser-based code exchange and automatic refresh.
- Client, job, quote, invoice management commands (CRUD + send/approve/complete).
- Raw GraphQL query execution.
- Multiple output formats: table, JSON, CSV, YAML.
- OS-level keychain integration for secure token storage (macOS Keychain, Windows Credential Manager, Linux Secret Service), with encrypted file fallback.
typing_extensionsdeclared as an explicit runtime dependency.
- Package metadata: dual-author attribution (Anthony Vincent Caracappa, DC Tree Cutting and Land Service).
- Project URLs: Homepage → dctreecutting.com, Author → github.com/acaracappa, Sponsor → dctreecutting.com.
- Development Status classifier upgraded from Alpha to Production/Stable.
- README: added project context section, maintainer attribution, fixed placeholder URLs.