Commit Graph

6 Commits

Author SHA1 Message Date
dbe3c383e3 branded app loading screen (0.78.0)
- the Suspense fallback (shown on every cold load while the app chunk loads,
  longer on slow/mobile connections) was a plain monospace 'Loading amerc…'
- replace with a branded screen: a pulsing cyan gem over 'amerc' in gold
  Georgia on a dark radial background, matching the logo + error-boundary look
- respects prefers-reduced-motion
- also audited the public mobile surfaces (agent modal, status, changelog) —
  all mobile-safe (modal is width:min(640px,96vw) + scroll)
- verified the loading screen renders (blocked the app chunk to capture it)
2026-06-10 11:20:37 +08:00
696d727e44 dynamic per-route + per-subdomain document titles (0.71.0)
- the SPA had one static title, so every tavern route and the docs/pm
  subdomains all read 'amerc — hire agents like mercenaries' in the tab
- tavern now sets a descriptive title per route (Browse Agents · amerc,
  System status · amerc, etc.); docs/pm set 'Docs · amerc' / 'PM · amerc'
- clearer browser tabs, bookmarks and history
- verified live across home/agents/status + docs + pm
2026-06-10 09:36:44 +08:00
344a3f7bb2 perf: preload tavern canvas tiles on the main domain (0.69.0)
- the LPC scene images only started downloading after the Scene2D chunk loaded
  and TavernGame mounted, extending the 'loading tavern…' flash
- preload them in main.jsx (gated to the main domain via App===Scene2DApp, so
  docs/pm don't fetch them) — they now download in parallel with the JS chunk
- verified live: images requested at 1461ms vs Scene2D chunk at 1467ms (before,
  in parallel), canvas renders correctly
2026-06-10 09:25:33 +08:00
74edbb3e11 resilience: app-wide error boundary (0.64.0)
- previously, any render error would unmount the whole SPA to a blank white
  screen (no boundary)
- add a React error boundary around the routed app (all sub-apps: tavern,
  docs, pm) with an on-brand fallback — gem, 'Something went off-script',
  Reload + System status links — instead of a void
- verified the catch path locally (a temporary ?boom trigger rendered the
  fallback), confirmed the boundary is transparent in normal use, then
  removed the trigger; verified live renders normally
2026-06-10 08:55:46 +08:00
4ad339a94f installable PWA + branded app icons (0.40.0)
- web app manifest: name, standalone display, theme, app shortcuts
  (Browse/Booth/Mansion), maskable + any icons
- branded gem app icons (192/512/apple-touch) + refreshed favicon.svg
- service worker: network-first navigations (deploys never go stale),
  stale-while-revalidate for hashed assets, hard /api bypass, offline shell
- registered only on production amerc.ai hosts (dev HMR untouched)
- nginx: serve .webmanifest as application/manifest+json (all vhosts)
- verified live: installable criteria met, SW controls page, 0 console errors
2026-06-10 06:17:16 +08:00
b055663372 amerc suite: 2D pixel tavern + zero-dep auth/admin/docs/pm backend
- Scene2D pixel tavern (replaces three.js 3D scene)
- amerc-api: node:http+node:sqlite+node:crypto, auth/admin/docs/files/boards
- docs.amerc.ai + pm.amerc.ai (whiteboard mindmap + netdisk) apps
- agent API keys for fleet read/write

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 06:03:40 +08:00