foobar2000

Releases of Spider Monkey Panel

1.6.1 current version, released on: 2022-01-13

Hotfix for 1.6.0.
Changed
  • API changes:
    • Reverted changes in `window.NotifyOthers()` behaviour. Now it's executed synchronously as before.

Fixed
  • Fixed various bugs in the event handling system, which were causing unexpected behaviour and crashes.
  • Fixed right-mouse-btn-down and middle-mouse-btn-down events not being processed.

1.6.0 released on: 2021-09-10

Added
  • Added WIC support in image and art loaders, which enables WebP support (see FAQ for more info).
  • API changes:
    • Added `IsInternal` field to `action` argument (that is passed to `on_drag_*` callbacks).
    • Added ability to generate main menu items dynamically and handle it via the following API:
      • `fb.RegisterMainMenuCommand()`.
      • `fb.UnregisterMainMenuCommand()`.
      • `on_main_menu_dynamic()` callback.
    • Expanded playlist *undo* API:
      • `plman.Undo()`.
      • `plman.Redo()`.
      • `plman.IsUndoAvailable()`.
      • `plman.IsRedoAvailable()`.
  • Added `spectrogram seekbar.js` sample (by marc2003).

Changed
  • Reimplemented event handling system.
  • API changes:
    • `window.NotifyOthers()` is now executed asynchronously.
    • `fb.DoDragDrop()` is now executed asynchronously.
    • `on_main_menu()` callback is marked as [Deprecated]. Use dynamically generated main menu items instead.

Fixed
  • Removed unneeded writes to script package `.json`.
  • Fixed drag*n*drop sometimes not working.
  • Fixed timers not stopping when they should (<https://github.com/TheQwertiest/foo_spider_monkey_panel/issues/135>).

1.5.2 released on: 2021-08-10

Hotfix for 1.5.0.
Changed
  • Rollbacked the fix for timers from v1.5.0, since it was causing fb2k freezes (<https://github.com/TheQwertiest/foo_spider_monkey_panel/issues/135>).

Fixed
  • Fixed unicode handling in script paths.

1.5.1 released on: 2021-07-03

Hotfix for 1.5.0.
Added
  • API changes:
    • Added `plman.GetPlaylistLockName()` method.

Fixed
  • Fixed fb2k freeze that could happen when using ActiveXObject.

1.5.0 released on: 2021-06-29

Added
  • API changes:
    • Added fine-grained playlist lock control via `plman.GetPlaylistLockedActions()` and `plman.SetPlaylistLockedActions()` (<https://github.com/TheQwertiest/foo_spider_monkey_panel/issues/144>).
    • Added `utils.GetPackageInfo()` method.
    • Added `fb.Restart()` method.

Changed
  • `utils.InputBox()` now automatically resizes to fit the text (<https://github.com/TheQwertiest/foo_spider_monkey_panel/issues/71>).
  • Additional properties provided by component are no longer displayed when not set (<https://github.com/TheQwertiest/foo_spider_monkey_panel/issues/141>).
  • API changes:
    • Added `use_exact` argument to `GdiGraphics.CalcTextWidth()` to improve width calculation accuracy in certain cases (<https://github.com/TheQwertiest/foo_spider_monkey_panel/issues/140>).
    • `utils.GetPackagePath()` is marked as [Deprecated]. Use `utils.GetPackageInfo()` instead.
    • `plman.IsPlaylistLocked()` is marked as [Deprecated]. Use `plman.GetPlaylistLockedActions()` instead.

Fixed
  • Fixed various bugs and crashes in `Configure` dialog.
  • Revamped package update process to avoid potential problems when that package is being in use (<https://github.com/TheQwertiest/foo_spider_monkey_panel/issues/137>).
  • Fixed inability to import package if there are no packages installed (<https://github.com/TheQwertiest/foo_spider_monkey_panel/issues/134>).
  • `Enable drag-n-drop` checkbox value in `Configure` dialog is no longer ignored.
  • Slow script detection now works inside script-editing modals (<https://github.com/TheQwertiest/foo_spider_monkey_panel/issues/143>).
  • Fixed incorrect relative path calculation when `include` is called from methods defined in another file (<https://github.com/TheQwertiest/foo_spider_monkey_panel/issues/142>).
  • Fixed timers not stopping when they should (<https://github.com/TheQwertiest/foo_spider_monkey_panel/issues/135>).
  • Fixed various errors in `complete` samples (by marc2003):
    • Fixed crash on invalid query in auto-playlist script.
    • Thumbs script now downloads images only when the corresponding mode is set.

1.4.1 released on: 2021-02-13

Hotfix for 1.4.0.
Changed
  • Changed casing of `window.JsMemoryStats` fields for consistency with the rest of API.
  • Added indicator when panel name is overriden by the script in `Configure` dialog.
  • Improved package manager behaviour in various scenarios.

Fixed
  • Fixed various bugs in `Package` tab of `Configure` dialog.
  • Fixed sorting of package files.
  • Fixed conflict with `foo_wave_seekbar`.
  • Fixed `foo_acfu` integration.
  • Fixed data not refreshing on `Apply` in `Configure` dialog.

1.4.0 released on: 2021-02-11

Added
  • Added a brand new `Configure` dialog!
  • Added more ways to consume scripts:
    • Quick access to built-in script samples.
    • Load scripts by path.
    • Use script packages (see below for more info).
  • Implemented script package support:
    • Can contain multiple scripts and assets.
    • Can be easily exported and imported as a single file.
    • Has a package manager to view and manage all installed packages.
  • Panel name can be changed now via `Configure` dialog.
  • Default script editor can be changed now via drop-down menu of `Edit` button in `Configure` dialog.
  • Added a link to component docs to foobar2000 `Help` main menu.
  • API changes:
    • Added iterator protocol support to `FbMetadbHandleList`.
    • Added `type` argument to `FbUiSelectionHolder.SetSelection()`.
    • Added `fb.Version` property.
    • Added `utils.DetectCharset()` method.
    • Added `utils.EditTextFile()` method.
    • Added `utils.FileExists()` method.
    • Added `utils.GetFileSize()` method.
    • Added `utils.GetPackagePath()` method.
    • Added `utils.IsDirectory()` method.
    • Added `utils.IsFile()` method.
    • Added `utils.SplitFilePath()` method.
    • Added `window.DefineScript()` method.
    • Added `window.EditScript()` method.
    • Added `window.ShowConfigureV2()` method.
    • Added `window.JsMemoryStats` property.
    • Added `window.ScriptInfo` property.

Changed
  • Moved `Properties` dialog to a separate tab of `Configure` dialog.
  • `Grab focus` is now a script property and is defined via `window.DefineScript()`.
  • Extracted `Edge style` and `Pseudo-transparency` options to a separate tab of `Configure` dialog.
  • API changes:
    • `utils.FileTest()` is marked as [Deprecated]. Use new corresponding methods instead.
    • `window.ID` is now optional and unused in all methods that required it.
    • `window.DefinePanel()` is marked as [Deprecated]. Use `window.DefineScript()` instead.
    • `window.MemoryLimit`, `window.PanelMemoryUsage` and `window.TotalMemoryUsage` are marked as [Deprecated]. Use `window.JsMemoryStats` instead.
    • `window.Name` now returns panel name instead of script name. Use `window.ScriptInfo.Name` to retrieve script name.
    • `window.ShowConfigure()` is marked as [Deprecated]. Use `window.ShowConfigureV2()` to configure panel and `window.EditScript` to edit script.

Fixed
  • Fixed component crash when passing objects to `console.log()`.
  • Fixed component crash when there is a stack overflow in JS.
  • Fixed the weird image offset when using `fb.DoDragDrop()` with custom image and theming disabled.
  • Fixed `utils.ShowHtmlDialog()` not applying IE mode, when HTML code is passed directly to the method.
  • Various `ActiveXObject` fixes:
    • Errors in callbacks passed to `ActiveXObject` objects and methods are now properly propagated to the script.
    • Fixed inability to use subscripts with some `ActiveXObject` objects.
    • Added iterator protocol support to enumerable `ActiveXObject` objects.
  • Fixed various errors in `complete` samples (by marc2003).

1.3.1 released on: 2020-07-18

Hotfix for 1.3.0.
Fixed
  • Fixed `FbTooltip.SetFont()` not working.
  • Fixed a memory leak when using `window.Tooltip`.
  • Fixed task id collision in `gdi.LoadImageAsync()`.

1.3.0 released on: 2020-07-10

Added
  • Re-added ability to automatically download thumbnail images to `thumbs.js` sample (by @marc2k3).
  • Added missing documentation for `fb.GetDSPPresets()` and `fb.SetDSPPreset()`.
  • API changes:
    • Added `GdiBitmap.InvertColours()` method (by @kbuffington).
    • Added `ActiveXObject.ActiveX_CreateArray()` method.
    • Added `window.Tooltip` property.
    • Added `FbTooltip.SetFont()` method.
    • Deprecated `window.CreateTooltip()` method.

Changed
  • Updated SpiderMonkey JavaScript engine to 68.8.0 ESR:
    • ECMAScript 2019 conformant JavaScript.
    • Various performance improvements and bug fixes.
  • Adjusted a "Function failed successfully" error message (e.g. when running out of GDI handles).
  • Updated `Tooltip` sample.

Fixed
  • Fixed incorrect sorting in `FbMetadbHandleList.OrderByRelativePath()`.
  • Fixed `fb.GetDSPPresets()`: now it returns a proper value.
  • Fixed `fb.IsMainMenuCommandChecked()` not working with hidden by default menu items.
  • Fixed garbled error messages on systems with non-English locale.
  • Fixed `Replace All` action and RegExp handling in `Find/Replace` dialog.
  • Fixed crash in some of `.js` samples when deleting a file via context menu.

1.2.3 released on: 2020-02-04

Added
  • Moved documentation from Wiki to a new homepage: <https://theqwertiest.github.io/foo_spider_monkey_panel>:
    • Contains JS documentation for the latest release.
    • Contains script showcase with basic information about sample scripts and user-made scripts.
  • Updated `FindReplace` dialog in `Configure`:
    • Added wrap-around support.
    • Dialog is transparent when unfocused.
  • Made `Go to` dialog in `Configure` modeless.

Changed
  • Reimplemented `FbMetadbHandleList::OrderByRelativePath`:
    • Uses MUCH less memory.
    • Faster by 10% (on sorted list) to 500% (on unsorted list).
  • Adjusted codepage detection with various file handling methods.
  • Adjusted playlist lock check during drag-n-drop and `plman.AddLocations`: now only `playlist_lock::filter_add` flag is checked.
  • Removed unneeded `on_size` call.
  • Adjusted component initialization time reported in console to be more accurate.
  • Updated marc2003 scripts:
    • Note: `ListenBrainz` sample was removed - use <https://github.com/marc2k3/foo_listenbrainz2> instead.

Fixed
  • Fixed rare crash when using `utils.RunMainMenuCommand` and `utils.IsMainMenuCommandChecked`.
  • Fixed crash when working with COM on systems with non English locale.
  • Fixed `window.GetProperty` not working when name contained whistespace at the beggining.
  • Fixed other various crashes.
  • Fixed occasional double error report in console.
  • Fixed crashes in `jsplaylist-mod` and other complete samples (by marc2003).