Tier-7
Merged
HU
4mo ago+11032+11032+01234567890123456789012345678901234567890123456789-6203-6203-0123456789012345678901234567890123456789
- Updated the
FileFieldcomponent 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
/docswith OpenAPI JSON exported duringapps/webbuild; optional privacy analytics viaVITE_PLAUSIBLE_DOMAINorVITE_CF_WEB_ANALYTICS_TOKEN. FileFieldnow uses a hidden input + visible “Choose file” button and shows the selected file name.
- Offline read-only PWA:
-
Refactors
- Session list cache: Cloudflare KV TTL 60s, HTTP
max-age=15, graceful KV errors; headers includeX-Cache. - Validate session IDs as UUIDs on detail/update routes; return 404 early on invalid IDs.
- React Query defaults: reads are
offlineFirst; mutations areonline; onlysessionsandsessionqueries are persisted.
- Session list cache: Cloudflare KV TTL 60s, HTTP