This repository was archived by the owner on Apr 10, 2026. It is now read-only.
Add native Android app (Kotlin + Jetpack Compose)#18
Merged
dajbelshaw merged 7 commits intomainfrom Mar 27, 2026
Merged
Conversation
New packages/android/ module — a full native Android port of Stream with: - Kotlin + Jetpack Compose + Material Design 3 (Nord theme) - Faithful ports of river scoring engine and Feedbin/FreshRSS adapters - Room database for offline article cache, DataStore for preferences - Swipe gestures (dismiss/save), pull-to-refresh, undo snackbar - Connect, River, Reading (WebView), and Settings screens - Compose Navigation with full screen flow - WorkManager background sync (30-minute periodic refresh) - Hilt dependency injection throughout - No CORS proxy needed — direct OkHttp calls to RSS backends https://claude.ai/code/session_011Q4W1pgzkirqyoUmyqnjWf
CI builds debug + release APKs on push/PR to main when android/ changes. On main push, creates a GitHub Release with both APKs attached — no VPS deployment. Uses gradle/actions/setup-gradle to bootstrap the wrapper in CI, android-actions/setup-android for SDK, and softprops/action-gh-release for the release. https://claude.ai/code/session_011Q4W1pgzkirqyoUmyqnjWf
✅ Deploy Preview for stream-rss ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
The setup-gradle action doesn't install gradle on PATH by default. Passing gradle-version explicitly installs it, so we can run gradle directly without needing the wrapper jar in the repo. https://claude.ai/code/session_011Q4W1pgzkirqyoUmyqnjWf
Two critical issues preventing compilation: 1. settings.gradle.kts used `dependencyResolution` (invalid) instead of `dependencyResolutionManagement` — Gradle couldn't resolve any repos. 2. RiverViewModel and SettingsViewModel passed 10 and 7 flows to combine() but typed overloads only exist up to 5. Switch to the Array<Flow> overload with `flows = arrayOf(...)`. https://claude.ai/code/session_011Q4W1pgzkirqyoUmyqnjWf
… unused imports 1. combine() with >5 flows: use listOf() overload instead of invalid named vararg `flows = arrayOf(...)` syntax. 2. SwipeToDismissBox: remove nonexistent enableDismissFromStartToEnd/ enableDismissFromEndToStart params (direction is controlled via confirmValueChange on the state). 3. Remove unused Icon and painterResource imports from RiverCard.kt. 4. Fix FreshRSSAdapter.get() double response.body.string() call — read body once into a val before checking success. https://claude.ai/code/session_011Q4W1pgzkirqyoUmyqnjWf
The manifest referenced @mipmap/ic_launcher but no icon existed, causing AAPT resource linking to fail. https://claude.ai/code/session_011Q4W1pgzkirqyoUmyqnjWf
StreamApp implements Configuration.Provider for on-demand WorkManager init, so the default InitializationProvider must be removed via tools:node="remove" to avoid the RemoveWorkManagerInitializer lint error. https://claude.ai/code/session_011Q4W1pgzkirqyoUmyqnjWf
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
packages/android/— Kotlin, Jetpack Compose, Material Design 3 with Nord themeTest plan
https://claude.ai/code/session_011Q4W1pgzkirqyoUmyqnjWf