v1.3.2.2
- ADD: Component now reports version on script error.
- FIX: JSplaylist/JS Smooth playlist have been unable to tag files since v1.3.0
       when foo_playcount was missing.

v1.3.2.1
- ADD: Add fb.AlwaysOnTop property. Can be used to read or write the setting. A
       new "on_always_on_top_changed" callback has been added to detect when it
       changes via any other means such as using the menu, keyboard shortcuts, etc.

v1.3.2
- FIX: Improved handling of utf8 files without BOM. This affects files loaded
       via the PREPROCESSOR section and the Configuration window>Tools>Import button.
       They should now be treated the same as files with BOM.

v1.3.1
- FIX: Fixed a bug where plman.IsPlaylistItemSelected didn't return a proper boolean
       value. Thanks to TheQwertiest for reporting.
- FIX: Fixed a bug where plman.ShowAutoPlaylistUI didn't always return the correct
       boolean value.
- CHG: plman.MovePlaylistSelection now returns a boolean value to indicate success
       or failure.
- CHG: Update docs for consistency with actual component behaviour. Some methods
       which returned useless values have been updated to return nothing.
- CHG: On failure, these now return -1
       IFbFileInfo InfoFind
       IFbFileInfo MetaFind
       IFbMetadbHandleList BSearch
       IFbMetadbHandleList Find
       plman.ActivePlaylist
       plman.CreateAutoPlaylist
       plman.PlayingPlaylist
       This could potentially break some existing scripts. See
       https://github.com/19379/foo-jscript-panel/wiki/Breaking-Changes#v131
- CHG: Remove the whole IStyleTextRender interface. Anything that uses
       gdi.CreateStyleTextRender or was based on "glow text sample.txt"
       will no longer work
- CHG: Remove these IFbPlaylistRecyclerManager properties/methods:
       Id
       FindById
       RestoreById

v1.3.0
- CHG: Support for IE7/IE8/WINE users has been dropped. Your computer
       must have IE9 or later installed.
- CHG: The "UpdateFileInfoSimple" handle and handle list methods are
       now gone.
- ADD: A new "UpdateFileInfoFromJSON" method has been added. See
       https://github.com/19379/foo-jscript-panel/wiki/Breaking-Changes#v130
       If anyone needs help with this, just ask.
- ADD: You can now create an empty handle list with fb.CreateHandleList()
       See docs\interfaces.txt

v1.2.4
- ADD: Add utils.ColorPicker which is a popup dialog for selecting colours.
       See docs\interfaces.txt, samples\basic\Color Picker.txt
- FIX: Fix various bugs in samples\complete folder.
- CHG: Listenbrainz sample now has an on/off toggle on the menu.

v1.2.3.3
- CHG: No component changes except a version bump.
- FIX: Fix typo in "musicbrainz.txt". Thanks to zeremy for spotting.
- CHG: Listenbrainz now has caching/retry support. It's my first attempt
       at this so please report any issues! I also need reports of any
       code 400 errors from the server as the script will need updating
       before these tracks can be submitted successfully.
- ADD: Br3tt's JS Smooth scripts are now bundled with the component and the
       separate repository has been nuked.

v1.2.3.2
- CHG: No component changes except a version bump.
- FIX: Listenbrainz. Fix "musicbrainz track id" not being submitted from
       m4a files.

v1.2.3.1
- CHG: No component changes except a version bump. All changes are to samples.
- ADD: Last.fm Bio, Allmusic, Listenbrainz samples. "Thumbs" can download images
       from Last.fm again but only manually.
- FIX: Most samples are now DPI aware so text/tooltips should increase inline
       with other desktop elements. For existing users, each panel script should
       be re-imported from the "samples\complete" folder.

v1.2.3
- ADD: Add fb.ReplaygainMode. Can be used to retrieve or set the value. See
       docs\interfaces.txt
- CHG: Hide JScript Panel main menu items. Given they're meant for binding to
       to keyboard shortcuts/standard buttons, there is no need for them to be
       visible. Hold Shift if you really want to access them from the menu.
- FIX: Fix MakeUnion handle list method and update docs with examples for 
       MakeUnion, MakeDifference and MakeIntersection methods.

v1.2.2
- ADD: Add new "on_main_menu" callback. 10 main menu items have been created
       meaning you can now bind them to global keyboard shortcuts, standard
       toolbar buttons, etc and have them run your own custom code. See
       docs\callbacks.txt

v1.2.1
- FIX: Fix bug where the playing item handle was never sent to the
       "on_playback_edited" callback even though the docs said it would.
- FIX: Tidy up docs and auto-complete hints for "on_metadb_changed"
       and "on_selection_changed". Specifically, "on_metadb_changed" always
       receives a "handle list" and never a "handle" as the first argument.
       "on_selection_changed" never receives a "handle" argument. This behaviour
       is consistent with WSH panel mod having the "v1.4" @feature preprocessor set
       as documented here:
       https://git.io/v9cVw
       https://git.io/v9cVD

v1.2.0.1
- CHG: Minor code cleanups but no new component features for now.
- ADD: Add Last.fm Similar Artists / Charts & Musicbrainz samples.

v1.2.0
- ADD: If your computer has IE9 or later installed, newer ECMAScript5 features
       are now available. Many thanks to TheQwertiest for discovering how to do this.
- CHG: The "Script engine" option has been removed from the "Configuration" window.
       The newer Chakra engine is always used if available but will fall back to
       JScript if not.
- ADD: utils.version reports the component version. See docs\interfaces.txt.
- CHG: Minor tweaks to Configuration window.
- FIX: Update jsplaylist-mod so it works with Chakra engine. Thanks to zeremy
       for reporting
- FIX: A previous window.RepaintRect bug reported by Wilb has now been fixed.
- FIX: Zap a few more compiler warnings.

v1.1.7
- FIX: Remove trailing space in "Console" when using fb.Trace.
- FIX: Text Reader sample. Ensure "Open containing folder" works when specifiying
       a folder rather than a full path to a file.
- FIX: Thumbs sample. Fix issue where using %profile% in the "Custom folder"
       setting would fail if the profile path contained special title formatting
       characters like %()[]'
- CHG: Remove "Delay load" from "Configuration" window.

v1.1.6.2
- FIX: plman.AddLocations: Original order of files in array is now maintained.
- CHG: plman.AddLocations: Progress dialog stays hidden for short operations.

v1.1.6.1
- CHG: Minor changes to Console logging on startup.
- ADD: The "complete" samples folder has 2 new scripts: "thumbs.txt" and "text reader.txt".
       Thumbs allows the display/cycling of multiple images in a given folder. Text reader
       displays the contents of any plain text file. Title formatting can be used to specify
       the folder/file paths.

v1.1.6
- ADD: IGdiBitmap StackBlur method. See docs\interfaces.txt and
       samples\basic\StackBlur.txt.
- CHG: Update ApplyMask sample.

v1.1.5.1
- ADD: Add "Open component folder" to default right click menu.
       This provides quick access to the docs and samples.


v1.1.5
- ADD: plman.IsPlaylistLocked(playlistIndex). See docs\interfaces.txt.
- ADD: on_playlists_changed is now called when a playlist's lock
       status changes through the use of components such as foo_utils or
       foo_playlist_attributes. See docs\callbacks.txt
- CHG: Existing samples moved in to new "basic" subfolder.
- ADD: Add new "complete" samples folder containing some more feature complete
       samples.
- ADD: Add "jsplaylist-mod". Since Br3tt's excellent JSplaylist doesn't work
       with JScript Panel, this updated "mod" version has been created.

v1.1.4.1
- FIX: Prevent old tooltips lingering after script error.

v1.1.4
- FIX: main preferences keyboard shortcuts were never processed in columns UI
       when JScript Panel had focus. More details here:
       https://github.com/19379/foo-jscript-panel/wiki/Keyboard-Shortcuts

v1.1.3
- ADD: IGdiBitmap SaveAs method.

v1.1.2
- FIX: Fix on_mouse_wheel not being called with certain trackpads.

v1.1.1
- ADD: New "on_mouse_wheel_h" callback for left/right scrolling. See docs\callbacks.txt.

v1.1.0
- CHG: GetQueryItems should be a "fb" method, not "plman".
- FIX: Fix crash when using GetQueryItems with dates as part of the query.
- CHG: Update Columns UI SDK to 6.5

v1.0.7
- ADD: fb.GetLibraryRelativePath(handle)

v1.0.6
- ADD: FbMetadbHandleList UpdateFileInfoSimple method.

v1.0.5
- CHG: Update Columns UI SDK to 6.4
- CHG: Update WTL to 9.1
- CHG: Update scintilla to 3.6.2
- CHG: Tidy up docs/samples.

v1.0.4
- ADD: utils.MapString(text, lcid, flags)

v1.0.3
- CHG: Revert previous Columns UI SDK update as I've just had foobar2000 crash.
       It did actually point at Panel Stack Splitter as the problematic
       component but I've never had an issue with it before. Given PSS acts
       as a container for other panels, I think it might be related. I don't
       have the skills to troubleshoot such an issue so the easiest thing to do
       is roll back.

v1.0.2
- CHG: Update to latest Columns UI SDK.
- CHG: Hopefully removed all traces of WSH Panel Mod
       from sources and documentation!

v1.0.1
- CHG: Update default script so you know a blank panel
       is JScript Panel as opposed to WSH Panel Mod.

v1.0.0 (Compared to WSH Panel Mod 1.5.6)
- CHG: Given the name, it obviously doesn't support VBScript.
- CHG: Due to using updated library files, support for Windows XP
       has been dropped.
- CHG: Compiled with new SDK. Requires foobar2000 v1.3 or above.
- CHG: Remove functions marked as obsolete 3+ years ago. Obviously
       there are replacements that been around even longer.

       window.WatchMetadb
       window.UnWatchMetadb
       window.CreateTimerTimeout
       window.CreateTimerInterval
       window.KillTimer
       UpdateFileInfo
- CHG: Remove all these fb methods because plman (Playlist Manager) methods
       also exist.

       fb.CreatePlaylist
       fb.RemovePlaylist
       fb.RenamePlaylist
       fb.DuplicatePlaylist
       fb.MovePlaylist
       fb.ActivePlaylist
       fb.PlayingPlaylist
       fb.PlaylistCount
       fb.PlaylistItemCount
       fb.GetPlaylistName
       fb.PlaybackOrder
- CHG: Even though plman alternatives of these fb methods did not exist, I've
       removed them for consistency.

       fb.CreateAutoPlaylist
       fb.IsAutoPlaylist
       fb.ShowAutoPlaylistUI

       plman.CreateAutoPlaylist, plman.IsAutoPlaylist and plman.ShowAutoPlaylistUI
       have been created to replace them.
- CHG: plman.GetPlaylistFocusItemHandle has been removed because it's identical to fb.GetFocusItem
       which is more commonly used.
- CHG: utils.GetAlbumArt removed as the corresponding function has been
       removed from the foobar2000 SDK. utils.GetAlbumArtAsync, utils.GetAlbumArtEmbedded
       and utils.GetAlbumArtV2 are still present.
- CHG: AppendMenuItem no longer accepts MF_POPUP as a flag. Use
       AppendTo instead.
- CHG: Remove on_tooltip_custom_paint() callback. window.CreateTooltip has been
       updated to accept custom font paramters. See below and docs\interfaces.txt.
- CHG: "Properties" dialog has a larger default size.
- CHG: "Safe mode" is no longer an option.
- CHG: Tidy up samples.
- CHG: Tidy up preprocessors. You no longer have to specify these when using the on_metadb_changed()
       callback.
       // @feature "v1.4"
       // @feature "watch-metadb"
       Due to this change, "on_metadb_changed" will only receive a "handle list" and never a "handle"
       as the first argument. Also, "on_selection_changed" won't receive a "handle" argument.
- ADD: fb.GetLibraryItems() returns a handle list of all items in library.
- ADD: fb.IsLibraryEnabled() (boolean)
- ADD: fb.ShowLibrarySearchUI(query) opens the Library>Search window
       populated with the query you set.
- ADD: on_library_items_added() callback.
- ADD: on_library_items_removed() callback.
- ADD: on_library_items_changed() callback.
- ADD: plman.AddLocations(playlistIndex, paths[, select])
       paths: an array of file paths and/or URLs
       select: false if omitted.
- ADD: plman.ClearPlaylist(playlistIndex). Use to clear a specified playlist. fb.ClearPlaylist still exists
       because it is just a shortcut to the Edit menu command which clears the active playlist.
- ADD: plman.GetQueryItems(source_handlelist, query) returns an unsorted
       handle list. Consider using OrderByFormat, etc on the result.
- ADD: plman.UndoBackup(playlistIndex). If you call this before
       adding/removing/reordering playlist items, you will be able to use
       the undo/redo commands on the Edit menu.
- ADD: CalcTotalDuration() handle list method. returns the total in seconds.
- ADD: CalcTotalSize() handle list method. returns the total in bytes.
- ADD: utils.FormatDuration(seconds). returns a string like "3wk 2d 1:30:21"
- ADD: utils.FormatFileSize(bytes). returns a string like "7.9 GB"
- ADD: window.CreateToolTip now takes optional font name, font size (px) and
       style arguments. eg window.CreateToolTip("Segoe UI", 32, 1);
       Defaults of "Segoe UI", 12 and 0 are used if omitted. See docs\flags.txt
       for valid style values.
- ADD: Default right click menu now has a "Reload" script option. This
       saves opening/closing the dialog when working on external files. In
       addition, a new window.Reload method has been added so you can force a panel
       reload with your own menus, buttons, etc.
- ADD: Script errors are now displayed in a popup window in addition to
       the Console like it was previously.
- FIX: EstimateLineWrap no longer leaves stray punctuation when wrapping
       text at end of line.
- FIX: IFbMetadbHandle FileSize now works with "JScript" engine. Previously,
       it only worked with "JScript9".
