// Package web embeds the compiled control-room SPA (web/dist) into the oikos // binary, preserving the single-binary deployment (ADR-0001). The dist tree is // produced by `npm run build` (or the Docker ui-builder stage); a committed // web/dist/.gitkeep keeps a backend-only `go build` green when the UI has not // been built. package web import ( "embed" "io/fs" ) //go:embed all:dist var dist embed.FS // DistFS returns the built SPA rooted at dist/. When the UI has not been built // (only the .gitkeep placeholder is present), Open("index.html") will fail and // the caller serves a 404 — the binary still starts. func DistFS() (fs.FS, error) { return fs.Sub(dist, "dist") }