clone

an offline map explorer where each world, from a game map to a city's open data, ships as one .atlas file

feat/atlas-next-horizon
atlas / static / README.md
README.md 1.6K rendered
1# The static tree the desktop shell ships23This directory is what the desktop shell mounts at `/static`: the seam's built4bundle, and nothing else. It holds one file, `app.js`, and that file is a build5artifact โ€” `make static` writes it, git ignores it, and this README is the only6thing here that is committed.78 make static # npm build in render/, then render/dist/app.js into here9 make desktop # the same, then the shell built around it1011`make static` installs the same bytes in `dist/static` as well. That is the12build output a `-static` mount is pointed at (`make serve-static`, and the13parity harness's default); this is the tree the shell embeds. One build, two14places, because a headless host reads its assets off disk and a shipped15application carries them.1617The desktop shell embeds this whole directory (`//go:embed static` in18`main.go`), which is what makes the shipped application one self-contained19file. A build that never ran `make static` embeds only this README: then20`/static/app.js` answers `404`, `<atlas-viewport>` stays an undefined custom21element that renders nothing, and every other interaction in the application22still works. That is the deletability principle of issue #5 ยง3.2 โ€” the23application must build, serve and pass its non-viewport tests without the24seam's assets present โ€” checked by the shipping binary rather than only by the25test suite.2627The stylesheet system is **not** here. It lives in `internal/app/assets/css`,28is embedded by the application itself, and is served from `/assets`. The split29is the point: deleting the seam costs a page one script tag, not its chrome.