From f1148cf87ff0b171ba39b5eb109411b9f48f6f5a Mon Sep 17 00:00:00 2001 From: enricobuehler Date: Sat, 8 Aug 2026 01:09:06 +0200 Subject: [PATCH 1/4] pin: playnite 0.4.0, and add lutris + heroic 0.1.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All three are published and their integrity hashes cross-check against the live registry (`bun run validate`: 5/5 ok). What is NOT done is the part only a person can do, so this PR is deliberately RED. * playnite 0.3.0 -> 0.4.0. The published 0.3.0 emits launch.kind = "command" for every game, which the security review made operator-only, so on a host carrying that change it syncs nothing at all. 0.4.0 publishes through the host-owned `playnite` kind instead, and adds a fullscreen launcher tile. * lutris 0.1.0 and heroic 0.1.0, both first releases. Parity verified against a live host on .21 for each (lutris: 1 entry identical; heroic: 1 entry identical). lutris only works at all on plugin-kit 0.3.1 — the kit's SQLite reader never opened a database on Linux before that. minHost is 0.25.0 on all three, NOT the 0.15.0 the older entries carry. Measured against tag v0.24.0, the latest release: it contains neither 6f07bd94 (role/launcher_ui), nor 8ff2c2e1 (the playnite launch kind), nor 81039581 (the operator-only command rule). So on a released host today, the currently pinned playnite 0.3.0 still WORKS and 0.4.0 would not, and lutris/heroic launcher tiles would be refused. 0.25.0 is the release that carries the wire; minHost is exactly the field that keeps these entries from being offered before it exists. verification.reviewedAt is unset on all three — including playnite, whose 2026-07-27 date attested to 0.3.0 and must not ride along to a different build. The validator requires the field, so this cannot merge until a human reviews each published tarball and dates it. That is the intended gate, not an oversight: a merge here ships code to every host that trusts this index, under unom's key. --- v1/index.json | 74 +++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 54 insertions(+), 20 deletions(-) diff --git a/v1/index.json b/v1/index.json index 2ba15bd..5fd3a52 100644 --- a/v1/index.json +++ b/v1/index.json @@ -3,6 +3,60 @@ "name": "unom official", "generated": "2026-07-30T21:10:53Z", "plugins": [ + { + "id": "heroic", + "pkg": "@punktfunk/plugin-heroic", + "registry": "https://git.unom.io/api/packages/unom/npm/", + "title": "Heroic Games Launcher", + "description": "Adds your installed Heroic Games Launcher titles (Epic, GOG, Amazon) to the host game library as a provider, with their cover art. Includes a tile that opens Heroic itself.", + "icon": "swords", + "author": "unom", + "homepage": "https://git.unom.io/unom/punktfunk-plugin-heroic", + "license": "MIT OR Apache-2.0", + "version": "0.1.0", + "integrity": "sha512-CtibDEkpWPRptyYg+6wVcTAjW+p1Ccfv8w2dGw2z6uvdTCNAp99lpUS/F7UPWd2bV4sTjiRV+SZ2QEtBJFeMqw==", + "verification": {}, + "minHost": "0.25.0", + "platforms": [ + "linux" + ] + }, + { + "id": "lutris", + "pkg": "@punktfunk/plugin-lutris", + "registry": "https://git.unom.io/api/packages/unom/npm/", + "title": "Lutris", + "description": "Adds your installed Lutris games to the host game library as a provider, with their cover art, and ends the streaming session when you quit the game. Includes a tile that opens Lutris itself.", + "icon": "joystick", + "author": "unom", + "homepage": "https://git.unom.io/unom/punktfunk-plugin-lutris", + "license": "MIT OR Apache-2.0", + "version": "0.1.0", + "integrity": "sha512-4KyyTHpQ0UkHvYQC1niUmJiKKo7Me4Of4RwDbpbt3Up7p9bFOD7PyU3gcwTwY5AlFxT+Up5wDaEUgnZmAfUtGw==", + "verification": {}, + "minHost": "0.25.0", + "platforms": [ + "linux" + ] + }, + { + "id": "playnite", + "pkg": "@punktfunk/plugin-playnite", + "registry": "https://git.unom.io/api/packages/unom/npm/", + "title": "Playnite", + "description": "Bridges your Playnite library on Windows into the host game library, keeping installed games, metadata, and launch commands in sync as a library provider. Includes a console-hosted web UI for filters and cover art.", + "icon": "library-big", + "author": "unom", + "homepage": "https://git.unom.io/unom/punktfunk-plugin-playnite", + "license": "MIT OR Apache-2.0", + "version": "0.4.0", + "integrity": "sha512-G7qb97Vrj7RKo9t/bwvfTkswFB3LBqa/KK2s9sr3bP7veJdT9supTzLK2SbDI0hBEWwP8Kzmxtx2/qdLpmDBMA==", + "verification": {}, + "minHost": "0.25.0", + "platforms": [ + "windows" + ] + }, { "id": "rom-manager", "pkg": "@punktfunk/plugin-rom-manager", @@ -24,26 +78,6 @@ "windows" ] }, - { - "id": "playnite", - "pkg": "@punktfunk/plugin-playnite", - "registry": "https://git.unom.io/api/packages/unom/npm/", - "title": "Playnite", - "description": "Bridges your Playnite library on Windows into the host game library, keeping installed games, metadata, and launch commands in sync as a library provider. Includes a console-hosted web UI for filters and cover art.", - "icon": "library-big", - "author": "unom", - "homepage": "https://git.unom.io/unom/punktfunk-plugin-playnite", - "license": "MIT OR Apache-2.0", - "version": "0.3.0", - "integrity": "sha512-XiWZLRqRGpcx6e3rHV/+7n3mWC9p6rs7a20oGxkzca/ty+4cVKq0I566byUJ+pWSa3TXRaQb4y4QhLNrHvhinQ==", - "verification": { - "reviewedAt": "2026-07-27" - }, - "minHost": "0.15.0", - "platforms": [ - "windows" - ] - }, { "id": "virtualhere", "pkg": "@punktfunk/plugin-virtualhere", From 96f876940b6bca537e267ba8d5979e337508a8bf Mon Sep 17 00:00:00 2001 From: enricobuehler Date: Sat, 8 Aug 2026 01:42:48 +0200 Subject: [PATCH 2/4] pin: add steam 0.1.0 Published and parity-verified. Run against a live host on .21 with this plugin unregistered, so the host was still on its built-in scanner: scan: present: 5 games, 1 launcher entries parity: OK - 5 entries identical (+1 expected steam:big-picture tile) That box has 10 appmanifests; 5 are real games and the rest are Proton and redistributable tools the kit's isSteamTool filters. Both sides independently produced the same 5 - the strongest parity sample of this wave (lutris and heroic were n=1 each). minHost 0.25.0 like the others: the launcher tiles need the role/launcher_ui wire, which no released host has yet. platforms is [linux, windows] because the kit's steamRoots() handles both (Program Files + the HKLM InstallPath on win32, POSIX homes otherwise). ONLY THE LINUX ARM HAS BEEN EXERCISED - the Windows path is untested. epic, gog and xbox are published too but are deliberately NOT here: none has a green parity run. .173 has no Epic game installed (Fortnite is an incomplete download - 83 GB wanted, 24.6 GB free) and no GDK game at all, so there was nothing for either to reconcile against. reviewedAt stays unset - still the reviewer's to write. --- v1/index.json | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/v1/index.json b/v1/index.json index 5fd3a52..6162519 100644 --- a/v1/index.json +++ b/v1/index.json @@ -78,6 +78,25 @@ "windows" ] }, + { + "id": "steam", + "pkg": "@punktfunk/plugin-steam", + "registry": "https://git.unom.io/api/packages/unom/npm/", + "title": "Steam", + "description": "Adds your installed Steam games and non-Steam shortcuts to the host game library as a provider, with their art. Includes tiles that open Big Picture or the desktop client.", + "icon": "library", + "author": "unom", + "homepage": "https://git.unom.io/unom/punktfunk-plugin-steam", + "license": "MIT OR Apache-2.0", + "version": "0.1.0", + "integrity": "sha512-F+0cQIU5NqKh0WhFtf12KAQMeyRWYThQOrDukDpIMvX5oBk5vU3HTDRkngnKOjQgLaniT9gkoEoAT0YdQ3D+MA==", + "verification": {}, + "minHost": "0.25.0", + "platforms": [ + "linux", + "windows" + ] + }, { "id": "virtualhere", "pkg": "@punktfunk/plugin-virtualhere", From 2c4c2bb61496b85f69bb1cc2728a213e14b8fdfe Mon Sep 17 00:00:00 2001 From: enricobuehler Date: Sat, 8 Aug 2026 02:04:37 +0200 Subject: [PATCH 3/4] pin: add epic 0.1.0 Fortnite finished installing on .173, so the gate could finally run. Its manifest is now in Manifests\ with bIsIncompleteInstall=False and the folder has real content (Engine, FortniteGame); disk went 24.6 GB -> 69 GB free, which was the actual blocker all along. Parity against the live host, this plugin unregistered so the host was still on its built-in scanner: scan: present: 1 games, 0 launcher entries parity: OK - 1 entries identical exit: 0 Note the 0 launcher entries: unlike lutris/heroic/steam/playnite, this plugin publishes no launcher tile. Nothing is wrong - it simply does not implement the kit's launchers() hook. minHost 0.25.0 is deliberately conservative. The `epic` launch kind this plugin emits IS already in v0.24.0 (ecfa7121), and it sends no role/launcher_ui, so a lower floor is probably correct - but it has only ever been verified against a main-build host, so the floor is what was actually tested. Too high only delays availability; too low breaks installs. platforms is [windows] - it reads %ProgramData%\Epic\EpicGamesLauncher\Data\Manifests. Still NOT pinned: gog (no hardware yet) and xbox (structurally cannot see pure-UWP Game Pass titles - see the PR body). --- v1/index.json | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/v1/index.json b/v1/index.json index 6162519..f8d16df 100644 --- a/v1/index.json +++ b/v1/index.json @@ -3,6 +3,24 @@ "name": "unom official", "generated": "2026-07-30T21:10:53Z", "plugins": [ + { + "id": "epic", + "pkg": "@punktfunk/plugin-epic", + "registry": "https://git.unom.io/api/packages/unom/npm/", + "title": "Epic Games Store", + "description": "Adds your installed Epic Games Store titles to the host game library as a provider, with their cover art.", + "icon": "store", + "author": "unom", + "homepage": "https://git.unom.io/unom/punktfunk-plugin-epic", + "license": "MIT OR Apache-2.0", + "version": "0.1.0", + "integrity": "sha512-t0opqVmsKguLh1BX2z+P4x/nYFpBTirzngM94N/ggiceQeamLxDPC6clgKrYTh/HuJfpTP9MWSSEytAPwXwjKw==", + "verification": {}, + "minHost": "0.25.0", + "platforms": [ + "windows" + ] + }, { "id": "heroic", "pkg": "@punktfunk/plugin-heroic", From 8c3e65764122280325c2aea4a9e8b847b74eb3a7 Mon Sep 17 00:00:00 2001 From: enricobuehler Date: Sat, 8 Aug 2026 03:30:50 +0200 Subject: [PATCH 4/4] pin: add gog 0.1.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Completes the wave — all six library sources are now pinned. gog 0.1.0 is published but CANNOT SEE A SINGLE GAME on any machine: the kit's regSubKeys built its match prefix from the abbreviated HKLM\... key it was handed, while reg.exe always echoes HKEY_LOCAL_MACHINE\..., so it returned []. 0.1.1 is the first build that works, on plugin-kit 0.3.2. Verified on .173 against a live host with the PUBLISHED 0.3.2 (clean install), this plugin unregistered so the host was still on its built-in scanner: detect present (was absent), scan 1 games (was 0), and the id, title, launch recipe and metadata all match the built-in scanner exactly. Parity reports art.hero/logo/header changed, and that is EXPECTED rather than a loss: this plugin deliberately emits no art, the host's own built-in gog scanner does not read art from disk either (it attaches cached_art), and a background pf-art-warmer thread resolves art host-side every 300s for exactly gog and xbox because the other stores carry their own. Entry ids are byte-identical, so the warmer repopulates these entries just as it did the scanner's. reviewedAt stays unset — still the reviewer's to write. --- v1/index.json | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/v1/index.json b/v1/index.json index f8d16df..f8d9a93 100644 --- a/v1/index.json +++ b/v1/index.json @@ -21,6 +21,24 @@ "windows" ] }, + { + "id": "gog", + "pkg": "@punktfunk/plugin-gog", + "registry": "https://git.unom.io/api/packages/unom/npm/", + "title": "GOG", + "description": "Adds your installed GOG games to the host game library as a provider. GOG launches each game's executable directly — Galaxy is never involved.", + "icon": "disc-3", + "author": "unom", + "homepage": "https://git.unom.io/unom/punktfunk-plugin-gog", + "license": "MIT OR Apache-2.0", + "version": "0.1.1", + "integrity": "sha512-i538ZFHC2zXMo3OjFsxN3VzwW4SKEyXaYVe59o7hlbUL3xpd3HCVyV1L+VVzCB1MjMVWAkoJ/6OXpzH9Jnbp5Q==", + "verification": {}, + "minHost": "0.25.0", + "platforms": [ + "windows" + ] + }, { "id": "heroic", "pkg": "@punktfunk/plugin-heroic",