- Make all public static assets (album art, streamer art, podcast/episode art, etc) serve with no sessions or other user-specific information
- Make "timestamp" an explicit URL parameter and avoid weird parsing of IDs mixed with timestamps
- Make static caching a universal middleware for uniform results across controllers
- Update public art URL paths to reference station short names instead of numeric IDs
* Commit new Schedule entity changes and new API endpoints.
* Fix possible cause of API POST errors.
* Fix syntax with JSON return slashes.
* Add "Schedule View" and "Enforce Schedule" settings to Streamers.
* Add "Scheduled" panel to Profile.
* Add form entries and LS config writing for live stream recording.
* Create new Broadcast entity; implement new djon/djoff handling.
* Rework record command procedure and add Station relation to Broadcast.
* Run code reformat on JS to add semicolons back.
* Properly save recording path on entity.
* Initial commit of new streamers Vue component.
* Finish frontend Vue dev and add necessary API endpoints.
* Add loader to Datatable; update npm deps; polish on components.
- Remove automatic download attempt from Ansible installation process
- Allow listener report to function without the MaxMind database present, but with error messages
- Create new "Install GeoLite Database" page in system administration, allowing user upload of the MaxMind database, with instructions
- All media rows will have an "art_updated_at" field that tracks the latest time the art was changed for the file.
- If this field is set to zero (0), the system will return the default album art instead of attempting to resolve an album art URL that we know won't go anywhere.
- The timestamp of the latest update is now included in the album art image SRC, so we can maintain our very long caches without interfering with album art updates.
Add a new "Audit Logs" table (and corresponding administrative page) that tracks inserts, updates and deletes to important database entries, along with tracking the user who made the change.
Implement an upgrade of the codebase to use Slim Framework version 4, which includes the following changes:
- Updating to Slim version 4 and the corresponding AzuraCore updates.
- Making all objects PSR-7 Request/Response agnostic (and creating RequestHelper and ResponseHelper objects to interact with the PSR-7 Req/Resp objects).
- Moving to PHP-DI as a DI container and implementing its autowiring support.
* Create new backup and restore commands allowing live backups.
* Switch migrate script to use new backup method.
* Avoid loading fixtures, ensure directories exist when restarting stations.
* Include album art in media backup.
* First portion of automated backup management code.
* Further backup page work; add download/delete functionality.
* Implement automatic backups and "manual run" page.
* Switch automatic backup filename to match text.
* Add new locales.
* Add restore instructions and ability to view latest backup log.