Skip to content

DarkOneJSP3 v0.8.1 - Fetch The Broom! 🧹

Choose a tag to compare

@Pav-Osmolski Pav-Osmolski released this 26 Jul 13:33
· 18 commits to main since this release

DarkOneJSP3 v0.8.1 — Consolidation and Release Hardening

DarkOneJSP3 v0.8.1 completes the planned code-consolidation work and applies a final post-refactor release-hardening pass.

The update focuses on maintainability, consistency and validation coverage while preserving the established runtime behaviour and saved-setting contracts.

Colour and appearance improvements

The information-area colour system has been expanded and standardised across the theme.

Configurable background palettes are now available for:

  • Biography
  • Last.fm
  • Album Notes
  • Queue
  • Properties
  • InfoStack backing
  • upper side dividers
  • waveform host

Available choices include:

  • Transparent / inherit parent
  • Black
  • DarkOne grey
  • DarkOne dark grey
  • Columns UI global background
  • Custom colour

Additional Columns UI integration is available for:

  • InfoStack tab font colour
  • Display accent colour

Both can follow the active Columns UI selected-item background colour.

Existing saved mode numbers and custom-colour values remain compatible.

Shared colour framework

Repeated colour parsing, normalisation, menu construction and picker handling have been consolidated into shared helpers.

This includes:

  • opaque-colour normalisation;
  • hexadecimal formatting;
  • custom-colour parsing;
  • Columns UI colour retrieval;
  • saved-mode validation;
  • declarative radio-menu construction;
  • JSplitter and JScript Panel colour-picker adapters.

Custom-colour cancellation is now handled consistently and cannot silently activate a previously stored colour.

Shared JSplitter protocols

Startup-transition and side-divider communication have been consolidated into a shared protocol layer.

The shared implementation now handles:

  • notification names;
  • protocol versions;
  • state serialisation and parsing;
  • command parsing;
  • readiness signalling;
  • mode validation;
  • malformed-value rejection.

Property ownership remains unchanged:

  • the Root controller owns startup-transition settings;
  • Main Columns owns side-divider settings;
  • InfoStack continues to provide the corresponding remote menus.

Control-panel consolidation

The shared optional-button menu logic used by the left and right control panels has been extracted into a common helper.

This now centralises:

  • optional-button visibility;
  • command and label setup;
  • command-style re-detection;
  • command-guide access;
  • DarkOne Tools access;
  • button-roundness settings;
  • menu disposal and repaint handling.

The left and right control panels retain their own button layouts, saved properties and panel-specific controls.

InfoStack controller decomposition

The InfoStack controller has been divided into focused helpers for:

  • colour and menu state;
  • startup and side-divider bridges;
  • protocol notifications and command routing.

The main controller now concentrates on:

  • tab layout;
  • responsive sizing;
  • child-panel visibility;
  • active-tab selection;
  • painting;
  • mouse interaction;
  • primary context-menu flow.

Menu IDs, property names, protocol versions and runtime behaviour remain unchanged.

Modular release validator

The release validator has been reorganised into focused modules for:

  • shared validation context;
  • data-driven package expectations;
  • static and metadata checks;
  • runtime and syntax checks.

The existing command remains unchanged:

python DarkOneJSP3/tools/validate_release.py .

Release-hardening improvements

The v0.8.1 hardening pass adds manifest-driven validation for:

  • all six JSplitter controllers;
  • all panel-entry wrappers;
  • scripted panel sources;
  • controller loaders;
  • required runtime artwork;
  • module-version metadata;
  • manifest numbering, titles and script assignments;
  • compatibility mirrors;
  • repository artwork when present.

Validation now correctly fails when required wrappers, scripts or bitmap assets are missing.

The manually maintained DarkOneJSP3.fcl remains excluded from automated validation and is not modified by project tooling.

Compatibility

  • No foobar2000 runtime regression was found during the post-refactor audit.
  • All runtime scripts remain unchanged from the tested v0.8.0 runtime set.
  • Existing property names, saved values, menu IDs, colour modes and notification contracts remain compatible.
  • The canonical repository README and documentation have been retained and updated for this release.

Validation

Final release verification completed successfully:

  • 185 audited files
  • Zero warnings
  • ZIP integrity test passed
  • Re-extracted archive passed the full validation suite
  • FCL excluded from automated auditing

Upgrade notes

Back up your active foobar2000 profile before upgrading.

Merge the supplied DarkOneJSP3 and user-components-x64 directories into the same profile location used by your current installation, allowing the updated files to replace the previous versions.

Your existing saved settings should remain compatible.

Important notice

DarkOneJSP3 is an unofficial community continuation. It is not an official release by tedGo, marc2003, Br3tt/Falstaff, dima-lur, Peter Pawlowski or the authors of the third-party components it uses.

Preserve all existing author headers, credits and third-party licence notices.

DarkOneJSP3 is supplied without warranty. Back up your foobar2000 profile before installation or upgrade.