From 8e19e1116638e6787f2794650af7ce2e541b57fb Mon Sep 17 00:00:00 2001 From: callumalpass Date: Mon, 9 Nov 2026 14:47:15 +1100 Subject: [PATCH] Hide TaskNotes rc.12 and reject two offered versions of one pack rc.12 was still listed next to rc.19, so the Editor showed two TaskNotes task packs. Hiding only changes catalog.json; the published pack bytes and rc.19's upgrade_from baseline are unchanged. The build now fails when a catalog offers more than one non-hidden version of the same pack, so a superseded version cannot be left visible again. --- dist/catalog.json | 2 +- packs/tasknotes.task/0.3.0-rc.12.pack.yaml | 2 +- scripts/build.mjs | 12 ++++++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/dist/catalog.json b/dist/catalog.json index d384356..c96c070 100644 --- a/dist/catalog.json +++ b/dist/catalog.json @@ -822,7 +822,7 @@ ] }, "installation": { - "visibility": "default", + "visibility": "hidden", "recommendation": "integration-managed", "primary_type": "task", "caution": "TaskNotes applications manage the contract and schemas; the installed task type remains editable.", diff --git a/packs/tasknotes.task/0.3.0-rc.12.pack.yaml b/packs/tasknotes.task/0.3.0-rc.12.pack.yaml index e8449b9..f846273 100644 --- a/packs/tasknotes.task/0.3.0-rc.12.pack.yaml +++ b/packs/tasknotes.task/0.3.0-rc.12.pack.yaml @@ -12,7 +12,7 @@ display: badges: - TaskNotes compatible installation: - visibility: default + visibility: hidden recommendation: integration-managed primary_type: task caution: TaskNotes applications manage the contract and schemas; the installed task type remains editable. diff --git a/scripts/build.mjs b/scripts/build.mjs index 2964c93..7be9e81 100644 --- a/scripts/build.mjs +++ b/scripts/build.mjs @@ -148,6 +148,18 @@ for (const packFile of packFiles) { } } +// Apps list every non-hidden pack, so a superseded version left visible shows +// as a duplicate choice. Hide the previous version when publishing a new one. +const offered = new Map(); +for (const pack of packs) { + if (pack.installation.visibility === "hidden") continue; + const previous = offered.get(pack.id); + if (previous) { + fail(`${pack.id} offers both ${previous} and ${pack.version}; hide the superseded version.`); + } + offered.set(pack.id, pack.version); +} + const catalog = { ...catalogSource, contracts: [...contracts.values()].sort(compareIdentity),