• 2026.09.18-0 420701bb27

    Release 2026.09.18-0
    All checks were successful
    Build and Deploy Production / build (push) Successful in 56s
    Build and Deploy Staging / build (push) Successful in 57s
    Tests / test (push) Successful in 1m40s
    Build and Deploy Production / deploy (push) Successful in 32s
    Build and Deploy Staging / deploy-appuio (push) Successful in 8s
    Stable

    tobru released this 2026-09-18 15:18:45 +00:00 | 0 commits to main since this release

    Release 2026.09.18-0

    features

    • Self-service restore of a backup into a new instance, configurable per service definition and gated behind the organization admin role (#678)
    • Staff can view and set the Odoo trial window on an organization, including a fix button for a drifted window (#665)
    • Plausible funnel goals and storage-free attribution, with UTM names matched case-insensitively against Odoo (#673)
    • Pending-approval tickets now carry the billing data that was submitted (#680)

    UI/UX

    • Archived organizations are flagged on the staff detail page (#665)
    • The tenant-view link moved above the card on the staff instance detail page (#665)

    bug

    • Storage stays billed while an instance is paused, so unpausing restores the pre-pause volume count (#660)
    • Odoo is written only after Postgres has committed, which prevents orphaned Odoo records when a request fails (#521)
    • Odoo trouble no longer fails a request or flags legacy rows (#521)
    • Line breaks now survive the trip to the Odoo helpdesk

    internal

    • Odoo is mocked throughout the test suite and real calls are forbidden (#665)
    • Trial-end POST tests no longer expire with the calendar (#674)
    • Renovate rebases dependency PRs when they fall behind main (#675)
    • New hack/check-odoo-permissions.py script to verify Odoo access rights

    dependencies

    Downloads
  • 2026.09.07-1 d8ce4fa671

    Release 2026.09.07-1
    All checks were successful
    Build and Deploy Production / build (push) Successful in 55s
    Build and Deploy Staging / build (push) Successful in 52s
    Build and Deploy Production / deploy (push) Successful in 28s
    Tests / test (push) Successful in 1m25s
    Build and Deploy Staging / deploy-appuio (push) Successful in 7s
    Stable

    tobru released this 2026-09-07 06:13:34 +00:00 | 76 commits to main since this release

    Release 2026.09.07-1

    • bump version 2026.09.07-0 -> 2026.09.07-1
    • fix: skip audit stamps for organizations that no longer exist
    Downloads
  • 2026.09.07-0 f06725b6c1

    Release 2026.09.07-0
    All checks were successful
    Build and Deploy Production / build (push) Successful in 52s
    Build and Deploy Staging / build (push) Successful in 50s
    Tests / test (push) Successful in 1m22s
    Build and Deploy Production / deploy (push) Successful in 31s
    Build and Deploy Staging / deploy-appuio (push) Successful in 7s
    Stable

    tobru released this 2026-09-07 06:01:13 +00:00 | 78 commits to main since this release

    Release 2026.09.07-0

    • bump version 2026.08.21-0 -> 2026.09.07-0
    • Merge pull request 'fix(deps): update dependency django-allauth to >=65.19.2' (#656) from renovate/django-allauth-65.x into main
    • fix(deps): update dependency django-allauth to >=65.19.2
    • Merge pull request 'fix(deps): update dependency django to v6.1.1' (#655) from renovate/django-6.x into main
    • Merge pull request 'fix(deps): update dependency psycopg to >=3.3.5' (#657) from renovate/psycopg-3.x into main
    • Merge pull request 'chore(deps): update https://github.com/renovatebot/github-action action to v46.2.6' (#658) from renovate/https-github.com-renovatebot-github-action-46.x into main
    • Merge pull request 'chore(deps): update dependency djlint to >=1.45.2' (#659) from renovate/djlint-1.x into main
    • chore(deps): update https://github.com/renovatebot/github-action action to v46.2.6
    • Merge pull request 'chore(deps): update https://github.com/renovatebot/github-action action to v46.2.5' (#654) from renovate/https-github.com-renovatebot-github-action-46.x into main
    • chore(deps): update dependency djlint to >=1.45.2
    • fix(deps): update dependency django to v6.1.1
    • chore(deps): update https://github.com/renovatebot/github-action action to v46.2.5
    • beta banner is gone for good
    • Merge pull request 'chore(deps): lock file maintenance' (#644) from renovate/lock-file-maintenance into main
    • Merge pull request 'fix(deps): update dependency sentry-sdk to >=2.68.1' (#645) from renovate/sentry-sdk-2.x into main
    • Merge pull request 'fix(deps): update dependency cryptography to >=50.0.1' (#647) from renovate/cryptography-50.x into main
    • Merge pull request 'chore(deps): update dependency isort to v9' (#648) from renovate/isort-9.x into main
    • Merge pull request 'chore(deps): update dependency coverage to >=7.16.0' (#650) from renovate/coverage-7.x into main
    • Merge pull request 'Audit Log Frontend per Organization' (#651) from audit-log-frontend into main
    • fix: make the audit log swallows and its ordering hold up
    • feat: note on the audit log that names are resolved at read time
    • feat: record CR spec changes in the audit log
    • docs: plan for recording CR spec changes in the audit log
    • fix: name the service on every instance event
    • feat: name the service and link the instance in audit log sentences
    • fix: audit log actor attribution and active category tab
    • feat: audit pause, limit profile and validity period changes
    • fix: address audit log review findings
    • feat: organization audit log page
    • feat: stamp audit log entries onto organizations
    • docs: organization audit log design and implementation plan
    • fix: validate storage and replica bounds in create form and price preview
    • configure allowed s3 endpoints for backup reveal
    • Merge pull request 'Backup Content Access and Download' (#649) from backup-access into main
    • feat: direct backup bucket access with credential reveal
    • docs: backup download implementation plan
    • docs: backup content access and download design
    • fix(deps): update dependency psycopg to >=3.3.5
    • chore(deps): update dependency coverage to >=7.16.0
    • chore(deps): update dependency isort to v9
    • fix(deps): update dependency cryptography to >=50.0.1
    • fix(deps): update dependency sentry-sdk to >=2.68.1
    • Merge pull request 'chore(deps): update https://github.com/renovatebot/github-action action to v46.2.3' (#643) from renovate/https-github.com-renovatebot-github-action-46.x into main
    • chore(deps): update https://github.com/renovatebot/github-action action to v46.2.4
    • chore(deps): lock file maintenance
    Downloads
  • 2026.08.21-0 4c50dbb0a4

    Release 2026.08.21-0
    All checks were successful
    Build and Deploy Production / build (push) Successful in 56s
    Build and Deploy Staging / build (push) Successful in 57s
    Tests / test (push) Successful in 1m21s
    Build and Deploy Production / deploy (push) Successful in 33s
    Build and Deploy Staging / deploy-appuio (push) Successful in 8s
    Stable

    tobru released this 2026-08-21 07:26:53 +00:00 | 123 commits to main since this release

    Release 2026.08.21-0

    • bump version 2026.08.20-1 -> 2026.08.21-0
    • Merge pull request 'fix: treat preserve-unknown-fields as a free-form map' (#637) from fix/preserve-unknown-fields-paths into main
    • fix: treat preserve-unknown-fields as a free-form map
    Downloads
  • 2026.08.20-1 3d7b1f5dbf

    Release 2026.08.20-1
    All checks were successful
    Build and Deploy Production / build (push) Successful in 1m2s
    Build and Deploy Staging / build (push) Successful in 1m6s
    Tests / test (push) Successful in 1m23s
    Build and Deploy Production / deploy (push) Successful in 3m0s
    Build and Deploy Staging / deploy-appuio (push) Successful in 8s
    Stable

    tobru released this 2026-08-20 14:18:27 +00:00 | 126 commits to main since this release

    Release 2026.08.20-1

    • bump version 2026.08.20-0 -> 2026.08.20-1
    • fix: treat a blank backup field path as no path
    Downloads
  • 2026.08.20-0 aff7dc6e40

    Release 2026.08.20-0
    All checks were successful
    Build and Deploy Production / build (push) Successful in 1m7s
    Build and Deploy Staging / build (push) Successful in 1m4s
    Tests / test (push) Successful in 1m21s
    Build and Deploy Production / deploy (push) Successful in 3m13s
    Build and Deploy Staging / deploy-appuio (push) Successful in 8s
    Stable

    tobru released this 2026-08-20 13:57:21 +00:00 | 128 commits to main since this release

    Release 2026.08.20-0

    • bump version 2026.07.15-0 -> 2026.08.20-0
    • Merge pull request 'Backup Listing' (#631) from feat/backup-visibility into main
    • fix: make the row-2 columns actually share a height
    • style: give backup information a clearer presentation
    • docs: add a Codey backup_config example, drop a false empty state
    • fix: tidy the backup list presentation
    • fix: align dotted-path reads with the schema-aware resolver
    • docs: add backup visibility design and implementation plan
    • test: cover remaining backup branches
    • feat: show backup information on the instance detail page
    • feat: assemble backup data for the instance detail view
    • feat: read the configured backup policy from an instance spec
    • feat: read backup objects from Kubernetes
    • feat: expose backup_config in the ServiceDefinition admin
    • feat: add ServiceDefinition.backup_config
    • feat: add humanize_cron for backup schedule display
    • refactor: move get_nested into core.utils.data
    • Merge pull request 'fix: resolve CRD property names that contain dots' (#636) from fix/dotted-crd-property-keys into main
    • fix: harden CRD dotted path resolution
    • fix: resolve CRD property names that contain dots
    • Merge pull request 'chore(deps): update https://github.com/astral-sh/setup-uv action to v10' (#633) from renovate/https-github.com-astral-sh-setup-uv-10.x into main
    • Merge pull request 'chore(deps): update https://github.com/renovatebot/github-action action to v46.2.2' (#632) from renovate/https-github.com-renovatebot-github-action-46.x into main
    • chore(deps): update https://github.com/astral-sh/setup-uv action to v10
    • chore(deps): update https://github.com/renovatebot/github-action action to v46.2.2
    • fix duplicate Open button on instance detail page
    • fix all djlint findings and align formatter tooling
    • upgrade dependencies and improve some tests
    • Merge pull request 'chore(deps): update dependency coverage to >=7.15.4' (#620) from renovate/coverage-7.x into main
    • Merge pull request 'fix(deps): update dependency sentry-sdk to >=2.68.0' (#625) from renovate/sentry-sdk-2.x into main
    • Merge pull request 'fix(deps): update dependency django-scopes to >=2.1.0' (#629) from renovate/django-scopes-2.x into main
    • fix(deps): update dependency sentry-sdk to >=2.68.0
    • chore(deps): update dependency coverage to >=7.15.4
    • Merge pull request 'chore(deps): update https://github.com/renovatebot/github-action action to v46.1.20' (#627) from renovate/https-github.com-renovatebot-github-action-46.x into main
    • chore(deps): update https://github.com/renovatebot/github-action action to v46.1.21
    • fix(deps): update dependency django-scopes to >=2.1.0
    • Merge pull request 'chore(deps): update https://data.forgejo.org/actions/setup-node action to v7' (#626) from renovate/https-data.forgejo.org-actions-setup-node-7.x into main
    • support instances parameter in provisioning deep links
    • chore(deps): update https://data.forgejo.org/actions/setup-node action to v7
    • support majorversion field for catalog api
    Downloads
  • 2026.07.15-0 89aa0ac046

    Release 2026.07.15-0
    All checks were successful
    Build and Deploy Production / build (push) Successful in 58s
    Build and Deploy Staging / build (push) Successful in 57s
    Tests / test (push) Successful in 1m15s
    Build and Deploy Production / deploy (push) Successful in 34s
    Build and Deploy Staging / deploy-appuio (push) Successful in 6s
    Stable

    tobru released this 2026-07-15 05:34:09 +00:00 | 167 commits to main since this release

    Release 2026.07.15-0

    • bump version 2026.07.07-0 -> 2026.07.15-0
    • Merge pull request 'chore(deps): update dependency coverage to >=7.15.1' (#609) from renovate/coverage-7.x into main
    • Merge pull request 'chore(deps): update https://github.com/renovatebot/github-action action to v46.1.19' (#616) from renovate/https-github.com-renovatebot-github-action-46.x into main
    • Merge pull request 'fix(deps): update dependency sentry-sdk to >=2.65.0' (#617) from renovate/sentry-sdk-2.x into main
    • fix(deps): update dependency sentry-sdk to >=2.65.0
    • chore(deps): update https://github.com/renovatebot/github-action action to v46.1.19
    • chore(deps): update dependency coverage to >=7.15.1
    • Merge pull request 'Consistent Date and Time Display' (#611) from design/consistent-datetime-display into main
    • feat(frontend): render all dates/times in the viewer's local time
    • docs: design and plan for consistent local-time display
    • Merge pull request 'Fix Pod Log Display and Add Colors' (#612) from fix/pod-logs-bytes-decode into main
    • fix autoescape
    • Merge pull request 'Update dependency djlint to >=1.40.6' (#614) from renovate/djlint-1.x into main
    • Merge pull request 'Update dependency kubernetes to >=36.0.3,<37' (#615) from renovate/kubernetes-36.x into main
    • Merge pull request 'Warning-gated Org Deletion' (#607) from design/warning-gated-deletion into main
    • Update dependency kubernetes to >=36.0.3,<37
    • Update dependency djlint to >=1.40.6
    • fix(core): close warning-gated deletion race and billing gaps
    • fix(email): link deletion confirmation to general support page, not the archived org's
    • fix(staff): resolve absolute support URLs in lifecycle email previews
    • style(staff): wrap long lines in lifecycle email preview modal
    • feat(staff): broaden lifecycle timeline to validity orgs with email preview modals
    • feat(dev): per-worktree dev server port and database helpers
    • refactor(core): extract reusable email builders into notifications module
    • Merge pull request 'Update dependency django-filter to v26' (#608) from renovate/django-filter-26.x into main
    • Merge pull request 'Update dependency djlint to >=1.40.5' (#610) from renovate/djlint-1.x into main
    • fix(staff): accurate scheduled-deletion date and reminder states in lifecycle
    • feat(staff): show trial & deletion lifecycle on organization detail
    • test(reminders): cover deletion_warning key stays unwritten on SMTP failure
    • test: align odoo trial-window assertions with effective_deletion_date
    • fix(core): require is_expired in is_ready_for_deletion gate (extension race belt)
    • feat(cleanup): log expired orgs stuck awaiting a deletion warning
    • feat(cleanup): record deletion_confirmation in reminders json
    • feat(cleanup): gate deletion on recorded warning + business-day buffer
    • fix(reminders): record deletion_warning key only after a successful send
    • feat(reminders): clear stale deletion warning when org is extended
    • feat(reminders): gating deletion warning at expiry with BCC and Odoo push
    • feat(logs): render ANSI color codes as HTML in the pod log viewer
    • fix(core): guard is_ready_for_deletion against missing effective_deletion_date
    • fix(logs): decode raw pod log bytes instead of str(bytes) wrapper
    • feat(core): odoo trial_end tracks effective_deletion_date
    • feat(core): add is_ready_for_deletion gate property
    • feat(core): add deletion_warning_sent_at and effective_deletion_date
    • feat(core): add _add_business_days helper
    • feat(settings): add SERVALA_DELETION_WARNING_BCC
    • docs: implementation plan for warning-gated deletion
    • fix(frontend): render instance ID as HTML in delete confirmation help text
    • Update dependency djlint to >=1.40.5
    • Update dependency django-filter to v26
    • Merge pull request 'Update dependency djlint to >=1.40.4' (#604) from renovate/djlint-1.x into main
    • Merge pull request 'Update dependency django to v6.0.7' (#603) from renovate/django-6.x into main
    • docs: design for warning-gated org deletion
    • Merge pull request 'Fix k8s API client timeout' (#606) from fix/k8s-api-client-timeout-injection into main
    • Merge pull request 'Update https://github.com/astral-sh/setup-uv action to v8.3.2' (#605) from renovate/https-github.com-astral-sh-setup-uv-8.x into main
    • fix(k8s): inject default timeout when SDK passes _request_timeout=None
    • allow to copy prod db
    • Update https://github.com/astral-sh/setup-uv action to v8.3.2
    • Update dependency djlint to >=1.40.4
    • Update dependency django to v6.0.7
    Downloads
  • 2026.07.07-0 f391c3d1fb

    Release 2026.07.07-0
    All checks were successful
    Build and Deploy Production / build (push) Successful in 1m0s
    Build and Deploy Staging / build (push) Successful in 1m0s
    Tests / test (push) Successful in 1m21s
    Build and Deploy Production / deploy (push) Successful in 2m59s
    Build and Deploy Staging / deploy-appuio (push) Successful in 7s
    Stable

    tobru released this 2026-07-07 13:30:14 +00:00 | 226 commits to main since this release

    Release 2026.07.07-0

    • gitignore local .envrc
    • bump version 2026.07.02-1 -> 2026.07.07-0
    • feat(staff): refine organization detail view
    • temp disable deploy job to talos
    • Merge pull request 'Add Talos deployment target alongside OpenShift' (#599) from feat/talos-deployment-target into main
    • feat(deploy): add Talos deployment target alongside OpenShift
    • Merge pull request 'Service Catalog Read-Only API for Documentation' (#602) from service-catalog-ep into main
    • document missing env vars
    • document new env vars
    • feat(api): add read-only service catalog endpoint
    • service catalog endpoint design
    • fix(errors): render error pages without DB-hitting context processors
    • add staff links to helpdesk message
    • fix(fqdn): submit custom domain verbatim instead of appending managed suffix
    • feat(emails): point notification emails to the support page
    • Merge pull request 'Automated Trial Cleanup with Grace Period' (#583) from trial-cleanup-grace-period into main
    • just fmt
    • fix(core): surface trial-cleanup teardown failures for retry
    • feat(deploy): run procrastinate worker as a sidecar in the portal pod
    • feat(core): run trial cleanup as a procrastinate periodic task
    • install required dep for procrastinate
    • feat(core): auto-clean expired trials with grace period
    • add non-tech summary
    • docs: refine trial cleanup with scale-down and human-friendly timing
    • docs: add trial cleanup grace period design and plan
    • Merge pull request 'Task Runner for Deferred or Periodic Tasks' (#597) from feature/task-runner into main
    • feat(core): configurable task crons, timestamped worker logs
    • fix(core): surface procrastinate logs on the console
    • fix(core): allow manual defer of periodic tasks
    • docs: document procrastinate background worker
    • feat(deploy): replace CronJobs with procrastinate worker
    • feat(core): add procrastinate task runner
    • feat(staff): add per-instance fix for K8s health findings
    • support git worktrees
    • Merge pull request 'Fixes from Automated Security Review' (#596) from security/review-fixes into main
    • fix(security): escape instance fields in support ticket HTML
    • fix(security): run best-effort schema validation on CRD spec data
    • fix(security): disable server-controlled hidden CRD form fields
    • fix(security): render JSON payloads via json_script instead of |safe
    • fix(security): bind invitation acceptance to the invited email
    • fix(security): constant-time comparison for OSB basic auth
    • fix(security): enable HSTS, SSL redirect and nosniff in prod
    • fix(security): set CSRF_COOKIE_SECURE alongside the session cookie
    • fix(security): scope invitation deletion to the request organization
    • fix(security): default SERVALA_ENVIRONMENT to production (fail-safe DEBUG)
    • fix(security): escape dynamic array widget hidden JSON value
    • fix(security): enforce delete permission on ServiceInstanceDeleteView
    • Merge pull request 'Update dependency djlint to >=1.40.3' (#591) from renovate/djlint-1.x into main
    • Merge pull request 'Resolve compute-plan size field names from CRD schema' (#593) from fix/compute-plan-size-field-names into main
    • Merge pull request 'Update https://github.com/renovatebot/github-action action to v46.1.18' (#594) from renovate/https-github.com-renovatebot-github-action-46.x into main
    • Merge pull request 'Update https://github.com/astral-sh/setup-uv action to v8.3.0' (#595) from renovate/https-github.com-astral-sh-setup-uv-8.x into main
    • Update https://github.com/astral-sh/setup-uv action to v8.3.0
    • Update https://github.com/renovatebot/github-action action to v46.1.18
    • Update dependency djlint to >=1.40.3
    • fix: resolve compute-plan size field names from CRD schema
    • Merge pull request 'Update dependency coverage to >=7.15.0' (#592) from renovate/coverage-7.x into main
    • Merge pull request 'Organization Approval' (#590) from feature/organization-approval into main
    • fix: make Odoo invoice-address lookup robust and cached
    • feat: friendlier approval emails and resolved existing billing address
    • feat: clearer Odoo search on approval card
    • feat: link existing Odoo records at approval for deduplication
    • docs: design for approval-time Odoo deduplication
    • feat: improve staff approval detail UI
    • feat: refine org approval UX (helpdesk html, picker, staff list)
    • Update dependency coverage to >=7.15.0
    • feat: require staff approval for new organizations
    • docs: add organization approval flow design and plan
    • don't display _HOSTS connection keys
    Downloads
  • 2026.07.02-1 cc273f582f

    Release 2026.07.02-1
    All checks were successful
    Build and Deploy Production / build (push) Successful in 56s
    Build and Deploy Staging / build (push) Successful in 1m1s
    Tests / test (push) Successful in 1m16s
    Build and Deploy Production / deploy (push) Successful in 21s
    Build and Deploy Staging / deploy (push) Successful in 8s
    Stable

    tobru released this 2026-07-02 08:51:58 +00:00 | 294 commits to main since this release

    Release 2026.07.02-1

    • bump version 2026.07.02-0 -> 2026.07.02-1
    • bump version 2026.06.30-0 -> 2026.07.02-0
    • Merge pull request 'Update dependency djlint to >=1.40.1' (#588) from renovate/djlint-1.x into main
    • Merge pull request 'Update dependency pillow to >=12.3.0' (#589) from renovate/pillow-12.x into main
    • Fix choice field validation for integer control plane enums
    • show filtered total in staff view
    • Update dependency pillow to >=12.3.0
    • Update dependency djlint to >=1.40.1
    • fix multiple container in pod log
    • Merge pull request 'Display location in dashboard of recent instances' (#587) from location-of-instance into main
    • display location in dashboard of recent instances
    • Bulk Finding Fix on Staff Views (#584)
    • Merge pull request 'Update dependency djlint to >=1.40.0' (#585) from renovate/djlint-1.x into main
    • Merge pull request 'Update dependency sentry-sdk to >=2.64.0' (#586) from renovate/sentry-sdk-2.x into main
    • Update dependency sentry-sdk to >=2.64.0
    • Update dependency djlint to >=1.40.0
    • reword the pricing disclaimer
    Downloads
  • 2026.06.30-0 b2ba535de6

    Release 2026.06.30-0
    All checks were successful
    Build and Deploy Production / build (push) Successful in 58s
    Build and Deploy Staging / build (push) Successful in 57s
    Tests / test (push) Successful in 1m12s
    Build and Deploy Production / deploy (push) Successful in 22s
    Build and Deploy Staging / deploy (push) Successful in 8s
    Stable

    tobru released this 2026-06-30 07:20:47 +00:00 | 311 commits to main since this release

    Release 2026.06.30-0

    • bump version 2026.06.23-0 -> 2026.06.30-0
    • Merge pull request 'Set Odoo payment term on the sale order' (#582) from odoo-payment-term-per-sale-order into main
    • Set Odoo payment term on the sale order
    • Merge pull request 'Allow overriding managed FQDN with a custom domain' (#581) from custom-fqdn-override into main
    • Allow overriding managed FQDN with a custom domain
    • Merge pull request 'Update dependency djlint to >=1.39.5' (#578) from renovate/djlint-1.x into main
    • Merge pull request 'Update https://github.com/renovatebot/github-action action to v46.1.17' (#579) from renovate/https-github.com-renovatebot-github-action-46.x into main
    • Merge pull request 'Add /support redirect to organization support form' (#580) from support-redirect into main
    • Add /support redirect to organization support form
    • Update https://github.com/renovatebot/github-action action to v46.1.17
    • Update dependency djlint to >=1.39.5
    • Merge pull request 'Scale price preview dynamically with replica count' (#575) from replica-dynamic-pricing into main
    • Render choice config on non-enum fields as a dropdown
    • Scale price preview dynamically with replica count
    • Merge pull request 'Surface an error when the CRD schema cannot be fetched' (#576) from surface-crd-schema-fetch-error into main
    • Surface an error when the CRD schema cannot be fetched
    • Merge pull request 'Handle Sale Order Pricelist in Origin and Organization' (#574) from odoo-pricelist-per-sale-order into main
    • Polish pricelist feature from review feedback
    • Manage Odoo pricelists per sale order
    • Merge pull request 'Link Odoo res.partner records from staff org billing entity' (#573) from billing-entity-links into main
    • Link Odoo res.partner records from staff org billing entity
    • Merge pull request 'Remove unused erp_reference field and clarify Odoo ID fields on BillingEntity' (#572) from remove-billingentity-erp-reference into main
    • Remove unused erp_reference field and clarify Odoo ID fields on BillingEntity
    • Merge pull request 'Update dependency djlint to >=1.39.4' (#571) from renovate/djlint-1.x into main
    • Merge pull request 'Manage Resource Request via Catalog API' (#570) from compute-requests-limits into main
    • Update dependency djlint to >=1.39.4
    • Lock catalog-managed admin fields read-only
    • Sync separate CPU/memory requests from catalog
    Downloads