Release Notes - Version 2.3.0
Release Date: August 20, 2026
๐ Highlights
Version 2.3.0 introduces a full admin audit logging capability โ administrators can now review a complete trail of platform configuration actions directly from the UI or the API. Team management is enhanced with enable/disable controls and an improved user blocking policy for billing-account owners. Queue scheduling gains better support for customer-use queues in preemptible and dedicated mode, with a new toggle on the queue status view for quick adjustments. Authentication reliability is strengthened across Okta token-exchange, Bearer, and email-based password-reset flows. The release also removes legacy per-workload limit tracking in favor of consistent per-user queue limits throughout the platform.
๐ New features
๐๏ธ Admin audit logging
Administrators and superusers can now browse a read-only audit trail that records who performed each administrative action, when it occurred, and what was changed. The log is available as a read-only viewer in the UI for superusers and is captured at the API level for all administrator operations. The sidenav entry for Audit Logs is conditionally hidden when the audit feature flag is disabled, keeping the navigation clean for environments where the feature is not yet active. Audit log error messages include accessibility attributes and i18n copy so screen readers and keyboard navigation work correctly with the view.
๐ณ๏ธ Team enable/disable
Administrators can now enable or disable teams using a new toggle in both the admin API and the admin UI. Disabled teams remain in the system but their access is suspended, giving operators finer control over team lifecycle without requiring deletion and recreation. User deletion is also blocked when the user is the billing-account owner of one or more teams, preventing orphaned billing relationships.
๐ Customer-use queue allocation and toggle
Queues marked as is_customer_use can now be correctly allocated when configured in preemptible or dedicated mode โ a previous restriction that prevented these queues from being scheduled has been removed. A new customer-use toggle is visible on the queue status view below the existing enable/disable control, allowing administrators to change the allocation mode without leaving the status panel.
๐ง Improvements
- Okta authentication hardening โ User lookup now falls back to the
preferred_usernameand email claims, andlast_loginis reliably updated on both token-exchange and Bearer authentication paths. - Password reset loop prevention โ Password age is now refreshed after an email-based password reset, preventing users from being immediately prompted to reset again.
- Per-user queue limit enforcement โ Legacy per-workload limit tracking has been removed; all limit enforcement now uses per-user queue limits throughout the API and UI, simplifying the scheduling pipeline and removing deprecated
max_accelerators_per_jobandmax_cores_per_jobreferences. - Queue ordering by free capacity โ Compatible CI queues are now ordered by their free-capacity cache value, giving the scheduler a more accurate view of available resources for interactive job placement.
- Web terminal session cleanup โ Shell sessions are now explicitly terminated when a browser closes a web-terminal connection, preventing orphaned processes on the host.
- Teams filter by enabled status โ A new
enabledquery parameter on theteams/endpoint makes it easy to manage active and inactive teams from both the API and admin views. - Responsive billing tables โ The billing and transaction Material tables are now wrapped in a horizontal scroll container, preventing content from being clipped on narrower viewports.
- Application wizard DTO migration continued โ The application create and edit wizards were migrated to strongly typed
WriteAppRequestandPatchWriteAppRequestDTOs, reducing reliance on ad-hoc form mutation and continuing the migration effort started in previous releases.
๐ Bug fixes
- Fixed application wizard Settings form labels not visible after entering a value โ labels are now correctly displayed once a field is populated
- Fixed duplicate settings keys being allowed in the application wizard Settings form โ a guard now prevents submitting duplicate entries
- Fixed S3 dataset cleanup being skipped when a satellite omits the workload label from its job completion signal
- Fixed
to_acceptedstate transition not being permitted fromEXPIREDโ resolves a sign-up crash when an expired invitation is redeemed - Fixed field-level validation not returning a clear error for duplicate team names โ a descriptive error is now returned instead of a generic response
- Fixed free-capacity cache Celery deduplication not handling scenarios where the cache worker is temporarily unavailable
- Fixed missing invitation names for users completing sign-up through Okta โ name fields are now back-filled from the invitation record
- Fixed double-quoting of the Redis hostname variable in deployment workflows
- Fixed npm high-severity vulnerabilities in Angular and Babel production dependencies
๐ Security
- nginx 1.30 โ nginx was upgraded to remediate CVE-2026-60005
- SSL certificate renewal โ SSL certificate paths for
aac-api.amd.comand the staging environment were updated to the 2026โ2027 certificate cycle
๐งน Cleanup
- Removed the
AcceleratorProcessingUnitmodel and its database table โ the APU concept has been retired from the platform - Removed unused
ConfigSettingsmodel fields and their corresponding theme fields from the config API response - Removed dead email templates; the emails management command was extended to cover active templates
- Removed deprecated minimum-cores filter from the queue list filter panel in the UI
- Removed dead
WizardJobhelper methods and unused queue wizard mode state - User account deletion in the UI now calls the archive endpoint instead of the legacy delete endpoint