All Versions
50
Latest Version
Avg Release Cycle
10 days
Latest Release
8 days ago

Changelog History
Page 2

  • v9.3.4 Changes

    May 18, 2026

    What's Changed

    Full Changelog : v9.3.3...v9.3.4

  • v9.3.3 Changes

    May 17, 2026

    What's Changed

    • ๐Ÿ“„ docs: document the koel/franken standalone-binary install method by @phanan in #2483

    Full Changelog : v9.3.2...v9.3.3

  • v9.3.2 Changes

    May 17, 2026

    What's Changed

    • ๐Ÿ›  fix: align sqlite connection with Laravel 12 defaults by @phanan in #2480
    • ๐Ÿš€ ci: pin DB_DATABASE to :memory: in release build by @phanan in #2481

    Full Changelog : v9.3.0...v9.3.2

  • v9.3.0 Changes

    May 16, 2026

    What's Changed

    • ๐Ÿ”จ refactor: reduce lodash usage in the frontend by @phanan in #2444
    • chore: drop select, local-storage, compare-versions, and md5 by @phanan in #2445
    • ๐Ÿ›  fix: cast favorite attribute to boolean across favoriteable models by @phanan in #2446
    • ๐Ÿ“ฆ chore: drop the color package in favor of a small isDarkColor helper by @phanan in #2447
    • chore: drop koel/dotenv-editor in favor of an in-house service by @phanan in #2448
    • feat: introduce a Guest role that can play but not upload by @phanan in #2450
    • ๐Ÿ›  fix: keep search index in sync with post-scan mass-deletes by @phanan in #2452
    • ๐Ÿ›  fix: skip native draggable on touch devices so context menu fires reliably by @phanan in #2453
    • ๐Ÿ›  fix: redirect guests to / and log proxy-auth failure modes by @phanan in #2454
    • feat: list only album artists on the Artists screen by @phanan in #2455
    • feat: save and load custom equalizer presets by @phanan in #2456
    • ๐Ÿ”จ refactor: collapse UserPreferences into a polymorphic Preference hierarchy by @phanan in #2457
    • ๐Ÿ”จ refactor: organize Services/ into feature subfolders by @phanan in #2458
    • ๐Ÿšš test: move SongStorageType enum tests to tests/Unit by @phanan in #2459
    • ๐Ÿ›  fix: show a sensible error when an upload's response body is not JSON by @phanan in #2461
    • ๐Ÿ›  fix: show newly uploaded songs in their album and artist screens by @phanan in #2462
    • ๐Ÿ”จ refactor: consolidate window globals under window.KOEL by @phanan in #2464
    • ๐Ÿ”จ refactor: collapse Util facade into App\Helpers\Encoding\Bom by @phanan in #2465
    • ๐Ÿ›  fix(tailwind-v4): silence two prod-build CSS warnings by @phanan in #2467
    • 0๏ธโƒฃ feat: support FrankenPHP, bump default upload limit to 512M by @phanan in #2475
    • feat: store user-generated images under storage/app/public/images by @phanan in #2479

    Full Changelog : v9.2.1...v9.3.0

  • v9.2.1 Changes

    May 03, 2026

    What's Changed

    • ๐Ÿ›  fix: properly move playlist between folders / out to root on update by @phanan in #2436
    • chore: clarify radio-station public toggle label by @phanan in #2437
    • ๐Ÿ›  fix: restart radio playback when the on-air station's URL is edited by @phanan in #2438
    • ๐Ÿ›  fix: don't blank-page the app when GitHub is unreachable by @phanan in #2440
    • ๐Ÿ›  fix: arrowleft hotkey now seeks backward, not forward by @phanan in #2442

    Full Changelog : v9.2.0...v9.2.1

  • v9.2.0 Changes

    May 01, 2026

    What's Changed

    • ๐Ÿ›  fix: use default cursor on context menu items instead of text cursor by @phanan in #2408
    • feat: include user's edit permission in album resource by @phanan in #2409
    • feat: include user's edit permission in artist resource by @phanan in #2410
    • feat: include user's edit and delete permissions on playlist resource by @phanan in #2411
    • feat: include user's edit and delete permissions on radio station resource by @phanan in #2412
    • feat: include viewer's edit and delete permissions on user resource by @phanan in #2413
    • ๐Ÿšš chore: remove obsolete acl/permissions endpoint and Permissionable contract by @phanan in #2414
    • ๐Ÿšš chore: remove the Acl namespace entirely; bundle assignable roles into initial data by @phanan in #2415
    • โœ… test: strengthen User::getAssignableRoles tests with exact assertions by @phanan in #2416
    • ๐Ÿ›  fix: align user card with album/artist card affordances by @phanan in #2417
    • chore: announce loading regions to assistive technologies by @phanan in #2418
    • ๐Ÿ”จ refactor: replace Btn boolean attrs with variant and size props by @phanan in #2419
    • ๐Ÿ›  fix: add hover state to BasicListSorter menu items by @phanan in #2420
    • ๐Ÿ”จ refactor: migrate dropdowns and context menus to native popover API by @phanan in #2421
    • chore(deps): bump dompurify from 3.3.2 to 3.4.0 by @dependabot[bot] in #2404
    • chore(deps): bump phpseclib/phpseclib from 3.0.50 to 3.0.51 by @dependabot[bot] in #2401
    • ๐Ÿ›  fix: increase album/artist thumbnail corner radius by @phanan in #2423
    • ๐Ÿ”จ refactor: consolidate DownloadService storage dispatch via factory by @phanan in #2425
    • ๐Ÿ”จ refactor: extract shared store vault into useVault composable by @phanan in #2426
    • ๐Ÿ”จ refactor: route paginated store URLs through flattenParams by @phanan in #2427
    • chore: align tsconfig with the typecheck override by @phanan in #2428
    • ๐Ÿ— chore: thread Eloquent generics through custom builders + repo docblock cleanup by @phanan in #2429
    • ๐Ÿ— chore: round out builder generics on remaining custom builders by @phanan in #2430
    • ๐Ÿ›  fix: shift tabindex from list/panel wrappers to media list items by @phanan in #2431
    • ๐Ÿ”จ refactor: extract model-image cleanup into a field-bound ModelImageObserver by @phanan in #2432
    • ๐Ÿ›  fix: harden ModelImageObserver edge cases ('0' filename + log noise) by @phanan in #2433
    • โฌ†๏ธ chore: upgrade factoria to v5 by @phanan in #2435
    • chore(deps-dev): bump postcss from 8.5.8 to 8.5.10 by @dependabot[bot] in #2424

    Full Changelog : v9.1.2...v9.2.0

  • v9.1.2 Changes

    April 25, 2026

    What's Changed

    • ๐Ÿ‘€ feat: allow dragging the progress bar to seek by @phanan in #2395
    • ๐Ÿ›  fix: preserve compilation album artist when editing songs by @phanan in #2396
    • ๐Ÿ›  fix: remove special colors from Favorites and Recently Played sidebar icons by @phanan in #2397
    • ๐Ÿ›  fix: resolve Butterchurn visualizer ESM interop double-wrapping regression by @acjohnson in #2399
    • feat: auto-hide visualizer controls in fullscreen mode by @phanan in #2400
    • ๐Ÿ›  fix: use most recent feed date for podcast sync freshness check by @phanan in #2407

    ๐Ÿ†• New Contributors

    Full Changelog : v9.1.1...v9.1.2

  • v9.1.1 Changes

    April 07, 2026

    What's Changed

    • ๐Ÿ›  fix: fall back to GET when HEAD fails for radio station URL validation by @phanan in #2390
    • ๐Ÿ›  fix: prevent list-view cards from stretching to the tallest row item by @phanan in #2392

    Full Changelog : v9.1.0...v9.1.1

  • v9.1.0 Changes

    April 07, 2026

    What's Changed

    • ๐Ÿ›  fix: FolderSelect focus border by @phanan in #2364
    • ๐Ÿ›  fix: show offline mark on playable cards by @phanan in #2365
    • feat: show offline caching status on playable cards and list items by @phanan in #2366
    • ๐Ÿ›  fix: use separate cache directory for test runner by @phanan in #2368
    • ๐Ÿ”จ refactor: fix bugs and improve repositories and query builders by @phanan in #2369
    • ๐Ÿ›  fix: use leftJoin for play count to include zero-play albums and artists by @phanan in #2370
    • ๐Ÿ›  fix: apply browsability check to subfolders by @phanan in #2371
    • ๐Ÿ›  fix: context menu submenu not reliably appearing on hover by @phanan in #2372
    • ๐Ÿ›  fix: context menu submenu not appearing on hover by @phanan in #2373
    • โœ‚ Remove redundant paragonie/sodium_compat dependency by @brendt in #2375
    • chore(deps): bump lodash from 4.17.23 to 4.18.1 by @dependabot[bot] in #2376
    • ๐Ÿ›  fix: reliable context menu submenu hover for all directions by @phanan in #2374
    • ๐Ÿ›  fix: prevent SSRF via podcast subscription URL by @phanan in #2377
    • chore(deps): bump lodash-es from 4.17.23 to 4.18.1 by @dependabot[bot] in #2367
    • ๐Ÿ”จ refactor: clean up ImageWritingConfig defaults by @phanan in #2380
    • feat: virtual grid scroller for album and artist lists by @phanan in #2381
    • ๐Ÿ›  fix: throw on failed song file backup by @phanan in #2383
    • ๐Ÿ‘ feat: support pasting image data in ArtworkField by @phanan in #2384
    • ๐Ÿ›  fix: sidesheet reopens after refresh when collapsed by @phanan in #2385
    • ๐Ÿ›  fix: reduce vertical gap for artist/album list in list mode by @phanan in #2386
    • feat: keyboard navigation for context menus by @phanan in #2387
    • ๐Ÿ›  fix: handle Last.fm single-track album response and add --delay option to fetch-artwork by @phanan in #2389
    • feat: detect and flag duplicate file uploads by @AaronCohen21 in #2378

    ๐Ÿ†• New Contributors

    Full Changelog : v9.0.0...v9.1.0

  • v9.0.0 Changes

    April 01, 2026

    ๐Ÿš€ Welcome to Koel v9 (code-named Beethoven). This is a massive release with over 140 changes, bringing a completely revamped visual experience, offline support, crossfade playback, an AI-powered assistant, and much more.

    What's New

    ๐Ÿ‘ Offline Support

    ๐Ÿ‘ Early offline support has landed. Songs can be cached for offline playback, and the app degrades gracefully when the network is unavailable.

    Crossfade Playback

    ๐Ÿ”ง A long-requested feature: crossfade between tracks with a configurable duration, for a seamless listening experience.

    Revamped Home Screen

    The home screen has been completely redesigned with discovery sections, a card grid layout with row dividers, and a "Something Random" section with a refresh button. Cards now feature cursor-following gradient borders and entity-derived gradient colors for a more vibrant, immersive look.

    Homepage

    Visual Overhaul

    • Revamped equalizer with an SVG frequency response curve connecting the bands, gradient coloring, and a center reference line
    • Album, artist, and other detail screens now display a blurred cover image as the background, giving each screen a unique, immersive feel
    • Card-based layout for main content area and footer
    • Marquee animations for long titles in the footer, sidebar, and screen headers instead of truncation

    Radio Now-Playing

    ๐Ÿ“‡ When streaming a radio station, Koel now shows the current playing song by reading ICY metadata from the stream.

    Favorites Drag-and-Drop Ordering

    You can now reorder your favorite songs via drag-and-drop, giving you full control over the order of your favorites list.

    Parallel Scanning

    โšก๏ธ Both library scanning and podcast syncing now run in parallel, significantly speeding up large-library imports and podcast updates.

    Smarter Similar Songs

    ๐Ÿ‘€ The similar songs algorithm now uses multiple seed songs and is scoped to songs only (excluding podcast episodes), producing better recommendations.

    Upload Abort

    In-progress uploads can now be aborted.

    AI Assistant (Experimental)

    Koel now ships with a built-in AI assistant that lets you control your music with natural language. Ask it to play something, manage playlists, toggle favorites โ€” all through a conversational interface.
    ๐Ÿ“š For more information, refer to the documentation.

    More Great Features

    • Persist song list sort preferences across sessions
    • Double-click sidebar playlists to play
    • Expand collapsed playlist folders on drag hover
    • Create playlist folders inline from playlist forms
    • ๐Ÿ‘‰ Make collaborative playlist columns toggleable
    • ๐Ÿ”ง Configurable download limit and transcode timeout
    • Scroll to the current song in the queue by clicking the footer thumbnail
    • Infinite scroll for YouTube video search results

    Tooling Overhaul

    The frontend toolchain has been modernized significantly:

    • Migrated to Vite+ (wrapping Vite 8, Vitest, oxlint, and oxfmt)
    • ๐Ÿ‘• Replaced ESLint with oxlint and added oxfmt as the code formatter
    • Replaced axios with ky for HTTP requests
    • Replaced Cypress with a comprehensive Vitest test suite
    • PHP linting now uses mago
    • vue-tsc type checking added to CI
    • Upgraded to Saloon v4

    ๐Ÿ”’ Security

    • ๐Ÿ›  Fixed CVE-2025-7783 (form-data unsafe random boundary)

    ๐Ÿ›  As usual, a bunch of bug fixes and improvements have also been added under the hood.

    โฌ†๏ธ Upgrade

    Important

    Koel v9 requires PHP 8.3 or higher (previously 8.2).

    1. Make a backup of your database ๐Ÿš€ 2. Depending on your installation method, either check out the tag by running git pull && git checkout v9.0.0 or downloading and extracting the release archive ๐Ÿ— 3. If building from source, run composer koel:init as your webserver user
    2. Enjoy!

    ๐Ÿ†• New Contributors

    Full Changelog : v8.3.1...v9.0.0