chore: one-command deploy to [removed]

The homelab has no rsync, so the tree goes over as a tar stream, and the
destination is wiped first - a stale content-hashed chunk left behind would be
served forever, since /assets/* is cached as immutable.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
goober 2026-08-21 12:43:28 +03:00
parent 96f273ce2b
commit 0334ab1037
3 changed files with 45 additions and 1 deletions

View file

@ -56,3 +56,21 @@ IndexedDB, workers, `fetch` and module scripts are all unavailable. The app
handles this behind two interfaces it never sees through — `PersistenceAdapter`
(IndexedDB → localStorage → memory) and `SolverHost` (worker → inline) — and
shows a banner when storage is not durable. Artwork is not carried in that build.
## Deploying
`npm run deploy` builds both targets and publishes to
**[removed]**.
The homelab has no `rsync`, so the tree goes over as a tar stream, and the
destination is wiped first: a stale content-hashed chunk left behind would be
served forever, since `/assets/*` is cached as immutable. Caddy serves
`/mnt/docker/appdata/caddy/sites/[removed]` as `/srv/[removed]` via a
read-only bind mount, which is why a deploy needs no container restart — but
adding a *new* site does, and recreating that container briefly drops every
other site behind Caddy.
`[removed]` is the single-file offline build, shipped
alongside the app.
`dist/` is not in git. The deploy builds from source.