Add CI workflow, Matrix login flow in session, placeholder for room ID
ClippyAuto CI / build (push) Has been cancelled

This commit is contained in:
2026-03-05 23:38:07 +00:00
parent d1450cab7e
commit 6412fbea26
2 changed files with 45 additions and 7 deletions
+27
View File
@@ -0,0 +1,27 @@
name: ClippyAuto CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
container:
image: cimg/android:2024.01
steps:
- uses: actions/checkout@v4
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
- name: Build Debug APK
run: ./gradlew assembleDebug
- name: Run Unit Tests
run: ./gradlew testDebugUnitTest
- name: Lint
run: ./gradlew lintDebug
@@ -17,11 +17,14 @@ class ClippySession : Session(), DefaultLifecycleObserver {
private var voiceLoop: VoiceLoop? = null private var voiceLoop: VoiceLoop? = null
private var screen: ClippyScreen? = null private var screen: ClippyScreen? = null
// TODO: Move to config / SharedPreferences / SetupActivity // TODO: Move to SharedPreferences via SetupActivity
companion object { companion object {
const val HOMESERVER = "https://mess.hobbs.farm" const val HOMESERVER = "https://mess.hobbs.farm"
const val ROOM_ID = "" // Set after #clippy-voice room is created const val ROOM_ID = "" // TODO: Set once #clippy-voice room alias resolves
const val CLIPPY_USER = "@clippy:hobbs.farm" const val CLIPPY_USER = "@clippy:hobbs.farm"
// Hardcoded for v1 — move to secure storage
const val MATRIX_USER = "clippyauto"
const val MATRIX_PASS = "" // TODO: Create bot user for the app
} }
override fun onCreateScreen(intent: Intent): Screen { override fun onCreateScreen(intent: Intent): Screen {
@@ -44,11 +47,19 @@ class ClippySession : Session(), DefaultLifecycleObserver {
} }
) )
voiceLoop?.initialize() // Login then initialize voice loop
voiceLoop?.startSession() kotlinx.coroutines.CoroutineScope(kotlinx.coroutines.Dispatchers.IO).launch {
val loggedIn = matrixClient.login(MATRIX_USER, MATRIX_PASS)
// Give the screen a reference so the talk button works kotlinx.coroutines.withContext(kotlinx.coroutines.Dispatchers.Main) {
screen?.attachVoiceLoop(voiceLoop!!) if (loggedIn) {
voiceLoop?.initialize()
voiceLoop?.startSession()
screen?.attachVoiceLoop(voiceLoop!!)
} else {
screen?.updateStatus("⚠️ Matrix login failed")
}
}
}
} }
override fun onStop(owner: LifecycleOwner) { override fun onStop(owner: LifecycleOwner) {