feat: paginated reader sync, search crash fix, audio cache + unified auth
- Sync pagination measurement with rendered layout (page geometry, spacing, images, chapter extras) - Improve split algorithm with getLineForVerticalPosition and widow/orphan handling - Fix search crash from duplicate LazyColumn keys on empty guids - Switch BookCard cover to fixed-height vertical variant - Add ExoPlayer SimpleCache + CacheDataSource for streaming audio - Unify AuthorizationInterceptor for player via PlaybackAuthProvider - Bump version to 1.9.11 (27) and update AGENTS.md
This commit is contained in:
parent
71537406c6
commit
f7307f4199
98 changed files with 5866 additions and 893 deletions
29
AGENTS.md
29
AGENTS.md
|
|
@ -77,10 +77,35 @@
|
|||
- Audiobook player with ExoPlayer + MediaSession.
|
||||
- TTS jobs screen via bookshelf-api.
|
||||
- Reading and playback progress sync with periodic WorkManager worker.
|
||||
- Current: `feature/ui-polish` builds and produces `app-debug.apk` (~58 MB). Debug APK uploaded as `BookStory-debug-6.apk` to ownCloud.
|
||||
- Current: `feature/ui-polish` builds and produces `app-debug.apk` (~58 MB). Debug APK uploaded as `KRait-debug-15.apk` to ownCloud + caddy download site.
|
||||
- Polished: PlayerContent and TtsContent labels moved to `strings.xml`; TTS WorkManager observer leak fixed (`TtsModel` removes observer in `onCleared`).
|
||||
- Raised `minSdk` from 26 to 31.
|
||||
- Next: backend endpoint parity for progress sync, test on device, push to Forgejo once repo is created.
|
||||
- Phase 7 (nav redesign): `MainActivity` tabs = Книги | Аудиокниги | Поиск | Настройки.
|
||||
- `BooksModel` / `AudiobooksModel` extend `RemoteLibraryViewModel` with `mediaTypeFilter`.
|
||||
- Library filter uses name fallback ("Books" / "Audiobooks") because ABS returns `mediaType: "book"` for both.
|
||||
- `SearchModel` + `SearchContent` for global Librarr search (`/api/v1/search`).
|
||||
- `ServerStatusMonitor` (singleton, pings `/health` every 30 s) → auto offline-only when down.
|
||||
- `SettingsScreen` is a root tab — back button hidden when stack size ≤ 1.
|
||||
- Phase 8 (RSVP speed reading): core tokenizer + engine + UI.
|
||||
- `domain/model/rsvp/` — `RsvpToken`, `OrpTable`, `RsvpTokenizer`, `RsvpEngine`.
|
||||
- `presentation/rsvp/` — `RsvpScreen`, `RsvpModel`, `RsvpState/Event/Effect`.
|
||||
- `ui/rsvp/RsvpContent.kt` — word stage with prefix/pivot/suffix, focus guide ▲▼, controls bar.
|
||||
- `ReaderTopBar` got a ⚡ button → `RsvpScreen(bookId)`.
|
||||
- Persists reading progress on close via `UpdateBookUseCase`.
|
||||
- Settings: `rsvpWpm` (100–900), `rsvpFontSize` (24–96 sp), `rsvpPauseOnParagraph`, `rsvpPauseOnChapter`, `rsvpPauseOnLongWords`, `rsvpShowFocusGuide`.
|
||||
- Phase 9 (reader pagination + polish):
|
||||
- Kindle-style paginated reading mode with `HorizontalPager`.
|
||||
- Volume keys (Up/Down) mapped to page navigation via `VolumeKeyWindowCallback`.
|
||||
- Pagination measurement/render synchronization: exact page geometry, real inter-item spacing, image sizing, chapter title extras.
|
||||
- Algorithm improvements: `TextLayoutResult.getLineForVerticalPosition()` split point, better widow/orphan handling.
|
||||
- Phase 10 (bugfixes):
|
||||
- Fixed search crash caused by duplicate LazyColumn keys when search results have empty `guid`.
|
||||
- Fixed `BookCard` intrinsic-measurement crash risk by switching cover to fixed-height vertical variant.
|
||||
- Phase 11 (audio player hardening):
|
||||
- ExoPlayer streaming cache via `SimpleCache` + `CacheDataSource` (512 MB external cache).
|
||||
- Unified `AuthorizationInterceptor` for player, backed by `PlaybackAuthProvider` refreshed from `ServerSettings`.
|
||||
- Current APK: `KRait-debug-27.apk` (1.9.11) on `books.dueattendant149.org/download`.
|
||||
- Next: final APK rebuild after pushing to Forgejo.
|
||||
|
||||
## WARNs
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue