Remove all Android/phone code: the app is standalone desktop

shared/ carried the vendored phone app's tree behind a 30-entry
exclude list. Deleted the 46 phone-only files (recording service,
widgets, Room DB, Nextcloud/local-only/folder-sync providers, TOFU
trust, Android settings stores, phone UI screens) and kept only the
seven the desktop compiles: CustomShonarProvider, ProviderTypes,
ShonarProvider, ShonarAuthStore, ShonarHandshake, ProviderRegistry,
AiContent. ProviderRegistry reduces to its id constant; handshake
drops the TOFU param; provider defaults self-identify as desktop.
Gradle exclude list gone — srcDir('../shared') is pure desktop now.
This commit is contained in:
avi 2026-09-15 11:42:20 -05:00
commit 71b55715b4
52 changed files with 24 additions and 9049 deletions

View file

@ -19,43 +19,10 @@ kotlin {
sourceSets {
main {
kotlin {
// Portable shared sources vendored into this project (formerly
// compiled in place from the sibling Android repo). Android-only
// files excluded below.
// Portable provider/recording sources vendored into this
// project (the Android-only files were removed; this app is
// standalone desktop).
srcDir("../shared")
exclude(
"com/shonar/ShonarApplication.kt",
"com/shonar/MainActivity.kt",
// settings store impls are Android (DataStore/Keystore);
// desktop provides its own (desktopSettingsStore.kt).
"com/shonar/settings/SettingsStore.kt",
// recording: only AiContent.kt is portable.
"com/shonar/recording/MigrationRunner.kt",
"com/shonar/recording/RecordingDao.kt",
"com/shonar/recording/RecordingEntity.kt",
"com/shonar/recording/RecordingNotificationHelper.kt",
"com/shonar/recording/PlaybackController.kt",
"com/shonar/recording/RecordingPermissionHelper.kt",
"com/shonar/recording/RecordingRepository.kt",
"com/shonar/recording/RecordingService.kt",
"com/shonar/recording/RecordingStateStore.kt",
"com/shonar/recording/ShonarDatabase.kt",
"com/shonar/recording/SyncDrain.kt",
"com/shonar/recording/SyncSlots.kt",
"com/shonar/recording/SyncStateConverter.kt",
"com/shonar/recording/SyncWorker.kt",
// widget + rename-after-save UI: Android-only (AppWidget,
// ShonarApplication references).
"com/shonar/widget/**",
"com/shonar/ui/rename/**",
// ui: only ui/folder/FolderList.kt is portable.
"com/shonar/ui/detail/**",
"com/shonar/ui/home/**",
"com/shonar/ui/provider/**",
"com/shonar/ui/settings/**",
"com/shonar/ui/theme/**",
"com/shonar/ui/folder/FolderBrowserScreen.kt",
)
srcDir("src/main/kotlin")
}
}

View file

@ -34,7 +34,7 @@ import okhttp3.OkHttpClient
/**
* Desktop app state (Stage 3). Plain class + StateFlows — no ViewModel
* framework. Talks to the SHONAR backend through the *shared*
* [CustomShonarProvider] (same files the Android app compiles).
* [CustomShonarProvider] (vendored portable sources in ../shared).
*/
class DesktopState(private val appDir: File = defaultAppDir()) {

View file

@ -20,10 +20,9 @@ import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
/**
* SHONAR Desktop theme — the Android companion's "deep-sea sonar" palette,
* copied exactly from android ui/theme/Theme.kt dark scheme: dark navy +
* teal ping. Same seven role overrides the phone app sets; everything else
* falls through to Material3 defaults, same as Android.
* SHONAR Desktop theme — the "deep-sea sonar" palette: dark navy +
* teal ping. Seven role overrides; everything else falls through to
* Material3 defaults.
*
* Status semantics in the library list map to scheme roles:
* done -> primary (teal), failed -> error (red), queued/running ->
@ -52,7 +51,7 @@ fun ShonarTheme(content: @Composable () -> Unit) {
}
/**
* The SHONAR sonar-ping logo — same geometry as the Android launcher's
* The SHONAR sonar-ping logo — same geometry as the brand's launcher
* ic_launcher_foreground.xml: a center dot with quarter arcs ringing out
* (teal upper-right, teal-dark lower-left), 108-unit viewport.
*/