koel v4.0.0 Release Notes

Release Date: 2019-09-10 // almost 3 years ago
  • ⬆️ Here you go, the long-due 4th major version of Koel! This version comes with a LOT of changes, fixes, and improvements, as you may have expected. But before you get too excited and jump ahead with the upgrade, one important thing:

    Koel now requires PHP >= 7.1.3

    ⬆️ Yes. Koel v4.0.0 is developed on top of Laravel v5.8.x, which requires PHP 7.1.3 and up. So if your PHP version is lower than that, you'll need to upgrade it prior to proceeding. Also:

    Koel's codebase now makes use of Git submodules

    In an effort to unify the code between the web and the desktop app versions of Koel, I've extracted the interface (the client code, written in Vue) into its own repository (a submodule). Essentially, this only means you'll need to run a slightly different command to init or update the codebase, so fear not.

    🔄 Changes

    So what's new? Well, quite a few. This version of Koel comes with:

    An accessibility overhaul. Koel is now much, much more friendly to visual-impaired users.

    The back-end part rewritten almost from scratch for better code quality ( 9.81 on Scrutinizer currently), readability, and maintainability

    📄 API docs, finally!

    Smart playlists! You can now specify a set of rules (title must include a certain word and/or length must be greater than 10 minutes cough Dream Theater cough for example) and your playlist will contain only songs that meet the rule(s).

    A dedicated, centralized "Recently Played" list. Previously, this list only consisted of up to 7 last played songs on the current device. Now Koel remembers all songs you've played – no matter what device they were played on – and put them in a first-class "Recently Played" playlist.

    An extra cool visualizer.


    I'll leave it to you to figure out how to toggle it, though ;)

    A more attractive and consistent equalizer.

    ⚡️ Global hotkeys being more, erm, global. You don't need to set focus into Koel before triggering the hotkeys anymore. And if you use Chrome, media keys are supported truly globally, which means you don't even need to have the browser window focused to control Koel.

    On-demand playlist loading. A playlist's content is now only loaded and populated if you select it in the sidebar or enter its URL directly. This means a lighter and faster bootup time for Koel.

    👍 Sorting supported in Queue screen, because why not

    🐎 Code splitting from scratch. Most of Koel's client components are now loaded on demand, which greatly improves loading time and performance.

    A zoom control for the Lyrics pane, allowing you to zoom the text in and out to cater for your visual needs

    An "About" dialog

    🌐 PWA support

    👍 Better error handling during installation. If the artisan koel:init command fails for any reason at any step, Koel will stop and let you know instead of silently moving ahead like before.

    More consistent auto-playing

    👌 Support for SQLite (thanks @SahAssar!)

    HTTPS working properly behind reverse proxies

    🔨 Countless refactors, bug fixes, and minor improvements. Truly countless.

    ⬆️ Upgrade

    To upgrade, first make a backup of your database and the application code. I know I always said that, but this time it's even more critical because hey, we have a major version here folks! Better be safe than sorry.

    Then, after the backup is done , execute these commands from the root directory:

    1. git pull
    2. git checkout v4.0.0 ⚡️ 3. git submodule update --init --recursive
    3. composer install
    4. php artisan koel:init
    5. That's about it. Expected more? Sorry to disappoint.

    When Things Go South…

    ⏪ …restore your backup.

    Till next time!