Skip to content

zachattack323/LightRSS

Repository files navigation

Light RSS

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.

Light RSS unread view in dark mode
Compact unread inbox
Light RSS article reader showing a NASA story
Text-first reader
Light RSS subscriptions screen
Subscriptions
Light RSS add-feed screen with the Light Phone keyboard
Native feed entry

Screenshots are from the 1080 × 1240 LightOS emulator and show public feed content.

Features

  • 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 ETag and Last-Modified conditional 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.

Built for LightOS

The UI is deliberately compact and uses the SDK rather than imitating it:

  • LightTheme and the SDK typography/color tokens on every screen.
  • LightTopBar, LightBottomBar, LightBarButton, and LightIcons for navigation and actions.
  • LightLazyScrollView and LightScrollView with LightOS scrollbars.
  • LightTextInputEditor and 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.

Privacy

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.

Build

Requirements

  • 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:assembleDebug

The 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.

Run in the LightOS emulator

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/.MainActivity

Restore serverPackage = "com.lightos" before a device or release build.

Release notes

  • The publishable source defaults to the real LightOS server package, com.lightos.
  • com.lightrss.reader is the tool ID. Treat it as permanent and confirm ownership before the first official submission.
  • Light RSS requests only android.permission.INTERNET in lighttool.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.

Project map

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

Contributing and license

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.

About

An RSS reader, designed for the Light Phone III and Flip, with the light SDK and design principles

Resources

License

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors