site: owner-only dashboard link in header, mobile menu and homepage (g then d from any page); /start skips the site chrome JS
All checks were successful
Deploy production / deploy (push) Successful in 2m56s

- Header/footer moved to #lib/components/SiteChrome.svelte, returned by a universal
  +layout.ts load only for non-immersive pages, so /start and the book reader never
  download icon libraries, dropdowns or the bits-ui Sheet. /start: 36 -> 18 JS files,
  133 -> 78 KB gzip.
- Header logo is a hashed asset (inlined), so it is cached with the build.
- inlineStyleThreshold 4096: tiny page/component CSS is inlined into the HTML.
- Umami is not loaded on /start.
This commit is contained in:
2026-10-24 15:35:38 +00:00
parent 112c31d194
commit cc4b10f239
8 changed files with 505 additions and 394 deletions

12
src/routes/+layout.ts Normal file
View File

@@ -0,0 +1,12 @@
import { isImmersive } from '#lib/chrome.js';
import type { LayoutLoad } from './$types';
// The site header/footer (icon libraries, dropdowns, the bits-ui Sheet) live in SiteChrome,
// imported only for pages that show them. Immersive pages such as the /start new-tab
// dashboard never download that code. Universal loads may return components.
export const load: LayoutLoad = async ({ data, url }) => ({
...data,
Chrome: isImmersive(url.pathname)
? null
: (await import('#lib/components/SiteChrome.svelte')).default
});