// 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
donerows 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.
| Area | Status | Notes |
|---|---|---|
| Mixed-library management | Done | One catalog for Steam, ROMs, arcades, executables |
| Imports | Done | Steam, Heroic, Lutris, Faugus, Gameyfin, ROM folders, arcade DATs, ScummVM, RPCS3, Vita3K, Xenia |
| Metadata | Done | LaunchBox Games Database daily sync + IGDB + Steam/GOG |
| Media | Done | Bulk media jobs, duplicate cleanup, EmuMovies, Bezel Project |
| Launch profiles | Done | Tokenized commands, per-game overrides, archive extraction, dependency checks, Eden Switch |
| Big Box | Done | Stage, Hybrid, CoverFlow; gamepad; screensaver; gamescope guest |
| Sessions and tracking | Done | Per-session history, tracking modes, progress automation |
| Saves and backups | Done | Save discovery, versioned backups, restore guards, statistics sync |
| Integrations | Done | Proton/Wine Prefix Manager, RetroAchievements, IGDB, EmuMovies, Bezel, Gameyfin, OBS, MAME, Ludusavi, Hoard |
| Plugins | Done | library, before_launch, after_session hooks |
| Local automation | Done | Queue, tags, notifications, HMAC-signed webhooks |
| Premium workflows (free) | Done | Custom 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) | Done | Wrapped year-in-review, Mastery Map, history timeline |
| Party & personalization (shipped in v1.9.0) | Done | Game Night party mode, Big Box video snaps, Mood Match adaptive theming |
| Migration & sync (v1.10.0) | Done | Review-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) | Done | Capability-aware resume, session recaps, Moments captures/timeline, replay-buffer or screenshot clips, and bounded reels |
| Time Machine (v1.11.0) | Done | Journal-backed event timeline, bounded as-of inspection, and safe revert previews |
| Backlog Radio and natural query (v1.11.0) | Done | Local habit-aware recommendations, editable interpretation chips, and the Ctrl/Cmd-K command palette |
| Arcade Room and Museum (v1.11.0) | Done | Controller-friendly platform showroom, real fact cards, reduced-motion presentation, and optional local kiosk convenience boundary |
| Household (v1.11.0) | Partial | Opt-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) | Done | Reviewed shortcuts.vdf preview/apply/remove, openbox --play <id>, and stale-safe gamelist.xml import |
| SteamGridDB and launcher trophies (v1.11.0) | Done | Optional cached artwork provider and deterministic local trophy case, separate from RetroAchievements |
| Smart collections (v1.12.0) | Done | Named query shelves saved from the query bar re-evaluate live via /api/v2/collections routes |
| Game Story (v1.12.0) | Done | Per-game deterministic narrative tab via GET /api/v2/story over the session journal and Moments |
| Per-game launch environment (v1.12.0) | Done | launch_env KEY=value overrides and launch_confirm per game; merge order game > platform > global |
| Scheduled backups and SQLite default (v1.12.0) | Done | Opt-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) | Done | Native 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) | Done | 0–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) | Done | Bulk SteamGridDB artwork hygiene report with safe fix/undo helpers via parity_artwork_hygiene.py |
| Missing-file repair and duplicate merge (v1.14.0) | Done | Missing-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) | Done | Title/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) | Done | Signed 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) | Done | GET /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) | Done | Every 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) | Done | A 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) | Done | scripts/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 feature | OpenBox decision |
|---|---|
| Windows shell replacement | Not applicable on Linux desktop environments |
| LEDBlinky / cabinet LED control | Use external Linux arcade I/O tools instead |
| Teknoparrot arcade launcher | Use Lutris/Wine launch profiles for supported titles |
| Native Xbox PC package scanning | Use Heroic/Lutris/Xbox Cloud entries instead |
| Bundled proprietary media packs | Replaced by free bundled media packs in OpenBox |
| LaunchBox Premium account cloud library | Replaced by OpenBox's local mounted-folder statistics sync and opt-in catalog sync plus local backups (no LaunchBox account involved) |
| LaunchBox online theme storefront | Replaced 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:
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.
| Module | Area |
|---|---|
parity_backup.py | Library backups |
parity_collections.py | Smart collections (named query shelves) |
parity_radio.py | Backlog Radio recommendations |
parity_constellation.py | Constellation relationship graph |
parity_deeplinks.py | Deep links |
parity_discovery.py | Discovery queue |
parity_emulator_defs.py | Emulator-def registry |
parity_esde_import.py | ES-DE gamelist import |
parity_export.py | Library export |
parity_faugus.py | Faugus integration |
parity_filter_presets.py | Filter presets |
parity_gamescope.py | Gamescope guest |
parity_gameyfin.py | Gameyfin storefront |
parity_household.py | Household records and sync |
parity_identity.py | Identity / instance |
parity_igdb.py | IGDB metadata |
parity_import.py | Imports |
parity_import_policy.py | Import policy |
parity_insights.py | Play insights |
parity_integrations.py | Third-party integrations |
parity_launch_doctor.py | Launch Doctor preflight |
parity_launchbox_import.py | LaunchBox XML migration |
parity_library_sync.py | Causal catalog synchronization |
parity_media.py | Media jobs |
parity_memories.py | Memory-root import and gallery |
parity_obs_bridge.py | OBS replay-buffer bridge |
parity_perf.py | Performance projections |
parity_party.py | Big Box party mode |
parity_picker.py | Play picker recommendations |
parity_premium.py | Premium-equivalent workflows |
parity_query.py | Natural-language library query grammar |
parity_redact.py | Log redaction |
parity_reels.py | Deterministic clip/reel manifests |
parity_resume.py | Quick Resume state capability and storage |
parity_saves.py | Saves |
parity_save_tools.py | Save tools (Ludusavi/Hoard) |
parity_screenscraper.py | ScreenScraper matching |
parity_setup_preview.py | Setup Center preview |
parity_story.py | Per-game Story timeline projection |
parity_storefront.py | Storefront imports |
parity_steam_bridge.py | Steam shortcuts.vdf bridge |
parity_steamgrid.py | SteamGridDB artwork provider |
parity_tracking.py | Play tracking |
parity_time_machine.py | Journal timeline and revert planning |
parity_trophies.py | Local launcher trophies |
parity_wine.py | Wine/Proton prefix management |