1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// Ring buffer for window.onerror/unhandledrejection (#190, #191) — imported
// first, before anything else, so nothing that boots after it goes
// uncaptured. See lib/errorLog.js.
import "./lib/errorLog.js";
import from "preact";
import from "./app.jsx";
import from "./lib/reload.js";
import "./app.css";
// Auto-reload on server update (#189) — remembers the server's build_hash
// and hard-reloads the tab when it changes. Started once for the whole app
// lifetime, independent of route.
;
// Built-in client telemetry channel, same backend ES module the old
// server-rendered pages loaded as <script type="module" src="/static/telemetry.js">.
// Load it by absolute URL (mirrors themes.js in Theme.jsx) so it resolves to
// the running host in both dev (Vite proxy) and prod, and the bundler treats
// it as a genuine dynamic import rather than trying to inline it. Always on —
// no dev-mode gate.
import.;
// Server-held UI preferences (#211). Load the shared engine module and
// fetch the whole blob before first render, so the terminal island reads the
// renderer/theme/etc. the server holds — not per-device localStorage, which is
// gone. hydrate() never rejects (it falls back to defaults if the server is
// unreachable), so a brief blocking fetch here can't wedge boot.
;