- Restore FLAG_TRANSLUCENT_STATUS and FLAG_TRANSLUCENT_NAVIGATION on
VoiceInteractionSession window to let content extend behind system bars
- Move window configuration from onCreateContentView to onShow (window
is guaranteed available at this point)
- Replace statusBarsPadding/navigationBarsPadding with manual status bar
height calculation — Compose WindowInsets may not receive proper values
in VoiceInteractionSession overlay windows
- Keep SOFT_INPUT_ADJUST_NOTHING + imePadding on InputArea for correct
IME behavior (full-screen IME pushes input, floating IME does not)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Reconnection: unlimited retries with capped backoff, forceReconnect on foreground
and manual refresh when offline
- Overlay: fix status bar coverage, remove scrim, fix IME layout (messages fixed
at top, only full-screen IME pushes input), handle process-kill by eager
ViewModel resolution with try-catch
- Profile: cache-first rendering, cloud refresh on each visit, silent fallback
to cache on failure
- Messages: fix message swallowing by tracking DB observer job and using atomic
StateFlow.update(), add dedicated isAssistantStreaming state for reliable
typing indicator
- History: history_response handler now emits to live message stream, HTTP
fallback waits for WS connection before requesting history
- Foreground: always request history on foreground to catch cross-device messages
- Log viewer: enhanced with All tab, auto-scroll, new categories (HTTP, voice, general),
added log points for app lifecycle and overlay events
- Settings: added About page with project link (https://git.yeij.top/AskaEth/Cyrene-For-Android)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>