feat: design system migration, mobile SSE streaming, OpenAPI client, and lint cleanup
Summary
Multi-feature branch covering design system migration, mobile SSE streaming, OpenAPI client generation, and code quality improvements.
Web Frontend (Vue 3) — DS Migration
DS Primitives Created (12 components)
- DsButton, DsCard, DsInput, DsSelect, DsCombobox, DsModal
- DsTabs, DsFormGroup, DsPill, DsSpinner, DsStateDisplay, DsStatusTag
CSS Token Migration
- All tokens migrated to OKLch DS tokens
-
!importanteliminated outside ApexCharts -
style.cssandtext-fix.cssdeleted - ApexCharts overrides centralized in
charts-apex-overrides.css - Dark mode hacks removed; CSS-native accent derivation
Theme Architecture
- Brand-tinted dark mode with CSS-only derivation (no JS)
- WCAG AA contrast compliance across all layers
Cleanup
- ~250 debug
console.log/warnremoved - ~940 lines of dead CSS removed
- Favicons generated from GENIE.AI logo
- Dead Socket.IO code removed
Bug Fixes
- Sidebar collapse button, chat timestamp, admin i18n paths
- Modal dialogs migrated to proper Vue Router routes
- Splash screen shown only once per browser session
Mobile (Flutter) — DS Architecture
Token System & Components
-
AppTokenswith light/dark mode viaThemeManager().tokens - DsButton, DsCard, DsInput, DsModal
-
DsSpacingandDsRadiiconstants replacing magic numbers -
2.Infrastructure_Setup raw
Colors.xxx→ semantic tokens, 17 buttons → DsButton
Mobile (Flutter) — SSE Streaming
Implements Server-Sent Events streaming for the POST /api/queries/stream endpoint:
-
http.Client.send()+ existingAuthInterceptor+SseParser— zero new dependencies - Stream cancellation,
mountedchecks, stable ID-based message lookup - Request body parity with web frontend (context, contextOption, language, timestamp)
- New providers:
authenticatedHttpClientProvider,backendUrlProvider
Mobile (Flutter) — OpenAPI Client Generation
-
scripts/generate-api-client.sh: extracts spec from backend JSDoc, generates Dart client - Generated client consumed via Riverpod providers in
lib/providers/api_providers.dart
Mobile (Flutter) — Lint Cleanup
All 56 flutter analyze warnings/info resolved across 12 files: unused fields/imports removed, missing ignore directives added, null-aware operators fixed, mounted checks added.
Test plan
-
Verify all web pages in light and dark themes -
Verify all 12 DS primitives (web) -
Verify analytics charts (web) -
Verify favicon (web) -
Run npm run lint(web) -
Run flutter analyze— 0 issues (mobile) -
Build debug APK (mobile) -
SSE streaming: mobile → Kong → backend → ChatQnA path validated (200 OK, correct SSE event flow) -
Non-streaming chat still works as fallback -
Visual QA on device/emulator (mobile) -
Visual QA in browser (web)
Edited by Jérôme Revillard