// OPENBOX DOCS

Parity matrix

Capability status on Linux and Windows, and Linux replacement decisions.

The application repository's PARITY.md is the maintenance source for capability status, acceptance checks, and Linux replacement decisions. This page is the single rendered status authority for the documentation site.

What the badges mean

Every workflow in PARITY.md is marked done, or carries a decision status for workflows without a Linux equivalent:

  • Done means the workflow is usable end to end. The 1.15.0 line runs on Linux (AppImage, Flatpak, source, and system installs) and on Windows x86_64, so done rows apply on both unless the row's note or the Linux-only list below says otherwise.
  • Partial means a deliberate Linux equivalent exists but the Windows/premium surface is broader or unavailable.
  • Missing means no usable equivalent yet.
  • Decision rows ("Not applicable", "Replaced by ...", "Use ... instead") mark Windows-only workflows with no Linux equivalent; they are documented as boundaries rather than implied support.

Verified against v1.15.0 (application docs/PARITY.md).

Platform coverage

The 1.15.0 line runs on Linux and on Windows x86_64. Windows uses the native WebView2 host, the install.ps1 installer with its matching uninstall.ps1, and verified in-place updates of OpenBox-<arch>-windows.zip; the platform seam lives in pkg/platform_compat.py (standard library only, plus ctypes on Windows).

These surfaces remain Linux-only and are not part of the Windows build: gamescope and Game Mode, AppImage and Flatpak packaging, XDG desktop entries, sudo make install, Steam Deck and handheld tuning, and Flathub-aware emulator management. See Windows for the platform guide.

Capability status

The source matrix tracks the current LaunchBox-aligned capabilities, including Localization with 5 languages (English, Spanish, German, French, and Brazilian Portuguese), the Premium-equivalent workflows (custom fields, ESRB filters, list view, media packs, cloud statistics sync), and the 1.11.0 through 1.15.0 features plus the Windows support below. OpenBoxGL sets premium_features_free: true in settings and ships bundled media packs without a license gate.

AreaStatusNotes
Mixed-library managementDoneOne catalog for Steam, ROMs, arcades, executables
ImportsDoneSteam, Heroic, Lutris, Faugus, Gameyfin, ROM folders, arcade DATs, ScummVM, RPCS3, Vita3K, Xenia
MetadataDoneLaunchBox Games Database daily sync + IGDB + Steam/GOG
MediaDoneBulk media jobs, duplicate cleanup, EmuMovies, Bezel Project
Launch profilesDoneTokenized commands, per-game overrides, archive extraction, dependency checks, Eden Switch
Big BoxDoneStage, Hybrid, CoverFlow; gamepad; screensaver; gamescope guest
Sessions and trackingDonePer-session history, tracking modes, progress automation
Saves and backupsDoneSave discovery, versioned backups, restore guards, statistics sync
IntegrationsDoneProton/Wine Prefix Manager, RetroAchievements, IGDB, EmuMovies, Bezel, Gameyfin, OBS, MAME, Ludusavi, Hoard
PluginsDonelibrary, before_launch, after_session hooks
Local automationDoneQueue, tags, notifications, HMAC-signed webhooks
Premium workflows (free)DoneCustom fields, ESRB filters, list view, media packs, cloud stats sync
Discovery (shipped in v1.9.0)Done"What should I play?" picker, Constellation graph, SQLite FTS search
Insights (shipped in v1.9.0)DoneWrapped year-in-review, Mastery Map, history timeline
Party & personalization (shipped in v1.9.0)DoneGame Night party mode, Big Box video snaps, Mood Match adaptive theming
Migration & sync (v1.10.0)DoneReview-first LaunchBox XML import, opt-in causal catalog sync with preview/apply/publish, and manual shelf entries; legacy full-library routes fail closed before mutation
Quick Resume, Moments, and Record That (v1.11.0)DoneCapability-aware resume, session recaps, Moments captures/timeline, replay-buffer or screenshot clips, and bounded reels
Time Machine (v1.11.0)DoneJournal-backed event timeline, bounded as-of inspection, and safe revert previews
Backlog Radio and natural query (v1.11.0)DoneLocal habit-aware recommendations, editable interpretation chips, and the Ctrl/Cmd-K command palette
Arcade Room and Museum (v1.11.0)DoneController-friendly platform showroom, real fact cards, reduced-motion presentation, and optional local kiosk convenience boundary
Household (v1.11.0)PartialOpt-in members, challenges, shares, results, and leaderboard projections over a mounted sync folder; no hosted multiplayer service
Steam Bridge and ES-DE (v1.11.0)DoneReviewed shortcuts.vdf preview/apply/remove, openbox --play <id>, and stale-safe gamelist.xml import
SteamGridDB and launcher trophies (v1.11.0)DoneOptional cached artwork provider and deterministic local trophy case, separate from RetroAchievements
Smart collections (v1.12.0)DoneNamed query shelves saved from the query bar re-evaluate live via /api/v2/collections routes
Game Story (v1.12.0)DonePer-game deterministic narrative tab via GET /api/v2/story over the session journal and Moments
Per-game launch environment (v1.12.0)Donelaunch_env KEY=value overrides and launch_confirm per game; merge order game > platform > global
Scheduled backups and SQLite default (v1.12.0)DoneOpt-in weekly automatic library backups with retention; FTS read model self-enables at 5,000+ games with env opt-out
Windows support (v1.13.0)DoneNative WebView2 host built from native_host_win.c, signed install.ps1 with the same key-pin/checksum/signature ladder, verified in-place updates, and Windows executable names in the bundled emulator definitions
Library health score (v1.14.0)Done0–100 score across five weighted dimensions (file integrity, duplicates, artwork, metadata, launch readiness) with a "Fix all" queue (dry-run preview first, every fix undoable), a Big Box health tile, and a scheduled rescan
Artwork Doctor (v1.14.0)DoneBulk SteamGridDB artwork hygiene report with safe fix/undo helpers via parity_artwork_hygiene.py
Missing-file repair and duplicate merge (v1.14.0)DoneMissing-path reports become fixable: relink games and media after a move with candidate matching and review before apply; duplicate detection consolidates colliding game records with a reviewable merge plan
Game DNA offline search (v1.14.0)DoneTitle/Smart toggle on the search box; Smart mode runs BM25 plus a curated 151-concept lexicon (English, German, Spanish, French, Portuguese) with "why" chips and "More like this", fully offline
Emulator definition updates (v1.15.0)DoneSigned community definition pack installs into the per-user data directory and shadows the bundled set without overwriting it; verified with the release Ed25519 key, a signature failure raises a security notification, local definitions always win, and rollback removes exactly what the pack installed (ADR 0061)
Time Machine compare (v1.15.0)DoneGET /api/v2/library/time-machine/compare diffs the library between two journal points read-only: added, removed, and per-field changed rows with true totals even when the page truncates
Motion and reduced motion (v1.15.0)DoneEvery duration and easing is a structural token; a single prefers-reduced-motion block zeroes them all, dialogs animate out as well as in, theme switches cross-fade, and the toast is one top-layer surface (ADR 0063)
High Contrast theme (v1.15.0)DoneA sixth stock theme redeclaring every :root token at maximum contrast (21:1 body text, AAA foregrounds), checked against every theme by a contrast matrix in tests/test_stock_themes.py
Windows uninstaller (v1.15.0)Donescripts/uninstall.ps1 removes exactly what install.ps1 creates — the install tree and its rollback copy, the user PATH entry, the Start Menu shortcut, and the openbox:// registration — and never touches the library or settings; -WhatIf previews it (ADR 0062)

Intentionally not replicated on Linux

Windows-only workflows without a Linux equivalent remain documented as boundaries rather than implied support. These decisions concern the Linux build; the Windows build adds no LaunchBox-only workflows either:

LaunchBox featureOpenBox decision
Windows shell replacementNot applicable on Linux desktop environments
LEDBlinky / cabinet LED controlUse external Linux arcade I/O tools instead
Teknoparrot arcade launcherUse Lutris/Wine launch profiles for supported titles
Native Xbox PC package scanningUse Heroic/Lutris/Xbox Cloud entries instead
Bundled proprietary media packsReplaced by free bundled media packs in OpenBox
LaunchBox Premium account cloud libraryReplaced by OpenBox's local mounted-folder statistics sync and opt-in catalog sync plus local backups (no LaunchBox account involved)
LaunchBox online theme storefrontReplaced by local CSS theme import and open-folder workflow

How to read the evidence

Each done row carries an acceptance check, and the parity test modules (test_parity_*.py) exercise the underlying helpers. The authoritative row-level evidence lives in the source parity matrix:

Source parity matrix

Status updates

When behavior changes, PARITY.md is updated in the application repository and this page follows it. Do not claim a capability here before the source matrix and its acceptance check agree.

Parity internals

The capability rows above are implemented by the current modules in pkg/parity/ (application repository). Root parity_*.py compatibility shims were removed in v1.9.0; pkg/parity/__init__.py now registers _ParityFlatFinder so legacy flat imports resolve to the canonical package modules. This is an inventory, not a second status matrix — status still lives in the table above.

ModuleArea
parity_backup.pyLibrary backups
parity_collections.pySmart collections (named query shelves)
parity_radio.pyBacklog Radio recommendations
parity_constellation.pyConstellation relationship graph
parity_deeplinks.pyDeep links
parity_discovery.pyDiscovery queue
parity_emulator_defs.pyEmulator-def registry
parity_esde_import.pyES-DE gamelist import
parity_export.pyLibrary export
parity_faugus.pyFaugus integration
parity_filter_presets.pyFilter presets
parity_gamescope.pyGamescope guest
parity_gameyfin.pyGameyfin storefront
parity_household.pyHousehold records and sync
parity_identity.pyIdentity / instance
parity_igdb.pyIGDB metadata
parity_import.pyImports
parity_import_policy.pyImport policy
parity_insights.pyPlay insights
parity_integrations.pyThird-party integrations
parity_launch_doctor.pyLaunch Doctor preflight
parity_launchbox_import.pyLaunchBox XML migration
parity_library_sync.pyCausal catalog synchronization
parity_media.pyMedia jobs
parity_memories.pyMemory-root import and gallery
parity_obs_bridge.pyOBS replay-buffer bridge
parity_perf.pyPerformance projections
parity_party.pyBig Box party mode
parity_picker.pyPlay picker recommendations
parity_premium.pyPremium-equivalent workflows
parity_query.pyNatural-language library query grammar
parity_redact.pyLog redaction
parity_reels.pyDeterministic clip/reel manifests
parity_resume.pyQuick Resume state capability and storage
parity_saves.pySaves
parity_save_tools.pySave tools (Ludusavi/Hoard)
parity_screenscraper.pyScreenScraper matching
parity_setup_preview.pySetup Center preview
parity_story.pyPer-game Story timeline projection
parity_storefront.pyStorefront imports
parity_steam_bridge.pySteam shortcuts.vdf bridge
parity_steamgrid.pySteamGridDB artwork provider
parity_tracking.pyPlay tracking
parity_time_machine.pyJournal timeline and revert planning
parity_trophies.pyLocal launcher trophies
parity_wine.pyWine/Proton prefix management