This migration adds "Storage Locations", managed via a new System Administration panel, that can hold Station Media data, live broadcast recordings, and backups. These storage locations can be local (as they are by default) or remote via any S3-compatible service.
- Refactor Flysystem to use constants instead of magic strings for URL prefixes
- Add audiowaveform installation to both Docker and Ansible installations
- Use audiowaveform to generate waveforms saved to disk for every track
- Load these waveforms when visiting the visual waveform editor page instead of using the browser to calculate them
- Add volume control and use app-wide storage of default volume
- Remove "beta" tag from waveform editor header
- 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.