Revisions of ampache

Eric Schirra's avatar Eric Schirra (ecsos) accepted request 1219951 from Eric Schirra's avatar Eric Schirra (ecsos) (revision 130)
- Update to 7.0.1
  * Added
    - Translations 2024-10-30
    - Album query sort album_artist_title (Sort by artist name then album title)
    - Validate URL input on Custom url preferences
      - custom_favicon (Custom URL - Favicon)
      - custom_login_background (Custom URL - Login page background)
      - custom_login_logo (Custom URL - Login page logo)
      - custom_logo (Custom URL - Logo)
      - custom_blankalbum (Custom blank album default image)
      - custom_blankmovie (Custom blank video default image)
    - Database 701002
      - Add preference id and name indexes to the user_preference table
      -Convert custom_text_footer into a system preference
  * Changed
    - Fail preference insert if the new id isn't a valid int
    - Ensure URL preferences are input as a valid URL
    - Remove access to custom_text_footer preference for users
    - Update Composer requirements
    - Move JS for the sidebar back into the PHP template. (For now)
  * Removed
    - Stop rebuilding preferences all the time. (This is now fixed up on insert/delete)
  * Fixed
    - Action buttons using songs for other media types in recently played all
    - Clear session preferences when installing plugins so they appear right away
    - Extra closing div on shout home plugin
    - Garbage collect invalid user preferences (0 preference id)
    - Stats module checking for place names when the data is missing
    - Respect geolocation setting in stats calls and only check valid data
    - Align 'Post Shout' and 'Graphs' text on artist page
    - Missing 'default' string for album_sort (Should match on default but be explicit)
    - Double / in JS url
    - Sidebar cookie, JavaScript and visual state were a bit of a disaster
    - Look for the expanded class in the sidebar before toggling collapse
  # API
    - NO CHANGE
Eric Schirra's avatar Eric Schirra (ecsos) accepted request 1217359 from Eric Schirra's avatar Eric Schirra (ecsos) (revision 129)
- Update to 7.0.0
  * Added
    - New release structure type (client) based on the public release type.
      (Allow using an API client in the root Ampache folder)
    - Translations 2024-10
    - npm java package management
    - Convert most theme icons to use Google Material Symbols & Icons
    - Restore composer.lock
    - Added rated songs to user Wrapped pages
    - Show ratings on live_stream pages
    - User option to show dashboard links on the index instead of browse links
    - Use number for preference input text boxes when the preference value is numeric
    - Check the user is admin when deleting activities
    - Verify http_referer before delete actions
    - Add option to clear update notifications which will also reset the check timer
    - Allow hiding licenses like genres
    - Show a warning on upload license selection
    - Show Bandcamp search icon on object pages
    - Garbage collect inactive users after 30 days
    - Remove validation token on user activation
    - Show error on user add/update when the website is invalid (empty values are ignored)
    - Added a get_web_path function to allow easier squash and client structure management
    - Hide SQL debug errors on queries that check status/backwards compatibility functions
    - Plugins
      - Home Dashboard: show album dashboard sections on the index
      - Preferences for sorting display_home plugins using CSS order
    - Browse
      - Sort by play count (total_count) for podcast, podcast_episode and video
      - Add country and active sort to label
      - Add rating sort to live_stream and video
      - Add id browse to all types
    - Search
      - Added waveform to song search. (Must not enable album_art_store_disk to return data)
    - Subonic
      - Add openSubsonic extensions ampache.org
    - CLI
      - New command bin/cli admin:updateConfigFile (Update the config file to the latest version if available)
      - New command bin/cli admin:updatePlugins (Update any plugins that need an update)
      - Update for missing preferences after CLI DB updates
      - New command bin/cli admin:updatePreferenceAccessLevel force preference access level
        ('default', 'guest', 'user', 'content_manager', 'manager', 'admin')
      - New command bin/cli admin:listUsers list all the active users for your site username (id)
      - New command bin/cli admin:resetPreferences Reset preference values for users
        ('system', 'default', 'minimalist', 'community')
    - Config version 75
      - Add npm_binary_path
      - Remove OpenID config
      - Add database_engine to allow you to change from InnoDB if you want to
      - Add composer_no_dev which allows you to remove --no-dev from the composer commands
      - Enable user_create_streamtoken by default
      - Add option waveform_drawflat that was previously hardcoded
      - Add webplayer_level allow setting a minimum permission level for the webplayer (default user)
    - Database 700029
      - Add user preferences to show/hide menus in the sidebar and the switcher arrows
      - Add Indexes to object_count, object_count_idx_count_type_date_id and object_count_idx_count_type_id
      - Convert the remaining MyISAM tables to InnoDB
      - Drop and recreate tmp_browse to allow InnoDB conversion
      - Add a last_count to playlist table to speed up access requests
      - Add collaborate to the playlist table to allow other users to add songs to the list
      - Create user_playlist_map table to allow browse access to playlists with collaborators
      - Convert system preference upload_catalog into a user preference
      - Convert clip, tvshow, movie and personal_video catalogs to video
      - Remove clip,movie, personal_video, tvshow, tvshow_episode and tvshow_season tables
      - Add user preference Custom URL - Use your avatar for header logo
        this allows you to override custom header logos with your avatar
      - Add action column to ip_history table
      - Add name to user_preference table
      - Add user Preference index_dashboard_form (Use Dashboard links for the index page header)
      - Put sidebar preferences into their own category
      - Add user preferences to order menu sections in the sidebar
      - Add UI option api_always_download Force API streams to download.
        (Enable scrobble in your client to record stats)
      - Require unique preference names per-user in user_preference table'
      - Add order column to license table to allow sorting and hiding licenses
      - Add options to allow hiding different search links
      - Remove tvshow, tvshowseason from object_type enums
  * Changed
    - Prefer the name of the artist provided by MusicBrainz plugin
    - Use PHP functions for php8.2+
    - Update rector minimum to php8.2 and extend rector source directories
    - Default to InnoDB on new installs
    - Change URL for user avatar links
    - Move JavaScript out of PHP where possible
    - Convert string access names and int user access levels to enums
    - Update the upload file browser
    - Update gettext/gettext to v5
    - Default to RandomAction on stream.php
    - Reborn theme CSS updates after switching to Material icons
    - Update code style to convert long form arrays (array()) to short form ([])
    - Pull prettyphoto from GitHub (lachlan-00/prettyphoto) using npm instead of merging into the project
    - Only allow Video catalogs instead of the different subtypes
    - Use preference names for lookups instead of guessing ID's
    - Skip empty sections when showing a Dashboard (mashup) page
    - Put each plugin class into extended interfaces to ensure functions meet expected requirements
    - Changed CSS logo to HTML
    - Skip stat recording on cache=1 instead of reclassifying as a download
    - Convert catalog row actions to a form to fix client branch
    - When updating artist from MusicBrainz use begin area name and fall back to current area instead of using both
    - Don't show track sort on non track pages
    - Validate URLs on save
    - Block users creating a user called System (including translation into site language)
    - Don't show query errors on check queries. (these can be annoying and are useless)
  * Removed
    - Support for PHP greater than 8.2
    - Unused stream actions
    - Old composer files
    - Unused PNG icons
    - CSS for sidebar order. Use the new preferences instead
    - Non-music Video features have been removed. You can no longer add catalogs for these video types
      - Movies
      - TV Shows
      - Personal Videos
    - Plugins
      - Omdb (Movie Database lookup)
      - Tvdb (TV Database lookup)
  * Fixed
    - Enforce sidebar_light when enabled, ignoring cookie if set
    - Don't create missing tables when they haven't been created for your database version
    - Don't put empty artists into artist links
    - Opensearch not being added for sites with auth
    - Opensearch URL parameters didn't work
    - VLC localplay volume division number incorrect for total volume
    - Latitude and longitude column names in stats page
    - Cookie disclaimer missing closing " on div id
    - UpdateUser action didn't send you back with a valid user on error
    - Don't show HTML errors in cli
    - Don't show duplicate items in upload_catalog select when you don't have a music catalog
    - User config presets didn't do anything, now they match the cli admin:resetPreferences command
    - Don't show Visualizer related buttons in the webplayer until it's turned on
    - Make sure preference read and insert is supported on all Ampache versions
      - Ampache6 changed spells category correctly. (Migration600051)
      - Ampache7 adds the preference name to the user_preference table. (Migration700020)
  # API 6.6.4
    Merge update from Ampache7.
    This update has counting updates to allow faster responses on larger results
    * Added
      + API6
        - Use set_count function on data classes to speed up counting response totals
        - Validate website for user_edit
        - Use split search for search methods
          - advanced_search / search
          - search_songs
          - user_update
          - playlist_generate
      + API5
        - Use split search for search methods
          - advanced_search
          - search_songs
          - user_update
          - playlist_generate
      + API4
        - Use split search for search methods
          - advanced_search
          - search_songs
          - user_update
          - playlist_generate
      + API3
        - Use split search for search methods
          - advanced_search
          - search_songs
Eric Schirra's avatar Eric Schirra (ecsos) accepted request 1216640 from Eric Schirra's avatar Eric Schirra (ecsos) (revision 128)
- Update to 6.6.4
  Ampache6 will now go into a semi frozen state and will only be
  updated to match API changes in Ampache7.
  * Added
    - Delete all additional Ampache7 preferences on database update
    - Backport Ampache7 Search class to handle API updates
  * Fixed
    - Don't show track number header when not displaying song track numbers
    - User validation wasn't cleared after activation
    - Localplay preference displayed as bool types
    - Found some missing preferences for validation
    - Error on site_title and api_always_download insert when missing
    - Validate website on User update and create functions
    - Validate website on Label update
    - Validate website on Podcast update
    - Added checks for some file handles to make sure they're valid first
    - Fix up docstrings in a few areas
  # API 6.6.4
    Merge update from Ampache7.
    This update has counting updates to allow faster responses on larger results
    * Added
      + API6
        - Use set_count function on data classes to speed up counting response totals
        - Validate website for user_edit
        - Use split search for search methods
          - advanced_search / search
          - search_songs
          - user_update
          - playlist_generate
      + API5
        - Use split search for search methods
          - advanced_search
          - search_songs
          - user_update
          - playlist_generate
      + API4
        - Use split search for search methods
          - advanced_search
          - search_songs
          - user_update
          - playlist_generate
      + API3
        - Use split search for search methods
          - advanced_search
          - search_songs
  * Changed
    - Rename API-CHANGELOG.md => CHANGELOG-API.md
Eric Schirra's avatar Eric Schirra (ecsos) accepted request 1205064 from Eric Schirra's avatar Eric Schirra (ecsos) (revision 127)
- Update to 6.6.3
  * Fixed
    - Translating incorrect values for default preferences
    + User uploads
      - Don't delete the album_artist from the post array when updating
      - Update process not updating album version or release_status
    - Order of catalog verify by update_time may ruin the order when updating
- Changes from 6.6.2
  * Added
    - Check the user is admin when deleting activities
    - Verify http_referer before delete actions
    + Database 600076
      - Add ui option ('api_always_download') Force API streams to download.
        (Enable scrobble in your client to record stats)
      - Ad more downgrades for Ampache7 users looking to roll back
    + CLI
      - admin:updateDatabase: set and fix up preferences on update
    + Browse
      - Podcast sort by total_count
      - Label sort by active status
  * Changed
    - Play URLs cache=1 will bypass stat recording instead of converting to download
    - When updating artist data from MusicBrainz use begin-area name and fallback to area
    - Allow guest users access to the webplayer
    - Allow upload user to edit mbid fields on objects they own
  * Fixed
    - Browse trim for sort could leave a ,
    - Song has_info had extra select columns
    - Some tests were broken
    - Missing close on cookie disclaimer div id
    - content-length calculation for transcode
    - Admin creating a user with a duplicate email wasn't notified
    - Remove mixed parameter typing so we don't break php7.4
    - Upload owner could not use update_from_tags
    - Upload owner was not sending item values to the update functions
 # API 6.6.2
    * Added
      + API6
        - Add stats parameter to stream and download methods
          (If false disable stat recording when playing the object)
        - Respect api_always_download in stream and download methods
        - Add sorting to stats calls
        - add user object to playlist responses (owner of the playlist)
    * Fixed
      + ALL
        - index: Artist index not showing albums
Eric Schirra's avatar Eric Schirra (ecsos) accepted request 1198058 from Eric Schirra's avatar Eric Schirra (ecsos) (revision 126)
- Update to 6.6.1
  * Fixed
    - Wanted items were not being added to the DB correctly
    - RSS Feeds were not including other users
    - Ambiguous column in Rating::get_highest_sql()
    - Wanted / Song_Preview items were very broken and badly sorted results
    - Don't cache additional columns for songs causing dynamic properties
    - Delete label confirmation missing ID
    - Transcoding and not transcoding with downsample_remote enabled
    - Set default value for transcode on get ('default')
    + Browse
      - Not restoring QueryType on reload of saved browse
      - Sorting users by invalid sort type
      - Dupe select in some areas (always overwrite instead of adding)
    - Highest rating SQL had ambiguous column in select
    + Plugins
      - Don't show that catalog favorites header if there isn't anything to show
    + Search
      - Stripslashes on input to fix Don't becoming Don\'t in the SQL
    + Subsonic
      - Always include cover art in search results
    + webplayer
      - Missing variable playlist_before in shuffle function
  # API 6.6.1
    This release keeps parity between Ampache7 releases by backporting the updated code.
    * Added
      + API6
        - Add maximum ID properties to handshake and ping (with auth) responses for media types
          - max_song, max_album, max_artist, max_video, max_podcast, max_podcast_episode
        - flag: add date as a parameter (set the time for your flag)
        
Eric Schirra's avatar Eric Schirra (ecsos) accepted request 1189019 from Eric Schirra's avatar Eric Schirra (ecsos) (revision 125)
- Update to 6.6.0
  * Added
    - Add maxlength to the user data fields on the registration and edit pages
    - Use autocomplete="new-password" to stop trying to autocomplete on edit pages
    - Default theme fallback to 'Dark' color scheme
    - Add users as a playlist collaborator (These users can add and remove songs from a playlist)
    - Expand user IP History to show user Agent string
    + Database 600075
      - Add collaborate to the playlist table to allow other users to add songs to the list
      - Create user_playlist_map to allow browse access to playlists with collaborate access
    + CLI
      - admin:updateDatabase: allow downgrading database from Ampache7 databases
  * Changed
    - Split out API change documentation from CHANGELOG.md to API-CHANGELOG.md
    - Simplify and speed up playlist access checks by sending the user object
    - User IP history will always group duplicates values
    - Don't notify that items are added in the WebUI when nothing was added
    - Users will see additional playlists if they are added as a collaborator
    - Don't notify that items are added to a playlist in the WebUI when nothing happened
  * Removed
    - Don't track user IP from stream URL access
  * Fixed
    - AutoUpdate preferences were not being saved, respected or updated
    - Total table counts for artists didn't include all artists
    - Check valid playlist / search on random actions
    - Autoupdate version check tweak for empty latest version
    - XSS scenarios that a user could create (and some admin ones as well)
    - URL encode name parameters for links
    - User IP history page didn't show what you expected and was very confusing
    - Edit search and playlist pages not reloading the user list
    - Missing table check for database update 500006
    - Over-escaped playlist name when saving from smartplaylist
    - Skip caching missing files
    - Browse albums by name_year not splitting columns for sorting
  # API 6.6.0
    * Added
      + ALL
        - Track user IP on handshake and ping calls
        - playlist_edit: separate error when the playlist doesn't exist
      + API6
        - New Method: playlist_hash (Get the MD5 hash of the playlist without getting the whole object)
        - Add md5 to responses. (Hash objects in the response before slicing and limiting)
        - Add md5 property to playlist objects. (Hash of song objects in the response)
        - Add username property to handshake and ping (with auth) responses to workaround missing usernames in token auth
        - Add has_access property to playlist objects. (Can edit the playlist if true)
        - Add has_collaborate property to playlist objects. (Can add and remove songs to the playlist if true)
        - Add last_update property to playlist objects. (Time a playlist changed.
          Smartplaylists do not change based on returned songs)
        - Add object_type and object_id property to shout objects
    * Changed
      + API6
        - playlist_edit: Add songs if you're a collaborator and ignore edit parameters if you fail has_access check
        - catalog_add: Do not return an object. (We return a single item)
        - bookmark_create: Do not return an object. (We return a single item)
    * Fixed
      + ALL
        - User preferences were not initiated and the server preferences would overwrite differences
        - Api::set_user_id function sending an int instead of a user
        - Some responses that include users not checking the user is valid
      + API6
        - JSON: Send empty array for missing single item methods
        - lost_password: function name incorrect
        - flag: id smartplaylists correctly
        - rate: id smartplaylists correctly
        - albums: Browse user may not be set
        - podcast_episodes: Browse user may not be set
Eric Schirra's avatar Eric Schirra (ecsos) accepted request 1179684 from Eric Schirra's avatar Eric Schirra (ecsos) (revision 124)
- Update to 6.5.0
  * Added
    - Translations 2024-06
    - Add playlist_search as a browse type. (combined playlists and smartlists)
    - Allow sorting playlists by type, rating and item count
    - Allow sorting searches by type, limit, rating and random status
    - Ensure catalog is available on media browses
    - Add many missing database columns to browse sorts and filters on all browses
    - Show ratings on smartplaylist objects in the WebUI
    - Add a permalink in the search form to allow people to share or bookmark a search
    + Database 600073
      - Add indexes to object_count
      - Drop and recreate tmp_browse to allow InnoDB conversion
      - Add last_count to the playlist table
      - Use InnoDb for all tables by default on new installs
  * Changed
    - Extract the Query class into individual classes
    - Album browse artist was only selecting album_artist
    - Check a session exists before trying to insert it
    - Check theme with glob instead of reading file paths using opendir
    + Subsonic
      - Convert getPlaylists process to a browse
  * Removed
    - Remove disk sort from album browse
    - Remove album sort from artist browse
    - Remove call_sign and frequency from live_stream browses (whatever they were)
  * Fixed
    - Fixed search rule JS showing the wrong lists id's in select items
    - catalog browses using incorrect column
    - artist browse by song_artist wasn't in the valid list
    - Missing video browse filters on clip, movie, personal_video,
      tvshow, tvshow_season and tvshow_episode browses
    - Random (rand) was missing from a lot of query types as a valid option
    - For searches, random sort was random sorting the sql and
      ignoring the random column (use rand for random result sorting)
    - Icon text spacing was out of alignment on some object pages
    - Sort before any other browse action in case you delete the joins
    - phpmailer error info parameter is a property
    - Stream::delete_now_playing query didn't work
    - Transcode format checks were overwriting bitrate and format parameters
    - Playlist::get_media_count() was ignoring other media types
    - Don't show an update notification when the latest version is missing or matches
    - Check for valid numeric numbers on tags for rating during import
    + Subsonic
      - Chat messages couldn't be added to the public chat
    + CLI
      - Check catalog path is readable on updateCatalog actions
      - Don't try to clean a file if it wasn't valid media
      - Runtime error when importing new genre tags
  # API 6.5.0
    * Added
      + API6
        - Add songartists to all album data responses. 
          (In an album artists=album_artists, songartists=song_artists)
        - artist_albums: add album_artist as an optional parameter
        - get_indexes: add catalog, album_artist and song_artist as possible type values
        - list: add catalog and song_artist as possible type values
    * Changed
      - Reset any existing browse when calling Api::getBrowse()
      - Filter duplicate search names outside of the data classes and filter on browses
      + API6 methods converted to Browse
        - artist_albums
        - artist_songs
        - browse (catalog types)
        - catalogs
        - followers
        - genre_albums
        - genre_artists
        - genre_songs
        - get_indexes (catalog and playlist types)
        - index (catalog and playlist types)
        - label_artists
        - license_songs
        - list (playlist types)
        - playlists
        - podcast_episodes
        - stats (random playlist types)
        - user_playlists
        - user_smartlists
      + API5 methods converted to Browse
        - get_indexes (playlist types)
        - playlists
        - stats (random playlist types)
      + API4 methods converted to Browse
        - get_indexes (playlist types)
        - playlists
    * Fixed
      + ALL
        - html_entity_decode include, items and tracks parameter for applicable methods
        - Rating and flag data for smartlists was using incorrect id
        - playlist_edit: track insert broken by removing table constraint
        - playlist_edit: workaround sending owner username instead of ID
        - playlist_add_song: When using unique_playlist don't grab the whole playlist
      + API6
        - list: sorting was by id instead of name
        - browse: sorting was by id instead of name
        - download: The API can use searches as playlists so check for the smart_ prefix
        - stream: The API can use searches as playlists so check for the smart_ prefix
        - Respect album sort preferences in all album object responses
        - Add cond and sort parameters to browse methods
          - album_songs
          - albums
          - artist_albums
          - artist_songs
          - artists
          - browse
          - catalogs
          - followers
          - genre_albums
          - genre_artists
          - genre_songs
          - genres
          - get_indexes
          - index
          - label_artists
          - labels
          - license_songs
          - licenses
          - list
          - live_streams
          - playlists
          - podcasts
          - podcast_episodes
          - shares
          - songs
          - user_playlists
          - user_smartlists
Eric Schirra's avatar Eric Schirra (ecsos) accepted request 1171747 from Eric Schirra's avatar Eric Schirra (ecsos) (revision 123)
- Update to 6.4.0
  This update has became quite large and work to make sure this
  branch stays stable for the long term will continue.
  * Check your config file encode_args
    First up there is some manual work for you if you've enabled for transcoding.
    Double check your config and remove the K from %BITRATE%K.
    Transcoding commands are sent in bytes so adding a K to the command multiplies it by 1000!
  * Added
    - Translations 2024-05
    - rtrim slashes on some config variables in case you ignore the warning
    + Database 600070
      - Allow signed user column for broadcast, player_control,
        session_stream, share, user_activity, user_follower and user_vote tables
      - Revert unique constraint playlist_track_UN on playlist_data table
      - Extend generator column on podcast table to 128 characters
      - Convert object_type to an enum on playlist_data table
    + Config version 71
      - Fix up bitrate encode_args
      - Add api_debug_handler run api commands without exception handling (At your own risk!)
      - Wrap default string config options in quotes
      - Add a note about using a secure cookie prefix
  * Changed
    - Stream Random action default fallback to song
    - Allow using tmp_dir_path for Dropbox catalog
    + Subsonic
      - Song file path is now always the original full file path
      - This was a relative path that was changed with transcoding meaning the path never existed.
    + Random search (random.php?action=advanced) artist and album
      actions have been changed to use their object rules
      - The returned results are still song objects but the searches are done using their rule set
  * Fixed
    - Always get the current file size when downloading the raw file
    - AlbumDisk errors on unknown items
    - Album names being overwritten with artist names when missing tags
    - Regenerate playlist track numbers correctly for the full list
    - Also check the bitrate when transcoding instead of just formats
    - Don't use cached files if the bitrate doesn't match transcode_rate
    - Default config encode_args are putting bitrates into millions
    - URL links generated with & that were causing errors
    - Song license display
    - Check Stream_Playlist::media_to_url() to ensure valid media
    - File naming fixes to stop matching year on 1080p
    - ObjectTypeToClassNameMapper missing tvshow class
    - Allow composer stan to run on Windows
    - Filter Random and Trending sections for catalog filters on dashboards
    - MusicBrainz lookups on Wanted files
    - Don't try to get playlist items when it's not a valid list
    - Send a 416 HTTP response when trying to stream past the end of a song
    - Stream_playlist columns could be inconsistent with different media types in a list
    - Compare Ampache version string is actually higher using version_compare()
      instead a not equals comparison
    + webplayer
      - Send the Song time to the player to stop all these wild numbers
    + Subsonic
      - Sending a User as an array instead of Users
  # API 6.4.0
    There is a new config option called api_debug_handler. This will instruct the server to run api commands without exception handling. Very useful for API devs and not recommended for anyone else.
  * Added
    + API6
      - Downgrade any API7 calls to API6 wiki
      - New Method: player (Inform the server about the state of your client player)
        - Returns now_playing state on completion
      - download: add bitrate parameter
      - playlists: add include parameter (note this can be massive and slow when searches are included)
  * Changed
    + API6
      - Do not translate API errorMessage strings ampache.org
  * Fixed
    + ALL
      - Download method format parameter didn't have a fallback value
    + API4
      - playlist: error check for missing/deleted playlists
      - playlist_songs: error check for missing/deleted playlists
    + API6
      - Playlists objects would not return duplicates items if allowed
      - has_art property missing from songs and albums
      - playlist_add: couldn't add a single item
Eric Schirra's avatar Eric Schirra (ecsos) accepted request 1160957 from Eric Schirra's avatar Eric Schirra (ecsos) (revision 122)
- Update to 6.3.1
  * Added
    - Added an option to clean a folder path on the Show Catalogs page
  * Changed
    - Show full playlist names on the personal favorite plugins (missing username)
    - Block direct stream for shared file when share is disabled
  * Removed
    - Config options write_id3 and write_id3_art don't do anything so remove them
  * Fixed
    - Add missing album name through browser Media Session API
    - Fixed PHP caching false values when expecint an int
    - Typo for disabled song display
    - Show the count of returned art in the log
    - Don't show private playlists on browse or direct link if you don't have access
    - Refresh Democratic playlist on vote removal, and clear the votes on clear all
    - Preference text box possible XSS
    + Search
      - Added some documented aliases for rules that were missed
      - Fixed NOT SOUNDS LIKE responses
      - Don't scrub search input in the SQL (parameters are sanitized)
      - Rule input XSS in JS
    + Subsonic
      - Array not set on some items in JSON responses
  * API 6.3.1
    + Added
      - API6
        - New Method: now_playing (Get what is currently being played by all users.)
Eric Schirra's avatar Eric Schirra (ecsos) accepted request 1157654 from Eric Schirra's avatar Eric Schirra (ecsos) (revision 121)
- Update to 6.3.0
  * Added
    - Translations 2024-03
    - Lots more static typing on missing function returns
    - Dynamic properties on the Captcha classes
    - Add opml import (and export) for podcasts
    + Database 600060
      - Update Last.FM plugin preferences that could be incorrect
      - Spell category and subcategory correctly
      - Add unique constraint playlist_track_UN on playlist_data table
      - Remove Flattr plugin (Service has been discontinued)
      - Convert object_type to an enum on image, rating, user_flag, user_activity, object_count, share, cache_object_count tables
  * Changed
    - Split database updates into small migration classes
    - Change usage of State in podcast_episode pages for Status
    - Song additional metadata classes have been updated
    - When searching art limit results per-plugin instead of total results
    - Extend valid Share objects
    - Update composer scripts and checks
    - Don't send a cached file that does not match a requested target format
  * Removed
    - Flattr service has shut down, so remove the plugin
    - php cs-sniffer from the project root and scrutinizer
  * Fixed
    - Catalog Filters could not be edited after creating
    - Catalogs were not cleaned up from the catalog_filter_group_map table
    - Wanted errors on an empty global user
    - Public users can not cache playlist browses
    - Last.FM plugin errors with preferences and linking accounts
    - Fix up localplay commands for Kodi/XBMC clients
    - Playlists were sorting by object type
    - User::get_user_data was not putting the default return in correctly
    - Unable to use bin/cli export:playlist undefined method
    - Playlist had some issues adding songs
    - Localplay and jukebox mode improvements (VLC and XBMC)
    - Don't search for wanted albums on an invalid artist
    - Browse filtering for album artist and song artist in certain situations
    - Don't send an empty query to the database
    - Remove stray span and use valid lang value on installer pages
    - Updating array preferences
    - Showing favicon
    - Publication date of RSS feeds
    + Search
      - Rule inputs were being json encoded twice
      - Genre search joining catalogs when they're not needed
    + Static typing errors
      - Updating album data when original_year is missing
      - Template show_recently_played with a non-database song
      - Use isNew() to check for valid objects to avoid type errors
      - Check for valid media before zip operations
    + Subsonic
      - Data for starred results was not always an array
      - Send correct art respecting show_song_art again
  * API 6.3.0
    + Added
      - API6
        - New Method: search_group (return multiple object types from a single set of search rules)
        - New Method: search (alias for advanced_search)
        - New Method: user_playlists (return user playlists and does not include smartlists)
        - New Method: user_smartlists (return user smartlists (searches) and does not include playlists)
        - New Method: playlist_add (add songs to a playlist, allowing different song parent types)
        - New Method: index (replaces get_indexes with a simpler list of id's. children can be included)
        - Add has_art parameter to any object with an art url
        - Add avatar url to user objects
    + Changed
      - API6
        - playlist_add_song: depreciated and will be removed in API7 (Use playlist_add)
        - share_create: add more valid types ('playlist', 'podcast', 'podcast_episode', 'video')
        - user: make username optional
    + Fixed
      - ALL
        - Userflag wasn't sending bool when cached in the database
        - Admin would always get everyones playlists when filtering
        - Stream methods would not send the bitrate correctly
      - API4
        - playlists method not respecting like for smartlists
      - API5
        - playlists method not respecting like for smartlists
      - API6
        - playlists method not respecting like for smartlists
        - playlist_edit method will decode html , separators
  * Pull requests this release
    - Split the Update.php class into small migration classes (#3767)
    - Correct some type issues (#3770)
    - subsonic: do not send a different cover id for each song of the same album (#3768)
    - Use "Status" string rather than "State" which can be confused by Country (#3769)
    - Add opml import for podcasts #3737 (#3772)
    - Correct/Update some type hints related to recent stan errors (#3773)
    - Remove some unused code (#3774)
    - Fix #3778 (#3780)
    - Remove Flattr support (#3782)
    - Correct song metadata creation (#3777)
    - XBMC localplay improvements (#3783)
    - Correct doubled array index (#3784)
    - Solve an annoying api related type issue (#3785)
    - Remove unused imports (#3786)
    - Remove MetadataFieldRepository::findAll (#3787)
    - Correct some type issues due to the recent phpstan update (#3788)
    - Remove usages of Podcast::update() (#3789)
    - Try to bring back the scrutinizer code coverage (#3790)
    - Set scrutinizer memory-limit to indefinite (#3791)
    - Localplay and jukebox mode improvements ( Vlc and Xbmc ) (#3794)
    - Extract playlist import from Catalog_local (#3795)
    - Re-arrange the tag-count retrieval query (#3797)
    - Add ShareRepository and begin migrating some static methods (#3796)
    - Move podcast episode download limit retrieval into PodcastSyncer (#3799)
    - Perform some changes related to qa (#3798)
    - Remove php cs-sniffer from scrutinizer, too (#3800)
    - Vlc localplay improvements (#3802)
    - Rework the LicenseRepository (#3801)
    - Dont try to search for recommendations for invalid artists (#3805)
    - Update rector to 0.19 (#3803)
    - Replace License loading by repo-method (#3806)
    - Allow the user api method to return the current user info (#3807)
    - Replace the metadata-repositories (#3804)
    - Split up podcast-related repositories (#3808)
    - Replace all remaining usages of Core::verify_form by RequestParser (#3810)
    - Start reworking the PrivateMessageRepository (#3811)
    - Refactor Wanted- and LiveStreamRepository (#3809)
    - scrub_in all the search inputs (#3825)
    - Upgrade rector to its first major version (#3818)
    - Cleanup/Optimize some qa-related settings (#3821)
    - Correct a bunch of type issues (#3822)
    - Start replacing podcast-episode properties with getters (#3823)
    - Define defaults for democratic playlist properties (#3826)
    - Start the implementation of a BaseRepository and a generic ModelInterface (#3819)
    - Add tests for BookmarkRepository (#3820)
    - Add ImageRepository (#3824)
    - Prepare the WantedRepository to extend BaseRepository (#3828)
    - Extract missing-artist retrieval from Wanted (#3829)
    - Align Catalog properties types to the database columns (#3832)
    - don't query an empty query (#3835)
    - Extract cleanup methods from Art-class (#3827)
    - Add tests for LabelRepository (#3831)
    - Really show default favicon by default (#3842)
    - Replace the f_file and f_full_title properties by a method (#3836)
    - Extract more wanted-logic into separate classes (#3837)
    - Move database-related methods from Share into ShareRepo (#3838)
    - Extract the creation of new share-items (#3840)
    - Move some more methods from Artist/Album into their repos (#3843)
    - Remove stray span and use valid lang value on installer pages (#3849)
    - Fix the publication date of RSS feeds. (#3861)
    - Remove genre and stream from useractivity deletion (#3866)
Eric Schirra's avatar Eric Schirra (ecsos) accepted request 1150802 from Eric Schirra's avatar Eric Schirra (ecsos) (revision 120)
- Adjustments patch macro for rpm 4.20.
Eric Schirra's avatar Eric Schirra (ecsos) accepted request 1137709 from Eric Schirra's avatar Eric Schirra (ecsos) (revision 119)
- Update to 6.2.1
  * Added
    - Translations 2024-01
    - Add podcast opml export to the podcasts page
    - Advertise WebPlayer song info via MediaSession API / MPRIS
  * Changed
    - Replace all remaining occurrences of FILTER_SANITIZE_STRING
    - Enable user_no_email_confirm to disable email requirements for user registration. (When mail_enable is false registration was blocked)
    - Verify catalog by song instead of album
    - Catalog verify will now use the config option catalog_verify_by_time and only check songs not updated since the last full verify
    - Don't update counts and collect garbage after updating individual songs
    - PlayAction stream_select will now block until there is data
  * Fixed
    - Skipping non-songs would create a runtime error
    - db update_600005 shouldn't use $album->get_fullname which changed in update_600027
    - Upload page showing non-uploads
    - Showing extra title for podcasts
    - Captcha image generation
    - Registration check logic
    - Search error loading empty rules
    - Add from path on the catalog admin page
    - Reading tags on bad files would load the bad tags
    - Stop trying to read bad files before loading tags
    - Catalog update dates were set when the process was finished which negates update_time checks
    - Song update_time wasn't allowed to update
    - Check update_time in Catalog::count_table sql so you only verify what you need to
    - Transcode can't use range in headers
    - Empty result error on Stats::get_object_count
    + Subsonic
      - Search2 and Search3 ignored musicFolderId
  * API 6.2.1
    - NO CHANGE
Eric Schirra's avatar Eric Schirra (ecsos) accepted request 1134615 from Eric Schirra's avatar Eric Schirra (ecsos) (revision 118)
- Update to 6.2.0
  * Added
    - Translations 2023-12
    - Allow translations for plugin names
    - GitHub action to lint master and develop branches for php7.4
    - Lots of code test coverage
    - Allow sharing podcast_episode objects
    - Add refresh button to the rightbar and some of the ajax index modules
    - Hide the filterbox when your browse can't use it
    + Database 600049
      - Set correct preference type for use_play2
      - Add user preference jp_volume, Default webplayer volume
      - Add system preference perpetual_api_session, endless api sessions. (AT YOUR OWN RISK)
      - Add column last_update and date to search table
      - Add user preference home_recently_played_all, Show everything in the now playing box
      - Add user preference show_wrapped, Access your personal "Spotify Wrapped" from your user page
      - Add date column to rating table
      - Update link for FMPL license
  * Changed
    - Upgrade phpunit to version 10
    - Updated codestyle rules to PSR12
    - Update php_codesniffer to 3.8
    - Static typing to all database fields
    - Update composer for ampache/ampacheapi-php dev-master
    - Allow range header on transcode streams
    - 404 error on invalid media streams
    - Use curl instead of fopen for podcast episode downloads
    - Track the date of ratings in user_activity table
    - Add a confirmation to the Clear Stats button on the catalog page
  * Removed
    - Duplicate show_playlist UI actions
  * Fixed
    - Empty global error on index page
    - Check the file/url before importing with import_playlist
    - Large docstring cleanup: remove unneeded tags and trim names
    - Correct ip history rendering in case of a invalid user
    - Make sure something is also unplayed when total_count is 0
    - Thousands of phpstan code issues
    - Can't uninstall catalog modules
    - Database updates tested from ampache-3.9.0 -> develop
    - Missing AND in play_count update SQL
    - Undefined variable and query spacing in SQL for get_uploads
    - Share options not checked correctly when creating a share
    - Dynamic properties on Tmp_Playlist and Captcha
    - Lots of checks for valid and invalid objects
    - Do not fail on plugin reinstall (just install missing preferences)
    - Failures on nullable valuse with static typing
    - Errors on user_data checks that didn't exist yet
    - Use your default album sort on browses and set it correctly
    - Filterbox bugs with playlists and labels
    - Update from tags didn't respect your tag order
    - Remote catalogs couldn't import song data correctly
    - Podcast episode downloads would be blocked from some redirects
    - get_recently_played SQL was really slow
    + Bitly plugin updated to v4 API
      - Requires a Bitly account
      - Generate a token at [(https://app.bitly.com/settings/api)]
      - Get your group_guid from https://app.bitly.com/{GROUP_GUID} 
        or Account Settings > Groups (the GUID is in the URL)
    - Add missing properties on public users. (-1)
    + Subsonic
      - Url protocol checks not compared correctly for setServer
  * API 6.2.0
    * Added
      - API: Allow non-expiring user sessions when using a header token
      - Allow endless api sessions. (You should start using http header auth to hide these)
    * Changed
      - Set default API version to 6 (was 5)
      - Allow raising and lowering response version on ping to any version
      + API6
        - Return error on handshake version failure
    * Fixed
      - ALL
        - UrlToSong couldn't handle encoded urls
      - API3
        - Video data would get an incorrect stream url
      - API5
        - bookmark_create: type is mandatory
      - API6
        - bookmark_create: type is mandatory
Eric Schirra's avatar Eric Schirra (ecsos) accepted request 1123219 from Eric Schirra's avatar Eric Schirra (ecsos) (revision 117)
- Update to 6.1.0
  * Added
    - Translations 2023-10
    - Read more tag frames for disksubtitle
    + Database 600042
      - Index label column on the label_asso table
      - Add user preference bookmark_latest, Only keep the latest media bookmark
    + Config version 69
      - Add user_create_streamtoken (Add a streamtoken to the account when a new user is created)
    + Browse
      - Sort artist by time
      - Sort album by disk, time, version
      - Sort podcast, podcast_episode, playlist and search by rating
      - Sort song by album_disk
      - Added album_disk sorting
  * Changed
    - Restore album sort links again when split by group
    - Default visibility for new playlists is public
    - Garbage collect empty labels. (Keep user-generated labels)
    + CLI
      - -t|--garbage don't collect garbage for each catalog, just do it at the end
    + Subsonic
      - Updated Apache .htaccess.dist to support Subsonic clients that don't use *.view for calls
      - createplaylist: Default visibility for new lists is public
  * Fixed
    - Header auth with a Bearer token would always fail
    - Song rows were showing album links instead of album_disk
    - Null artist time's not updating
    - Rating album_disk objects would not refresh the value
    - Creating a newalbum_disk inserting the song id instead of the album id
    - SQL generation for browse sorting with comma and space in the text
    - album_disk disk_count wasn't updated
    - AutoUpdate notifications
    - Fix a lot of code Runtime Errors
    - Handle GatherSpotify exceptions and empty results
    - Catalog was not garbage collecting the bookmarks table
    + Browse
      - Massive code quality updates to the browse/query class
      - Don't overwrite a browse box title if set
      - Sorting and filtering on works correctly
      - Genre browse page HTML div name using bad names
      - album_disk was sorting album
    + Search
      - Respect limits for subsearches again
      - search_user_id fallback for searches without a user
    + Subsonic
      - Runtime Errors when you have not done things before
  * API 6.1.0
    Two new methods have been added
    The bookmark methods have had a bit of a rework as they were not very useful
    Finally the issues with setting your auth token in the http header have been fixed
    * Added
      * API6
        - New Method: bookmark (Get single bookmark by bookmark_id)
        - New Method: lost_password (Allows a non-admin user to reset their password)
        - bookmark_create: Add include parameter (if true include the object in the bookmark)
        - bookmark_edit: Add include parameter (if true include the object in the bookmark)
        + get_bookmark
          - Add include parameter (if true include the object in the bookmark)
          - Add all parameter (if true include every bookmark for the object)
        + bookmarks
          - Add parameter client to filter by specific groups of bookmarks
          - Add include parameter (if true include the object in the bookmark)
    * Changed
      * API5
        - bookmark_edit: show error on missing bookmark instead of empty object
        - bookmark_delete: show error on missing bookmark instead of empty object
      * API6
        + get_bookmark
          - add bookmark as a valid object_type
          - Don't return single JSON bookmarks as an object
        - bookmark_create: Remove client parameter default value ('AmpacheAPI')
        + bookmark_edit
          - Remove client parameter default value ('AmpacheAPI')
          - show error on missing bookmark instead of empty object
          - add bookmark as a valid object_type
          - Don't return single JSON bookmarks as an object
        + bookmark_delete
          - Remove client parameter default value ('AmpacheAPI')
          - show error on missing bookmark instead of empty object
          - add bookmark as a valid object_type
    * Fixed
      * ALL
        - Some JSON methods with empty results would not show total_count in results
        - handshake: auth failure with header token
        - playlist_generate: Don't error when optional mode and format are not set
        - advanced_search: runtime error on empty data type
      * API4
        - Fix lots of Runtime Error's on missing optional data
      * API5
        - Fix lots of Runtime Error's on missing optional data
        - video: error type was song instead of filter
        - genre_artists, genre_albums, genre_songs: Parameter filter runtime errors
        - download: random search/playlist didn't use the id parameter
        - stream: random search/playlist didn't use the id parameter
        + bookmark_edit
          - Missing user id in data array
          - Not able to edit all bookmarks
      * API6
        - Fix lots of Runtime Error's on missing optional data
        - video: error type was song instead of filter
        - catalog_folder didn't get the group of items correctly
        - genre_artists, genre_albums, genre_songs: Parameter filter runtime errors
        - download: random search/playlist didn't use the id parameter
        - stream: random search/playlist didn't use the id parameter
        + bookmark_edit
          - Missing user id in data array
          - Not able to edit all bookmarks
Eric Schirra's avatar Eric Schirra (ecsos) accepted request 1114401 from Eric Schirra's avatar Eric Schirra (ecsos) (revision 116)
- Update to 6.0.3
  * Added
    - Translations 2023-09
    - Added refresh button on smartlists so you don't have to overwrite the rules each time
    * CLI
      - New cli command bin/cli run:addCatalog (Create a local catalog)
    * Database 600040
      - Add custom_timezone as a user preference
      - Add disksubtitle to song_data and album_disk table
    * Config version 68
      - Add date_timezone (Allow custom timezone for date formatting)
  * Changed
    - Lyrist plugin regex be a bit looser with user input and regex /api/ on the end of api_host
    - Don't try and load preferences page without a user to load
    - Check for downsample_remote conditions on song play_url generation
    - Don't downsample songs during a stream (play_url should catch this before you stream)
    - Sort album browse pages based on your album_sort preference
  * Fixed
    - Error checking user temp playlist could give you a blank index page
    - Runtime errors with missing data
    - Missing translations for language list
    - Select uploaded artists using the artist instead of song
    - Missing column in Search::get_searches SQL
    - Updating artist_map too much
    - Last.fm lookup url was missing an & for albums
    - Don't try to load an album_disk that doesn't have an album
    - Restore sorting on album lists and browses that aren't grouped by release_type
    - Catch Spotify runtime error on retry as well as initial attempt
  * API 6.0.3
    * Added
      - API5::playlist_songs: Add random to get random objects filtered by limit
    * Fixed
      * ALL
        - handshake: runtime errors with bad username
        - handshake: Don't error on empty data counts
        - ping: Don't error on empty data counts
      * Api6
        - list: searches were missing from playlists
        - browse: XML returned a list instead of a browse object
Eric Schirra's avatar Eric Schirra (ecsos) accepted request 1108340 from Eric Schirra's avatar Eric Schirra (ecsos) (revision 115)
- Update to 6.0.2
  * Added
    * Plugins
      - Lyrist Lyrics (https://github.com/asrvd/lyrist)
  * Changed
    - Don't require catalog access to upload songs.
      (Ignore catalog_filter for upload actions)
  * Fixed
    - Correct stream get_base_url
    - Database 600037 missing interactor check for the web updater
    - Avoid Orphan album artist when song has empty albumartist tag
    - Various runtime errors with missing data during session timeouts
    - Admin page 'browse uploads' didn't need to be so strict
    - Show album edit button on uploads correctly
    - get_uploads_sql for artists could miss mapped artists
    - Only show user playlists on user page (public only if you aren't an admin)
    - Don't show admin user page (-1)
    * Search
      - ArtistSearch: Joins for songrating and albumrating were missing
  * API 6.0.2
    - NO CHANGE
Eric Schirra's avatar Eric Schirra (ecsos) accepted request 1108017 from Eric Schirra's avatar Eric Schirra (ecsos) (revision 114)
- Update to 6.0.1
  * Fixed
    - Check for duplicate ports in stream URL's
    - Songs and podcast_episodes with ABR being overwritten with VBR
  * API 6.0.1
    * Changed
      * API6 XML
        - get_similar: return song objects to match json
    * Fixed
      * API6
        - user_preference: returned array instead of object
        - system_preference: returned array instead of object
        - preference_create: returned array instead of object
        - preference_edit: returned array instead of object
Eric Schirra's avatar Eric Schirra (ecsos) accepted request 1106235 from Eric Schirra's avatar Eric Schirra (ecsos) (revision 113)
- Update to 6.0.0
  There are too many changes to list here.
  Please see her:
  https://github.com/ampache/ampache/releases/tag/6.0.0
- Copy composer_old.json to composer.json in get-source.sh,
  because composer.json only supports php 8.2
Eric Schirra's avatar Eric Schirra (ecsos) accepted request 1099027 from Eric Schirra's avatar Eric Schirra (ecsos) (revision 112)
- Update to 5.6.2
  * Added
    - Fork https://github.com/scaron/prettyphoto and update for jquery3
    + CLI
      - New cli command bin/cli show:version (Print the Ampache version number)
  * Removed
    - Replace scaron/prettyphoto with fork to allow updates
  * Fixed
    - Checking for git updates without a forced branch
    - Update webplayer to fix a longstanding Google Chrome issue with playing flac
    - Being unable to view all your catalogs in the filter box
    - Prettyphoto would rewrite your link when clicking on pictures
    - Don't show an empty filter box if there are no valid filters
    - Some dynamic class properties
    - Beets catalog actions
    - Remote catalog and Subsonic catalog streaming
  * API 5.6.2
    + Fixed
    - ALL
      - Require and set a valid version for api_force_version
Eric Schirra's avatar Eric Schirra (ecsos) accepted request 1087793 from Eric Schirra's avatar Eric Schirra (ecsos) (revision 111)
- Update to 5.6.1
  * Added
    - Simplified transcode settings checks
  * Changed
    - Clean up the PlayAction class to make it a bit less complicated
    - Encode URL's with a + for segmented play urls
  * Removed
    - Soundcloud catalogs
  * Fixed
    - mptre/php-soundcloud has been removed from github
    - Podcast Episode download link
    - Filtering passwords in some places before hashing
    - Catalog caches delete and add immediately when changed
  * API 5.6.1
    - NO CHANGE
Displaying revisions 1 - 20 of 130
openSUSE Build Service is sponsored by