Tier-7

Merged
HU
4mo ago
+11032-6203
  • Updated the FileField component to include a visible button for file selection, improving user experience.
  • Implemented state management to display the selected file name, enhancing feedback for users.
  • Modified tooltip descriptions in the documentation to clarify the new file input pattern and usage guidelines.
  • Ensured accessibility by maintaining proper aria attributes and labels for the file input.

Summary by cubic

Adds offline-ready PWA with cached session data, i18n, and a print-ready scorecard export. Also improves file upload UX and hardens API caching and session ID validation.

  • New Features

    • Offline read-only PWA: vite-plugin-pwa + persisted queries (@tanstack/react-query-persist-client, @tanstack/query-sync-storage-persister) with an offline banner; mutations stay online-only.
    • Export scorecard from session detail to a print-ready page (save as PDF).
    • i18n via react-i18next (EN) for nav, session detail, and scorecard labels.
    • Docs & analytics: static Redoc at /docs with OpenAPI JSON exported during apps/web build; optional privacy analytics via VITE_PLAUSIBLE_DOMAIN or VITE_CF_WEB_ANALYTICS_TOKEN.
    • FileField now uses a hidden input + visible “Choose file” button and shows the selected file name.
  • Refactors

    • Session list cache: Cloudflare KV TTL 60s, HTTP max-age=15, graceful KV errors; headers include X-Cache.
    • Validate session IDs as UUIDs on detail/update routes; return 404 early on invalid IDs.
    • React Query defaults: reads are offlineFirst; mutations are online; only sessions and session queries are persisted.