Inject a yyyy-mm-dd_hh:mm timestamp at build time via Vite's `define`
(app/vite.config.ts: __BUILD_DATE__, computed fresh on every
`vite build`/`vite dev` invocation) and render it next to the
Settings panel's title, so it's easy to tell which build is deployed.
- app/vite.config.ts: buildDateString() + define.__BUILD_DATE__
- app/src/vite-env.d.ts: ambient declaration for the injected constant
- app/src/components/SettingsPanel.tsx: render it next to "Settings"
- app/src/styles.css: .build-date styling
Rebuilt and redeployed to the repo root.
The webserver serves the repo checkout directly as static files, so
index.html at the repo root must be the production build (pointing at
hashed /assets/*.js) rather than the dev template (/src/main.tsx),
which was being served with an unrecognized application/octet-stream
MIME type and blocked by the browser.
- Move src/, public/, scripts/, server/, package.json, vite.config.ts,
tsconfig.json, .env(.example), and the dev index.html into app/.
- Add app/scripts/deploy.mjs: copies app/dist/* into the repo root
after every `vite build`, cleaning up stale hashed filenames.
- Wire it into `npm run build` (app/package.json).
- Update run.sh to operate from app/, and .gitignore for the new layout.
- Commit the current build output (index.html, assets/, manifest,
sw.js, workbox-*.js, favicon.svg, icons/, LICENSE) to the repo root.
- Update README with the new project layout and deployment model.