kaizen-app/app
Bruno Deanoz 40db869717 Extract ChatScreenViewModel from God Composable
Move all business logic and state (~35 variables, ~15 functions) from
the 1540-line ChatScreen @Composable into ChatScreenViewModel.

ChatScreen is now a thin rendering layer (~430 lines) that reads VM
state and wires UI events to VM methods. Android-framework-only concerns
(ActivityResultLaunchers, DrawerState, LazyListState, keyboard insets)
stay in the Composable.

Changes:
- New ChatScreenViewModel.kt: messages, streaming, conversation mgmt,
  sidebar actions, file upload, voice recording, TTS, live call, unlock
- ChatScreen.kt: pure UI, delegates all logic to vm.*
- Haptics.kt: add createHaptics(Context) factory for non-Composable use
- SessionViewModel: store nullable for test construction
- MainActivity: instantiates ChatScreenViewModel

Tests: 12 new unit tests for ChatScreenViewModel (state transitions,
newChat reset, mode toggles, edit/delete, password dialog lifecycle).
All 90 tests pass.
2026-06-24 10:09:40 +02:00
..
src Extract ChatScreenViewModel from God Composable 2026-06-24 10:09:40 +02:00
.gitignore Initial commit - Kaizen App 2026-06-18 15:08:09 +02:00
build.gradle.kts feat: KaizenIcons system — Lucide base, full Material Icons migration 2026-06-22 14:11:34 +02:00
proguard-rules.pro Initial commit - Kaizen App 2026-06-18 15:08:09 +02:00