Lagrange 1.4.0
Features
- 482c7f8 Added client-side offline extraction for downloaded CBR and CB7 archives.
- Supports RAR4/RAR5-backed CBR through Junrar and 7z-backed CB7 through Commons Compress.
- Normalizes supported image entries into a bounded cached CBZ for the existing comic reader.
- Preserves the original download, reuses valid extraction caches, and atomically replaces incomplete output.
- Rejects encrypted, unsafe, oversized, malformed, or unsupported archives and cleans failed extraction output.
- 6291f07 Added server-hosted sign-in for local and OIDC-configured BookOrbit deployments.
- Opens the server's own
/loginpage in a transient in-app browser. - Shares authenticated cookies with the app's API client and watches
/api/v1/auth/mefor the asynchronous session exchange. - Closes the browser after authentication and resumes the pending destination instead of returning to Login.
- Includes cancellation, retry, same-origin, TLS-error, and watcher-cleanup handling.
- Opens the server's own
Improvements
- d211211 Kept Series and Authors catalog controls fixed while their grids scroll.
- Corrected jump-rail offsets after moving the count, filter, and header controls outside the lazy grids.
- Added regression coverage for fixed control bounds and catalog navigation.
- cc4f193 Completed the local-download lifecycle state handling.
- Book actions now expose the applicable Download, Cancel, Retry, Update local, Clear, and Delete local actions.
- Local books shows a conditional Downloads section for active and failed transfers, with progress, retry, cancellation, per-item clearing, and Clear all for failed entries.
- Interrupted attempts are persisted separately from completed local copies, so failed first downloads remain remote-only while failed updates retain the previous local copy.
Fixes
- Fixed Series and Authors toolbar and jump-rail behavior so scrolling catalog content no longer moves or obscures the controls.
- Fixed download failure state so failed attempts do not appear as completed local books and failed updates do not discard a usable previous copy.
- Fixed server sign-in completion so successful authentication dismisses the transient sign-in browser and continues the user's intended action.
Others
- Compatibility and validation:
- Offline RAR4/RAR5/7z extraction and reading of downloaded CBR/CB7 were automated-verified and user-confirmed on the offline reader path.
- Server-hosted sign-in was automated-verified and user-confirmed working.
- Series and Authors fixed controls were covered by regression instrumentation and user-confirmed working.
- The final local JVM gate reported 364 tests across 55 suites with zero failures, errors, or skips.
lintDebug, Kotlin compilation, Android-test compilation, and debug APK assembly passed; lint reported 0 errors, 39 warnings, and 14 informational findings.- Physical-device validation of the complete interrupted-download and failed-update lifecycle remains pending because no ADB target was available for the automated gate.
- Known limitations:
- Native AppAuth/Custom Tabs OIDC remains deferred until BookOrbit provides the required mobile redirect allow-list support and the identity-provider callback is registered.
- Some identity providers may reject authentication in an embedded browser; those deployments should use the future external-browser/AppAuth flow.
- Downloaded comic archives still require supported, non-encrypted archive formats and valid image entries; unsupported or unsafe archives are rejected explicitly.
- Upgrade notes:
- No migration action is required for existing readers, downloads, progress, or local audiobook history.
- Existing downloaded CBR/CB7 files can be opened offline after the app creates or reuses their local normalized CBZ cache.