fix(demo-ui): demoable apps launch in-frame; 'Not available in demo' label

- Register the 8 new placeholder apps in DEMO_MOCK_UI so they're launchable
  and installable in the demo.
- Demo bypasses the new-tab/tab-launch lists for demoable apps — they're
  served same-origin by the mock backend with no framing headers, so they
  render in the in-app session instead of opening broken localhost tabs.
- Non-demoable apps now say 'Not available in demo' instead of 'No demo'.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-07-14 03:39:56 +01:00
co-authored by Claude Fable 5
parent 7d7a7d08af
commit 4135ee5f4a
5 changed files with 18 additions and 6 deletions
+4 -1
View File
@@ -404,6 +404,7 @@ import {
buildServiceCategories, useServiceCategories,
} from './apps/appsConfig'
import { getCuratedAppList, INSTALLED_ALIASES, type MarketplaceApp } from './marketplace/marketplaceData'
import { IS_DEMO, isDemoApp } from '@/composables/useDemoIntro'
const { t } = useI18n()
const router = useRouter()
@@ -633,7 +634,9 @@ function launchAppNow(id: string) {
}
return
}
if (!isMobile && pkg && opensInTab(id)) {
// Demo: demoable apps are served same-origin by the mock backend, so the
// tab-launch list (real apps with framing headers) doesn't apply.
if (!isMobile && pkg && opensInTab(id) && !(IS_DEMO && isDemoApp(id))) {
const url = resolveRuntimeLaunchUrl(pkg)
if (url) {
window.open(url, '_blank', 'noopener,noreferrer')