mirror of
https://github.com/owntone/owntone-server.git
synced 2025-02-11 05:38:09 -05:00
1 line
61 KiB
HTML
1 line
61 KiB
HTML
<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="Linux/FreeBSD DAAP (iTunes) and MPD media server with support for AirPlay devices (multiroom), Apple Remote (and compatibles), Chromecast, Spotify and internet radio. "><meta name=author content="OwnTone maintainers"><link href=https://owntone.github.io/owntone-server/changelog/ rel=canonical><link href=../development/ rel=prev><link href=../json-api/ rel=next><link rel=icon href=../assets/favicon.ico><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.6.2"><title>Changelog - OwnTone</title><link rel=stylesheet href=../assets/stylesheets/main.d7758b05.min.css><link rel=stylesheet href=../assets/stylesheets/palette.06af60db.min.css><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"><style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style><link rel=stylesheet href=../assets/extra.css><script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#changelog class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=.. title=OwnTone class="md-header__button md-logo" aria-label=OwnTone data-md-component=logo> <img src=../assets/logo.svg alt=logo> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> OwnTone </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Changelog </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media=(prefers-color-scheme) data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="m14.3 16-.7-2h-3.2l-.7 2H7.8L11 7h2l3.2 9zM20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zm-9.15 3.96h2.3L12 9z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=white data-md-color-accent=teal aria-label="Switch to dark mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_2 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=black data-md-color-accent=teal aria-label="Switch to system preference" type=radio name=__palette id=__palette_2> <label class="md-header__button md-icon" title="Switch to system preference" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href=https://github.com/owntone/owntone-server title="Go to repository" class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg> </div> <div class=md-source__repository> owntone/owntone-server </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=.. class=md-tabs__link> Home </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../getting-started/ class=md-tabs__link> Documentation </a> </li> <li class=md-tabs__item> <a href=../json-api/ class=md-tabs__link> JSON API </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=.. title=OwnTone class="md-nav__button md-logo" aria-label=OwnTone data-md-component=logo> <img src=../assets/logo.svg alt=logo> </a> OwnTone </label> <div class=md-nav__source> <a href=https://github.com/owntone/owntone-server title="Go to repository" class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg> </div> <div class=md-source__repository> owntone/owntone-server </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=.. class=md-nav__link> <span class=md-ellipsis> Home </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2 checked> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex> <span class=md-ellipsis> Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=true> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../getting-started/ class=md-nav__link> <span class=md-ellipsis> Getting Started </span> </a> </li> <li class=md-nav__item> <a href=../installation/ class=md-nav__link> <span class=md-ellipsis> Installation </span> </a> </li> <li class=md-nav__item> <a href=../configuration/ class=md-nav__link> <span class=md-ellipsis> Configuration </span> </a> </li> <li class=md-nav__item> <a href=../building/ class=md-nav__link> <span class=md-ellipsis> Building </span> </a> </li> <li class=md-nav__item> <a href=../library/ class=md-nav__link> <span class=md-ellipsis> Library </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <label class=md-nav__link for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class=md-ellipsis> Control </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Control </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../control-clients/mobile/ class=md-nav__link> <span class=md-ellipsis> Mobile Device </span> </a> </li> <li class=md-nav__item> <a href=../control-clients/desktop/ class=md-nav__link> <span class=md-ellipsis> Desktop </span> </a> </li> <li class=md-nav__item> <a href=../control-clients/web/ class=md-nav__link> <span class=md-ellipsis> Browser </span> </a> </li> <li class=md-nav__item> <a href=../control-clients/cli-api/ class=md-nav__link> <span class=md-ellipsis> API and CLI </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_7> <label class=md-nav__link for=__nav_2_7 id=__nav_2_7_label tabindex=0> <span class=md-ellipsis> Audio Outputs </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_7_label aria-expanded=false> <label class=md-nav__title for=__nav_2_7> <span class="md-nav__icon md-icon"></span> Audio Outputs </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../audio-outputs/airplay/ class=md-nav__link> <span class=md-ellipsis> AirPlay </span> </a> </li> <li class=md-nav__item> <a href=../audio-outputs/chromecast/ class=md-nav__link> <span class=md-ellipsis> Chromecast </span> </a> </li> <li class=md-nav__item> <a href=../audio-outputs/local-audio/ class=md-nav__link> <span class=md-ellipsis> Local Audio </span> </a> </li> <li class=md-nav__item> <a href=../audio-outputs/mobile/ class=md-nav__link> <span class=md-ellipsis> Mobile Device </span> </a> </li> <li class=md-nav__item> <a href=../audio-outputs/web/ class=md-nav__link> <span class=md-ellipsis> Web </span> </a> </li> <li class=md-nav__item> <a href=../audio-outputs/roku/ class=md-nav__link> <span class=md-ellipsis> Roku </span> </a> </li> <li class=md-nav__item> <a href=../audio-outputs/streaming/ class=md-nav__link> <span class=md-ellipsis> Streaming </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../media-clients/ class=md-nav__link> <span class=md-ellipsis> Media Clients </span> </a> </li> <li class=md-nav__item> <a href=../artwork/ class=md-nav__link> <span class=md-ellipsis> Artwork </span> </a> </li> <li class=md-nav__item> <a href=../playlists/ class=md-nav__link> <span class=md-ellipsis> Playlists and Radio </span> </a> </li> <li class=md-nav__item> <a href=../smart-playlists/ class=md-nav__link> <span class=md-ellipsis> Smart Playlists </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_12> <label class=md-nav__link for=__nav_2_12 id=__nav_2_12_label tabindex=0> <span class=md-ellipsis> Services Integration </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_12_label aria-expanded=false> <label class=md-nav__title for=__nav_2_12> <span class="md-nav__icon md-icon"></span> Services Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../integrations/spotify/ class=md-nav__link> <span class=md-ellipsis> Spotify </span> </a> </li> <li class=md-nav__item> <a href=../integrations/lastfm/ class=md-nav__link> <span class=md-ellipsis> LastFM </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_13> <label class=md-nav__link for=__nav_2_13 id=__nav_2_13_label tabindex=0> <span class=md-ellipsis> Advanced Setup </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_13_label aria-expanded=false> <label class=md-nav__title for=__nav_2_13> <span class="md-nav__icon md-icon"></span> Advanced Setup </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../advanced/outputs-alsa/ class=md-nav__link> <span class=md-ellipsis> ALSA </span> </a> </li> <li class=md-nav__item> <a href=../advanced/outputs-pulse/ class=md-nav__link> <span class=md-ellipsis> PulseAudio </span> </a> </li> <li class=md-nav__item> <a href=../advanced/radio-streams/ class=md-nav__link> <span class=md-ellipsis> Radio Streams </span> </a> </li> <li class=md-nav__item> <a href=../advanced/remote-access/ class=md-nav__link> <span class=md-ellipsis> Remote Access </span> </a> </li> <li class=md-nav__item> <a href=../advanced/multiple-instances/ class=md-nav__link> <span class=md-ellipsis> Multiple Instances </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../development/ class=md-nav__link> <span class=md-ellipsis> Development </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Changelog </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Changelog </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#version-2811-2025-01-26 class=md-nav__link> <span class=md-ellipsis> Version 28.11 - 2025-01-26 </span> </a> </li> <li class=md-nav__item> <a href=#version-2810-2024-09-12 class=md-nav__link> <span class=md-ellipsis> Version 28.10 - 2024-09-12 </span> </a> </li> <li class=md-nav__item> <a href=#version-289-2024-01-18 class=md-nav__link> <span class=md-ellipsis> Version 28.9 - 2024-01-18 </span> </a> </li> <li class=md-nav__item> <a href=#version-288 class=md-nav__link> <span class=md-ellipsis> Version 28.8 </span> </a> </li> <li class=md-nav__item> <a href=#version-287 class=md-nav__link> <span class=md-ellipsis> Version 28.7 </span> </a> </li> <li class=md-nav__item> <a href=#version-286 class=md-nav__link> <span class=md-ellipsis> Version 28.6 </span> </a> </li> <li class=md-nav__item> <a href=#version-285 class=md-nav__link> <span class=md-ellipsis> Version 28.5 </span> </a> </li> <li class=md-nav__item> <a href=#version-284 class=md-nav__link> <span class=md-ellipsis> Version 28.4 </span> </a> </li> <li class=md-nav__item> <a href=#version-283 class=md-nav__link> <span class=md-ellipsis> Version 28.3 </span> </a> </li> <li class=md-nav__item> <a href=#version-282 class=md-nav__link> <span class=md-ellipsis> Version 28.2 </span> </a> </li> <li class=md-nav__item> <a href=#version-281 class=md-nav__link> <span class=md-ellipsis> Version 28.1 </span> </a> </li> <li class=md-nav__item> <a href=#version-280 class=md-nav__link> <span class=md-ellipsis> Version 28.0 </span> </a> </li> <li class=md-nav__item> <a href=#version-274 class=md-nav__link> <span class=md-ellipsis> Version 27.4 </span> </a> </li> <li class=md-nav__item> <a href=#version-273 class=md-nav__link> <span class=md-ellipsis> Version 27.3 </span> </a> </li> <li class=md-nav__item> <a href=#version-272 class=md-nav__link> <span class=md-ellipsis> Version 27.2 </span> </a> </li> <li class=md-nav__item> <a href=#version-271 class=md-nav__link> <span class=md-ellipsis> Version 27.1 </span> </a> </li> <li class=md-nav__item> <a href=#version-270 class=md-nav__link> <span class=md-ellipsis> Version 27.0 </span> </a> </li> <li class=md-nav__item> <a href=#version-265 class=md-nav__link> <span class=md-ellipsis> Version 26.5 </span> </a> </li> <li class=md-nav__item> <a href=#version-264 class=md-nav__link> <span class=md-ellipsis> Version 26.4 </span> </a> </li> <li class=md-nav__item> <a href=#version-263 class=md-nav__link> <span class=md-ellipsis> Version 26.3 </span> </a> </li> <li class=md-nav__item> <a href=#version-262 class=md-nav__link> <span class=md-ellipsis> Version 26.2 </span> </a> </li> <li class=md-nav__item> <a href=#version-261 class=md-nav__link> <span class=md-ellipsis> Version 26.1 </span> </a> </li> <li class=md-nav__item> <a href=#version-260 class=md-nav__link> <span class=md-ellipsis> Version 26.0 </span> </a> </li> <li class=md-nav__item> <a href=#version-250 class=md-nav__link> <span class=md-ellipsis> Version 25.0 </span> </a> </li> <li class=md-nav__item> <a href=#version-242 class=md-nav__link> <span class=md-ellipsis> Version 24.2 </span> </a> </li> <li class=md-nav__item> <a href=#version-241 class=md-nav__link> <span class=md-ellipsis> Version 24.1 </span> </a> </li> <li class=md-nav__item> <a href=#version-240 class=md-nav__link> <span class=md-ellipsis> Version 24.0 </span> </a> </li> <li class=md-nav__item> <a href=#version-234 class=md-nav__link> <span class=md-ellipsis> Version 23.4 </span> </a> </li> <li class=md-nav__item> <a href=#version-233 class=md-nav__link> <span class=md-ellipsis> Version 23.3 </span> </a> </li> <li class=md-nav__item> <a href=#version-232 class=md-nav__link> <span class=md-ellipsis> Version 23.2 </span> </a> </li> <li class=md-nav__item> <a href=#version-231 class=md-nav__link> <span class=md-ellipsis> Version 23.1 </span> </a> </li> <li class=md-nav__item> <a href=#version-230 class=md-nav__link> <span class=md-ellipsis> Version 23.0 </span> </a> </li> <li class=md-nav__item> <a href=#version-222 class=md-nav__link> <span class=md-ellipsis> Version 22.2 </span> </a> </li> <li class=md-nav__item> <a href=#version-221 class=md-nav__link> <span class=md-ellipsis> Version 22.1 </span> </a> </li> <li class=md-nav__item> <a href=#version-220 class=md-nav__link> <span class=md-ellipsis> Version 22.0 </span> </a> </li> <li class=md-nav__item> <a href=#version-210 class=md-nav__link> <span class=md-ellipsis> Version 21.0 </span> </a> </li> <li class=md-nav__item> <a href=#version-200 class=md-nav__link> <span class=md-ellipsis> Version 20.0 </span> </a> </li> <li class=md-nav__item> <a href=#version-019 class=md-nav__link> <span class=md-ellipsis> Version 0.19 </span> </a> </li> <li class=md-nav__item> <a href=#version-018 class=md-nav__link> <span class=md-ellipsis> Version 0.18 </span> </a> </li> <li class=md-nav__item> <a href=#version-017 class=md-nav__link> <span class=md-ellipsis> Version 0.17 </span> </a> </li> <li class=md-nav__item> <a href=#version-016 class=md-nav__link> <span class=md-ellipsis> Version 0.16 </span> </a> </li> <li class=md-nav__item> <a href=#version-015 class=md-nav__link> <span class=md-ellipsis> Version 0.15 </span> </a> </li> <li class=md-nav__item> <a href=#version-014 class=md-nav__link> <span class=md-ellipsis> Version 0.14 </span> </a> </li> <li class=md-nav__item> <a href=#version-013 class=md-nav__link> <span class=md-ellipsis> Version 0.13 </span> </a> </li> <li class=md-nav__item> <a href=#version-012 class=md-nav__link> <span class=md-ellipsis> Version 0.12 </span> </a> </li> <li class=md-nav__item> <a href=#version-011 class=md-nav__link> <span class=md-ellipsis> Version 0.11 </span> </a> </li> <li class=md-nav__item> <a href=#version-010 class=md-nav__link> <span class=md-ellipsis> Version 0.10 </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../json-api/ class=md-nav__link> <span class=md-ellipsis> JSON API </span> </a> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#version-2811-2025-01-26 class=md-nav__link> <span class=md-ellipsis> Version 28.11 - 2025-01-26 </span> </a> </li> <li class=md-nav__item> <a href=#version-2810-2024-09-12 class=md-nav__link> <span class=md-ellipsis> Version 28.10 - 2024-09-12 </span> </a> </li> <li class=md-nav__item> <a href=#version-289-2024-01-18 class=md-nav__link> <span class=md-ellipsis> Version 28.9 - 2024-01-18 </span> </a> </li> <li class=md-nav__item> <a href=#version-288 class=md-nav__link> <span class=md-ellipsis> Version 28.8 </span> </a> </li> <li class=md-nav__item> <a href=#version-287 class=md-nav__link> <span class=md-ellipsis> Version 28.7 </span> </a> </li> <li class=md-nav__item> <a href=#version-286 class=md-nav__link> <span class=md-ellipsis> Version 28.6 </span> </a> </li> <li class=md-nav__item> <a href=#version-285 class=md-nav__link> <span class=md-ellipsis> Version 28.5 </span> </a> </li> <li class=md-nav__item> <a href=#version-284 class=md-nav__link> <span class=md-ellipsis> Version 28.4 </span> </a> </li> <li class=md-nav__item> <a href=#version-283 class=md-nav__link> <span class=md-ellipsis> Version 28.3 </span> </a> </li> <li class=md-nav__item> <a href=#version-282 class=md-nav__link> <span class=md-ellipsis> Version 28.2 </span> </a> </li> <li class=md-nav__item> <a href=#version-281 class=md-nav__link> <span class=md-ellipsis> Version 28.1 </span> </a> </li> <li class=md-nav__item> <a href=#version-280 class=md-nav__link> <span class=md-ellipsis> Version 28.0 </span> </a> </li> <li class=md-nav__item> <a href=#version-274 class=md-nav__link> <span class=md-ellipsis> Version 27.4 </span> </a> </li> <li class=md-nav__item> <a href=#version-273 class=md-nav__link> <span class=md-ellipsis> Version 27.3 </span> </a> </li> <li class=md-nav__item> <a href=#version-272 class=md-nav__link> <span class=md-ellipsis> Version 27.2 </span> </a> </li> <li class=md-nav__item> <a href=#version-271 class=md-nav__link> <span class=md-ellipsis> Version 27.1 </span> </a> </li> <li class=md-nav__item> <a href=#version-270 class=md-nav__link> <span class=md-ellipsis> Version 27.0 </span> </a> </li> <li class=md-nav__item> <a href=#version-265 class=md-nav__link> <span class=md-ellipsis> Version 26.5 </span> </a> </li> <li class=md-nav__item> <a href=#version-264 class=md-nav__link> <span class=md-ellipsis> Version 26.4 </span> </a> </li> <li class=md-nav__item> <a href=#version-263 class=md-nav__link> <span class=md-ellipsis> Version 26.3 </span> </a> </li> <li class=md-nav__item> <a href=#version-262 class=md-nav__link> <span class=md-ellipsis> Version 26.2 </span> </a> </li> <li class=md-nav__item> <a href=#version-261 class=md-nav__link> <span class=md-ellipsis> Version 26.1 </span> </a> </li> <li class=md-nav__item> <a href=#version-260 class=md-nav__link> <span class=md-ellipsis> Version 26.0 </span> </a> </li> <li class=md-nav__item> <a href=#version-250 class=md-nav__link> <span class=md-ellipsis> Version 25.0 </span> </a> </li> <li class=md-nav__item> <a href=#version-242 class=md-nav__link> <span class=md-ellipsis> Version 24.2 </span> </a> </li> <li class=md-nav__item> <a href=#version-241 class=md-nav__link> <span class=md-ellipsis> Version 24.1 </span> </a> </li> <li class=md-nav__item> <a href=#version-240 class=md-nav__link> <span class=md-ellipsis> Version 24.0 </span> </a> </li> <li class=md-nav__item> <a href=#version-234 class=md-nav__link> <span class=md-ellipsis> Version 23.4 </span> </a> </li> <li class=md-nav__item> <a href=#version-233 class=md-nav__link> <span class=md-ellipsis> Version 23.3 </span> </a> </li> <li class=md-nav__item> <a href=#version-232 class=md-nav__link> <span class=md-ellipsis> Version 23.2 </span> </a> </li> <li class=md-nav__item> <a href=#version-231 class=md-nav__link> <span class=md-ellipsis> Version 23.1 </span> </a> </li> <li class=md-nav__item> <a href=#version-230 class=md-nav__link> <span class=md-ellipsis> Version 23.0 </span> </a> </li> <li class=md-nav__item> <a href=#version-222 class=md-nav__link> <span class=md-ellipsis> Version 22.2 </span> </a> </li> <li class=md-nav__item> <a href=#version-221 class=md-nav__link> <span class=md-ellipsis> Version 22.1 </span> </a> </li> <li class=md-nav__item> <a href=#version-220 class=md-nav__link> <span class=md-ellipsis> Version 22.0 </span> </a> </li> <li class=md-nav__item> <a href=#version-210 class=md-nav__link> <span class=md-ellipsis> Version 21.0 </span> </a> </li> <li class=md-nav__item> <a href=#version-200 class=md-nav__link> <span class=md-ellipsis> Version 20.0 </span> </a> </li> <li class=md-nav__item> <a href=#version-019 class=md-nav__link> <span class=md-ellipsis> Version 0.19 </span> </a> </li> <li class=md-nav__item> <a href=#version-018 class=md-nav__link> <span class=md-ellipsis> Version 0.18 </span> </a> </li> <li class=md-nav__item> <a href=#version-017 class=md-nav__link> <span class=md-ellipsis> Version 0.17 </span> </a> </li> <li class=md-nav__item> <a href=#version-016 class=md-nav__link> <span class=md-ellipsis> Version 0.16 </span> </a> </li> <li class=md-nav__item> <a href=#version-015 class=md-nav__link> <span class=md-ellipsis> Version 0.15 </span> </a> </li> <li class=md-nav__item> <a href=#version-014 class=md-nav__link> <span class=md-ellipsis> Version 0.14 </span> </a> </li> <li class=md-nav__item> <a href=#version-013 class=md-nav__link> <span class=md-ellipsis> Version 0.13 </span> </a> </li> <li class=md-nav__item> <a href=#version-012 class=md-nav__link> <span class=md-ellipsis> Version 0.12 </span> </a> </li> <li class=md-nav__item> <a href=#version-011 class=md-nav__link> <span class=md-ellipsis> Version 0.11 </span> </a> </li> <li class=md-nav__item> <a href=#version-010 class=md-nav__link> <span class=md-ellipsis> Version 0.10 </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <h1 id=changelog>Changelog<a class=headerlink href=#changelog title="Permanent link">¶</a></h1> <h2 id=version-2811-2025-01-26>Version 28.11 - 2025-01-26<a class=headerlink href=#version-2811-2025-01-26 title="Permanent link">¶</a></h2> <ul> <li>fix: retrieval of artwork from online sources</li> <li>fix: mpd speaker selection</li> <li>fix: autoconf warnings</li> <li>fix: Apple Music/iTunes not working on Airplay host</li> <li>web UI: Now Playing does not stop play progress updates when pausing</li> <li>web UI: add ability to access the server externally</li> <li>new: internet radio "Streamurl" options</li> <li>new: support libevent as WS server instead of libwebsockets</li> <li>new: template for VSCode</li> <li>new: mpd updates, version 0.23.0, e.g. getvol, readpicture, albumart</li> <li>new: API for setting skip_count and play_count directly</li> </ul> <h2 id=version-2810-2024-09-12>Version 28.10 - 2024-09-12<a class=headerlink href=#version-2810-2024-09-12 title="Permanent link">¶</a></h2> <ul> <li>fix: playlist scanner ignoring lines starting with non-ascii chars</li> <li>fix: last seconds of a track sometimes being skipped</li> <li>fix: Apple Music password-based auth</li> <li>fix: missing file scan when modified multiple times within a second</li> <li>fix: Roku M1001 crash</li> <li>fix: speakers changing IP addresses (error "Got RR type A size 16")</li> <li>fix: playlist rename not registered</li> <li>fix: problems with DAAP and old dates ("Integer value too large")</li> <li>fix: compability with ffmpeg 7 (fixes build error)</li> <li>web UI: many smaller improvements, e.g. sort by release date</li> <li>web UI: traditional Chinese translation</li> <li>new: ALAC transcoding for RSP/DAAP streaming</li> <li>new: ability to save id3 metadata</li> <li>config: change "trusted_networks" to have new value "lan" as default</li> <li>config: new option to announce a MPD httpd plugin (stream from server)</li> <li>config: set ipv6 to disabled by default due to unknown Airplay issue</li> <li>config: deprecate "cache_path", replaced by "cache_dir"</li> <li>dependency: libxml2 instead of mxml</li> </ul> <h2 id=version-289-2024-01-18>Version 28.9 - 2024-01-18<a class=headerlink href=#version-289-2024-01-18 title="Permanent link">¶</a></h2> <ul> <li>web UI improvements:<ul> <li>display lyrics metadata</li> <li>toggle Spotify on/off in some views</li> <li>many minor improvements</li> </ul> </li> <li>use compressed ALAC for Airplay for bandwidth + fixes esp32 issue</li> <li>don't merge Spotify albums with local albums</li> <li>handle playlist with Unicode BOM</li> <li>json API add tracks to queue returns info on added tracks</li> <li>replace syscall with gettid, syscall deprecated on MacOS</li> <li>fix issue where m3u genre doesn't override despite m3u_override = true</li> <li>fix possible crash from use-after-free</li> <li>fix FreeBSD possible crash</li> <li>fix crash when keys of incorrect length are used for legacy pairing</li> </ul> <h2 id=version-288>Version 28.8<a class=headerlink href=#version-288 title="Permanent link">¶</a></h2> <ul> <li>fix MacOS bind error: "Protocol wrong type for socket"</li> <li>fix BSD build error (no SYS_gettid)</li> <li>fix ALAC missing end tag causing ffmpeg decoder warnings</li> <li>fix crash if Spotify AP resolver is unavailable</li> <li>fix duplicates if file within library is replaced</li> <li>fix fatal error due to mutex being zeroed</li> </ul> <h2 id=version-287>Version 28.7<a class=headerlink href=#version-287 title="Permanent link">¶</a></h2> <ul> <li>fix compability with ffmpeg 6</li> <li>web UI improvements:<ul> <li>easier volume sliders</li> <li>incorrect display of genre</li> <li>Chinese translation</li> <li>fix removing RSS podcasts</li> <li>sort by rating for composer, genre and artist tracks</li> <li>(and much more)</li> </ul> </li> <li>changes to artwork search orders (easier static artwork for pipes)</li> <li>major refactor of the http server improving mp3 streaming</li> <li>support for m3u8 playlist files</li> <li>allow mixed ipv4/ipv6 mdns</li> <li>fix issue with device name capitalization (TuneAero issue)</li> <li>drop support for libevent < 2.1.4</li> </ul> <h2 id=version-286>Version 28.6<a class=headerlink href=#version-286 title="Permanent link">¶</a></h2> <ul> <li>German translation of web UI</li> <li>web UI: fix error messages not displaying</li> <li>fix low resolution Spotify artwork</li> <li>fix incorrect display of date released pre 1970</li> <li>fix for Denon speakers when pausing</li> <li>support password authentication for Airplay 2</li> <li>support for user config ffmpeg audio filters</li> </ul> <h2 id=version-285>Version 28.5<a class=headerlink href=#version-285 title="Permanent link">¶</a></h2> <ul> <li>French translation of web UI</li> <li>improved web UI loading of images</li> <li>add support for Airplay 2 password based auth</li> <li>fix some Airplay speakers turning on by themselves</li> <li>fix parsing of CRLF and NOT in smart playlists and allow larger sizes</li> <li>fix possible crash after Avahi restart</li> <li>fix for Remote - play item from 'up next' when stopped</li> <li>use configured bind_address to set mdns network interface</li> </ul> <h2 id=version-284>Version 28.4<a class=headerlink href=#version-284 title="Permanent link">¶</a></h2> <ul> <li>fix broken Spotify after libspotify sunset</li> <li>remove antlr3 dependency, use bison/flex instead</li> <li>improve search by supporting diacritics and Unicode case folding</li> <li>add support for new output: Roku/Soundbridge RCP</li> <li>switch to MkDocs for documentation</li> <li>smart playlists fixups and new "this week" param</li> <li>fix 'add next' when in queue shuffle mode</li> <li>web UI improvements:<ul> <li>migration to Vue 3 and Vite</li> <li>honor "radio_playlists" config setting</li> <li>display of search results for composers and playlists</li> <li>add album / track count to genre and composer pages</li> <li>fix incorrect sorting of album/artist searches</li> <li>minor UI fixes</li> </ul> </li> <li>fix for Spotify config option album_override</li> <li>improved Spotify scan performance</li> <li>generic browse endpoints for the json api</li> <li>fix slow shutdown with some libwebsocket versions</li> </ul> <h2 id=version-283>Version 28.3<a class=headerlink href=#version-283 title="Permanent link">¶</a></h2> <ul> <li>web UI improvements, e.g.:<ul> <li>composer views</li> <li>partial scan (e.g. only update RSS feeds)</li> <li>fix http stream button not clickable in mobile view</li> <li>fix Spotify playlists not showing</li> <li>handling of not playable Spotify tracks</li> <li>handling of podcast play counts</li> </ul> </li> <li>support for Spotify podcasts</li> <li>updates for ffmpeg 5</li> <li>better Spotify logout</li> <li>user "usermark" field for user flagging of various track states</li> <li>fix for 0-byte files crashing ffmpeg</li> <li>fix metadata pipe deadlock and artwork memleak-on-error</li> <li>better handling of Spotify disconnects</li> <li>fix rare Airplay pairing error</li> <li>many minor error handling fixes</li> </ul> <h2 id=version-282>Version 28.2<a class=headerlink href=#version-282 title="Permanent link">¶</a></h2> <ul> <li>add Spotify integration that doesn't depend on libspotify</li> <li>partial support for AirPlay events (Homepod buttons)</li> <li>web UI upgraded, now 1.1.0:<ul> <li>show "comment" field in track details</li> <li>drop double login to Spotify when not using libspotify</li> </ul> </li> <li>easier install by letting 'make install' add user and service files</li> <li>preserve existing conf file when running 'make install'</li> <li>support for "comment" field when making smart playlists</li> <li>fix support for dacp device-volume</li> <li>fix issue where source file sort tags where ignored</li> <li>fix for Roku (RSP) artist display issue</li> <li>fix bug when 'bind_address' option is used</li> <li>fix for CVE-2021-38383</li> <li>fix some minor time-of-check time-of-use bugs</li> </ul> <h2 id=version-281>Version 28.1<a class=headerlink href=#version-281 title="Permanent link">¶</a></h2> <ul> <li>fix incompability in 28.0 with Debian Buster's libwebsockets 2.0</li> </ul> <h2 id=version-280>Version 28.0<a class=headerlink href=#version-280 title="Permanent link">¶</a></h2> <ul> <li>rename forked-daapd to OwnTone + new logo</li> <li>fix web UI slow updates due to websockets 3.x changes</li> <li>support for ALAC sort tags</li> <li>support for remote pls/m3u with https streams</li> <li>add /api/queue?id=now_playing json API shortcut</li> <li>fix possible crash on Pulseaudio error callback</li> <li>fix possible segfault-on-exit</li> <li>fix websockets not working on FreeBSD</li> <li>refactor how the server binds to sockets (use dual stack ipv4/6)</li> <li>configurable interface/address binding</li> </ul> <h2 id=version-274>Version 27.4<a class=headerlink href=#version-274 title="Permanent link">¶</a></h2> <ul> <li>fix web server path traversal vulnerability</li> </ul> <h2 id=version-273>Version 27.3<a class=headerlink href=#version-273 title="Permanent link">¶</a></h2> <ul> <li>support for AirPlay 2 speakers, incl. compressed ALAC</li> <li>web UI upgraded, now v0.8.5:<ul> <li>new design/layout</li> <li>optimize "Recently added"</li> <li>Spotify search dialogue improvements</li> <li>drop separate admin web page, now integrated in main web</li> <li>podcast deletion</li> <li>make Radio a top level item</li> <li>show release dates</li> <li>new sorting options</li> <li>prevent browser caching of playlists</li> <li>additional settings</li> </ul> </li> <li>improved Chromecast streaming (retransmisson, adaptive etc.)</li> <li>JSON api support for updating metadata of queue items</li> <li>JSON api new fields, e.g. time_added, time_played and seek</li> <li>fix for some Chromecasts disconnecting</li> <li>new algorithm for more natural ALSA volume adjustments</li> <li>new nickname option for AirPlay and Chromecast</li> <li>mpd fixes (nextsong, multiple commands)</li> <li>charset flexibility when getting ICY metadata from streams</li> <li>adaptive probing of radio streams</li> <li>libplist and libsodium now required</li> <li>fixes for library update events</li> <li>fixes to speaker selection and unintentional volume changes</li> <li>fix some minor memleaks</li> <li>support shairport-sync metadata pipe flush event</li> <li>misc logging fixup</li> </ul> <h2 id=version-272>Version 27.2<a class=headerlink href=#version-272 title="Permanent link">¶</a></h2> <ul> <li>web UI upgraded to v0.7.2:<ul> <li>show cover artwork in album pages and lazy loading of artwork</li> <li>show playlist folders</li> <li>use sass/scss for css files</li> <li>add "Radio" tab to the music section</li> <li>add settings for artwork sources</li> <li>add pop up dialog for Remote pairing requests</li> <li>support adding/removing podcast subscriptions</li> <li>support marking all new podcast episodes/all episodes as played</li> <li>support searching by smart pl queries</li> <li>skip buttons for audiobooks and podcasts</li> <li>show localized times/dates</li> <li>generate colored placeholder image if cover artwork is missing</li> <li>show "cast" icon for Chromecast outputs</li> <li>styling changes of the navbars and moving the volume controls</li> </ul> </li> <li>new speaker selection logic (persist user choice even after failure)</li> <li>speaker autoselect no longer enabled by default</li> <li>removed old admin page, not necessary any more</li> <li>fix/workaround for Apple TV's and HomePods that disconnect</li> <li>support for RSS feeds</li> <li>support for nested smart playlists (playlist folders)</li> <li>support for online artwork sources e.g. Discogs, Coverartarchive</li> <li>support for radio StreamUrl's that point to json with metadata</li> <li>fix incorrect artwork shown for unknown album/artists</li> <li>fix issue parsing shairport-sync progress metadata</li> <li>fix missing Spofity logout option</li> <li>fix for embedded artwork not working with ffmpeg 4.3+</li> <li>some smart PL improvements, e.g. support for more tags</li> <li>config option for Airplay timing/control ports (eases firewalling)</li> <li>quicker loading of radio streams (smaller probing)</li> <li>workaround for mxml 2.10 significant memleak</li> <li>some fixes for Roku (RSP)</li> <li>drop libspotify for artwork, doesn't work any more</li> <li>documentation improvements</li> </ul> <h2 id=version-271>Version 27.1<a class=headerlink href=#version-271 title="Permanent link">¶</a></h2> <ul> <li>web UI upgraded to v0.6.0: settings page, display more Spotify data</li> <li>support for volumeup, volumedown and mutetoggle DACP commands</li> <li>support for multiple ALSA devices</li> <li>suppress repeated logging of same message to avoid log file bloat</li> <li>fix opening too many files due to looping with shairport-sync</li> <li>fix for genres with single quotes in name</li> <li>fix for incorrect update of time_added metadata</li> <li>fix some small memleaks and missing cleanup</li> </ul> <h2 id=version-270>Version 27.0<a class=headerlink href=#version-270 title="Permanent link">¶</a></h2> <ul> <li>no fixed resampling to 44100/16, play source quality if possible</li> <li>Chromecast: quick start, better quality (48000/16 Opus encoded)</li> <li>performance enhancements: Remote and iTunes will load quicker</li> <li>alsa sync with variable sample rate, avoiding audible "clicks"</li> <li>web UI upgraded to v0.5.6, e.g. play non-library tracks, saving queue</li> <li>fix for Pebble mpd client (and possibly others)</li> <li>fix issue with some HLS radio stations</li> <li>support for https streams</li> <li>fix for artwork showing dithered</li> <li>ICY metadata in forked-daapd's mp3 stream</li> <li>support for Spotify collaborative playlists</li> <li>support for Shairport artwork via pipe</li> <li>configurable mp3 streaming quality</li> <li>json api improvements, e.g. for toggling speakers</li> <li>json api/web ui: Relative seeking</li> <li>support for some http seeking</li> <li>fix for macOS Catalina’s Apple Music</li> </ul> <h2 id=version-265>Version 26.5<a class=headerlink href=#version-265 title="Permanent link">¶</a></h2> <ul> <li>json api/web ui: file view</li> <li>web ui: artwork support</li> <li>web ui: "Add next" and genre tab</li> <li>Airplay connection test improvements</li> <li>support for https streams in m3u's</li> <li>use Spotify web api for artwork instead of libspotify</li> <li>option to make Airplay devices permanent or excluded</li> <li>support for tracks and disc items in smart playlists</li> <li>db refactor, fix issues with play count, time played etc</li> <li>json api: more options available when adding items to the queue</li> <li>json api: player/toggle</li> <li>mpd version 0.20 support + support for "listfiles" command</li> <li>fix double http auth decline issue</li> </ul> <h2 id=version-264>Version 26.4<a class=headerlink href=#version-264 title="Permanent link">¶</a></h2> <ul> <li>automatic rating</li> <li>fix issue in 26.3 causing invalid time_skipped values in the db</li> <li>improved fallback to ipv4 if ipv6 fails</li> <li>fix issue returning too many queue items to clients</li> <li>fix missing prompt for library password</li> </ul> <h2 id=version-263>Version 26.3<a class=headerlink href=#version-263 title="Permanent link">¶</a></h2> <ul> <li>fix AirPlay 2 devices (e.g. Sonos Beam and Airport Express)</li> <li>fix mdns problems with ATV4 and ipv6</li> <li>fix possible segfault if null user-agent</li> <li>new metadata: Skip Count and Times Skipped (incl iTunes XML mapping)</li> <li>iTunes XML mapping of Play Count and Play Date</li> <li>fix for crashes when client provides no User-Agent</li> <li>logging improvements</li> </ul> <h2 id=version-262>Version 26.2<a class=headerlink href=#version-262 title="Permanent link">¶</a></h2> <ul> <li>fix for db indexes not being used on fresh installs</li> </ul> <h2 id=version-261>Version 26.1<a class=headerlink href=#version-261 title="Permanent link">¶</a></h2> <ul> <li>player web interface</li> <li>support for Airplay speaker control commands</li> <li>add non-library items (e.g. radio stations) to the queue</li> <li>fix for keeping connection alive towards some devices e.g. old ApEx's</li> <li>extension of the JSON API</li> <li>under-the-hood improvements of Spotify integration</li> <li>fix for Android "Remote for iTunes"</li> <li>fix ffmpeg segfault when jpeg encoding</li> <li>performance improvements + misc</li> </ul> <h2 id=version-260>Version 26.0<a class=headerlink href=#version-260 title="Permanent link">¶</a></h2> <ul> <li>added web interface</li> <li>added JSON API</li> <li>new mpd commands (e.g. sticker, urlhandlers, playlistfind)</li> <li>support for adding non-library urls to the playback queue</li> <li>support for id3 grouping tags</li> <li>support for filesystems with ACL's</li> <li>use Spotify web api to load all playlists</li> <li>improved client authentication options</li> <li>only rescan playlists if changed -> faster startup</li> <li>fix bug related to dacp/daap client revision number handling</li> <li>fix bugs related to import of iTunes XML playlists</li> <li>restore ATV4/tvOS11 support by removing requirement for timing_port</li> <li>fixes for Hyperfine Remote</li> <li>improve database performance</li> <li>make sure daemons listen on both ipv4 and ipv6 (for BSD)</li> <li>ffmpeg/transcoding refactored for new ffmpeg API</li> <li>and more...</li> </ul> <h2 id=version-250>Version 25.0<a class=headerlink href=#version-250 title="Permanent link">¶</a></h2> <ul> <li>improved playback resilience</li> <li>substitute packet skipping (producing audio "clicks") with start/stop</li> <li>support for MacOSX with macports and Bonjour mDNS</li> <li>Airplay device verification for Apple TV 4 w/tvOS 10.2 (uses libsodium)</li> <li>support for Spotify web api (saved tracks/albums + Discover Weekly)</li> <li>automatic playback of pipes + support for Shairport metadata pipes</li> <li>added pipe audio output (fifo)</li> <li>persistent queues (queue remains across server restart)</li> <li>support for browser based clients</li> <li>mpd sendmessage: set individual speaker volume, remote pairing</li> <li>mpd add <a href=http://path-to-radiostream>http://path-to-radiostream</a> (i.e. add non-library items)</li> <li>new options, e.g. exclude speakers from list</li> <li>fix for shuffle mode</li> <li>fix broken PNG artwork rescaling</li> <li>use friendly Chromecast name in speaker list</li> <li>support for libav/ffmpeg dual installs</li> <li>refactoring - added the input and library interface</li> <li>performance improvements</li> <li>and other fixing up...</li> </ul> <h2 id=version-242>Version 24.2<a class=headerlink href=#version-242 title="Permanent link">¶</a></h2> <ul> <li>Pulseaudio support (can be used for Bluetooth speakers)</li> <li>new pipe/"fifo" audio output</li> <li>fix misc Chromecast audio bugs</li> <li>fix for Apple tvOS10 disconnecting after some minutes</li> <li>enable CORS headers</li> <li>LastFM scrobbling during regular DAAP streaming</li> <li>smart playlist support for file modification time</li> <li>misc MPD improvements, e.g. new outputsvolume command</li> <li>ignore ipv6 link-local addresses (announced by e.g. ATV4)</li> <li>better inter-thread command handling</li> <li>improved cache performance and use of gzip</li> <li>fix possible segfault on http timeouts</li> <li>fix possible segfault when adding items during playback</li> </ul> <h2 id=version-241>Version 24.1<a class=headerlink href=#version-241 title="Permanent link">¶</a></h2> <ul> <li>support for Monkey's audio</li> <li>fix build problems on some platforms (e.g. OpenWrt)</li> </ul> <h2 id=version-240>Version 24.0<a class=headerlink href=#version-240 title="Permanent link">¶</a></h2> <ul> <li>support for Chromecast audio</li> <li>support more idv3 tags (eg. date released)</li> <li>support more DAAP tags (eg. datereleased, hasbeenplayed)</li> <li>fix problem with playlists not shown in correct order in Remote</li> <li>autoselect devices based on priorities + keep devices selected</li> <li>fix multiple FreeBSD filescanner bugs (like too many open files)</li> <li>ALSA audio refurbished (prevent underrun/overrun, better AirPlay sync)</li> <li>improved mpd command support (eg. lsinfo, move, queue autoplay start)</li> <li>better mpd performance</li> <li>timing changes to keep input and output in sync with player timer</li> <li>prevent cache bloat (unscaled artwork or artwork for deleted tracks)</li> <li>more intelligent Spotify artwork retrieval</li> <li>artwork handling refactored</li> <li>add generic output interface</li> <li>add systemd service file</li> <li>support for OSS4 dropped</li> <li>support for old ffmpeg dropped</li> <li>misc minor bugfixing</li> </ul> <h2 id=version-234>Version 23.4<a class=headerlink href=#version-234 title="Permanent link">¶</a></h2> <ul> <li>fix freeze problem on network stream disconnects</li> <li>support for mp3 streaming</li> <li>better ipv6 handling</li> <li>option to hide singles from album/artist lists</li> <li>misc MPD improvements, incl. new commands and zeroconf support</li> <li>queue handling and transcoding refactored</li> <li>libavresample/libswresample dependency changed to libavfilter</li> <li>improved pairinghelper.sh script</li> </ul> <h2 id=version-233>Version 23.3<a class=headerlink href=#version-233 title="Permanent link">¶</a></h2> <ul> <li>fix issue where volume gets set to -1 on startup of raop devices</li> <li>plug various minor memleaks</li> <li>audiobook improvements, eg resuming playback from saved position</li> <li>live icy metadata</li> <li>libevent 1 support removed</li> <li>LastFM performance improvement</li> <li>drop legacy ffmpeg stuff</li> <li>drop legacy flac, musepack and wma scanner</li> </ul> <h2 id=version-232>Version 23.2<a class=headerlink href=#version-232 title="Permanent link">¶</a></h2> <ul> <li>fix db lock, m3u and Windows Phone bugs</li> <li>improvements for Spotify and mpd</li> <li>fixing bugs as always</li> <li>sorting of genres and composers</li> </ul> <h2 id=version-231>Version 23.1<a class=headerlink href=#version-231 title="Permanent link">¶</a></h2> <ul> <li>support for more mpd commands</li> </ul> <h2 id=version-230>Version 23.0<a class=headerlink href=#version-230 title="Permanent link">¶</a></h2> <ul> <li>add support for the mpd protocol</li> <li>add support for smart playlists</li> <li>playlist and internet stream overhaul</li> </ul> <h2 id=version-222>Version 22.2<a class=headerlink href=#version-222 title="Permanent link">¶</a></h2> <ul> <li>fix for iTunes 12.1</li> <li>fix misc bugs</li> </ul> <h2 id=version-221>Version 22.1<a class=headerlink href=#version-221 title="Permanent link">¶</a></h2> <ul> <li>artwork cache</li> <li>some Spotify fixing up</li> </ul> <h2 id=version-220>Version 22.0<a class=headerlink href=#version-220 title="Permanent link">¶</a></h2> <ul> <li>queue handling improvements</li> <li>added DAAP cache, good for low-power devices like the RPi</li> <li>support for LastFM scrobbling</li> <li>support for .pls playlists</li> <li>added compability with ffmpeg libswresample</li> <li>added options to modify the operation of the SQLite database</li> <li>stop init-rescan/full-rescan from running twice</li> <li>fix misc local audio problems</li> <li>fix some FreeBSD sound timing problems</li> <li>fix segfault on invalid utf8 while sorting</li> <li>fix misc bugs</li> </ul> <h2 id=version-210>Version 21.0<a class=headerlink href=#version-210 title="Permanent link">¶</a></h2> <ul> <li>filescanner performance enhancements (db transactions)</li> <li>support for queue editing</li> <li>support for showing history</li> <li>compability with libevent 2</li> <li>compability with libav 10</li> <li>support for Spotify</li> <li>fix for Seafile libraries</li> <li>support for permission changes in a library (IN_ATTRIB)</li> <li>some DAAP changes to align with iTunes</li> <li>properly show media kind shares in iTunes</li> <li>support for named pipes/fifos</li> <li>natural sorting and better handling of capitalization</li> <li>introduce .init-rescan and .full-rescan triggers</li> <li>fix for XBMC (libshairplay) crash</li> <li>fix missing songartistid (fixes some remotes)</li> <li>fix bug in m3u scanner</li> <li>ICY metadata fixes</li> </ul> <h2 id=version-200>Version 20.0<a class=headerlink href=#version-200 title="Permanent link">¶</a></h2> <ul> <li>includes patch against timeouts</li> <li>configurable artwork file names</li> <li>support for Remote 3 and 4</li> <li>preference for album artist if it is available</li> <li>bug fix for certain Airport Express models</li> <li>bug fix for AirFoil Speakers</li> <li>added support for internet radio with m3u</li> <li>fixed fatal error when stopping player</li> <li>m3u and iTunes playlist scanner improvements</li> <li>improved compability with Hyperfine Remote for Android</li> <li>speaker selection and m3u bug fixes</li> <li>Shoutcast (icy) metadata support for internet radio</li> <li>fix for Apple TV update 6.0</li> <li>fix artwork memory leak</li> <li>basic support for podcasts, compilations and audiobooks</li> <li>user can tell file scanner to ignore certain file types</li> <li>fix for metadata on non-Apple airplay devices</li> <li>configurable library names</li> <li>sorting changes, ignore The/A/An</li> <li>fix for TunesRemote SE</li> <li>force library rescan with .force-rescan</li> <li>fix for the Retune remote on Android</li> <li>fix for AirBubble speakers (shairport)</li> <li>support for artwork in iTunes</li> <li>fixed ffmpeg/libav logging</li> <li>logging and documentation adjustments</li> <li>autoselect AirPlay device if none selected</li> <li>support for embedded artwork</li> <li>config option to disable startup scan</li> <li>config option for max volume for AirPlay devices</li> <li>support for embedded platforms without hi-res timers</li> <li>fix for WMA files</li> <li>fixes for video playback</li> <li>other fixes: non apple players, ffmpeg/libav updates...</li> </ul> <h2 id=version-019>Version 0.19<a class=headerlink href=#version-019 title="Permanent link">¶</a></h2> <ul> <li>more libav 0.7 updates.</li> <li>database speedups.</li> <li>fix for iTunes 30-minute timeout.</li> <li>fixes, big and small.</li> </ul> <h2 id=version-018>Version 0.18<a class=headerlink href=#version-018 title="Permanent link">¶</a></h2> <ul> <li>add config knob for ALSA mixer channel name.</li> <li>do not elevate privileges for reopening the log file; log file will now be owned by the user forked-daapd runs as.</li> <li>fixes, big and small.</li> </ul> <h2 id=version-017>Version 0.17<a class=headerlink href=#version-017 title="Permanent link">¶</a></h2> <ul> <li>support for libav 0.7</li> <li>fixes, big and small.</li> </ul> <h2 id=version-016>Version 0.16<a class=headerlink href=#version-016 title="Permanent link">¶</a></h2> <ul> <li>fix issue with non-UTF-8 metadata while scanning.</li> <li>use proper file size in HTTP streaming code.</li> <li>fix DAAP songlist bug with sort tags.</li> <li>small code fixes.</li> </ul> <h2 id=version-015>Version 0.15<a class=headerlink href=#version-015 title="Permanent link">¶</a></h2> <ul> <li>add support for sending metadata to AppleTV during AirTunes streaming.</li> <li>support DOS-encoded Remote pairing files.</li> <li>rework album_artist_sort handling.</li> <li>enable RAOP to queue RTSP requests.</li> <li>speedup DAAP & RSP filters processing.</li> <li>speedup DAAP songlist generation.</li> <li>artwork can handle and send out both PNG and JPEG.</li> <li>fixes, big and small.</li> </ul> <h2 id=version-014>Version 0.14<a class=headerlink href=#version-014 title="Permanent link">¶</a></h2> <ul> <li>sort headers/tags handling improvements.</li> <li>better handling of tags for TV shows.</li> <li>better handling of DRM-afflicted files.</li> <li>configurable IPv6 support.</li> <li>fix scanning of URL files.</li> <li>fixes, big and small.</li> </ul> <h2 id=version-013>Version 0.13<a class=headerlink href=#version-013 title="Permanent link">¶</a></h2> <ul> <li>add Remote v2 support; Remote v1 is not supported anymore.</li> <li>add per-speaker volume support.</li> <li>implement RAOP retransmission.</li> <li>implement per-device quirks in RAOP.</li> <li>improve compatibility with 802.11g AirPort Express.</li> <li>improve mDNS address resolution, making IPv4 usable again.</li> <li>fix Murmur Hash bug on 32bit platforms.</li> <li>add support for JPEG artwork and alternative filenames.</li> <li>disable session expiration that was causing issues.</li> <li>FFmpeg 0.6 support.</li> <li>fixes, big and small.</li> </ul> <h2 id=version-012>Version 0.12<a class=headerlink href=#version-012 title="Permanent link">¶</a></h2> <ul> <li>add AirTunes v2 streaming.</li> <li>add Remote support.</li> <li>add gzipped replies.</li> <li>add IPv6 support.</li> <li>check for UTF-8 correctness of metadata.</li> <li>fixes, big and small.</li> </ul> <h2 id=version-011>Version 0.11<a class=headerlink href=#version-011 title="Permanent link">¶</a></h2> <ul> <li>support iTunes 9.</li> <li>add iTunes XML playlist scanner.</li> <li>add support for TV shows.</li> <li>add FreeBSD and GNU/kFreeBSD support.</li> <li>add support for DAAP groups.</li> <li>add support for artwork.</li> <li>rework metdata extraction, better support for ID3 tags.</li> <li>database code rework.</li> <li>preliminary support for Remote (pairing, browsing).</li> <li>fixes, big and small.</li> </ul> <h2 id=version-010>Version 0.10<a class=headerlink href=#version-010 title="Permanent link">¶</a></h2> <ul> <li>initial release.</li> </ul> </article> </div> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> Made with <a href=https://squidfunk.github.io/mkdocs-material/ target=_blank rel=noopener> Material for MkDocs </a> </div> <div class=md-social> <a href=https://github.com/owntone/owntone-server target=_blank rel=noopener title=github.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 496 512"><!-- Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"base": "..", "features": ["navigation.tabs", "navigation.top"], "search": "../assets/javascripts/workers/search.f8cc74c7.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> <script src=../assets/javascripts/bundle.f13b1293.min.js></script> <script src=../assets/extra.js></script> </body> </html> |