alexei.dolgolyov
111bfe743a
Add interactive getting-started tutorial for first-time users
...
Auto-starts on first visit with a 9-step walkthrough covering header,
tabs, settings, search, theme, and language controls. Stores completion
in localStorage; restart via ? button in the header. Includes en/ru/zh
translations for all tour steps.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-27 13:45:43 +03:00
alexei.dolgolyov
3ae20761a1
Frontend: structured error handling, state fixes, accessibility, i18n
...
- Enhance fetchWithAuth with auto-401, retry w/ exponential backoff, timeout
- Remove ~40 manual 401 checks across 10 feature files
- Fix state: brightness cache setter, manual edit flag resets, static import
- Add ARIA: role=dialog/tablist, aria-modal, aria-labelledby, aria-selected
- Add focus trapping in Modal base class, aria-expanded on hint toggles
- Fix WCAG AA color contrast with --primary-text-color variable
- Add i18n pluralization (CLDR rules for en/ru), getCurrentLocale export
- Replace hardcoded strings in dashboard.js and profiles.js
- Add data-i18n-aria-label support, 20 new keys in en.json and ru.json
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-20 01:18:29 +03:00
alexei.dolgolyov
2b90fafb9c
Split monolithic index.html and style.css for maintainability
...
- Extract 15 modals and 3 partials from index.html into Jinja2 templates
(templates/modals/*.html, templates/partials/*.html)
- Split style.css (3,712 lines) into 11 feature-scoped CSS files under
static/css/ (base, layout, components, cards, modal, calibration,
dashboard, streams, patterns, profiles, tutorials)
- Switch root route from FileResponse to Jinja2Templates
- Add jinja2 dependency
- Consolidate duplicate @keyframes spin definition
- Browser receives identical assembled HTML — zero JS changes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-20 00:42:50 +03:00