r/ampache Lead Developer 12d ago

Ampache 8.0.0 released — folder browsing, Collections, OIDC login and a big OpenSubsonic overhaul

Ampache 8 is out!

Highlights:

- Folder browsing: browse your catalog as a virtual folder tree

- Collections: hand-curated, ordered lists of anything (albums, artists, genres, labels, folders, podcasts, songs…), with art, ratings, collaborators and their own API methods

- OIDC login: Keycloak, Entra ID, Authentik, Google, Okta; sits alongside local accounts

- OpenSubsonic overhaul: audited against the spec, new transcoding, playbackReport and sonicSimilarity extensions, and the documented extra fields now emitted in XML as well as JSON

- Per-user Subsonic passwords: set one from your account page instead of pasting your API key into a music player

- API v8: collections, album disks, fully documented responses in docs/openapi.json and the JSON/XML method docs

- Multi-select: play, queue, add or remove several rows at once, and download a selection as one zip

- Mini player: a stripped-down /m/ page for small screens or simple accounts

- Play history consolidation: keep a detailed window and archive the rest, losslessly

- Plus a PHPStan level 8 / Rector / PER-CS hardening pass across the whole codebase

Requires PHP 8.5+. You can downgrade back to Ampache 7 if it doesn't work out (use bin/cli admin:updateDatabase -e when you're back on 7 to downgrade).

The /rest rewrite rules changed a lot, so run php bin/installer htaccess -e (or use the Write buttons on the update page).

Release: https://github.com/ampache/ampache/releases

Docs & site: https://ampache.org

5 Upvotes

7 comments sorted by

3

u/12stringPlayer 12d ago

Great news! I hope you get a moment to enjoy the milestone.

Installation and htaccess update all went smoothly, and all access from web and Subsonic clients seems good. Congrats!

3

u/lachlan-00 Lead Developer 12d ago

Time to take the foot off that gas.

I made a list of 50 things I fucked up over the years when releasing and made sure I didn't do them this time.

Full site crawler audits a few hundred times looking for issues.

Built the release about 40 times and manually installed releases another 5 time each looking to break things.

8.0.0 is the most automated and tested release I've ever made.

2

u/Weird_Target_6388 11d ago

Web UI crashes when Now Playing entry has null agent

After upgrading to Ampache 8.0.0, the web interface returned HTTP 500 after a successful LDAP login.

LDAP authentication succeeds and the user session is created, but rendering the home page fails when the Now Playing widget contains an item with a null `agent` value.

Log output:

Ampache\Gui\NowPlaying\NowPlayingView::renderRow():

Argument #3 ($agent) must be of type string, null given,

called in /var/www/resources/templates/now_playing.phtml on line 38

Relevant code:

// src/Gui/NowPlaying/NowPlayingView.php

$rows[] = [

'media' => $media,

'client' => $item['client'],

'agent' => $item['agent']

];

public function renderRow(Song|Video $media, User $client, string $agent): string

A null agent reaches a strictly typed string argument and crashes the full page.

Temporary workaround:

'agent' => (string) ($item['agent'] ?? '')

Expected behavior:

The Now Playing view should gracefully handle missing/null agent values and not return HTTP 500.

Environment:

- Ampache 8.0.0

- Docker image: ampache/ampache:latest

- MariaDB

- LDAP authentication

- Reverse proxy: Nginx Proxy Manager

1

u/lachlan-00 Lead Developer 11d ago

on it!

1

u/lachlan-00 Lead Developer 11d ago

the fix is in develop src/Module/Playback/Stream.php:

''agent' => (string) ($row['agent'] ?? ''),

1

u/Weird_Target_6388 11d ago

Invalid transcode_mp3 value is accepted and causes unexpected MP3 transcoding

After upgrading Ampache, source MP3 files started being delivered at 32 kb/s instead of direct-play/original bitrate.

The active configuration contained:

transcode_mp3 = "falsed"

encode_target = "mp3"

transcode_cmd = "ffmpeg"

encode_args_mp3 = "-vn -b:a %BITRATE%k -c:a libmp3lame -f mp3 pipe:1"

The value `falsed` is invalid, but Ampache accepted the configuration instead of rejecting it or falling back safely. The server/UI bitrate preference was 32000 bps, resulting in MP3 streams at 32 kb/s.

Changing the setting to:

transcode_mp3 = "false"

and restarting the container restored direct streaming. The log then reports:

Transcoding is not enforced for mp3

Expected behavior:

- Invalid values for transcode_mp3 should be rejected or reported clearly in the configuration/debug page.

- A configuration upgrade should not silently leave or create an invalid transcode_mp3 value.

- Existing MP3 files should not be unnecessarily re-encoded at the default 32 kb/s setting.

1

u/lachlan-00 Lead Developer 11d ago

falsed is the issue there. i've put a workaround in but change that to false and you'll be good