All notable changes to this project are documented here. The format follows Keep a Changelog, and releases follow Semantic Versioning.
0.0.7 - 2026-08-29
- Vendored the exact Hubuum v0.0.9 OpenAPI document for local inspection and offline contract validation.
- Made the default OpenAPI contract check use the committed document, with explicit opt-in commands to check or refresh it from the immutable upstream revision.
- Refreshed all locked Python dependencies to their latest compatible releases,
including Pydantic 2.13.5, Mypy 2.3.1, and Ruff 0.16.5, and updated the pinned
astral-sh/setup-uvGitHub Action to 10.0.1. - Updated release distribution validation to Twine 7.0.0 for Core Metadata 2.5 support.
- Prevented the Docker-backed e2e wrapper from mistaking PostgreSQL's temporary initialization server for the final database process.
0.0.6 - 2026-08-07
- Added typed positive resource revisions, distinct v0.0.9 list and point
response models for users, groups, and tokens, membership response shapes,
retained-token lifecycle selection, token point lookup and renewal, import-v2
write conditions, and
PreconditionFailedErrorfor stale412responses, with synchronous and asynchronous parity. - Added caller-selectable OpenAPI request content types so the new principal settings JSON Patch and JSON Merge Patch representations are both usable.
- Updated the declared server target, immutable OpenAPI contract, complete
202-operation manifest, CI, documentation, and Docker-backed suite to Hubuum
v0.0.9 at release commit
04367a8d6eb38e4356b4e4673269b356f46bbcc3and image digestsha256:1f12baf882b6d3df5b4b2dbdf26aad0793274e57f86a2c186b8e1e68632db5db. - Updated imports to emit the required v2 format and exposed the public maximum token lifetime alongside the default lifetime.
- Refreshed the locked development and test dependencies immediately before release.
0.0.5 - 2026-08-05
- Updated the GitHub Actions pins and refreshed all locked dependencies to the latest compatible releases, including Ruff 0.16.1 and Zizmor 1.29.0.
- Adopted Ruff 0.16's Markdown formatting for documentation code examples.
- Added a mandatory release-readiness policy and tag-time workflow guard that prevent publishing while any Dependabot pull request remains open.
0.0.4 - 2026-08-05
- Added strict v0.0.8 request and forward-compatible response models for class relation cardinality limits, import timestamp restoration, export scopes and output, import graphs and per-entity results, task progress/details/links, task events, and provenance.
- Added matching synchronous and asynchronous
imports,exports, and cursor-paginated task-event services, including bounded submit/wait/result helpers and streamed export output. - Added public, origin-locked Prometheus metric retrieval at the default or a caller-specified server path, matching the Rust client's metrics surface.
- Added pinned live-server coverage for cardinality enforcement, restored timestamps, export phase durations, and task events.
- Updated package version metadata and the declared server target, immutable
OpenAPI contract, CI, documentation, and Docker-backed suite to Hubuum v0.0.8
at release commit
9de161ff05f563302cfe6f74b04b80c1f617f5d6and the pinned multi-platform image digest. - Refactored cursor pagination into shared read-only foundations used by CRUD, task, event, and import-result services to reduce sync/async drift.
- Request serialization now always uses wire aliases; the required import format version is emitted even when its default is used.
- Excluded object data, import graphs/results, rendered export bodies, task links/details/summaries, and schema payloads from representations.
- Added
TaskUnsuccessfulError, which retains only task ID and status rather than potentially sensitive server summaries.
0.0.3 - 2026-07-26
- Added typed public client configuration models exposing Hubuum v0.0.5's
authentication.default_token_lifetime_hoursalongside the effective pagination settings, with matching synchronous and asynchronous access. - Access tokens returned by login and token-mint services now retain the
server's authoritative
expires_atvalue without weakening secret redaction.
- Updated the declared server target, immutable OpenAPI contract, complete
operation manifest, CI, and Docker-backed suite to Hubuum v0.0.5 at release
commit
31fa25feaf366fb3077d5c4fd0c154275ee4bf16and the pinned multi-platform image digest.
0.0.2 - 2026-07-26
- Added matching synchronous and asynchronous token services for listing
visible token metadata and minting or revoking principal tokens with Hubuum
v0.0.4's nested
scope.permissionsandscope.resourcesrequest shape. - Added typed token scope, token metadata, and multi-measure object aggregate models, including resource scope kinds and aggregate value states.
- Prepared the complete 196-operation interface against the immutable OpenAPI
document from the Hubuum v0.0.4 release commit
81ca7b575ce888415c97dd19c83bfddaca272b6e. - Switched the declared server target and complete live suite to the immutable v0.0.4 image index digest, with synchronous and asynchronous nested-scope token lifecycle coverage for minting, metadata, authorization, and revocation.
- Object aggregate services now decode v0.0.4 dimension and measure results into typed response models.
- Reject empty or oversized
Idempotency-Keyrequest headers before I/O, matching Hubuum v0.0.4's 1-to-255-byte bound for task submissions. - Replaced the yanked zizmor 1.27.0 development lock with 1.28.0 before release verification.
0.0.1 - 2026-07-25
- Initial typed Python client targeting Hubuum server v0.0.3.
- Synchronous and asynchronous clients with equivalent resource services.
- Typed Pydantic models and distinct ID types for core Hubuum resources.
- Collection, class, object, user, group, relation, and task workflows.
- Immutable filtering, cursor pages, bounded automatic pagination, and task polling.
- Structured transport, decoding, authentication, permission, not-found, conflict, and rate-limit exceptions.
- Redacted credentials and access tokens plus origin-locked raw requests.
- Unit, typing, documentation, and Docker-backed e2e test infrastructure.
- GitHub CI, dependency update automation, contribution guidance, and an explicitly gated PyPI trusted-publishing workflow.
- Added an immutable fluent interface for nested object
datafiltering, covering scalar, range, array, object-key, null, and IP/network operators, with pinned-server end-to-end coverage. - Added a contract-checked operation interface covering all 196 Hubuum v0.0.3 OpenAPI endpoints, including authenticated/public policy, JSON/text/binary response decoding, and incremental SSE consumption.
- Added the complete class/object
by-namesurface and validated atomic RFC 6902 object-data patch operations, covering the API workflows used byhubuum-import-miami. - Added
classes.by_id(id)as the numeric counterpart toclasses.by_name(name), with synchronous and asynchronous class operations and nested.objectsaccess.
- Raised the branch-aware unit coverage gate from 90% to 95% after adding request-construction coverage for every pinned OpenAPI operation and focused transport, streaming, decoding, pagination, and sync/async failure tests.
- Strengthened pinned-server compatibility evidence with forced multi-page
cursor traversal, a complete async resource lifecycle, non-administrator
permission boundaries, and live
400,401,403,404, and409error mapping; the e2e wrapper now tests the built wheel in an isolated environment. - Changed PyPI trusted publishing to run from protected
v*tag pushes, with a manually approved GitHub environment and an exact package-version check. - Added an evidence-linked client/server compatibility matrix and identified
the pinned e2e server image by both its
v0.0.3tag and immutable digest. - Updated every GitHub Action to its latest immutable release commit and corrected invalid checkout and Python setup action versions; release artifact validation now uses an explicit Twine version.
- Disabled persisted checkout credentials and release-job caching, added a dependency update cooldown, bounded contract downloads to HTTPS sources, and added Bandit and zizmor security gates to CI.
- Aligned synchronous and asynchronous task polling on the same
timeout_secondskeyword, validated polling and pagination bounds before doing work, and prevented poll sleeps from exceeding the remaining timeout. - Fixed the end-to-end wrapper on Bash 3.2 when invoked without additional pytest arguments.
- Replaced long client and raw-request parameter lists with shared typed
ClientOptionsandRequestOptionsvalues and re-enabled Ruff's argument count rule. - Updated examples to prefer explicit nested class selectors and documented application-lifetime client reuse, HTTP connection pooling, and shutdown.
- Returned group memberships as contract-validated
PrincipalMembervalues and added cursor-aware membership page and collection helpers. - Parsed both standard
Retry-Afterforms into safe, non-negative rate-limit delays and ignored malformed or non-finite values. - Cached lazily created resource-service accessors per client while keeping class-scoped object services on demand.
- Hardened origin-locked requests against nested URL traversal, ambiguous path
characters, and caller-supplied
Hostheaders. - Made bearer-header replacement case-insensitive and redact request secrets from transport, API, and decoding exception details.
- Redacted values under sensitive query parameter names from API and transport error diagnostics.
- Redacted login tokens from model representations.