8.2.0
Replaced
NOTE Replaced with 8.2.2
8.2.0
php8.5
86cb524ca96f9c5e9e0a9af8523edf34 ./ampache-8.2.0_php8.5.zip
86cb524ca96f9c5e9e0a9af8523edf34 ./ampache-8.2.0_all_php8.5.zip
017afb32ce4a4508ae816cf39217a260 ./ampache-8.2.0_all_php8.5_squashed.zip
540856bac0f8a0d3160ffcecaca29372 ./ampache-8.2.0_all_php8.5_client.zip
UNSUPPORTED Code only release. (Requires composer and npm install)
39a0f4371aeabf5473c667f3f110bfce ./ampache-8.2.0.zip
39a0f4371aeabf5473c667f3f110bfce ./ampache-8.2.0_public.zip
066e72fa7a5b922331d08eb3edf9870a ./ampache-8.2.0_squashed.zip
d0487b861d7f4374d205bafda1275c0b ./ampache-8.2.0_client.zip
Zip Version information
If you aren't familiar which the project make sure you know which zip you need to download.
ampache-8.2.0.zip is a copy of ampache-8.2.0_public.zip and ampache-8.2.0_php8.5.zip is a copy of ampache-8.2.0_all_php8.5.zip.
The shorter names become the default for the public structure in Ampache9; the _public and _all names will be kept for the rest of the 8.x series.
Ampache 8.2.0
Jellyfin API Third-party Jellyfin clients can now browse and stream Ampache libraries through a new optional Jellyfin-compatible API. https://ampache.org/docs/configuration/jellyfin/
Added (8.2.0)
- Database 810029
- Added an index on
recommendation_item.recommendationfor the similar artists/songs lookup - Added
musicbrainz_serverandmusicbrainz_throttlepreferences to support custom MusicBrainz mirrors and configurable request throttling - Added
jellyfin_backend_enablepreference - Added
jellyfin_quick_connecttable andquickconnect_enablepreference for QuickConnect pairing - Corrected the
booltype onhome_recently_played_allandshow_wrapped - Corrected
preference.name's collation to matchuser_preference.name, fixing an "Illegal mix of collations" error inadmin:updateDatabase - Added
embed_playerpreference, offering a player to sites that link here - Pinned
object_typetoutf8mb3onfolder_map,collection,collection_map,playlist_folder_map,object_count_archiveandobject_count_summary, matching every otherobject_typecolumn - Removed the dead
tvshow/tvshow_seasonvalues from theobject_typeenum oncache_object_count,cache_object_count_run,image,object_count,rating,tag_map,user_activityanduser_flag - Converted
object_typefrom a plainvarcharto anenumof its real, verified values onalbum_map,artist_map,catalog_map,folder_map,collection_map,bookmark,tmp_playlist,tmp_playlist_data,recommendation,user_shoutandcollection - Widened
bookmark/tmp_playlist'sobject_typeenum to the same playable-media list asplaylist_data/tmp_playlist_data, so a new playable type needs no further migration - Converted
playlist_folder_map.object_type,preference.typeandstream_playlist.typefrom a plainvarcharto anenumof their real, verified values
- Added an index on
- Jellyfin
- Added Jellyfin-compatible API support for Finamp, Symfonium and Gelly
- Disabled by default. Enable with
jellyfin_backend_enable - Supports audio streaming, direct play and transcoding
- Supports login, browsing, artwork, streaming, lyrics, recommendations, favourites, ratings, playback resume/reporting and playlist management
- Added QuickConnect device pairing with a dedicated approval page. Disabled by default via
quickconnect_enable
- Rightbar
- Added Shuffle button for queue randomisation
- Added Play Next and Play Last buttons to enqueue the current queue in web player and Localplay sessions
- Added drag-and-drop reordering of the queue
- Playlist Folders
- Added a web UI to browse, create, rename, move and delete playlist folders, and to file playlists/smart playlists into them
- The
Personal Favoriteshome plugin now shows ratings and favourite status for playlists and smart playlists - Smart playlists and random searches now show generated mosaic cover art on their own page, like playlists already do
- Config version 100
- Added
stream_proxyoption (defaulttrue) to control live stream proxying
- Added
Changed (8.2.0)
- Updated Seafile SDK to
dev-master - Updated Composer and NPM dependencies
wanted_typesnow includessingleandepby default- Rightbar action buttons now use a fixed four-column grid
- Grid action icons now display in the bottom-right corner
- Artist Songs now loads via AJAX within the artist page. Legacy URLs redirect to the new tab
- A password change or API key rotation now ends the sessions that credential had opened
bin/cli run:updateDbnow compares every table and column againstresources/sql/ampache.sqland only reports/fixes the ones that don't match, instead of unconditionally rewriting every table and column to one global charset; id/token/enum columns the schema pins toutf8mb3are left alone
Fixed (8.2.0)
- Subsonic
search3rejected an emptyquery(regression since 7.10.0/8.1.0); restoredsearch2's "browse everything" behaviour - Last.fm and Libre.fm session keys were shown in plain text
- Notifications displayed their own quotes, and were inserted as markup rather than as text
- A
site_titleholding a closing script tag broke the page scripts - A stored
theme_namereachedget_theme()as a path segment without being confined to the themes directory - A preference written in one request was still read back stale in that same request
- The slideshow armed itself without the Flickr plugin
- Subsonic
getIndexesreturned an empty index on any library whosefolder_maphas not been rebuilt - Garbage collection incorrectly removed parent-only folders
- Fixed missing Subsonic sub-folder listings
- Fixed MariaDB error 1020 when using
innodb_snapshot_isolation - Improved support for databases with autocommit disabled
- Fixed false PDO error detection when error code was
00000 - Fixed raw
LICENSEtag handling for Vorbis metadata - Sanitised licence external links and blocked non-HTTP(S) URLs
- Fixed folder handling in the Subsonic API
- Fixed missing song lyrics
- Database exceptions now include query and driver error details
- Fixed
admin:updateDatabasefailures during partial migrations - Fixed now-playing polling continuing after page navigation
- Restored "Save as Smart Playlist" for existing smart playlists
- Fixed downloads failing when no files were available
- Fixed proof-of-work loops after endpoint errors
- Fixed private playlist share links rejecting visitors
- Fixed withdrawn albums appearing in artist, API and UPnP listings
- Fixed ineffective
Enabledsearch rule on album disks - Added withdrawn status indicators to disk listings
- Fixed managers being unable to view withdrawn tracks on artist song pages
- Fixed missing generated artwork when
custom_blankalbumis enabled - RSS artwork for a song/podcast episode with no cover now falls back to its album/podcast artwork instead of the placeholder
- RSS artwork for an album with no cover of its own now falls back to the album artist's artwork instead of showing the placeholder
httpauthentication no longer accepts a client-suppliedHTTP_REMOTE_USERheader as an identity; only the server-setREMOTE_USERis trusted- Fixed withdrawn releases appearing in Recent, Popular, Trending and statistics views
- Fixed withdrawn releases appearing in recently played views and feeds
- Added visual highlighting for withdrawn items
- Fixed
run:updateCatalog -careimporting unchanged files - Fixed
deleted_songsAPI always returning an empty result - Subsonic
- Optimised genre lookups in
getMusicDirectory - Optimised video and podcast tag loading
- Unexpected API errors now return proper error responses
- Reduced memory usage when browsing large folders
- Optimised genre lookups in
- Fixed catalog scans leaving progress streams open after errors
- Fixed DAAP requests returning empty responses on unexpected errors
- Fixed sidebar section toggle inconsistencies
- Fixed
wanted_missing_albumserrors when MusicBrainz data omittedsecondary-types - Fixed live stream interruptions caused by PHP execution time limits
- Fixed the ListenBrainz plugin double-prefixing a URL that already had a scheme
- A MusicBrainz mirror given as a bare host is now assumed
httpinstead of rejected - Restored the artist "Songs" tab's full-page view, which had regressed to a redirect
- Header-authenticated session ids were
md5(username), guessable from a username; now derived from the credential update.phpskipped auth based on a request parameter, letting anyone reach the update dispatcherbatch.phpskipped catalog scoping for stream-session requests, allowing bulk download outside the catalog filterlost_passwordis now disabled by default, and blocked for Content Manager, Manager and Admin accountscleanup:sortSongsused the whole server's song count (not the catalog's) and the chunk index as a row offset, silently skipping songs on every catalog-wide run- Writing tags to a FLAC/Vorbis file could crash and leave the comment block partially written when adding a new per-user rating tag
print:tagscrashed on any file not yet scanned into a catalog, including its own documented usage examplerun:updateCatalogFile -r|--renamecould never succeed; it looked up the destination catalog from a song row that the rename itself was meant to createrun:convertFilenameswalked every local catalog instead of the one named on the command lineexport:playlistnever created its output directory and kept going anyway, failing a second time trying to write the playlist fileexport:albumArtwalked every catalog on the server instead of the one named on the command line
API 8.2.0
Added (820000)
quickconnect_initiate,quickconnect_status(API8)- New methods pair a native API client with the QuickConnect flow already used by the Jellyfin-compatible API
quickconnect_initiaterequests a pairing code,quickconnect_statuspolls it- Once approved, the session is minted the same way
handshakedoes and is valid
Changed (820000)
lost_password(ALL)- Disabled by default; requires
allow_lost_passwordto be enabled - Also blocked for Content Manager and Manager accounts
- Disabled by default; requires
Fixed (820000)
deleted_songs(API5, API6, API8)- The row's
update_timewas never mapped, so every output formatter'sisset()gate dropped it and the result was always empty
- The row's
- Session id after header auth was
md5(username); now derived from the credential