Replaces bare Story-N reaction rows with full NewsCard widgets: source label,
relative timestamp, linked headline, 2-line snippet, and 👍/👎 reactions.
Reads rss_items from message metadata (requires backend ≥ this sprint).
Adds url_launcher ^6.3.1 for opening article links in the browser.
Adds https/http <queries> entries to AndroidManifest for Android 11+.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Configure release signing via key.properties + Gradle Kotlin DSL
- Add INTERNET and ACCESS_NETWORK_STATE permissions to AndroidManifest
(Flutter injects INTERNET automatically in debug builds but not release,
causing DNS failures in sideloaded APKs)
- Restore android/.gitignore entries lost during signing setup
- Gitignore key.properties and fabled-release-key.jks
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
flutter_markdown was discontinued; flutter_markdown_plus is the
maintained drop-in replacement (same API, updated imports only).
Also set android:label to "Fabled" so the app appears correctly
on the home screen and in the app drawer instead of "fabled_app".
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The app now checks for new APK releases on a Forgejo instance and can
download and install them without leaving the app.
Settings:
- New "Update repository URL" field (e.g. https://git.example.com/user/fabled_app)
- "App version" tile with a manual "Check" button and live status display
- Download progress bar and "Install" button appear when update is found
Startup:
- Shell runs a silent background check on first load when a repo URL is set
- A dialog appears automatically if a newer release is found
Provider (update_provider.dart):
- UpdateNotifier: idle → checking → available → downloading → available
- Hits Forgejo /api/v1/repos/{owner}/{repo}/releases/latest
- Parses semver tag, finds .apk asset, downloads with progress via Dio
- Opens the APK with open_file to trigger the system package installer
Android:
- REQUEST_INSTALL_PACKAGES permission
- FileProvider configured for open_file (shares APK URI with installer)
- res/xml/file_paths.xml covers external-files and cache directories
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>