Release Notes

Here you find the release notes including all changes.

[1.0.0-alpha4] - 2024-04-18

The release of Alpha 4 — Raving Raccoon features:

  • Permission Management: Easily manage permissions for roles such as Programme 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. Programme data is cached transparently using JSON files. Additionally, the scheduling and programme 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.