An un-routed app path falls back to serving the portal, which would otherwise
load the whole shell inside itself endlessly. Detect self-embedding and show a
'not available yet' placeholder instead.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>