Releases: libretime/libretime
v4.3.0
4.3.0 (2025-03-12)
Features
- add flac support to Web player (#3128) (203c927)
- add Norwegian BokmΓ₯l locale (#3073) (e614fbc)
- analyzer: parse comment fields from mp3 files (#3082) (02a779b)
- api: added filters on genre & md5 for files api (#3127) (b1bdd6d)
- api: enable writes to schedule table (#3109) (2ac7e8a)
- legacy: implement subset sum solution to show scheduling (#3019) (5b5c68c), closes #3018
- legacy: order by filename when lptime is null (#3069) (8c26505)
- legacy: show filename and size on edit page and add filename datatable column (#3083) (16deaf0), closes #3053
- legacy: trused header sso auth (#3095) (2985d85)
- legacy: update deprecated PHP code (#2789) (3a8dcbc)
- playout: add Liquidsoap 2.0 support (#2786) (f9c0bd5)
- use custom intro/outro playlists per show (#2941) (299be3c)
Bug Fixes
- add missing file for nb_NO locale (#3075) (a3865aa)
- analyzer: make ffmpeg filters less aggressive (#3086) (32cad0f), closes #2629
- docker warnings "keywords casing do not match" (#3048) (e095cb2)
- intro/outro playlist unset was impossible (#3101) (7992a9b)
- legacy: additional specifics added to CSVexport.js for RFC 4180 (#3131) (644d2b9), closes #2477
- legacy: fix filename criteria searching (#3068) (c883d0f)
- legacy: migrations from airtime 2.5.1 (#3123) (82d5af2)
- legacy: support Postgresql 12 syntax (#3103) (0b221f4), closes #3102
- playout: improve the way hashlib is called in libretime_playout/player (#3135) (5b4c720), closes #3134
- regenerate API schema (38a0bf9)
- regenerate API schema (ce257a1)
v4.2.0
4.2.0 (2024-06-22)
Features
- legacy: add current date macro to string block criteria (#3013) (451652b)
- legacy: add filename block criteria (#3015) (4642b6c)
Bug Fixes
- pin pip version to <24.1 to allow installing pytz (celery) (#3043) (646bc81)
- playlist allocates inaccurate time to smartblocks (#3026) (2b43e51)
Performance Improvements
v4.1.0
4.1.0 (2024-05-05)
Features
- api: implement file deletion (#2960) (9757b1b)
- build schedule events exclusively in playout (#2946) (40b4fc7)
- legacy: add aac/opus support to dashboard player (#2881) (95283ef)
- legacy: disable public radio page and redirect to login (#2903) (170d095)
- legacy: trim overbooked shows after autoloading a playlist (#2897) (a95ce3d)
- legacy: visual cue point editor (#2947) (da02e74)
- start celery worker programmatically (#2988) (9c548b3)
Bug Fixes
- analyzer: backslash non utf-8 data when probing replaygain (#2931) (29f73e0), closes #2910
- apply replay gain preferences on scheduled files (#2945) (35d0dec)
- deps: update dependency friendsofphp/php-cs-fixer to <3.49.1 (#2899) (3e05748)
- deps: update dependency friendsofphp/php-cs-fixer to <3.51.1 (#2963) (22c303c)
- deps: update dependency friendsofphp/php-cs-fixer to <3.53.1 (#2972) (9192aaa)
- deps: update dependency gunicorn to v22 (security) (#2993) (a2cf769)
- incorrect docker compose version (#2975) (634e6e2)
- installer: setup the worker entrypoint (#2996) (71b20ae)
- legacy: allow deleting file with api token (#2995) (86da46e)
- legacy: allow updating track types code (#2955) (270aa08)
- legacy: avoid crash when lot of streams in configuration (#2915) (12dd477)
- legacy: ensure validation is performed on the track type form (#2985) (5ad69bf)
- legacy: fix hidden fields in edit file form (#2932) (f4b260f)
- legacy: replay_gain_modifier should be a system preference (#2943) (37d1a76)
- remove obsolete docker compose version (#2982) (fb0584b)
- trigger legacy tasks manager every 5m (#2987) (7040d0e)
- worker: ensure celery beat is started (#3007) (bfde17e)
v4.0.0
4.0.0 (2024-01-07)
β BREAKING CHANGES
- The media file serving is now handled by Nginx instead of the API service. The
storage.path
field is now used in the Nginx configuration, so make sure to update the Nginx configuration file if you change it. - installer: The default listen port for the installer is now
8080
. We recommend that you put a reverse proxy in front of LibreTime. - installer: The
--update-nginx
flag was removed from the installer. The nginx configuration deployed by the installer will now always be overwritten. Make sure to move your customizations to a reverse proxy configuration. - The default system output (
stream.outputs.system[].kind
) changed fromalsa
topulseaudio
. Make sure to update your configuration file if you rely on the default system output. - The
general.secret_key
configuration field is now required. Make sure to update your configuration file and add a secret key.
Features
- default system output is now
pulseaudio
(#2842) (083ee3f), closes #2542 - disable uvicorn worker lifespan (#2845) (8743c84)
- installer: add the
--storage-path
flag (#2865) (5b23852) - installer: change default listen port to 8080 (#2852) (f72b7f9)
- installer: remove the
--update-nginx
flag (#2851) (35d7eac) - playout: configure device for alsa and pulseaudio system outputs (#2654) (06af18b)
- rewrite cloud-init config (#2853) (8406d52)
- run python in optimized mode (#2874) (3f7fc99)
- the
general.secret_key
configuration field is now required (#2841) (0d2d1a2), closes #2426 - use nginx to serve media files (#2860) (4603c17)
Bug Fixes
- add parent function name in setValue exception (#2777) (c764a5a)
- api: ensure non ascii paths are handled by X-Accel-Redirect (#2861) (0ce63f3)
- api: enum schema description (#2803) (976b70e)
- api: let nginx handle the media file content type (#2862) (72268ad)
- api: move gunicorn worker config to python file (#2854) (43221d9)
- api: paths with question marks chars are handled by X-Accel-Redirect (#2875) (b2c1ceb)
- deps: update dependency friendsofphp/php-cs-fixer to <3.42.1 (main) (#2765) (8ae4dce)
- deps: update dependency friendsofphp/php-cs-fixer to <3.43.2 (main) (#2848) (62e5f4d)
- deps: update dependency friendsofphp/php-cs-fixer to <3.45.1 (main) (#2855) (6f84328)
- deps: update dependency friendsofphp/php-cs-fixer to <3.46.1 (main) (#2868) (4827dbc)
- legacy: allow uploading opus files (#2804) (f252a16)
- legacy: declare previously undeclared variable (#2793) (e2cfbf4)
- legacy: ensure last played criteria works with never played files (#2840) (24ee383)
- playout: increase file download chunk size to 8192 bytes (#2863) (7ed1be1)
- playout: remove empty file when the download request failed (#2864) (2facbfa)
- worker: unbound variable when episode url returns HTTP 404 (#2844) (3f39689)
v3.2.1
3.2.0
π Contributors
The LibreTime project wants to thank the following contributors for authoring PRs to this release:
π Features
- legacy: move session store to database (#2523)
- api: add email configuration
- add mobile devices stream config field (#2744)
π Bug fixes
- playout: liquidsoap aac output syntax errors
- libretime process leaks and lsof high cpu usage (#2615)
3.1.0
π Contributors
The LibreTime project wants to thank the following contributors for authoring PRs to this release:
π Features
- drop Ubuntu Bionic support
- drop Python 3.6 support
- drop Debian Buster support
- drop Liquidsoap 1.1 support
- drop Liquidsoap 1.3 support
- drop Python 3.7 support
- drop cc_stream_setting table
- delete cc_pref stream preferences rows
- legacy: remove db allowed_cors_origins preference (#2095)
- configure cue points analysis per track type
- playout: use jinja2 env for template loading
- playout: add jinja2 quote filter for liquidsoap
- playout: use liquidsoap interactive variables
- playout: remove unused liquidsoap outputs connection status
- playout: remove unused liquidsoap restart function
- playout: remove unused liquidsoap output namespace
- replace loguru with logging
- playout: use jinja to configure liquidsoap outputs
- playout: enable vorbis metadata per icecast output
- playout: use shared app for cli commands
- installer: configure timezone using timedatectl (#2418)
- playout: don't serialize message twice
- add python packages version
- add sentry sdk
- use secret_key config field instead of api_key (#2444)
- api-client: remove unused api v1 calls
- api-client: rewrite api-client v1 using abstract client
- playout: move liquidsoap auth to notify cli
- playout: replace schedule event dicts with objects
- api: add cors headers middleware (#2479)
- playout: replace thread timeout with socket timeout
- remove dev files from tarball
- include tarball checksums in releases
- set icecast mount default charset to UTF-8
- playout: allow harbor ssl configuration
- api: install gunicorn/uvicorn from pip
- install inside a python3 venv
π Bug fixes
- deps: update dependency adbario/php-dot-notation to v3 (#2226)
- deps: update dependency league/uri to v6.7.2
- legacy: set platform requirements to php ^7.4
- playout: remove outdated liquidsoap code
- playout: add types
- api: allow single digit version for legacy schema
- deps: update dependency friendsofphp/php-cs-fixer to <3.12.1
- remove systemd ProtectHome feature (#2243)
- deps: update dependency friendsofphp/php-cs-fixer to <3.13.1 (#2249)
- worker: replace deprecated cgi.parse_header
- installer: install missing sudo
- installer: set home and login when running as postgres
- legacy: add log entry on task run (#2316)
- legacy: log errors on connect check failure (#2317)
- deps: update dependency friendsofphp/php-cs-fixer to <3.13.2
- deps: update dependency friendsofphp/php-cs-fixer to <3.13.3
- legacy: advanced search by track type id
- legacy: move forked deps to the libretime namespace
- deps: update dependency friendsofphp/php-cs-fixer to <3.14.4
- deps: update dependency friendsofphp/php-cs-fixer to <3.14.5
- legacy: ensure options is a dict during json encoding
- legacy: don't use dict assignment on object (#2384)
- playout: quote escape strings in liquidsoap entrypoint
- legacy: don't delete audio file when removing artwork (#2395)
- playout: use explicit ids for liquidsoap components
- playout: skip the identified queue instead of the current
- playout: use the same number of schedule queues
- legacy: on air light fails when no shows are scheduled
- playout: flush liquidsoap response before sending new
- playout: use package loader for liquidsoap templates
- playout: %else isn't defined
- playout: when shows ends, next shows starts without fade-in/fade-out (#2412)
- playout: legacy pushes non validated data
- playout: explicit ogg vorbis icecast encoder
- playout: prevent unbound variables
- playout: use int for liquidsoap queues map
- shared: return type confusion
- deps: update dependency friendsofphp/php-cs-fixer to <3.15.2
- api: explicit FileImportStatusEnum in schema
- pin postgresql version in docker-compose
- pin rabbitmq version in docker-compose
- allow overriding docker-compose predefined environment
- move docker specific setup to dockerfile
- api: cast string value to int enum (#2461)
- playout: quote incompatible <py3.9 type hints
- installer: bump setuptools to ~=67.3 (#2387)
- playout: use new api-client v1
- playout: catch oserror in liquidsoap client
- deps: update dependency friendsofphp/php-cs-fixer to <3.16.1 (main) (#2490)
- api: require django >=4.2.0,<4.3
- api: upgrade psycopg to v3.1
- playout: remove unused ecasound package (#2496)
- installer: ignore whitespace during diff
- legacy: don't print track_type id in show builder table (#2510)
- legacy: remove composer superuser warning (#2515)
- legacy: keep datatable settings between views (#2519)
- api: upgrade django code (pre-commit)
- analyzer: remove unused python3 package
- deps: update dependency friendsofphp/php-cs-fixer to <3.17.1 (main) (#2556)
β¬οΈ Upgrading
New general.secret_key
configuration
This release adds the general.secret_key
configuration field in the configuration file, to prevent reusing the general.api_key
for cryptographic usage. If the field is missing, it will fallback to the previous behavior, use the general.api_key
and print a warning.
To silence the warning about the missing field, make sure to add the general.secret_key
field to your configuration file. The field will be required on the next major release.
Icecast mount default charset
During the first installation, the installer will configure Icecast to use UTF-8 as default charset for mounts. To upgrade an existing installation, you may want to manually apply the changes in the /etc/icecast2/icecast.xml
:
<mount type="default">
<charset>UTF-8</charset>
</mount>
Or if only want to set the charset to UTF-8 for specific mounts (for example /main.mp3
):
<mount type="normal">
<mount-name>/main.mp3</mount-name>
<charset>UTF-8</charset>
</mount>
Please, see the documentation for more details.
Unused packages and dependencies
Starting with this release, LibreTime installs gunicorn
, uvicorn
and pika
from PyPi. This renders some previously installed distribution packages useless. You can remove them from your system using the following command:
sudo apt remove gunicorn python3-gunicorn python3-httptools python3-uvicorn python3-uvloop python3-pika
In addition, LibreTime now install its dependencies in a python virtual environment. This renders the python packages that LibreTime installed globally useless. There is no clean way to remove those python packages, because there is no safe way to know if other tools depend on them. If you are experienced enough with CLI and system administration, you may prune the entire /usr/local/lib/python3.*/dist-packages/
directory, but do this at your own risk. Those globally installed python packages may stay on the system, they shouldn't break LibreTime.
3.0.2
π Contributors
The LibreTime project wants to thank the following contributors for authoring PRs to this release:
π Bug fixes
- legacy: advanced search by track type id
- legacy: refresh lock files
- legacy: move forked deps to the libretime namespace
- legacy: improve error messages and logs
- installer: allow different actions on template_file
- installer: print diff on file deployment
- installer: only setup nginx on first install
- installer: print unsupported distribution error (#2368)
- installer: create systemd dirs if missing (#2379)
β¬οΈ Upgrading
Nginx configuration deployment
The installer now only deploy the Nginx configuration during the first installation. This is to prevent overwriting changes made by Certbot for example. If you need to update the Nginx configuration, you need to pass the --update-nginx
flag to the installer.
3.0.1
π Contributors
The LibreTime project wants to thank the following contributors for authoring PRs to this release:
π Bug fixes
3.0.0
π Contributors
The LibreTime project wants to thank the following contributors for authoring PRs to this release:
π Bug fixes
- clean exit by catching keyboard interrupt (#2206)
- legacy: missing plupload uk_UA translation
- legacy: jquery i18n translations for plupload
- legacy: gracefully handle missing asset checksum
- disable some systemd security features on bionic (#2219)
β οΈ Known issues
The following issues may need a workaround for the time being. Please search the issues before reporting problems not listed below.
Missing AAC encoder for Liquidsoap
AAC streams aren't working out of the box because the current distributions packages of Liquidsoap are lacking a AAC encoder. If you need AAC streams, you need to install Liquidsoap from a different source.
On Ubuntu Bionic, analyzing some FLAC files fails
On Ubuntu Bionic, analyzing some FLAC files fails with UnplayableFileError
because of an upstream bug in Liquidsoap. If you encounter this, you should upgrade to a more recent distribution version.