All Versions
Latest Version
Avg Release Cycle
57 days
Latest Release
1322 days ago

Changelog History
Page 1

  • v5.0.0-pre Changes

    December 07, 2020

    ๐Ÿš€ ffcbc5923d1ffc908cf3bafe05c4bb3c ../

    ๐Ÿš€ This pre-release is for the brave of heart as well as so i can add a docker image preview release.
    โšก๏ธ The preview will be updated while we work on documenting and socializing the changes with users.


    โฌ†๏ธ Seriously, make a copy of your conf and put this in a new folder (or try the docker) before upgrading your main Ampache

    ๐Ÿณ There are now Docker Images available for testing!

    ๐Ÿ“ฆ This package requires php >=7.4 || >=8.0

    This is a major rewrite and will break if you aren't aware of the changes .

    • โšก๏ธ You will need to update the web server to point to the new base folder. (/public)
    • You will need to make sure you've run composer install again. (composer install)
    • โšก๏ธ You will need to update scripts and commands (the /bin folder has combined each script into a single application)
    • if you used php-cs-fixer it's still there in the vender folder (/vendor/bin/php-cs-fixer)

    The Ampache website now resides in the public folder

    The bin folder has combined all the separate application files into a single cli application

  • v4.2.5 Changes

    December 04, 2020

    (MD5SUM 57564e04433a98b12cc641205ab13cad) ../

    ๐Ÿš€ Ampache 4.2.5-release

    ๐Ÿ›  A few important bug fixes that make playlists and stream URLs faster to create as well as some fixes to Democratic playback.

    โž• Added

    • โž• Use _add_urls when building a stream playlist

    ๐Ÿ”„ Changed

    • โœ‚ Removed the forced random from search
    • ๐Ÿ”Œ Put the browse header at the top above plugins
    • ๐Ÿ‘‰ Make the webplayer class a bit faster at deciding what to transcode

    ๐Ÿ›  Fixed

    • Ampache Debug, cron.lib.php missing from init
    • Slow playlist creation when inserting a large amount of items
    • Stream_URL properties were inconsistently applied
    • ๐Ÿ›  Fix streaming when play_type is Democratic
    • ๐Ÿ’พ Save your limit and random settings when creating a smartlist

    API 4.2.5


  • v4.2.4 Changes

    November 03, 2020

    (MD5SUM 3d86288f9b7d2854fa7c36065d307d65) ../

    ๐Ÿš€ Ampache 4.2.4-release

    ๐Ÿš€ Another minor release fixing some issues found over the last month.

    โž• Added

    • "Random" tickbox added to search pages

    ๐Ÿ”„ Changed

    • Fall back to year when using original year in search

    ๐Ÿ›  Fixed

    • ๐Ÿ‘‰ User was being created but you were told it isn't
    • The search pages remember your limit correctly
    • ๐Ÿ‘ป PHP exception when < 7.1
    • โšก๏ธ Correct "Recently Added", "Recently Updated" searches
    • Check that song can be inserted before inserting the remaining rows
    • Logic in stat recording when skips occur
    • Don't query for null tag ids

    API 4.2.4


  • v4.2.3 Changes

    October 06, 2020

    (MD5SUM 6423cd2254b88a88aa19991a0dd7b2e4) ../

    ๐Ÿš€ Ampache 4.2.3-release

    ๐Ÿš€ Minor release fixing some issues found over the last month.

    โž• Added

    • Subsonic: Generate errors for objects missing art

    ๐Ÿ”„ Changed

    • Don't mark short songs as skipped
    • Subsonic: Stop converting strings to ints in JSON responses

    ๐Ÿ›  Fixed

    • ๐Ÿ‘‰ User registrations
    • โ†ช Workaround null values for new columns in search table
    • ๐Ÿš€ Check release_type length before inserting into the database
    • Ensure Album Artist is set correctly on songs
    • Subsonic: Fix callbacks for similarSongs2 and artistInfo2
    • ๐Ÿ›  Subsonic: getCoverArt fixes

    API 4.2.3


  • v4.2.2 Changes

    September 02, 2020

    (MD5SUM d5c37a0889f8e4a79d11458a89a8bc19) ../

    ๐Ÿš€ Ampache 4.2.2-release

    DATABASE CHANGES You can now force a default collation and charset on your database.
    If you choose to use utf8mb4; Ampache will convert your table engine to InnoDB to handle the extra bytes.

    โž• Added

    • Numeric 'Played/Skipped ratio' added to search. (Set using (stream/skip)*100.)
      • > 0 & < 100: Skipped more than played
      • 100: Equal plays and skips
      • > 100: Played more than skipped
    • โž• Add 'Original Year', 'Release Type' to Album searches
    • ๐Ÿ‘ Allow setting custom database collation and charset without overwriting your changes
    • Video search added to random.php
    • 'samesite=strict' on JS cookies
    • โšก๏ธ Translation updates (August 2020)
    • Put 'Labels' into search, browse headers and sidebar when enabled
    • ๐Ÿ†• NEW config options (config_version 45)
      • database_charset: Set a default charset for your database
      • database_collation: Set a default collation for your database
      • simple_user_mode: Don't allow users to edit their account values (used for demo sites that allow login)
    • ๐Ÿ†• NEW files
      • bin/ Update your catalog when individual files are changed using
      • bin/ Update your database collation, charset and table engine from the cli
      • docs/examples/ script to use inotifywait and to update as file changes happen
      • docs/examples/inotifywait.service: systemd example service for

    ๐Ÿ”„ Changed

    • stats.php: Show total 'Item Count' on Statistics page instead of trying to shoehorn songs/videos/etc into different columns
    • โšก๏ธ ampache.sql updated after about 4 years... no more updates on install!
    • Searching by "Rating (average)" now ignores private/public and always returns the average.
    • Hide searches for '# Skipped' and 'Played/Skipped ratio' when 'Show # skipped' is Off
    • Search items rearranged to try to match each other
    • Sort 'Playlist' and 'Smart Playlist' browse pages by name
    • Display the blankuser avatar in now playing if missing
    • Swap 'Random' and 'Playlists' in the sidebar (CSS order numbers)
    • Don't hide artist art when you disable lastfm_api_key in the config
    • Hide 'Metadata' search when 'enable_custom_metadata' is disabled

    ๐Ÿ—„ Deprecated

    • ๐Ÿš€ Drop version number from the release string in develop. ('4.3.0-develop' => 'develop')
      • This should stop a bit of confusion when removing / adding requirements
    • ๐Ÿš€ The '-release' suffix in version number will be dropped for Ampache 5.0.0

    โœ‚ Removed

    • โœ‚ Remove stat recording from channels
    • โšก๏ธ Don't reset the database charset and collation after each db update

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fixed a few issues on the Statistics page
      • Report 'Catalog Size' correctly for podcasts
      • Report 'Item Count' correctly for podcasts and video catalogs
    • Searching albums for artist name
    • Mashup 'Newest' would incorrectly apply an offset missing the newest items
    • ๐Ÿ›  Search by 'Smart Playlist' rules fixed when added with other rules
    • ๐Ÿ‘‰ Use LEFT JOIN instead of HAVING for search rules to allow more complicated lists
    • ๐Ÿ‘ Logic searching 'My Rating' includes unrated (0 Stars) in a better way
    • Captcha was not generated for registration
    • Enforce lowercase codec for live streams
    • ๐Ÿ“œ Parsing integer search rules was overwriting index values
    • ๐Ÿ– Handle empty XML on similar artist requests to

    ๐Ÿ”’ Security

    ๐Ÿ›  Fix CVE-2020-15153 - Unauthenticated SQL injection in Ampache

    API 4.2.2

    ๐Ÿ›  Minor bugfixes

    โž• Added

    • Api::advanced_search added parameter 'random' (0|1) to shuffle your searches

    ๐Ÿ”„ Changed

    • โœ‚ Remove spaces from advanced_search rule names. (Backwards compatible with old names)
      • 'has image' => 'has_image'
      • 'image height' => 'image_height'
      • 'image width' => 'image_width'
      • 'filename' => 'file' (Video search)

    ๐Ÿ—„ Deprecated

    • ๐Ÿšš Search rules 'has image','image height', 'image width', 'filename'. (Removed in Ampache 5.0.0)

    ๐Ÿ›  Fixed

    • Api::stream, Api::download Api::playlist_generate 'format' parameter was overwritten with 'xml' or 'json'
    • Produce valid XML for playlist_generate using the 'id' format in XML
  • v4.2.1 Changes

    August 14, 2020

    (MD5SUM cda91b97a97a1c91e95f23b64b72d3a2) ../

    ๐Ÿ›  Bugfixes and updates to fix issues found in the wild.

    ๐Ÿš€ 4.2.1-release

    ๐Ÿ”” NOTICE Ampache 4.3.0 will require php-intl module/dll to be enabled.

    โž• Added

    • Ajax refresh localplay "Now Playing" same as the index "Now Playing" section
    • Put strings ('1 Star', '2 Stars', etc) back into numeric searches for ratings
    • Numeric ('1 Star'-'5 Stars') searches now include '0 Stars' to show unrated objects
    • โž• Add 'has not rated' to "Another User" searches
    • โž• Add higher bitrates (640, 1280) to search to allow for lossless files
    • ๐Ÿ†• NEW files
      • Include API docs from the wiki. (,,,
    • 'Filters' added to each sidebar tab if enabled (previously only 'Home' and 'Admin')

    ๐Ÿ”„ Changed

    • ๐ŸŒ Use binary (.mo) translation files to speed up translation processing
    • Don't show 'Generate new API key' if you don't have access
    • ๐Ÿšš QR Code in account page is now just the API Key (redundant link removed too)
    • โฌ†๏ธ Require minimum version of Ampache 3.8.2 to upgrade database
    • โž• Added an icon to webplayer to go to album. Clicking on song title now directs to song

    ๐Ÿ›  Fixed

    • Waveform config option 'get_tmp_dir' was ignored if set
    • Rightbar: 'Add to New Playlist' not adding on new playlists
    • Translate preference subcategories and status
    • ๐Ÿ†• 'podcast_new_download' logic fix
    • Filters box would show up in the Admin tab if you disabled 'browse_filter'
    • ๐Ÿš€ Update album when 'release_type' changes
    • ๐Ÿš€ Parse 'Release Type' from tags in a less terrible way

    API 4.2.1

    No functional changes compared to 4.2.0.

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Filter in "playlist" and "playlist_songs" fixed
  • v4.2.0 Changes

    August 06, 2020

    (MD5SUM 8cff487d8cb7de72f221a044213df48f) ../

    This is a big one; you ready for a JSON API!?

    ๐Ÿš€ 4.2.0-release

    0๏ธโƒฃ A big visual change in the interface is that Ampache now defaults to US time for dates. ('Month/Day/Year')
    For everyone who isn't American you have control over date formats using custom_datetime.
    Admin => Server Config => Interface => Custom datetime

    e.g. "Y/m/d H:i" will convert to "2020/04/14 10:42"
    Check the php manual for help making your desired string. ([])

    The API changelog for this version has been separated into a new sub-heading below to make it easier to follow.

    โž• Added

    • โž• Added Spotify art searches for both album and artist images.
    • โšก๏ธ Updated component installer and php-cs-fixer package.
    • โšก๏ธ Translation updates (April 2020, May 2020, July 2020)
    • Added declare(strict_types=0); to lib/* and lib/class/* (requires more work before it can be enabled)
    • โž• Add 250 for search form limits in the web UI. (Jump from 100 to 500 is pretty big)
    • โž• Add Recently updated/added to search rules
    • โž• Add regex searching to text fields. ([])
    • When labels are enabled, automatically generate and associate artists with their publisher/label tag values.
    • Enforced stat recording for videos. (podcasts and episodes to be added later)
    • โž• Add tags (Genres) to "Anywhere" text searches.
    • 0๏ธโƒฃ 10 second redirect on "Access Denied" to the default web_path
    • ๐Ÿ‘ Allow "Update from tags" for multi-disk album and artist pages
    • ๐Ÿ‘‰ show and hide the rightbar (playlist) using the minimize button in the header
    • ๐Ÿท Tag->f_name (New property on tag that was being set hackily)
    • โž• Add "Album" to Find Duplicates in admin/duplicates.php.
    • "Local Image" added to Artist & Album search. Find out whether you have art stored in Ampache
    • PHP_CodeSniffer checks and settings added to Scrutinizer. (phpcs --standard=.phpcs.xml lib/class)
    • ๐Ÿ†• NEW database options
      • cron_cache: Speed up the interface by allowing background caching of data
      • show_skipped_times: Add "# skipped" to the UI. (disabled by default)
      • custom_datetime: Allow you to format your date strings your way.
      • unique_playlist: Force unique playlists by ignoring existing songs
    • ๐Ÿ†• NEW config options
      • skip_timer: Add Skip Timer Threshold to the config
      • artist_art_folder: Specify a local folder to search for artist images using name/title
      • rating_file_tag_user: Set ratings to this user ID when importing ratings from file tags
      • spotify_client_id: Allows Spotify art search
      • spotify_client_secret: Allows Spotify art search
    • ๐Ÿ†• NEW files
      • server/json.server.php & lib\class\json_data.class.php: JSON API!
      • bin/ Cache object_count data to speed up access
      • bin/ Perform garbage_collection functions outside of main functions (includes
    • ๐Ÿ†• NEW examples
      • docs/examples/ampache_cron.service
      • docs/examples/ampache_cron.timer

    ๐Ÿ”„ Changed

    • ๐Ÿ”„ Change license string from AGPLv3 to AGPL-3.0-or-later
    • โšก๏ธ Update Composer requirements
    • ๐Ÿ‘ Allow searching play times without requiring UI option
    • ๐ŸŒ Stop showing the average rating in the web interface as stars. (show an average when available as text separately)
    • When you don't have a config file redirect to installer
    • ๐Ÿ”„ Change to numeric searches: Renamed 'is' => 'equals' and 'is not' => 'does not equal'
    • ๐Ÿ‘ Allow negative track numbers; reducing the maximum track number to 32767.
    • ๐Ÿšš Localplay volume control moved to the playlist (rightbar)
    • Podcast_Episode::check_play_history Podcast_Episode::set_played (match song.class versions for stat recording)
    • Video::check_play_history Video::set_played (match song.class versions for stat recording)
    • php_cs rules for line endings
    • Simplify play history checks and code a bit more
    • ๐Ÿท Tag (Genre) searches compare each item (e.g Pop) rather than the whole string (Pop,Rock,etc)
    • Replace "Browse Library" buttons with a search header allowing faster browsing of other types
    • Share secrets are generated by generate_password instead of a separate function
    • inet_ntop may not convert some binary IP addresses (like ::1) these now show up as "Invalid" in the ip history.
    • Searches using numeric rules must use an integer. ('1 Star' => 1, '2 Stars' => 2, etc)
    • bin/ require -x to execute. (previously you needed to edit the file)
    ๐Ÿ—„ Deprecated
    • ๐Ÿ’ป Horde_Browser::getIPAddress(). Use Core::get_user_ip() instead.

    โœ‚ Removed

    • bin/ (This was used to migrate the config file from php4 to php5)
    • EchoNest api/song previews
    • ๐Ÿ‘‰ User::update_user_stats (used in play index only and useless)
    • Share::generate_secret; use generate_password instead
    • Song::get_cache_count (unused)
    • Ampache Debug check for 'safe_mode'

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fixed a lot of incorrectly typed function calls and code documentation
    • ๐Ÿ”ง Gravatar Plugin: Make sure https is used when force_ssl is configured
    • Truncate strings to match database limits when strings go over
    • โž• Add User php warnings
    • Channel authentication
    • IP checks when sending null proxy values
    • Gather art page layout
    • Read vorbis rating correctly
    • ๐Ÿ“‡ Search rules in UI failing to load with custom_metadata
    • Warn correctly when inserting art fails
    • Insert missing user preferences on login
    • ๐Ÿ“œ When you had beautiful_urls enabled tracks would not parse in localplay making them all Unknown
    • Podcast durations aren't always correct format, prep the time before trying to insert it
    • ๐Ÿšš Subsonic playlist add/remove removing incorrect songs
    • Search/Smartlists need to have results to be used in lists
    • Auth issues with stats for recording and localplay
    • Stream_urls were generated with a typo when downloading
    • ๐Ÿ”Œ Respect album grouping using of the moment plugin
    • Filter album title with grouping enabled. (seriously deadmau5, stop with the <> everywhere)
    • Share playback without a UID would fail to start
    • 0๏ธโƒฃ Set a default popular_threshold if unauthenticated or unset
    • play/index would record democratic streams as a download
    • 0๏ธโƒฃ Make sure the default preferences table has all the preferences in them
    • Beets catalog bug; date_diff expecting a datetime but given a string
    • Searches using user data like ratings has been split in the SQL correctly
    • Flagged playlists never had their flag deleted
    • offset and limit were incorrectly used for top/recent searches

    ๐Ÿ”’ Security

    API 4.2.0

    ๐Ÿš€ API versions will follow release version and no longer use builds in the integer versions (e.g. 420000)
    ๐Ÿš€ API 5.0.0-release will be the first Ampache release to match the release string.

    โž• Added
    • JSON API now available!
    • ๐Ÿ†• NEW API functions
      • get_similar: send artist or song id to get related objects from
      • shares: get a list of shares you can access
      • share: get a share by id
      • share_create: create a share
      • share_edit: edit an existing share
      • share_delete: delete an existing share
      • podcasts: get a list of podcasts you can access
      • podcast: get a podcast by id
      • podcast_episodes: get a list of podcast_episodes you can access
      • podcast_episode: get a podcast_episode by id
      • podcast_episode_delete: delete an existing podcast_episode
      • podcast_create: create a podcast
      • podcast_edit: edit an existing podcast
      • podcast_delete: delete an existing podcast
      • update_podcast: sync and download new episodes
      • licenses: get a list of licenses you can access
      • license: get a license by id
      • catalogs: get all the catalogs
      • catalog: get a catalog by id
      • catalog_file: clean, add, verify using the file path (good for scripting)
    ๐Ÿ”„ Changed
    • โฌ†๏ธ Bump API version to 420000 (4.2.0)
    • All calls that return songs now include <playlisttrack> which can be used to identify track order.
    • <playcount> added to objects with a playcount.
    • <license> added to song objects.
    • Don't gather art when adding songs
    • Added actions to catalog_action. 'verify_catalog' 'gather_art'
    • API function "playlist_edit": added ability to edit playlist items
      • items = (string) comma-separated song_id's (replace existing items with a new object_id) //optional
      • tracks = (string) comma-separated playlisttrack numbers matched to items in order //optional
    • Random albums will get songs for all disks if album_group enabled
    ๐Ÿ—„ Deprecated
    • ๐Ÿ— API Build number is depreciated (the last 3 digits of the api version)
      • API 5.0.0 will be released with a string version ("5.0.0-release")
      • All future 4.x.x API versions will follow the main Ampache version. (420000, 421000, 422000)
    • ๐Ÿšš total_count in the XML API is depreciated and will be removed in API 5.0.0.
    • ๐Ÿšš Genre in songs is depreciated and will be removed in API 5.0.0.
      • Use tag instead of genre, tag provides a genre ID as well as the name.
    ๐Ÿ›  Fixed
    • Extra text in catalog API calls
    • โšก๏ธ Don't fail the API calls when the database needs updating
  • v4.1.1 Changes

    February 11, 2020 (MD5SUM eb958442fcc0c6377f9070baa7db13b4)

    ๐Ÿ›  Ampache 4.1.1 is a minor release that contains a new API build as well as some bugfixes caught along the way.

    • โฌ†๏ธ Bump API version to 400004 (4.0.0 build 004)
    • Api - Fix parameters using 0
    • Api - Get the correct total_count in xml when you set a limit
    • Api - Fix many XML formatting issues
    • Api - Add Api::check_access to warn when you can't access a function
    • โœ‚ Remove non-free lib/composer.* files.
      • You can enable c-pchart with (composer require 'szymach/c-pchart')
    • ๐Ÿ”Œ Hide localplay in the sidebar when you disable all the plugins
    • Extend Shouts to 2000 characters; Labels to 250
    • โœ‚ Remove shoutcast table and preferences. (Dead code)
    • โž• Add a status icon to the channel list pointing to the channel/ID/status.xsl
    • ๐Ÿ›  Fix Musicbrainz Art search
    • ๐Ÿ›  Fix tmp_playlist bug removing items
    • ๐Ÿ›  Fix Dropbox catalog errors when using a small library
    • ๐Ÿ›  Fix some bugs getting invalid time/date when reading tags
  • v4.1.0 Changes

    January 08, 2020 (MD5SUM 963d35b329d0829f10b391a5913bc926)

    ๐Ÿšš Api 400003 is stable and ready for all developers. API work will now move on to JSON support.
    A lot of work has gone into search, preparing for static typing and a lot of tiny bugs.

    • โฌ†๏ธ Bump API version to 400003 (4.0.0 build 003)
    • Api::playlist - filter mandatory
    • Api::playlist_edit - filter mandatory. name and type now optional
    • Api::user - Extend return values to include more user fields
    • Playlist::create - Return duplicate playlist ID instead of creating a new one
    • ๐Ÿšš Artist::check - Remove MBID from Various Artist objects
    • ๐Ÿ›  Fix Song::update_song for label
    • Api - Do not limit smartlists based on item count (return everything you can access)
    • Api/Database - Add last_count for search table to speed up access in API
    • ๐Ÿ›  Fix Api issues relating to playlist access
    • ๐Ÿ›  Fix comparison bugs found during static type testing
    • ๐Ÿ›  Fix enable/disable song ajax
    • โšก๏ธ December translation update from Transifex
    • โž• Add playlist into main search page. (Songs, Albums, Artists, Playlists, Videos)
    • Typo in login page HTTP_REFERER
    • โ†ช Roll back mysql8 workarounds. (Orace MySQL supported on php7.4+ only)
    • ๐Ÿ›  Fix bin*.inc text issues with newline
    • โž• Add docs/examples/channel_run.service for sunning background processes as a service
    • ๐Ÿ†• New search option "Another User" allows searching other user ratings and favorites
    • ๐Ÿ‘‰ user_numeric searches also available in the API. ([]))
    • โšก๏ธ Updates to support php7.4 (Ampache supports 7.1-7.4)
    • ๐Ÿ›  Fix bug in UI when enabling/disabling songs
    • Checks in Subsonic/WebUI for recording repeated plays
    • โšก๏ธ Update channel status pages (/channel/$CHANNELID/status.xsl)
    • ๐Ÿ›  Fix smartlists when searching sub-lists (Ampache was trying to create one giant query that didn't scale well)
    • โšก๏ธ composer & php-cs-fixer updates
    • ๐Ÿ›  Fix "Add New..." in album edit
    • โช Revert changes in 4.0.0 and allow manual choices for artist/album on upload again.
    • Subsonic return json errors when requesting json format (previously errors were always xml)
    • โž• Add github package guide for docker to
    • โšก๏ธ Update ListenBrainz plugin for empty additional info. (API says remove this section from json)
  • v4.0.4 Changes

    December 02, 2019 (MD5SUM 08990849409c6c23a9f8f2eb99755365)

    ๐Ÿš€ Thanks for working with me to smooth this release out.
    ๐Ÿš€ I think we're finally at a point where I can move on to new development and let this release free!

    • ๐Ÿš€ Finalize release procedure to make these updates a bit smoother
    • โฌ‡๏ธ Reduce the time for repeated track playback (Song length - 5 sec)
    • ๐ŸŒ Filter playlists in API, Web and Subsonic correctly for regular users vs admins
    • ๐Ÿ›  Fix album count for Artists when the album is missing data
    • ๐Ÿ›  Fix searches / searchbox for MYSQL8
    • ๐Ÿ›  Fix some invalid returns in lib/*
    • Send the correct function in ajax.server when deleting from playlist
    • Hide some lines from the mashup to make it a bit nicer
    • โœ‚ Remove the old logo from the main install page