🚀 ffcbc5923d1ffc908cf3bafe05c4bb3c ../ampache-5.0.0-pre-release1_all.zip
🚀 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.
⬆️ DO NOT UPGRADE YOUR MAIN AMPACHE INSTANCE
⬆️ 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)
(MD5SUM 57564e04433a98b12cc641205ab13cad) ../ampache-4.2.5_all.zip
🚀 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.
- ➕ Use _add_urls when building a stream playlist
- ✂ 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
- 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
(MD5SUM 3d86288f9b7d2854fa7c36065d307d65) ../ampache-4.2.4_all.zip
🚀 Ampache 4.2.4-release
🚀 Another minor release fixing some issues found over the last month.
- "Random" tickbox added to search pages
- Fall back to year when using original year in search
- 👉 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
(MD5SUM 6423cd2254b88a88aa19991a0dd7b2e4) ../ampache-4.2.3_all.zip
🚀 Ampache 4.2.3-release
🚀 Minor release fixing some issues found over the last month.
- Subsonic: Generate errors for objects missing art
- Don't mark short songs as skipped
- Subsonic: Stop converting strings to ints in JSON responses
- 👉 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
(MD5SUM d5c37a0889f8e4a79d11458a89a8bc19) ../ampache-4.2.2_all.zip
🚀 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.
- 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_file.inc: Update your catalog when individual files are changed using inotifywait.sh
- bin/update_db.inc: Update your database collation, charset and table engine from the cli
- docs/examples/inotifywait.sh: script to use inotifywait and update_file.inc to update as file changes happen
- docs/examples/inotifywait.service: systemd example service for inotifywait.sh
- 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
- 🚀 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
- ✂ Remove stat recording from channels
- ⚡️ Don't reset the database charset and collation after each db update
- 🛠 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 last.fm
🛠 Fix CVE-2020-15153 - Unauthenticated SQL injection in Ampache
🛠 Minor bugfixes
- Api::advanced_search added parameter 'random' (0|1) to shuffle your searches
- ✂ 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)
- 🚚 Search rules 'has image','image height', 'image width', 'filename'. (Removed in Ampache 5.0.0)
- 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
- Numeric 'Played/Skipped ratio' added to search. (Set using (stream/skip)*100.)
(MD5SUM cda91b97a97a1c91e95f23b64b72d3a2) ../ampache-4.2.1_all.zip
🛠 Bugfixes and updates to fix issues found in the wild.
🔔 NOTICE Ampache 4.3.0 will require php-intl module/dll to be enabled.
- 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. (API.md, API-JSON-methods.md, API-XML-methods.md, API-advanced-search.md)
- 'Filters' added to each sidebar tab if enabled (previously only 'Home' and 'Admin')
- 🌐 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
- 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
No functional changes compared to 4.2.0.
- 🛠 Filter in "playlist" and "playlist_songs" fixed
(MD5SUM 8cff487d8cb7de72f221a044213df48f) ../ampache-4.2.0_all.zip
This is a big one; you ready for a JSON API!?
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. ([https://www.php.net/manual/en/function.date.php])
The API changelog for this version has been separated into a new sub-heading below to make it easier to follow.
- ➕ 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. ([https://mariadb.com/kb/en/regexp/])
- Refer to the wiki for information about search rules. (https://github.com/ampache/ampache/wiki/advanced-search)
- 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/compute_cache.inc: Cache object_count data to speed up access
- bin/cron.inc: Perform garbage_collection functions outside of main functions (includes compute_cache.inc)
- 🆕 NEW examples
- 🔄 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/delete_disabled.inc require -x to execute. (previously you needed to edit the file)
- 💻 Horde_Browser::getIPAddress(). Use Core::get_user_ip() instead.
- bin/migrate_config.inc (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 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
- 🛠 Fix: CVE-2020-13625 in phpmailer
🚀 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.
- JSON API now available!
- Call xml as normal:
- Call the JSON server:
- Example XML and JSON responses available here
- 🆕 NEW API functions
- get_similar: send artist or song id to get related objects from last.fm
- 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)
- ⬆️ 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
- 🏗 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.
- XML can count objects the same was as a JSON array [https://www.php.net/manual/en/simplexmlelement.count.php]
- 🚚 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.
- Extra text in catalog API calls
- ⚡️ Don't fail the API calls when the database needs updating
ampache-4.1.1_all.zip (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
ampache-4.1.0_all.zip (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. ([https://github.com/ampache/ampache/wiki/XML-methods]))
- ⚡️ 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 RELEASE-PROCESS.md
- ⚡️ Update ListenBrainz plugin for empty additional info. (API says remove this section from json)
ampache-4.0.4_all.zip (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