- Background tasks: a JS implementation of the native task module for iOS
(NativeBackgroundTasksModule.ios.ts) with the Android module's contract:
per-queue order, 3 concurrent chapter downloads, retries with a delay,
pause/resume/cancel interruptions, persistence across launches. Tasks run
while the app is open; periodic library updates and backups are not
scheduled on iOS. The module is Android-only in autolinking now.
- Reader assets: WKWebView will not load file:// assets into a page whose base
URL is the source's site, so on iOS the reader CSS, JS and font are inlined
(scripts/embed-reader-assets.mjs, src/utils/readerAssets). Downloaded
chapters get a file: base URL and file access on iOS. Android is unchanged.
- Native iOS: downloadFile implemented with URLSession (plugin installs and
chapter images); volume-button setActive added as a no-op (it is called on
every chapter).
- Share receiver stub and silent toasts on iOS; TrackSheet uses showToast.
- app.json: bundle id br.dev.marcospaulo.lnreader, http sources allowed, Files
sharing, deployment target 16.4.
- Fresh installs start with the open-lab plugin repository.
- scripts/build-ios-unsigned.sh and docs/ios-sidestore.md.
Verified on Linux: tsc, eslint, all Jest suites (plus new iOS queue tests),
expo prebuild for iOS, autolinking, and iOS/Android release JS bundles.
Not yet built with Xcode or run on a device.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Add native share intent handling module
* Handle shared URLs via intent handler
* i18n: add global search and novel error strings
Generated with omp (AI coding agent)
* novel store: track bootstrap failures as user-facing errors
Bootstrap failures no longer surface raw plugin/DB errors; missing novels map to a custom not-found message. Generated with omp (AI coding agent)
* novel screen: render error view when bootstrap fails
Shows a custom error with a back action instead of a blank screen, and hides the appbar actions in the error state. Generated with omp (AI coding agent)
* global search: never auto-navigate or search URL text
URLs are handled by the screen's explicit submit flow; navigation and search stay out of the hook. Generated with omp (AI coding agent)
* global search: add animated open-novel FAB with clipboard offer
Submit or FAB tap opens a matching URL's novel; unmatched URLs toast. The FAB floats above the keyboard via keyboard-controller and slides in from the right. Generated with omp (AI coding agent)
* fix review issues
* fix rebase issue
fix: TTS continues playing during incoming and outgoing phone calls
Implement audio focus handling for TTS playback on Android, including support for request and abandonment during playback and transient interruptions.
Closes#1975