Repository navigation
Description
Summary
If a team has never published its website, its public pages are blank. /changelog, /blog and /docs return 200 with an empty page: no header, no content, no footer, no message. Published changelog entries, blog posts and docs don't show either. The homepage returns a 404 that is also blank.
A visitor, or the team owner checking their site, sees a blank screen. Nothing explains that the site hasn't been published yet.
Steps to reproduce (QA, v0.0.1)
- Use a team that has no site release. On QA,
firstandhathiwere like this before 2026-11-07;firststill is. - Publish a changelog entry (or a blog post or doc) from the dashboard.
- Open
https://first.frontlit.cluster.clqa.site/changelog.
$ curl -s -o /dev/null -w "%{http_code}" https://first.frontlit.cluster.clqa.site/changelog
200 # body renders nothing visible
$ curl -s -o /dev/null -w "%{http_code}" https://first.frontlit.cluster.clqa.site/
404 # also renders nothing visible
docs-sanity has a release, and the same routes render normally there. Publishing hathi's Changelog page (Website → Pages → Changelog → Publish) fixed hathi's /changelog right away.
Cause
apps/sites/components/site-chrome.tsx renders /changelog, /blog and /docs through SiteChrome. pageLayout() falls back from the index page to the homepage, then to []:
const page = (await getPageBySlug(teamId, slug)) ?? (await getPageBySlug(teamId, ""));
return page?.layout ?? [];If neither page is published, the layout is empty. There is no content-feed data slot, so the published entries never render. The comment ("A site can expose system content before its layout is published") says this content should still show, but nothing renders it.
Expected
Choose one, keeping it simple:
- Show the content anyway. If the layout is empty, render the built-in content feed (changelog, blog or docs index) with a minimal themed header and footer built from page-builder primitives. Published content is then always reachable.
- Or say the site isn't live. Show a clear "This site hasn't been published yet" page, and return 404 or 503 for these routes, not a blank 200.
Separately, the dashboard could warn when someone publishes a changelog entry, post or doc while the website has no release, for example: "Your website isn't published yet, so this won't be visible."
Notes
- This was found during the QA smoke test of the changelog feature (Add managed product updates and public changelog #195). It isn't caused by that change:
/blogand/docsbehave the same way. - Blank 200 responses on public hosts are also bad for SEO and uptime checks.
Activity