Skip to content

feat: design system migration, mobile SSE streaming, OpenAPI client, and lint cleanup

Jérôme Revillard requested to merge feat/design-system-migration into main

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
  • !important eliminated outside ApexCharts
  • style.css and text-fix.css deleted
  • 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/warn removed
  • ~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

  • AppTokens with light/dark mode via ThemeManager().tokens
  • DsButton, DsCard, DsInput, DsModal
  • DsSpacing and DsRadii constants 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() + existing AuthInterceptor + SseParser — zero new dependencies
  • Stream cancellation, mounted checks, 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

Merge request reports

Loading