foobar2000

Releases of WebView

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).