0.2.1.0 current version, released on: 2024-12-15
-
Fixed: Misinterpreted true Booleans values. This caused various isXXX properties like isPlaying to stop working.
0.2.0.0 released on: 2024-12-07
-
New: Builds with foobar2000 SDK 2024-08-07.
-
New: Updated WebView2 component to 1.0.2849.39.
-
New: Templates can contain iframes. Take a look at the included Default-FrameTemplate.html example.
-
New:
-
Methods
-
readAllText(filePath, codePage): Reads a file and returns it as a string. If codePage is 0 the file is assumed to be UTF-8 encoded.
-
readImage(filePath): Reads an image file and returns it as a Base64 string. (alpha2)
-
readDirectory(directoryPath, searchPattern): Reads a directory and returns the matching items as a JSON string. (alpha3)
-
getPlaylistName(playlistIndex): Gets the name of a playlist. (alpha2)
-
setPlaylistName(playlistIndex, name): Sets the name of a playlist. (alpha2)
-
findPlaylist(name): Returns the index of the playlist with the specified name. (alpha2)
-
getPlaylistItemCount(index): Gets the number of items in a platlist. (alpha2)
-
getFocusedPlaylistItem(playlistIndex): Gets the index of the focused item in a playlist. (alpha2)
-
setFocusedPlaylistItem(playlistIndex, name): Sets the index of the focused item in a playlist. (alpha2)
-
ensurePlaylistItemVisible(playlistIndex, itemIndex): Ensures the specified item of a playlist is visible. (alpha2)
-
isPlaylistItemSelected(playlistIndex, itemIndex): Returns true if the specified item of a playlist is selected. (alpha3)
-
executePlaylistDefaultAction(playlistIndex, itemIndex): Executes the default action on the specified item of a playlist. (alpha2)
-
createPlaylist(playlistIndex, name): Creates a new playlist with the specified name and inserts it after the specified playlist. (alpha2)
-
addPath(playlistIndex, itemIndex, filePath, selectAddedItem): Adds an item to the specified playlist after the specified item using a file path and optionally selects it. (alpha3)
-
duplicatePlaylist(playlistIndex, name): Duplicates the specified playlist and sets its name. (alpha2)
-
getPlaylistItems(playlistIndex): Returns the items of the specified playlist as a JSON string. (alpha3)
-
selectPlaylistItem(playlistIndex, itemIndex): Selects the specified item in a playlist. (alpha3)
-
deselectPlaylistItem(playlistIndex, itemIndex): Deselects the specified item in the specified playlist. (alpha3)
-
getSelectedPlaylistItems(playlistIndex): Returns the selected items of the specified playlist as a JSON string. (alpha3)
-
clearPlaylistSelection(playlistIndex): Clears the selected items in the specified playlist. (alpha2)
-
removeSelectedPlaylistItems(playlistIndex): Removes the selected items from the specfied playlist. (alpha3)
-
removeUnselectedPlaylistItems(playlistIndex): Removes the unselected items from the specfied playlist. (alpha3)
-
removePlaylistItem(playlistIndex, itemIndex): Removes the specified item from the specified playlist. (alpha3)
-
clearPlaylist(playlistIndex): Removes all items from the specified playlist. (alpha2)
-
deletePlaylist(playlistIndex): Deletes the specified playlist. (alpha3)
-
createAutoPlaylist(playlistIndex, name, query, sort, flags): Creates an auto playlist. Possible values for flags are 0 = default, 1 = Keep sorted). (alpha2)
-
isAutoPlaylist(playlistIndex): Returns true if the specified playlist is an auto playlist. (alpha2)
-
Properties
-
playlistCount: Returns the number of playlists. (alpha2)
-
activePlaylist: Gets or sets index of the active playlist. (alpha2)
-
playingPlaylist: Gets or sets index of the playing playlist. (alpha2)
-
isAutoPlaylist: Returns true if the specified playlist is an auto playlist. (alpha2)
-
playbackOrder: Gets or sets the playback order (0 = default, 1 = repeat playlist, 2 = repeat track, 3 = random, 4 = shuffle tracks, 5 = shuffle albums, 6 = shuffle folders). (alpha2)
-
Callbacks
-
onPlaylistItemsAdded(playlistIndex, startindex, locations): Called when items have been added to the specified playlist. (alpha5)
-
onPlaylistItemsReordered(playlistIndex, items): Called when the items of the specified playlist have been reordered. (alpha5)
-
onPlaylistItemsRemoving(playlistIndex, removedItems, newCount): Called when removing items of the specified playlist. (alpha5)
-
onPlaylistItemsRemoved(playlistIndex, removedItems, newCount): Called when items of the specified playlist have been removed. (alpha5)
-
onPlaylistItemsModified(playlistIndex, items): Called when some playlist items of the specified playlist have been modified. (alpha5)
-
onPlaylistItemsModifiedFromPlayback(playlistIndex, items): Called when some playlist items of the specified playlist have been modified from playback. (alpha5)
-
onPlaylistItemsReplaced(playlistIndex, items): Called when items of the specified playlist have been replaced. (alpha5)
-
onPlaylistItemEnsureVisible(playlistIndex, itemIndex): Called when the specified item of a playlist was ensured to be visible. (alpha4)
-
onPlaylistCreated(playlistIndex, name): Called when the specified playlist has been created. (alpha4)
-
onPlaylistRenamed(playlistIndex, name): Called when the specified playlist has been renamed. (alpha4)
-
onPlaylistActivated(oldPlaylistIndex, newPlaylistIndex): Called when the active playlist is changed. (alpha4)
-
onPlaylistLocked(playlistIndex): Called when the specified playlist has been locked. (alpha4)
-
onPlaylistUnlocked(playlistIndex): Called when the specified playlist has been unlocked. (alpha4)
-
onPlaylistSelectedItemsChanged(playlistIndex, selectedItems): Called when the selected items of the specified playlist have been changed. (alpha5)
-
onPlaylistFocusedItemChanged(playlistIndex, fromItemIndex, toItemIndex): Called when the focused item of the specified playlist has been changed. (alpha4)
-
onPlaylistsReordered(playlistOrder): Called when the playlists have been reordered. (alpha5)
-
onPlaylistsRemoving(removedPlaylists, newCount): Called when playlists are being removed. (alpha5)
-
onPlaylistsRemoved(removedPlaylists, newCount): Called when playlists have been removed. (alpha5)
-
onDefaultFormatChanged(): Called when the default format has been changed. (alpha4)
-
onPlaybackOrderChanged(playbackOrderIndex): Called when the playback order has been changed. (alpha4)
-
Fixed: Booleans in objects are now parsed correctly. (alpha4)
-
Fixed: Boolean parameters and return values are true Javascript booleans now. (alpha4)
-
Improved: The searchPattern parameter is now optional in ReadDirectory() and defaults to "\*.\*". (alpha4)
-
Improved: The CreateAutoPlaylist() sort and flags parameter can be omitted. They default to "" and 0 respectively. (alpha4)
-
Changed: Returned JSON objects now use camelCase casing. (alpha4)
-
Changed: *Breaking Change* Callbacks follow the Category-Noun-Verb naming convention. (alpha5)
-
Changed: *Breaking Change* All properties, methods and callbacks to use camelCase convention. (alpha5)
-
Changed: *Breaking Change* The parameter list of most callbacks has been expanded. (alpha5)
0.1.8.0 released on: 2024-08-10
-
New: The Fluent scrollbar style can be disabled.
-
The component needs to be restarted for the change to become active.
-
Be sure to use separate user data folders when you have multiple instances that use different styles.
0.1.7.0 released on: 2024-07-14
-
New: In Private mode can be enabled in the Preferences dialog and is no longer enabled by default (alpha3).
-
New:
-
Methods
-
GetArtwork(): Gets the embedded artwork (front / back / disc / icon / artist) from the current playing item (alpha1).
-
Fixed support for other artwork types (alpha2, regression).
-
Added support for WebP images (alpha2).
-
Always returns an empty data URI in case of an error or if the specified artwork type is not available (alpha2).
-
The album art search patterns are used first. If no matching file can be found, the embedded artwork gets queried (alpha3).
-
Changed: Updated the WebView2 SDK to the latest version (alpha3).
0.1.6.0 released on: 2024-07-09
-
New: Added a setting to clear the browsing data on startup or not.
0.1.5.6 released on: 2024-07-08
-
New: Each instance of the component can have a name to easier distinguish between them.
-
New: The location of the WebView user data folder can be specified in the Preferences dialog.
-
Note: The existing folder will not be moved or deleted. The new location will only be used after restarting foobar2000.
-
New: Made the sample chunks from the foobar2000 visualization stream available to JavaScript.
-
New: The component uses the DUI and CUI foreground and background color (alpha2).
-
New: The window size can be specified in milliseconds or samples (alpha2).
-
New: The reaction alignment can be specified (alpha2) to position the window behind or ahead of the playback samples.
-
New: Added methods and properties to chrome.webview.hostObjects.sync.foo_uie_webview (alpha5):
-
Properties
-
ComponentVersion and ComponentVersionText: The version of this component as packed integer and as text.
-
IsPlaying: Gets whether playback is active.
-
IsPaused: Gets whether playback is active and in paused state.
-
StopAfterCurrent: Gets or sets the stop-after-current-track option state.
-
Length: Gets the length of the currently playing item, in seconds.
-
Position: Gets the playback position within the currently playing item, in seconds.
-
CanSeek: Gets whether currently playing track is seekable. If it's not, Seek/SeekDelta calls will be ignored.
-
Volume: Gets or sets the playback volume in dBFS. Use 0 for full volume.
-
IsMuted: Gets whether playback is muted.
-
Methods
-
Print(text): Prints text from JavaScript on the foobar2000 console.
-
Stop(): Stops playback.
-
Play(paused): Starts playback, paused or unpaused. If playback is already active, existing process is stopped first.
-
Pause(paused): Pauses or resumes playback.
-
Previous(): Plays the previous track from the current playlist according to the current playback order.
-
Next(): Plays the next track from the current playlist according to the current playback order.
-
Random(): Plays a random track from the current playlist (aka Shuffle).
-
TogglePause(): Toggles the pause status.
-
ToggleMute(): Toggles playback mute state.
-
ToggleStopAfterCurrent(): Toggles the stop-after-current mode.
-
VolumeUp(): Increases the volume with one step.
-
VolumeDown(): Decreases the volume with one step.
-
Seek(time): Seeks in the currently playing track to the specified time, in seconds.
-
SeekDelta(delta): Seeks in the currently playing track forward or backwards by the specified delta time, in seconds.
-
New: Each instance of the component uses its own browser profile.
-
Improved: WebView is a Utility panel again and can be shown as a popup (alpha5).
-
Improved: Enabled more options in WebView2 to better support dark mode (alpha3).
-
Fixed: A last-minute change (never a good thing) broke the support for multiple instances of the Preferences dialog box.
-
Fixed: Javascript example code (alpha2)
-
Fixed: Support for tracks with more than 2 channels was not implemented correctly (alpha2).
-
Fixed: The background color of the WebView is now correctly and dynamically set (alpha3).