-
Notifications
You must be signed in to change notification settings - Fork 0
Troubleshooting
-
Restart foobar2000.
-
Reload the affected JScript Panel or JSplitter instance if script changes are still not visible.
-
Compare every custom title with Layout and Panel Map.
-
Confirm that the panel loads the packaged script rather than another copy.
-
Open View > Console and check for [DarkOneJSP3] errors.
-
Run the validator from the package/profile root:
python DarkOneJSP3\tools\validate_release.py .
To check deliberate compatibility-source mirrors separately:
python DarkOneJSP3\tools\sync_mirrors.py --check .
A custom title is missing, misspelled, duplicated or placed at the wrong hierarchy level. Compare the complete layout with Layout and Panel Map. Visible tab text is unrelated to the DOJSP3.* identifier.
The fourth child of DOJSP3.InfoStack must load samples\Album Notes.txt and use the exact title DOJSP3.AlbumNotes.
The packaged InfoStack controller hides every child before the first valid layout pass. Confirm that JSplitter 03 loads the supplied Info Stack and Tabs loader and controller. This protection also applies when Startup > Transition is set to Off.
Black reveal and Staged reveal paint the hidden root to DarkOne grey, wait 150 ms for the native DisplayStack surface to settle, then show the children. Confirm that JSplitter 01 and 06 load the supplied controllers.
Off performs no deliberate startup hold, so a system may expose a native Columns UI/JSplitter backing surface before every child completes its first paint. Use Black reveal when this is noticeable. This is separate from the fixed black DisplayStack flash in optional reveal modes.
An optional startup transition is waiting for nested controllers to report ready. The default layout-readiness timeout reveals the interface after 2000 ms and logs pending controller names.
Confirm that all six JSplitter hosts use the supplied loaders and correct titles. Use InfoStack tab strip > Startup > Transition > Off while repairing the layout.
The supported Startup menu is on the InfoStack tab strip and displays values owned by DOJSP3.Root. If a Startup submenu appears in a JScript Panel DarkOne Tools menu, that panel is loading stale or mismatched script files. Replace the scripts from one complete package and restart foobar2000.
Right-click the InfoStack tab strip and open Startup. Off is the default. For optional modes, adjust the minimum black hold and preview the sequence. Keep the layout-readiness timeout at 2000 ms unless diagnosing a slow or incomplete controller.
Some panel instances retain currently loaded wrapper text. Reload the affected panel or restart foobar2000. Also check that the wrapper imports the expected file under DarkOneJSP3 or the packaged JScript Panel samples folder.
Confirm that the display wrapper and its Panel_Display.js and Object_DisplaySystem.js modules come from the same package. Reload the Display panel after manual script edits.
The current display wrapper exposes Default, Columns UI selected-item and Custom accent modes. If a six-colour palette still appears, reload the centre Display panel and confirm that its wrapper and modules come from the same package. The current menu is:
Display accent colour > Default - DarkOne blue
Display accent colour > Columns UI selected-item background
Display accent colour > Custom colour... (#RRGGBB)
Use DarkOne Tools > Fonts > Reset all font defaults. The intended small-label font is Arial Black with DirectWrite Black/900 weight.
Right-click inside Biography, Last.fm, Album Notes, Properties or the optional scripted Queue Viewer and open Page background colour. Choose Transparent / inherit parent to reveal the InfoStack backing colour, Columns UI global background to follow the active Columns UI background colour, or select an explicit colour for that page. Each JScript Panel page remembers its own value. The native Queue Viewer and Playlists page use their own component or panel appearance settings.
Use Tab area and Tab font size from the InfoStack context menu. The controller centres labels within the configured tab area. In automatic mode, the tab area now follows the automatic font base scale; a manually fixed area does not.
This is intentional. Tab font colour controls normal inactive labels. The active label remains white and a hovered label remains grey.
Reload JSplitter 03 from the supplied controller. The implementation uses the two-argument JSplitter form utils.ColourPicker(window_id, default_colour). The standard Windows colour dialog should open directly; text entry is only a fallback when the native picker cannot be invoked.
Use Optional buttons > Re-detect command types. If a registered menu path has changed, select the command again. Embedded Columns UI panels do not always expose a main-menu command that opens them as a floating window.
Reload both supplied Control Panel wrappers. JScript Panel 3.8.5 exposes the standard information icon through MB_ICONASTERISK in helpers.txt and does not define MB_ICONINFORMATION. A remaining error indicates mixed or cached script files.
- Enable Smooth scrolling in the playlist context menu.
- Confirm that the wrapper imports the packaged jsplaylist\main.js and jsplaylist\playlist.js files.
- Choose Restore DarkOneJSP3 defaults.
- Increase the UI refresh interval only if motion is smooth but CPU use is high.
Disable Snap wheel scrolling to playlist rows. Set the free-scroll distance from the same menu. Disable Snap scrollbar dragging to playlist rows separately when continuous thumb dragging is also wanted.
Keyboard navigation, scrollbar arrows/page clicks and drag-autoscroll remain row-aligned by design.
- Confirm Enable smooth scrolling is active.
- Confirm both the supplied jsplaylist\main.js and jsplaylist\scrollbar.js are installed together; mixing versions bypasses the dedicated drag frame loop.
- The scrollbar thumb follows the latest mouse position while the playlist uses time-based interpolation at the selected UI refresh interval.
- With Snap scrollbar dragging to playlist rows enabled, visual updates remain row-aligned; disable it when continuous pixel movement is preferred.
- Volume writes are protected by a minimum 16 ms cadence, regardless of the visual knob-refresh setting.
- Automatic follows the fastest live refresh interval reported by JS Playlist and Smooth Playlist Manager for the knob preview only.
- The first drag value remains immediate and the exact final value is applied when the mouse button is released.
- If pausing persists, include the selected visualiser settings and component version in the bug report; lowering the knob preview cadence should not change the protected volume-write frequency.
Increase the UI refresh interval from 8 ms to 10, 12 or 16 ms. The selected value controls both the smooth-scroll animation cadence and the coalesced repaints that display it. A 16 ms interval is normally sufficient for a 60 Hz display.
- Enable Remember manager scroll position.
- The row-aware state is stored in SMOOTH.PLAYLIST.MANAGER.SCROLL.STATE.V2.
- If the saved anchor playlist was deleted, the manager falls back to the saved row and clamps it to the current list.
- A taller panel may make the former top row physically impossible to retain; the position then clamps to the nearest valid scroll limit.
The optional scripted queue viewer begins its incremental %queue_indexes% scan after the Queue tab receives a paint callback. Open the Queue tab and allow the scan to complete. Use the native Queue Viewer component for full editing, including adding, removing and reordering entries. When using the script, load the DarkOneJSP3 wrapper rather than the generic sample entry.
The DarkOneJSP3 Queue Viewer wrapper must import the component-local samples\shared\sample_defaults.js registry and samples\js\jsp3_enhanced_reset.js bridge before Queue Viewer initialises. Reload the supplied wrapper and restart foobar2000 if cached code remains.
Set the native Quick Search Toolbar frame style to None. JSplitter already paints the DarkOne border.
Set the native toolbar normal background to RGB 30, 30, 30. JSplitter cannot replace the edit control's internal native background.
Choose the required Host background from the narrow JSplitter spacer menu. Waveform Minibar paints its own child window, so disable its Transparent background, set both custom background swatches to the same explicit RGB value and disable Draw window border. The default host colour is RGB 32, 32, 32.
Right-click the narrow JSplitter host/spacer around the Waveform Minibar. A right-click inside the native waveform opens the component's own menu instead.
Increase the host New-track reveal delay. The default is 200 ms; 300-500 ms may work better with slower or uncached waveform generation.
Enable Force blank waveform when playback stops in the host menu and set Waveform Minibar to Playing, blank when stopped.
Open Current source > Show diagnostics. Check whether the provider is disabled, loaded from cache, unresolved, retried or failed. Also check Source priority and Album-note mode. Browse one source intentionally does not fall through.
The packaged provider explicitly reactivates an idle same-album lookup, discards stale search history and advances when no provider work starts. If the message remains, use Current source > Show diagnostics, refresh enabled sources and confirm that Album Notes, allmusic.js and album_notes.js come from the same package.
Open Provider and matching settings. Set the correct MusicBrainz release-group MBID manually, or forget the saved album identity and resolve it again. Correct artist/album tags before clearing the current source cache.
The returned artist and album must pass exact normalised verification. After correcting tags or the manual release-group identity, clear the current source cache. Negative results are otherwise retained for 24 hours.
An older cached review may already contain flattened text. In Album Notes, make AllMusic the active source, choose Clear current source cache, then Refresh enabled sources. A freshly retrieved review can still be a single paragraph when the source itself contains no paragraph breaks.
For the standalone AllMusic sample, use its own Delete cached review and Refresh from AllMusic commands.
AllMusic may serve a normal browser while rejecting script requests. DarkOneJSP3 can use MusicBrainz release/release-group relationships as a resolver when the AllMusic search is blocked or unparseable.
The resolution order is:
- MUSICBRAINZ_RELEASEGROUPID tag.
- MUSICBRAINZ_ALBUMID tag.
- Exact MusicBrainz release-group search by artist and album.
Check Current source > Show diagnostics. When automated retrieval remains blocked, use Current source > Open source page to read the source in a browser.
A challenge page requires a real browser session. The Chrome-style request identity changes headers only and does not execute a browser challenge. Use Open source page. The standalone AllMusic sample additionally offers its own browser and clipboard-cache fallback commands.
Open Artist identity and either enable automatic resolution, resolve the current artist now or set the artist MBID manually. Automatic matching deliberately requires an exact normalised name, sort name or alias and does not guess between ambiguous candidates.
Use Artist identity > Clear cached artist match, then set the correct MBID manually. The map is stored in js_data\musicbrainz.artist-map.json.
Requests use a 15-second watchdog and limited retries for transport errors, HTTP 408/425/429 and transient 5xx responses. Check the console for timeout and retry messages, restore connectivity, then refresh the data.
Requests are serialised at a minimum 1.1-second interval and busy responses are retried. Wait briefly, then use Refresh MusicBrainz data. Configure a contact URL/email in the MusicBrainz menu when distributing a customised build.
Use Refresh MusicBrainz data. Clearing the current Releases or Links cache does not remove the artist-ID map or the Album Notes album-identity map.
This is expected. DarkOneJSP3 application and Chrome-style profiles only select HTTP headers. They do not supply cookies, JavaScript execution or an interactive browser session.
Right-click the InfoStack tab strip and open Side divider colour, or right-click one of the exposed upper divider strips. The two upper strips always share one setting. Columns UI global background follows the active Columns UI background colour. This option does not affect the lower control-panel dividers.
Do not use a divider menu added to the generic Album Art JScript Panel. That cross-component notification path is not reliable. Restart or reload InfoStack and Main Columns if code was copied over while foobar2000 remained open.
Right-clicking a playlist row opens operations for that playlist. Right-click empty panel space or the scrollbar to open Header Bar, Playlist filter, Colours, Background Wallpaper, DarkOneJSP3 smooth scrolling, Playlist row spacing and Configure....
Right-click a track or empty playlist area and choose Panel Settings.... The playlist header bar has a separate right-click menu for Groups, Columns and Double Track Line.
Right-click empty content space inside the page. Panel-specific commands appear first, followed by the shared Font size, Page background colour, Selection mode and Configure... controls. Clicking directly on selectable text or a link can invoke that object's action instead.
The recommended native Queue Viewer is not a JScript Panel and therefore does not expose DarkOneJSP3's Page background colour menu. That menu belongs to the optional scripted Queue Viewer fallback. Configure the native component through its own component menu.
Right-click the narrow JSplitter spacer around the Waveform Minibar child. A right-click inside the waveform opens the native component's menu instead.
The reset writes explicit per-panel defaults before reloading each participating panel. It covers DarkOneJSP3-managed properties; unrelated upstream sample customisation is intentionally preserved. Confirm that participating wrappers import the appropriate project or standalone sample reset registry and bridge.
The consolidated Album Notes panel resets both its provider role and embedded MusicBrainz role in one reload while preserving downloaded provider cache files. Confirm that samples\Album Notes.txt imports the component-local sample reset helpers.
JS Playlist and Smooth Playlist Manager must import the component-local sample-default registry and neutral reset bridge. Behaviour reset restores their custom refresh and scroll settings; full reset also clears the playlist manager's saved scroll anchors.
The enhanced playlist and Playlist Manager use demand-driven schedulers and should not retain their high-refresh animation timers at idle. Confirm that the current JS Playlist and Smooth Playlist Manager wrappers are loaded and that both use samples\shared\performance_utils.js. Older saved entry scripts are also supported through the guarded compatibility block in helpers.txt. Reload the affected panel after replacing scripts.
The row-render cache responds to playlist, metadata, queue, playback-time, seek and dynamic stream-information callbacks. Reload the playlist panel if third-party tagging software changed files without notifying foobar2000. For diagnosis, temporarily set JSPLAYLIST.Enable Render Cache to false in Configure..., reload the panel and compare the result.
Enable JSPLAYLIST.Enable Performance Profiling or SMOOTH.Enable Performance Profiling in the relevant panel's Configure... window, then reproduce the workload. The foobar2000 console reports average and peak paint time every 120 frames. Disable profiling after testing.
Include:
- DarkOneJSP3 package version from build-info.json;
- foobar2000, Columns UI, JScript Panel 3 and JSplitter versions;
- the exact panel custom title and loaded wrapper or loader;
- relevant [DarkOneJSP3] console output;
- Album Notes Current source > Copy diagnostics output, when applicable;
- whether the issue also occurs after a restart; and
- any non-default property or component setting related to the affected area.
DarkOneJSP3 documentation · Unofficial community continuation · Back up your foobar2000 profile before installation or upgrade. · Repository · Credits