Skip to content

Architecture and Repository Structure

Pawel Osmolski edited this page Aug 6, 2026 · 4 revisions

Architecture and Repository Structure

Runtime architecture

DarkOneJSP3 replaces the six numbered Panel Stack Splitter instances used by DarkOne2021 with six numbered JSplitter controllers:

Column
└─ DOJSP3.Root
   ├─ DOJSP3.Main
   │  ├─ DOJSP3.InfoStack
   │  ├─ DOJSP3.ArtSpectrum
   │  └─ DOJSP3.Playlist
   └─ DOJSP3.Controls
      ├─ DOJSP3.ControlsLeft
      ├─ DOJSP3.QuickSearch
      ├─ DOJSP3.DisplayStack
      └─ DOJSP3.ControlsRight

JSplitter controllers locate child panels by exact DOJSP3.* Columns UI custom titles. These titles are runtime identifiers, not decorative labels. Use the complete Layout and Panel Map when creating or repairing the hierarchy.

Component-host boundary

JScript Panel 3 and JSplitter use separate notification domains. Same-component notifications are used where possible, but they cannot be relied upon to cross between the two hosts.

The shared bottom-area appearance therefore uses:

js_data\darkonejsp3.bottom-area-state.txt
  • The three bottom JScript panels read and apply the file once during initialisation.
  • They use JScript Panel notifications for live panel-to-panel updates.
  • The Bottom Controls JSplitter is the sole continuous state poller, at 100 ms.
  • It relays changed state to the Display/Waveform controller inside the JSplitter domain.

Coordinated factory reset uses a second short-lived bridge:

js_data\darkonejsp3.reset-command.txt

The Bottom Controls host checks reset commands every 500 ms, validates each command ID and age, rebroadcasts the reset within the JSplitter domain, then removes or clears the processed file. Runtime bridge files are user state and are excluded from release archives.

Principal migration changes

  • Panel Stack Splitter title-format scripts became JavaScript controllers.
  • Numeric child indexes became stable DOJSP3.* custom-title identifiers.
  • PSS global variables became persistent JSplitter or JScript Panel properties.
  • $movepanel and $showpanel operations became PanelObject.Move and PanelObject.Show calls.
  • GDI resources moved to JScript Panel 3 DirectWrite and Direct2D handling.
  • ActiveX and WScript dependencies were removed.
  • State remains owned by the relevant panel instead of being duplicated in the root controller.
  • Compatibility mirrors have canonical sources and are checked by maintenance tooling.
  • Composite surfaces explicitly resolve inherited colours where native child-window transparency cannot provide a uniform result.

Repository structure

assets/
├── darkonejsp3-logo.png                    Repository artwork
├── darkonejsp3-social.jpg                  Promotional artwork used by the Wiki
├── darkonejsp3-screenshot-albumnotes.jpg   Album Notes and InfoStack screenshot
└── darkonejsp3-screenshot-main.jpg         Main interface screenshot

DarkOneJSP3/
├── docs/                  Documentation, changelog, credits and guides
├── fcl/                   Optional maintainer-exported Columns UI layout
├── images/                DarkOne artwork and display/icon sheets
├── jscript/               DarkOne JScript Panel 3 wrappers and modules
├── jsplitter/             JSplitter controllers, loaders and shared helpers
├── reference/             Original DarkOne2021 migration reference
├── shared/                Shared project scripts and reset support
├── tools/                 Validator and compatibility-mirror utilities
├── build-info.json        Release metadata
└── darkonejsp3-layout-manifest.json
                           Supported layout and package manifest

user-components-x64/
└── foo_jscript_panel3/
    ├── licenses/          Retained third-party licence notices
    └── samples/           Standalone enhanced sample library

Ownership boundary

The standalone sample implementations and their reusable runtime utilities live inside the JScript Panel component tree. DarkOneJSP3 adds layout coordination, InfoStack integration, project-specific controls and coordinated factory resets on top of the same samples.

Further reading

Clone this wiki locally