Release Notes

Here you find the release notes including all changes.

[1.0.0-beta2] - 2026-04-30

The release of 1.0-beta2 — Wiggling Waterbear 🐻 delivers bug fixes and further improvements across all services. We are excited to be moving even closer to the stable 1.0 release!

Key Highlights:

  • Reporting: A new reporting management command is now available, allowing you to generate reports tailored to the specific needs of your radio station.

  • Enhanced Playout Control: We’ve improved manual intervention during live broadcasts. You can add and replace media on the fly, or extend the duration of the current timeslot. Since the Playout Engine now also uses NATS for communication, most changes to broadcast data in Dashboard are now almost immediately reflected in the playout scheduler.

  • Episode Recording Guardrails: The Battery Cut & Glue background job now automatically crops and prepares potentially missing episode recordings, ensuring they are ready for any scheduled repetitions over the next 24 hours. Administrators can define the retention period for episode and block recordings in the radio settings.

Breaking Changes

Ensure to update the following environment variables accordingly:

  • Cut-Glue File extension setting AURA_BATTERY_CUT_GLUE_FILE_FORMAT is not prefixed with a ‘.’ anymore.

  • Engine Recorder File extension setting AURA_ENGINE_RECORDER_FILE_FORMAT is not prefixed with a ‘.’ anymore.

Changelog

Added

  • aura: Documentation: Additional info in many areas of the Django admin section.

  • aura: Documentation: Developer info on CBA Integration for radio websites.

  • aura: Documentation: New show settings for “storage quota” and “number of people involved”.

  • aura: The radio station fixture allows setting the default show upload quota.

  • aura: Documentation: Info on Steering background jobs.

  • aura: Sentry configuration for Dashboard Clock.

  • aura: Documentation: Add terms overview.

  • aura: Documentation: Additions on how contributors are oganized.

  • aura: Developer targets to collect, add and generate list of contributors.

  • aura: Documentation: Info on contributed reporting script.

  • aura: Documentation: Additional info on bind-mounts in the backup section.

  • aura: Documentation: New section on multi-language content.

  • aura: Documentation: Reworked the studio clock documentation.

  • aura: Documentation: Language source configuration in fixtures.

  • aura: Documentation: New optional AURA_AUDIO_STORE and AURA_LOGS parameters for make aura-web.init and make aura-playout.init.

  • steering: Extensions for upload quota handling in Steering (steering#372)

  • steering: involved_people_count field to Show model (steering#377)

  • steering: Management commands to generate reports (steering#379)

  • dashboard: When creating repetition schedules, users can now select the initial broadcast to start the repetition with.

  • dashboard: The number of involved people and the show quota can now be set in the show settings.

  • dashboard: The used-up show quota is now displayed in the show settings.

  • dashboard: Removing items from combobox now requires confirmation.

  • dashboard: Creating a schedule now requires confirmation.

  • dashboard: The license selection now includes a link to a help page for choosing a license.

  • dashboard: The Free slots calendar view now shows the start and end of free slots.

  • dashboard-clock: Display filenames provided by Engine API, as a fallback for metadata.

  • dashboard-clock: Add make test to run all npm tests.

  • dashboard-clock: Add basic test coverage.

  • dashboard-clock: Add optional Sentry/Glitchtip error tracking.

  • engine: pass filename to playlog engine#177

  • engine: instant timetable updates on nats events engine#168

  • engine: script for docker healthchecks aura#335

  • engine-api: Playlog entries now have a filename attribute.

  • engine-core: Updated Liquidsoap 2.4.1 to 2.4.2

  • engine-core: Post filename entry to playlog engine#177

  • engine-recorder: script for docker healthchecks aura#335

Changed

  • aura: More basic dashboard-clock Docker Compose health check.

  • aura: Documentation: Split user guide sections on show and episode related topics.

  • aura: Documentation: Update provisioning and OIDC pages in admin guide

  • aura: Documentation: User Guide and Developer Guide rework, update of screenshots.

  • aura: Documentation: Update navigation chapter

  • aura: Documentation: Update user and profile chapter

  • aura: Documentation: Update monitoring, media management and broadcast sections.

  • aura: make version does not require Poetry anymore.

  • aura: Make targets for development and production separated for clarity.

  • aura: BREAKING: Cut-Glue File extension setting AURA_BATTERY_CUT_GLUE_FILE_FORMAT is not prefixed with a ‘.’ anymore!

  • aura: BREAKING: Engine-Recorder File extension setting AURA_ENGINE_RECORDER_FILE_FORMAT is not prefixed with a ‘.’ anymore!

  • steering: A schedule’s first_date and the recurrence rule’s by_weekdays must correspond (steering#380)

  • steering: List the name(s) of the show(s) a show collides with in the Conflict Resolutions (steering#381)

  • battery: Cut-Glue background now also job checks for availability of recordings for scheduled repetitions within the next 24h

  • battery: Media ownership is now checked through steering rather than re-implementing the logic in the media store.

  • battery: Claims for users associated with an OIDC authentication token are now cached more efficiently.

  • dashboard: File uploads now always show up with their filename instead of a tagged title.

  • dashboard: The prolongation button is now disabled for as long as the prolongation is in progress.

  • dashboard: Text fields with multiline input now show up with a height of at least two lines.

  • dashboard: The dark mode setting is now hidden as it is not yet fully implemented.

  • dashboard: License selection for media sources is no longer required.

  • dashboard-clock: Improve responsive layout.

  • dashboard-clock: Display AM/PM time suffixes as superscript.

  • dashboard-clock: Extend testing section in README.md.

  • engine: no pre-roll on active intervention, instead delay is set engine#118

  • engine: do not fade out/in same stream/live source during intervention engine#175

Fixed

  • aura: The license fixture for “public domain” does not require an author anymore.

  • aura: Optional arguments for custom audio store and log location in make aura-web.init and make aura-playout.init.

  • aura: Fixed a few absolute image paths in the documentation.

  • steering: Conflict resolution woes (steering#383)

  • steering: showName force-injected into Schedule and TimeSlot representations (steering#384)

  • battery: Cut-Glue file extensions are not prefixed with a ‘.’ anymore

  • battery: The attach_media_source job now gracefully handles steering’s API errors.

  • battery: The BATTERY_LOG_LEVEL env var is now actually being used in the logging configuration.

  • battery: Malformed UUIDs in filters no longer cause internal server errors.

  • dashboard: Open buttons for empty menu dropdowns are now hidden.

  • dashboard: The warning for creating schedules that start in the past now takes the time in addition to the date into account.

  • dashboard: Improved accessibility of HTML editor fields.

  • dashboard: Fixed some actions being erroneously shown to users lacking permissions.

  • dashboard: The account page now has a translation language switch for translated profile content.

  • dashboard: Show names in the mobile nav header support HTML now.

  • dashboard: Time units in duration inputs now accept mixed-case spelling.

  • dashboard: Duration inputs enforce positive values now.

  • dashboard: The image dialog no longer has bright scroll bars.

  • dashboard: Button states in the image editor are more discernible.

  • dashboard: The auto-enabled crop mode for aspect-ratio enforcement no longer requires interaction with the crop rectangle.

  • dashboard: The image editor crop mode validation is now accessible.

  • engine: handle engine-core socket CoreConnection errors engine-core#114

  • engine: heartbeats where not sent on a frequency of 1 engine#178

  • engine-core: Deprecation warning “on_connect” got fixed

  • engine-core: Deprecation warning “insert_metadata” got fixed

  • engine-recorder: rounding issues in filenames get cleaned through periodic filename sanitisation engine-recorder#49

[1.0.0-beta1-hotfix1] - 2026-03-21

Fixed

  • steering: Import of show fixtures result in broken UI (aura#587).

  • battery: Users will now automatically receive the correct permissions for creating pipelines and uploading files (aura#586).

[1.0.0-beta1] - 2026-03-12

The release of Beta 1 — Bold Bison 🦬 marks a major milestone for AURA. As the software suite enters Beta, we are officially “going green”.

We are trading in the fossil-fuelled Tank for our new Python container service: Battery. This transition allows us to “recharge” our infrastructure with:

  • Media Store: A dedicated service for managing and processing media. It replaces the Go-based uploader that previously fuelled AURA from the Tank.

  • Cut & Glue: A service for cropping show recordings, now integrated into the common container.

Battery provides a renewable foundation for future micro-services and long-running jobs, while streamlining our tech stack for better maintainability.

Please read the Battery migration guide below for more information.

Contributors

Huge thanks to everyone contributing to AURA, whether in your spare time or as part of your work at community radio stations.

This time, we’d like to give a special shout-out to:

Breaking Changes

Many environment variables have been added or replaced. Consider updating your configuration based on the new sample.env files and consult the docs.

These changes only affect specialized API usage:

  • The tank and tank-cut-glue services have been replaced by the new battery service. Consider checking the Battery API documentation for the new endpoints.

  • Engine API endpoints for retrieving track service information changed from /engine/api/v1/trackservice to /engine/api/v1/playlog, /engine/api/v1/trackservice/current to /engine/api/v1/playlog/current. Use the filter containsMusic=true to only retrieve music tracks.

  • Not breaking per se, but internal logic simplification – Steering now automatically creates and assigns Media objects along with Episode, Show, and Schedule objects. This means that when working with Media Source via the API, you can always expect an existing Media object you can relate to.

Battery Migration

Battery replaces the Tank service in AURA. Migrating files is currently not supported. This guide covers the necessary changes for getting the services back up, as a few manual steps are required for existing AURA installations.

  1. Run make setup-aura-web-dirs to create the log directory for Battery

  2. New environment variables have been added. Update any existing .env file with the new variables in sample.env and remove any old variables related to Tank.

New variables in aura-web .env file are:

AURA_BATTERY_VERSION=1.0.0-beta1
AURA_BATTERY_DB_NAME=battery
AURA_BATTERY_DB_USER=battery
AURA_BATTERY_OIDC_CLIENT_ID=283718

Generate a secret with openssl rand -hex 16 for each of these new variables:

AURA_BATTERY_MEDIA_STORE_STEERING_TOKEN=
AURA_BATTERY_SECRET_KEY=
AURA_BATTERY_DB_PASS=
AURA_BATTERY_OIDC_CLIENT_SECRET=
AURA_DASHBOARD_CLOCK_BATTERY_TOKEN=
AURA_ENGINE_BATTERY_TOKEN=

In case you are using aura-playout, add the value of the AURA_ENGINE_BATTERY_TOKEN to your playout .env file:

AURA_ENGINE_BATTERY_TOKEN=<value of AURA_ENGINE_BATTERY_TOKEN from aura-web>
  1. Restart AURA Web

Wait for the services to settle. You might see an exception from one of Battery’s workers with regard to the database. This happens on the first start and the worker will recover automatically once the Battery service is up.

  1. Run the following command manually in your shell:

docker compose exec steering /bin/sh -c 'steering create_oidc_client battery confidential --client-id "$BATTERY_OIDC_CLIENT_ID" --client-secret "$BATTERY_OIDC_CLIENT_SECRET" -r code -u "$BATTERY_CALLBACK_BASE_URL"'

This registers the Battery service as an OIDC client with Steering.

That’s it. Please report any issues you encounter.

Changelog

battery: Initial release.

Added

  • aura: Documentation: Auth section stub in the Developer Guide.

  • aura: Documentation: Admin section in the User Guide features basic info on background jobs.

  • aura: Documentation: Battery installation guide.

  • aura: Documentation: Cut-Glue specific settings

  • aura: Battery service and its configuration.

  • aura: Health check API endpoint under /clock/api/health.

  • aura: AURA Web health check for Dashboard Clock now checks against the new health API endpoint.

  • aura: Log file for Dashboard Clock under logs/dashboard-clock.log.

  • aura: New env var AURA_DASHBOARD_CLOCK_LOG_LEVEL in AURA Web.

  • aura: New env var AURA_BATTERY_CUT_GLUE_FILE_FORMAT in AURA Web

  • aura: AURA-Playout dev options AURA_ENGINE_VIRTUAL_* to enable purely virtual audio setup

  • aura: Documentation: added virtual audio device developer documentation

  • aura: Added steering and battery dependencies to dashboard-clock in AURA Web.

  • aura: Documentation on media source inheritance.

  • aura: Documentation on contributors field concepts.

  • aura: Documentation on moved broadcast dates.

  • aura: Documentation on license information as part of CBA Media URL import.

  • aura: Documentation on using the required language-code object format for fixtures.

  • aura: Documentation on LDAP authentication via email.

  • aura: Documentation on mapping LDAP groups to Django group using group mirroring.

  • aura: Documentation on unused permission fields.

  • aura: Documentation on show deactivation and effect on first and last broadcast date.

  • aura: Documentation on timeslot expansion UI and manual interventions required due to conflicts.

  • steering: Run tests against SQLite and PostgreSQL (steering#336)

  • steering: Option to duplicate Django group via UI, instead of rename only (steering#366)

  • steering: Filter ?hasCbaId to /episodes API endpoint (steering#374)

  • dashboard: The list of broadcasts now displays the original broadcast date in case the broadcast is a repetition.

  • dashboard: The episode assignment dialog now supports filtering based on other criteria like non-broadcast episodes or episodes from a certain point in time.

  • dashboard: The program week calendar entries now show a repetition icon for repetitions.

  • dashboard: The program day calendar now shows the original broadcast date for repetitions.

  • dashboard: The selection of languages for translation is now based on the language assignments of the context (show, episode) if the radio’s translation language source has been set to Assigned Languages.

  • dashboard: Translatable fields are easier to identifier now.

  • dashboard-clock: Display file name for upcoming media sources, as a fallback for metadata.

  • dashboard-clock: Display repetition status for episodes.

  • dashboard-clock: Clock is now compatible with the Battery API. Battery is also part of the health check logic. For connectivity it requires the AURA_DASHBOARD_CLOCK_BATTERY_TOKEN environment variable to be set.

  • dashboard-clock: Three analogue clock modes are now available for selection: Click the clock to switch between them (clock face with logo background, pure clock face and logo-only view).

  • dashboard-clock: When hovering the logo, the app version is displayed.

  • dashboard-clock: Marquee effect when media doesn’t fit container

  • dashboard-clock: Media source type for media sources is now displayed.

  • dashboard-clock: When cover image is not in 1:1 aspect ratio, contain the image in cover area and render blurred background to fill the gaps

  • dashboard-clock: Add env var AURA_DASHBOARD_CLOCK_PLAYLOG_QUERY_OFFSET_SECONDS to configure an offset to include playlogs with too early start times (defaults to 1.0 seconds).

  • dashboard-clock: Add Cache-Control headers and server-side caching to API responses for program, settings, and health endpoints.

  • dashboard-clock: Log file for Dashboard Clock (dashboard-clock.log).

  • dashboard-clock: Introduce AURA_DASHBOARD_CLOCK_LOG_LEVEL for configurable debug log suppression.

  • dashboard-clock: Enhance error logging across SSE endpoints by including API URLs and detailed error information.

  • dashboard-clock: Health check API endpoint (/api/health).

  • engine-api: PATCH/PUT endpoints to update the duration of a playlog

  • engine-core: Updated Liquidsoap 2.4.0 to 2.4.1

  • engine-core: Added native m3u support

  • engine-core: Added automatic creation of virtual audio interfaces for testing purposes

Changed

  • aura: Sample configuration files updated.

  • aura: Sample fixtures update Station settings now provide options to language and translation settings. All translatable fields are now multi-language.

  • aura: Breaking: Engine API endpoints for retrieving track service information changed from /engine/api/v1/trackservice to /engine/api/v1/playlog, /engine/api/v1/trackservice/current to /engine/api/v1/playlog/current. Use the filter containsMusic=true to only retrieve music tracks.

  • aura: Update documentation on mobile browser support.

  • steering: Include Steering logs in stdout / Docker logs (steering#342)

  • steering: Replace Poetry with uv (steering#359)

  • steering: Create and assign media along with Episode, Show, and Schedule (steering#375)

  • dashboard: The media uploader gives more feedback on the upload progress.

  • dashboard: When creating a repetition schedule, the recurrence rule will now default to the recurrence rule of the original schedule.

  • dashboard: The edit past switch in the program week calendar has been removed.

  • dashboard: Users who are allowed to change the past or current program will be shown a soft warning instead.

  • dashboard-clock: Instead of Engine API trackservice endpoint, the playlog endpoints are now used.

  • dashboard-clock: Reworked health status information: move mouse over the health status dot to see detailed information.

  • dashboard-clock: Active media source has no pulsing dot anymore, but a pulsing media type.

  • dashboard-clock: Overall responsive layout and styling improvements. The analog clock is now more contrasty.

  • dashboard-clock: Improved media source whitespace handling and pill divider alignment.

  • dashboard-clock: When no playlogs are available, past and current planned media sources are not displayed anymore for more clarity. Instead a badge, indicating that there is no playout connection, is displayed.

  • dashboard-clock: Prevent redundant SSE emissions for health and broadcasts by tracking last sent data.

  • dashboard-clock: Performance improvements by fetching episode, file metadata, and playlogs in parallel.

  • dashboard-clock: Improved SSE communication between clock client and server, to properly handle disconnections and automatically reconnect after 10 seconds.

  • dashboard-clock: Added UI feedback for connection loss: dashboard is hidden, loading spinner and error badge are shown.

  • dashboard-clock: When using English date/time format, AM/PM in the digital clock is now displayed as superscript.

  • dashboard-clock: Label for remaining time is now “COUNTDOWN”.

  • engine: engine now uses engine-cores native m3u support instead of its own implementation

  • engine: engine now uses the new battery media-store instead of tank

  • engine-api: Instead, the playout endpoint is now readable without authorization

  • engine-api: and can be filtered with the containsMusic=true query parameter.

  • engine-core: engine-core now updates the duration of the previous playlog on engine-api to prevent overlaps

Removed

  • engine-api: Breaking: The trackservice endpoint has been removed.

  • aura: Tank service and its configuration.

  • aura: Tank Cut & Glue service and its configuration.

  • aura: Documentation: Tank references in the installation and developer guides.

  • dashboard-clock: AURA_ENGINE_API_TOKEN is no longer required to access engine-api

  • dashboard-clock: **Breaking:**Tank API is no longer supported.

  • dashboard-clock: Removed footer section.

Fixed

  • aura: Fix “/engine” route not passing query params (aura#552)

  • aura: Installing aura-web from main branch fails exec: “poetry”: executable file not found (aura#551)

  • aura: Exposed port of Dashboard Clock.

  • aura: Documentation: Fixed an issue with line-in channel configuration index.

  • steering: Error while editing the duration of an episode currently broadcast (steering#358)

  • steering: Server error after clicking annual prolonging button (steering#360)

  • steering: The Steering profiles endpoint ignores the isActive parameter (steering#362)

  • steering: Fixture samples missing translated fields, resulting in broken API endpoints (steering#363)

  • steering: Aura Web Docker compose starting issue with can (steering#364)

  • steering: Re-broadcast based on repetition schedule creates its own episode, rather referencing the original one (steering#365)

  • steering: RuntimeWarning about DateTimeField receiving a naive datetime (steering#367)

  • steering: Annual Prolongation: Conflict with timeslot which should not exist per schedule (steering# 368)

  • steering: Django permission dialog comes after every login now (steering#369)

  • steering: steering-worker errors (steering#373)

  • dashboard: CBA Ids are correctly saved now

  • dashboard: The breadcrumb navigation no longer overflows for some dynamic content

  • dashboard-clock: Recalculate duration components using total seconds and prevent negative time.

  • dashboard-clock: SSE connection is now properly closed on client disconnect.

  • dashboard-clock: German translation for media inheritance.

  • dashboard-clock: Fixed false positive warning “Active media source type mismatch” when no playlogs are available.

  • engine: stream sources with shorter duration than the whole timeslot did not end on time

  • engine: error kept beign logged after updating an invalid stream

  • engine: fix case in which stopping line in sources lead to error

  • engine: infinite play attempts on broken sources with unknown PlayState

  • engine: misleading error log ‘Bad Request’ on ConnectionError

  • engine: No playlog for scheduled episodes with stream sources where posted in some cases

  • engine: playlog duration was too long on items that where started past start time

  • engine-api: The API docs now generate a usable server URL.

  • engine-core: several ambiguous variable names where changed to prevent warnings

  • engine-recorder: ‘jack’ source format failed because no jack daemon was available

[1.0.0-alpha9] - 2025-12-19

We are pleased to announce Alpha 9 — Laughing Llama 🦙. This release introduces a range of usability, scheduling, and architectural improvements. Key highlights are outlined below; additional changes are documented in the changelog further down.

Program and Content Management

The Dashboard now supports multi-language input for show, episode, and profile data, making it easier to reach a broader audience. The Dashboard has been significantly improved for mobile devices and is now largely usable on phones and tablets.

Scheduling has been extended with repetition schedules, which are schedules linked to existing ones and enable automatic re-broadcasting of previous content. The calendar and profile views have been enhanced with additional filters and expanded information display.

Prolongation view

A new prolongation view allows program managers to perform annual timeslot extensions more efficiently.

The Studio Clock has also received several improvements, including visibility into the currently active episode and the media source being played.

Extended studio clock

Playout and Recording

Playout now supports configuring multiple line-in channels in combination with the auto-connect feature. During episode playout, operators have additional live intervention options to prevent dead air or incorrect audio broadcast.

With numerous fixes and improvements to the Engine, along with the upgrade from Liquidsoap 2.2.5 to 2.4.0, major stability improvements have been achieved for the playout components.

The recorder now supports the amd64, arm/v7, and arm64 architectures and is ALSA-compatible by default, allowing installation on single-board computers like Raspberry Pi.

Architecture

To improve scalability and future readiness, AURA now integrates a messaging system based on NATS, plus a new proxy service named can. This enables service clients to receive data update notifications more efficiently and reliably.

AURA Web now integrates the lightweight task queue huey, providing a solid foundation for executing background jobs such as annual timeslot extensions and other long-running tasks.

Breaking Changes

Due to changes affecting multiple environment variables, we strongly recommend updating your entire .env files to match the structure of the provided sample.env files.

Additionally, the structure of the sample fixtures has changed to support multi-language content. Please update any custom radio fixtures to ensure your installation continues to function correctly.

The OIDC client configuration for the Dashboard has changed. When upgrading an existing installation, update the client configuration to use the Authorization Code Flow (code). Refer to the documentation for details.

Environment variable changes:

  • AURA Playout environment variables AURA_ENGINE_INPUT_CHANNEL_LEFT changed to AURA_ENGINE_INPUT_CHANNEL_0_LEFT, AURA_ENGINE_INPUT_CHANNEL_RIGHTchanged to AURA_ENGINE_INPUT_CHANNEL_0_RIGHT.

  • New required environment variable AURA_PLAYOUT_HOST for Web and Playout. It enables API communication between multiple AURA instances and replaces AURA_ENGINE_API_INTERNAL_URL.

  • New variable AURA_NATS_API_TOKEN needs to be set, to configure the new NATS messaging system integration.

Changelog

Added

  • aura: Engine Recorder Docker Image is now available as a MultiArch build, supporting amd64, arm/v7 and arm64 architectures.

  • aura: Added messaging system powered by NATS. Administrators need to set the AURA_NATS_API_TOKEN in the environment file.

  • aura: Configuration of multiple Line-In channels through env vars AURA_ENGINE_INPUT_CHANNEL_0_LEFT/RIGHT up to AURA_ENGINE_INPUT_CHANNEL_4_LEFT/RIGHT.

  • aura: Playout intervention options: possibility to modify currently active timeslots.

  • aura: Documentation on translations for multi-language content.

  • can: Initial release.

  • tank: Provide ability to use /etc/aura/tank.yaml as an optional configuration override (tank#51)

  • tank: Option for batch query for “files” API endpoints by passing list of IDs (tank#104)

  • dashboard: The dashboard now (mostly) works on phones and tablets.

  • dashboard: Users can now add translations for texts used in shows, episodes, and profiles.

  • dashboard: The login form now shows detailed error messages for failed logins.

  • dashboard: The per-page-schedule-count in the schedule list is now configurable.

  • dashboard: Users can now create repetition schedules.

  • dashboard: The media info now exposes filenames of uploaded files.

  • dashboard: The profile list can now be filtered so that it only shows profiles that have an account.

  • dashboard: We now display assigned shows in the profile list.

  • dashboard: The CBA media resolver will now add credits and license information to created media sources.

  • dashboard: The dashboard’s session credentials are now cleared when logging out from the steering admin interface.

  • dashboard: Image uploads now require an explicit confirmation in regard to image usage rights.

  • dashboard: The program week calendar can now be filtered to show empty episodes.

  • dashboard: The list of associated broadcasts in the episode/ broadcast detail page now links to the

  • dashboard: individual broadcast detail pages.

  • dashboard: A new page for prolonging the radio’s program and schedules has been added.

  • dashboard-clock: Display stream URL for stream media sources.

  • dashboard-clock: New badge indicating states of currently playing media source (General media source name, automatic media scheduling as part of the fallback show feature, fallback due to no media sources, fallback due invalid media source, media inheritance source).

  • dashboard-clock: Station logo is now displayed in the main section, with radio station name as a fallback.

  • dashboard-clock: Current broadcast now also displays episode details.

  • dashboard-clock: Countdown and current media source badge feature a “On Air” label, including “pulsing dot” for better focus.

  • dashboard-clock: Some messages now feature icons for better alert state communication.

  • dashboard-clock: Stop watches for debugging and performance analysis.

  • dashboard-clock: More translated text labels.

  • engine: Playout intervention: possibility to modify currently active timeslots engine#46, engine#48, engine#49

  • engine: Play re-broadcast as part of repetition schedule engine#162

  • engine-core: Configuration of multiple Line-In channels through env vars AURA_ENGINE_INPUT_CHANNEL_0_LEFT/RIGHT up to AURA_ENGINE_INPUT_CHANNEL_4_LEFT/RIGHT

Changed

  • aura: Simplified setup for localhost installation in development and testing environments and updated documentation accordingly.

  • aura: Documentation on required specific for M3U file structure currently required: Every file entry needs a preceding #EXTINF:191,Artist Name Track Title line entry. Streams are not allowed contents.

  • aura: Documentation on container and database operations extended.

  • aura: Breaking: Structure of sample-fixtures has changed, supporting multi-language content now. Update any custom radio fixtures, in order to keep your installation working.

  • aura: Breaking: OIDC client configuration for Dashboard changed. When upgrading an existing installation change client configuration to code (Authorization Code Flow).

  • aura: Improved documentation on various environment variable settings for AURA Web and Playout.

  • aura: Updated Liquidsoap 2.2.5 to 2.4.0.

  • aura: Breaking Changed env var AURA_ENGINE_INPUT_CHANNEL_LEFT to AURA_ENGINE_INPUT_CHANNEL_0_LEFT.

  • aura: Breaking Changed env var AURA_ENGINE_INPUT_CHANNEL_RIGHT to AURA_ENGINE_INPUT_CHANNEL_0_RIGHT.

  • aura: engine-recorder uses ALSA by default, PipeWire can be enabled optionally.

  • tank: Rename user in Dockerfile from app to aura (tank#76)

  • dashboard: [BREAKING] The OIDC authentication flow for the dashboard changed from id_token token to code.

  • dashboard: This requires a change in the steering configuration. Open the

  • dashboard: steering client configuration

  • dashboard: for the dashboard, select the code response type and save the changes.

  • dashboard: Page layouts are now more consistent across the dashboard.

  • dashboard: The navbar has been redesigned to be more consistent and pretty.

  • dashboard: Filter, order, and pagination parameters are now mostly stored in the URL making them shareable.

  • dashboard: The show name field now uses the HTML editor.

  • dashboard: The image browser only displays images that are owned by or related to the current user.

  • dashboard: The list tables now all show 12 items by default.

  • dashboard: The timeslot move/shorten/extend dialogs have been merged into a single dialog.

  • dashboard: The media source editor layout has been changed to be more consistent.

  • dashboard: The option to apply a solution to all conflicts with a schedule has been improved so that

  • dashboard: it is obvious that it has been applied.

  • dashboard: The week calendar’s resolution is now saved as a preference.

  • dashboard: Various small improvements.

  • dashboard-clock: Remaining broadcast time bigger and more prominent.

  • dashboard-clock: Longer minute hand for analogue clock, improve general contrast

  • dashboard-clock: Service status widget now updating state independent of other API requests.

  • dashboard-clock: Improved query performance: Using batch requests where available and SSE communication within clock client-server.

  • dashboard-clock: Basic responsive layout, alignment and font size improvements.

  • dashboard-clock: Instead of 3s, API data is now refreshed with a 900ms delay.

  • dashboard-clock: Improved footer.

  • engine-core: Updated Liquidsoap 2.2.5 to 2.4.0

  • engine-core: Breaking Changed env var AURA_ENGINE_INPUT_CHANNEL_LEFT to AURA_ENGINE_INPUT_CHANNEL_0_LEFT

  • engine-core: Breaking Changed env var AURA_ENGINE_INPUT_CHANNEL_RIGHT to AURA_ENGINE_INPUT_CHANNEL_0_RIGHT

  • engine-recorder: Use ALSA by default, allow adding PipeWire optionally engine-recorder#47

Removed

  • aura: Warning about Ogg audio file upload issues in Firefox this is now supported by Firefox and Dashboard provides some fix on top.

  • aura: Obsolete environment variable AURA_ENGINE_API_INTERNAL_URL.

Fixed

  • aura: Breaking: New required environment variable AURA_PLAYOUT_HOST for Web and Playout. It enables API communication between multiple AURA instances and replaces AURA_ENGINE_API_INTERNAL_URL (aura#515).

  • aura: Documentation: Remove environment variable not required for playout config.

  • aura: Documentation: Fixed an issue with line-in channel configuration index.

  • tank-cut-glue: /etc/aura/tank-cut-glue.yaml was not loaded within aura-web setup.

  • tank-cut-glue: Wrong Steering API url used during timeslot lookup (tank-cut-glue#34).

  • tank-cut-glue: adapt data handling to steerings new list response format

  • dashboard: Multiple text overflow issues have been fixed.

  • dashboard: The dashboard version no longer shows a -dirty suffix.

  • dashboard: The HTML editor now produces better and less verbose HTML.

  • dashboard: Shows are now ordered by their name, not their slug.

  • dashboard: For dates that don’t round to a full minute, the seconds are now displayed everywhere.

  • dashboard: Underlined content is no longer stripped in the HTML editor.

  • dashboard: Changes to media and media sources are now picked up in the calendar views.

  • dashboard: The week filter in the week calendar now works around the turn of the year.

  • dashboard: The import logs no longer wrap the time column causing every log line to take up at least two lines.

  • dashboard: Video files can now be uploaded as audio, working around a bug in Firefox.

  • dashboard: The drag button in the media editor is now hidden if there is only one media source.

  • dashboard: The alignment of the conflict resolver dialog has been improved to work on smaller screens.

  • dashboard: There is no longer a stray media source label when the media sources are inherited.

  • dashboard: Various small fixes.

  • engine: Scheduling MP3 stream fails engine#152

  • engine-api: AURA_ENGINE_API_LOG_LEVEL and AURA_ENGINE_API_LOG_FILE now work as expected.

  • engine-core: File based media not played after queue got cleared engine-core#101

  • engine-core: Wrong playlist_folder path in engine-core.yaml engine-core#95

  • engine-core: Engine-Core fails to play Fallback in some edge cases engine-core#90

  • engine-core: Disabled fallback source triggers additional track updates engine-core#24

  • engine-core: Fallback plays in between scheduled media-sources of same episode engine-core#100

  • engine-core: Fallback source not detected in playlog engine-core#99

  • engine-core: Some streams start playing, but missing playlog entries engine-core#98

  • engine-core: Wrong track duration posted in playlog engine-core#89

[1.0.0-alpha8] - 2025-10-01

The release of Alpha 8 — Attuned Aardvark 🐷 brings together several essential updates.

AURA Playout & Recording Back on Track

Thanks to our new team member, Leon, the playout services are once again fully compatible with the AURA API. This means you can resume playout testing with confidence.

But that’s not all: the software suite now includes the Cut & Glue agent, which automatically creates second-accurate episode recordings in the background using your block recordings.

This enhancement allows you to manually schedule episode repetitions based on previous episode recordings – completely automated. We encourage you to give this feature a try!

Studio Clock Overhaul

The studio clock, available at /clock, has received a complete overhaul. In addition to the analog clock, it now includes:

  • A digital clock, including the current date.

  • An episode countdown, starting to blink in the last 10 seconds.

  • A display of the next two upcoming episodes.

You can customize the clock dashboard branding, such as station name and logo, in your radio station settings. It automatically localizes text and date-time information based on your settings (English, German).

Additionally, the health of your AURA instance is now visualized with service status indicators for Steering, Engine, and Tank.

Studio Clock

Powerful Conflict Resolution Interface

Alongside countless UI feature additions and improvements, the biggest achievement is the new conflict resolution interface.

You can now easily navigate timeslot collisions and visually select the appropriate resolution — all while staying within the calendar view.

As an added bonus, the new Help switch assists you in resolving conflicts with ease.

Conflict Resolution UI

Breaking Changes

  • All .env configuration files have many settings changed. Recreate the configuration or carefully diff compare existing ones. Find details in the changelog below.

  • The audio store folder structure is updated and relevant init scripts are adapted. Either manually update the paths or re-install AURA. AURA_AUDIO_STORE_FALLBACK got removed, instead AURA_AUDIO_STORE_POOL is now used. It should point to audio/pool instead of audio/pool/fallback.

  • For ease of installation, we recommend deleting Tank volumes and any existing uploads. To keep using files stored before this version, ensure the format field in the files table has the correct value: https://gitlab.servus.at/aura/tank/-/issues/96#note_25596

  • Host/Host+ roles now require a change_timeslot permission. This permission is automatically provided with new installations. You can also reset to default permissions on existing installations.

Known Issue

For some local installations (aura.local) there is some Tank OIDC connectivity issue. If you experience such problem, check the AURA Web Installation Guide on how to temporary set the extra_hosts for Tank. After aura#467 is fixed the workaround can be removed.

Changelog

Added

  • aura: Known Issue: Info on a known issue with TANK OIDC connection in aura.local environment (see AURA Web installation guide or aura#467).

  • aura: Documentation on browser-related date-time format.

  • aura: Documentation on how to use the new “Import from CBA” feature.

  • aura: Documentation on new radio station settings (field limitations and HTML support).

  • aura: Admin docs now mention cropping agent related information (Cut & Glue).

  • aura: Documentation on the studio clock.

  • aura: Documentation on the new conflict resolution interface.

  • aura: Add Tank Cut&Glue service to the AURA Web Docker Compose. Available block recordings are now automatically cut and glued, matching the exact episode duration.

  • aura: Documentation: Info on Icecast client configuration for the playout.

  • aura: Add an aura-recorder config option to enable ALSA support (engine-recorder#46).

  • steering: Category subtitle and description are now editable in the administration backend.

  • steering: Update categories fixture to provide a default value for subtitle.

  • steering: Station Settings: Provide fields to store max length configuration for episode/show fields (steering#248)

  • steering: Media Source Inheritance to be resolved by steering (steering#272)

  • steering: Implement Media Source API in steering (steering#276)

  • steering: Testcases Roles and Permissions (steering#287)

  • steering: Django Authentication via Email (Local + LDAP) (steering#289)

  • steering: API Docs: Infos on available filters for endpoints (steering#294)

  • steering: Implement update of timeslot start/end (steering#295)

  • steering: Add Radio Station config for “default show media source” template (steering#300)

  • steering: Breaking: Host/Host+ roles now require a change_timeslot permission.

  • tank: The File model has a Format field (tank#96)

  • tank: Config option to disable normalization for uploads (tank#92)

  • tank: Config option to disable conversion for uploads (tank#96)

  • dashboard: Users can now edit the media of already broadcast episodes.

  • dashboard: Users can now shorten and extend broadcasts.

  • dashboard: The dashboard now shows its exact version number, not only the

  • dashboard: most recently released version.

  • dashboard: Sentry or Sentry-compatible tools like GlitchTip can now be used

  • dashboard: to monitor the dashboard.

  • dashboard: Duration inputs can now be in-/decremented with arrow keys

  • dashboard: and the mouse wheel.

  • dashboard: CBA URLs can now be imported directly via the

  • dashboard: URL import dialog in the media editor.

  • dashboard: Profiles in the profile selection field now link directly to the

  • dashboard: profile details page.

  • dashboard: The profile details page now lists the shows a profile is assigned to.

  • dashboard: The first/ last broadcast of a show can now be seen on its settings page.

  • dashboard: Sort operations that typically involve dragging (e.G. for media sources)

  • dashboard: now support simple up/down buttons when the user uses a keyboard.

  • dashboard: The broadcast and schedule menu headers now link to their respective

  • dashboard: detail pages.

  • dashboard: Profiles can now be created from the profile list page.

  • dashboard: Profile previews now show a little bit more information about the profile.

  • dashboard: The conflict resolution now offers more options to resolve certain schedule

  • dashboard: conflicts, shows the overall progress and other relevant information.

  • dashboard-clock: Display a countdown for the current show.

  • dashboard-clock: Display the current date.

  • dashboard-clock: Display and additional digital clock.

  • dashboard-clock: Display available state of connected services (API of Steering, Tank, Engine).

  • dashboard-clock: Display “later timeslot”, which is the timeslot after the next timeslot.

  • dashboard-clock: Media played from the Station Fallback Pool is visually marked as music tracks.

  • dashboard-clock: All UI text is now translated in English and German. The used language is determined by the browser locale setting.

  • engine: Ability to re-broadcast episodes from recordings provided by tank-cut-glue (engine#150)

  • engine: Config option record_date_format to specify the formatstring used by engine-recorder

  • engine-recorder: Added an option to enable ALSA support (engine-recorder#46)

Changed

  • aura: Simplified documentation on how to configure audio interface channels for playout.

  • aura: Breaking: All .env configuration files have many settings changed. Recreate the configuration or carefully diff compare existing ones.

  • aura: Breaking: The audio store folder structure is updated and relevant init scripts are adapted. Either manually update the paths or re-install AURA.

  • aura: Breaking: Many service configuration files have changed. If you are using an service config override, check for changes.

  • aura: Breaking: AURA_AUDIO_STORE_FALLBACK got removed, instead AURA_AUDIO_STORE_POOL is now used. It should point to audio/pool instead of audio/pool/fallback.

  • aura: The fixture radioettings.json got extended.

  • aura: Update categories fixture to provide a default value for subtitle.

  • aura: Datetime format of show and block recordings got changed

  • aura: Add icecast stream output configuration example to admin aura-playout install manual

  • steering: Upgrade Django to 5.2, the next LTS version (steering#271)

  • steering: Change the ordering of Schedules (steering#302)

  • steering: Compute startand end-date of a show and provide via API (read-only) (steering#304)

  • steering: Timeslot creation with automatic episode association (steering#310)

  • tank: Breaking: Changed API user engine to read-api and env var AURA_ENGINE_SECRET to AURA_TANK_API_SECRET. This secret is now used for Engine and Dashboard Clock.

  • tank: Breaking: To keep using files stored before this version, ensure the format field in the files table has the correct value: https://gitlab.servus.at/aura/tank/-/issues/96#note_25596

  • tank: Update Go to version to 1.24 (tank#89)

  • tank: Update Audio Store Structure in tank (tank#94)

  • tank: /files route now exposes format (tank#96)

  • tank-cut-glue: Changed the aura user and group ID from 2872 to 872.

  • tank-cut-glue: Use Alpha 8 APIs to provide compatibility with AURA-Web (tank-cut-glue#32)

  • tank-cut-glue: Adapted sample configs to match current AURA settings (tank-cut-glue#31)

  • tank-cut-glue: Changed default date format

  • tank-cut-glue: made check interval and audio_block_interval configurable

  • dashboard: All inputs dealing with numbers now use tabular nums, making

  • dashboard: the input spacing more consistent.

  • dashboard: Moving broadcasts (as well as shorten/extend) now supports the full

  • dashboard: conflict resolution instead of only deleting the conflicting broadcasts.

  • dashboard: Loading indicators have been unified across the dashboard.

  • dashboard: The profile section on the user settings page will now be displayed even

  • dashboard: if the user is not assigned to any profiles.

  • dashboard: Layout and visual cues of the broadcast/schedule menu have been changed

  • dashboard: to clarify the information hierarchy.

  • dashboard: Entries in the day calendar no longer have icons signifying some

  • dashboard: sort of relevance.

  • dashboard: The layout of the schedule creation dialog has been updated to be more

  • dashboard: consistent with other dialogs.

  • dashboard: The dashboard no longer shows an end date for one-time schedules.

  • dashboard-clock: Huge refactoring how API sources are used: Instead of retrieving data from Engine API only, data is now also fetched from Steering and Tank directly.

  • dashboard-clock: Overall look & feel and responsiveness. Improved color coding concept.

  • dashboard-clock: The clock dashboard is driven by the radio station settings in Steering.

  • engine: Breaking: Generalized Tank API user engine to read-api and env var AURA_ENGINE_SECRET to AURA_TANK_API_SECRET

  • engine: Initial folder structure of the audio store got updated (aura#349)

  • engine: Breaking: Changed env var AURA_AUDIO_STORE_SOURCE to AURA_AUDIO_STORE_UPLOAD

  • engine: Breaking: Changed env var AURA_AUDIO_STORE_PLAYLIST to AURA_AUDIO_STORE_M3U

  • engine: Breaking: Changed config option source_folder to upload_folder

  • engine: Breaking: Removed config option source_extension

  • engine: Updated Engine to use Alpha 8 APIs to provide compatibility with AURA-Web (engine#118, engine#164)

  • engine: File upload extensions are now provided by tank (engine#165)

  • engine-api: Engine-API has been ported to Django.

  • engine-api: The trackservice endpoint now only returns music.

  • engine-api: The playlog endpoint now requires authentication.

  • engine-api: Token, basic, and session authentication are supported.

  • engine-api: The health and synchronization endpoints have been removed.

  • engine-core: Initial folder structure of the audio store got updated. (aura#349)

  • engine-core: Breaking: Changed env var AURA_AUDIO_STORE_SOURCE to AURA_AUDIO_STORE_UPLOAD.

  • engine-core: Breaking: Changed env var AURA_AUDIO_STORE_PLAYLIST to AURA_AUDIO_STORE_M3U.

  • engine-core: Breaking: AURA_AUDIO_STORE_FALLBACK got removed, instead AURA_AUDIO_STORE_POOL is now used. It should point to audio/pool instead of audio/pool/fallback.

  • engine-core: Updated Engine-Core to use Alpha 8 APIs to provide compatibility with AURA-Web. (engine#118)

  • engine-core: Reworked the way playlog information is passed from Engine, through Engine-Core to Egnine API

  • engine-recorder: Updated default datetime format

Removed

  • aura: Remove obsolete configuration file “dashboard-clock.json”.

  • aura: Documentation: Remove outdated “Organize Schedules and Timeslots” page.

  • steering: Length limitation for topics (steering#292)

  • engine: Internal media source inheritance logic (engine#157)

Fixed

  • aura: Documentation: Line input and output channel assignment was swapped in playout configuration steps.

  • aura: Fix proxy-redirect when using external OIDC client (contributed by Unicode IT).

  • aura: Documentation: Assignment of AURA-Playout line in/out channels was swapped

  • steering: All models can now be filtered by isActive flags, for example ?isActive=true or ?isActive=1.

  • steering: Media Permission Host (steering#288)

  • steering: Conflict Resolution: In some cases, not all options for resolution are displayed (steering#291)

  • steering: Categories: Some data model fields are missing in Django UI and Fixtures + Filter by isActive not working (steering#293)

  • steering: Adding new Music Focus through the admin interface raises an IntegrityError (steering#296)

  • steering: Wrong media-source source url in aura-structuredaudio (steering#301)

  • steering: Permission denied on media upload local file (steering#306)

  • steering: Timeslots repetitionOfId not set on /program/playout endpoint (steering#307)

  • steering: Missing GMT+2 on conflict resolution backend time display (steering#315)

  • steering: Schedule and broadcast dates do not correspond (steering#316)

  • tank: Permission denied on media upload local file (tank#95)

  • tank: Uploading files through dashboard assigns metadata from different files (tank#97)

  • tank: CBA media import (tank#98)

  • tank: Media uploads through dashboard fails (#100)

  • tank-cut-glue: use unix timestamp for AudioBlock s_time

  • tank-cut-glue: use WSGI app as entrypoint for prod

  • dashboard: Various accessibility issues have been fixed.

  • dashboard: Some fields that should have been hidden for some users are now hidden.

  • dashboard: An edge case that prevented the sorting of media sources has been fixed.

  • dashboard: The dashboard now shows an error if the media source order cannot be updated.

  • dashboard: Some issues where long show names cause overflow have been fixed.

  • dashboard: Seconds can now be added to time inputs and are displayed across the app.

  • dashboard: The conflict resolution for a new schedule now returns to the schedule

  • dashboard: creation dialog if the conflict resolution has been aborted.

  • dashboard: Native control colors now align with the rest of the UI.

  • dashboard-clock: Issue where next timeslot is not displayed correctly in some cases.

  • dashboard-clock: Issue where the UI flickers on updates.

  • engine: Removed deprecated @property attribute for compatibility with newer python versions (engine#163)

  • engine: Reworked Automated Fadeout to prevent errors (engine#151)

  • engine: Infinite errors on failing http stream sources (engine#154)

  • engine: make api provided outdated commandline flags to openapi-python-client

  • engine-core: Playlog timestamp format.

  • engine-core: Channel loudness to low in contrast to other fallback channel audio. (engine-core#23)

  • engine-core: Assignment of line in/out channels are swapped. (engine-core#87)

  • engine-core: Station fallback is posting wrong playlog data to Engine API (engine-core#88)

[1.0.0-alpha7] - 2025-05-23

The release AURA Alpha 7 — Helpful Hedgehog 🦔 brings several enhancements aimed at improving usability and integration. The calendar has been redesigned to provide clearer media source information and now works more smoothly with the show area, resulting in a more consistent and efficient workflow. These changes help unify planning and execution tasks within the application.

Improvements to schedule management offer users better control and reliability. The release also introduces basic LDAP connectivity, offering support of enterprise-level authentication and user management.

Important: This release does still not include an updated version of AURA Playout. Due to limited resources, the playout components are currently incompatible with the AURA API, hence the playout is not working. Attempting to use these services will result in errors. We will provide updates as soon as this situation changes.

Added

  • aura: Documentation: New calendar UI, week and date picker.

  • aura: Documentation: Info on media source states and their meaning in calendar view.

  • aura: Documentation: Updates on multiple changes in the show and calendar view.

  • aura: Documentation: Update info on sidebar, navigation and related information.

  • steering: Store reference of the user uploaded the content for legal purposes, like licensing (steering#230)

  • steering: Extend Steering API documentation for /schedules (steering#237)

  • steering: LDAP config options (environment variables or config file) (steering#266)

  • steering: Provide API to move timeslot (steering#267)

  • tank: Description field to the file model (tank#87)

  • dashboard: It is now possible to span existing schedules when using the mouse to create schedules if

  • dashboard: The action did not start on an existing schedule.

  • dashboard: The conflict resolution dialog now allows users to skip to the next unresolved collision.

  • dashboard: The conflict resolution dialog now allows users to apply a resolution to all applicable collisions.

  • dashboard: A single broadcast date can now be moved to a new start time.

  • dashboard: The day calendar now shows an indicator for repeated episodes.

  • dashboard: The show categories are now listed as part of the day calendar entries.

  • dashboard: Users can now skip to a specific week in the week calendar with the help of a week picker.

  • dashboard: Users can now skip to a specific day in the day calendar with the help of a date picker.

  • dashboard: The week calendar resolution can now be changed either through the select field above

  • dashboard: or by keeping Alt/Option pressed while scrolling in the calendar view.

  • dashboard: When users are logged out during a session, the current URL is retained, and they will be redirected

  • dashboard: to the last page they have used after logging back in again.

  • dashboard: Schedules can now be created and edited in the show area.

  • dashboard: The week calendar entries now show a small indicator icon for missing or invalid media.

  • dashboard: The day calendar entries now show detailed information on the assigned media.

  • dashboard: The week calendar entries can now be filtered/adapted to make it easier to achieve certain recurring tasks.

  • dashboard: Links to detail pages in overviews for shows, broadcast dates, episodes, and schedules now

  • dashboard: cover whitespace and non-interactive content.

  • dashboard: Instead of a modal dialog week and calendar entries now show a dropdown menu that includes

  • dashboard: short but informative info on the broadcast date and schedule, actions, and links to pages in the show area.

  • dashboard: Broadcast date lists in the show area now have a dropdown menu with deep links and common actions.

Changed

  • steering: Extend Steering API documentation for /schedules (steering#237)

  • steering: Rename Django session cookie (steering#260)

  • tank: files route now accepts a description (tank#87)

  • dashboard: The navigation no longer keeps the navigation of the last selected show open.

  • dashboard: This is to avoid confusion.

  • dashboard: Broadcast dates in the calendar now show the actual start and end time

  • dashboard: for dates that start in the week/day prior or end in the week/day after.

  • dashboard: The day and week calendar are now separate pages.

  • dashboard: When creating a schedule, users must now enter a duration instead of an end time.

  • dashboard: The feature to create schedule repetitions has been temporarily deactivated

  • dashboard: pending an improved spec in alpha8.

  • dashboard: Multiple pages received better support for shareable URLs

  • dashboard: (e.g., day/week calendar and pages with broadcast date overviews).

  • dashboard: The title of the show is now always displayed in the week calendar, even for very short events.

  • dashboard: The terms for Sendetermine/broadcast dates and Sendeschema/schedules were unified across the dashboard.

  • dashboard: Day calendar entries now show the episode title (instead of the summary).

Fixed

  • aura: Engine API is now reachable in a distributed setup (aura#421)

  • steering: Oauth2 Authentication returns Error 403 instead of 401 when access_token has expired (steering#177)

  • steering: Correct API documentation for images endpoint (steering#264)

  • steering: Media can only be edited by a Superadmin, independently of who uploaded it Calendar does not render (steering#265)

  • steering: Show ID not considered properly when updating media (steering#268)

  • steering: Endpoint /media returns unordered items (steering#269)

  • steering: Bug: Two timeslots in the calendar appear with the same start time (steering#275)

  • steering: Schedule start/end time mismatch timeslot start/end time (steering#277)

  • steering: Permissions for hosts (steering#283)

  • steering: Timeslot move operations considers self as conflict (steering#284)

  • steering: AURA Web installation with default config not working (steering#466)

  • dashboard: Fixed missing or incorrect translations.

  • dashboard: Fixed a bug that sometimes caused the english translation to show 24-hour time strings.

  • dashboard: Fixed a bug that caused empty slots in the week calendar at the beginning or start of a week.

  • dashboard: Fixed multiple accessibility bugs.

  • dashboard: Fixed a scroll overflow bug in the week calendar.

  • dashboard: Fixed a bug that displayed daily recurring schedules with a weekday name.

  • dashboard: Entries in the conflict resolver without any collisions can no longer be selected.

  • dashboard: The UI for creating/assigning episodes in the broadcast date list is now disabled/removed

  • dashboard: if the user lacks the required permissions.

  • dashboard: Fixed some unlocalized time representations.

  • dashboard: Endtime of new schedules is no longer rounded to minute-accuracy.

  • dashboard: Schedule 404 errors now redirect to the schedule overview page.

[1.0.0-alpha6] - 2025-02-26

We’re excited to introduce AURA Alpha 6 — Wondrous Whale 🐳, a major update that brings a more flexible and intuitive experience for managing episodes, broadcast dates, and media sources. This release makes it easier than ever to organize and track broadcasts.

Episode list view

Under the hood, we’ve made significant improvements to our data model and API, ensuring greater stability and future-proofing. Episodes can now be saved independently from their broadcast dates, and media sources are now stored in Steering, streamlining content management.

Additionally, you can now assign licenses to media sources, giving you more control over content rights and distribution. We’ve also enhanced user documentation across multiple areas, providing clearer guidance and support for all users.

Breaking Changes:

  • No updated AURA Playout: This release does not include an updated version of AURA Playout. Due to limited resources, the playout components are currently incompatible with the AURA API. Attempting to use these services will result in errors. We will provide updates as soon as this situation changes.

  • Default PostgreSQL version is now 16: The default PostgreSQL version has been upgraded to 16. Please refer to the documentation for instructions on upgrading your database version.

  • Single migration step in Tank: Tank now requires only one migration step. You will need to re-create the database and delete the existing files.

  • Icecast server removed from Docker Compose: The (previously unused) Icecast server has been removed from the default Docker Compose settings.

Read on for the full details of what’s new in AURA Alpha 6!

Added

  • aura: Documentation: How to deal with multiple media source assignments and length information.

  • aura: Documentation: Add info on import logs for file media sources.

  • aura: Documentation: Playout-mode for M3U playlists (linear) and fallback media (random).

  • aura: Documentation: Explain new Episode and Broadcast UI mechanics.

  • aura: Documentation: Info on new Media Description and CBA ID form field.

  • aura: Documentation: How to renew schedules and available settings.

  • aura: Documentation: Metadata editing for file uploads.

  • aura: Documentation: Episode Licenses.

  • aura: Documentation: Learn about different media source states.

  • aura: Documentation: Info on Firefox OGG upload bug.

  • aura: Documentation: Better explanation on default media sources, station fallback and their behaviour.

  • steering: Minimal unit test suite for steering (steering#43)

  • steering: Ability to move individual timeslots (steering#128)

  • steering: Playlist and PlaylistEntry models and endpoints (steering#251)

  • steering: Document how to set duration of playlist entries in API definition (steering#252)

  • steering: ContentLicense model to be referenced by Image and MediaSource (steering#256)

  • steering: media-sources endpoint.

  • tank: Database SQLite support. (tank#52)

  • dashboard: The CBA ID field has been added to the episode editor.

  • dashboard: The media description field has been added to the episode editor.

  • dashboard: Episodes can now be edited and created independently of their timeslots.

  • dashboard: Media uploads are not handled in the background and users no longer have to stay

  • dashboard: on page of the media manager for uploads to succeed.

  • dashboard: Users can now delete episodes.

  • dashboard: Users may add licensing information to media sources.

Changed

  • aura: BREAKING: Default Postgres version for is now 16. Refer to the documentation for how to upgrade database version (aura#393).

  • steering: Filter sensitive information from public API endpoints (steering#217)

  • steering: Renamed Note model into Episode (steering#249)

  • steering: Renamed playlist field in the Episode model (steering#257)

  • steering: Renamed Playlist and PlaylistEntry models into Media and MediaSource (steering#258)

  • steering: Permissions for “episode and broadcast date” (steering#263)

  • tank: BREAKING: There is only one migration step. You need to re-create the database and delete the existing files.

  • tank: Update Go version to 1.23 (tank#84)

  • dashboard: Timeslot filter now filters by date not datetime.

  • dashboard: The media editor expert mode is gone. One can now simply add new media sources.

  • dashboard: The link editor now auto-prepends https:// for URLs without a protocol.

  • dashboard: Reworked media preview and notifications in timeslot and episode list.

Removed

  • aura: BREAKING: Remove Icecast server as part of the AURA Docker Compose, since radio stations usually have their own Icecast server in place. As a result the Docker Compose startup warnings on missing variables is also gone (aura#410).

  • tank: Playlist and PlaylistEntry models and migrations, playlists API routes and related code. (tank#83)

  • tank: Generated docs.go from version control were removed (tank#30)

Fixed

  • aura: Let’s Encrypt certificates are now properly persisted beyond container restarts (aura#422).

  • steering: Links not added when creating a new profile (steering#254)

  • steering: Test test_generate_timeslots_weekends fails on weekends (steering#255)

  • steering: Cannot edit media sources with Program Manager/Host/Host+ role (steering#259)

  • steering: Unable to create repetition schedule (steering#261)

  • steering: Can’t upload images after introduction of ContentLicense relation (steering#262)

  • tank: /imports endpoint doesn’t return running imports (tank#85)

  • dashboard: Tank import log line numbers and timestamps are no longer selectable.

  • dashboard: Image previews now use the configured aspect ratio if one has been set.

  • dashboard: The image editor is now disabled and shows a warning if image operations cannot be performed.

  • dashboard: Media source manager will show errors through all stages of a media upload.

  • dashboard: HTML in show name is now rendered correctly everywhere.

  • dashboard: The link editor now displays errors if users entered an invalid URL.

  • dashboard: Selected show no longer interferes with site navigation.

  • dashboard: Media sources of aired episodes can no longer be edited.

[1.0.0-alpha5-hotfix1] - 2024-11-18

This hotfix release solves an issue with HTTP/HTTPS settings and TLS certificate retrieval (aura#405).

To apply the hotfix, checkout the tag 1.0.0-alpha5-hotfix1.

[1.0.0-alpha5] - 2024-11-05

We’re excited to introduce Alpha-5 — Capable Capybara 🐖, bringing significant new features and enhancements to improve user experience and technical functionality. This release includes new user interfaces for managing User & Host Profiles, expanded Image Management capabilities, and support for M3U playlist assignments. Users can now also access configurable line-in channels and view unmoderated program slots directly in the AURA calendar.

On the technical side, this release includes documentation and installation scripts for Pipewire, an upgrade to the latest Liquidsoap version, and enhanced tools for user permission management and timeslot conflict resolution.

New image editor

Breaking Changes:

  • New configuration file aura/config/services/sample-config/dashboard-clock.json. A copy also needs to be available at aura/config/services/dashboard-clock.json. Just re-run make aura-web.init to create some initial version.

  • Since many default assignments of permissions to groups have been changed, re-set to the defaults as per documentation, unless your are doing a fresh installation. Any modifications have to be re-applied.

  • The Steering API resource Host is replaced by Profile.

  • The default protocol is now set to HTTP (AURA_HOST_PROTO=http).

  • CertBot is now disabled by default (AURA_HOST_CERTBOT_ENABLE=false) and variable renamed from (RUN_CERTBOT) for consistency with AURA_HOST_CERTBOT_EMAIL.

  • Changed the aura user and group ID from 2872 to 872. Call make aura-user.rm && make aura-user.add to re-create. The run make aura-web.init && make aura-playout.init to update permissions. Then run docker system prune and, if your are using playout, delete the socket volume docker volume rm aura-playout_aura_engine_socket. Other volumes need to be updated, in order to keep their data (sudo chown -R aura:aura /var/lib/docker/volumes/aura-web_steering_media/_data && sudo chown -R aura:aura /var/lib/docker/volumes/aura-web_steering_static/_data/)

  • Tank’s database mapper is upgraded to GORM v2. That means migrations cannot be applied and you have to purge your existing Tank database.

  • New API URL to retrieve the calendar information from Steering is /api/v1/program/playout.

  • Replaced the engine-core.ini configuration with engine-core.yaml

  • Data type of timeslot_id in Engine services changed to String since it now may hold UUIDs.

Deprecated:

  • The environment variables AURA_ENGINE_OUTPUT_DEVICE, AURA_ENGINE_INPUT_DEVICE are not used anymore

Added

  • aura: Documentation: Image management.

  • aura: Documentation: Info on how recordings can be archived using a cronjob.

  • aura: Documentation: Fallback program configuration and usage.

  • aura: Documentation: User and profile management.

  • aura: The documentation now features a sitemap and is better equipped for search engines.

  • aura: Dashboard Clock now features a Docker Compose healthcheck.

  • aura: BREAKING: New configuration file config/services/sample-config/dashboard-clock.json. A copy also needs to be available at config/services/dashboard-clock.json. Just re-run make aura-web.init to create some initial version.

  • aura: The Makefile is now able to auto-detect AURA_HOME. That means you can install AURA in any directory of your choice.

  • aura: The API endpoint for retrieving Dashboard Clock data from Engine API is now configurable.

  • aura: The admin docs feature a frequently asked questions section with first questions and answers.

  • steering: basic and calendar program routes. (steering#239)

  • steering: Example Values in API (steering#111)

  • steering: Radio Station settings (steering#222)

  • steering: Permissions for editing Host and UserProfile (steering#227)

  • steering: Choice of database back-end using a database URL (steering#231)

  • steering: Permission for editing the “schedule default playlist” (steering#234)

  • steering: Settings CORS_ALLOWED_ORIGINS and SITE_URL are read from the environment (steering#245)

  • tank: The setting DATABASE_URL is now read from the environment.

  • tank: The settings CORS_ALLOWED_ORIGINS, CORS_ALLOWD_HEADER, CORS_ALLOWED_METHODS,

  • tank: TANK_CORS_ALLOW_CREDENTIALS and TANK_CORS_DEBUG are read from the environment (tank#78)

  • tank: `make release’ target to the Makefile (tank#70)

  • dashboard: M3U media sources can now be added to the playout.

  • dashboard: New profile and user management pages have been added.

  • dashboard: An experimental dark mode has been added.

  • dashboard: Images can now be flipped, mirrored and cropped in the image editor.

  • dashboard: Images must now match the required aspect ratios defined in the radio settings.

  • dashboard: Shows can now be filtered by category.

  • dashboard: The calendar day and week view now show detailed information on fallback slots.

  • dashboard-clock: Configuration is now provided via JSON file with sensible defaults, allowing you to setup AURA more quickly.

  • engine: Ability to handle virtual timeslots. Such timeslots are generated by the fallback program feature.

  • engine: added error handling if no matching channel type is found

  • engine-core: Added a feature to connect audio ports on startup configured via environment variables (engine-core#68)

  • engine-core: Added instructions and configurations to install a headless PipeWire session (engine-core#80)

  • engine-core: Added the option to add multiple outgoing icecast stream endpoints

  • engine-core: Added the option to add multiple audio input devices

  • engine-recorder: Added repository badges.

  • engine-recorder: Set up pre-commit and added configuration.

Changed

  • aura: BREAKING: Since many default assignments of permissions to groups have been changed, re-set to the defaults as per documentation, unless your are doing a fresh installation. Any modifications have to be re-applied.

  • aura: Documentation: Reworked structure and contents of the admin guide.

  • aura: Documentation: All references to “programme” are no named “program”.

  • aura: Documentation: All references to “host” are replaced by “profile”.

  • aura: BREAKING: The API resource Host is replaced by Profile.

  • aura: Default fixture for radio station settings.

  • aura: Sample config for engine.

  • aura: Updated configuration file config/services/sample-config/steering.py.

  • aura: The studio clock is now always reachable via /clock. There is no setting to disable anymore.

  • aura: BREAKING: The default protocol is now set to HTTP (AURA_HOST_PROTO=http).

  • aura: The host name now features a sample setting for quickstart (AURA_HOST_NAME=aura.local).

  • aura: BREAKING: CertBot is now disabled by default (RUN_CERTBOT=false).

  • aura: Generally improved documentation on Base URL and Let’s Encrypt certificate retrieval.

  • aura: Documentation: Details on Base URL and Let’s Encrypt settings.

  • aura: Documentation: Details on configuring a second Reverse Proxy.

  • aura: BREAKING: Changed the aura user and group ID from 2872 to 872. Call make aura-user.rm && make aura-user.add to re-create. The run make aura-web.init && make aura-playout.init to update permissions. Then run docker system prune and, if your are using playout, delete the socket volume docker volume rm aura-playout_aura_engine_socket. Other volumes need to be updated, in order to keep their data (sudo chown -R aura:aura /var/lib/docker/volumes/aura-web_steering_media/_data && sudo chown -R aura:aura /var/lib/docker/volumes/aura-web_steering_static/_data/)

  • aura: Renamed in_line_x to aura_engine_line_in_x and lineout_ to aura_engine_line_out_.

  • aura: Postgres version defaults to 16 now.

  • steering: Changed the aura user and group ID from 2872 to 872.

  • steering: playout is now part of the program routes and generates virtual timeslot (steering#120)

  • steering: Update permission names to more descriptive terms (steering#233)

  • steering: Python version and image is 3.12 (steering#246)

  • tank: Changed the aura user and group ID from 2872 to 872.

  • tank: BREAKING: Upgrade to GORM v2 and gormigrate v2. (tank#36)

  • tank: The data volume needs to be deleted and re-created.

  • tank: The files and folders from the audio store need to be deleted.

  • tank: Setup pre-commit and add configuration for Tank (tank#63)

  • tank: Update Go image to 1.22 (tank#73)

  • tank: Properly authorize requests to read a playlist (tank#77)

  • tank: GET /imports is now a valid request, without showId (tank#81)

  • dashboard: Line-in inputs are now based on the radio settings instead of being hardcoded.

  • dashboard: Deselection of images is now part of the dialog instead of the image preview.

  • dashboard: The visual appearance of the calendar day view has been completely overhauled.

  • dashboard: Data being fetched from the server is now being aggregated to improve performance and reduce the number of flashes of content.

  • dashboard: Users can now end a schedule after a specific timeslot, replacing the previous option of manually deleting timeslots in the backend.

  • dashboard-clock: Refactored Web Component into several, maintainable Svelte Components.

  • dashboard-clock: Dashboard Clock is now based on Svelte 4.

  • engine: BREAKING: New API URL to retrieve the calendar information from steering is /api/v1/program/playout.

  • engine: Schema and implementation of the Steering API client matching the new response.

  • engine: Media sources holding some M3U playlist, now expect a m3u://... prefix instead of playlist://.

  • engine: Better handling for broken or invalid stream media sources.

  • engine: Changed the aura user and group ID from 2872 to 872.

  • engine: Renamed in_line_x to aura_engine_line_in_x and lineout_ to aura_engine_line_out_.

  • engine: Improved test coverage further.

  • engine-api: Changed the aura user and group ID from 2872 to 872.

  • engine-core: BREAKING: Changed the aura user and group ID from 2872 to 872.

  • engine-core: Changed the environment variables AURA_ENGINE_OUTPUT_CHANNEL_LEFT, AURA_ENGINE_OUTPUT_CHANNEL_RIGHT, AURA_ENGINE_INPUT_CHANNEL_LEFT, AURA_ENGINE_INPUT_CHANNEL_RIGHT to hold full names obtainable with pw-link -io

  • engine-core: Updated the liquidsoap version to 2.2.5

  • engine-core: BREAKING: Replaced the .ini configuration with .yaml

  • engine-core: Changed the log level from Integer to String

  • engine-core: Changed the namespaces for some telnet commands, due to the restriction of unique names in the new liquidsoap version

  • engine-core: Renamed in_line_ to aura_engine_line_in_ and lineout_ to aura_engine_line_out_.

  • engine-core: BREAKING: Update the timeslot_id data type to string

  • engine-recorder: Changed the aura user and group ID from 2872 to 872.

  • engine-recorder: Make coverage now outputs coverage percent in console.

  • engine-recorder: Added PipeWire as the Media Server

Deprecated

  • engine-core: The environment variables AURA_ENGINE_OUTPUT_DEVICE, AURA_ENGINE_INPUT_DEVICE are not used anymore

Removed

  • aura: Removed configuration file config/services/sample-config/dashboard-clock.env.

  • aura: Completely removed Dashboard Clock configuration section in AURA Web sample.env, allowing a much more hassle-free setup.

  • aura: Remove unnecessary setting AURA_ENGINE_API_BIND_URL and AURA_ENGINE_API_EXTERNAL_URL from configuration.

  • aura: Remove fixture host.json.

  • dashboard-clock: Removed configuration via environment variables.

  • engine: Removed max_retries and retry_delay from config (#74)

  • engine-core: Removed the wireplumber scripts to connect ports, use pw-link instead (engine-core#68)

  • engine-core: Removed some environment variables in favour of yaml settings

  • engine-core: Removed the mono option for icecast streaming endpoints

  • engine-core: Removed all environment variables for AURA_ENGINE_STREAM_OUTPUT

  • engine-recorder: Removed the Sync feature #40

Fixed

  • aura: Fix multiple issues with Dashboard Clock environment variables names.

  • steering: ours-end conflict solution offered in nonsensical scenarios (steering#220)

  • steering: ours-both assigns invalid show for second part of split episode (steering#221)

  • steering: AURA does not apply summer-winter time shift correctly (steering#225)

  • steering: when I upload a file as host, the file is not shown in dashboard (steering#226)

  • steering: Update default group permission set that is delivered on install …the User Guide. (steering#236)

  • steering: auto-generation of notes during install/setup of AURA seems to fail (steering#238)

  • steering: as a host, I can neither view nor upload audio files (steering#247)

  • tank: as a host, I can neither view nor upload audio files (tank#79)

  • dashboard: Filenames are no longer used as alternative text for images.

  • dashboard: Image license and license related fields are now properly saved.

  • dashboard: Image license requirements are now properly validated.

  • dashboard: Show danger zone is now hidden if it doesn’t contain any actionable items due to permissions.

  • dashboard: Error handling for media sources has been improved.

  • dashboard: The HTML editor now behaves more like a normal input field.

  • dashboard: Assets are now cached for better performance.

  • dashboard: The image picker no longer retains any unsaved changes after the dialog has been closed.

  • dashboard: View state like search, filter and ordering parameters are now reflected in the URL so users can share URLS.

  • dashboard: The currently selected show is cleared after logout.

  • dashboard: Fixed minor UIand UI-related accessibility issues, as well as typos.

  • engine-api: Fixed issues with datetime and timezone handling when posting to the “playlog” and “clock” endpoints.

[1.0.0-alpha4] - 2024-04-18

The release of Alpha 4 — Raving Raccoon features:

  • Permission Management: Easily manage permissions for roles such as Program Managers and Hosts, as well as individual users.

  • Radio Station Settings: Administrators now have the ability to configure global station settings conveniently within the new admin area.

  • Playout Refactoring: The Engine component has undergone significant improvements. It now caches data efficiently without the need for a database server. Program data is cached transparently using JSON files. Additionally, the scheduling and program polling logic has been refactored and validated using OpenAPI interfaces.

  • Improved Test Coverage: We have substantially increased test coverage in both Steering and Engine components. Most components now provide badges displaying the overall test coverage.

Breaking Changes: All nested API endpoints in Steering and Tank that were deprecated in the previous release have now been removed.

Explore further details on all additional changes below.

AURA Admin UI - group list

Added

  • aura: New fixture radiosettings.json for defining radio station settings.

  • aura: User Guide: Documentation on radio station settings.

  • aura: Admin Guide: Info on running Docker Engine as a daemon in production.

  • aura: User Guide: Documentation on data visibility, permission and roles in radio administration.

  • aura: New Gitlab issue templates for Bug Report and Epic.

  • aura: New “at a glance” overview for release workflow.

  • steering: Playlist model as placeholder for custom permissions.

  • steering: The route for schedules can now handle PATCH requests that don’t involve conflict resolution (steering#218)

  • steering: RadioSettings model, admin, serializer, viewset and route to expose them (steering#173)

  • steering: Management command and Makefile target to delete OIDC client (steering#219)

  • dashboard: Implemented basic permissions so that unprivileged users either can’t see or can’t edit data they are not allowed to see or edit.

  • dashboard: Episodes that the dashboard detects as invalid (e.g. those with a negative duration) are now highlighted with a yellow background and red stripes and should be reported.

  • dashboard: The menu now has a link to the steering administration page.

  • engine: Lots of test cases.

Changed

  • aura: Admin Guide: More details on configuring reverse proxies.

  • aura: User Guide: Manage groups improved.

  • aura: User Guide: Extended “User and host profile” documentation.

  • steering: The image URLs are now exposed as url and include the protocol to avoid mixed-media warnings (steering#194)

  • steering: The title of a Note is nullable (steering#203)

  • steering: A Note is attached to a Timeslot upon creation (steering#214)

  • tank: The job-timeout for the importer is now thirty minutes for Docker.

  • dashboard: Calendar event color scheme has been re-worked to be more readable and distinguishes between owned and other shows.

  • dashboard: Reworked calendar dialogs and grouped related information and actions.

  • dashboard: Drastically reduced asset sizes and therefore improved app load times.

  • dashboard: The Delete all following episodes-functionality has been temporarily disabled.

  • dashboard: The show quick selector has been removed because we provide similar functionality on the show overview page.

  • engine: Engine now requires at least Python 3.11.

  • engine: Major refactoring of the scheduling mechanices. As a consequence the database dependency for caching is removed. Instead caching is performed in form of json files located in the configured cache_dir folder.

Removed

  • aura: All database related configuration got removed from Engine. Compare and update your .env file.

  • aura: User Guide: Safari support is removed once again.

  • steering: Nested routes for shows, show/timeslots, show/schedules, show/schedule/timeslot (aura#126)

  • tank: Nested routes for show/files, show/files and show/playlists (aura#126)

  • engine: All database related settings and dependencies. When updating from an existing deployment, remember to compare the new config files and remove relevant entries.

Fixed

  • aura: AURA Web health-checks updated to work with Docker Engine 26+.

  • dashboard: Fixed some visual spacing issues with dialogs.

  • dashboard: The title column in the episode list will now always display a title or placeholder.

  • dashboard: Users can now always abort the conflict resolution mode in the calendar.

  • dashboard: Fixed some rendering issues for certain conflict resolutions in the calendar.

  • dashboard: Fixed some missing, misleading and invalid translations in the calendar.

  • engine: Issue where the configuration values for retry_delay and max_retries are mixed up.

Security

  • engine: The codebase is now audited using the security tool Bandit.

[1.0.0-alpha3] - 2024-02-29

The release of Alpha 3 — Playful Platypus marks a significant milestone with a comprehensive overhaul of the user interface and the play-out stack, introducing many eagerly anticipated features.

The dashboard has undergone a complete redesign in appearance, navigation and functionality. Notable additions in the show area include dialogs for managing show settings, episodes, image uploads, extended metadata assignments, assignment of media sources, and more.

The play-out engine now leverages the state-of-the-art audio server PipeWire, providing users with low-latency audio routing options for a smooth playback experience. PipeWire is seamlessly integrated into various recent Linux distributions such as Debian 12 and Ubuntu 22.04.

To facilitate understanding of the new features, the User Guide has been enriched with additional information. Simultaneously, the Administration Guide has undergone enhancements to expedite the AURA setup process.

Additional features include data backup and restoration capabilities, improved logging, and simplified importing of default datasets.

Breaking Changes: Many API implementations are improved to follow best practices. This includes the naming of parameters and properties. The approach how uploaded audio files are stored in the database and on the filesystem got revised. Lastly, most installation steps and their documentation got reworked. Due to the amount of breaking changes we recommend re-installing AURA from scratch.

Deprecated: We want to remind you, that nested API endpoints in Steering and Tank are deprecated. They will be removed with the release of Alpha 4. Try to migrate to the non-nested version of an endpoint and report back if you are facing issues. For more details, check out api.aura.radio and the detailed changelog below.

Security: Upgrade to Docker Engine 25.0.2 or later due to a security vulnerability in runc.

AURA Dashboard - login page

Added

  • aura: CLI command make version to display the current version.

  • aura: Documentation: Configure playout using PipeWire.

  • aura: Documentation: Many chapters in the user documentation on the new features in the show and episode user interfaces.

  • aura: New make commands to create sample fixtures and import fixtures (aura-web.fixtures-create, aura-web.fixtures-import).

  • aura: New make commands to backup and restore Docker Volumes (make aura-volume.backup, make aura-volume.restore).

  • aura: Documentation: Chapter to learn how to backup config and data.

  • aura: Documentation: Aura Web now features a Quick Install Guide.

  • aura: Ability to load system settings with sample and custom fixtures.

  • steering: owners optional field in Host model as many-to-many reference to User (steering#166)

  • steering: language and topic optional fields in Note model (steering#169)

  • steering: contributors field in Note model (steering#159)

  • steering: PRIVILEGED_GROUP and ENTITLED_GROUPS settings to implement groups and permissions (steering#177)

  • steering: FILTER_ACTIVE_SHOWS_USING settings to filter active shows and OIDC scope claims (steering#175)

  • steering: ShowManager to annotate a show with its max (last) timeslot start (steering#175)

  • steering: is_active boolean field in LinkType model (steering#187)

  • steering: addtimeslots management command to renew schedules for one year (steering#108)

  • tank: Un-nested routes for playlists, files, imports, etc. (tank#65)

  • dashboard: Added license selection in image picker.

  • dashboard: Added show overview page with grid and table view including pagination, search and extensive ordering capabilities.

  • dashboard: The state of save operations is now communicated to users.

  • dashboard: The media page has been removed in favor of inline editors in the episode and show management pages.

  • dashboard: Hierarchical pages now display a breadcrumb navigation.

  • dashboard: Show pages now display update/create metadata.

  • dashboard: All pages and subviews now have unique and shareable URLs.

  • dashboard: A new login page has been added.

  • dashboard: Shows can now be deleted.

  • dashboard: The show slug can now be changed.

  • dashboard: Languages and topics can now be set for individual episodes/notes.

  • dashboard: Show on-air and next-up info for episodes.

  • dashboard: Added support for viewing past episodes.

  • dashboard: Added support for viewing inactive schedules.

  • dashboard: Platform and social media links can now be added to shows and episodes.

  • dashboard: Content fields now have a WYSIWYG-HTML editor.

  • dashboard-clock: Sample API data for testing provided via /test/api.json

  • engine: Additional logging while loading playlist entries (#136)

  • engine-api: make api: generate, merge and clean files according to api specs in schemas/openapi-engine.yaml (#37)

  • engine-core: PipeWire as the media server inside the docker container

  • engine-core: Docker compose support for easier building of local containers

  • engine-core: WirePlumber script to automatically connect ports

  • engine-core: WirePlumber script to list device ports

  • engine-recorder: Added a option to configure the sub directories where the audio files are saved (engine-recorder#36)

  • engine-recorder: Added local docker build (engine-recorder#31)

  • engine-recorder: Added docker compose

Changed

  • aura: Documentation: Add details on how to release a service in the developer docs.

  • aura: BREAKING: Update naming and meaning of several make commands and according documentation. Re-read the docs carefully when installing.

  • aura: Docker images are now tagged and published with main instead of unstable.

  • aura: The aura user is now created as a system user.

  • aura: Documentation: Multiple content and structure improvements in the Administration Guide.

  • aura: Documentation: CertBot in Aura Web installation is now enabled by default. Disable, when not needed.

  • aura: Sample configuration override for engine-api is now in YAML format, instead of INI.

  • aura: Update engine-recorder sample configuration for override.

  • aura: Nginx is running rootless now. This improves security and fixes some other permission bugs.

  • aura: Replace AURA_ENGINE_RECORDER_AUDIO_DEVICE with AURA_ENGINE_RECORDER_AUDIO_SOURCE and AUDIO_DEVICE with AUDIO_SOURCE, (engine-recorder#32)

  • steering: BREAKING: The IDs of the “owned shows” and the “public shows” are now listed as ownedShowIds and publicShowIds in the OICD scope claims.

  • steering: note_id and show_id are read-only fields of the TimeslotSerializer (steering#171)

  • steering: Note.tags are exposed as list of strings (steering#158)

  • steering: Django’s model permissions and additional custom permissions are now used (steering#177)

  • steering: type in Link model is now foreign key reference to the LinkType model. The serializers expect a typeId (steering#187)

  • tank: BREAKING: The database and directory structure has changed. Since there is no way to migrate the data for this update, you need to re-create the database and delete the existing files and folders from the audio store.

  • tank: BREAKING: The endpoints to create files and playlists now require a showId in the JSON payload.

  • tank: BREAKING: API endpoints now require showId (int) instead of the showName (string).

  • tank: The duration is now in seconds and is stored as a float.

  • tank: The job-timeout for the importer is now three minutes for Docker.

  • tank: Show uploads are stored in folders named after the ids instead of the slugs. (tank#37)

  • tank: error and info log files now have timestamps (tank#68)

  • tank: The endpoint to upload a file with Flow JS no longer requires a showId.

  • tank: The endpoint to list the playlists now lists all, the ones by a show or the ones that include a file.

  • dashboard: The global navigation has been moved to a sidebar.

  • dashboard: The global navigation now includes contextualized submenus.

  • dashboard: The show admin selector now uses an inline selection mechanism instead of a dialog.

  • dashboard: The help link in the footer now directly links to the AURA documentation.

  • dashboard: The page-size selection for the episode table has been moved to the table footer.

  • dashboard: The range-end selection in the episode table has been removed.

  • dashboard: The range-start selection in the episode table is now positioned right next to the table header.

  • dashboard: The episode/note editor is now a separate page instead of a modal.

  • dashboard: The show deactivation button has been moved to the Danger zone and now requires confirmation.

  • dashboard: The show page has been split into two separate pages for episodes/schedules and basic settings.

  • dashboard: Related individual fields in the basic show settings have been restructured into structured blocks.

  • dashboard: Updated/harmonized terms used in show pages.

  • dashboard: The unimplemented settings page has been removed.

  • engine: Configuration using yaml instead of ini files (#120)

  • engine: Change default database password to string to avoid parsing errors (#120)

  • engine: Use datatype float instead of int for trackDuration (#132)

  • engine-api: Configuration using yaml instead of ini files (#34)

  • engine-api: Use datatype float instead of int for trackDuration (#51)

  • engine-api: Change default database password to string to avoid parsing errors (#54)

  • engine-core: Default sound system is now JACK, not ALSA

  • engine-core: Docs: Update README with new PipeWire based installation

  • engine-recorder: Renamed the input.file field to input.source (engine-recorder#32)

  • engine-recorder: Renamed the input.file_format field to input.source_format (engine-recorder#32)

  • engine-recorder: Replaced AURA_ENGINE_RECORDER_AUDIO_DEVICE with AURA_ENGINE_RECORDER_AUDIO_SOURCE and AUDIO_DEVICE with AUDIO_SOURCE, (engine-recorder#32)

Deprecated

  • aura: Nested API endpoints in Steering and Tank are deprecated and will be removed in the next release. Compare the specification at api.aura.radio and update your API client as soon as possible. Please report if you are facing issues.

  • steering: Nested routes for shows, show/timeslots, show/schedules, show/schedule/timeslot will be removed with alpha-4.

  • tank: Nested routes for show/files and show/playlists will be removed with alpha-4.

Removed

  • steering: note_id and show fields from the Timeslot model (steering#171)

  • steering: type field from LinkType model (steering#187)

  • steering: owner and slug fields from Note model.

  • engine-api: Remove endpoint /playlog/report/{year_month} (#48)

  • engine-core: Dropped ALSA in Docker support in favour of PipeWire + JACK

Fixed

  • aura: To avoid permission problems re-run the commands make aura-web.init or make aura-playout.init respectively.

  • aura: Warning when executing the make target for adding the aura user.

  • aura: Consolidated the structure for custom configuration and fixtures in AURA Web.

  • aura: Due to certificate retrieval issues, certbot is now running on port 80 (#276).

  • aura: Missing image in the documentation under a administration / update and maintain.

  • aura: Allow optional trailing slash for /trackservice endpoints and don’t redirect (engine-api#25).

  • aura: Documentation: Replace AURA_RECORDER_AUDIO_STORE_HOST with AURA_AUDIO_STORE, (engine-recorder#39)

  • dashboard: Fixed overflow issues for in image picker.

  • dashboard: Ensure save errors due to connection issues are properly communicated to the user.

  • dashboard: Fixed keyboard selection support in image picker.

  • dashboard: Fixed overflow issues in calendar.

  • dashboard: Fixed overflow issues in show quick selector for long show titles.

  • engine: Fix redundant logging while loading playlist entry (#136)

  • engine: Fix line-in source selection (#141)

  • engine-core: Smooth play-out latency and buffering for analog audio input (engine-core#50)

  • engine-recorder: Fixed a bug where the audio files where always saved with the _%s suffix (engine-recorder#35)

Security

[1.0.0-alpha2] - 2023-06-29

The release of Alpha 2 — Precise Pheasant ships with plenty of essential improvements, both under the hood and on the user interface level.

The Data Model has been extended and refined to provide a foundation for the requirements of participating radios. Additional recurrence rules have been added as part of the default configuration.

The User Interface has undergone a facelift and has been updated with features and enhancements, especially in the calendar and show view.

Administrators are now served with log files for all services. In order to avoid permission errors, also re-run the make aura-user.add command. This now creates directories for logs and audio with correct permissions for the aura user.

Breaking Changes:

  • Some configuration settings for the Docker Compose bundles have been changed. Either adapt your current .env file accordingly or start with a fresh one.

  • The API has been improved to follow best practices. This includes the naming of parameters and properties.

Deprecated:

  • Nested API endpoints in Steering and Tank are now deprecated. Try to migrate to the non-nested version of an endpoint and report back if you are facing issues.

For more details, check out api.aura.radio and the detailed changelog below.

Added

  • aura: Add development target make dev.merge-changelog to create a merged changelog, helping to prepare release notes.

  • aura: Add release notes section at docs.aura.radio

  • aura: Add Tank Cut & Glue API to api.aura.radio.

  • aura: Add default Audio Store directory /var/audio/import used for audio file imports via filesystem (aura#172).

  • aura: Add default setting for AURA_AUDIO_STORE_RECORDINGS to the playout sample.env file.

  • aura: Add audio targets for the Makefile to start and disable PulseAudio.

  • aura: Add optional engine-recorder profile to aura-playout.

  • aura: Add an log file for NGINX, aura-web (#147).

  • aura: Documentation: Add more details to the Radio Station Administration chapter.

  • aura: Documentation: Add chapter on deleting and deactivating users in the User Guide.

  • aura: Documentation: Add more info on switching between releases to the Administration Guide.

  • aura: Add directories to logs and audio to avoid permission errors (#209)

  • steering: Image concrete model to handle all instances.

  • steering: API endpoint /api/v1/images/ to add, update and delete images.

  • steering: Add Host admin

  • dashboard: a new show selector to the navbar (#122, f9762d85).

  • dashboard: a new image picker that can be used to upload new and select existing images (#89, #139, e0fd0a76, b335d801, 57e1e10f).

  • dashboard: ability to add internal notes to a show (#146, 319cf540).

  • dashboard: information on empty slots between shows and a progress indicator for the currently playing show

  • dashboard: to the calendar day-view (#155, 9ac48a55, 2a68a7ac).

  • dashboard: a progress indicator for the currently playing show to the calendar week-view (#156, b52672dd).

  • dashboard: ability to add and remove individual contributors to the show notes based on the show owners (#170, #146, aa707763).

  • dashboard: ability to add tags to show notes (#146, 560d8dda).

  • engine: API responses from Steering and Tank are now cached in cache_dir

  • engine-api: Test coverage (make coverage #40)

  • engine-api: Badge displaying coverage result (#40)

Changed

  • aura: Update sample configuration files for services in config/service/sample-config.

  • aura: Rename environment variable AURA_ENGINE_SERVER_TIMEOUT to AURA_ENGINE_SERVER_TIMEOUT in playout sample.env.

  • aura: Increase default value for AURA_ENGINE_SERVER_TIMEOUT in playout sample.env, to avoid malfunctions when idle (aura#165).

  • aura: Documentation: Update Contribution Guidelines and Coding Conventions in the Developer Guide.

  • aura: Documentation: Extend section for developers on performing releases.

  • aura: Change /trackservice endpoints to /engine/api/v1/trackservice and /engine/api/v1/trackservice/current according to API namespace conventions (aura#190).

  • steering: The Host, Note, Show models & serializers reference the new Image.

  • steering: The logo field in the Show model is a reference to Image.

  • steering: The “conflict resolution” methods of Schedule are now service functions.

  • steering: Update all APIs to return attributes / properties in camelCase notation (aura#141)

  • steering: Use _id suffix for all object reference in REST APIs (aura#166)

  • steering: Use blank strings instead of nullable strings in REST APIs (aura#167)

  • steering: Upgrade Poetry dependencies and Django to the next LTS version (steering#137)

  • dashboard: The timeslot overview has been fully revised (4ef88279).

  • dashboard: The timeslot show notes editor has been fully revised (#141, 57e1e10f).

  • dashboard: Past schedules are now hidden in the show manager (#120, 8cd743de).

  • dashboard: Schedules are now shown with their respective start and end date (#121, f9dc6fef).

  • dashboard: The calendar day-view has been fully revised (#155, 9ac48a55, 2a68a7ac).

  • dashboard: The slots in the calendar week-view have been from 30 to 15 minutes to make it easier to

  • dashboard: create shorter slots (#151, 3fc47383).

  • dashboard: Very short timeslots in the calendar week-view now take up less space (#151, 3fc47383, bfe7f813).

  • dashboard: Show start and end time in calendar tooltip if the event is too short to render it as content (#173, cf5ac12e).

  • dashboard: The show manager interface for editing the show details has been overhauled, changing the overall appearance

  • dashboard: and the way some of the fields are edited (db7dc49d).

  • dashboard-clock: Provide properties in API schemas in CamelCase notation (aura#141)

  • engine: Provide properties in API schemas in CamelCase notation (aura#141)

  • engine-api: Make properties in API schemas in CamelCase notation (aura#141)

  • engine-api: Avoid deprecation warning by replacing JSON encoder (#35)

  • engine-api: Change HTTP status codes (204 No Content) for successful but empty POST/PUT responses, adapt tests (#5)

  • engine-core: Make properties in API schemas in CamelCase notation (aura#141)

  • engine-core: Configuration: Renamed environment variable AURA_ENGINE_SERVER_TIMEOUT to AURA_ENGINE_SERVER_TIMEOUT

  • engine-core: and configuration setting telnet_server_timeout to server_timeout.

  • engine-core: Configuration: Increase default value for server_timeout, to avoid malfunctions when idle (aura#165)

Deprecated

  • aura: Nested API endpoints in Steering and Tank are now deprecated. Compare the specification at api.aura.radio

Removed

  • steering: The abstract ModelWithImageFields from the program models.

  • steering: The ThumbnailsMixin from the program serializers.

  • steering: The abstract ModelWithCreatedUpdatedFields from the program models.

  • dashboard: Non-functional nav button to broadcast management on show detail page (#133, e4083e66).

  • engine: Remove mail service as it will be replaced by Prometheus monitoring (engine#109)

Fixed

  • aura: Fix an issue where make aura-user.add causes an unrelated Python error, raised from another command (#183).

  • aura: Fix the location of the Docker Compose bundles in the README.

  • aura: Fix an issue where /trackservice was not reachable (#159).

  • aura: Fix an issue where some settings in the .env and .yml where not applied correctly (#160).

  • aura: Fix an issue with the aura-playout targets in the Makefile (#168).

  • aura: Documentation: Replace old “meta” repository references with “aura”.

  • steering: use kebab-case in URLs

  • steering: don’t output invalid PPOI format

  • steering: note image should allow null values

  • steering: don’t force REST API consumers to set repetition_of for timeslots

  • steering: The timeslot generation leaves the last_date unset if it is null.

  • steering: Note.tags attribute not updated via API (steering#157)

  • steering: make subtitle field in Category a CharField

  • dashboard: Navigation would sometimes freeze, after an application error in the playlists view (#132, e4083e66).

  • dashboard: Calendar would sometimes crash if playlist data is missing (#132, a3e8e3b0).

  • dashboard: Switching between the weekand day-view in the calendar no longer squishes the week-view (#153, e28eb4f7).

  • dashboard: The calendar uses entire viewport height now (#154, 4c90f277).

  • dashboard: Users are now able to create a timeslot in a calendar week slot that has already started (#167, 3d4e9b28).

  • dashboard: HTML in the show title, short description and description is now correctly rendered (#129, 649b4c0b).

  • engine: Fix an issue where the Engine version is displayed in the logs wrongly

  • engine-api: Fix an issue where the configuration file is overwritten in the make init.dev target

  • engine-api: Fix an issue where the Docker Compose healthcheck failed (#39)

  • engine-api: Fix broken endpoint /trackservice (aura#185)

  • engine-core: Telnet server sample config not working (engine-core#45).

  • engine-core: Extend and improve output for make help.

  • engine-recorder: Fixed a bug where the recorder would not start when trying to record a web stream (aura#182)

[1.0.0-alpha1] - 2023-03-02

Initial release.