# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ### Added - `basic` and `calendar` program routes. (steering#239) ### Changed - Changed the aura user and group ID from 2872 to 872. - `playout` is now part of the program routes. (steering#120) ## [1.0.0-alpha4] - 2024-04-17 ### Added - `Playlist` model as placeholder for custom permissions. - The route for `schedules` can now handle PATCH requests that don’t involve conflict resolution (steering#218) - `RadioSettings` model, admin, serializer, viewset and route to expose them (steering#173) - Management command and Makefile target to delete OIDC client (steering#219) ### Changed - The image URLs are now exposed as `url` and include the protocol to avoid mixed-media warnings (steering#194) - The `title` of a `Note` is nullable (steering#203) - A `Note` is attached to a `Timeslot` upon creation (steering#214) ### Removed - Nested routes for shows, show/timeslots, show/schedules, show/schedule/timeslot (aura#126) ## [1.0.0-alpha3] - 2024-02-26 ### Added - `owners` optional field in `Host` model as many-to-many reference to `User` (steering#166) - `language` and `topic` optional fields in `Note` model (steering#169) - `contributors` field in `Note` model (steering#159) - `PRIVILEGED_GROUP` and `ENTITLED_GROUPS` settings to implement groups and permissions (steering#177) - `FILTER_ACTIVE_SHOWS_USING` settings to filter active shows and OIDC scope claims (steering#175) - `ShowManager` to annotate a show with its max (last) timeslot start (steering#175) - `is_active` boolean field in `LinkType` model (steering#187) - `addtimeslots` management command to renew schedules for one year (steering#108) ### Changed - **BREAKING:** The IDs of the "owned shows" and the "public shows" are now listed as `ownedShowIds` and `publicShowIds` in the OIDC scope claims. - `note_id` and `show_id` are read-only fields of the `TimeslotSerializer` (steering#171) - `Note.tags` are exposed as list of strings (steering#158) - Django’s model permissions and additional custom permissions are now used (steering#177) - `type` in `Link` model is now foreign key reference to the `LinkType` model. The serializers expect a `typeId` (steering#187) ### Removed - `note_id` and `show` fields from the `Timeslot` model (steering#171) - `type` field from `LinkType` model (steering#187) - `owner` and `slug` fields from `Note` model. ### Deprecated - Nested routes for shows, show/timeslots, show/schedules, show/schedule/timeslot will be removed with alpha-4. ## [1.0.0-alpha2] - 2023-06-20 ### Added - `Image` concrete model to handle all instances. - API endpoint `/api/v1/images/` to add, update and delete images. - Add `Host` admin ### Changed - The `Host`, `Note`, `Show` models & serializers reference the new `Image`. - The `logo` field in the `Show` model is a reference to `Image`. - The "conflict resolution" methods of `Schedule` are now service functions. - Update all APIs to return attributes / properties in camelCase notation (aura#141) - Use `_id` suffix for all object reference in REST APIs (aura#166) - Use blank strings instead of nullable strings in REST APIs (aura#167) - Upgrade Poetry dependencies and Django to the next LTS version (steering#137) ### Removed - The abstract `ModelWithImageFields` from the program models. - The `ThumbnailsMixin` from the program serializers. - The abstract `ModelWithCreatedUpdatedFields` from the program models. ### Fixed - use kebab-case in URLs - don’t output invalid PPOI format - note image should allow null values - don’t force REST API consumers to set `repetition_of` for timeslots - The timeslot generation leaves the `last_date` unset if it is null. - Note.tags attribute not updated via API (steering#157) - make subtitle field in Category a CharField ## [1.0.0-alpha1] - 2023-02-24 Initial release.