From 50d7950126a5b4b336f000675bb481432d5dcf48 Mon Sep 17 00:00:00 2001 From: Juan Cordero Pascual Date: Sun, 9 Aug 2026 22:27:32 +0200 Subject: [PATCH 1/2] feat(apps): enable Uptime Kuma app template The uptime-kuma catalog entry existed but was never turned on (available: false) and pinned image tag :1, which is the frozen 1.x line (last pushed Oct 2025). Bumped to :2, the current major tag (matches the 2.5.0 release), and added a connection block so the install screen shows the URL and explains the first-run flow: pick the embedded database, then create the admin account. There is no default account. Verified with a real deploy on a self-hosted server. Pulled and ran both :1 and :2, container healthy, web UI reachable, account creation flow completed end to end on :2. packages/core/src/apps/catalog.test.ts fails to run in this checkout on an unrelated zod/vitest resolution error. It fails the same way on a clean upstream/main checkout with no changes, so it looks like a local node_modules issue, not something introduced by this change. --- packages/core/src/apps/catalog.json | 21 ++++++++++++++++--- .../core/src/apps/catalog/uptime-kuma.json | 21 ++++++++++++++++--- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/packages/core/src/apps/catalog.json b/packages/core/src/apps/catalog.json index f71348b63..41d182eff 100644 --- a/packages/core/src/apps/catalog.json +++ b/packages/core/src/apps/catalog.json @@ -1267,7 +1267,8 @@ ] }, { - "available": false, + "available": true, + "verified": true, "id": "uptime-kuma", "name": "Uptime Kuma", "description": "Self-hosted uptime monitoring with status pages and alerts.", @@ -1283,7 +1284,7 @@ "services": [ { "name": "uptime-kuma", - "image": "louislam/uptime-kuma:1", + "image": "louislam/uptime-kuma:2", "ports": [ "3001:3001" ], @@ -1294,7 +1295,21 @@ ], "restart": "unless-stopped" } - ] + ], + "connection": { + "title": "Open Uptime Kuma", + "outputs": [ + { + "id": "url", + "label": "URL", + "source": "publicUrl:uptime-kuma", + "kind": "url" + } + ], + "firstLogin": { + "note": "First run asks you to pick a database. Choose \"embedded\": this template only provisions Uptime Kuma's own SQLite volume, not an external MariaDB. Then create the admin user. There is no default account." + } + } }, { "available": false, diff --git a/packages/core/src/apps/catalog/uptime-kuma.json b/packages/core/src/apps/catalog/uptime-kuma.json index 2f29fa9a4..c676284e4 100644 --- a/packages/core/src/apps/catalog/uptime-kuma.json +++ b/packages/core/src/apps/catalog/uptime-kuma.json @@ -1,5 +1,6 @@ { - "available": false, + "available": true, + "verified": true, "id": "uptime-kuma", "name": "Uptime Kuma", "description": "Self-hosted uptime monitoring with status pages and alerts.", @@ -15,7 +16,7 @@ "services": [ { "name": "uptime-kuma", - "image": "louislam/uptime-kuma:1", + "image": "louislam/uptime-kuma:2", "ports": [ "3001:3001" ], @@ -26,5 +27,19 @@ ], "restart": "unless-stopped" } - ] + ], + "connection": { + "title": "Open Uptime Kuma", + "outputs": [ + { + "id": "url", + "label": "URL", + "source": "publicUrl:uptime-kuma", + "kind": "url" + } + ], + "firstLogin": { + "note": "First run asks you to pick a database. Choose \"embedded\": this template only provisions Uptime Kuma's own SQLite volume, not an external MariaDB. Then create the admin user. There is no default account." + } + } } From 9df9d3d909db5b7fd98a2a52f45457bf9de4302c Mon Sep 17 00:00:00 2001 From: Juan Cordero Pascual Date: Sun, 9 Aug 2026 22:41:24 +0200 Subject: [PATCH 2/2] test(apps): assert uptime-kuma catalog entry is enabled Fails if available flips back to false or the image tag drifts off :2. Confirmed locally: reverting available to false fails this test, restoring it passes again. --- packages/core/src/apps/catalog.test.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/core/src/apps/catalog.test.ts b/packages/core/src/apps/catalog.test.ts index b01e34210..ec5a5f70e 100644 --- a/packages/core/src/apps/catalog.test.ts +++ b/packages/core/src/apps/catalog.test.ts @@ -25,6 +25,13 @@ describe("app catalog (JSON)", () => { expect(isValidAppTemplate(null)).toBe(false); expect(isValidAppTemplate({ id: "x", name: "X", description: "d", kind: "template", logo: "x", category: "bogus" })).toBe(false); }); + + it("uptime-kuma is enabled on the current major image", () => { + const app = APP_TEMPLATES.find((a) => a.id === "uptime-kuma"); + expect(app?.available).toBe(true); + expect(app?.services?.[0]?.image).toBe("louislam/uptime-kuma:2"); + expect(app?.connection?.outputs.some((o) => o.source === "publicUrl:uptime-kuma")).toBe(true); + }); }); // A minimal valid template used to probe the stricter, version-aware gate.