vite.config.ts stamps the package version, git commit and build time
into the bundle as __BUILD__, and the Settings sidebar shows
"v0.1.0 · <short sha>" (full sha and build time on hover). The Docker
build has no git binary, so the commit is read from .git/HEAD and the
refs directly; .dockerignore now lets just those files through.
GIT_COMMIT in the environment overrides detection.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GaoZtJQZwLXkEgWs8twCia
Multi-stage build: Node builds the static PWA, nginx serves it with an SPA
fallback, long-lived caching for hashed assets, no-cache for the app shell
and service worker, and the correct type for the web manifest.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VsorPV3JeJRoZ1mD1pdvtL