static.go embeds the js directory, so a missing fetched asset silently produces a binary with no Alpine #166
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found by the independent review of #164, which introduced the build-time fetch. Not a release blocker and deliberately NOT milestoned 1.0.0 — see below.
static/static.goembeds by directory:A directory pattern matches whatever is present, so a missing
static/js/alpine.min.jsis not a compile error. The reviewer ranmake buildon a tree where the asset had not been fetched: exit 0, binary produced, admin UI silently has no Alpine. Same formake run,make devand a barego build.Why this is not a 1.0.0 blocker: every gated path fails loudly. The
Dockerfilerunsscript/fetch-assetswith sha256 verification,make checkrunsstatic/vendor_test.gowhich re-hashes the embedded bytes, and CI runs both. So the release artifact cannot ship without the verified asset. This is local-development ergonomics — a developer who skips the fetch gets a confusing half-working UI rather than an error.Definition of done
static/static.gonames the files it requires, e.g.//go:embed css js/app.js js/alpine.min.js, so absence is a compile error on every build path rather than only on gated ones.make buildon a tree with nostatic/js/alpine.min.jsFAILS, and the failure names the missing file.make checkstill passes with the asset present.cssshould be named explicitly too, and say what you concluded. Note the same review observed thatstatic/css/style.cssis embedded but no template loads it, so the css side may want its own decision rather than a mechanical change.Implementation requirements
next, PR based onnext, single commit, title ending(closes #N).TODO.md(see #112).make checkplus the Docker lint path with the cache defeated. All linting runs in Docker, never on the host.