@pyreon/zero 0.12.12 → 0.12.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,6 +11,32 @@ interface StartClientOptions {
11
11
  /**
12
12
  * Start the client-side app — hydrates SSR content or mounts fresh for SPA.
13
13
  *
14
+ * ## Loader data flow
15
+ *
16
+ * Direct navigation to a route with a `loader` function needs data to be
17
+ * available on the VERY FIRST render. This is handled in two modes:
18
+ *
19
+ * - **SSR mode (zero's default)**: the server pre-runs loaders, renders the
20
+ * HTML with loader data already applied, and embeds a JSON blob in the
21
+ * HTML as `window.__PYREON_LOADER_DATA__`. On the client we read that
22
+ * blob and call `hydrateLoaderData(router, data)` BEFORE hydrating — so
23
+ * the hydration pass sees the same data the SSR render produced
24
+ * (avoids hydration mismatches and the flash of "not found" fallback).
25
+ *
26
+ * - **SPA cold start (no SSR content)**: no `__PYREON_LOADER_DATA__` was
27
+ * embedded, so we call `router.replace(currentPath)` after mount to
28
+ * trigger the loader pipeline for the initial route. The first render
29
+ * shows whatever the component displays for `useLoaderData() === undefined`
30
+ * (typically a loading state or fallback); once loaders resolve, the
31
+ * reactive `useLoaderData` re-renders with the data. This matches
32
+ * standard SPA loading behavior.
33
+ *
34
+ * Without this wiring, direct URL navigation to a loader-backed route
35
+ * (e.g. `/posts/3`) showed the "Post not found" fallback indefinitely
36
+ * because `useLoaderData()` returned `undefined` forever. The router
37
+ * only ran loaders on in-app navigation (push/replace), not on initial
38
+ * mount.
39
+ *
14
40
  * @example
15
41
  * import { routes } from "virtual:zero/routes"
16
42
  * import { startClient } from "@pyreon/zero/client"
@@ -1 +1 @@
1
- {"version":3,"file":"client2.d.ts","names":[],"sources":["../../../src/client.ts"],"mappings":";;;;UAQiB,kBAAA;;EAEf,MAAA,EAAQ,WAAA;EAFyB;EAIjC,MAAA,GAAS,WAAA;AAAA;;;;;;;AAYX;;;iBAAgB,WAAA,CAAY,OAAA,EAAS,kBAAA"}
1
+ {"version":3,"file":"client2.d.ts","names":[],"sources":["../../../src/client.ts"],"mappings":";;;;UASiB,kBAAA;;EAEf,MAAA,EAAQ,WAAA;EAFyB;EAIjC,MAAA,GAAS,WAAA;AAAA;;;;;;;AAsCX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAgB,WAAA,CAAY,OAAA,EAAS,kBAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index2.d.ts","names":[],"sources":["../../../src/image-plugin.ts","../../../src/image.tsx","../../../src/link.tsx","../../../src/script.tsx","../../../src/i18n-routing.ts","../../../src/meta.tsx","../../../src/theme.tsx","../../../src/types.ts","../../../src/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index2.d.ts","names":[],"sources":["../../../src/image-plugin.ts","../../../src/image.tsx","../../../src/link.tsx","../../../src/script.tsx","../../../src/i18n-routing.ts","../../../src/meta.tsx","../../../src/theme.tsx","../../../src/types.ts","../../../src/index.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"link2.d.ts","names":[],"sources":["../../../src/link.tsx"],"mappings":";;;UAaiB,SAAA;;EAEf,IAAA;EAFe;EAIf,QAAA;;EAEA,KAAA;EAJA;EAMA,WAAA;EAFA;EAIA,gBAAA;EAAA;EAEA,QAAA;EAEA;EAAA,QAAA;EAIA;EAFA,KAAA;EAIe;EAFf,YAAA;EAEyB;EAAzB,OAAA,KAAY,CAAA,EAAG,UAAA;AAAA;;UAIA,eAAA;EACf,IAAA;EACA,GAAA,EAAiD,aAAA,CAArB,GAAA,CAAI,iBAAA;EAChC,OAAA,GAAU,CAAA,EAAG,UAAA;EACb,YAAA;EACA,YAAA;EACA,QAAA;EACA,aAAA;EALG;EAOH,KAAA;EACA,KAAA;EACA,MAAA;EACA,GAAA;EACA,YAAA;EACA,QAAA;AAAA;;UAIe,aAAA;EARf;EAUA,GAAA,EAAiD,aAAA,CAArB,GAAA,CAAI,iBAAA;EARhC;EAUA,WAAA,GAAc,CAAA,EAAG,UAAA;EARjB;EAUA,gBAAA;EAVQ;EAYR,gBAAA;EAR4B;EAU5B,QAAA;EARgC;EAUhC,aAAA;EARiB;EAUjB,OAAA;AAAA;;;;;;;;;iBAuCc,aAAA,CAAc,IAAA;;;;;AAA9B;;;;;AAoBA;;;;;;;iBAAgB,OAAA,CAAQ,KAAA,EAAO,SAAA,GAAY,aAAA;;AAiH3C;;;;;;;;;;;AA8BA;;;;;;;;;;;;;;;;;;;;;;;iBA9BgB,UAAA,CAAW,SAAA,GAAY,KAAA,EAAO,eAAA,YAA2B,KAAA,EAAO,SAAA;;;;;;;;cA8BnE,IAAA,GAAI,KAAA,EA9B+D,SAAA"}
1
+ {"version":3,"file":"link2.d.ts","names":[],"sources":["../../../src/link.tsx"],"mappings":";;;UAaiB,SAAA;;EAEf,IAAA;EAFe;EAIf,QAAA;;EAEA,KAAA;EAJA;EAMA,WAAA;EAFA;EAIA,gBAAA;EAAA;EAEA,QAAA;EAEA;EAAA,QAAA;EAIA;EAFA,KAAA;EAIe;EAFf,YAAA;EAEyB;EAAzB,OAAA,KAAY,CAAA,EAAG,UAAA;AAAA;;UAIA,eAAA;EACf,IAAA;EACA,GAAA,EAAiD,aAAA,CAArB,GAAA,CAAI,iBAAA;EAChC,OAAA,GAAU,CAAA,EAAG,UAAA;EACb,YAAA;EACA,YAAA;EACA,QAAA;EACA,aAAA;EALG;EAOH,KAAA;EACA,KAAA;EACA,MAAA;EACA,GAAA;EACA,YAAA;EACA,QAAA;AAAA;;UAIe,aAAA;EARf;EAUA,GAAA,EAAiD,aAAA,CAArB,GAAA,CAAI,iBAAA;EARhC;EAUA,WAAA,GAAc,CAAA,EAAG,UAAA;EARjB;EAUA,gBAAA;EAVQ;EAYR,gBAAA;EAR4B;EAU5B,QAAA;EARgC;EAUhC,aAAA;EARiB;EAUjB,OAAA;AAAA;;;;;;;;;iBA0Cc,aAAA,CAAc,IAAA;;;;;AAA9B;;;;;AAoBA;;;;;;;iBAAgB,OAAA,CAAQ,KAAA,EAAO,SAAA,GAAY,aAAA;;AAiH3C;;;;;;;;;;;AA8BA;;;;;;;;;;;;;;;;;;;;;;;iBA9BgB,UAAA,CAAW,SAAA,GAAY,KAAA,EAAO,eAAA,YAA2B,KAAA,EAAO,SAAA;;;;;;;;cA8BnE,IAAA,GAAI,KAAA,EA9B+D,SAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"server2.d.ts","names":[],"sources":["../../../src/app.ts","../../../src/api-routes.ts","../../../src/types.ts","../../../src/entry-server.ts","../../../src/config.ts","../../../src/fs-router.ts","../../../src/isr.ts","../../../src/adapters/bun.ts","../../../src/adapters/cloudflare.ts","../../../src/adapters/netlify.ts","../../../src/adapters/node.ts","../../../src/adapters/static.ts","../../../src/adapters/vercel.ts","../../../src/adapters/index.ts","../../../src/not-found.ts","../../../src/middleware.ts","../../../src/vite-plugin.ts","../../../src/favicon.ts","../../../src/seo.ts","../../../src/og-image.ts","../../../src/ai.ts","../../../src/i18n-routing.ts"],"mappings":"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"}
1
+ {"version":3,"file":"server2.d.ts","names":[],"sources":["../../../src/app.ts","../../../src/api-routes.ts","../../../src/types.ts","../../../src/entry-server.ts","../../../src/config.ts","../../../src/fs-router.ts","../../../src/isr.ts","../../../src/adapters/bun.ts","../../../src/adapters/cloudflare.ts","../../../src/adapters/netlify.ts","../../../src/adapters/node.ts","../../../src/adapters/static.ts","../../../src/adapters/vercel.ts","../../../src/adapters/index.ts","../../../src/not-found.ts","../../../src/middleware.ts","../../../src/vite-plugin.ts","../../../src/favicon.ts","../../../src/seo.ts","../../../src/og-image.ts","../../../src/ai.ts","../../../src/i18n-routing.ts"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pyreon/zero",
3
- "version": "0.12.12",
3
+ "version": "0.12.14",
4
4
  "description": "Pyreon Zero — zero-config full-stack framework powered by Pyreon and Vite",
5
5
  "license": "MIT",
6
6
  "author": "Vit Bokisch",
@@ -166,18 +166,18 @@
166
166
  "lint": "oxlint ."
167
167
  },
168
168
  "dependencies": {
169
- "@pyreon/core": "^0.12.12",
170
- "@pyreon/head": "^0.12.12",
171
- "@pyreon/meta": "^0.12.12",
172
- "@pyreon/router": "^0.12.12",
173
- "@pyreon/runtime-dom": "^0.12.12",
174
- "@pyreon/runtime-server": "^0.12.12",
175
- "@pyreon/server": "^0.12.12",
176
- "@pyreon/vite-plugin": "^0.12.12",
169
+ "@pyreon/core": "^0.12.14",
170
+ "@pyreon/head": "^0.12.14",
171
+ "@pyreon/meta": "^0.12.14",
172
+ "@pyreon/router": "^0.12.14",
173
+ "@pyreon/runtime-dom": "^0.12.14",
174
+ "@pyreon/runtime-server": "^0.12.14",
175
+ "@pyreon/server": "^0.12.14",
176
+ "@pyreon/vite-plugin": "^0.12.14",
177
177
  "vite": "^8.0.0"
178
178
  },
179
179
  "peerDependencies": {
180
- "@pyreon/reactivity": "^0.12.12",
180
+ "@pyreon/reactivity": "^0.12.14",
181
181
  "sharp": "^0.33.0"
182
182
  },
183
183
  "peerDependenciesMeta": {
@@ -34,6 +34,6 @@ export function resolveAdapter(config: ZeroConfig): Adapter {
34
34
  case 'netlify':
35
35
  return netlifyAdapter()
36
36
  default:
37
- throw new Error(`[zero] Unknown adapter: "${name}". Use "node", "bun", "static", "vercel", "cloudflare", or "netlify".`)
37
+ throw new Error(`[Pyreon] Unknown adapter: "${name}". Use "node", "bun", "static", "vercel", "cloudflare", or "netlify".`)
38
38
  }
39
39
  }
@@ -8,9 +8,9 @@ import type { AdapterBuildOptions } from '../types'
8
8
  export async function validateBuildInputs(options: AdapterBuildOptions): Promise<void> {
9
9
  const { existsSync } = await import('node:fs')
10
10
  if (!existsSync(options.clientOutDir)) {
11
- throw new Error(`[zero:adapter] Client build output not found: ${options.clientOutDir}. Run "vite build" first.`)
11
+ throw new Error(`[Pyreon] Client build output not found: ${options.clientOutDir}. Run "vite build" first.`)
12
12
  }
13
13
  if (!existsSync(options.serverEntry)) {
14
- throw new Error(`[zero:adapter] Server entry not found: ${options.serverEntry}. Run "vite build --ssr" first.`)
14
+ throw new Error(`[Pyreon] Server entry not found: ${options.serverEntry}. Run "vite build --ssr" first.`)
15
15
  }
16
16
  }
package/src/client.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import type { ComponentFn } from '@pyreon/core'
2
2
  import { h } from '@pyreon/core'
3
3
  import type { RouteRecord } from '@pyreon/router'
4
+ import { hydrateLoaderData } from '@pyreon/router'
4
5
  import { hydrateRoot, mount } from '@pyreon/runtime-dom'
5
6
  import { createApp } from './app'
6
7
 
@@ -16,6 +17,32 @@ export interface StartClientOptions {
16
17
  /**
17
18
  * Start the client-side app — hydrates SSR content or mounts fresh for SPA.
18
19
  *
20
+ * ## Loader data flow
21
+ *
22
+ * Direct navigation to a route with a `loader` function needs data to be
23
+ * available on the VERY FIRST render. This is handled in two modes:
24
+ *
25
+ * - **SSR mode (zero's default)**: the server pre-runs loaders, renders the
26
+ * HTML with loader data already applied, and embeds a JSON blob in the
27
+ * HTML as `window.__PYREON_LOADER_DATA__`. On the client we read that
28
+ * blob and call `hydrateLoaderData(router, data)` BEFORE hydrating — so
29
+ * the hydration pass sees the same data the SSR render produced
30
+ * (avoids hydration mismatches and the flash of "not found" fallback).
31
+ *
32
+ * - **SPA cold start (no SSR content)**: no `__PYREON_LOADER_DATA__` was
33
+ * embedded, so we call `router.replace(currentPath)` after mount to
34
+ * trigger the loader pipeline for the initial route. The first render
35
+ * shows whatever the component displays for `useLoaderData() === undefined`
36
+ * (typically a loading state or fallback); once loaders resolve, the
37
+ * reactive `useLoaderData` re-renders with the data. This matches
38
+ * standard SPA loading behavior.
39
+ *
40
+ * Without this wiring, direct URL navigation to a loader-backed route
41
+ * (e.g. `/posts/3`) showed the "Post not found" fallback indefinitely
42
+ * because `useLoaderData()` returned `undefined` forever. The router
43
+ * only ran loaders on in-app navigation (push/replace), not on initial
44
+ * mount.
45
+ *
19
46
  * @example
20
47
  * import { routes } from "virtual:zero/routes"
21
48
  * import { startClient } from "@pyreon/zero/client"
@@ -23,21 +50,72 @@ export interface StartClientOptions {
23
50
  * startClient({ routes })
24
51
  */
25
52
  export function startClient(options: StartClientOptions) {
53
+ // `startClient` is the browser entry point — only ever called from a
54
+ // user's `client.ts` mounted in the browser. Explicit guard documents
55
+ // that contract and gives a clearer error than `document is not defined`.
56
+ if (typeof document === 'undefined') {
57
+ throw new Error('[Pyreon] startClient() can only be called in the browser.')
58
+ }
26
59
  const container = document.getElementById('app')
27
- if (!container) throw new Error('[zero] Missing #app container element')
60
+ if (!container) throw new Error('[Pyreon] Missing #app container element')
28
61
 
29
- const { App } = createApp({
62
+ const { App, router } = createApp({
30
63
  routes: options.routes,
31
64
  routerMode: 'history',
32
65
  ...(options.layout ? { layout: options.layout } : {}),
33
66
  })
34
67
 
68
+ // ── Loader data hydration (SSR path) ───────────────────────────────────────
69
+ // If the server embedded loader data, hydrate it BEFORE mounting so the
70
+ // initial render sees the same data the SSR pass produced. This avoids
71
+ // hydration mismatches and eliminates the flash-of-fallback.
72
+ const ssrLoaderData = (window as unknown as Record<string, unknown>)
73
+ .__PYREON_LOADER_DATA__
74
+ const hasSSRLoaderData =
75
+ ssrLoaderData !== undefined &&
76
+ typeof ssrLoaderData === 'object' &&
77
+ ssrLoaderData !== null
78
+ if (hasSSRLoaderData) {
79
+ // `router` is the public Router<> type; hydrateLoaderData uses the
80
+ // internal RouterInstance shape. The cast is safe because they're
81
+ // the same object at runtime — just narrower/wider type views.
82
+ hydrateLoaderData(router as never, ssrLoaderData as Record<string, unknown>)
83
+ }
84
+
35
85
  const vnode = h(App, null)
36
86
 
37
- // If container has SSR content, hydrate. Otherwise mount fresh.
38
- if (container.childNodes.length > 0) {
39
- return hydrateRoot(container, vnode)
87
+ // ── Mount vs hydrate ───────────────────────────────────────────────────────
88
+ const hasSSRContent = container.childNodes.length > 0
89
+ const cleanup = hasSSRContent ? hydrateRoot(container, vnode) : mount(vnode, container)
90
+
91
+ // ── Loader run (SPA cold-start path) ───────────────────────────────────────
92
+ // If we had no SSR loader data AND no SSR content, this is a true SPA
93
+ // cold start. Trigger the router's loader pipeline for the current route
94
+ // via `replace()` with the same path — doesn't change the URL, just kicks
95
+ // off the loader batch. Guards, middleware, and redirects run too, which
96
+ // matches what any other route navigation would do.
97
+ //
98
+ // If we DID have SSR content but NO loader data — that's an unusual case
99
+ // (SSR disabled for this route but loader defined). Run loaders anyway so
100
+ // the client catches up.
101
+ if (!hasSSRLoaderData) {
102
+ const currentPath = router.currentRoute().path
103
+ router.replace(currentPath).catch((err: unknown) => {
104
+ // Loader failures are already reported via the route's error handling
105
+ // pipeline. We swallow the promise rejection here to prevent unhandled
106
+ // rejection warnings — the route's `errorComponent` (if any) already
107
+ // handled the display.
108
+ // @ts-ignore — `import.meta.env.DEV` is provided by Vite/Rolldown at build time
109
+ if (import.meta.env?.DEV === true) {
110
+ // oxlint-disable-next-line no-console
111
+ console.warn(
112
+ '[Pyreon] Initial loader run failed for route:',
113
+ currentPath,
114
+ err,
115
+ )
116
+ }
117
+ })
40
118
  }
41
119
 
42
- return mount(vnode, container)
120
+ return cleanup
43
121
  }
package/src/env.ts CHANGED
@@ -160,7 +160,7 @@ export function oneOf<T extends string>(
160
160
  class EnvError extends Error {
161
161
  constructor(key: string, message: string, description?: string) {
162
162
  const desc = description ? ` (${description})` : ''
163
- super(`[zero:env] ${key}${desc}: ${message}`)
163
+ super(`[Pyreon] ${key}${desc}: ${message}`)
164
164
  this.name = 'EnvError'
165
165
  }
166
166
  }
@@ -193,7 +193,7 @@ function toValidator(value: unknown): EnvValidator<unknown> {
193
193
  if (typeof value === 'boolean') return bool({ default: value })
194
194
  if (typeof value === 'string') return str({ default: value })
195
195
 
196
- throw new Error(`[zero:env] Invalid schema value: ${String(value)}. Use a default value, String/Number/Boolean, or a validator like url().`)
196
+ throw new Error(`[Pyreon] Invalid schema value: ${String(value)}. Use a default value, String/Number/Boolean, or a validator like url().`)
197
197
  }
198
198
 
199
199
  // ─── Type inference ─────────────────────────────────────────────────────────
@@ -261,8 +261,8 @@ export function validateEnv<T extends Record<string, SchemaEntry>>(
261
261
  }
262
262
 
263
263
  if (errors.length > 0) {
264
- const header = `\n[zero:env] Environment validation failed (${errors.length} error${errors.length > 1 ? 's' : ''}):\n`
265
- const body = errors.map((e) => ` ✗ ${e.replace('[zero:env] ', '')}`).join('\n')
264
+ const header = `\n[Pyreon] Environment validation failed (${errors.length} error${errors.length > 1 ? 's' : ''}):\n`
265
+ const body = errors.map((e) => ` ✗ ${e.replace('[Pyreon] ', '')}`).join('\n')
266
266
  throw new Error(header + body + '\n')
267
267
  }
268
268
 
@@ -331,13 +331,13 @@ export function schema<T>(parse: (raw: string) => T): EnvValidator<T> {
331
331
  defaultValue: undefined,
332
332
  parse(raw: string | undefined, key: string) {
333
333
  if (raw === undefined || raw === '') {
334
- throw new Error(`[zero:env] ${key}: is required but not set`)
334
+ throw new Error(`[Pyreon] ${key}: is required but not set`)
335
335
  }
336
336
  try {
337
337
  return parse(raw)
338
338
  } catch (e) {
339
339
  const msg = e instanceof Error ? e.message : String(e)
340
- throw new Error(`[zero:env] ${key}: ${msg}`)
340
+ throw new Error(`[Pyreon] ${key}: ${msg}`)
341
341
  }
342
342
  },
343
343
  }
package/src/favicon.ts CHANGED
@@ -9,7 +9,7 @@ function warnSharpMissing() {
9
9
  sharpWarned = true
10
10
  // oxlint-disable-next-line no-console
11
11
  console.warn(
12
- '\n[zero:favicon] sharp not installed — favicons will not be generated. Install for full support: bun add -D sharp\n',
12
+ '\n[Pyreon] sharp not installed — favicons will not be generated. Install for full support: bun add -D sharp\n',
13
13
  )
14
14
  }
15
15
 
@@ -25,7 +25,7 @@ function warnSharpMissing() {
25
25
  //
26
26
  // Usage:
27
27
  // import { faviconPlugin } from "@pyreon/zero"
28
- // export default { plugins: [zero(), faviconPlugin({ source: "./icon.svg" })] }
28
+ // export default { plugins: [Pyreon] }
29
29
 
30
30
  export interface FaviconLocaleConfig {
31
31
  /** Locale-specific source icon (SVG or PNG). */
@@ -404,7 +404,7 @@ async function generateFaviconSet(
404
404
  const sourcePath = join(rootDir, source)
405
405
  if (!existsSync(sourcePath)) {
406
406
  // oxlint-disable-next-line no-console
407
- console.warn(`[zero:favicon] Source not found: ${sourcePath}`)
407
+ console.warn(`[Pyreon] Source not found: ${sourcePath}`)
408
408
  return
409
409
  }
410
410
 
package/src/font.ts CHANGED
@@ -282,7 +282,7 @@ async function downloadGoogleFontsCSS(url: string): Promise<string> {
282
282
  },
283
283
  })
284
284
  if (!response.ok) {
285
- throw new Error(`Failed to fetch Google Fonts CSS: ${response.status}`)
285
+ throw new Error(`[Pyreon] Failed to fetch Google Fonts CSS: ${response.status}`)
286
286
  }
287
287
  return response.text()
288
288
  }
@@ -292,7 +292,7 @@ async function downloadGoogleFontsCSS(url: string): Promise<string> {
292
292
  */
293
293
  async function downloadFontFile(url: string): Promise<Buffer> {
294
294
  const response = await fetch(url)
295
- if (!response.ok) throw new Error(`Failed to download font: ${url}`)
295
+ if (!response.ok) throw new Error(`[Pyreon] Failed to download font: ${url}`)
296
296
  const arrayBuffer = await response.arrayBuffer()
297
297
  return Buffer.from(arrayBuffer)
298
298
  }
@@ -13,7 +13,7 @@ import type { Plugin } from 'vite'
13
13
  //
14
14
  // Usage:
15
15
  // import { i18nRouting } from "@pyreon/zero"
16
- // export default { plugins: [zero(), i18nRouting({ locales: ["en", "de"], defaultLocale: "en" })] }
16
+ // export default { plugins: [Pyreon], defaultLocale: "en" })] }
17
17
 
18
18
  export interface I18nRoutingConfig {
19
19
  /** Supported locales. e.g. ["en", "de", "cs"] */
@@ -9,7 +9,7 @@ function warnSharpMissing() {
9
9
  sharpWarned = true
10
10
  // oxlint-disable-next-line no-console
11
11
  console.warn(
12
- '\n[zero:image] sharp not installed — images will not be optimized. Install for full support: bun add -D sharp\n',
12
+ '\n[Pyreon] sharp not installed — images will not be optimized. Install for full support: bun add -D sharp\n',
13
13
  )
14
14
  }
15
15
 
package/src/link.tsx CHANGED
@@ -74,6 +74,9 @@ const MAX_PREFETCH_CACHE = 200
74
74
  const prefetched = new Set<string>()
75
75
 
76
76
  function doPrefetch(href: string) {
77
+ // Prefetch only fires from browser-mounted Link interactions (hover /
78
+ // click intent). Explicit guard documents the SSR-safety contract.
79
+ if (typeof document === 'undefined') return
77
80
  if (prefetched.has(href)) return
78
81
  // Evict oldest entries when cache is full
79
82
  if (prefetched.size >= MAX_PREFETCH_CACHE) {
package/src/og-image.ts CHANGED
@@ -38,7 +38,7 @@ function warnSharpMissing() {
38
38
  sharpWarned = true
39
39
  // oxlint-disable-next-line no-console
40
40
  console.warn(
41
- '\n[zero:og-image] sharp not installed — OG images will not be generated. Install for full support: bun add -D sharp\n',
41
+ '\n[Pyreon] sharp not installed — OG images will not be generated. Install for full support: bun add -D sharp\n',
42
42
  )
43
43
  }
44
44
 
@@ -357,7 +357,7 @@ export function ogImagePlugin(config: OgImagePluginConfig): Plugin {
357
357
  const bgPath = join(root, template.background)
358
358
  if (!existsSync(bgPath)) {
359
359
  // oxlint-disable-next-line no-console
360
- console.warn(`[zero:og-image] Background not found: ${bgPath}`)
360
+ console.warn(`[Pyreon] Background not found: ${bgPath}`)
361
361
  continue
362
362
  }
363
363
  }
package/src/script.tsx CHANGED
@@ -52,6 +52,10 @@ export type ScriptStrategy =
52
52
  */
53
53
  export function Script(props: ScriptProps): VNodeChild {
54
54
  function loadScript() {
55
+ // Only invoked from `onMount` — explicit guard documents the
56
+ // SSR-safety contract at the callsite (the rule can't AST-trace the
57
+ // indirect call).
58
+ if (typeof document === 'undefined') return
55
59
  // Deduplication
56
60
  if (props.id && document.getElementById(props.id)) return
57
61