Context
OPL Linux Toolbox manages user-supplied Open PS2 Loader libraries on folders and storage already mounted by Linux. The project is based on the GPL-3.0 OrbitOPL Toolbox by Luden02 and preserves that upstream attribution and contributor history. My work evolves that base toward Linux-native storage workflows, safer import and recovery paths, maintenance tooling, and installable Linux packages; the application does not search for or distribute commercial game downloads.
Architecture
Electron owns filesystem, process, import, and storage operations while Angular remains the renderer. A preload bridge exposes named IPC capabilities, and service modules implement the failure-sensitive file and UL workflows.
Electron lifecycle and native window boundary with `contextIsolation: true`, application protocols, loading-state close protection, and IPC registration
Explicit `contextBridge` API for library, import, artwork, storage, maintenance, VMC, CFG, logging, update, and window operations instead of exposing raw Node.js APIs to Angular
Import planning, verified copy, ZSO handling, UL conversion and rollback, storage inspection, artwork, maintenance, and library operations
Desktop interface for dashboard, library, import, artwork, game details, VMC, maintenance, settings, and logs
Release workflow and installer surface for DEB, RPM, Pacman, and AppImage packages with checksum verification before installation
Engineering Decisions
Make direct copies verifiable before promotion
Imports write to a hidden .part file, synchronize the output handle, optionally compare SHA-256 of source and temporary destination — enabled by default — and only then rename the file into its final path. The destination directory is synchronized after the rename where supported.
Treat UL conversion as a recoverable operation
Before invoking iso2opl, the service snapshots UL state. Cancellation, non-zero exit, validation failure, or another conversion error triggers rollback, and a successful conversion is accepted only after the resulting installation scans as complete for the expected game ID.
Keep privileged desktop capabilities behind explicit IPC
Filesystem and process work stays in Electron services and handlers. The renderer is isolated with contextIsolation: true, while the preload script exposes named operations through contextBridge instead of handing the Angular application unrestricted native APIs.
Avoid shell composition for the UL converter
The UL conversion service launches iso2opl with an argument array and shell: false. Cancellation first sends SIGINT and escalates to SIGKILL only if the child does not exit within the bounded grace period.
Treat Linux distribution as part of the application
The project publishes native package formats for Debian-based, RPM-based, and Arch-based distributions plus AppImage. The installer selects the appropriate release artifact and verifies its SHA-256 checksum instead of asking users to clone the source tree.
Keep derivative-project provenance explicit
The repository states that OPL Linux Toolbox is based on OrbitOPL Toolbox by Luden02, retains GPL-3.0 licensing and contributor history, and distinguishes the upstream project from the Linux-focused changes maintained here.