From 4742e042918fb8fe08035a3a847276c52f9fc004 Mon Sep 17 00:00:00 2001 From: Oto Macenauer Date: Thu, 2 Jul 2026 09:35:24 +0200 Subject: [PATCH] feat: iframe-based app onboarding as a temporary integration path Add an iframe onboarding mode so teams can be listed in the marketplace with a single URL, without a headless package/release artifact. Explicit stopgap. - apps.json: new "type": "iframe" + "url" entry type (no repo/marketplace.json/ artifact required); optional "temporary": true to flag entries for migration. - src/utils/apps.js: getAppPages emits a single route per iframe entry. - src/pages/[...path].astro: renders a full-viewport + + +) : ( + +)} diff --git a/src/styles/marketplace.css b/src/styles/marketplace.css index 8b436a7..fb91551 100644 --- a/src/styles/marketplace.css +++ b/src/styles/marketplace.css @@ -222,3 +222,11 @@ wf-body.mp-wrapped #sidebar { top: var(--mp-chrome-h) !important; } color: var(--text-muted); border: 1px solid var(--border); } + +/* iframe-onboarding entries (issue #10) — flags an externally embedded app */ +.mp-tag-external { + background: var(--color-kb-50); + color: var(--color-kb-600); + border-color: var(--color-kb-100); + font-weight: 600; +} diff --git a/src/utils/apps.js b/src/utils/apps.js index 1d5d129..cda9a19 100644 --- a/src/utils/apps.js +++ b/src/utils/apps.js @@ -39,6 +39,24 @@ export function getAppPages(cwd, headless) { const appDir = join(appsDir, app.slug); const appHeadless = app.headless ?? headless; + if (app.type === 'iframe') { + // iFrame onboarding mode: no artifact on disk — emit a single route that + // renders a full-viewport