Commit Graph

9 Commits

Author SHA1 Message Date
AskaEth 014437760d fix: IME layout, message dedup, animation order, and overlay input positioning
- ChatScreen: restructure to Box overlay layout so only input area
  rises with IME, messages stay fixed. Add opaque background to input
  area. Use reverseLayout with newest-first animation order.
- OverlayContent: remove all manual IME detection — system forces
  adjust=pan on VoiceInteractionSession windows, so manual padding
  caused double offset. Let system handle IME naturally.
- ChatRepositoryImpl: add messageRemovals flow to clean up wrapping
  stream_end/response when review/multi_message items arrive later.
  Track lastResponseId in both stream_end and response handlers.
- ChatViewModel/OverlayViewModel: fix dedup to check by message ID
  only. Sort descending (newest first). Observe messageRemovals.
- NavGraph: keep all tabs composed with graphicsLayer alpha toggle —
  prevents ChatScreen destruction and re-render on tab switch.
- CyreneVoiceInteractionSession: defer configureWindow via post()
  to override system softInputMode flags.
- AndroidManifest: set windowSoftInputMode=adjustNothing on main
  activity.
- Add WebSocketKeepAliveService for background connection persistence.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-25 21:41:46 +08:00
AskaEth eb94142404 fix: add missing ProGuard keep rules to prevent release crash
R8 was stripping Android components (services, application),
Room entities, Koin modules, and ViewModels — causing crash
when VoiceInteractionService was invoked via power button.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 21:15:23 +08:00
AskaEth 1c96588d79 chore: add release signing config via keystore.properties
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Alpha_v0.1.0
2026-05-24 20:27:29 +08:00
AskaEth 9295fe8021 feat: dark mode background fixes, chat bubble long-press menu, notification dedup, biometric auth for clear
- Fix: dark mode white backgrounds via transparent windowBackground, decorView color, and explicit Surface backgrounds on IoT/Profile/MainScreen
- Fix: dark mode text colors in ProfileScreen (nickname, account info, assistant status)
- Feat: long-press chat bubble to copy message text via DropdownMenu
- Feat: notification deduplication — track notified message IDs, clear on foreground
- Feat: cancel all notifications when app enters foreground
- Feat: biometric/device-credential verification before clearing local messages

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 20:22:28 +08:00
AskaEth 5247eef0fc feat: auto screen context toggle + fix dark mode status bar
- Add auto_screen_context preference (boolean, default false) to DataStore
- Add Switch toggle in Settings > Voice section to control automatic screen
  content reading when assistant is invoked via power button
- CyreneVoiceInteractionSession onShow now checks the preference before
  calling AccessibilityService to read and send screen content
- Fix status bar white in dark mode: MainActivity now observes theme mode
  preference (light/dark/auto) and passes resolved boolean to CyreneTheme
- CyreneTheme sets statusBarColor, navigationBarColor, and
  isAppearanceLightStatusBars/isAppearanceLightNavigationBars explicitly

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 18:25:47 +08:00
AskaEth 2725fdd1d5 fix: overlay status bar coverage and IME input flying in portrait mode
- 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>
2026-05-24 18:01:58 +08:00
AskaEth 367ef7f2d6 feat: reconnection, overlay UI, profile caching, history loading, log viewer, and about page
- 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>
2026-05-24 17:58:34 +08:00
AskaEth a57692353c Initial Android project setup with Compose, WebSocket, and VoiceInteractionService
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 19:58:59 +08:00
AskaEth 9b8c8ab37d Initial commit Alpha_v0.1.0_1 Alpha_v0.1.0_2 Alpha_v0.1.0_3 Alpha_v0.1.0_4 2026-05-23 13:56:52 +08:00