Ampache v4.2.0 Release Notes

Release Date: 2020-08-06 // over 3 years ago
  • (MD5SUM 8cff487d8cb7de72f221a044213df48f) ../ampache-4.2.0_all.zip

    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. ([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

    • โž• 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/])
    • 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
      • 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/delete_disabled.inc require -x to execute. (previously you needed to edit the file)

    ๐Ÿ—„ Deprecated

    • ๐Ÿ’ป Horde_Browser::getIPAddress(). Use Core::get_user_ip() instead.

    โœ‚ Removed

    • 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

    • ๐Ÿ›  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 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)

    ๐Ÿ”„ 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