Bakes the git short commit hash into the client bundle at build time and
exposes the same info from the server via GET /api/version. The header
displays the loaded build's commit and flags when it no longer matches
what the server is running, so a stale open tab is easy to spot after a
deploy. The Docker build now includes .git so the hash can be resolved
during the image build.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds a web app manifest, Workbox service worker (via vite-plugin-pwa),
and placeholder icons so the app can be installed to a home screen /
app window. App shell is precached for offline load; API and upload
requests stay network-only so city data and photos are never served
stale. Desktop browser access is unaffected.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>