4 Commits
Author SHA1 Message Date
enricobuehler 744520f6b2 Merge pull request 'Name the mark this tile will carry when it wakes' (#2) from docs/launcher-icon-token-note into main
CI / build (push) Successful in 19s
CI / publish (push) Successful in 22s
2026-08-13 07:12:03 +00:00
enricobuehler e475e13ffc docs: name the mark this tile will carry when it wakes
CI / build (pull_request) Successful in 16s
CI / publish (pull_request) Skipped
The Xbox app's launcher tile is deliberately empty — `launcherEntries` returns
nothing until the host has a verified `launcher_ui` activation for it, and
emitting one before that earns a 400, which is the host saying precisely
so.

What the comment now records is that the art is not the blocker. Every
client already bundles the `xbox` mark (punktfunk assets/launcher-icons),
shipped dormant with the launcher-icon work, so the entry this function
returns one day carries `icon: "xbox"` and needs no client release to look
right. Turning this launcher on stays the one-line change it was always
meant to be.

Comment only: no emitted entry changes, and the function still returns an
empty list.
2026-08-13 09:09:38 +02:00
enricobuehler 7f6176510a Merge pull request 'Drop the @punktfunk/host dependency this plugin never imports' (#1) from chore/drop-spurious-sdk-dep into main
CI / build (push) Successful in 32s
CI / publish (push) Skipped
Reviewed-on: #1
2026-08-08 16:19:02 +00:00
enricobuehler e846b4c0e5 fix(deps): drop the @punktfunk/host dependency this plugin never imports
CI / build (pull_request) Successful in 17s
CI / publish (pull_request) Skipped
This plugin imports nothing from the SDK — everything it uses comes from
`@punktfunk/plugin-kit`, which already declares `@punktfunk/host` as a
peerDependency. Listing it here as a runtime dependency was redundant, and the
redundancy had a cost.

It is what stops an SDK fix from ever reaching an installed plugin. With the SDK
declared per-plugin, bun honours each plugin's own locked resolution and gives it a
PRIVATE NESTED COPY under `node_modules/@punktfunk/plugin-<x>/node_modules/`, which
then shadows the shared copy at the root of the operator's plugins tree. Measured on
a live host 2026-08-08: publishing `@punktfunk/host@0.1.3` — the release that lets a
library scanner register `category`, so it stays out of the console nav — reached the
tree root and still left five nested 0.1.2 copies, so every plugin kept importing the
old SDK and the fix appeared to do nothing.

Dropping it leaves the kit's peer range as the single source of truth, so there is one
hoisted copy that the host can actually keep current.

Nothing about the runtime changes: bun installs the kit's peer, and the SDK resolves
exactly as before — verified here (host 0.1.3 resolved, typecheck, tests, lint and
build all green).

Version bumped to 0.1.1; publishing is what carries the change to operators.
2026-08-08 14:13:49 +02:00
3 changed files with 9 additions and 7 deletions
+3 -4
View File
@@ -5,8 +5,7 @@
"": {
"name": "@punktfunk/plugin-xbox",
"dependencies": {
"@punktfunk/host": "^0.1.2",
"@punktfunk/plugin-kit": "^0.3.1",
"@punktfunk/plugin-kit": "^0.3.3",
"effect": "4.0.0-beta.99",
"fast-xml-parser": "^5.2.5",
},
@@ -50,9 +49,9 @@
"@nodable/entities": ["@nodable/entities@3.0.0", "", {}, "sha512-8L9xFeTYKhm49xfIypoe2W5wV1m/3Z58kT+7kR9A8OyFxcPduI4VmxaUMQyKYrRjUoLLSXv6EKKID5Tvj9cUVw=="],
"@punktfunk/host": ["@punktfunk/host@0.1.2", "https://git.unom.io/api/packages/unom/npm/%40punktfunk%2Fhost/-/0.1.2/host-0.1.2.tgz", { "optionalDependencies": { "undici": "^7.0.0" }, "peerDependencies": { "effect": "^4.0.0-beta.98" }, "bin": { "punktfunk-scripting": "dist/runner-cli.js" } }, "sha512-mZXIocLWAeXXl3nU5YmVJp1rp74ZXhphTI67nWnqkqXZTxUsNHE9GG5BQvclI0TCjnVn+bx95zi/3w0kTIMKzw=="],
"@punktfunk/host": ["@punktfunk/host@0.1.3", "https://git.unom.io/api/packages/unom/npm/%40punktfunk%2Fhost/-/0.1.3/host-0.1.3.tgz", { "optionalDependencies": { "undici": "^7.0.0" }, "peerDependencies": { "effect": "^4.0.0-beta.98" }, "bin": { "punktfunk-scripting": "dist/runner-cli.js" } }, "sha512-WpS0a3yavoqDBA3V8xSZW298HRUzF8TFuwSKf3hV1RFHZ2lM6V77E6mFJTej3p+B1wnNWzphtlY+WgcsUx/34A=="],
"@punktfunk/plugin-kit": ["@punktfunk/plugin-kit@0.3.1", "https://git.unom.io/api/packages/unom/npm/%40punktfunk%2Fplugin-kit/-/0.3.1/plugin-kit-0.3.1.tgz", { "peerDependencies": { "@punktfunk/host": "^0.1.2", "effect": "^4.0.0-beta.98", "react": "^19.2.0" }, "optionalPeers": ["react"] }, "sha512-n90U6HOz72ADTR5GEclZL5zuGbrDNBJ7WXxZz6dXbA/7rf5Z+cHXX4IZ3HU4Dntkl8I6QV6B++5gECP2F5Oovg=="],
"@punktfunk/plugin-kit": ["@punktfunk/plugin-kit@0.3.3", "https://git.unom.io/api/packages/unom/npm/%40punktfunk%2Fplugin-kit/-/0.3.3/plugin-kit-0.3.3.tgz", { "peerDependencies": { "@punktfunk/host": "^0.1.3", "effect": "^4.0.0-beta.98", "react": "^19.2.0" }, "optionalPeers": ["react"] }, "sha512-XzqqYq++RqsIPc7F/cuqlXfk0aABccY2T6NuaVETlw4jR+kd2ayGkv8ny7k8qmb3gNiKW7e3+smhwp1600pDGg=="],
"@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="],
+2 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@punktfunk/plugin-xbox",
"version": "0.1.0",
"version": "0.1.1",
"private": false,
"type": "module",
"description": "Punktfunk plugin: adds your installed Xbox / Game Pass titles to the host library.",
@@ -36,8 +36,7 @@
"check": "bunx biome check ."
},
"dependencies": {
"@punktfunk/host": "^0.1.2",
"@punktfunk/plugin-kit": "^0.3.1",
"@punktfunk/plugin-kit": "^0.3.3",
"effect": "4.0.0-beta.99",
"fast-xml-parser": "^5.2.5"
},
+4
View File
@@ -152,6 +152,10 @@ export const parseGameConfig = (
* The tile that opens the Xbox app itself (design D4) — see the `launcher` config field. Empty
* until the host has a verified `launcher_ui` activation for it; emitting one now would be refused
* with a 400, which is the host saying exactly that.
*
* Its brand mark is already shipped by every client under the token `"xbox"`
* (punktfunk/assets/launcher-icons), so the entry this returns one day carries `icon: "xbox"` and
* needs no client release to look right.
*/
export const launcherEntries = (_cfg: {
launcher?: boolean;