# koel changelog > Music streaming solution that works. - Vendor: koel - Category: Media - Official site: https://koel.dev/ - Tracked by: What's New (https://whatsnew.fyi/product/koel) - Harvested from: GitHub (koel/koel) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## Releases ### v9.11.1 - Date: 2026-08-10 - Version: v9.11.1 - Original notes: https://github.com/koel/koel/releases/tag/v9.11.1 - Permalink: https://whatsnew.fyi/product/koel/releases/v9.11.1 - **fixed** — Return the whole library for a blank Subsonic search query - **fixed** — Refresh the avatar preview after updating the profile - **fixed** — Keep the current avatar when it isn't part of a profile update - **fixed** — Show the avatar cropper full-screen - **fixed** — Build the same Gravatar URL on the client and the server - **changed** — Use Laravel's image manipulation API - **added** — Tag logs with the request and user they came from - **fixed** — Missing entries in search results - **fixed** — Harden URL validation and the SSO callback ##### What's Changed * chore(deps): bump guzzlehttp/guzzle from 7.12.1 to 7.15.1 by @dependabot[bot] in https://github.com/koel/koel/pull/2620 * fix: return the whole library for a blank Subsonic search query by @phanan in https://github.com/koel/koel/pull/2622 * chore(deps): bump guzzlehttp/guzzle from 7.15.1 to 7.15.2 by @dependabot[bot] in https://github.com/koel/koel/pull/2625 * chore(deps-dev): bump postcss from 8.5.10 to 8.5.18 by @dependabot[bot] in https://github.com/koel/koel/pull/2623 * fix: refresh the avatar preview after updating the profile by @phanan in https://github.com/koel/koel/pull/2629 * fix: keep the current avatar when it isn't part of a profile update by @phanan in https://github.com/koel/koel/pull/2630 * fix: show the avatar cropper full-screen by @phanan in https://github.com/koel/koel/pull/2632 * fix: build the same Gravatar URL on the client and the server by @phanan in https://github.com/koel/koel/pull/2631 * chore(deps-dev): bump postcss from 8.5.18 to 8.5.23 by @dependabot[bot] in https://github.com/koel/koel/pull/2628 * chore(deps): bump league/commonmark from 2.8.2 to 2.9.0 by @dependabot[bot] in https://github.com/koel/koel/pull/2627 * chore(deps): bump dompurify from 3.4.11 to 3.4.13 by @dependabot[bot] in https://github.com/koel/koel/pull/2626 * test: run the test suite in parallel by @phanan in https://github.com/koel/koel/pull/2634 * refactor: use Laravel's image manipulation API by @phanan in https://github.com/koel/koel/pull/2633 * test: run the test suite in parallel by @phanan in https://github.com/koel/koel/pull/2635 * ci: run all test jobs in parallel and drop coverage reporting by @phanan in https://github.com/koel/koel/pull/2636 * feat: tag logs with the request and user they came from by @phanan in https://github.com/koel/koel/pull/2637 * chore: check bootstrap, config and routes for formatting and lint by @phanan in https://github.com/koel/koel/pull/2638 * fix: missing entries in search results by @phanan in https://github.com/koel/koel/pull/2639 * fix: harden URL validation and the SSO callback by @phanan in https://github.com/koel/koel/pull/2642 **Full Changelog**: https://github.com/koel/koel/compare/v9.11.0...v9.11.1 ##### Upgrading If you use the default search driver, run this once after upgrading to rebuild your search indexes: ``` php artisan koel:search:import ``` Without it, songs, albums and artists that were missing from search results will stay missing. ### v9.11.0 - Date: 2026-07-13 - Version: v9.11.0 - Original notes: https://github.com/koel/koel/releases/tag/v9.11.0 - Permalink: https://whatsnew.fyi/product/koel/releases/v9.11.0 - **added** — Support fast AAC transcoding with ffmpeg - **added** — Nested playlist folders - **fixed** — Don't upscale images smaller than the max width ##### What's Changed * feat: support fast AAC transcoding with ffmpeg by @DahliaWitt in https://github.com/koel/koel/pull/2611 * fix: don't upscale images smaller than the max width by @TowyTowy in https://github.com/koel/koel/pull/2613 * feat: nested playlist folders by @DahliaWitt in https://github.com/koel/koel/pull/2612 ##### New Contributors * @DahliaWitt made their first contribution in https://github.com/koel/koel/pull/2611 * @TowyTowy made their first contribution in https://github.com/koel/koel/pull/2613 **Full Changelog**: https://github.com/koel/koel/compare/v9.10.1...v9.11.0 ### v9.10.1 - Date: 2026-07-01 - Version: v9.10.1 - Original notes: https://github.com/koel/koel/releases/tag/v9.10.1 - Permalink: https://whatsnew.fyi/product/koel/releases/v9.10.1 - **fixed** — populate starred and played dates in Subsonic responses - **fixed** — honor offset in Subsonic getAlbumList/getAlbumList2 for newest, frequent and recent types - **fixed** — read DATE vorbis tag for year when scanning FLAC/OGG files ##### What's Changed * fix: populate starred and played dates in Subsonic responses by @phanan in https://github.com/koel/koel/pull/2607 * fix: honor offset in Subsonic getAlbumList/getAlbumList2 for newest, frequent and recent types by @phanan in https://github.com/koel/koel/pull/2606 * fix: read DATE vorbis tag for year when scanning FLAC/OGG files by @theianspence in https://github.com/koel/koel/pull/2602 ##### New Contributors * @theianspence made their first contribution in https://github.com/koel/koel/pull/2602 **Full Changelog**: https://github.com/koel/koel/compare/v9.10.0...v9.10.1 ### v9.10.0 - Date: 2026-06-27 - Version: v9.10.0 - Original notes: https://github.com/koel/koel/releases/tag/v9.10.0 - Permalink: https://whatsnew.fyi/product/koel/releases/v9.10.0 - **fixed** — keep lyrics zoom controls pinned to the pane's top-right corner - **fixed** — close context menu after rating from it - **fixed** — show album/artist card separator in production as a standalone element - **changed** — decompose login form into an auth orchestrator with a shared shell - **fixed** — keep the peeked sidebar open briefly after the cursor leaves - **added** — make the default role for first-time SSO users configurable - **fixed** — allow collaborators to update shared playlists via Subsonic - **added** — return synced lyrics from getLyricsBySongId when available - **added** — extract embedded SYLT synchronised lyrics during scanning - **fixed** — fixture filename collision on case-insensitive filesystems ##### What's Changed * chore(deps): bump laravel/framework from 13.11.2 to 13.12.0 by @dependabot[bot] in https://github.com/koel/koel/pull/2584 * chore(deps): bump dompurify from 3.4.9 to 3.4.11 by @dependabot[bot] in https://github.com/koel/koel/pull/2586 * fix: keep lyrics zoom controls pinned to the pane's top-right corner by @phanan in https://github.com/koel/koel/pull/2587 * fix: close context menu after rating from it by @phanan in https://github.com/koel/koel/pull/2588 * fix: show album/artist card separator in production as a standalone element by @phanan in https://github.com/koel/koel/pull/2589 * refactor: decompose login form into an auth orchestrator with a shared shell by @phanan in https://github.com/koel/koel/pull/2590 * fix: keep the peeked sidebar open briefly after the cursor leaves by @phanan in https://github.com/koel/koel/pull/2591 * feat: make the default role for first-time SSO users configurable by @phanan in https://github.com/koel/koel/pull/2594 * fix: allow collaborators to update shared playlists via Subsonic by @phanan in https://github.com/koel/koel/pull/2598 * feat: return synced lyrics from getLyricsBySongId when available by @phanan in https://github.com/koel/koel/pull/2599 * feat: extract embedded SYLT synchronised lyrics during scanning by @phanan in https://github.com/koel/koel/pull/2601 * fix: fixture filename collision on case-insensitive filesystems by @michalmytych in https://github.com/koel/koel/pull/2595 ##### New Contributors * @michalmytych made their first contribution in https://github.com/koel/koel/pull/2595 **Full Changelog**: https://github.com/koel/koel/compare/v9.9.1...v9.10.0 ### v9.9.1 - Date: 2026-06-20 - Version: v9.9.1 - Original notes: https://github.com/koel/koel/releases/tag/v9.9.1 - Permalink: https://whatsnew.fyi/product/koel/releases/v9.9.1 - **fixed** — Accept Subsonic API endpoints without the .view suffix ##### What's Changed * chore(deps): bump phpseclib/phpseclib from 3.0.52 to 3.0.55 by @dependabot[bot] in https://github.com/koel/koel/pull/2581 * chore: bump vite-plus from 0.1.11 to 0.1.24 by @phanan in https://github.com/koel/koel/pull/2582 * fix: accept Subsonic API endpoints without the .view suffix by @phanan in https://github.com/koel/koel/pull/2585 **Full Changelog**: https://github.com/koel/koel/compare/v9.9.0...v9.9.1 ### v9.9.0 - Date: 2026-06-16 - Version: v9.9.0 - Original notes: https://github.com/koel/koel/releases/tag/v9.9.0 - Permalink: https://whatsnew.fyi/product/koel/releases/v9.9.0 - **added** — Add two-factor authentication for all users - **added** — Add ability to reorder home blocks via overlay modal - **added** — Add cursor pagination for songs, albums, and artists - **fixed** — Fix equalizer preamp slider customization and initial position - **fixed** — Fix green drop indicator no longer leaves a gap on the left - **changed** — Auto-hash user passwords via Eloquent cast - **changed** — Drop the playlist-folder hatch and move via a single store method ##### What's Changed * feat: add two-factor authentication for all users by @phanan in https://github.com/koel/koel/pull/2565, https://github.com/koel/koel/pull/2566, https://github.com/koel/koel/pull/2567 * fix: equalizer preamp slider customization and initial position by @phanan in https://github.com/koel/koel/pull/2568 * refactor: auto-hash user passwords via Eloquent cast by @phanan in https://github.com/koel/koel/pull/2570 * chore(deps): bump guzzlehttp/psr7 from 2.10.1 to 2.11.0 by @dependabot[bot] in https://github.com/koel/koel/pull/2569 * feat: reorder home blocks via overlay modal by @phanan in https://github.com/koel/koel/pull/2573 * feat: cursor pagination for songs, albums, and artists by @phanan in https://github.com/koel/koel/pull/2574 * refactor: drop the playlist-folder hatch, move via a single store method by @phanan in https://github.com/koel/koel/pull/2575 * fix: green drop indicator no longer leaves a gap on the left by @phanan in https://github.com/koel/koel/pull/2577 * chore(deps): bump symfony/http-foundation from 7.4.8 to 7.4.13 by @dependabot[bot] in https://github.com/koel/koel/pull/2579 * chore(deps): bump symfony/routing from 7.4.12 to 7.4.13 by @dependabot[bot] in https://github.com/koel/koel/pull/2578 * chore(deps): bump dompurify from 3.4.0 to 3.4.9 by @dependabot[bot] in https://github.com/koel/koel/pull/2580 **Full Changelog**: https://github.com/koel/koel/compare/v9.8.0...v9.9.0 ### v9.8.0 - Date: 2026-06-07 - Version: v9.8.0 - Original notes: https://github.com/koel/koel/releases/tag/v9.8.0 - Permalink: https://whatsnew.fyi/product/koel/releases/v9.8.0 - **added** — Rate podcasts - **added** — Play album/artist from row thumbnails on hover - **added** — Add koel:storage:webdav setup command - **fixed** — Prevent frontend test runs from breaking the dev server - **fixed** — Make no-hover variant actually apply on touch devices - **fixed** — Stop test runs from corrupting asset URLs in snapshots - **fixed** — Shrink carousel overscroll mask on mobile - **fixed** — Hide carousel scroll buttons when the track fits - **fixed** — Avoid playlist factory name collisions in flaky tests - **fixed** — Make ScreenHeaderSkeleton responsive on mobile - **fixed** — Follow redirects when fetching podcast feeds ##### What's Changed * feat: rate podcasts by @phanan in https://github.com/koel/koel/pull/2550 * fix: prevent frontend test runs from breaking the dev server by @phanan in https://github.com/koel/koel/pull/2552 * fix: make no-hover variant actually apply on touch devices by @phanan in https://github.com/koel/koel/pull/2551 * feat: play album/artist from row thumbnails on hover by @phanan in https://github.com/koel/koel/pull/2553 * fix: stop test runs from corrupting asset URLs in snapshots by @phanan in https://github.com/koel/koel/pull/2554 * fix: shrink carousel overscroll mask on mobile by @phanan in https://github.com/koel/koel/pull/2556 * fix: hide carousel scroll buttons when the track fits by @phanan in https://github.com/koel/koel/pull/2555 * fix: avoid playlist factory name collisions in flaky tests by @phanan in https://github.com/koel/koel/pull/2557 * fix: make ScreenHeaderSkeleton responsive on mobile by @phanan in https://github.com/koel/koel/pull/2561 * fix: follow redirects when fetching podcast feeds by @phanan in https://github.com/koel/koel/pull/2564 * feat: add koel:storage:webdav setup command by @phanan in https://github.com/koel/koel/pull/2563 **Full Changelog**: https://github.com/koel/koel/compare/v9.7.1...v9.8.0 ### v9.7.1 - Date: 2026-06-04 - Version: v9.7.1 - Original notes: https://github.com/koel/koel/releases/tag/v9.7.1 - Permalink: https://whatsnew.fyi/product/koel/releases/v9.7.1 - **security** — Close remaining SSRF advisories including DNS rebinding, IPv6 transition, and bail scenarios ##### What's Changed * fix: close remaining SSRF advisories (DNS rebinding, IPv6 transition, bail) by @phanan in https://github.com/koel/koel/pull/2549 **Full Changelog**: https://github.com/koel/koel/compare/v9.7.0...v9.7.1 ### v9.7.0 - Date: 2026-06-04 - Version: v9.7.0 - Original notes: https://github.com/koel/koel/releases/tag/v9.7.0 - Permalink: https://whatsnew.fyi/product/koel/releases/v9.7.0 - **added** — Per-song star ratings - **added** — Rate albums and artists - **added** — Random album and artist carousels with reusable Carousel component - **added** — Table view mode for radio stations - **added** — Add EMBED_ENABLED toggle to disable embedding - **fixed** — Use heart icon consistently for favorite affordances - **fixed** — Accept grid/list/table on view-mode preferences - **fixed** — Normalize legacy 'list' view mode for albums and artists - **fixed** — Make album/artist card body fill the grid cell - **fixed** — Close SSRF gaps in Subsonic podcast and internet radio endpoints - **fixed** — Validate every redirect hop on outbound HTTP - **fixed** — Hide header action button on mobile when list is not sortable ##### What's Changed * feat: per-song star ratings by @phanan in https://github.com/koel/koel/pull/2536 * fix: use heart icon consistently for favorite affordances by @phanan in https://github.com/koel/koel/pull/2538 * feat: rate albums and artists by @phanan in https://github.com/koel/koel/pull/2539 * fix: accept grid/list/table on view-mode preferences by @phanan in https://github.com/koel/koel/pull/2541 * fix: normalize legacy 'list' view mode for albums and artists by @phanan in https://github.com/koel/koel/pull/2542 * feat: random album / artist carousels + reusable Carousel by @phanan in https://github.com/koel/koel/pull/2540 * fix: make album/artist card body fill the grid cell by @phanan in https://github.com/koel/koel/pull/2544 * feat: table view mode for radio stations by @phanan in https://github.com/koel/koel/pull/2543 * fix: close SSRF gaps in Subsonic podcast and internet radio endpoints by @phanan in https://github.com/koel/koel/pull/2545 * fix: validate every redirect hop on outbound HTTP by @phanan in https://github.com/koel/koel/pull/2546 * fix: hide header action button on mobile when list isn't sortable by @phanan in https://github.com/koel/koel/pull/2547 * feat: add EMBED_ENABLED toggle to disable embedding by @phanan in https://github.com/koel/koel/pull/2548 **Full Changelog**: https://github.com/koel/koel/compare/v9.6.0...v9.7.0 ### v9.6.0 - Date: 2026-05-31 - Version: v9.6.0 - Original notes: https://github.com/koel/koel/releases/tag/v9.6.0 - Permalink: https://whatsnew.fyi/product/koel/releases/v9.6.0 - **added** — Add Subsonic podcast endpoints - **added** — Add Subsonic play-queue endpoints - **changed** — Encrypt Subsonic API keys at rest ##### What's Changed * feat: add Subsonic podcast endpoints by @phanan in https://github.com/koel/koel/pull/2533 * feat: encrypt Subsonic API keys at rest by @phanan in https://github.com/koel/koel/pull/2534 * feat: add Subsonic play-queue endpoints by @phanan in https://github.com/koel/koel/pull/2535 **Full Changelog**: https://github.com/koel/koel/compare/v9.5.0...v9.6.0