funkwhale tagshttps://dev.funkwhale.audio/funkwhale/funkwhale/-/tags2023-12-02T09:58:10Zhttps://dev.funkwhale.audio/funkwhale/funkwhale/-/tags/1.4.01.4.0Georg Krausehttps://dev.funkwhale.audio/funkwhale/funkwhale/-/tags/1.4.0-rc21.4.0-rc2<p data-sourcepos="1:1-1:99" dir="auto">Upgrade instructions are available at <a href="https://docs.funkwhale.audio/administrator/upgrade/index.html" rel="nofollow noreferrer noopener" target="_blank">https://docs.funkwhale.audio/administrator/upgrade/index.html</a></p>
<p data-sourcepos="3:1-3:24" dir="auto">Changes since 1.4.0-rc1:</p>
<p data-sourcepos="5:1-5:9" dir="auto">Bugfixes:</p>
<ul data-sourcepos="7:1-8:64" dir="auto">
<li data-sourcepos="7:1-7:53">Fix broken nginx templates for docker setup (<a href="/funkwhale/funkwhale/-/issues/2252" data-reference-type="issue" data-original="#2252" data-link="false" data-link-reference="false" data-project="17" data-issue="4311" data-project-path="funkwhale/funkwhale" data-iid="2252" data-issue-type="issue" data-container="body" data-placement="top" title="New Nginx templates don't work in Docker container" class="gfm gfm-issue">#2252</a>)</li>
<li data-sourcepos="8:1-8:64">Fix docker builds in CI by using correct flag to disable cache</li>
</ul>2023-12-02T09:58:10ZGeorg Krausehttps://dev.funkwhale.audio/funkwhale/funkwhale/-/tags/1.4.0-rc11.4.0-rc1<p data-sourcepos="1:1-1:99" dir="auto">Upgrade instructions are available at <a href="https://docs.funkwhale.audio/administrator/upgrade/index.html" rel="nofollow noreferrer noopener" target="_blank">https://docs.funkwhale.audio/administrator/upgrade/index.html</a></p>
<p data-sourcepos="3:1-3:9" dir="auto">Features:</p>
<ul data-sourcepos="5:1-18:0" dir="auto">
<li data-sourcepos="5:1-5:43">Add atom1.0 to node info services (<a href="/funkwhale/funkwhale/-/issues/2085" data-reference-type="issue" data-original="#2085" data-link="false" data-link-reference="false" data-project="17" data-issue="3193" data-project-path="funkwhale/funkwhale" data-iid="2085" data-issue-type="issue" data-container="body" data-placement="top" title="IV - 5 New version of the nodeinfo endpoint (nodeinfo 2.1)" class="gfm gfm-issue">#2085</a>)</li>
<li data-sourcepos="6:1-6:27">Add basic cypress testing</li>
<li data-sourcepos="7:1-7:26">Add NodeInfo 2.1 (<a href="/funkwhale/funkwhale/-/issues/2085" data-reference-type="issue" data-original="#2085" data-link="false" data-link-reference="false" data-project="17" data-issue="3193" data-project-path="funkwhale/funkwhale" data-iid="2085" data-issue-type="issue" data-container="body" data-placement="top" title="IV - 5 New version of the nodeinfo endpoint (nodeinfo 2.1)" class="gfm gfm-issue">#2085</a>)</li>
<li data-sourcepos="8:1-8:39">Add support for Funkwhale UI library.</li>
<li data-sourcepos="9:1-9:29">Add support for Python 3.12</li>
<li data-sourcepos="10:1-10:54">Allow moderators to set moderation languages (<a href="/funkwhale/funkwhale/-/issues/2085" data-reference-type="issue" data-original="#2085" data-link="false" data-link-reference="false" data-project="17" data-issue="3193" data-project-path="funkwhale/funkwhale" data-iid="2085" data-issue-type="issue" data-container="body" data-placement="top" title="IV - 5 New version of the nodeinfo endpoint (nodeinfo 2.1)" class="gfm gfm-issue">#2085</a>)</li>
<li data-sourcepos="11:1-11:52">Allow to set the instances server location (<a href="/funkwhale/funkwhale/-/issues/2085" data-reference-type="issue" data-original="#2085" data-link="false" data-link-reference="false" data-project="17" data-issue="3193" data-project-path="funkwhale/funkwhale" data-iid="2085" data-issue-type="issue" data-container="body" data-placement="top" title="IV - 5 New version of the nodeinfo endpoint (nodeinfo 2.1)" class="gfm gfm-issue">#2085</a>)</li>
<li data-sourcepos="12:1-12:129">Cache radio queryset into redis. New radio track endpoint for api v2 is /api/v2/radios/sessions/{radiosessionid}/tracks (<a href="/funkwhale/funkwhale/-/issues/2135" data-reference-type="issue" data-original="#2135" data-link="false" data-link-reference="false" data-project="17" data-issue="3298" data-project-path="funkwhale/funkwhale" data-iid="2135" data-issue-type="issue" data-container="body" data-placement="top" title="Cache radio queryset into redis" class="gfm gfm-issue">#2135</a>)</li>
<li data-sourcepos="13:1-13:124">Create a testing environment in production for ListenBrainz recommendation engine (troi-recommendation-playground) (<a href="/funkwhale/funkwhale/-/issues/1861" data-reference-type="issue" data-original="#1861" data-link="false" data-link-reference="false" data-project="17" data-issue="2835" data-project-path="funkwhale/funkwhale" data-iid="1861" data-issue-type="issue" data-container="body" data-placement="top" title="II-1 implement ListenBrainz recommendation engine (troi-recommendation-playground)" class="gfm gfm-issue">#1861</a>)</li>
<li data-sourcepos="14:1-14:53">Generate all nginx configurations from one template</li>
<li data-sourcepos="15:1-15:117">New management command to update Uploads which have been imported using --in-place and are now stored in s3 (<a href="/funkwhale/funkwhale/-/issues/2156" data-reference-type="issue" data-original="#2156" data-link="false" data-link-reference="false" data-project="17" data-issue="3326" data-project-path="funkwhale/funkwhale" data-iid="2156" data-issue-type="issue" data-container="body" data-placement="top" title="Add Management Command to change file ref for in-place imported files to s3" class="gfm gfm-issue">#2156</a>)</li>
<li data-sourcepos="16:1-16:67">Add option to only allow MusicBrainz tagged file on a pod (<a href="/funkwhale/funkwhale/-/issues/2083" data-reference-type="issue" data-original="#2083" data-link="false" data-link-reference="false" data-project="17" data-issue="3191" data-project-path="funkwhale/funkwhale" data-iid="2083" data-issue-type="issue" data-container="body" data-placement="top" title="IV-3 Only allow MusicBrainz tagged file on a pod" class="gfm gfm-issue">#2083</a>)</li>
<li data-sourcepos="17:1-18:0">Prohibit the creation of new users using django's <code>createsuperuser</code> command in favor of our own CLI entry point. Run <code>funkwhale-manage fw users create --superuser</code> instead. (<a href="/funkwhale/funkwhale/-/issues/1288" data-reference-type="issue" data-original="#1288" data-link="false" data-link-reference="false" data-project="17" data-issue="1739" data-project-path="funkwhale/funkwhale" data-iid="1288" data-issue-type="issue" data-container="body" data-placement="top" title="User 'me' can be created but cannot be edited" class="gfm gfm-issue">#1288</a>)</li>
</ul>
<p data-sourcepos="19:1-19:13" dir="auto">Enhancements:</p>
<ul data-sourcepos="21:1-34:0" dir="auto">
<li data-sourcepos="21:1-21:70">Add a management command to generate dummy notifications for testing</li>
<li data-sourcepos="22:1-22:42">Add custom logging functionality (<a href="/funkwhale/funkwhale/-/issues/2155" data-reference-type="issue" data-original="#2155" data-link="false" data-link-reference="false" data-project="17" data-issue="3323" data-project-path="funkwhale/funkwhale" data-iid="2155" data-issue-type="issue" data-container="body" data-placement="top" title="Can't see the episode list of a podcast as an anonymous user, with anonymous access enabled" class="gfm gfm-issue">#2155</a>)</li>
<li data-sourcepos="23:1-23:50">Adding typesense container and api client (2104)</li>
<li data-sourcepos="24:1-24:48">Cache pip package in api docker builds (<a href="/funkwhale/funkwhale/-/issues/2193" data-reference-type="issue" data-original="#2193" data-link="false" data-link-reference="false" data-project="17" data-issue="4130" data-project-path="funkwhale/funkwhale" data-iid="2193" data-issue-type="issue" data-container="body" data-placement="top" title="cache pip package in docker builds" class="gfm gfm-issue">#2193</a>)</li>
<li data-sourcepos="25:1-25:41">Connect loglevel and debug mode (<a href="/funkwhale/funkwhale/-/issues/1538" data-reference-type="issue" data-original="#1538" data-link="false" data-link-reference="false" data-project="17" data-issue="2216" data-project-path="funkwhale/funkwhale" data-iid="1538" data-issue-type="issue" data-container="body" data-placement="top" title="Connect loglevel and debug mode" class="gfm gfm-issue">#1538</a>)</li>
<li data-sourcepos="26:1-26:37">Get api version from python package</li>
<li data-sourcepos="27:1-27:110">Log service worker registration error and add a warning about Firefox SW incompatibility in development mode</li>
<li data-sourcepos="28:1-28:35">Maintain api version using poetry</li>
<li data-sourcepos="29:1-29:92">Maloja: Submit album artists and duration and allow to disable server side metadata fixing</li>
<li data-sourcepos="30:1-30:39">Replace pytz with zoneinfo in the API</li>
<li data-sourcepos="31:1-31:51">Speed up linting and type-checking by using cache</li>
<li data-sourcepos="32:1-32:47">Split front large bundles into smaller chunks</li>
<li data-sourcepos="33:1-34:0">Support boolean config fields in plugins</li>
</ul>
<p data-sourcepos="35:1-35:9" dir="auto">Bugfixes:</p>
<ul data-sourcepos="37:1-56:0" dir="auto">
<li data-sourcepos="37:1-37:95">
<code>postgres > db_dump.sql</code> cannot be used if the postgres container is stopped. Update command.</li>
<li data-sourcepos="38:1-38:45">Avoid troi radio to give duplicates (<a href="/funkwhale/funkwhale/-/issues/2231" data-reference-type="issue" data-original="#2231" data-link="false" data-link-reference="false" data-project="17" data-issue="4232" data-project-path="funkwhale/funkwhale" data-iid="2231" data-issue-type="issue" data-container="body" data-placement="top" title="Avoid troi duplicates (same track but different fw ids)" class="gfm gfm-issue">#2231</a>)</li>
<li data-sourcepos="39:1-39:62">Fix help messages for running scripts using funkwhale-manage</li>
<li data-sourcepos="40:1-40:34">Fix missing og meta tags (<a href="/funkwhale/funkwhale/-/issues/2208" data-reference-type="issue" data-original="#2208" data-link="false" data-link-reference="false" data-project="17" data-issue="4163" data-project-path="funkwhale/funkwhale" data-iid="2208" data-issue-type="issue" data-container="body" data-placement="top" title="OpenGraph Meta tags missing" class="gfm gfm-issue">#2208</a>)</li>
<li data-sourcepos="41:1-41:35">Fix multiarch docker builds <a href="/funkwhale/funkwhale/-/issues/2211" data-reference-type="issue" data-original="#2211" data-link="false" data-link-reference="false" data-project="17" data-issue="4176" data-project-path="funkwhale/funkwhale" data-iid="2211" data-issue-type="issue" data-container="body" data-placement="top" title="Failing docker multiarch builds in CI" class="gfm gfm-issue">#2211</a>
</li>
<li data-sourcepos="42:1-42:85">Fixed an issue where the copy button didn't copy the Embed code in the embed modal.</li>
<li data-sourcepos="43:1-43:91">Fixed an issue with the nginx templates that caused issues when connecting to websockets.</li>
<li data-sourcepos="44:1-44:39">Fixed development docker setup (2102)</li>
<li data-sourcepos="45:1-45:39">Fixed development docker setup (2196)</li>
<li data-sourcepos="46:1-46:75">Fixed embedded player crash when API returns relative listen URL. (<a href="/funkwhale/funkwhale/-/issues/2163" data-reference-type="issue" data-original="#2163" data-link="false" data-link-reference="false" data-project="17" data-issue="3334" data-project-path="funkwhale/funkwhale" data-iid="2163" data-issue-type="issue" data-container="body" data-placement="top" title="Facing error when generate an Embed code towards Flac track with 1.3.0" class="gfm gfm-issue">#2163</a>)</li>
<li data-sourcepos="47:1-47:47">Fixed issue with regular expression in embed.</li>
<li data-sourcepos="48:1-48:47">Make Artist ordering by name case insensitive</li>
<li data-sourcepos="49:1-49:48">Make sure build requirements for ujson are met</li>
<li data-sourcepos="50:1-50:64">Make sure embed codes generated before 1.3.0 are still working</li>
<li data-sourcepos="51:1-51:69">Make sure funkwhale_api package and metadata are available for docs</li>
<li data-sourcepos="52:1-52:55">Make sure meta tags link to embedded player correctly</li>
<li data-sourcepos="53:1-53:74">Merge nginx configs for docker production and development setups (<a href="/funkwhale/funkwhale/-/issues/1939" data-reference-type="issue" data-original="#1939" data-link="false" data-link-reference="false" data-project="17" data-issue="2967" data-project-path="funkwhale/funkwhale" data-iid="1939" data-issue-type="issue" data-container="body" data-placement="top" title="Nginx config files need diffing and updating" class="gfm gfm-issue">#1939</a>)</li>
<li data-sourcepos="54:1-54:59">Updated links to the Funkwhale website in the UI. (<a href="/funkwhale/funkwhale/-/issues/2235" data-reference-type="issue" data-original="#2235" data-link="false" data-link-reference="false" data-project="17" data-issue="4239" data-project-path="funkwhale/funkwhale" data-iid="2235" data-issue-type="issue" data-container="body" data-placement="top" title="Update Website links in Funkwhales UI" class="gfm gfm-issue">#2235</a>)</li>
<li data-sourcepos="55:1-56:0">Use correct data field for rate limiting identity field (<a href="/funkwhale/funkwhale/-/issues/2248" data-reference-type="issue" data-original="#2248" data-link="false" data-link-reference="false" data-project="17" data-issue="4266" data-project-path="funkwhale/funkwhale" data-iid="2248" data-issue-type="issue" data-container="body" data-placement="top" title="Rate Limiting endpoint fails when unauthenticated" class="gfm gfm-issue">#2248</a>)</li>
</ul>
<p data-sourcepos="57:1-57:14" dir="auto">Documentation:</p>
<ul data-sourcepos="59:1-68:0" dir="auto">
<li data-sourcepos="59:1-59:60">Add missing <code>has_mbid</code> requirement to quality filter spec.</li>
<li data-sourcepos="60:1-60:30">Add spec for user following.</li>
<li data-sourcepos="61:1-61:43">Added CoC link to nodeinfo endpoint spec.</li>
<li data-sourcepos="62:1-62:34">Added multi-artist support spec.</li>
<li data-sourcepos="63:1-63:29">Added new collections spec.</li>
<li data-sourcepos="64:1-64:34">Added NodeInfo 2.1 specification</li>
<li data-sourcepos="65:1-65:32">Archived the pre-1.0 changelog</li>
<li data-sourcepos="66:1-66:52">Updated nodeinfo spec to include usage statistics.</li>
<li data-sourcepos="67:1-68:0">Updated the Nodeinfo 2 spec to address feedback from implementation.</li>
</ul>
<p data-sourcepos="69:1-69:6" dir="auto">Other:</p>
<ul data-sourcepos="71:1-81:0" dir="auto">
<li data-sourcepos="71:1-71:27">Add build metadata script</li>
<li data-sourcepos="72:1-72:53">Don't run CI on branch containing stable or develop</li>
<li data-sourcepos="73:1-73:50">Fix CI deploy docs job after stable branch merge</li>
<li data-sourcepos="74:1-74:27">Format api container file</li>
<li data-sourcepos="75:1-75:28">Lint api code using pylint</li>
<li data-sourcepos="76:1-76:64">Make renovate not pinning the python version to the latest one</li>
<li data-sourcepos="77:1-77:34">Rename CHANGELOG to CHANGELOG.md</li>
<li data-sourcepos="78:1-78:32">Replace docs scripts with make</li>
<li data-sourcepos="79:1-79:24">Rework the CI pipeline</li>
<li data-sourcepos="80:1-81:0">Use buildx bake in docker job</li>
</ul>
<p data-sourcepos="82:1-82:8" dir="auto">Removal:</p>
<ul data-sourcepos="84:1-84:28" dir="auto">
<li data-sourcepos="84:1-84:28">Drop support for python3.7</li>
</ul>2023-12-02T09:57:43ZGeorg Krausehttps://dev.funkwhale.audio/funkwhale/funkwhale/-/tags/1.3.41.3.4<h2 data-sourcepos="1:1-1:21" dir="auto">
<a id="user-content-134-2023-11-16" class="anchor" href="#134-2023-11-16" aria-hidden="true"></a>1.3.4 (2023-11-16)</h2>
<p data-sourcepos="4:1-5:61" dir="auto">Upgrade instructions are available at
<a href="https://docs.funkwhale.audio/administrator/upgrade/index.html" rel="nofollow noreferrer noopener" target="_blank">https://docs.funkwhale.audio/administrator/upgrade/index.html</a></p>
<h3 data-sourcepos="7:1-7:13" dir="auto">
<a id="user-content-bugfixes" class="anchor" href="#bugfixes" aria-hidden="true"></a>Bugfixes:</h3>
<ul data-sourcepos="9:1-11:0" dir="auto">
<li data-sourcepos="9:1-11:0">Remove dangling dependency howler</li>
</ul>
<h3 data-sourcepos="12:1-12:18" dir="auto">
<a id="user-content-documentation" class="anchor" href="#documentation" aria-hidden="true"></a>Documentation:</h3>
<ul data-sourcepos="14:1-15:0" dir="auto">
<li data-sourcepos="14:1-15:0">Fix a redirect loop on documentation for moderators</li>
</ul>
<h3 data-sourcepos="16:1-16:39" dir="auto">
<a id="user-content-contributors-to-our-merge-requests" class="anchor" href="#contributors-to-our-merge-requests" aria-hidden="true"></a>Contributors to our Merge Requests:</h3>
<ul data-sourcepos="18:1-20:0" dir="auto">
<li data-sourcepos="18:1-18:14">Georg Krause</li>
<li data-sourcepos="19:1-20:0">Thomas</li>
</ul>
<h3 data-sourcepos="21:1-21:15" dir="auto">
<a id="user-content-committers" class="anchor" href="#committers" aria-hidden="true"></a>Committers:</h3>
<ul data-sourcepos="23:1-23:14" dir="auto">
<li data-sourcepos="23:1-23:14">Georg Krause</li>
</ul>2023-11-16T09:36:28ZGeorg Krausehttps://dev.funkwhale.audio/funkwhale/funkwhale/-/tags/1.3.31.3.3<h2 data-sourcepos="1:1-1:21" dir="auto">
<a id="user-content-133-2023-09-07" class="anchor" href="#133-2023-09-07" aria-hidden="true"></a>1.3.3 (2023-09-07)</h2>
<p data-sourcepos="3:1-4:61" dir="auto">Upgrade instructions are available at
<a href="https://docs.funkwhale.audio/administrator/upgrade/index.html" rel="nofollow noreferrer noopener" target="_blank">https://docs.funkwhale.audio/administrator/upgrade/index.html</a></p>
<p data-sourcepos="6:1-6:9" dir="auto">Bugfixes:</p>
<ul data-sourcepos="8:1-9:0" dir="auto">
<li data-sourcepos="8:1-9:0">Revert changed logging to fix crashes</li>
</ul>
<p data-sourcepos="10:1-10:27" dir="auto">Contributors to our Issues:</p>
<ul data-sourcepos="12:1-25:0" dir="auto">
<li data-sourcepos="12:1-12:18">Alexandra Parker</li>
<li data-sourcepos="13:1-13:19">Aurelien Vaillant</li>
<li data-sourcepos="14:1-14:12">ChengChung</li>
<li data-sourcepos="15:1-15:19">Ciarán Ainsworth</li>
<li data-sourcepos="16:1-16:14">Georg Krause</li>
<li data-sourcepos="17:1-17:17">Johann Queuniet</li>
<li data-sourcepos="18:1-18:16">Kasper Seweryn</li>
<li data-sourcepos="19:1-19:17">Mathieu Jourdan</li>
<li data-sourcepos="20:1-20:16">Nicolas Derive</li>
<li data-sourcepos="21:1-21:13">Puniko Nyan</li>
<li data-sourcepos="22:1-22:8">Thomas</li>
<li data-sourcepos="23:1-23:13">petitminion</li>
<li data-sourcepos="24:1-25:0">philip ballinger</li>
</ul>
<p data-sourcepos="26:1-26:35" dir="auto">Contributors to our Merge Requests:</p>
<ul data-sourcepos="28:1-34:13" dir="auto">
<li data-sourcepos="28:1-28:19">Ciarán Ainsworth</li>
<li data-sourcepos="29:1-29:14">Georg Krause</li>
<li data-sourcepos="30:1-30:12">JuniorJPDJ</li>
<li data-sourcepos="31:1-31:16">Kasper Seweryn</li>
<li data-sourcepos="32:1-32:14">Marcos Peña</li>
<li data-sourcepos="33:1-33:8">jooola</li>
<li data-sourcepos="34:1-34:13">petitminion</li>
</ul>2023-09-07T10:29:54ZGeorg Krausehttps://dev.funkwhale.audio/funkwhale/funkwhale/-/tags/1.3.21.3.2<h2 data-sourcepos="1:1-1:21" dir="auto">
<a id="user-content-132-2023-09-01" class="anchor" href="#132-2023-09-01" aria-hidden="true"></a>1.3.2 (2023-09-01)</h2>
<p data-sourcepos="3:1-4:61" dir="auto">Upgrade instructions are available at
<a href="https://docs.funkwhale.audio/administrator/upgrade/index.html" rel="nofollow noreferrer noopener" target="_blank">https://docs.funkwhale.audio/administrator/upgrade/index.html</a></p>
<p data-sourcepos="6:1-6:13" dir="auto">Enhancements:</p>
<ul data-sourcepos="8:1-10:0" dir="auto">
<li data-sourcepos="8:1-8:41">Enable sourcemaps for production builds</li>
<li data-sourcepos="9:1-10:0">Use logger composable instead of window.console</li>
</ul>
<p data-sourcepos="11:1-11:9" dir="auto">Bugfixes:</p>
<ul data-sourcepos="13:1-24:0" dir="auto">
<li data-sourcepos="13:1-13:47">Clear shuffled id list on queue clear (<a href="/funkwhale/funkwhale/-/issues/2192" data-reference-type="issue" data-original="#2192" data-link="false" data-link-reference="false" data-project="17" data-issue="4129" data-project-path="funkwhale/funkwhale" data-iid="2192" data-issue-type="issue" data-container="body" data-placement="top" title='"Clear Queue" bug when random/shuffle is enabled' class="gfm gfm-issue">#2192</a>)</li>
<li data-sourcepos="14:1-14:91">Fetch the nodeinfo endpoint from .well-known/nodeinfo when checking instance availability</li>
<li data-sourcepos="15:1-15:52">Fix instance checking its own availability (<a href="/funkwhale/funkwhale/-/issues/2199" data-reference-type="issue" data-original="#2199" data-link="false" data-link-reference="false" data-project="17" data-issue="4138" data-project-path="funkwhale/funkwhale" data-iid="2199" data-issue-type="issue" data-container="body" data-placement="top" title="Funkwhale periodically fetches own nodeinfo" class="gfm gfm-issue">#2199</a>)</li>
<li data-sourcepos="16:1-16:35">Fix multiarch docker builds <a href="/funkwhale/funkwhale/-/issues/2211" data-reference-type="issue" data-original="#2211" data-link="false" data-link-reference="false" data-project="17" data-issue="4176" data-project-path="funkwhale/funkwhale" data-iid="2211" data-issue-type="issue" data-container="body" data-placement="top" title="Failing docker multiarch builds in CI" class="gfm gfm-issue">#2211</a>
</li>
<li data-sourcepos="17:1-18:45">Fix ordering when querystring contains <code>+</code> prefix
Resolve multiple updates to ordering fields</li>
<li data-sourcepos="19:1-19:30">Fix password reset via email</li>
<li data-sourcepos="20:1-20:50">Make podcast episode pagination reactive (<a href="/funkwhale/funkwhale/-/issues/2205" data-reference-type="issue" data-original="#2205" data-link="false" data-link-reference="false" data-project="17" data-issue="4157" data-project-path="funkwhale/funkwhale" data-iid="2205" data-issue-type="issue" data-container="body" data-placement="top" title="Channel page pagination link dont working" class="gfm gfm-issue">#2205</a>)</li>
<li data-sourcepos="21:1-21:50">Render HTML in podcast short description (<a href="/funkwhale/funkwhale/-/issues/2206" data-reference-type="issue" data-original="#2206" data-link="false" data-link-reference="false" data-project="17" data-issue="4158" data-project-path="funkwhale/funkwhale" data-iid="2206" data-issue-type="issue" data-container="body" data-placement="top" title="Short description shows html tag <p>" class="gfm gfm-issue">#2206</a>)</li>
<li data-sourcepos="22:1-24:0">Resolve race condition regarding axios when initializing the frontend
Prevent sending same language setting to backend multiple times</li>
</ul>
<p data-sourcepos="25:1-25:14" dir="auto">Documentation:</p>
<ul data-sourcepos="27:1-28:0" dir="auto">
<li data-sourcepos="27:1-28:0">Fixed incorrect upgrade instructions link in docs.</li>
</ul>
<p data-sourcepos="29:1-29:27" dir="auto">Contributors to our Issues:</p>
<ul data-sourcepos="31:1-43:0" dir="auto">
<li data-sourcepos="31:1-31:19">Ciarán Ainsworth</li>
<li data-sourcepos="32:1-32:14">Georg Krause</li>
<li data-sourcepos="33:1-33:16">Kasper Seweryn</li>
<li data-sourcepos="34:1-34:14">Kay Borowski</li>
<li data-sourcepos="35:1-35:14">Marcos Peña</li>
<li data-sourcepos="36:1-36:17">Mathieu Jourdan</li>
<li data-sourcepos="37:1-37:16">Virgile Robles</li>
<li data-sourcepos="38:1-38:6">codl</li>
<li data-sourcepos="39:1-39:8">jooola</li>
<li data-sourcepos="40:1-40:13">petitminion</li>
<li data-sourcepos="41:1-41:23">tinglycraniumplacidly</li>
<li data-sourcepos="42:1-43:0">unkn0wwn52</li>
</ul>
<p data-sourcepos="44:1-44:35" dir="auto">Contributors to our Merge Requests:</p>
<ul data-sourcepos="46:1-55:0" dir="auto">
<li data-sourcepos="46:1-46:19">Ciarán Ainsworth</li>
<li data-sourcepos="47:1-47:14">Georg Krause</li>
<li data-sourcepos="48:1-48:12">JuniorJPDJ</li>
<li data-sourcepos="49:1-49:16">Kasper Seweryn</li>
<li data-sourcepos="50:1-50:14">Marcos Peña</li>
<li data-sourcepos="51:1-51:16">Virgile Robles</li>
<li data-sourcepos="52:1-52:6">codl</li>
<li data-sourcepos="53:1-53:8">jooola</li>
<li data-sourcepos="54:1-55:0">petitminion</li>
</ul>
<p data-sourcepos="56:1-56:11" dir="auto">Committers:</p>
<ul data-sourcepos="58:1-64:0" dir="auto">
<li data-sourcepos="58:1-58:19">Ciarán Ainsworth</li>
<li data-sourcepos="59:1-59:6">codl</li>
<li data-sourcepos="60:1-60:14">Georg Krause</li>
<li data-sourcepos="61:1-61:4">jo</li>
<li data-sourcepos="62:1-62:16">Kasper Seweryn</li>
<li data-sourcepos="63:1-64:0">petitminion</li>
</ul>2023-09-04T07:38:19ZGeorg Krausehttps://dev.funkwhale.audio/funkwhale/funkwhale/-/tags/1.3.11.3.1<h1 data-sourcepos="1:1-1:7" dir="auto">
<a id="user-content-anchor-131" class="anchor" href="#anchor-131" aria-hidden="true"></a>1.3.1</h1>
<p data-sourcepos="3:1-4:49" dir="auto">Upgrade instructions are available at
<a href="https://docs.funkwhale.audio/admin/upgrading.html" rel="nofollow noreferrer noopener" target="_blank">https://docs.funkwhale.audio/admin/upgrading.html</a></p>
<h2 data-sourcepos="6:1-6:12" dir="auto">
<a id="user-content-bugfixes" class="anchor" href="#bugfixes" aria-hidden="true"></a>Bugfixes:</h2>
<ul data-sourcepos="8:1-24:0" dir="auto">
<li data-sourcepos="8:1-8:73">Dynamically add report targets to the map to avoid missing keys (<a href="/funkwhale/funkwhale/-/issues/2121" data-reference-type="issue" data-original="#2121" data-link="false" data-link-reference="false" data-project="17" data-issue="3272" data-project-path="funkwhale/funkwhale" data-iid="2121" data-issue-type="issue" data-container="body" data-placement="top" title="Unapprovable library edit" class="gfm gfm-issue">#2121</a>)</li>
<li data-sourcepos="9:1-9:74">Fix location of the nginx config template for docker deployments (<a href="/funkwhale/funkwhale/-/issues/2146" data-reference-type="issue" data-original="#2146" data-link="false" data-link-reference="false" data-project="17" data-issue="3310" data-project-path="funkwhale/funkwhale" data-iid="2146" data-issue-type="issue" data-container="body" data-placement="top" title="Admin site css doesn't load" class="gfm gfm-issue">#2146</a>)</li>
<li data-sourcepos="10:1-10:39">Fix pagination on search page (<a href="/funkwhale/funkwhale/-/issues/2134" data-reference-type="issue" data-original="#2134" data-link="false" data-link-reference="false" data-project="17" data-issue="3295" data-project-path="funkwhale/funkwhale" data-iid="2134" data-issue-type="issue" data-container="body" data-placement="top" title="Pagination not working for search results" class="gfm gfm-issue">#2134</a>)</li>
<li data-sourcepos="11:1-11:49">Fix Prune skipped uploads is OOM killed (<a href="/funkwhale/funkwhale/-/issues/2136" data-reference-type="issue" data-original="#2136" data-link="false" data-link-reference="false" data-project="17" data-issue="3299" data-project-path="funkwhale/funkwhale" data-iid="2136" data-issue-type="issue" data-container="body" data-placement="top" title="Prune skipped uploads is OOM killed" class="gfm gfm-issue">#2136</a>)</li>
<li data-sourcepos="12:1-12:80">Fixed Fomantic UI dropdown messing with Vue internals in radio builder (<a href="/funkwhale/funkwhale/-/issues/2142" data-reference-type="issue" data-original="#2142" data-link="false" data-link-reference="false" data-project="17" data-issue="3305" data-project-path="funkwhale/funkwhale" data-iid="2142" data-issue-type="issue" data-container="body" data-placement="top" title="Errors while building radio" class="gfm gfm-issue">#2142</a>)</li>
<li data-sourcepos="13:1-13:63">Fixed premature login redirect on podcast detail page (<a href="/funkwhale/funkwhale/-/issues/2155" data-reference-type="issue" data-original="#2155" data-link="false" data-link-reference="false" data-project="17" data-issue="3323" data-project-path="funkwhale/funkwhale" data-iid="2155" data-issue-type="issue" data-container="body" data-placement="top" title="Can't see the episode list of a podcast as an anonymous user, with anonymous access enabled" class="gfm gfm-issue">#2155</a>)</li>
<li data-sourcepos="14:1-14:52">Fixed stale data in indexedDB after logout (#2133)</li>
<li data-sourcepos="15:1-15:85">Make sure dependency pins are working with pip install (Restores python3.7 support)</li>
<li data-sourcepos="16:1-16:64">Make sure embed codes generated before 1.3.0 are still working</li>
<li data-sourcepos="17:1-17:72">Make sure the SPA Manifest is fetched using the right protocol (<a href="/funkwhale/funkwhale/-/issues/2151" data-reference-type="issue" data-original="#2151" data-link="false" data-link-reference="false" data-project="17" data-issue="3316" data-project-path="funkwhale/funkwhale" data-iid="2151" data-issue-type="issue" data-container="body" data-placement="top" title="Refused to load spa-manifest.json" class="gfm gfm-issue">#2151</a>)</li>
<li data-sourcepos="18:1-18:40">Moved modals above all content (<a href="/funkwhale/funkwhale/-/issues/2154" data-reference-type="issue" data-original="#2154" data-link="false" data-link-reference="false" data-project="17" data-issue="3319" data-project-path="funkwhale/funkwhale" data-iid="2154" data-issue-type="issue" data-container="body" data-placement="top" title="Add to Playlist pop up hidden by now playing screen" class="gfm gfm-issue">#2154</a>)</li>
<li data-sourcepos="19:1-19:52">Raise SystemExit exception in API manage.py script</li>
<li data-sourcepos="20:1-20:84">Remove track from cache when it gets disposed outside of the cache handler (<a href="/funkwhale/funkwhale/-/issues/2157" data-reference-type="issue" data-original="#2157" data-link="false" data-link-reference="false" data-project="17" data-issue="3327" data-project-path="funkwhale/funkwhale" data-iid="2157" data-issue-type="issue" data-container="body" data-placement="top" title="Playback sometimes fails" class="gfm gfm-issue">#2157</a>)</li>
<li data-sourcepos="21:1-21:57">Standardize instanceUrl value in instance store (<a href="/funkwhale/funkwhale/-/issues/2113" data-reference-type="issue" data-original="#2113" data-link="false" data-link-reference="false" data-project="17" data-issue="3241" data-project-path="funkwhale/funkwhale" data-iid="2113" data-issue-type="issue" data-container="body" data-placement="top" title="Activity WSS broken - strange URL" class="gfm gfm-issue">#2113</a>)</li>
<li data-sourcepos="22:1-22:49">Fix for banner images not being served on pods.</li>
<li data-sourcepos="23:1-24:0">Fixed PWA Window theme color.</li>
</ul>
<h2 data-sourcepos="25:1-25:17" dir="auto">
<a id="user-content-documentation" class="anchor" href="#documentation" aria-hidden="true"></a>Documentation:</h2>
<ul data-sourcepos="27:1-28:0" dir="auto">
<li data-sourcepos="27:1-28:0">Fix instructions for using custom nginx configurations in our documentation</li>
</ul>
<h2 data-sourcepos="29:1-29:9" dir="auto">
<a id="user-content-other" class="anchor" href="#other" aria-hidden="true"></a>Other:</h2>
<ul data-sourcepos="31:1-32:0" dir="auto">
<li data-sourcepos="31:1-32:0">Don't run CI on branch containing stable or develop</li>
</ul>
<h2 data-sourcepos="33:1-33:30" dir="auto">
<a id="user-content-contributors-to-our-issues" class="anchor" href="#contributors-to-our-issues" aria-hidden="true"></a>Contributors to our Issues:</h2>
<ul data-sourcepos="35:1-50:0" dir="auto">
<li data-sourcepos="35:1-35:13">AMoonRabbit</li>
<li data-sourcepos="36:1-36:26">Asier Iturralde Sarasola</li>
<li data-sourcepos="37:1-37:13">Bertille D.</li>
<li data-sourcepos="38:1-38:15">Casuallynoted</li>
<li data-sourcepos="39:1-39:19">Ciarán Ainsworth</li>
<li data-sourcepos="40:1-40:15">Daniel Jeller</li>
<li data-sourcepos="41:1-41:14">Georg Krause</li>
<li data-sourcepos="42:1-42:12">JuniorJPDJ</li>
<li data-sourcepos="43:1-43:16">Kasper Seweryn</li>
<li data-sourcepos="44:1-44:17">Mathieu Jourdan</li>
<li data-sourcepos="45:1-45:10">NaiveTub</li>
<li data-sourcepos="46:1-46:9">Ricardo</li>
<li data-sourcepos="47:1-47:16">Virgile Robles</li>
<li data-sourcepos="48:1-48:7">nouts</li>
<li data-sourcepos="49:1-50:0">petitminion</li>
</ul>
<h2 data-sourcepos="51:1-51:38" dir="auto">
<a id="user-content-contributors-to-our-merge-requests" class="anchor" href="#contributors-to-our-merge-requests" aria-hidden="true"></a>Contributors to our Merge Requests:</h2>
<ul data-sourcepos="53:1-60:0" dir="auto">
<li data-sourcepos="53:1-53:13">AMoonRabbit</li>
<li data-sourcepos="54:1-54:19">Ciarán Ainsworth</li>
<li data-sourcepos="55:1-55:14">Georg Krause</li>
<li data-sourcepos="56:1-56:12">JuniorJPDJ</li>
<li data-sourcepos="57:1-57:16">Kasper Seweryn</li>
<li data-sourcepos="58:1-58:8">jooola</li>
<li data-sourcepos="59:1-60:0">petitminion</li>
</ul>
<h2 data-sourcepos="61:1-61:14" dir="auto">
<a id="user-content-committers" class="anchor" href="#committers" aria-hidden="true"></a>Committers:</h2>
<ul data-sourcepos="63:1-69:13" dir="auto">
<li data-sourcepos="63:1-63:13">AMoonRabbit</li>
<li data-sourcepos="64:1-64:14">Georg Krause</li>
<li data-sourcepos="65:1-65:4">jo</li>
<li data-sourcepos="66:1-66:12">JuniorJPDJ</li>
<li data-sourcepos="67:1-67:16">Kasper Seweryn</li>
<li data-sourcepos="68:1-68:13">Moon Rabbit</li>
<li data-sourcepos="69:1-69:13">Petitminion</li>
</ul>2023-06-27T18:36:32ZGeorg Krausehttps://dev.funkwhale.audio/funkwhale/funkwhale/-/tags/1.3.01.3.0<p data-sourcepos="1:1-2:49" dir="auto">Upgrade instructions are available at
<a href="https://docs.funkwhale.audio/admin/upgrading.html" rel="nofollow noreferrer noopener" target="_blank">https://docs.funkwhale.audio/admin/upgrading.html</a></p>
<p data-sourcepos="4:1-4:20" dir="auto">Update instructions:</p>
<ul data-sourcepos="6:1-47:0" dir="auto">
<li data-sourcepos="6:1-28:5">
<p data-sourcepos="6:3-8:12">If you are running the docker deployment, make sure to update our compose file.
In this small example we show you how to save the old config and update it
correctly:</p>
<div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="10:3-16:5" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">export FUNKWHALE_VERSION="1.3.0"</span>
<span id="LC2" class="line" lang="plaintext">cd /srv/funkwhale</span>
<span id="LC3" class="line" lang="plaintext">docker-compose down</span>
<span id="LC4" class="line" lang="plaintext">mv docker-compose.yml docker-compose.bak</span>
<span id="LC5" class="line" lang="plaintext">curl -L -o /srv/funkwhale/docker-compose.yml "https://dev.funkwhale.audio/funkwhale/funkwhale/raw/${FUNKWHALE_VERSION}/deploy/docker-compose.yml"</span></code></pre>
<copy-code></copy-code>
</div>
<p data-sourcepos="18:3-24:112">.. note::
If you need to customize your nginx template, e.g. to work around <code>problems with Docker's resolver <https://docs.funkwhale.audio/admin/external-storages.html#no-resolver-found></code>_, you can mount your
custom nginx configuration into the container. Uncomment the commented volumes in the <code>nginx</code> section of your <code>docker-compose.yml</code>.
Additionally you need to update the paths in <code>nginx/funkwhale.template</code>.
Replace all occurrences of <code>/funkwhale</code> by <code>/usr/share/nginx/html</code>.
This loads the templates from your <code>nginx</code> folder and overrides the template files in the Docker container.</p>
<div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="26:3-28:5" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">docker-compose up -d</span></code></pre>
<copy-code></copy-code>
</div>
</li>
<li data-sourcepos="29:1-42:99">
<p data-sourcepos="29:3-29:173">The Docker instructions now use the updated Docker compose plugin. If you previously used the <code>docker-compose</code> standalone installation, do the following while upgrading:</p>
<ol data-sourcepos="31:3-33:0">
<li data-sourcepos="31:3-31:120">Download the <code>Docker compose plugin <https://docs.docker.com/compose/install/linux/#install-using-the-repository></code>_</li>
<li data-sourcepos="32:3-33:0">Stop your containers using the <strong>docker-compose</strong> syntax.</li>
</ol>
<p data-sourcepos="34:3-35:29">.. code-block:: sh
sudo docker-compose down</p>
<ol start="3" data-sourcepos="37:3-38:0">
<li data-sourcepos="37:3-38:0">Bring the containers back up using the <strong>docker compose</strong> syntax.</li>
</ol>
<p data-sourcepos="39:3-40:30">.. code-block:: sh
sudo docker compose up -d</p>
<p data-sourcepos="42:3-42:99">After this you can continue to use the <strong>docker compose</strong> syntax for all Docker management tasks.</p>
</li>
<li data-sourcepos="43:1-43:171">
<p data-sourcepos="43:3-43:171">Upgrade Postgres to version 15. <a href="https://docs.funkwhale.audio/administrator_documentation/upgrade_docs/docker.html#upgrade-the-postgres-container" rel="nofollow noreferrer noopener" target="_blank">Make sure to migrate!</a></p>
</li>
<li data-sourcepos="44:1-47:0">
<p data-sourcepos="44:3-45:76">With this update Funkwhale starts using poetry to maintain its dependencies. We therefore recommend
removing the old virtualenv by running <code>rm -rf /srv/funkwhale/virtualenv</code>.</p>
</li>
</ul>
<p data-sourcepos="48:1-48:9" dir="auto">Features:</p>
<ul data-sourcepos="50:1-56:0" dir="auto">
<li data-sourcepos="50:1-50:61">Add a management command to create a new library for a user</li>
<li data-sourcepos="51:1-51:36">Add Gitpod configuration and guide</li>
<li data-sourcepos="52:1-52:33">Add Sentry SDK to collect <a href="/funkwhale/funkwhale/-/issues/1479" data-reference-type="issue" data-original="#1479" data-link="false" data-link-reference="false" data-project="17" data-issue="1978" data-project-path="funkwhale/funkwhale" data-iid="1479" data-issue-type="issue" data-container="body" data-placement="top" title="Implement Sentry" class="gfm gfm-issue">#1479</a>
</li>
<li data-sourcepos="53:1-53:40">Prepare API for the upcoming version 2</li>
<li data-sourcepos="54:1-56:0">Rewrite player to be based on Web Audio API</li>
</ul>
<p data-sourcepos="57:1-57:13" dir="auto">Enhancements:</p>
<ul data-sourcepos="59:1-129:0" dir="auto">
<li data-sourcepos="59:1-59:50">Add a celery task to scan remote library (<a href="/funkwhale/funkwhale/-/issues/1712" data-reference-type="issue" data-original="#1712" data-link="false" data-link-reference="false" data-project="17" data-issue="2514" data-project-path="funkwhale/funkwhale" data-iid="1712" data-issue-type="issue" data-container="body" data-placement="top" title="create an update Library info celery task" class="gfm gfm-issue">#1712</a>)</li>
<li data-sourcepos="60:1-60:40">Add coverage report for Frontend Tests</li>
<li data-sourcepos="61:1-61:58">Add hint which serializer is used for OembedView (<a href="/funkwhale/funkwhale/-/issues/1901" data-reference-type="issue" data-original="#1901" data-link="false" data-link-reference="false" data-project="17" data-issue="2913" data-project-path="funkwhale/funkwhale" data-iid="1901" data-issue-type="issue" data-container="body" data-placement="top" title="OembedView: unable to guess serializer. This is graceful fallback handling for APIViews. Consider using GenericAPIView as view base class, if view is under your control. Ignoring view for now." class="gfm gfm-issue">#1901</a>)</li>
<li data-sourcepos="62:1-62:30">Add music visualizer (<a href="/funkwhale/funkwhale/-/issues/1135" data-reference-type="issue" data-original="#1135" data-link="false" data-link-reference="false" data-project="17" data-issue="1535" data-project-path="funkwhale/funkwhale" data-iid="1135" data-issue-type="issue" data-container="body" data-placement="top" title="Music Visualizer Support" class="gfm gfm-issue">#1135</a>)</li>
<li data-sourcepos="63:1-63:40">Add playable tracks to gitpod instance</li>
<li data-sourcepos="64:1-64:44">Add playlists radio to search page (<a href="/funkwhale/funkwhale/-/issues/1968" data-reference-type="issue" data-original="#1968" data-link="false" data-link-reference="false" data-project="17" data-issue="3007" data-project-path="funkwhale/funkwhale" data-iid="1968" data-issue-type="issue" data-container="body" data-placement="top" title="add radio for playlist search results" class="gfm gfm-issue">#1968</a>)</li>
<li data-sourcepos="65:1-65:54">Add proper serialization for TextPreviewView (<a href="/funkwhale/funkwhale/-/issues/1903" data-reference-type="issue" data-original="#1903" data-link="false" data-link-reference="false" data-project="17" data-issue="2915" data-project-path="funkwhale/funkwhale" data-iid="1903" data-issue-type="issue" data-container="body" data-placement="top" title="TextPreviewView: unable to guess serializer. This is graceful fallback handling for APIViews. Consider using GenericAPIView as view base class, if view is under your control. Ignoring view for now." class="gfm gfm-issue">#1903</a>)</li>
<li data-sourcepos="66:1-66:46">Add python debug and test support for gitpod</li>
<li data-sourcepos="67:1-67:41">Add Serializer for SpaManifest endpoint</li>
<li data-sourcepos="68:1-68:29">Add support for python 3.11</li>
<li data-sourcepos="69:1-69:55">Added proper serializers for the rate-limit endpoint.</li>
<li data-sourcepos="70:1-70:30">Added type hints to the API.</li>
<li data-sourcepos="71:1-71:65">Adding support for play all radio in search result page (<a href="/funkwhale/funkwhale/-/issues/1563" data-reference-type="issue" data-original="#1563" data-link="false" data-link-reference="false" data-project="17" data-issue="2280" data-project-path="funkwhale/funkwhale" data-iid="1563" data-issue-type="issue" data-container="body" data-placement="top" title='Add "play all" button in tag search result page' class="gfm gfm-issue">#1563</a>)</li>
<li data-sourcepos="72:1-72:104">All administrator documentation has been rewritten to improve clarity and update outdated information.</li>
<li data-sourcepos="73:1-73:61">Allow arbitrary length names for artists, albums and tracks</li>
<li data-sourcepos="74:1-74:44">Allow installing the funkwhale_api package</li>
<li data-sourcepos="75:1-75:75">Allow using default browser dark mode and update UI dynamically on change</li>
<li data-sourcepos="76:1-76:49">Apply migrations on API container start (<a href="/funkwhale/funkwhale/-/merge_requests/1879" data-reference-type="merge_request" data-original="!1879" data-link="false" data-link-reference="false" data-project="17" data-merge-request="2415" data-project-path="funkwhale/funkwhale" data-iid="1879" data-container="body" data-placement="top" title="Next little API Docker rework" class="gfm gfm-merge_request">!1879</a>)</li>
<li data-sourcepos="77:1-77:49">Automatically fetch next page of tracks (<a href="/funkwhale/funkwhale/-/issues/1526" data-reference-type="issue" data-original="#1526" data-link="false" data-link-reference="false" data-project="17" data-issue="2201" data-project-path="funkwhale/funkwhale" data-iid="1526" data-issue-type="issue" data-container="body" data-placement="top" title="Playlist in Funkwhale Widget is limited to 50 tracks" class="gfm gfm-issue">#1526</a>)</li>
<li data-sourcepos="78:1-78:54">Build frontend natively for cross-arch docker images</li>
<li data-sourcepos="79:1-80:31">Change unmaintained PyMemoize library to django-cache-memoize
to enable Python 3.10 support</li>
<li data-sourcepos="81:1-81:38">Cleaned up frontend docker container</li>
<li data-sourcepos="82:1-82:43">Cleanup Gitlab CI and Dockerfiles (<a href="/funkwhale/funkwhale/-/merge_requests/1796" data-reference-type="merge_request" data-original="!1796" data-link="false" data-link-reference="false" data-project="17" data-merge-request="2288" data-project-path="funkwhale/funkwhale" data-iid="1796" data-container="body" data-placement="top" title="Cleanup Gitlab CI and Dockerfiles" class="gfm gfm-merge_request">!1796</a>)</li>
<li data-sourcepos="83:1-83:59">Create the funkwhale-manage entrypoint in the api package</li>
<li data-sourcepos="84:1-84:73">Created migration guide for the deprecated all-in-one docker container.</li>
<li data-sourcepos="85:1-85:42">Don't buffer python stdout/err in docker</li>
<li data-sourcepos="86:1-86:42">Don't compile python byte code in docker</li>
<li data-sourcepos="87:1-87:44">Don't use poetry in production deployments</li>
<li data-sourcepos="88:1-88:45">Drop direct dependency on pyopenssl (<a href="/funkwhale/funkwhale/-/issues/1975" data-reference-type="issue" data-original="#1975" data-link="false" data-link-reference="false" data-project="17" data-issue="3017" data-project-path="funkwhale/funkwhale" data-iid="1975" data-issue-type="issue" data-container="body" data-placement="top" title="AttributeError: module 'lib' has no attribute 'SSL_CTX_set_ecdh_auto' on docker develop build" class="gfm gfm-issue">#1975</a>)</li>
<li data-sourcepos="89:1-89:84">Exclude /api/v1/oauth/authorize from the specs since its not supported yet (<a href="/funkwhale/funkwhale/-/issues/1899" data-reference-type="issue" data-original="#1899" data-link="false" data-link-reference="false" data-project="17" data-issue="2909" data-project-path="funkwhale/funkwhale" data-iid="1899" data-issue-type="issue" data-container="body" data-placement="top" title="AuthorizeView: unable to guess serializer. This is graceful fallback handling for APIViews. Consider using GenericAPIView as view base class, if view is under your control. Ignoring view for now." class="gfm gfm-issue">#1899</a>)</li>
<li data-sourcepos="90:1-90:53">Fix openapi specs for user endpoints (<a href="/funkwhale/funkwhale/-/issues/1892" data-reference-type="issue" data-original="#1892" data-link="false" data-link-reference="false" data-project="17" data-issue="2902" data-project-path="funkwhale/funkwhale" data-iid="1892" data-issue-type="issue" data-container="body" data-placement="top" title="using @extend_schema on viewset class PasswordChangeView with parameters operation_id or operation will most likely result in a broken schema." class="gfm gfm-issue">#1892</a>, <a href="/funkwhale/funkwhale/-/issues/1894" data-reference-type="issue" data-original="#1894" data-link="false" data-link-reference="false" data-project="17" data-issue="2904" data-project-path="funkwhale/funkwhale" data-iid="1894" data-issue-type="issue" data-container="body" data-placement="top" title="using @extend_schema on viewset class PasswordResetView with parameters operation_id or operation will most likely result in a broken schema." class="gfm gfm-issue">#1894</a>)</li>
<li data-sourcepos="91:1-91:51">Fix Serializer for inline channel artists (<a href="/funkwhale/funkwhale/-/issues/1833" data-reference-type="issue" data-original="#1833" data-link="false" data-link-reference="false" data-project="17" data-issue="2773" data-project-path="funkwhale/funkwhale" data-iid="1833" data-issue-type="issue" data-container="body" data-placement="top" title="Channel tracks count is invalid" class="gfm gfm-issue">#1833</a>)</li>
<li data-sourcepos="92:1-92:37">Fix specs for ListenViewSet (<a href="/funkwhale/funkwhale/-/issues/1898" data-reference-type="issue" data-original="#1898" data-link="false" data-link-reference="false" data-project="17" data-issue="2908" data-project-path="funkwhale/funkwhale" data-iid="1898" data-issue-type="issue" data-container="body" data-placement="top" title="using @extend_schema on viewset class ListenViewSet with parameters operation_id or operation will most likely result in a broken schema." class="gfm gfm-issue">#1898</a>)</li>
<li data-sourcepos="93:1-93:81">Handle PWA correctly and provide better cache strategy for album covers (<a href="/funkwhale/funkwhale/-/issues/1721" data-reference-type="issue" data-original="#1721" data-link="false" data-link-reference="false" data-project="17" data-issue="2528" data-project-path="funkwhale/funkwhale" data-iid="1721" data-issue-type="issue" data-container="body" data-placement="top" title="Handle PWA / service worker correctly" class="gfm gfm-issue">#1721</a>)</li>
<li data-sourcepos="94:1-94:24">Improve docker caching</li>
<li data-sourcepos="95:1-95:55">Improve specification of LibraryFollowViewSet (<a href="/funkwhale/funkwhale/-/issues/1896" data-reference-type="issue" data-original="#1896" data-link="false" data-link-reference="false" data-project="17" data-issue="2906" data-project-path="funkwhale/funkwhale" data-iid="1896" data-issue-type="issue" data-container="body" data-placement="top" title="using @extend_schema on viewset class LibraryFollowViewSet with parameters operation_id or operation will most likely result in a broken schema." class="gfm gfm-issue">#1896</a>)</li>
<li data-sourcepos="96:1-96:44">Install API python package in docker image</li>
<li data-sourcepos="97:1-97:53">Make CI always run all tests on protected branches.</li>
<li data-sourcepos="98:1-98:49">Make mutations endpoint appear in openapi specs</li>
<li data-sourcepos="99:1-99:40">Make Python 3.10 tests in CI mandatory</li>
<li data-sourcepos="100:1-100:58">Make sure ChannelViewSet always has a serializer (<a href="/funkwhale/funkwhale/-/issues/1895" data-reference-type="issue" data-original="#1895" data-link="false" data-link-reference="false" data-project="17" data-issue="2905" data-project-path="funkwhale/funkwhale" data-iid="1895" data-issue-type="issue" data-container="body" data-placement="top" title="ChannelViewSet: exception raised while getting serializer. Hint: Is get_serializer_class() returning None or is get_queryset() not working without a request? Ignoring the view for now. (Exception: 'NoneType' object is not callable)" class="gfm gfm-issue">#1895</a>)</li>
<li data-sourcepos="101:1-101:56">Migrate to new queue system from old localStorage keys</li>
<li data-sourcepos="102:1-102:18">Migrate to Vue 3</li>
<li data-sourcepos="103:1-104:29">Migrate to vue-i18n (<a href="/funkwhale/funkwhale/-/issues/1831" data-reference-type="issue" data-original="#1831" data-link="false" data-link-reference="false" data-project="17" data-issue="2770" data-project-path="funkwhale/funkwhale" data-iid="1831" data-issue-type="issue" data-container="body" data-placement="top" title="Migrate to vue-i18n" class="gfm gfm-issue">#1831</a>)
Fix locale changing (<a href="/funkwhale/funkwhale/-/issues/1862" data-reference-type="issue" data-original="#1862" data-link="false" data-link-reference="false" data-project="17" data-issue="2836" data-project-path="funkwhale/funkwhale" data-iid="1862" data-issue-type="issue" data-container="body" data-placement="top" title="Can't change language nor extract translation files" class="gfm gfm-issue">#1862</a>)</li>
<li data-sourcepos="105:1-105:28">Migrated to sphinx-design.</li>
<li data-sourcepos="106:1-106:85">New task checking if remote instance is reachable to avoid playback latence (<a href="/funkwhale/funkwhale/-/issues/1711" data-reference-type="issue" data-original="#1711" data-link="false" data-link-reference="false" data-project="17" data-issue="2513" data-project-path="funkwhale/funkwhale" data-iid="1711" data-issue-type="issue" data-container="body" data-placement="top" title="ping instance before trying to load tracks ?" class="gfm gfm-issue">#1711</a>)</li>
<li data-sourcepos="107:1-107:123">OAuth Application client secrets are now hashed before storing them to the DB. Those are only displayed once from now on!</li>
<li data-sourcepos="108:1-108:65">Parameterize the default S3 ACL when uploading objects. (<a href="/funkwhale/funkwhale/-/issues/1319" data-reference-type="issue" data-original="#1319" data-link="false" data-link-reference="false" data-project="17" data-issue="1772" data-project-path="funkwhale/funkwhale" data-iid="1319" data-issue-type="issue" data-container="body" data-placement="top" title="S3 storage via Scaleway is forced to set private" class="gfm gfm-issue">#1319</a>)</li>
<li data-sourcepos="109:1-109:80">Pin Alpine package versions in API Dockerfile (fixes part of CI build issues).</li>
<li data-sourcepos="110:1-110:46">Prefer using the funkwhale-manage entrypoint</li>
<li data-sourcepos="111:1-111:39">Prevent running two pipelines for MRs</li>
<li data-sourcepos="112:1-112:87">Random and less listened radio filter out un-owned content on library section (<a href="/funkwhale/funkwhale/-/issues/2007" data-reference-type="issue" data-original="#2007" data-link="false" data-link-reference="false" data-project="17" data-issue="3073" data-project-path="funkwhale/funkwhale" data-iid="2007" data-issue-type="issue" data-container="body" data-placement="top" title='"Random" and "Less listened" radios in My Library section do not filter out elements from external libraries' class="gfm gfm-issue">#2007</a>)</li>
<li data-sourcepos="113:1-113:55">Refactor node info endpoint to use proper serializers</li>
<li data-sourcepos="114:1-114:50">Refactor SettingsView to use a proper serializer</li>
<li data-sourcepos="115:1-115:61">Remove unnecessary or wrong <code>is</code> keyword usage from backend</li>
<li data-sourcepos="116:1-116:74">Rename OpenAPI schema's operation ids for nicer API client method names.</li>
<li data-sourcepos="117:1-117:90">Replace django-channels package with web socket implementation from @vueuse/core (<a href="/funkwhale/funkwhale/-/issues/1715" data-reference-type="issue" data-original="#1715" data-link="false" data-link-reference="false" data-project="17" data-issue="2519" data-project-path="funkwhale/funkwhale" data-iid="1715" data-issue-type="issue" data-container="body" data-placement="top" title="Replace django-channels websocketbridge implementation" class="gfm gfm-issue">#1715</a>)</li>
<li data-sourcepos="118:1-118:97">Retry fetching new radio track 5 times if error occurred before resetting radio session (<a href="/funkwhale/funkwhale/-/issues/2022" data-reference-type="issue" data-original="#2022" data-link="false" data-link-reference="false" data-project="17" data-issue="3106" data-project-path="funkwhale/funkwhale" data-iid="2022" data-issue-type="issue" data-container="body" data-placement="top" title="Radio sessions are stopping after internet connections problems" class="gfm gfm-issue">#2022</a>)</li>
<li data-sourcepos="119:1-119:39">Rewrite embedded player to petite-vue</li>
<li data-sourcepos="120:1-120:58">Split DATABASE_URL into multiple configuration variables</li>
<li data-sourcepos="121:1-121:52">The ListenBrainz plugin submits the track duration</li>
<li data-sourcepos="122:1-122:53">Update Django OAuth Toolkit to version 2, ref <a href="/funkwhale/funkwhale/-/issues/1944" data-reference-type="issue" data-original="#1944" data-link="false" data-link-reference="false" data-project="17" data-issue="2972" data-project-path="funkwhale/funkwhale" data-iid="1944" data-issue-type="issue" data-container="body" data-placement="top" title="Django OAuth Toolkit v2" class="gfm gfm-issue">#1944</a>
</li>
<li data-sourcepos="123:1-123:46">Update migration after django update (<a href="/funkwhale/funkwhale/-/issues/1815" data-reference-type="issue" data-original="#1815" data-link="false" data-link-reference="false" data-project="17" data-issue="2732" data-project-path="funkwhale/funkwhale" data-iid="1815" data-issue-type="issue" data-container="body" data-placement="top" title="update migration after django update" class="gfm gfm-issue">#1815</a>)</li>
<li data-sourcepos="124:1-124:48">Update upload status when import fails (<a href="/funkwhale/funkwhale/-/issues/1999" data-reference-type="issue" data-original="#1999" data-link="false" data-link-reference="false" data-project="17" data-issue="3054" data-project-path="funkwhale/funkwhale" data-iid="1999" data-issue-type="issue" data-container="body" data-placement="top" title='upload silent errors with status "uploaded"' class="gfm gfm-issue">#1999</a>)</li>
<li data-sourcepos="125:1-125:69">Updated the installation guides to make installation steps clearer.</li>
<li data-sourcepos="126:1-126:42">Upgrade docker base image to alpine 3.17</li>
<li data-sourcepos="127:1-129:0">Use proper serializer for Search endpoint (<a href="/funkwhale/funkwhale/-/issues/1902" data-reference-type="issue" data-original="#1902" data-link="false" data-link-reference="false" data-project="17" data-issue="2914" data-project-path="funkwhale/funkwhale" data-iid="1902" data-issue-type="issue" data-container="body" data-placement="top" title="Search: unable to guess serializer. This is graceful fallback handling for APIViews. Consider using GenericAPIView as view base class, if view is under your control. Ignoring view for now." class="gfm gfm-issue">#1902</a>)</li>
</ul>
<p data-sourcepos="130:1-130:12" dir="auto">Refactoring:</p>
<ul data-sourcepos="132:1-136:0" dir="auto">
<li data-sourcepos="132:1-133:71">Instead of requesting the right spa content from the API using a middleware we now serve the
Frontend directly with nginx and only proxy-forward for API endpoints</li>
<li data-sourcepos="134:1-136:0">Replace django-rest-auth with dj-rest-auth (<a href="/funkwhale/funkwhale/-/issues/1877" data-reference-type="issue" data-original="#1877" data-link="false" data-link-reference="false" data-project="17" data-issue="2857" data-project-path="funkwhale/funkwhale" data-iid="1877" data-issue-type="issue" data-container="body" data-placement="top" title="Replace django-rest-auth with dj-rest-auth" class="gfm gfm-issue">#1877</a>)</li>
</ul>
<p data-sourcepos="137:1-137:9" dir="auto">Bugfixes:</p>
<ul data-sourcepos="139:1-197:0" dir="auto">
<li data-sourcepos="139:1-139:41">
<p data-sourcepos="139:3-139:41">Allow enabling systemd funkwhale.target</p>
</li>
<li data-sourcepos="140:1-140:57">
<p data-sourcepos="140:3-140:57">Allow playback of media from external frontend (<a href="/funkwhale/funkwhale/-/issues/1937" data-reference-type="issue" data-original="#1937" data-link="false" data-link-reference="false" data-project="17" data-issue="2965" data-project-path="funkwhale/funkwhale" data-iid="1937" data-issue-type="issue" data-container="body" data-placement="top" title="Default CORS settings don't allow playback on external frontends after Web Audio API rewrite" class="gfm gfm-issue">#1937</a>).</p>
</li>
<li data-sourcepos="141:1-141:139">
<p data-sourcepos="141:3-141:139">Allow summary field of actors to be blank. This leaves actors valid that have a blank (<code>""</code>) summary field and allows follows from those.</p>
</li>
<li data-sourcepos="142:1-142:39">
<p data-sourcepos="142:3-142:39">Catch ValueError on radio end (<a href="/funkwhale/funkwhale/-/issues/1596" data-reference-type="issue" data-original="#1596" data-link="false" data-link-reference="false" data-project="17" data-issue="2339" data-project-path="funkwhale/funkwhale" data-iid="1596" data-issue-type="issue" data-container="body" data-placement="top" title='Follow-up from "Update track table"' class="gfm gfm-issue">#1596</a>)</p>
</li>
<li data-sourcepos="143:1-143:63">
<p data-sourcepos="143:3-143:63">Channel overview was displaying foreign tracks (<a href="/funkwhale/funkwhale/-/issues/1773" data-reference-type="issue" data-original="#1773" data-link="false" data-link-reference="false" data-project="17" data-issue="2623" data-project-path="funkwhale/funkwhale" data-iid="1773" data-issue-type="issue" data-container="body" data-placement="top" title="Channels are displaying tracks that are not on the channel" class="gfm gfm-issue">#1773</a>) (1773)</p>
</li>
<li data-sourcepos="144:1-144:56">
<p data-sourcepos="144:3-144:56">Docker setup: do not export the API port 5000 publicly</p>
</li>
<li data-sourcepos="145:1-145:46">
<p data-sourcepos="145:3-145:46">Fix adding same track multiple times (<a href="/funkwhale/funkwhale/-/issues/1933" data-reference-type="issue" data-original="#1933" data-link="false" data-link-reference="false" data-project="17" data-issue="2961" data-project-path="funkwhale/funkwhale" data-iid="1933" data-issue-type="issue" data-container="body" data-placement="top" title="develop: Adding the same track multiple times to the Q effects in missing positions" class="gfm gfm-issue">#1933</a>)</p>
</li>
<li data-sourcepos="146:1-146:45">
<p data-sourcepos="146:3-146:45">Fix artist name submission in Maloja plugin</p>
</li>
<li data-sourcepos="147:1-147:45">
<p data-sourcepos="147:3-147:45">Fix changing visualizer CORS error (<a href="/funkwhale/funkwhale/-/issues/1934" data-reference-type="issue" data-original="#1934" data-link="false" data-link-reference="false" data-project="17" data-issue="2962" data-project-path="funkwhale/funkwhale" data-iid="1934" data-issue-type="issue" data-container="body" data-placement="top" title="Content security issue when changing visualizer preset" class="gfm gfm-issue">#1934</a>).</p>
</li>
<li data-sourcepos="148:1-148:82">
<p data-sourcepos="148:3-148:82">Fix content form autofocus despite <code>autofocus</code> prop being set to <code>false</code> (<a href="/funkwhale/funkwhale/-/issues/1924" data-reference-type="issue" data-original="#1924" data-link="false" data-link-reference="false" data-project="17" data-issue="2944" data-project-path="funkwhale/funkwhale" data-iid="1924" data-issue-type="issue" data-container="body" data-placement="top" title="develop: Reports and user requests are scrolling to the bottom and show all elements (not only unresolved)" class="gfm gfm-issue">#1924</a>)</p>
</li>
<li data-sourcepos="149:1-149:23">
<p data-sourcepos="149:3-149:23">Fix CSP header issues</p>
</li>
<li data-sourcepos="150:1-150:57">
<p data-sourcepos="150:3-150:57">Fix CSP issue caused by django-channels package (<a href="/funkwhale/funkwhale/-/issues/1752" data-reference-type="issue" data-original="#1752" data-link="false" data-link-reference="false" data-project="17" data-issue="2578" data-project-path="funkwhale/funkwhale" data-iid="1752" data-issue-type="issue" data-container="body" data-placement="top" title="CSP loading issue of JS resources in current devel docker container setup" class="gfm gfm-issue">#1752</a>)</p>
</li>
<li data-sourcepos="151:1-151:77">
<p data-sourcepos="151:3-151:77">Fix docker API image building with removing autobahn workaround version pin</p>
</li>
<li data-sourcepos="152:1-152:28">
<p data-sourcepos="152:3-152:28">Fix docker builds on armv7</p>
</li>
<li data-sourcepos="153:1-153:29">
<p data-sourcepos="153:3-153:29">Fix docker nginx entrypoint</p>
</li>
<li data-sourcepos="154:1-154:37">
<p data-sourcepos="154:3-154:37">Fix editing playlist tracks (<a href="/funkwhale/funkwhale/-/issues/1362" data-reference-type="issue" data-original="#1362" data-link="false" data-link-reference="false" data-project="17" data-issue="1822" data-project-path="funkwhale/funkwhale" data-iid="1362" data-issue-type="issue" data-container="body" data-placement="top" title="Unable to Add Queue to Playlist" class="gfm gfm-issue">#1362</a>)</p>
</li>
<li data-sourcepos="155:1-155:56">
<p data-sourcepos="155:3-155:56">Fix embedded player not working on social posts (1946)</p>
</li>
<li data-sourcepos="156:1-156:30">
<p data-sourcepos="156:3-156:30">Fix favorite button in queue</p>
</li>
<li data-sourcepos="157:1-157:59">
<p data-sourcepos="157:3-157:59">Fix fetching pages of albums in album detail view (<a href="/funkwhale/funkwhale/-/issues/1927" data-reference-type="issue" data-original="#1927" data-link="false" data-link-reference="false" data-project="17" data-issue="2952" data-project-path="funkwhale/funkwhale" data-iid="1927" data-issue-type="issue" data-container="body" data-placement="top" title="Pagination on album details page not working" class="gfm gfm-issue">#1927</a>)</p>
</li>
<li data-sourcepos="158:1-158:42">
<p data-sourcepos="158:3-158:42">Fix front album tracks count translation</p>
</li>
<li data-sourcepos="159:1-159:68">
<p data-sourcepos="159:3-159:68">Fix global keyboard shortcuts firing when input is focused (<a href="/funkwhale/funkwhale/-/issues/1876" data-reference-type="issue" data-original="#1876" data-link="false" data-link-reference="false" data-project="17" data-issue="2856" data-project-path="funkwhale/funkwhale" data-iid="1876" data-issue-type="issue" data-container="body" data-placement="top" title="Keyboard shortcuts not firing as expected" class="gfm gfm-issue">#1876</a>)</p>
</li>
<li data-sourcepos="160:1-160:51">
<p data-sourcepos="160:3-160:51">Fix lots of problems in debian installation guide</p>
</li>
<li data-sourcepos="161:1-161:87">
<p data-sourcepos="161:3-161:87">Fix media directory nginx routing error in front docker container introduced in <a href="/funkwhale/funkwhale/-/merge_requests/1897" data-reference-type="merge_request" data-original="!1897" data-link="false" data-link-reference="false" data-project="17" data-merge-request="2438" data-project-path="funkwhale/funkwhale" data-iid="1897" data-container="body" data-placement="top" title="refactor(front/Docker): cleanup nginx-based container" class="gfm gfm-merge_request">!1897</a></p>
</li>
<li data-sourcepos="162:1-162:25">
<p data-sourcepos="162:3-162:25">Fix OAuth login (<a href="/funkwhale/funkwhale/-/issues/1890" data-reference-type="issue" data-original="#1890" data-link="false" data-link-reference="false" data-project="17" data-issue="2900" data-project-path="funkwhale/funkwhale" data-iid="1890" data-issue-type="issue" data-container="body" data-placement="top" title="OAuth login broken" class="gfm gfm-issue">#1890</a>)</p>
</li>
<li data-sourcepos="163:1-163:59">
<p data-sourcepos="163:3-163:59">Fix play button in albums with multi-page volumes (<a href="/funkwhale/funkwhale/-/issues/1928" data-reference-type="issue" data-original="#1928" data-link="false" data-link-reference="false" data-project="17" data-issue="2953" data-project-path="funkwhale/funkwhale" data-iid="1928" data-issue-type="issue" data-container="body" data-placement="top" title="Play button on multi-page volumes doesn't return all results" class="gfm gfm-issue">#1928</a>)</p>
</li>
<li data-sourcepos="164:1-164:44">
<p data-sourcepos="164:3-164:44">Fix player closing when queue ends (<a href="/funkwhale/funkwhale/-/issues/1931" data-reference-type="issue" data-original="#1931" data-link="false" data-link-reference="false" data-project="17" data-issue="2959" data-project-path="funkwhale/funkwhale" data-iid="1931" data-issue-type="issue" data-container="body" data-placement="top" title="Queue closes when playback finishes" class="gfm gfm-issue">#1931</a>)</p>
</li>
<li data-sourcepos="165:1-165:49">
<p data-sourcepos="165:3-165:49">Fix postgres connection details in docker setup</p>
</li>
<li data-sourcepos="166:1-166:37">
<p data-sourcepos="166:3-166:37">Fix purging of dangling files <a href="/funkwhale/funkwhale/-/issues/1929" data-reference-type="issue" data-original="#1929" data-link="false" data-link-reference="false" data-project="17" data-issue="2955" data-project-path="funkwhale/funkwhale" data-iid="1929" data-issue-type="issue" data-container="body" data-placement="top" title="Can't purge failed files" class="gfm gfm-issue">#1929</a></p>
</li>
<li data-sourcepos="167:1-167:27">
<p data-sourcepos="167:3-167:27">Fix remote search (<a href="/funkwhale/funkwhale/-/issues/1857" data-reference-type="issue" data-original="#1857" data-link="false" data-link-reference="false" data-project="17" data-issue="2831" data-project-path="funkwhale/funkwhale" data-iid="1857" data-issue-type="issue" data-container="body" data-placement="top" title="Search submit button doesn't work on Vue 3" class="gfm gfm-issue">#1857</a>)</p>
</li>
<li data-sourcepos="168:1-168:46">
<p data-sourcepos="168:3-168:46">Fix search by text in affected views (<a href="/funkwhale/funkwhale/-/issues/1858" data-reference-type="issue" data-original="#1858" data-link="false" data-link-reference="false" data-project="17" data-issue="2832" data-project-path="funkwhale/funkwhale" data-iid="1858" data-issue-type="issue" data-container="body" data-placement="top" title="Initial search on pages is ignored" class="gfm gfm-issue">#1858</a>)</p>
</li>
<li data-sourcepos="169:1-169:38">
<p data-sourcepos="169:3-169:38">Fix timeout on spa manifest requests</p>
</li>
<li data-sourcepos="170:1-170:80">
<p data-sourcepos="170:3-170:80">Fix track table showing all tracks and double pagination in some cases (<a href="/funkwhale/funkwhale/-/issues/1923" data-reference-type="issue" data-original="#1923" data-link="false" data-link-reference="false" data-project="17" data-issue="2941" data-project-path="funkwhale/funkwhale" data-iid="1923" data-issue-type="issue" data-container="body" data-placement="top" title="favorites shows more than favorites" class="gfm gfm-issue">#1923</a>)</p>
</li>
<li data-sourcepos="171:1-171:49">
<p data-sourcepos="171:3-171:49">Fix user requests and reports filtering (<a href="/funkwhale/funkwhale/-/issues/1924" data-reference-type="issue" data-original="#1924" data-link="false" data-link-reference="false" data-project="17" data-issue="2944" data-project-path="funkwhale/funkwhale" data-iid="1924" data-issue-type="issue" data-container="body" data-placement="top" title="develop: Reports and user requests are scrolling to the bottom and show all elements (not only unresolved)" class="gfm gfm-issue">#1924</a>)</p>
</li>
<li data-sourcepos="172:1-172:59">
<p data-sourcepos="172:3-172:59">Fix validity issues in openapi/swagger spec files (<a href="/funkwhale/funkwhale/-/issues/1171" data-reference-type="issue" data-original="#1171" data-link="false" data-link-reference="false" data-project="17" data-issue="1591" data-project-path="funkwhale/funkwhale" data-iid="1171" data-issue-type="issue" data-container="body" data-placement="top" title="OpenAPI/Swagger file has invalid JSON pointer syntax" class="gfm gfm-issue">#1171</a>)</p>
</li>
<li data-sourcepos="173:1-173:86">
<p data-sourcepos="173:3-173:86">Fixed an issue which caused links in Markdown forms to not render correctly. (<a href="/funkwhale/funkwhale/-/issues/2023" data-reference-type="issue" data-original="#2023" data-link="false" data-link-reference="false" data-project="17" data-issue="3107" data-project-path="funkwhale/funkwhale" data-iid="2023" data-issue-type="issue" data-container="body" data-placement="top" title="Links in signup form don't work" class="gfm gfm-issue">#2023</a>)</p>
</li>
<li data-sourcepos="174:1-174:29">
<p data-sourcepos="174:3-174:29">Fixed login redirect (1736)</p>
</li>
<li data-sourcepos="175:1-175:44">
<p data-sourcepos="175:3-175:44">Fixed mobile player element widths (<a href="/funkwhale/funkwhale/-/issues/2054" data-reference-type="issue" data-original="#2054" data-link="false" data-link-reference="false" data-project="17" data-issue="3156" data-project-path="funkwhale/funkwhale" data-iid="2054" data-issue-type="issue" data-container="body" data-placement="top" title="Wrong position of the playlist view in the mobile webUI of 1.3.0" class="gfm gfm-issue">#2054</a>)</p>
</li>
<li data-sourcepos="176:1-176:68">
<p data-sourcepos="176:3-176:68">Fixed remote subscription form in Podcast and search views (<a href="/funkwhale/funkwhale/-/issues/1708" data-reference-type="issue" data-original="#1708" data-link="false" data-link-reference="false" data-project="17" data-issue="2509" data-project-path="funkwhale/funkwhale" data-iid="1708" data-issue-type="issue" data-container="body" data-placement="top" title="Can't subscribe to podcasts" class="gfm gfm-issue">#1708</a>)</p>
</li>
<li data-sourcepos="177:1-177:45">
<p data-sourcepos="177:3-177:45">Fixed upload form VUE errors (<a href="/funkwhale/funkwhale/-/issues/1738" data-reference-type="issue" data-original="#1738" data-link="false" data-link-reference="false" data-project="17" data-issue="2551" data-project-path="funkwhale/funkwhale" data-iid="1738" data-issue-type="issue" data-container="body" data-placement="top" title="Upload form Vue errors" class="gfm gfm-issue">#1738</a>) (1738)</p>
</li>
<li data-sourcepos="178:1-178:98">
<p data-sourcepos="178:3-178:98">Fixes an issue which made it possible to download all media files without access control (<a href="/funkwhale/funkwhale/-/issues/2101" data-reference-type="issue" data-original="#2101" data-link="false" data-link-reference="false" data-project="17" data-issue="3223" data-project-path="funkwhale/funkwhale" data-iid="2101" data-issue-type="issue" data-container="body" data-placement="top" title="Media files are publically available without access control" class="gfm gfm-issue">#2101</a>)</p>
</li>
<li data-sourcepos="179:1-179:35">
<p data-sourcepos="179:3-179:35">Fixes channel page (<a href="/funkwhale/funkwhale/-/issues/1729" data-reference-type="issue" data-original="#1729" data-link="false" data-link-reference="false" data-project="17" data-issue="2540" data-project-path="funkwhale/funkwhale" data-iid="1729" data-issue-type="issue" data-container="body" data-placement="top" title="Create channel album not working in fresh install" class="gfm gfm-issue">#1729</a>) (1729)</p>
</li>
<li data-sourcepos="180:1-180:57">
<p data-sourcepos="180:3-180:57">Fixes development environment set-up with docker (1726)</p>
</li>
<li data-sourcepos="181:1-181:35">
<p data-sourcepos="181:3-181:35">Fixes embed player (<a href="/funkwhale/funkwhale/-/issues/1783" data-reference-type="issue" data-original="#1783" data-link="false" data-link-reference="false" data-project="17" data-issue="2644" data-project-path="funkwhale/funkwhale" data-iid="1783" data-issue-type="issue" data-container="body" data-placement="top" title="embed widget not working anymore in develop" class="gfm gfm-issue">#1783</a>) (1783)</p>
</li>
<li data-sourcepos="182:1-182:30">
<p data-sourcepos="182:3-182:30">Fixes service worker (<a href="/funkwhale/funkwhale/-/issues/1634" data-reference-type="issue" data-original="#1634" data-link="false" data-link-reference="false" data-project="17" data-issue="2396" data-project-path="funkwhale/funkwhale" data-iid="1634" data-issue-type="issue" data-container="body" data-placement="top" title="Fix service-worker" class="gfm gfm-issue">#1634</a>)</p>
</li>
<li data-sourcepos="183:1-183:63">
<p data-sourcepos="183:3-183:63">Fixes track listenings not being sent when tab is not focused</p>
</li>
<li data-sourcepos="184:1-184:60">
<p data-sourcepos="184:3-184:60">Hide create custom radio to un-authenticated users (<a href="/funkwhale/funkwhale/-/issues/1720" data-reference-type="issue" data-original="#1720" data-link="false" data-link-reference="false" data-project="17" data-issue="2527" data-project-path="funkwhale/funkwhale" data-iid="1720" data-issue-type="issue" data-container="body" data-placement="top" title="close /radios/build to un-authenticated users" class="gfm gfm-issue">#1720</a>)</p>
</li>
<li data-sourcepos="185:1-185:52">
<p data-sourcepos="185:3-185:52">Improve signal handling for service and containers</p>
</li>
<li data-sourcepos="186:1-186:59">
<p data-sourcepos="186:3-186:59">Move api docker hardcoded env vars in the settings module</p>
</li>
<li data-sourcepos="187:1-190:20">
<p data-sourcepos="187:3-187:52">Prefer str over dict for the CACHE_URL api setting</p>
<p data-sourcepos="189:3-190:20">This fix the ability to reuse the CACHE_URL with other settings such as
CELERY_BROKER_URL.</p>
</li>
<li data-sourcepos="191:1-191:56">
<p data-sourcepos="191:3-191:56">Remove trailing slash from reverse proxy configuration</p>
</li>
<li data-sourcepos="192:1-192:40">
<p data-sourcepos="192:3-192:40">Remove unused Footer component (<a href="/funkwhale/funkwhale/-/issues/1660" data-reference-type="issue" data-original="#1660" data-link="false" data-link-reference="false" data-project="17" data-issue="2429" data-project-path="funkwhale/funkwhale" data-iid="1660" data-issue-type="issue" data-container="body" data-placement="top" title="Check if Footer Component is still used and remove" class="gfm gfm-issue">#1660</a>)</p>
</li>
<li data-sourcepos="193:1-193:64">
<p data-sourcepos="193:3-193:64">Remove usage of deprecated Model and Serializer fields (<a href="/funkwhale/funkwhale/-/issues/1663" data-reference-type="issue" data-original="#1663" data-link="false" data-link-reference="false" data-project="17" data-issue="2432" data-project-path="funkwhale/funkwhale" data-iid="1663" data-issue-type="issue" data-container="body" data-placement="top" title="Warnings after upgrade to 1.2.0" class="gfm gfm-issue">#1663</a>)</p>
</li>
<li data-sourcepos="194:1-194:100">
<p data-sourcepos="194:3-194:100">Resolved an issue where queue text with mouse over has dark text on dark background (<a href="/funkwhale/funkwhale/-/issues/2058" data-reference-type="issue" data-original="#2058" data-link="false" data-link-reference="false" data-project="17" data-issue="3162" data-project-path="funkwhale/funkwhale" data-iid="2058" data-issue-type="issue" data-container="body" data-placement="top" title="UI element: Player UI Queue list: Text remains black when using dark theme" class="gfm gfm-issue">#2058</a>) (2058)</p>
</li>
<li data-sourcepos="195:1-197:0">
<p data-sourcepos="195:3-195:112">Skip refreshing local actors in celery federation.refresh_actor_data task - fixes disappearing avatars (<a href="/funkwhale/funkwhale/-/merge_requests/1873" data-reference-type="merge_request" data-original="!1873" data-link="false" data-link-reference="false" data-project="17" data-merge-request="2403" data-project-path="funkwhale/funkwhale" data-iid="1873" data-container="body" data-placement="top" title="fix(federation/tasks/refresh_actor_data): skip refreshing local actors" class="gfm gfm-merge_request">!1873</a>)</p>
</li>
</ul>
<p data-sourcepos="198:1-198:14" dir="auto">Documentation:</p>
<ul data-sourcepos="200:1-221:0" dir="auto">
<li data-sourcepos="200:1-200:64">Add ability to translate documentation into multiple languages</li>
<li data-sourcepos="201:1-201:75">Add generic upgrade instructions to Docker postgres documentation (<a href="/funkwhale/funkwhale/-/issues/2049" data-reference-type="issue" data-original="#2049" data-link="false" data-link-reference="false" data-project="17" data-issue="3150" data-project-path="funkwhale/funkwhale" data-iid="2049" data-issue-type="issue" data-container="body" data-placement="top" title="Docs: replace postgres upgrade guide with multiarch instructions" class="gfm gfm-issue">#2049</a>)</li>
<li data-sourcepos="202:1-202:50">Add restore instructions to backup docs (<a href="/funkwhale/funkwhale/-/issues/1627" data-reference-type="issue" data-original="#1627" data-link="false" data-link-reference="false" data-project="17" data-issue="2385" data-project-path="funkwhale/funkwhale" data-iid="1627" data-issue-type="issue" data-container="body" data-placement="top" title="Add restore documention in backup section" class="gfm gfm-issue">#1627</a>).</li>
<li data-sourcepos="203:1-203:72">Add systemd update instructions to Debian upgrade instructions (<a href="/funkwhale/funkwhale/-/issues/1966" data-reference-type="issue" data-original="#1966" data-link="false" data-link-reference="false" data-project="17" data-issue="3005" data-project-path="funkwhale/funkwhale" data-iid="1966" data-issue-type="issue" data-container="body" data-placement="top" title="1.3 upgrade instruction" class="gfm gfm-issue">#1966</a>)</li>
<li data-sourcepos="204:1-204:70">Added Nginx regeneration instructions to Debian update guide (<a href="/funkwhale/funkwhale/-/issues/2050" data-reference-type="issue" data-original="#2050" data-link="false" data-link-reference="false" data-project="17" data-issue="3151" data-project-path="funkwhale/funkwhale" data-iid="2050" data-issue-type="issue" data-container="body" data-placement="top" title="Add nginx configuration update to docs" class="gfm gfm-issue">#2050</a>)</li>
<li data-sourcepos="205:1-205:59">Added virtualenv upgrade instructions for Debian (<a href="/funkwhale/funkwhale/-/issues/1562" data-reference-type="issue" data-original="#1562" data-link="false" data-link-reference="false" data-project="17" data-issue="2269" data-project-path="funkwhale/funkwhale" data-iid="1562" data-issue-type="issue" data-container="body" data-placement="top" title="Provide docs to help with migration Debian 10 -> 11" class="gfm gfm-issue">#1562</a>).</li>
<li data-sourcepos="206:1-206:26">Cleaned up documentation</li>
<li data-sourcepos="207:1-207:53">Document the new login flow of the CLI-tool (<a href="/funkwhale/funkwhale/-/issues/1800" data-reference-type="issue" data-original="#1800" data-link="false" data-link-reference="false" data-project="17" data-issue="2689" data-project-path="funkwhale/funkwhale" data-iid="1800" data-issue-type="issue" data-container="body" data-placement="top" title="Document changed login-flow for the cli" class="gfm gfm-issue">#1800</a>)</li>
<li data-sourcepos="208:1-208:38">Documented LOGLEVEL command (<a href="/funkwhale/funkwhale/-/issues/1541" data-reference-type="issue" data-original="#1541" data-link="false" data-link-reference="false" data-project="17" data-issue="2222" data-project-path="funkwhale/funkwhale" data-iid="1541" data-issue-type="issue" data-container="body" data-placement="top" title='Follow-up from "Document log level"' class="gfm gfm-issue">#1541</a>).</li>
<li data-sourcepos="209:1-209:61">Documented the <code>NGINX_MAX_BODY_SIZE</code> .env variable (<a href="/funkwhale/funkwhale/-/issues/1624" data-reference-type="issue" data-original="#1624" data-link="false" data-link-reference="false" data-project="17" data-issue="2382" data-project-path="funkwhale/funkwhale" data-iid="1624" data-issue-type="issue" data-container="body" data-placement="top" title="Dockerized instaneces have multiple locations for upload limits" class="gfm gfm-issue">#1624</a>).</li>
<li data-sourcepos="210:1-210:39">Fix broken links in CHANGELOG (<a href="/funkwhale/funkwhale/-/issues/1976" data-reference-type="issue" data-original="#1976" data-link="false" data-link-reference="false" data-project="17" data-issue="3018" data-project-path="funkwhale/funkwhale" data-iid="1976" data-issue-type="issue" data-container="body" data-placement="top" title="Update documentation links in README files" class="gfm gfm-issue">#1976</a>)</li>
<li data-sourcepos="211:1-211:41">Harden security for debian install docs</li>
<li data-sourcepos="212:1-212:73">Remove unnecessary postgres variable in Docker migration guide (<a href="/funkwhale/funkwhale/-/issues/2124" data-reference-type="issue" data-original="#2124" data-link="false" data-link-reference="false" data-project="17" data-issue="3280" data-project-path="funkwhale/funkwhale" data-iid="2124" data-issue-type="issue" data-container="body" data-placement="top" title="Wrong advice in AiO -> Multi Container Migration guide about database" class="gfm gfm-issue">#2124</a>).</li>
<li data-sourcepos="213:1-213:42">Rewrote documentation contributor guide.</li>
<li data-sourcepos="214:1-214:39">Rewrote the architecture file (<a href="/funkwhale/funkwhale/-/issues/1908" data-reference-type="issue" data-original="#1908" data-link="false" data-link-reference="false" data-project="17" data-issue="2922" data-project-path="funkwhale/funkwhale" data-iid="1908" data-issue-type="task" data-container="body" data-placement="top" title="Rewrite architecture documentation" class="gfm gfm-issue">#1908</a>)</li>
<li data-sourcepos="215:1-215:56">Rewrote the federation developer documentation (<a href="/funkwhale/funkwhale/-/issues/1911" data-reference-type="issue" data-original="#1911" data-link="false" data-link-reference="false" data-project="17" data-issue="2925" data-project-path="funkwhale/funkwhale" data-iid="1911" data-issue-type="task" data-container="body" data-placement="top" title="Rewrite federation documentation" class="gfm gfm-issue">#1911</a>)</li>
<li data-sourcepos="216:1-216:43">Rewrote the plugins documentation (<a href="/funkwhale/funkwhale/-/issues/1910" data-reference-type="issue" data-original="#1910" data-link="false" data-link-reference="false" data-project="17" data-issue="2924" data-project-path="funkwhale/funkwhale" data-iid="1910" data-issue-type="task" data-container="body" data-placement="top" title="Rewrite plugins documentation" class="gfm gfm-issue">#1910</a>)</li>
<li data-sourcepos="217:1-217:26">Rewrote translators file</li>
<li data-sourcepos="218:1-218:52">Updated API developer documentation (<a href="/funkwhale/funkwhale/-/issues/1912" data-reference-type="issue" data-original="#1912" data-link="false" data-link-reference="false" data-project="17" data-issue="2926" data-project-path="funkwhale/funkwhale" data-iid="1912" data-issue-type="task" data-container="body" data-placement="top" title="Rewrite subsonic API documentation" class="gfm gfm-issue">#1912</a>, <a href="/funkwhale/funkwhale/-/issues/1909" data-reference-type="issue" data-original="#1909" data-link="false" data-link-reference="false" data-project="17" data-issue="2923" data-project-path="funkwhale/funkwhale" data-iid="1909" data-issue-type="task" data-container="body" data-placement="top" title="Update API documentation" class="gfm gfm-issue">#1909</a>)</li>
<li data-sourcepos="219:1-221:0">Updated CONTRIBUTING guide with up-to-date documentation. Created layout in documentation hub.</li>
</ul>
<p data-sourcepos="222:1-222:6" dir="auto">Other:</p>
<ul data-sourcepos="224:1-255:0" dir="auto">
<li data-sourcepos="224:1-224:57">
<p data-sourcepos="224:3-224:57">Add a CI job to check if changelog snippet is available</p>
</li>
<li data-sourcepos="225:1-225:29">
<p data-sourcepos="225:3-225:29">Add CI broken links checker</p>
</li>
<li data-sourcepos="226:1-232:13">
<p data-sourcepos="226:3-226:22">Add pre-commit hooks</p>
<ul data-sourcepos="227:3-232:13">
<li data-sourcepos="227:3-227:10">flake8</li>
<li data-sourcepos="228:3-228:9">black</li>
<li data-sourcepos="229:3-229:9">isort</li>
<li data-sourcepos="230:3-230:13">pyupgrade</li>
<li data-sourcepos="231:3-231:12">prettier</li>
<li data-sourcepos="232:3-232:13">codespell</li>
</ul>
</li>
<li data-sourcepos="233:1-233:37">
<p data-sourcepos="233:3-233:37">Add pre-commit to development tools</p>
</li>
<li data-sourcepos="234:1-234:60">
<p data-sourcepos="234:3-234:60">Align the openapi spec to the actual API wherever possible</p>
</li>
<li data-sourcepos="235:1-235:43">
<p data-sourcepos="235:3-235:43">Cache lychee checked urls for 1 day in CI</p>
</li>
<li data-sourcepos="236:1-236:45">
<p data-sourcepos="236:3-236:45">Fix api tests warnings by renaming fixtures</p>
</li>
<li data-sourcepos="237:1-237:37">
<p data-sourcepos="237:3-237:37">Fix permissions for build artifacts</p>
</li>
<li data-sourcepos="238:1-238:31">
<p data-sourcepos="238:3-238:31">Fix shell scripts lint errors</p>
</li>
<li data-sourcepos="239:1-239:27">
<p data-sourcepos="239:3-239:27">Format api pyproject.toml</p>
</li>
<li data-sourcepos="240:1-247:31">
<p data-sourcepos="240:3-240:38">Format or fix files using pre-commit</p>
<ul data-sourcepos="242:3-247:31">
<li data-sourcepos="242:3-242:31">Upgrade code to >=python3.7</li>
<li data-sourcepos="243:3-243:23">Fix flake8 warnings</li>
<li data-sourcepos="244:3-244:23">Fix spelling errors</li>
<li data-sourcepos="245:3-245:28">Format files using black</li>
<li data-sourcepos="246:3-246:28">Format files using isort</li>
<li data-sourcepos="247:3-247:31">Format files using prettier</li>
</ul>
</li>
<li data-sourcepos="248:1-248:41">
<p data-sourcepos="248:3-248:41">Move api tools config to pyproject.toml</p>
</li>
<li data-sourcepos="249:1-249:69">
<p data-sourcepos="249:3-249:69">Move database url composition from custom script to django settings</p>
</li>
<li data-sourcepos="250:1-250:41">
<p data-sourcepos="250:3-250:41">Remove docker_all_in_one_release ci job</p>
</li>
<li data-sourcepos="251:1-251:44">
<p data-sourcepos="251:3-251:44">Rename api composer/django/ dir to docker/</p>
</li>
<li data-sourcepos="252:1-252:35">
<p data-sourcepos="252:3-252:35">Unpin asgiref in API dependencies</p>
</li>
<li data-sourcepos="253:1-255:0">
<p data-sourcepos="253:3-253:43">Use vite for building the frontend, <a href="/funkwhale/funkwhale/-/issues/1644" data-reference-type="issue" data-original="#1644" data-link="false" data-link-reference="false" data-project="17" data-issue="2408" data-project-path="funkwhale/funkwhale" data-iid="1644" data-issue-type="issue" data-container="body" data-placement="top" title="Transition to Vite" class="gfm gfm-issue">#1644</a></p>
</li>
</ul>
<p data-sourcepos="256:1-256:12" dir="auto">Deprecation:</p>
<ul data-sourcepos="258:1-265:0" dir="auto">
<li data-sourcepos="258:1-258:80">Deprecate the api manage.py script in favor of the funkwhale-manage entrypoint</li>
<li data-sourcepos="259:1-260:11">That's the last minor version series that supports python3.7. Funkwhale 1.4 will remove support for
it. <a href="/funkwhale/funkwhale/-/issues/1693" data-reference-type="issue" data-original="#1693" data-link="false" data-link-reference="false" data-project="17" data-issue="2485" data-project-path="funkwhale/funkwhale" data-iid="1693" data-issue-type="issue" data-container="body" data-placement="top" title="Drop Python 3.7" class="gfm gfm-issue">#1693</a>
</li>
<li data-sourcepos="261:1-265:0">The automatically generated 'DATABASE_URL' configuration in the docker setup is deprecated, please
configure either the 'DATABASE_URL' environment variable or the 'DATABASE_HOST', 'DATABASE_USER' and
'DATABASE_PASSWORD' environment variables instead.</li>
</ul>
<p data-sourcepos="266:1-266:8" dir="auto">Removal:</p>
<ul data-sourcepos="268:1-270:0" dir="auto">
<li data-sourcepos="268:1-270:0">This release removes support for Python 3.6. Please make sure you update your python version before
Updating Funkwhale!</li>
</ul>
<p data-sourcepos="271:1-271:11" dir="auto">Committers:</p>
<ul data-sourcepos="273:1-320:0" dir="auto">
<li data-sourcepos="273:1-273:7">Agate</li>
<li data-sourcepos="274:1-274:26">Aina Hernàndez Campaña</li>
<li data-sourcepos="275:1-275:13">AMoonRabbit</li>
<li data-sourcepos="276:1-276:7">Anton</li>
<li data-sourcepos="277:1-277:12">bruce diao</li>
<li data-sourcepos="278:1-278:16">Bruno Talanski</li>
<li data-sourcepos="279:1-279:17">ButterflyOfFire</li>
<li data-sourcepos="280:1-280:17">Çağla Pickaxe</li>
<li data-sourcepos="281:1-281:19">Ciarán Ainsworth</li>
<li data-sourcepos="282:1-282:19">Dignified Silence</li>
<li data-sourcepos="283:1-283:8">dignny</li>
<li data-sourcepos="284:1-284:18">Éilias McTalún</li>
<li data-sourcepos="285:1-285:12">EorlBruder</li>
<li data-sourcepos="286:1-286:14">Fedi Funkers</li>
<li data-sourcepos="287:1-287:14">Georg Krause</li>
<li data-sourcepos="288:1-288:7">ghose</li>
<li data-sourcepos="289:1-289:15">Henri Dickson</li>
<li data-sourcepos="290:1-290:15">Jacek Pruciak</li>
<li data-sourcepos="291:1-291:15">Jasper Bogers</li>
<li data-sourcepos="292:1-292:34">Jhoan Sebastian Espinosa Borrero</li>
<li data-sourcepos="293:1-293:4">jo</li>
<li data-sourcepos="294:1-294:8">jooola</li>
<li data-sourcepos="295:1-295:19">Julian Rademacher</li>
<li data-sourcepos="296:1-296:12">JuniorJPDJ</li>
<li data-sourcepos="297:1-297:16">Kasper Seweryn</li>
<li data-sourcepos="298:1-298:8">Keunes</li>
<li data-sourcepos="299:1-299:11">Kisel1337</li>
<li data-sourcepos="300:1-300:10">Laurin W</li>
<li data-sourcepos="301:1-301:14">Marcos Peña</li>
<li data-sourcepos="302:1-302:16">Matyáš Caras</li>
<li data-sourcepos="303:1-303:14">Michael Long</li>
<li data-sourcepos="304:1-304:8">nztvar</li>
<li data-sourcepos="305:1-305:5">oki</li>
<li data-sourcepos="306:1-306:13">Petitminion</li>
<li data-sourcepos="307:1-307:16">Philipp Wolfer</li>
<li data-sourcepos="308:1-308:8">poeppe</li>
<li data-sourcepos="309:1-309:14">Porrumentzio</li>
<li data-sourcepos="310:1-310:6">ppom</li>
<li data-sourcepos="311:1-311:18">Reinhard Prechtl</li>
<li data-sourcepos="312:1-312:5">Sky</li>
<li data-sourcepos="313:1-313:9">Sporiff</li>
<li data-sourcepos="314:1-314:22">Stuart Begley-Miller</li>
<li data-sourcepos="315:1-315:5"><a href="/ta" data-reference-type="user" data-user="19972" data-container="body" data-placement="top" class="gfm gfm-project_member js-user-link" title="T A">@ta</a></li>
<li data-sourcepos="316:1-316:8">Thomas</li>
<li data-sourcepos="317:1-317:19">Till Robin Zickel</li>
<li data-sourcepos="318:1-318:10">tobifroe</li>
<li data-sourcepos="319:1-320:0">wvffle</li>
</ul>
<p data-sourcepos="321:1-321:27" dir="auto">Contributors to our Issues:</p>
<ul data-sourcepos="323:1-377:0" dir="auto">
<li data-sourcepos="323:1-323:13">AMoonRabbit</li>
<li data-sourcepos="324:1-324:7">Agate</li>
<li data-sourcepos="325:1-325:15">Artem Anufrij</li>
<li data-sourcepos="326:1-326:12">ChengChung</li>
<li data-sourcepos="327:1-327:19">Ciarán Ainsworth</li>
<li data-sourcepos="328:1-328:7">Creak</li>
<li data-sourcepos="329:1-329:11">Eric Mesa</li>
<li data-sourcepos="330:1-330:14">Georg Krause</li>
<li data-sourcepos="331:1-331:12">Hans Bauer</li>
<li data-sourcepos="332:1-332:17">HurricaneDancer</li>
<li data-sourcepos="333:1-333:15">Jakob Schürz</li>
<li data-sourcepos="334:1-334:9">Jucgshu</li>
<li data-sourcepos="335:1-335:23">Julian-Samuel Gebühr</li>
<li data-sourcepos="336:1-336:12">JuniorJPDJ</li>
<li data-sourcepos="337:1-337:16">Kasper Seweryn</li>
<li data-sourcepos="338:1-338:8">Keunes</li>
<li data-sourcepos="339:1-339:15">Laser Lesbian</li>
<li data-sourcepos="340:1-340:10">Laurin W</li>
<li data-sourcepos="341:1-341:7">Marco</li>
<li data-sourcepos="342:1-342:14">Marcos Peña</li>
<li data-sourcepos="343:1-343:14">Martin Giger</li>
<li data-sourcepos="344:1-344:17">Mathieu Jourdan</li>
<li data-sourcepos="345:1-345:14">MattDHarding</li>
<li data-sourcepos="346:1-346:11">Meliurwen</li>
<li data-sourcepos="347:1-347:23">Micha Gläß-Stöcker</li>
<li data-sourcepos="348:1-348:19">MichaelBechHansen</li>
<li data-sourcepos="349:1-349:12">Nathan Mih</li>
<li data-sourcepos="350:1-350:16">Nicolas Derive</li>
<li data-sourcepos="351:1-351:15">Nolan Darilek</li>
<li data-sourcepos="352:1-352:16">Philipp Wolfer</li>
<li data-sourcepos="353:1-353:14">Porrumentzio</li>
<li data-sourcepos="354:1-354:16">Rodion Borisov</li>
<li data-sourcepos="355:1-355:11">Sam Birch</li>
<li data-sourcepos="356:1-356:11">Sky Leite</li>
<li data-sourcepos="357:1-357:11">TheSunCat</li>
<li data-sourcepos="358:1-358:8">Thomas</li>
<li data-sourcepos="359:1-359:17">Tobias Frölich</li>
<li data-sourcepos="360:1-360:15">Tony Wasserka</li>
<li data-sourcepos="361:1-361:16">Vincent Riquer</li>
<li data-sourcepos="362:1-362:16">Virgile Robles</li>
<li data-sourcepos="363:1-363:15">dddddd-mmmmmm</li>
<li data-sourcepos="364:1-364:15">gerry_the_hat</li>
<li data-sourcepos="365:1-365:8">getzze</li>
<li data-sourcepos="366:1-366:9">heyarne</li>
<li data-sourcepos="367:1-367:6">jake</li>
<li data-sourcepos="368:1-368:8">jooola</li>
<li data-sourcepos="369:1-369:8">jovuit</li>
<li data-sourcepos="370:1-370:7">nouts</li>
<li data-sourcepos="371:1-371:13">petitminion</li>
<li data-sourcepos="372:1-372:6">ppom</li>
<li data-sourcepos="373:1-373:10">pullopen</li>
<li data-sourcepos="374:1-374:10">resister</li>
<li data-sourcepos="375:1-375:9">silksow</li>
<li data-sourcepos="376:1-377:0">troll</li>
</ul>
<p data-sourcepos="378:1-378:35" dir="auto">Contributors to our Merge Requests:</p>
<ul data-sourcepos="380:1-397:8" dir="auto">
<li data-sourcepos="380:1-380:13">AMoonRabbit</li>
<li data-sourcepos="381:1-381:19">Ciarán Ainsworth</li>
<li data-sourcepos="382:1-382:14">Georg Krause</li>
<li data-sourcepos="383:1-383:12">JuniorJPDJ</li>
<li data-sourcepos="384:1-384:16">Kasper Seweryn</li>
<li data-sourcepos="385:1-385:10">Laurin W</li>
<li data-sourcepos="386:1-386:14">Marcos Peña</li>
<li data-sourcepos="387:1-387:17">Mathieu Jourdan</li>
<li data-sourcepos="388:1-388:16">Nicolas Derive</li>
<li data-sourcepos="389:1-389:16">Philipp Wolfer</li>
<li data-sourcepos="390:1-390:16">Rodion Borisov</li>
<li data-sourcepos="391:1-391:8">Thomas</li>
<li data-sourcepos="392:1-392:17">Tobias Frölich</li>
<li data-sourcepos="393:1-393:8">getzze</li>
<li data-sourcepos="394:1-394:8">jooola</li>
<li data-sourcepos="395:1-395:6">mqus</li>
<li data-sourcepos="396:1-396:13">petitminion</li>
<li data-sourcepos="397:1-397:8">poeppe</li>
</ul>2023-06-02T06:06:23ZGeorg Krausehttps://dev.funkwhale.audio/funkwhale/funkwhale/-/tags/1.3.0-rc61.3.0-rc6Georg Krausehttps://dev.funkwhale.audio/funkwhale/funkwhale/-/tags/1.3.0-rc51.3.0-rc5Georg krausehttps://dev.funkwhale.audio/funkwhale/funkwhale/-/tags/1.3.0-rc41.3.0-rc4Georg krausehttps://dev.funkwhale.audio/funkwhale/funkwhale/-/tags/1.2.101.2.10Georg Krausehttps://dev.funkwhale.audio/funkwhale/funkwhale/-/tags/1.3.0-rc31.3.0-rc3Georg Krausehttps://dev.funkwhale.audio/funkwhale/funkwhale/-/tags/1.3.0-rc21.3.0-rc2Georg Krausehttps://dev.funkwhale.audio/funkwhale/funkwhale/-/tags/1.3.0-rc11.3.0-rc1<h1 data-sourcepos="1:1-1:24" dir="auto">
<a id="user-content-130-rc1-2023-01-20" class="anchor" href="#130-rc1-2023-01-20" aria-hidden="true"></a>1.3.0-rc1 (2023-01-20)</h1>
<p data-sourcepos="3:1-4:49" dir="auto">Upgrade instructions are available at
<a href="https://docs.funkwhale.audio/admin/upgrading.html" rel="nofollow noreferrer noopener" target="_blank">https://docs.funkwhale.audio/admin/upgrading.html</a></p>
<h2 data-sourcepos="6:1-6:23" dir="auto">
<a id="user-content-update-instructions" class="anchor" href="#update-instructions" aria-hidden="true"></a>Update instructions:</h2>
<ul data-sourcepos="8:1-49:0" dir="auto">
<li data-sourcepos="8:1-30:5">
<p data-sourcepos="8:3-10:12">If you are running the docker deployment, make sure to update our compose file.
In this small example we show you how to save the old config and update it
correctly:</p>
<div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="12:3-18:5" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">export FUNKWHALE_VERSION="1.3.0"</span>
<span id="LC2" class="line" lang="plaintext">cd /srv/funkwhale</span>
<span id="LC3" class="line" lang="plaintext">docker-compose down</span>
<span id="LC4" class="line" lang="plaintext">mv docker-compose.yml docker-compose.bak</span>
<span id="LC5" class="line" lang="plaintext">curl -L -o /srv/funkwhale/docker-compose.yml "https://dev.funkwhale.audio/funkwhale/funkwhale/raw/${FUNKWHALE_VERSION}/deploy/docker-compose.yml"</span></code></pre>
<copy-code></copy-code>
</div>
<p data-sourcepos="20:3-26:112">.. note::
If you need to customize your nginx template, e.g. to work around <code>problems with Docker's resolver <https://docs.funkwhale.audio/admin/external-storages.html#no-resolver-found></code>_, you can mount your
custom nginx configuration into the container. Uncomment the commented volumes in the <code>nginx</code> section of your <code>docker-compose.yml</code>.
Additionally you need to update the paths in <code>nginx/funkwhale.template</code>.
Replace all occurrences of <code>/funkwhale</code> by <code>/usr/share/nginx/html</code>.
This loads the templates from your <code>nginx</code> folder and overrides the template files in the Docker container.</p>
<div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="28:3-30:5" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">docker-compose up -d</span></code></pre>
<copy-code></copy-code>
</div>
</li>
<li data-sourcepos="31:1-44:99">
<p data-sourcepos="31:3-31:173">The Docker instructions now use the updated Docker compose plugin. If you previously used the <code>docker-compose</code> standalone installation, do the following while upgrading:</p>
<ol data-sourcepos="33:3-35:0">
<li data-sourcepos="33:3-33:120">Download the <code>Docker compose plugin <https://docs.docker.com/compose/install/linux/#install-using-the-repository></code>_</li>
<li data-sourcepos="34:3-35:0">Stop your containers using the <strong>docker-compose</strong> syntax.</li>
</ol>
<p data-sourcepos="36:3-37:29">.. code-block:: sh
sudo docker-compose down</p>
<ol start="3" data-sourcepos="39:3-40:0">
<li data-sourcepos="39:3-40:0">Bring the containers back up using the <strong>docker compose</strong> syntax.</li>
</ol>
<p data-sourcepos="41:3-42:30">.. code-block:: sh
sudo docker compose up -d</p>
<p data-sourcepos="44:3-44:99">After this you can continue to use the <strong>docker compose</strong> syntax for all Docker management tasks.</p>
</li>
<li data-sourcepos="45:1-45:171">
<p data-sourcepos="45:3-45:171">Upgrade Postgres to version 15. <a href="https://docs.funkwhale.audio/administrator_documentation/upgrade_docs/docker.html#upgrade-the-postgres-container" rel="nofollow noreferrer noopener" target="_blank">Make sure to migrate!</a></p>
</li>
<li data-sourcepos="46:1-49:0">
<p data-sourcepos="46:3-47:76">With this update Funkwhale starts using poetry to maintain its dependencies. We therefore recommend
removing the old virtualenv by running <code>rm -rf /srv/funkwhale/virtualenv</code>.</p>
</li>
</ul>
<h2 data-sourcepos="50:1-50:12" dir="auto">
<a id="user-content-features" class="anchor" href="#features" aria-hidden="true"></a>Features:</h2>
<ul data-sourcepos="52:1-58:0" dir="auto">
<li data-sourcepos="52:1-52:61">Add a management command to create a new library for a user</li>
<li data-sourcepos="53:1-53:36">Add Gitpod configuration and guide</li>
<li data-sourcepos="54:1-54:33">Add Sentry SDK to collect <a href="/funkwhale/funkwhale/-/issues/1479" data-reference-type="issue" data-original="#1479" data-link="false" data-link-reference="false" data-project="17" data-issue="1978" data-project-path="funkwhale/funkwhale" data-iid="1479" data-issue-type="issue" data-container="body" data-placement="top" title="Implement Sentry" class="gfm gfm-issue">#1479</a>
</li>
<li data-sourcepos="55:1-55:40">Prepare API for the upcoming version 2</li>
<li data-sourcepos="56:1-58:0">Rewrite player to be based on Web Audio API</li>
</ul>
<h2 data-sourcepos="59:1-59:16" dir="auto">
<a id="user-content-enhancements" class="anchor" href="#enhancements" aria-hidden="true"></a>Enhancements:</h2>
<ul data-sourcepos="61:1-127:0" dir="auto">
<li data-sourcepos="61:1-61:50">Add a celery task to scan remote library (<a href="/funkwhale/funkwhale/-/issues/1712" data-reference-type="issue" data-original="#1712" data-link="false" data-link-reference="false" data-project="17" data-issue="2514" data-project-path="funkwhale/funkwhale" data-iid="1712" data-issue-type="issue" data-container="body" data-placement="top" title="create an update Library info celery task" class="gfm gfm-issue">#1712</a>)</li>
<li data-sourcepos="62:1-62:40">Add coverage report for Frontend Tests</li>
<li data-sourcepos="63:1-63:58">Add hint which serializer is used for OembedView (<a href="/funkwhale/funkwhale/-/issues/1901" data-reference-type="issue" data-original="#1901" data-link="false" data-link-reference="false" data-project="17" data-issue="2913" data-project-path="funkwhale/funkwhale" data-iid="1901" data-issue-type="issue" data-container="body" data-placement="top" title="OembedView: unable to guess serializer. This is graceful fallback handling for APIViews. Consider using GenericAPIView as view base class, if view is under your control. Ignoring view for now." class="gfm gfm-issue">#1901</a>)</li>
<li data-sourcepos="64:1-64:30">Add music visualizer (<a href="/funkwhale/funkwhale/-/issues/1135" data-reference-type="issue" data-original="#1135" data-link="false" data-link-reference="false" data-project="17" data-issue="1535" data-project-path="funkwhale/funkwhale" data-iid="1135" data-issue-type="issue" data-container="body" data-placement="top" title="Music Visualizer Support" class="gfm gfm-issue">#1135</a>)</li>
<li data-sourcepos="65:1-65:44">Add playlists radio to search page (<a href="/funkwhale/funkwhale/-/issues/1968" data-reference-type="issue" data-original="#1968" data-link="false" data-link-reference="false" data-project="17" data-issue="3007" data-project-path="funkwhale/funkwhale" data-iid="1968" data-issue-type="issue" data-container="body" data-placement="top" title="add radio for playlist search results" class="gfm gfm-issue">#1968</a>)</li>
<li data-sourcepos="66:1-66:54">Add proper serialization for TextPreviewView (<a href="/funkwhale/funkwhale/-/issues/1903" data-reference-type="issue" data-original="#1903" data-link="false" data-link-reference="false" data-project="17" data-issue="2915" data-project-path="funkwhale/funkwhale" data-iid="1903" data-issue-type="issue" data-container="body" data-placement="top" title="TextPreviewView: unable to guess serializer. This is graceful fallback handling for APIViews. Consider using GenericAPIView as view base class, if view is under your control. Ignoring view for now." class="gfm gfm-issue">#1903</a>)</li>
<li data-sourcepos="67:1-67:41">Add Serializer for SpaManifest endpoint</li>
<li data-sourcepos="68:1-68:29">Add support for python 3.11</li>
<li data-sourcepos="69:1-69:55">Added proper serializers for the rate-limit endpoint.</li>
<li data-sourcepos="70:1-70:30">Added type hints to the API.</li>
<li data-sourcepos="71:1-71:104">All administrator documentation has been rewritten to improve clarity and update outdated information.</li>
<li data-sourcepos="72:1-72:61">Allow arbitrary length names for artists, albums and tracks</li>
<li data-sourcepos="73:1-73:44">Allow installing the funkwhale_api package</li>
<li data-sourcepos="74:1-74:75">Allow using default browser dark mode and update UI dynamically on change</li>
<li data-sourcepos="75:1-75:49">Apply migrations on API container start (<a href="/funkwhale/funkwhale/-/merge_requests/1879" data-reference-type="merge_request" data-original="!1879" data-link="false" data-link-reference="false" data-project="17" data-merge-request="2415" data-project-path="funkwhale/funkwhale" data-iid="1879" data-container="body" data-placement="top" title="Next little API Docker rework" class="gfm gfm-merge_request">!1879</a>)</li>
<li data-sourcepos="76:1-76:49">Automatically fetch next page of tracks (<a href="/funkwhale/funkwhale/-/issues/1526" data-reference-type="issue" data-original="#1526" data-link="false" data-link-reference="false" data-project="17" data-issue="2201" data-project-path="funkwhale/funkwhale" data-iid="1526" data-issue-type="issue" data-container="body" data-placement="top" title="Playlist in Funkwhale Widget is limited to 50 tracks" class="gfm gfm-issue">#1526</a>)</li>
<li data-sourcepos="77:1-77:54">Build frontend natively for cross-arch docker images</li>
<li data-sourcepos="78:1-79:31">Change unmaintained PyMemoize library to django-cache-memoize
to enable Python 3.10 support</li>
<li data-sourcepos="80:1-80:38">Cleaned up frontend docker container</li>
<li data-sourcepos="81:1-81:43">Cleanup Gitlab CI and Dockerfiles (<a href="/funkwhale/funkwhale/-/merge_requests/1796" data-reference-type="merge_request" data-original="!1796" data-link="false" data-link-reference="false" data-project="17" data-merge-request="2288" data-project-path="funkwhale/funkwhale" data-iid="1796" data-container="body" data-placement="top" title="Cleanup Gitlab CI and Dockerfiles" class="gfm gfm-merge_request">!1796</a>)</li>
<li data-sourcepos="82:1-82:59">Create the funkwhale-manage entrypoint in the api package</li>
<li data-sourcepos="83:1-83:73">Created migration guide for the deprecated all-in-one docker container.</li>
<li data-sourcepos="84:1-84:42">Don't buffer python stdout/err in docker</li>
<li data-sourcepos="85:1-85:42">Don't compile python byte code in docker</li>
<li data-sourcepos="86:1-86:44">Don't use poetry in production deployments</li>
<li data-sourcepos="87:1-87:45">Drop direct dependency on pyopenssl (<a href="/funkwhale/funkwhale/-/issues/1975" data-reference-type="issue" data-original="#1975" data-link="false" data-link-reference="false" data-project="17" data-issue="3017" data-project-path="funkwhale/funkwhale" data-iid="1975" data-issue-type="issue" data-container="body" data-placement="top" title="AttributeError: module 'lib' has no attribute 'SSL_CTX_set_ecdh_auto' on docker develop build" class="gfm gfm-issue">#1975</a>)</li>
<li data-sourcepos="88:1-88:84">Exclude /api/v1/oauth/authorize from the specs since its not supported yet (<a href="/funkwhale/funkwhale/-/issues/1899" data-reference-type="issue" data-original="#1899" data-link="false" data-link-reference="false" data-project="17" data-issue="2909" data-project-path="funkwhale/funkwhale" data-iid="1899" data-issue-type="issue" data-container="body" data-placement="top" title="AuthorizeView: unable to guess serializer. This is graceful fallback handling for APIViews. Consider using GenericAPIView as view base class, if view is under your control. Ignoring view for now." class="gfm gfm-issue">#1899</a>)</li>
<li data-sourcepos="89:1-89:53">Fix openapi specs for user endpoints (<a href="/funkwhale/funkwhale/-/issues/1892" data-reference-type="issue" data-original="#1892" data-link="false" data-link-reference="false" data-project="17" data-issue="2902" data-project-path="funkwhale/funkwhale" data-iid="1892" data-issue-type="issue" data-container="body" data-placement="top" title="using @extend_schema on viewset class PasswordChangeView with parameters operation_id or operation will most likely result in a broken schema." class="gfm gfm-issue">#1892</a>, <a href="/funkwhale/funkwhale/-/issues/1894" data-reference-type="issue" data-original="#1894" data-link="false" data-link-reference="false" data-project="17" data-issue="2904" data-project-path="funkwhale/funkwhale" data-iid="1894" data-issue-type="issue" data-container="body" data-placement="top" title="using @extend_schema on viewset class PasswordResetView with parameters operation_id or operation will most likely result in a broken schema." class="gfm gfm-issue">#1894</a>)</li>
<li data-sourcepos="90:1-90:51">Fix Serializer for inline channel artists (<a href="/funkwhale/funkwhale/-/issues/1833" data-reference-type="issue" data-original="#1833" data-link="false" data-link-reference="false" data-project="17" data-issue="2773" data-project-path="funkwhale/funkwhale" data-iid="1833" data-issue-type="issue" data-container="body" data-placement="top" title="Channel tracks count is invalid" class="gfm gfm-issue">#1833</a>)</li>
<li data-sourcepos="91:1-91:37">Fix specs for ListenViewSet (<a href="/funkwhale/funkwhale/-/issues/1898" data-reference-type="issue" data-original="#1898" data-link="false" data-link-reference="false" data-project="17" data-issue="2908" data-project-path="funkwhale/funkwhale" data-iid="1898" data-issue-type="issue" data-container="body" data-placement="top" title="using @extend_schema on viewset class ListenViewSet with parameters operation_id or operation will most likely result in a broken schema." class="gfm gfm-issue">#1898</a>)</li>
<li data-sourcepos="92:1-92:81">Handle PWA correctly and provide better cache strategy for album covers (<a href="/funkwhale/funkwhale/-/issues/1721" data-reference-type="issue" data-original="#1721" data-link="false" data-link-reference="false" data-project="17" data-issue="2528" data-project-path="funkwhale/funkwhale" data-iid="1721" data-issue-type="issue" data-container="body" data-placement="top" title="Handle PWA / service worker correctly" class="gfm gfm-issue">#1721</a>)</li>
<li data-sourcepos="93:1-93:24">Improve docker caching</li>
<li data-sourcepos="94:1-94:55">Improve specification of LibraryFollowViewSet (<a href="/funkwhale/funkwhale/-/issues/1896" data-reference-type="issue" data-original="#1896" data-link="false" data-link-reference="false" data-project="17" data-issue="2906" data-project-path="funkwhale/funkwhale" data-iid="1896" data-issue-type="issue" data-container="body" data-placement="top" title="using @extend_schema on viewset class LibraryFollowViewSet with parameters operation_id or operation will most likely result in a broken schema." class="gfm gfm-issue">#1896</a>)</li>
<li data-sourcepos="95:1-95:44">Install API python package in docker image</li>
<li data-sourcepos="96:1-96:53">Make CI always run all tests on protected branches.</li>
<li data-sourcepos="97:1-97:49">Make mutations endpoint appear in openapi specs</li>
<li data-sourcepos="98:1-98:40">Make Python 3.10 tests in CI mandatory</li>
<li data-sourcepos="99:1-99:58">Make sure ChannelViewSet always has a serializer (<a href="/funkwhale/funkwhale/-/issues/1895" data-reference-type="issue" data-original="#1895" data-link="false" data-link-reference="false" data-project="17" data-issue="2905" data-project-path="funkwhale/funkwhale" data-iid="1895" data-issue-type="issue" data-container="body" data-placement="top" title="ChannelViewSet: exception raised while getting serializer. Hint: Is get_serializer_class() returning None or is get_queryset() not working without a request? Ignoring the view for now. (Exception: 'NoneType' object is not callable)" class="gfm gfm-issue">#1895</a>)</li>
<li data-sourcepos="100:1-100:56">Migrate to new queue system from old localStorage keys</li>
<li data-sourcepos="101:1-101:18">Migrate to Vue 3</li>
<li data-sourcepos="102:1-103:29">Migrate to vue-i18n (<a href="/funkwhale/funkwhale/-/issues/1831" data-reference-type="issue" data-original="#1831" data-link="false" data-link-reference="false" data-project="17" data-issue="2770" data-project-path="funkwhale/funkwhale" data-iid="1831" data-issue-type="issue" data-container="body" data-placement="top" title="Migrate to vue-i18n" class="gfm gfm-issue">#1831</a>)
Fix locale changing (<a href="/funkwhale/funkwhale/-/issues/1862" data-reference-type="issue" data-original="#1862" data-link="false" data-link-reference="false" data-project="17" data-issue="2836" data-project-path="funkwhale/funkwhale" data-iid="1862" data-issue-type="issue" data-container="body" data-placement="top" title="Can't change language nor extract translation files" class="gfm gfm-issue">#1862</a>)</li>
<li data-sourcepos="104:1-104:28">Migrated to sphinx-design.</li>
<li data-sourcepos="105:1-105:85">New task checking if remote instance is reachable to avoid playback latence (<a href="/funkwhale/funkwhale/-/issues/1711" data-reference-type="issue" data-original="#1711" data-link="false" data-link-reference="false" data-project="17" data-issue="2513" data-project-path="funkwhale/funkwhale" data-iid="1711" data-issue-type="issue" data-container="body" data-placement="top" title="ping instance before trying to load tracks ?" class="gfm gfm-issue">#1711</a>)</li>
<li data-sourcepos="106:1-106:123">OAuth Application client secrets are now hashed before storing them to the DB. Those are only displayed once from now on!</li>
<li data-sourcepos="107:1-107:65">Parameterize the default S3 ACL when uploading objects. (<a href="/funkwhale/funkwhale/-/issues/1319" data-reference-type="issue" data-original="#1319" data-link="false" data-link-reference="false" data-project="17" data-issue="1772" data-project-path="funkwhale/funkwhale" data-iid="1319" data-issue-type="issue" data-container="body" data-placement="top" title="S3 storage via Scaleway is forced to set private" class="gfm gfm-issue">#1319</a>)</li>
<li data-sourcepos="108:1-108:80">Pin Alpine package versions in API Dockerfile (fixes part of CI build issues).</li>
<li data-sourcepos="109:1-109:46">Prefer using the funkwhale-manage entrypoint</li>
<li data-sourcepos="110:1-110:39">Prevent running two pipelines for MRs</li>
<li data-sourcepos="111:1-111:87">Random and less listened radio filter out un-owned content on library section (<a href="/funkwhale/funkwhale/-/issues/2007" data-reference-type="issue" data-original="#2007" data-link="false" data-link-reference="false" data-project="17" data-issue="3073" data-project-path="funkwhale/funkwhale" data-iid="2007" data-issue-type="issue" data-container="body" data-placement="top" title='"Random" and "Less listened" radios in My Library section do not filter out elements from external libraries' class="gfm gfm-issue">#2007</a>)</li>
<li data-sourcepos="112:1-112:55">Refactor node info endpoint to use proper serializers</li>
<li data-sourcepos="113:1-113:50">Refactor SettingsView to use a proper serializer</li>
<li data-sourcepos="114:1-114:61">Remove unnecessary or wrong <code>is</code> keyword usage from backend</li>
<li data-sourcepos="115:1-115:74">Rename OpenAPI schema's operation ids for nicer API client method names.</li>
<li data-sourcepos="116:1-116:90">Replace django-channels package with web socket implementation from @vueuse/core (<a href="/funkwhale/funkwhale/-/issues/1715" data-reference-type="issue" data-original="#1715" data-link="false" data-link-reference="false" data-project="17" data-issue="2519" data-project-path="funkwhale/funkwhale" data-iid="1715" data-issue-type="issue" data-container="body" data-placement="top" title="Replace django-channels websocketbridge implementation" class="gfm gfm-issue">#1715</a>)</li>
<li data-sourcepos="117:1-117:39">Rewrite embedded player to petite-vue</li>
<li data-sourcepos="118:1-118:58">Split DATABASE_URL into multiple configuration variables</li>
<li data-sourcepos="119:1-119:52">The ListenBrainz plugin submits the track duration</li>
<li data-sourcepos="120:1-120:53">Update Django OAuth Toolkit to version 2, ref <a href="/funkwhale/funkwhale/-/issues/1944" data-reference-type="issue" data-original="#1944" data-link="false" data-link-reference="false" data-project="17" data-issue="2972" data-project-path="funkwhale/funkwhale" data-iid="1944" data-issue-type="issue" data-container="body" data-placement="top" title="Django OAuth Toolkit v2" class="gfm gfm-issue">#1944</a>
</li>
<li data-sourcepos="121:1-121:46">Update migration after django update (<a href="/funkwhale/funkwhale/-/issues/1815" data-reference-type="issue" data-original="#1815" data-link="false" data-link-reference="false" data-project="17" data-issue="2732" data-project-path="funkwhale/funkwhale" data-iid="1815" data-issue-type="issue" data-container="body" data-placement="top" title="update migration after django update" class="gfm gfm-issue">#1815</a>)</li>
<li data-sourcepos="122:1-122:48">Update upload status when import fails (<a href="/funkwhale/funkwhale/-/issues/1999" data-reference-type="issue" data-original="#1999" data-link="false" data-link-reference="false" data-project="17" data-issue="3054" data-project-path="funkwhale/funkwhale" data-iid="1999" data-issue-type="issue" data-container="body" data-placement="top" title='upload silent errors with status "uploaded"' class="gfm gfm-issue">#1999</a>)</li>
<li data-sourcepos="123:1-123:69">Updated the installation guides to make installation steps clearer.</li>
<li data-sourcepos="124:1-124:42">Upgrade docker base image to alpine 3.17</li>
<li data-sourcepos="125:1-127:0">Use proper serializer for Search endpoint (<a href="/funkwhale/funkwhale/-/issues/1902" data-reference-type="issue" data-original="#1902" data-link="false" data-link-reference="false" data-project="17" data-issue="2914" data-project-path="funkwhale/funkwhale" data-iid="1902" data-issue-type="issue" data-container="body" data-placement="top" title="Search: unable to guess serializer. This is graceful fallback handling for APIViews. Consider using GenericAPIView as view base class, if view is under your control. Ignoring view for now." class="gfm gfm-issue">#1902</a>)</li>
</ul>
<h2 data-sourcepos="128:1-128:15" dir="auto">
<a id="user-content-refactoring" class="anchor" href="#refactoring" aria-hidden="true"></a>Refactoring:</h2>
<ul data-sourcepos="130:1-134:0" dir="auto">
<li data-sourcepos="130:1-131:71">Instead of requesting the right spa content from the API using a middleware we now serve the
Frontend directly with nginx and only proxy-forward for API endpoints</li>
<li data-sourcepos="132:1-134:0">Replace django-rest-auth with dj-rest-auth (<a href="/funkwhale/funkwhale/-/issues/1877" data-reference-type="issue" data-original="#1877" data-link="false" data-link-reference="false" data-project="17" data-issue="2857" data-project-path="funkwhale/funkwhale" data-iid="1877" data-issue-type="issue" data-container="body" data-placement="top" title="Replace django-rest-auth with dj-rest-auth" class="gfm gfm-issue">#1877</a>)</li>
</ul>
<h2 data-sourcepos="135:1-135:12" dir="auto">
<a id="user-content-bugfixes" class="anchor" href="#bugfixes" aria-hidden="true"></a>Bugfixes:</h2>
<ul data-sourcepos="137:1-178:0" dir="auto">
<li data-sourcepos="137:1-137:41">Allow enabling systemd funkwhale.target</li>
<li data-sourcepos="138:1-138:57">Allow playback of media from external frontend (<a href="/funkwhale/funkwhale/-/issues/1937" data-reference-type="issue" data-original="#1937" data-link="false" data-link-reference="false" data-project="17" data-issue="2965" data-project-path="funkwhale/funkwhale" data-iid="1937" data-issue-type="issue" data-container="body" data-placement="top" title="Default CORS settings don't allow playback on external frontends after Web Audio API rewrite" class="gfm gfm-issue">#1937</a>).</li>
<li data-sourcepos="139:1-139:63">Channel overview was displaying foreign tracks (<a href="/funkwhale/funkwhale/-/issues/1773" data-reference-type="issue" data-original="#1773" data-link="false" data-link-reference="false" data-project="17" data-issue="2623" data-project-path="funkwhale/funkwhale" data-iid="1773" data-issue-type="issue" data-container="body" data-placement="top" title="Channels are displaying tracks that are not on the channel" class="gfm gfm-issue">#1773</a>) (1773)</li>
<li data-sourcepos="140:1-140:46">Fix adding same track multiple times (<a href="/funkwhale/funkwhale/-/issues/1933" data-reference-type="issue" data-original="#1933" data-link="false" data-link-reference="false" data-project="17" data-issue="2961" data-project-path="funkwhale/funkwhale" data-iid="1933" data-issue-type="issue" data-container="body" data-placement="top" title="develop: Adding the same track multiple times to the Q effects in missing positions" class="gfm gfm-issue">#1933</a>)</li>
<li data-sourcepos="141:1-141:45">Fix changing visualizer CORS error (<a href="/funkwhale/funkwhale/-/issues/1934" data-reference-type="issue" data-original="#1934" data-link="false" data-link-reference="false" data-project="17" data-issue="2962" data-project-path="funkwhale/funkwhale" data-iid="1934" data-issue-type="issue" data-container="body" data-placement="top" title="Content security issue when changing visualizer preset" class="gfm gfm-issue">#1934</a>).</li>
<li data-sourcepos="142:1-142:82">Fix content form autofocus despite <code>autofocus</code> prop being set to <code>false</code> (<a href="/funkwhale/funkwhale/-/issues/1924" data-reference-type="issue" data-original="#1924" data-link="false" data-link-reference="false" data-project="17" data-issue="2944" data-project-path="funkwhale/funkwhale" data-iid="1924" data-issue-type="issue" data-container="body" data-placement="top" title="develop: Reports and user requests are scrolling to the bottom and show all elements (not only unresolved)" class="gfm gfm-issue">#1924</a>)</li>
<li data-sourcepos="143:1-143:23">Fix CSP header issues</li>
<li data-sourcepos="144:1-144:57">Fix CSP issue caused by django-channels package (<a href="/funkwhale/funkwhale/-/issues/1752" data-reference-type="issue" data-original="#1752" data-link="false" data-link-reference="false" data-project="17" data-issue="2578" data-project-path="funkwhale/funkwhale" data-iid="1752" data-issue-type="issue" data-container="body" data-placement="top" title="CSP loading issue of JS resources in current devel docker container setup" class="gfm gfm-issue">#1752</a>)</li>
<li data-sourcepos="145:1-145:77">Fix docker API image building with removing autobahn workaround version pin</li>
<li data-sourcepos="146:1-146:28">Fix docker builds on armv7</li>
<li data-sourcepos="147:1-147:29">Fix docker nginx entrypoint</li>
<li data-sourcepos="148:1-148:37">Fix editing playlist tracks (<a href="/funkwhale/funkwhale/-/issues/1362" data-reference-type="issue" data-original="#1362" data-link="false" data-link-reference="false" data-project="17" data-issue="1822" data-project-path="funkwhale/funkwhale" data-iid="1362" data-issue-type="issue" data-container="body" data-placement="top" title="Unable to Add Queue to Playlist" class="gfm gfm-issue">#1362</a>)</li>
<li data-sourcepos="149:1-149:56">Fix embedded player not working on social posts (1946)</li>
<li data-sourcepos="150:1-150:30">Fix favorite button in queue</li>
<li data-sourcepos="151:1-151:59">Fix fetching pages of albums in album detail view (<a href="/funkwhale/funkwhale/-/issues/1927" data-reference-type="issue" data-original="#1927" data-link="false" data-link-reference="false" data-project="17" data-issue="2952" data-project-path="funkwhale/funkwhale" data-iid="1927" data-issue-type="issue" data-container="body" data-placement="top" title="Pagination on album details page not working" class="gfm gfm-issue">#1927</a>)</li>
<li data-sourcepos="152:1-152:68">Fix global keyboard shortcuts firing when input is focused (<a href="/funkwhale/funkwhale/-/issues/1876" data-reference-type="issue" data-original="#1876" data-link="false" data-link-reference="false" data-project="17" data-issue="2856" data-project-path="funkwhale/funkwhale" data-iid="1876" data-issue-type="issue" data-container="body" data-placement="top" title="Keyboard shortcuts not firing as expected" class="gfm gfm-issue">#1876</a>)</li>
<li data-sourcepos="153:1-153:25">Fix OAuth login (<a href="/funkwhale/funkwhale/-/issues/1890" data-reference-type="issue" data-original="#1890" data-link="false" data-link-reference="false" data-project="17" data-issue="2900" data-project-path="funkwhale/funkwhale" data-iid="1890" data-issue-type="issue" data-container="body" data-placement="top" title="OAuth login broken" class="gfm gfm-issue">#1890</a>)</li>
<li data-sourcepos="154:1-154:59">Fix play button in albums with multi-page volumes (<a href="/funkwhale/funkwhale/-/issues/1928" data-reference-type="issue" data-original="#1928" data-link="false" data-link-reference="false" data-project="17" data-issue="2953" data-project-path="funkwhale/funkwhale" data-iid="1928" data-issue-type="issue" data-container="body" data-placement="top" title="Play button on multi-page volumes doesn't return all results" class="gfm gfm-issue">#1928</a>)</li>
<li data-sourcepos="155:1-155:44">Fix player closing when queue ends (<a href="/funkwhale/funkwhale/-/issues/1931" data-reference-type="issue" data-original="#1931" data-link="false" data-link-reference="false" data-project="17" data-issue="2959" data-project-path="funkwhale/funkwhale" data-iid="1931" data-issue-type="issue" data-container="body" data-placement="top" title="Queue closes when playback finishes" class="gfm gfm-issue">#1931</a>)</li>
<li data-sourcepos="156:1-156:37">Fix purging of dangling files <a href="/funkwhale/funkwhale/-/issues/1929" data-reference-type="issue" data-original="#1929" data-link="false" data-link-reference="false" data-project="17" data-issue="2955" data-project-path="funkwhale/funkwhale" data-iid="1929" data-issue-type="issue" data-container="body" data-placement="top" title="Can't purge failed files" class="gfm gfm-issue">#1929</a>
</li>
<li data-sourcepos="157:1-157:27">Fix remote search (<a href="/funkwhale/funkwhale/-/issues/1857" data-reference-type="issue" data-original="#1857" data-link="false" data-link-reference="false" data-project="17" data-issue="2831" data-project-path="funkwhale/funkwhale" data-iid="1857" data-issue-type="issue" data-container="body" data-placement="top" title="Search submit button doesn't work on Vue 3" class="gfm gfm-issue">#1857</a>)</li>
<li data-sourcepos="158:1-158:46">Fix search by text in affected views (<a href="/funkwhale/funkwhale/-/issues/1858" data-reference-type="issue" data-original="#1858" data-link="false" data-link-reference="false" data-project="17" data-issue="2832" data-project-path="funkwhale/funkwhale" data-iid="1858" data-issue-type="issue" data-container="body" data-placement="top" title="Initial search on pages is ignored" class="gfm gfm-issue">#1858</a>)</li>
<li data-sourcepos="159:1-159:38">Fix timeout on spa manifest requests</li>
<li data-sourcepos="160:1-160:80">Fix track table showing all tracks and double pagination in some cases (<a href="/funkwhale/funkwhale/-/issues/1923" data-reference-type="issue" data-original="#1923" data-link="false" data-link-reference="false" data-project="17" data-issue="2941" data-project-path="funkwhale/funkwhale" data-iid="1923" data-issue-type="issue" data-container="body" data-placement="top" title="favorites shows more than favorites" class="gfm gfm-issue">#1923</a>)</li>
<li data-sourcepos="161:1-161:49">Fix user requests and reports filtering (<a href="/funkwhale/funkwhale/-/issues/1924" data-reference-type="issue" data-original="#1924" data-link="false" data-link-reference="false" data-project="17" data-issue="2944" data-project-path="funkwhale/funkwhale" data-iid="1924" data-issue-type="issue" data-container="body" data-placement="top" title="develop: Reports and user requests are scrolling to the bottom and show all elements (not only unresolved)" class="gfm gfm-issue">#1924</a>)</li>
<li data-sourcepos="162:1-162:59">Fix validity issues in openapi/swagger spec files (<a href="/funkwhale/funkwhale/-/issues/1171" data-reference-type="issue" data-original="#1171" data-link="false" data-link-reference="false" data-project="17" data-issue="1591" data-project-path="funkwhale/funkwhale" data-iid="1171" data-issue-type="issue" data-container="body" data-placement="top" title="OpenAPI/Swagger file has invalid JSON pointer syntax" class="gfm gfm-issue">#1171</a>)</li>
<li data-sourcepos="163:1-163:86">Fixed an issue which caused links in Markdown forms to not render correctly. (<a href="/funkwhale/funkwhale/-/issues/2023" data-reference-type="issue" data-original="#2023" data-link="false" data-link-reference="false" data-project="17" data-issue="3107" data-project-path="funkwhale/funkwhale" data-iid="2023" data-issue-type="issue" data-container="body" data-placement="top" title="Links in signup form don't work" class="gfm gfm-issue">#2023</a>)</li>
<li data-sourcepos="164:1-164:29">Fixed login redirect (1736)</li>
<li data-sourcepos="165:1-165:68">Fixed remote subscription form in Podcast and search views (<a href="/funkwhale/funkwhale/-/issues/1708" data-reference-type="issue" data-original="#1708" data-link="false" data-link-reference="false" data-project="17" data-issue="2509" data-project-path="funkwhale/funkwhale" data-iid="1708" data-issue-type="issue" data-container="body" data-placement="top" title="Can't subscribe to podcasts" class="gfm gfm-issue">#1708</a>)</li>
<li data-sourcepos="166:1-166:45">Fixed upload form VUE errors (<a href="/funkwhale/funkwhale/-/issues/1738" data-reference-type="issue" data-original="#1738" data-link="false" data-link-reference="false" data-project="17" data-issue="2551" data-project-path="funkwhale/funkwhale" data-iid="1738" data-issue-type="issue" data-container="body" data-placement="top" title="Upload form Vue errors" class="gfm gfm-issue">#1738</a>) (1738)</li>
<li data-sourcepos="167:1-167:35">Fixes channel page (<a href="/funkwhale/funkwhale/-/issues/1729" data-reference-type="issue" data-original="#1729" data-link="false" data-link-reference="false" data-project="17" data-issue="2540" data-project-path="funkwhale/funkwhale" data-iid="1729" data-issue-type="issue" data-container="body" data-placement="top" title="Create channel album not working in fresh install" class="gfm gfm-issue">#1729</a>) (1729)</li>
<li data-sourcepos="168:1-168:57">Fixes development environment set-up with docker (1726)</li>
<li data-sourcepos="169:1-169:35">Fixes embed player (<a href="/funkwhale/funkwhale/-/issues/1783" data-reference-type="issue" data-original="#1783" data-link="false" data-link-reference="false" data-project="17" data-issue="2644" data-project-path="funkwhale/funkwhale" data-iid="1783" data-issue-type="issue" data-container="body" data-placement="top" title="embed widget not working anymore in develop" class="gfm gfm-issue">#1783</a>) (1783)</li>
<li data-sourcepos="170:1-170:30">Fixes service worker (<a href="/funkwhale/funkwhale/-/issues/1634" data-reference-type="issue" data-original="#1634" data-link="false" data-link-reference="false" data-project="17" data-issue="2396" data-project-path="funkwhale/funkwhale" data-iid="1634" data-issue-type="issue" data-container="body" data-placement="top" title="Fix service-worker" class="gfm gfm-issue">#1634</a>)</li>
<li data-sourcepos="171:1-171:63">Fixes track listenings not being sent when tab is not focused</li>
<li data-sourcepos="172:1-172:60">Hide create custom radio to un-authenticated users (<a href="/funkwhale/funkwhale/-/issues/1720" data-reference-type="issue" data-original="#1720" data-link="false" data-link-reference="false" data-project="17" data-issue="2527" data-project-path="funkwhale/funkwhale" data-iid="1720" data-issue-type="issue" data-container="body" data-placement="top" title="close /radios/build to un-authenticated users" class="gfm gfm-issue">#1720</a>)</li>
<li data-sourcepos="173:1-173:56">Remove trailing slash from reverse proxy configuration</li>
<li data-sourcepos="174:1-174:40">Remove unused Footer component (<a href="/funkwhale/funkwhale/-/issues/1660" data-reference-type="issue" data-original="#1660" data-link="false" data-link-reference="false" data-project="17" data-issue="2429" data-project-path="funkwhale/funkwhale" data-iid="1660" data-issue-type="issue" data-container="body" data-placement="top" title="Check if Footer Component is still used and remove" class="gfm gfm-issue">#1660</a>)</li>
<li data-sourcepos="175:1-175:64">Remove usage of deprecated Model and Serializer fields (<a href="/funkwhale/funkwhale/-/issues/1663" data-reference-type="issue" data-original="#1663" data-link="false" data-link-reference="false" data-project="17" data-issue="2432" data-project-path="funkwhale/funkwhale" data-iid="1663" data-issue-type="issue" data-container="body" data-placement="top" title="Warnings after upgrade to 1.2.0" class="gfm gfm-issue">#1663</a>)</li>
<li data-sourcepos="176:1-178:0">Skip refreshing local actors in celery federation.refresh_actor_data task - fixes disappearing avatars (<a href="/funkwhale/funkwhale/-/merge_requests/1873" data-reference-type="merge_request" data-original="!1873" data-link="false" data-link-reference="false" data-project="17" data-merge-request="2403" data-project-path="funkwhale/funkwhale" data-iid="1873" data-container="body" data-placement="top" title="fix(federation/tasks/refresh_actor_data): skip refreshing local actors" class="gfm gfm-merge_request">!1873</a>)</li>
</ul>
<h2 data-sourcepos="179:1-179:17" dir="auto">
<a id="user-content-documentation" class="anchor" href="#documentation" aria-hidden="true"></a>Documentation:</h2>
<ul data-sourcepos="181:1-197:0" dir="auto">
<li data-sourcepos="181:1-181:64">Add ability to translate documentation into multiple languages</li>
<li data-sourcepos="182:1-182:50">Add restore instructions to backup docs (<a href="/funkwhale/funkwhale/-/issues/1627" data-reference-type="issue" data-original="#1627" data-link="false" data-link-reference="false" data-project="17" data-issue="2385" data-project-path="funkwhale/funkwhale" data-iid="1627" data-issue-type="issue" data-container="body" data-placement="top" title="Add restore documention in backup section" class="gfm gfm-issue">#1627</a>).</li>
<li data-sourcepos="183:1-183:59">Added virtualenv upgrade instructions for Debian (<a href="/funkwhale/funkwhale/-/issues/1562" data-reference-type="issue" data-original="#1562" data-link="false" data-link-reference="false" data-project="17" data-issue="2269" data-project-path="funkwhale/funkwhale" data-iid="1562" data-issue-type="issue" data-container="body" data-placement="top" title="Provide docs to help with migration Debian 10 -> 11" class="gfm gfm-issue">#1562</a>).</li>
<li data-sourcepos="184:1-184:26">Cleaned up documentation</li>
<li data-sourcepos="185:1-185:53">Document the new login flow of the CLI-tool (<a href="/funkwhale/funkwhale/-/issues/1800" data-reference-type="issue" data-original="#1800" data-link="false" data-link-reference="false" data-project="17" data-issue="2689" data-project-path="funkwhale/funkwhale" data-iid="1800" data-issue-type="issue" data-container="body" data-placement="top" title="Document changed login-flow for the cli" class="gfm gfm-issue">#1800</a>)</li>
<li data-sourcepos="186:1-186:38">Documented LOGLEVEL command (<a href="/funkwhale/funkwhale/-/issues/1541" data-reference-type="issue" data-original="#1541" data-link="false" data-link-reference="false" data-project="17" data-issue="2222" data-project-path="funkwhale/funkwhale" data-iid="1541" data-issue-type="issue" data-container="body" data-placement="top" title='Follow-up from "Document log level"' class="gfm gfm-issue">#1541</a>).</li>
<li data-sourcepos="187:1-187:61">Documented the <code>NGINX_MAX_BODY_SIZE</code> .env variable (<a href="/funkwhale/funkwhale/-/issues/1624" data-reference-type="issue" data-original="#1624" data-link="false" data-link-reference="false" data-project="17" data-issue="2382" data-project-path="funkwhale/funkwhale" data-iid="1624" data-issue-type="issue" data-container="body" data-placement="top" title="Dockerized instaneces have multiple locations for upload limits" class="gfm gfm-issue">#1624</a>).</li>
<li data-sourcepos="188:1-188:41">Harden security for debian install docs</li>
<li data-sourcepos="189:1-189:42">Rewrote documentation contributor guide.</li>
<li data-sourcepos="190:1-190:39">Rewrote the architecture file (<a href="/funkwhale/funkwhale/-/issues/1908" data-reference-type="issue" data-original="#1908" data-link="false" data-link-reference="false" data-project="17" data-issue="2922" data-project-path="funkwhale/funkwhale" data-iid="1908" data-issue-type="task" data-container="body" data-placement="top" title="Rewrite architecture documentation" class="gfm gfm-issue">#1908</a>)</li>
<li data-sourcepos="191:1-191:56">Rewrote the federation developer documentation (<a href="/funkwhale/funkwhale/-/issues/1911" data-reference-type="issue" data-original="#1911" data-link="false" data-link-reference="false" data-project="17" data-issue="2925" data-project-path="funkwhale/funkwhale" data-iid="1911" data-issue-type="task" data-container="body" data-placement="top" title="Rewrite federation documentation" class="gfm gfm-issue">#1911</a>)</li>
<li data-sourcepos="192:1-192:43">Rewrote the plugins documentation (<a href="/funkwhale/funkwhale/-/issues/1910" data-reference-type="issue" data-original="#1910" data-link="false" data-link-reference="false" data-project="17" data-issue="2924" data-project-path="funkwhale/funkwhale" data-iid="1910" data-issue-type="task" data-container="body" data-placement="top" title="Rewrite plugins documentation" class="gfm gfm-issue">#1910</a>)</li>
<li data-sourcepos="193:1-193:26">Rewrote translators file</li>
<li data-sourcepos="194:1-194:52">Updated API developer documentation (<a href="/funkwhale/funkwhale/-/issues/1912" data-reference-type="issue" data-original="#1912" data-link="false" data-link-reference="false" data-project="17" data-issue="2926" data-project-path="funkwhale/funkwhale" data-iid="1912" data-issue-type="task" data-container="body" data-placement="top" title="Rewrite subsonic API documentation" class="gfm gfm-issue">#1912</a>, <a href="/funkwhale/funkwhale/-/issues/1909" data-reference-type="issue" data-original="#1909" data-link="false" data-link-reference="false" data-project="17" data-issue="2923" data-project-path="funkwhale/funkwhale" data-iid="1909" data-issue-type="task" data-container="body" data-placement="top" title="Update API documentation" class="gfm gfm-issue">#1909</a>)</li>
<li data-sourcepos="195:1-197:0">Updated CONTRIBUTING guide with up-to-date documentation. Created layout in documentation hub.</li>
</ul>
<h2 data-sourcepos="198:1-198:9" dir="auto">
<a id="user-content-other" class="anchor" href="#other" aria-hidden="true"></a>Other:</h2>
<ul data-sourcepos="200:1-232:0" dir="auto">
<li data-sourcepos="200:1-200:57">
<p data-sourcepos="200:3-200:57">Add a CI job to check if changelog snippet is available</p>
</li>
<li data-sourcepos="201:1-201:29">
<p data-sourcepos="201:3-201:29">Add CI broken links checker</p>
</li>
<li data-sourcepos="202:1-209:13">
<p data-sourcepos="202:3-202:22">Add pre-commit hooks</p>
<ul data-sourcepos="204:3-209:13">
<li data-sourcepos="204:3-204:10">flake8</li>
<li data-sourcepos="205:3-205:9">black</li>
<li data-sourcepos="206:3-206:9">isort</li>
<li data-sourcepos="207:3-207:13">pyupgrade</li>
<li data-sourcepos="208:3-208:12">prettier</li>
<li data-sourcepos="209:3-209:13">codespell</li>
</ul>
</li>
<li data-sourcepos="210:1-210:37">
<p data-sourcepos="210:3-210:37">Add pre-commit to development tools</p>
</li>
<li data-sourcepos="211:1-211:60">
<p data-sourcepos="211:3-211:60">Align the openapi spec to the actual API wherever possible</p>
</li>
<li data-sourcepos="212:1-212:43">
<p data-sourcepos="212:3-212:43">Cache lychee checked urls for 1 day in CI</p>
</li>
<li data-sourcepos="213:1-213:45">
<p data-sourcepos="213:3-213:45">Fix api tests warnings by renaming fixtures</p>
</li>
<li data-sourcepos="214:1-214:37">
<p data-sourcepos="214:3-214:37">Fix permissions for build artifacts</p>
</li>
<li data-sourcepos="215:1-215:31">
<p data-sourcepos="215:3-215:31">Fix shell scripts lint errors</p>
</li>
<li data-sourcepos="216:1-216:27">
<p data-sourcepos="216:3-216:27">Format api pyproject.toml</p>
</li>
<li data-sourcepos="217:1-224:31">
<p data-sourcepos="217:3-217:38">Format or fix files using pre-commit</p>
<ul data-sourcepos="219:3-224:31">
<li data-sourcepos="219:3-219:31">Upgrade code to >=python3.7</li>
<li data-sourcepos="220:3-220:23">Fix flake8 warnings</li>
<li data-sourcepos="221:3-221:23">Fix spelling errors</li>
<li data-sourcepos="222:3-222:28">Format files using black</li>
<li data-sourcepos="223:3-223:28">Format files using isort</li>
<li data-sourcepos="224:3-224:31">Format files using prettier</li>
</ul>
</li>
<li data-sourcepos="225:1-225:41">
<p data-sourcepos="225:3-225:41">Move api tools config to pyproject.toml</p>
</li>
<li data-sourcepos="226:1-226:69">
<p data-sourcepos="226:3-226:69">Move database url composition from custom script to django settings</p>
</li>
<li data-sourcepos="227:1-227:41">
<p data-sourcepos="227:3-227:41">Remove docker_all_in_one_release ci job</p>
</li>
<li data-sourcepos="228:1-228:44">
<p data-sourcepos="228:3-228:44">Rename api composer/django/ dir to docker/</p>
</li>
<li data-sourcepos="229:1-229:35">
<p data-sourcepos="229:3-229:35">Unpin asgiref in API dependencies</p>
</li>
<li data-sourcepos="230:1-232:0">
<p data-sourcepos="230:3-230:43">Use vite for building the frontend, <a href="/funkwhale/funkwhale/-/issues/1644" data-reference-type="issue" data-original="#1644" data-link="false" data-link-reference="false" data-project="17" data-issue="2408" data-project-path="funkwhale/funkwhale" data-iid="1644" data-issue-type="issue" data-container="body" data-placement="top" title="Transition to Vite" class="gfm gfm-issue">#1644</a></p>
</li>
</ul>
<h2 data-sourcepos="233:1-233:11" dir="auto">
<a id="user-content-removal" class="anchor" href="#removal" aria-hidden="true"></a>Removal:</h2>
<ul data-sourcepos="235:1-237:0" dir="auto">
<li data-sourcepos="235:1-237:0">This release removes support for Python 3.6. Please make sure you update your python version before
Updating Funkwhale!</li>
</ul>
<h2 data-sourcepos="238:1-238:10" dir="auto">
<a id="user-content-assets" class="anchor" href="#assets" aria-hidden="true"></a>Assets:</h2>
<ul data-sourcepos="240:1-241:66" dir="auto">
<li data-sourcepos="240:1-240:70"><a href="/funkwhale/funkwhale/uploads/6b405225f4c040af6409f316d579fa2a/api-develop.zip" data-canonical-src="/uploads/6b405225f4c040af6409f316d579fa2a/api-develop.zip" data-link="true" class="gfm">api.zip</a></li>
<li data-sourcepos="241:1-241:66"><a href="/funkwhale/funkwhale/uploads/0707851f903cb366d3aa2526afa053b1/front.zip" data-canonical-src="/uploads/0707851f903cb366d3aa2526afa053b1/front.zip" data-link="true" class="gfm">front.zip</a></li>
</ul>2023-02-24T12:18:00ZGeorg Krausehttps://dev.funkwhale.audio/funkwhale/funkwhale/-/tags/1.2.91.2.9Georg Krausehttps://dev.funkwhale.audio/funkwhale/funkwhale/-/tags/1.2.81.2.8Marcos Peñahttps://dev.funkwhale.audio/funkwhale/funkwhale/-/tags/1.2.71.2.7Marcos Peñahttps://dev.funkwhale.audio/funkwhale/funkwhale/-/tags/1.2.6-11.2.6-1Georg Krausehttps://dev.funkwhale.audio/funkwhale/funkwhale/-/tags/1.2.61.2.6Marcos Peña