- Fix ClippyResponseBus subscription to use SharedFlow.collect()
- Fix MatrixRestClient.putAccountData() to use httpClient not client
- Add missing Log import to MatrixRestClient
- ClippyResponseBus: SharedFlow event bus for FCM + sync responses
- ResponseDedup: SHA-256 dedup with sliding window
- Updated ClippyFCMService and FCMTokenManager to use MatrixRestClient
- Added putAccountData() to MatrixRestClient for FCM token storage
Co-authored-by: Spirit <spirit@hobbs.farm>
- ClippyFCMService: Receives FCM data messages, routes to TTS pipeline
- FCMTokenManager: Stores FCM token in Matrix account data for n8n
- Enable Google Services plugin and Firebase dependencies
- Add FCM service to AndroidManifest.xml
- Register FCM token on app init in ClippySession and SetupActivity
Token stored at: /_matrix/client/v3/user/@clippyauto:hobbs.farm/account_data/farm.hobbs.clippy.fcm_token
Co-authored-by: Spirit <spirit@hobbs.farm>
- New AppConfig singleton backed by EncryptedSharedPreferences
- Credentials stored in Android Keystore (AES256-GCM)
- Removed hardcoded creds from ClippySession and SetupActivity
- Access token caching to avoid re-login on each session
- Defaults seeded on first run for backward compatibility
Co-authored-by: Spirit <spirit@hobbs.farm>
SetupActivity now has Connect + Talk buttons, status display, and log output.
Allows testing the full STT → Matrix → Clippy → TTS pipeline from the phone.