A quiet, full-featured RSS and Atom reader for the Light Phone III.
Light RSS is an unofficial community tool built inside the official Light SDK. It keeps feeds, reading state, saved articles, and search on the phone while following LightOS navigation and visual conventions.
![]() Compact unread inbox |
![]() Text-first reader |
![]() Subscriptions |
![]() Native feed entry |
Screenshots are from the 1080 × 1240 LightOS emulator and show public feed content.
- Parses RSS 2.0, Atom, and RDF/RSS feeds, including namespaced content and common date formats.
- Accepts a direct feed URL or a normal website URL and discovers RSS/Atom metadata.
- Starts with removable NASA, BBC World, and Hacker News subscriptions.
- Refreshes efficiently with
ETagandLast-Modifiedconditional requests. - Stores subscriptions, articles, unread state, saved items, and archive state in a local Room database.
- Supports unread/all views, per-feed timelines, local search, saved articles, mark-all-read, archive, and unfollow.
- Keeps feed-provided text available offline after it has been downloaded.
- Uses defensive XML parsing with DTD processing and external entities disabled.
- Includes light/dark appearance switching and local cleanup controls.
Light RSS does not use a WebView or open article pages. It turns feed-provided HTML into a focused text view without loading embedded images, scripts, or tracking pixels.
The UI is deliberately compact and uses the SDK rather than imitating it:
LightThemeand the SDK typography/color tokens on every screen.LightTopBar,LightBottomBar,LightBarButton, andLightIconsfor navigation and actions.LightLazyScrollViewandLightScrollViewwith LightOS scrollbars.LightTextInputEditorand the Light Phone keyboard for feed entry and search.- The 27 × 31 Light grid through
gridUnitsAsDp. - One SDK screen per editor, confirmation, message, and content view.
- Identical one-layer behavior for the visible back button and the phone's system back action.
Light RSS does not add an account, advertising, its own analytics integration, or a Light RSS-operated server. The app contacts the feed or website addresses you subscribe to, so those hosts receive an ordinary HTTP request, your IP address, and the LightRSS/1.0 (Light Phone III) user agent. On first launch it adds and refreshes the three starter feeds listed above.
All subscriptions and downloaded article text are stored locally. Unfollowing a feed removes its local articles; Settings can remove read, unsaved articles; uninstalling the app removes its database. See PRIVACY.md for the complete disclosure.
- JDK 17
- Android SDK Platform 36 and Android SDK command-line tools
- A GitHub account and package-read credential for the SDK's Light Keyboard dependency
The dependency credential is read from environment variables:
export JAVA_HOME="<path-to-jdk-17>"
export ANDROID_HOME="<path-to-android-sdk>"
export GH_PACKAGES_USER="<github-username>"
export GH_PACKAGES_TOKEN="<token-with-package-read-access>"Alternatively, put gpr.user and gpr.key in the ignored local.properties file. Never commit either credential.
Build and verify the app from the repository root:
./gradlew :tool:testDebugUnitTest :tool:lintDebug :tool:assembleDebugThe debug APK is written to tool/build/outputs/apk/debug/tool-debug.apk.
The trusted GitHub Actions build uses repository secrets with the same GH_PACKAGES_USER and GH_PACKAGES_TOKEN names. Configure them before enabling builds on main; they are never exposed to pull-request code.
The recommended emulator is an API 34 AOSP image with a 1080 × 1240, 3.92-inch display and no Google Play services. Follow the SDK's system-app emulator guide for the one-time setup.
For emulator builds only, temporarily change this line in tool/lighttool.toml:
serverPackage = "com.thelightphone.sdk.emulator"Then build, install, and open the apps:
./gradlew :sdk:emulator:assembleDebug :tool:assembleDebug
adb install --no-incremental -r sdk/emulator/build/outputs/apk/debug/emulator-debug.apk
adb install --no-incremental -r tool/build/outputs/apk/debug/tool-debug.apk
adb shell am start -n com.thelightphone.sdk.emulator/.MainActivityRestore serverPackage = "com.lightos" before a device or release build.
- The publishable source defaults to the real LightOS server package,
com.lightos. com.lightrss.readeris the tool ID. Treat it as permanent and confirm ownership before the first official submission.- Light RSS requests only
android.permission.INTERNETinlighttool.toml. The merged APK also inherits Android permissions and components from the current Light SDK dependency graph; the exact set and how it is used are documented in PRIVACY.md. - Local debug and release APKs use the SDK's public development keystore. They are not production-signed artifacts.
- The bundled Light builder produces an unsigned APK with local signing removed; official distribution/signing follows the process provided by Light.
- Community-tool distribution is evolving. Check the current upstream SDK guidance before submitting a release.
See CHANGELOG.md, SECURITY.md, and THIRD_PARTY_NOTICES.md before publishing.
| Path | Purpose |
|---|---|
tool/lighttool.toml |
Tool identity, version, LightOS target, and permission declaration |
tool/src/main/kotlin/com/lightrss/reader/RssDatabase.kt |
Room entities, queries, and persistence rules |
tool/src/main/kotlin/com/lightrss/reader/RssParser.kt |
RSS/Atom parsing, discovery, text cleanup, dates, and stable IDs |
tool/src/main/kotlin/com/lightrss/reader/RssRepository.kt |
Networking, conditional refresh, subscriptions, sync, and article actions |
tool/src/main/kotlin/com/lightrss/reader/RssViewModels.kt |
Screen state and background work |
tool/src/main/kotlin/com/lightrss/reader/RssScreens.kt |
LightOS-native screens and navigation |
tool/src/main/kotlin/com/lightrss/reader/RssUi.kt |
Shared feed/article rows, empty states, and formatting |
tool/src/test/kotlin/com/lightrss/reader/RssParserTest.kt |
Parser, discovery, date, and URL tests |
Read CONTRIBUTING.md before opening an issue or pull request. Security reports belong in the private process described in SECURITY.md, not in a public issue.
Light RSS and the bundled Light SDK are available under the MIT License. Light Phone, LightOS, and Light Phone III are names of The Light Phone; this project is not affiliated with or endorsed by The Light Phone.



