Skip to content

Releases: ksperis/bucketreef

v0.2.18

Choose a tag to compare

@ksperis ksperis released this 25 Oct 12:58

0.2.18 - 2026-10-24

Added

  • Replace the expanded Billing product model with a focused Cost Explorer, including configurable global and per-endpoint prices, Admin analytics, Portal usage costs, and targeted Account/RGW User/Portal cost-estimation policies.
  • Add RGW User usage-metrics, bucket-composition, and scheduled-collection overrides so Account and RGW User usage controls follow the same inheritance model.
  • Add production-oriented Helm HA support for deployments behind external TLS termination, including trusted-proxy handling, ingress-aware CronJobs, and clearer PostgreSQL HA guidance.
  • Add runtime-image vulnerability scanning to public CI and refresh Node.js, Go, Python, Vite/Vitest, Wrangler, Trivy, and related dependency pins.

Changed

  • Rework bucket migration planning, diagnostics, execution strategy, progress, and cleanup models around canonical persisted state while simplifying the Manager migration UI and service boundaries.
  • Make Ceph Admin bucket operations tenant-aware by carrying the RGW tenant and unqualified bucket name through configuration, comparison, integrity, purge, usage-statistics, and backup workflows.
  • Simplify backend read/write models across Admin, Manager, Portal, Browser, authentication, statistics, health, quotas, and cost workflows. The bundled frontend is updated in the same release, so these coordinated application-API changes are not treated as breaking external contracts.
  • Rename the backend API-prefix setting from API_V1_PREFIX to API_PREFIX; the default route remains /api.
  • Continue consolidating frontend state, pagination, IAM editing, bucket-operation actions, Browser runtime context, and settings feedback without changing the corresponding user-facing storage semantics.

Fixed

  • Correct IAM role audit delegation classification and align healthcheck/demo payloads with the current backend contracts.
  • Preserve settings save feedback and usable mobile action targets, and keep sticky action hover surfaces visually opaque.
  • Update vulnerable dependencies and verify backend, frontend, and scheduler runtime images with zero HIGH/CRITICAL findings in the release security checks.
  • Harden tenant-qualified Ceph Admin bucket operations so same-name buckets in different RGW tenants cannot collapse into one logical target.

Upgrade notes

  • Apply the normal Alembic upgrade path before starting the matching backend. Migrations 0167 through 0193 withdraw the 0.2.17 Billing expansion, introduce the Cost model and estimation policies, add RGW usage controls, canonicalize bucket-migration state, preserve tenant identity in usage data, and remove retired internal state.
  • Deploy the backend and bundled frontend from the same release. Internal application route and payload changes are coordinated within 0.2.18 and are not considered breaking external contracts.
  • Breaking change for external Billing integrations: the Billing Integration API v1 (/api/integrations/billing/v1) and billing:read token scope introduced in 0.2.17 are removed as BucketReef returns to cost exploration rather than invoicing lifecycle management. Migrations preserve daily usage history but reset incompatible 0.2.17 Billing configuration.
  • Breaking change for custom deployments: rename API_V1_PREFIX to API_PREFIX. The removed API_V1_PREFIX variable is no longer read by the backend; the default /api path is unchanged.

Full changelog: v0.2.17...v0.2.18

v0.2.17

Choose a tag to compare

@ksperis ksperis released this 19 Oct 22:45

0.2.17 - 2026-10-19

Added

  • Add versioned Billing Rate Plans with effective-month tariffs, endpoint/global defaults, account and S3-user assignments, deterministic storage charging, and explicit actual-usage versus allocated-quota pricing.
  • Add Billing Entities and historical analytical groups so chargeback can consolidate subjects across endpoints while preserving membership provenance, currency separation, and conflict reporting.
  • Add persisted monthly Billing Statements with draft review, immutable finalization, JSON/CSV/PDF exports, finalized-period analytics, configurable PDF branding, webhook notification, and scheduled statement automation.
  • Add the supported read-only Billing Integration API v1 for external invoicing, ERP, accounting, reporting, and chargeback consumers using scoped API tokens and finalized statement snapshots.
  • Add explicit Admin controls for creating RGW resources in non-default tenants, tenant-aware account/user imports, and endpoint-map hover details.
  • Add Browser direct-transfer workers with per-context endpoint authorization and CSP so eligible uploads and downloads can communicate with the selected S3 endpoint without proxying object payloads through BucketReef.
  • Add Browser upload-mode controls so administrators can independently allow direct presigned, STS, and proxy uploads while requiring at least one upload path to remain enabled.

Changed

  • Resolve Billing Rate Plans through explicit subject assignments, Billing Entity assignments, endpoint defaults, and the global default, while keeping pricing provenance and incomplete-coverage states visible instead of silently falling back.
  • Treat finalized Billing Statements as the canonical immutable source for historical period totals and external integrations; raw daily Billing retention no longer affects persisted statements.
  • Scope RGW account names by tenant and keep tenant qualification compact in Admin inventories and creation/import workflows.
  • Simplify S3 Connection terminology, Admin activity presentation, Billing feature gating, and several workspace navigation/localization details.
  • Modernize backend query paths across health, audit, usage, onboarding, Portal, quota, Browser, and Admin services without changing their supported external contracts.
  • Serve Browser direct-transfer workers from the frontend through an authenticated /api/browser/direct-transfer-worker/ path with a request-scoped CSP.

Fixed

  • Enforce Portal IAM revocation boundaries and strengthen RGW Billing input validation, statement history invariants, stale-draft detection, and estimated-statement finalization.
  • Preserve tenant-aware RGW account/user uniqueness and imports, including migration of existing account-name uniqueness to the tenant scope.
  • Isolate Browser direct transfers by execution context, prevent stale endpoint policy reuse, and avoid replaying uncertain direct writes through the backend proxy.
  • Keep Billing settings disabled when the feature is off and align RGW user/account creation dialogs with their tenant-aware contracts.

Upgrade notes

  • Apply the normal Alembic upgrade path before starting the matching backend. Migrations 0159 through 0166 add versioned Billing tariffs, historical quota data, Billing Entities and Groups, persisted statements and automation state, tenant-scoped S3 account-name uniqueness, and estimated-statement state.
  • Deploy the backend and bundled frontend from the same release. Application API changes used only by the bundled frontend are coordinated within 0.2.17 and are not treated as breaking external contracts.
  • The Billing Integration API under /api/integrations/billing/v1 is now a supported external read-only contract. Use dedicated API tokens with the documented billing:read scope; internal Admin Billing routes remain application-private.
  • Breaking change for custom reverse proxies: Browser direct-transfer workers are served by the frontend under /api/browser/direct-transfer-worker/. Deployments that route all /api traffic directly to the backend must add this frontend exception, preserve the query string and existing session cookie, and keep the worker response CSP uncached. The bundled Helm ingress already includes this route.

Full changelog: v0.2.16...v0.2.17

v0.2.16

Choose a tag to compare

@ksperis ksperis released this 17 Oct 22:13

0.2.16 - 2026-10-17

Added

  • Add Admin feature policies with tri-state inheritance, resource-level overrides, effective-rights presentation, and project usage feature overrides shared across the application.
  • Add Manager account activity history tied to explicit S3 execution contexts, with canonical audit context fields used across Admin audit and Manager activity views.
  • Add explicit Ceph RGW tenant support for accounts and users, including tenant-aware identity validation, collision protection, migration of pre-tenant identities, and structured RGW identity metadata for S3 Connections.
  • Add automatic bucket composition collection with configurable collection policy and scheduler integration for bucket usage/statistics workflows.
  • Complete French, German, and Chinese localization across Admin, Ceph Admin, shared settings, authentication, errors, endpoint management, metrics, usage, and common workspace components.
  • Complete Manager IAM user, group, role, policy, tag, and membership editing workflows and tighten their storage-side validation.

Changed

  • Canonicalize execution-context selectors, audit outcomes, Portal collaborator/quota requests, Manager migration requests, and S3 Connection RGW identity fields. The bundled frontend and backend are updated together and no legacy application-API compatibility aliases are retained.
  • Split bucket integrity, purge, and usage-statistics request contracts by workspace surface: Manager and Ceph Admin accept bucket-name collections, while Storage Ops accepts explicit execution-context targets.
  • Keep persistent settings editors mounted after save, clarify feature inheritance and locked controls, and align Admin, Manager, Browser, Portal, Ceph Admin, and demo UI contracts with the current backend.
  • Require APP_SETTINGS_PATH bootstrap JSON to use the current canonical AppSettings schema instead of converting removed legacy fields at runtime.
  • Rename the production-readiness command to python -m app.scripts.check_production_readiness and remove the former check_production_hardening compatibility module.

Fixed

  • Stop returning RGW secret keys from Ceph Admin user access-key list/detail responses; newly created keys still return their secret once through the dedicated one-time creation response.
  • Reject mutations of BucketReef-managed IAM resources before remote calls and prevent outbound health/OIDC probes from following unsafe redirects or bypassing validated targets.
  • Correct tenant-aware RGW account/user operations, pre-tenant migration compatibility, ambiguous identity collisions, missing-user cleanup, and Ceph Admin parameter handling.
  • Preserve requested bucket-migration pause state, verify Manager IAM role-tag mutations, stabilize feature-policy rollout and audit coverage, and align Ceph functional qualification with current feature settings.
  • Repair shared workspace navigation, dashboard icons, localized UI contracts, demo isolation checks, and assorted Admin/Browser/Manager functional QA regressions.

Upgrade notes

  • Apply the normal Alembic upgrade path before running the matching backend. Migrations 0148 through 0158 add feature policies, Manager activity history, execution-context audit fields, project usage overrides, RGW tenant metadata, bucket composition collection policy, canonical Portal/audit data, and canonical S3 Connection RGW identity fields.
  • Deploy the backend and bundled frontend from the same release. Internal application routes now use the canonical execution-context, audit-status, Portal request, migration, bucket-operation, and Ceph Admin key-read contracts described above; these coordinated application API changes are not treated as release-breaking external contracts.
  • Breaking change: APP_SETTINGS_PATH no longer converts removed legacy settings fields. Bootstrap JSON must already use the current AppSettings schema.
  • Breaking change: operational checks must use python -m app.scripts.check_production_readiness; the former check_production_hardening module has been removed.

Full changelog: v0.2.15...v0.2.16

v0.2.15

Choose a tag to compare

@ksperis ksperis released this 11 Oct 20:37

0.2.15 - 2026-10-11

Added

  • Add optional Manager access-key metadata and expiration controls for account/IAM and S3-user keys, enabled globally by default on fresh deployments while retaining explicit per-resource opt-ins and scheduled expiration enforcement.
  • Add French, German, and Chinese localization across the Manager workspace.
  • Complete locale-aware Browser coverage and integrate the contributor i18n foundation across authentication, errors, navigation, and responsive shell controls.
  • Add a configurable documentation base URL for workspace links and validate S3/IAM resource names consistently before creation.

Changed

  • Remove the retired BUCKET_MIGRATION_WEBHOOK_* runtime aliases. Configure webhook delivery exclusively with the canonical WEBHOOK_* variables; Compose and Helm defaults now use the canonical names.
  • Remove the unused endpoint_configured and storage_access_configured fields from the Admin onboarding status API; the bundled frontend uses complete and journeys for setup state.
  • Remove the retired /admin/api-tokens frontend redirect and the unused standalone API-token page mode. Superadmins manage API tokens exclusively from the shared profile API-token tab.
  • Remove the retired Browser transfer IndexedDB cleanup hook; current Browser code no longer reads, opens, or deletes the obsolete bucketreef-browser-transfers-v1 database.
  • Reorganize Manager bucket detail navigation, return structured conflicts for bucket deletion, and simplify API error handling across Manager, Admin, and Ceph Admin surfaces.
  • Tighten typed service boundaries for storage endpoints, endpoint identities, key rotation, migrations, account capabilities, and execution targets.

Fixed

  • Avoid repeating the OIDC callback when changing locale and preserve translated shell controls on narrow screens.
  • Preserve Browser bucket and object operations for plain S3 account contexts.
  • Scope Ceph Admin account bucket metrics defensively and purge functional-test buckets through Ceph Admin cleanup paths.
  • Correct Manager functional UX/localization details, including French timezone wording.
  • Restore the scheduler runtime dependency required by maintenance jobs and rebuild Supercronic with the patched Go toolchain used by the release image.

Upgrade notes

  • Apply the normal Alembic upgrade path. Migrations 0145_manager_access_key_metadata and 0146_manager_access_key_expiration add the optional Manager access-key metadata/expiration state; existing account and S3-user opt-ins remain disabled until explicitly enabled.
  • Migration 0147_remove_legacy_ceph_admin_system_compat removes the retired Ceph Admin system-user compatibility flag and marks affected legacy Ceph Admin identities as missing so they are revalidated through the current credential contract.

Full changelog: v0.2.14...v0.2.15

v0.2.14

Choose a tag to compare

@ksperis ksperis released this 06 Oct 20:12

0.2.14 - 2026-10-06

Added

  • Add dedicated Runtime Read Ops and Supervision service identities for Ceph RGW endpoints, with explicit validation, provisioning state, rotation recovery, and signed S3 health probes.
  • Add cached Admin dashboard metrics collected through supervision credentials, plus clearer endpoint identity health and recovery feedback.
  • Split the documentation into audience-specific Admin, Manager, Portal, Browser, and Developer guides, including a French Portal guide and contextual documentation links from application workspaces.

Changed

  • Restore manually supplied Ceph Admin credentials in endpoint settings and onboarding; remove the activation dialog and automatic Ceph Admin provisioning/rotation.

  • Simplify endpoint Credentials: keep Admin Ops hardening in documentation, fold creation commands for configured identities, and distinguish saved identity state from mode changes.

  • Show service identity retries only when needed, block retries of unsaved endpoint configuration, and report retry failures inside the editor.

  • Make Runtime and Supervision permanent service identities for every Ceph endpoint; feature toggles only control their use.

  • Detect Usage exclusively with Supervision, including after managed onboarding provisioning, without requiring Usage capabilities on Admin Ops.

  • Recommend complete provisioning/quota Admin Ops permissions for normal setup and place reduced permissions under advanced hardening guidance.

  • Validate the complete ENV endpoint inventory before synchronization and use the same external Runtime credential requirements as the endpoint API.

  • Remove the misleading commit argument from endpoint creation; registration persists a durable endpoint before reconciling RGW identities.

  • Detect untracked S3, Swift and temporary URL keys on managed endpoint identities, block their mutations, and report auditable drift without exposing key material.

  • Simplify Portal external-tool configuration and Manager/Admin dashboards while keeping workspace-specific permissions and execution contexts explicit.

Fixed

  • Preserve legacy and externally managed Ceph Admin credentials across the 0.2.13 upgrade path, including endpoints that expose only dedicated Ceph Admin credentials.
  • Namespace automatically generated RGW user identifiers and preserve uniqueness for externally provisioned Portal IAM users.
  • Protect Helm deployments from slow backend startup and refresh frontend base-image security packages.
  • Restore full regression validation and scheduled secret-scan baselines in CI.
  • Make ARM64 release installation smokes tolerate emulated probe startup latency without weakening normal deployment healthcheck defaults, and retain service logs on smoke failures.
  • Verify the complete GitHub/GitLab release index before and after stable publication, including latest pointers, and fetch remote tags explicitly before generating release compare links.

Upgrade notes

  • Breaking change: Ceph Admin credentials are now operator-managed external pairs. Upgrades from 0.2.13 preserve complete stored Ceph Admin credentials and RGW users, then revalidate the pair after migration; pending managed rotations and managed-only metadata are discarded. Per-endpoint Ceph Admin authorization is intentionally reset to disabled during migration and must be explicitly re-enabled after validating the preserved credentials. Re-enter keys only when the stored pair is incomplete or invalid.

  • Breaking change: upgrades from 0.2.13 create a Runtime Read Ops identity in external / missing state for every existing Ceph endpoint because 0.2.13 had no dedicated Runtime credentials. Configure a Runtime pair with exactly accounts=read;user-info-without-keys=read;buckets=read and no admin/system flag before Manager/Portal live account, user and bucket reads resume; Admin Ops is not used as a fallback. Existing Supervision credentials are preserved as external and must validate with exactly usage=read;buckets=read and no admin/system flag. External Ceph endpoints require complete Runtime and Supervision pairs even when monitoring is disabled. Existing managed endpoints provision missing Supervision at administration startup or reconciliation and need Admin Ops users=write for that provisioning.

  • Breaking change: administered Ceph endpoints configured through ENV_STORAGE_ENDPOINTS in external mode must supply both Runtime keys. Incomplete inventories now prevent startup.

  • Breaking change: managed Runtime and Supervision rotation requires deletion of the previous key. Disable-only rotation is refused for these identities. Remove previously disabled or manually added keys externally, then retry identity configuration; pending revocations are never announced as successful while unexpected keys remain.

Full changelog: v0.2.13...v0.2.14

v0.2.13

Choose a tag to compare

@ksperis ksperis released this 01 Oct 19:28

0.2.13 - 2026-10-01

Added

  • Added a configurable numeric prefix for automatically generated Ceph RGW account IDs, with a default of 80 while preserving Ceph's required identifier format.

Changed

  • Moved personal API token management into the shared user profile for administrators, with a redirect from the previous Admin settings route.
  • Consolidated Admin platform-access tabs and effective-access investigation into the dedicated access audit, with contextual Review access links and UI Group provenance filtering.
  • Namespaced BucketReef-managed Portal IAM resources, generated Storage Space buckets, lifecycle IDs, policy Sids, migration probes, onboarding sample names, and RGW account-root key names under the canonical bkr-/BucketReef contracts.

Fixed

  • Allowed empty private Portal Storage Spaces to be deleted without listing their contents through a technical principal, while preserving non-empty buckets and handling deletion races explicitly.
  • Recognized empty Ceph RGW usage maps as zero usage and recovered concurrent creation of BucketReef-managed Portal IAM groups through bounded ownership checks.
  • Preserved Storage Ops execution-context fields when enriching bucket feature columns.
  • Aligned demo access-review data, endpoint geolocation, theme readability, endpoint-health columns, and production-readiness descriptions with the application.
  • Kept the release documentation synchronized with the changelog and corrected S3 Connection validation test routing.
  • Invalidated cached backend OS upgrades when Debian publishes security updates, ensuring newly fixed PCRE2 and OpenSSL packages are included in release images.

Upgrade notes

  • Breaking change: previous implicit BucketReef-managed storage resource names are not migrated, aliased, or adopted automatically. Recreate pre-cutover Portal IAM resources deliberately before using the new naming contract. Foreign lifecycle rules and bucket-policy statements remain preserved.
  • Apply the normal Alembic upgrade path. This patch adds no database migration or schema baseline and keeps the unified bucketreef-deploy bundle introduced in 0.2.12.

Full changelog: v0.2.12...v0.2.13

v0.2.12

Choose a tag to compare

@ksperis ksperis released this 30 Sep 11:18

0.2.12 - 2026-09-29

Changed

  • Replaced the separate Compose and QuickStart release archives with one deterministic bucketreef-deploy bundle shared by both installation paths.
  • Standardized distributed and source Compose filenames on compose.yaml and made the scheduler part of the normal full deployment.
  • Simplified QuickStart around the normal bucketreef Compose project, .env, and ~/.local/share/bucketreef installation directory.
  • Split release qualification into independent AMD64/ARM64 QuickStart and manual Compose smoke tests consuming the exact same candidate bundle.

Upgrade notes

  • Breaking change: the separate bucketreef-compose and bucketreef-quickstart release bundles have been replaced by the single bucketreef-deploy bundle. Legacy QuickStart installations, project names, volumes, environment files, and previous bundle layouts are not migrated automatically.
  • Existing older GitHub releases remain available with their original assets. Install 0.2.12 as a new deployment or deliberately preserve and reconfigure any data you want to carry forward.

Tests

  • Release tests verify deterministic packaging, SHA-256 integrity, immutable publication/recovery, and exact candidate bytes across both installation paths.
  • QuickStart and Compose qualification independently cover bootstrap, scheduler health, restart persistence, and the exact AMD64/ARM64 images selected by the qualified multi-architecture manifests.

Full changelog: v0.2.11...v0.2.12

v0.2.11

Choose a tag to compare

@ksperis ksperis released this 29 Sep 12:10

0.2.11 - 2026-09-29

Changed

  • Simplified Browser favorites, path navigation and Storage Space labels while preserving the current execution context and S3 permissions.
  • Aligned Admin RGW editors and account/group/user association pickers with their role columns and shared layouts.
  • Enabled standalone Browser access for Portal projects by default on fresh installations; explicit global settings and account overrides remain authoritative.
  • Automated releases on protected main version increases, with complete qualification and anonymous candidate installation tests before any stable promotion.

Fixed

  • Preserved primary-link contrast in dark mode.
  • Kept sequential migration cleanup and its lease checks on the same database-session thread, preventing intermittent source-cleanup failures.
  • Preserved complete merged Git history during secret detection and verified the exact scanned commit set before and after analysis.
  • Prevented failed ARM64 installation checks from reserving immutable stable image, bundle or chart versions.
  • Added durable release evidence and idempotent recovery of partial registry/forge publication using the exact tested artifacts and original application commit.
  • Replaced CI edits to Compose archives with explicit healthcheck settings and bounded QEMU startup/test budgets, retaining secret-free diagnostics before cleanup.

Upgrade notes

  • Apply the normal Alembic upgrade path; this patch introduces no database migration or schema baseline.
  • The four public download assets and their URLs remain unchanged. Compose keeps its existing default healthcheck budget of 24 attempts; advanced deployments can set BUCKETREEF_HEALTHCHECK_RETRIES explicitly.

Tests

  • Added automatic-trigger, graph, mandatory-gate, architecture identity, candidate-byte integrity, interrupted-promotion, cross-forge recovery and immutable-conflict coverage.
  • Release qualification covers application, Ceph, security and both image architectures; candidate installation checks cover QuickStart, Compose/scheduler, Kind onboarding and Helm upgrade before stable publication and demo deployment.

Full changelog: v0.2.10...v0.2.11

v0.2.10

Choose a tag to compare

@ksperis ksperis released this 29 Sep 07:19

0.2.10 - 2026-09-28

Added

  • Added a persistent static demo with mocked Admin, Manager, Portal, Browser, and Ceph Admin workspaces plus Cloudflare Pages publication support.
  • Added delegated Portal collaborator management with explicit role selection and role-change request handling.
  • Added a guarded Manager bucket-migration workflow with preparation checks, resumable execution, maintenance operations, and dedicated audit/webhook events.
  • Added synchronized personal Browser path favorites and an application-version indicator in the UI.

Changed

  • Simplified Browser navigation and transfer workflows around the stable S3 operations while preserving explicit multipart management, folder/ZIP downloads, object previews, version downloads, deep links, and contextual CORS guidance.
  • Improved workspace routing, contextual error pages, shared/private execution-context labelling, and responsive Storage Ops bucket presentation.
  • Extended the demo and frontend CI coverage for multi-step workspace flows and public demo publication.

Fixed/Security

  • Propagated logout across tabs, clarified authentication failures, added secret-visibility controls, and enforced inherited privileged-workspace access consistently.
  • Revalidated onboarding credentials on retry, avoided sample-account collisions, cleaned Portal IAM state during account deletion, and corrected Ceph Admin RGW user modification semantics.
  • Fixed large proxied uploads, exact-version downloads, archive stream cleanup, empty or invalid bulk actions, lifecycle/access JSON validation, and compatibility with legacy botocore checksum configuration.

Upgrade notes

  • Apply the normal Alembic upgrade path. Migrations 0133_portal_role_change_request through 0137_browser_path_favorites add Portal collaborator delegation, Browser favorites, and the revised bucket-migration workflow.
  • Before upgrading, finish or stop any active bucket migration and verify that migration-applied target protections have been restored; migration 0135_bucket_migration_workflow intentionally refuses to proceed otherwise.
  • This patch release does not create a new schema baseline.

Tests

  • Added cross-surface UI validation and focused Browser/migration retests covering authentication, workspace access, Portal delegation, Manager migrations, object/version downloads, favorites, uploads, and responsive behavior.
  • Release qualification validates the exact prepared SHA across the mandatory application suite, Ceph checks, multi-architecture images and scans, Helm/Compose contracts, Kind onboarding, and public release bundles before finalization.

Full changelog: v0.2.9...v0.2.10

v0.2.9

Choose a tag to compare

@ksperis ksperis released this 26 Sep 15:13

0.2.9 - 2026-09-26

Added

  • Added durable Admin webhook endpoints with event subscriptions, signed delivery, retry tracking, delivery history, and migration-callback integration.
  • Added an Admin effective-access audit to explain direct and group-derived rights across storage targets.
  • Added guided JSON editors and context-aware autocomplete for advanced bucket configuration workflows.

Changed

  • Redesigned Manager and Ceph Admin bucket configuration cards around compact summaries and focused editing dialogs while preserving existing S3 behavior.
  • Consolidated backend domain-error handling, association validation, identity resolution, statistics, billing, health, and storage-service contracts to remove redundant compatibility paths.
  • Updated release publication so stable tags and releases are created only after the exact qualified distribution, public images, Helm chart, bundles, scans, and smoke tests are ready.

Fixed/Security

  • Enforced split-deployment runtime-surface boundaries and removed remaining hardening compatibility fallbacks.
  • Fixed lifecycle-rule scope preservation, multi-backend webhook dispatch isolation, and several typed upstream/resource-not-found error paths.
  • Aligned frontend tests with the redesigned bucket configuration UX and fixed release secret-fixture resolution from the repository root.

Upgrade notes

  • Apply the normal Alembic upgrade path. Migrations 0130_canonical_admin_passkey_policy, 0131_canonical_onboarding_journeys, and 0132_webhook_endpoints preserve the Admin passkey policy, migrate legacy onboarding completion state, and add durable webhook storage.
  • This patch release does not create a new schema baseline.

Tests

  • Expanded backend and frontend coverage for webhooks, effective-access auditing, guided settings editors, bucket configuration, runtime-surface security, migration compatibility, and release publication.
  • Release qualification validates the exact prepared SHA across the mandatory application suite, Ceph checks, multi-architecture images and scans, Helm/Compose contracts, Kind onboarding, and public release bundles before finalization.

Full changelog: v0.2.8...v0.2.9