-
Release 2026.07.15-0
StableAll checks were successfulBuild and Deploy Production / build (push) Successful in 58sBuild and Deploy Staging / build (push) Successful in 57sTests / test (push) Successful in 1m15sBuild and Deploy Production / deploy (push) Successful in 34sBuild and Deploy Staging / deploy-appuio (push) Successful in 6sreleased this
2026-07-15 05:34:09 +00:00 | 6 commits to main since this releaseRelease 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
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Release 2026.07.07-0
StableAll checks were successfulBuild and Deploy Production / build (push) Successful in 1m0sBuild and Deploy Staging / build (push) Successful in 1m0sTests / test (push) Successful in 1m21sBuild and Deploy Production / deploy (push) Successful in 2m59sBuild and Deploy Staging / deploy-appuio (push) Successful in 7sreleased this
2026-07-07 13:30:14 +00:00 | 65 commits to main since this releaseRelease 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
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Release 2026.07.02-1
StableAll checks were successfulBuild and Deploy Production / build (push) Successful in 56sBuild and Deploy Staging / build (push) Successful in 1m1sTests / test (push) Successful in 1m16sBuild and Deploy Production / deploy (push) Successful in 21sBuild and Deploy Staging / deploy (push) Successful in 8sreleased this
2026-07-02 08:51:58 +00:00 | 133 commits to main since this releaseRelease 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
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Release 2026.06.30-0
StableAll checks were successfulBuild and Deploy Production / build (push) Successful in 58sBuild and Deploy Staging / build (push) Successful in 57sTests / test (push) Successful in 1m12sBuild and Deploy Production / deploy (push) Successful in 22sBuild and Deploy Staging / deploy (push) Successful in 8sreleased this
2026-06-30 07:20:47 +00:00 | 150 commits to main since this releaseRelease 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
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Release 2026.06.23-0
StableAll checks were successfulBuild and Deploy Production / build (push) Successful in 43sBuild and Deploy Staging / build (push) Successful in 46sTests / test (push) Successful in 57sBuild and Deploy Production / deploy (push) Successful in 22sBuild and Deploy Staging / deploy (push) Successful in 6sreleased this
2026-06-23 06:50:05 +00:00 | 178 commits to main since this releaseRelease 2026.06.23-0
- bump version 2026.06.09-0 -> 2026.06.23-0
- constrain onboarding logo
- Merge pull request 'Organization onboarding into origin with signed URL' (#525) from switch-onboarding into main
- Merge pull request 'Update dependency coverage to >=7.14.3' (#568) from renovate/coverage-7.x into main
- Merge pull request 'Add trial & decommission marker checks to staff Check Odoo' (#569) from odoo-check-trial-decommission-markers into main
- Add trial & decommission marker checks to staff Check Odoo
- enable pkce for keycloak authentication
- Update dependency coverage to >=7.14.3
- feat: signed onboarding for organization origins
- broaden and unify organization name validation
- organization origin onboarding design
- Merge pull request 'Sync Trial and Decommissioning Markers to Odoo in Admin Command and Disambiguate organizations with shared names in selector' (#567) from odoo-sync-trial-decommission-markers into main
- Disambiguate organizations with shared names in selector
- Reconcile sale order trial & decommission markers in sync_odoo
- Keep revealed connection credentials visible across HTMX polls
- Merge pull request 'Sync organization trial period to Odoo sale order' (#566) from odoo-trial-period into main
- Add per-organization trial validity override
- Sync organization trial period to Odoo sale order
- Merge pull request 'Set decommission_date on Odoo sale order when org is decommissioned' (#565) from org-decommissioning-odoo into main
- Set decommission_date on Odoo sale order when org is decommissioned
- Merge pull request 'Set external billing fields on Exoscale sale orders' (#558) from exoscale-so-config into main
- Merge pull request 'Update dependency pytest to >=9.1.1' (#561) from renovate/pytest-9.x into main
- Merge pull request 'Update dependency coverage to >=7.14.2' (#562) from renovate/coverage-7.x into main
- Merge pull request 'Lock file maintenance' (#564) from renovate/lock-file-maintenance into main
- Merge pull request 'Update https://data.forgejo.org/actions/checkout action to v7' (#560) from renovate/https-data.forgejo.org-actions-checkout-7.x into main
- Merge pull request 'Update https://github.com/renovatebot/github-action action to v46.1.16' (#563) from renovate/https-github.com-renovatebot-github-action-46.x into main
- Update https://github.com/renovatebot/github-action action to v46.1.16
- Update dependency coverage to >=7.14.2
- Update dependency pytest to >=9.1.1
- Update https://data.forgejo.org/actions/checkout action to v7
- Merge pull request 'Update dependency sentry-sdk to >=2.63.0' (#559) from renovate/sentry-sdk-2.x into main
- Update dependency sentry-sdk to >=2.63.0
- Set external billing fields on Exoscale sale orders
- stop using playwright mcp
- Small improvements to staff view (#557)
- Merge pull request 'Remove the in-repo docs' (#550) from remove-docs into main
- remove in-repo docs
- Merge pull request 'Update dependency djlint to >=1.39.2' (#554) from renovate/djlint-1.x into main
- Merge pull request 'Update dependency cryptography to v49' (#555) from renovate/cryptography-49.x into main
- Merge pull request 'Update quay.io/appuio/oc Docker tag to v4.21' (#553) from renovate/quay.io-appuio-oc-4.x into main
- Merge pull request 'Update dependency pytest to >=9.1.0' (#556) from renovate/pytest-9.x into main
- Lock file maintenance
- Update dependency pytest to >=9.1.0
- Update dependency cryptography to v49
- Update dependency djlint to >=1.39.2
- Update quay.io/appuio/oc Docker tag to v4.21
- Merge pull request 'Update https://github.com/renovatebot/github-action action to v46.1.15' (#552) from renovate/https-github.com-renovatebot-github-action-46.x into main
- Update https://github.com/renovatebot/github-action action to v46.1.15
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Release 2026.06.09-0
StableAll checks were successfulBuild and Deploy Production / build (push) Successful in 45sBuild and Deploy Staging / build (push) Successful in 44sBuild and Deploy Antora Docs / build (push) Successful in 31sTests / test (push) Successful in 58sBuild and Deploy Production / deploy (push) Successful in 17sBuild and Deploy Staging / deploy (push) Successful in 7sBuild and Deploy Antora Docs / deploy (push) Successful in 5sreleased this
2026-06-09 15:35:58 +00:00 | 226 commits to main since this releaseRelease 2026.06.09-0
dependencies
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
Release 2026.06.01-0
StableAll checks were successfulBuild and Deploy Production / build (push) Successful in 45sBuild and Deploy Staging / build (push) Successful in 43sBuild and Deploy Antora Docs / build (push) Successful in 1m6sTests / test (push) Successful in 59sBuild and Deploy Production / deploy (push) Successful in 18sBuild and Deploy Staging / deploy (push) Successful in 7sBuild and Deploy Antora Docs / deploy (push) Successful in 5sreleased this
2026-06-01 11:03:43 +00:00 | 239 commits to main since this releaseRelease 2026.06.01-0
bug
- Fix discovery of Kubernetes CRD plural names (#540)
dependencies
enhancement
- Deep Links for Service Provisioning (#543)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Release 2026.05.29-1
StableAll checks were successfulBuild and Deploy Production / build (push) Successful in 45sBuild and Deploy Staging / build (push) Successful in 44sBuild and Deploy Antora Docs / build (push) Successful in 1m24sTests / test (push) Successful in 56sBuild and Deploy Production / deploy (push) Successful in 24sBuild and Deploy Staging / deploy (push) Successful in 6sBuild and Deploy Antora Docs / deploy (push) Successful in 5sreleased this
2026-05-29 09:38:58 +00:00 | 253 commits to main since this releaseRelease 2026.05.29-1
No user visible changes
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
Release 2026.05.29-0
StableAll checks were successfulBuild and Deploy Production / build (push) Successful in 42sBuild and Deploy Production / build (release) Successful in 44sBuild and Deploy Staging / build (push) Successful in 51sBuild and Deploy Antora Docs / build (push) Successful in 1m20sTests / test (push) Successful in 55sBuild and Deploy Production / deploy (push) Successful in 28sBuild and Deploy Production / deploy (release) Successful in 20sBuild and Deploy Staging / deploy (push) Successful in 6sBuild and Deploy Antora Docs / deploy (push) Successful in 4sreleased this
2026-05-29 07:58:22 +00:00 | 262 commits to main since this releaseRelease 2026.05.29-0
UI/UX
- Make pricing in detail view toggleable (#537)
dependencies
- Update dependency kubernetes to v36 (#524)
- Update dependency bumpver to >=2026.1132 (#527)
- Update dependency django-filter to >=25.2 (#535)
- Update dependency sentry-sdk to >=2.61.0 (#536)
- Lock file maintenance (#529)
- Update https://github.com/astral-sh/setup-uv action to v8 (#528)
- Update dependency coverage to >=7.14.1 (#530)
- Update dependency pyjwt to >=2.13.0 (#523)
enhancement
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Release 2026.05.21-1
StableAll checks were successfulBuild and Deploy Production / build (push) Successful in 43sBuild and Deploy Production / build (release) Successful in 42sBuild and Deploy Staging / build (push) Successful in 39sBuild and Deploy Antora Docs / build (push) Successful in 28sTests / test (push) Successful in 50sBuild and Deploy Production / deploy (push) Successful in 19sBuild and Deploy Production / deploy (release) Successful in 18sBuild and Deploy Staging / deploy (push) Successful in 6sBuild and Deploy Antora Docs / deploy (push) Successful in 4sreleased this
2026-05-21 14:31:48 +00:00 | 300 commits to main since this releaseRelease 2026.05.21-1
Uncategorized\n\n* No changes recorded
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)