Releases: owncloud/music
Releases Β· owncloud/music
v2.1.4
v2.1.3
Changed
- Advanced search: Enable searching albums by disk count
- Ampache API:
- Use HTML line breaks
<br />
in the lyrics to match genuine Ampache behavior - Add cache headers to the cover art responses
- Advanced search supports new rule
disk_count
for typealbum
- Use HTML line breaks
- Subsonic API:
- Add cache headers to the cover art responses
#1205 - Add OpenSubsonic extension method
getPodcastEpisode
- Add cache headers to the cover art responses
- Shiva API:
- Added endpoints
/api/random/artist
,/api/random/album
,/api/random/track
#51 - Added endpoint
/api/tracks/{id}/lyrics
#48 - Added endpoint
/api/whatsnew
- The playlists API is now mostly compatible with the Shiva specification
- Systematically use plurals in endpoint names to match the specification:
api/artists/{id}
instead ofapi/artist/{id}
etc.
- Added endpoints
- Proprietary REST API:
- Systematically use plurals in endpoint names for consistency
Fixed
- Unhandled error logged on corrupted/incompatible album cover images (now a warning is logged instead)
#1204 - Unable to play some podcasts in the default relayed mode
#1209 - Dashboard widget: Internet radio station without given name failing to load album art and showing the load indicator indefinitely
- Errors like 'Undefined array key "status_code"' logged when playing certain internet radio stations
- Ampache API: Endpoint
song
failing with code 500 when the song has no lyrics set (since v2.1.2)
#1208 - Subsonic API:
- Property
artistImageUrl
being invalid on artist when authenticated usingapiKey
- Method
getPlaylist
failing with code 500 if the playlist has any invalid song references
#1128
- Property
v2.1.2
Added
- Support for Nextcloud 31
#1198 - Support for PHP 8.4
Changed
- Denser layout for the navigation pane and actions menu on NC 30+, matching the platform style
- Ampache API: Parse and include lyrics in the response of the action
song
(but not on any other actions returning songs)
Fixed
- Dashboard widget:
- Playback controls disappearing when the playing track changes with Aurora.js backend (used when the audio format has no native browser support)
- Clicking the previously played song didn't play it again after stopping the playback with the keyboard 'stop' media key
- Internet radio:
- Stream relaying not working on some redirecting stream URLs, depending on the headers
#1194 - Stream playback failing when the stream URL has only the domain part without any path and no trailing '/' (like http://abc.somedomain.xyz)
- Stream playback failing when the given URL redirects to a playlist file containing the actual audio URL
- HTTP redirections not followed when parsing Icy-MetaData of the channel
- Stream relaying not working on some redirecting stream URLs, depending on the headers
- Layout glitches:
- Navigation items "Search" and "Settings" positioned and highlighted incorrectly on NC30+ with Chromium based browsers
- Collapsed navigation pane and corner roundings shown wrong on narrow screens on NC 30.0.5
- Ampache API: CORS problem on the endpoint
/ampache/image.php
#1199 @rstefko - Subsonic API: In JSON responses, playlist
id
was returned as integer instead of string type
#1202
v2.1.1
v2.1.0
Added
- Dashboard widget for Nextcloud
#1172 - Ampache API:
- Support for API key authentication
- Support for action
playlist_hash
- Subsonic API:
- OpenSubsonic extension
apiKeyAuthentication
, including support for argapiKey
and the new methodtokenInfo
- OpenSubsonic extension
Changed
- Renamed config.php key
music.allowed_radio_src
asmusic.allowed_stream_src
. Its default value is now an empty array[]
. - Internet radio and podcast streams are now relayed via the user's cloud instance by default. To opt out, set the config.php keys
music.relay_radio_stream
andmusic.relay_podcast_stream
asfalse
and add required sources tomusic.allowed_stream_src
.
#1035 - Documentation of the admin configuration options moved from the Settings view to the Wiki page
- Troubleshooting for Internet radio moved to the Wiki page
- Allow translating all the strings in the embedded Files player and the new Dashboard widget. Provide Finnish translations for these.
- Optimized loading of folder tree also for cases where the library root is the home folder and there is a huge externally mounted audio folder
- Prompt user to rescan modified tracks on app load if that has not happened automatically (e.g. for shared files modified by another user)
#706 - Ampache API:
- Action
get_indexes
supports alsotype=song_artist
- Actions
playlists
andplaylist
support argumentinclude
- Added fields
art
andhas_art
to thepodcast_episode
andlive_stream
result types - Added fields
username
,max_song
,max_album
,max_artist
,max_video
,max_podcast
,max_podcast_episode
to the responses ofhandshake
andping
- Added fields
md5
,has_access
,has_collaborate
, andlast_update
to theplaylist
results - For radio stations without user-supplied name, use the stream URL as a name
- Set CORS headers and enable pre-flight to allow Ample or other web app clients to connect from any domain
#1181 - Action
get_bookmark
returns an empty response instead of error if the object ID is valid but there are no bookmarks on the object - Action
get_bookmark
supports argumentall
(affects response format only, we still don't support more than one bookmark per song/episode)
- Action
- Subsonic API:
- Allow method
getOpenSubsonicExtensions
without any user authentication - When browsing by folder,
getMusicDirectory
sorts songs by file name instead of song title
#1182 - Added field
path
to all song responses
- Allow method
Fixed
- Song progress shown incorrectly in the media session integration of Chrome when playing (exotic file types) with the fallback Aurora.js player
- Track disappearing from playlists when moved to another folder within the library folder
#1173 - Scan sometimes breaking on MariaDB with "Serialization failure: 1213 Deadlock" when the cleanup task gets run on the background
#918 - In Files app, sidebar not showing playlist file contents if the list has any external URLs with no caption
- Uploaded image not used immediately as album cover when using SQLite (background job fixed this, though)
- Ampache API:
- Action
playlist_songs
returning internal error 500 if the playlist contains any broken track references - Action
download
still implicitly recording song as played even though that was supposed to change in v2.0.0 - Playlist content editing not working with the action
playlist_edit
- Actions
playlist_add
andplaylist_add_song
not working when using SQLite
- Action
v2.0.1
Added
Changed
- Subsonic API: For radio stations without user-supplied name, use the stream URL as a name
Fixed
- Favorite toggle button not working on artists with no image available
- Cover art image not used automatically upon the image file upload in some cases when PostgreSQL used
#1164
v2.0.0
Added
- Additional tabs "Albums" and "Tracks" to the artist details pane
- Additional tabs "Tracks" and "Artists" to the album details pane
- Favorite toggle to the details pane of the tracks, albums, artists, playlists, and podcasts
- New filter "Favorite" for the smart list
- OpenSubsonic extensions to the Subsonic API:
- Method
getLyricsBySongId
- Property
sortName
to all artist, album, and song responses - Property
played
to all song responses
- Method
Changed
- Drop support for PHP versions older than 7.4 (i.e. PHP 7.1 - 7.3)
- Drop support for ownCloud versions older than 10.5 (i.e. OC 10.0 - 10.4)
- Drop support for Nextcloud versions older than 20 (i.e. NC 13 - 19)
- New design including cover art on all list-like views
- Ampache and Subsonic APIs: Check the username in case-insensitive manner
#1147 - Ampache API:
- The action
download
doesn't implicitly record the track as played (unlikestream
) (Update: This change didn't actually work, fixed in v2.1.0) - The song property
url
refers to thestream
URL instead ofdownload
URL
- The action
Fixed
- Playlist sorting not working if the list contains any broken track references
- Nextcloud.log being flooded with the debug-level message "/appinfo/app.php is deprecated" on NC20+
#1043
v1.11.0
Added
- Advanced search view
#1141 - Support for Nextcloud 29
#1132 - Ampache API:
- Option to change the session timeout with the
config.php
keymusic.ampache_session_expiry_time
#1134 - Support for the actions
search
,user
,user_playlists
,user_smartlists
,playlist_add
,index
,scrobble
- Support for the advanced search rule
bitrate
on songs
- Option to change the session timeout with the
- Subsonic API:
- Support for the method
getOpenSubsonicExtensions
- Support for the method
Changed
- Ampache API:
- Advanced search operators
matches regex
anddoes not match regex
supported also on SQLite (this is important to properly support Ample) - Advanced search operators
sounds like
anddoes not sound like
supported also on SQLite, and on PgSQL if modulefuzzystrmatch
is installed - Advanced search rules
album_genre
andartist_genre
supported also on PgSQL - Authentication tag can be delivered also using the bearer token header (required to support Ample v3)
#1140 - All results with property
art
have also the propertyhas_art
- Implicitly record the track as played with the actions
download
andstream
- Advanced search operators
Fixed
- Playlist file not playing within Files in case the first track of the list is in unsupported format
- Some Finnish translations being replaced with English (since v1.9.0)
- Error "Cannot set response code - headers already sent" logged on each played song on PHP 8.3
#1133 - Files player: Menu icon for "Import list to Music" not adjusted correctly for the dark theme
- Standard NC viewer opened instead of embedded Music player when opening file from Dashboard on NC28+
#1126 - Music app page loading randomly failing on Chrome
#1137 - Ampache API:
- API not working on ownCloud 10.14.0 (HTTP error 500 on all Ampache API calls)
#1138 - Advanced search rule
playlist_name
not being case insensitive like the other string rules - Advanced search rules
playlist
andplaylist_name
not working with SQLite - Advanced search operator
does not sound like
not working - Advanced search numeric rules (e.g.
year
,played_times
,album_count
) not working properly on SQLite - Advanced search rules
album_count
andsong_count
never finding artists whose respective count is 0 - Incorrect root node name on the actions
user_preference
anduser_preferences
- API not working on ownCloud 10.14.0 (HTTP error 500 on all Ampache API calls)
- Subsonic API:
- Method
getAlbumInfo2
response having incorrect root element name
#1125 @perillamint - On NC28+, every XML API call logged an error 'Undefined array key "" at /var/www/html/lib/private/AppFramework/Http.php#128'.
#1142
- Method
v1.10.0
Added
- Support for Nextcloud 28
#1116 - Support for PHP 8.3
- Ampache API:
- Support for argument
random
in the methodplaylist_songs
- Method
bookmark
- Support for argument
include
in all methods returning bookmarks
- Support for argument
- Subsonic API:
- Property
playCount
to song responses - OpenSubsonic API extensions:
- Properties
openSubsonic
,type
, andserverVersion
to all responses - Allow getting the whole library with an empty
query
argument insearch3
method
- Properties
- Property
- MusicBrainz link from Last.fm to the artist/album/track details pane, when available
- Filters "Recently added" and "Not recently added" for the smart playlist
#1098 - Optional "strict" mode for the history filters of the smart playlist
#1099 - Hint about the keyboard shortcuts in the Settings view and in tooltips
#1086
Changed
- Ampache API:
- Make
advanced_search
argumentsoperator
andtype
optional - On method
bookmark_create
, the argumentclient
defaults to null instead of "AmpacheAPI"
- Make
- Subsonic API: Methods
search2
andsearch3
support '*' as a wildcard - Consider also the tag names
unsynced_lyrics
andunsyncedlyrics
when parsing lyrics
#1111 @RobertZenz - Updated the getID3 library to the development version 1.9.23-202312292105
- Fixes the issue of garbage bytes being extracted from some RIFF tags
#1115
- Fixes the issue of garbage bytes being extracted from some RIFF tags
- Search within the Music app now works with an own input field in the navigation pane instead of the unified search input
Fixed
- Songs with scanned integer property value (like track number) larger than 2147483647 causing error on PostgreSQL
#1106 - Lite player in Files attempting to play also audio files with MIME types unsupported on the current browser
- Subsonic API: Use integer-type IDs in
getMusicFolders
to comply with the API specification
#1108 - Playlist details showing length as "NaN:NaN" in case the playlist contains any invalid track references