- Added org.jetbrains.kotlin.plugin.serialization to app/build.gradle.kts
- Added plugin version to root build.gradle.kts
- Added test dependencies (serialization, retrofit, okhttp, coroutines)
- 16 unit tests for BookshelfApiService — all pass
- Renamed app_name to KRait
- Fixed search test: search_time_ms Int, total field name
- PlayerModel: persist playback position to DB + sync every 30s
- CacheDownloadWorker: download audio tracks individually via /file/{ino}
- ProgressSyncWorker: retry on any failure instead of silent success
- TtsDownloadWorker: save as .m4b instead of .mp3
Add a full audiobook player for Audiobookshelf books:
- PlayerScreen/PlayerModel/PlayerContent with playback controls, progress, speed, skip
- AudioPlaybackService as MediaSessionService for background playback + notification
- ABS item lookup and per-file audio URLs using ServerSettings URL/token
- Hilt bindings, notification icon/strings, and required manifest permissions/service
Also removes the stale CacheRepositoryImpl import from RepositoryModule so the
worktree compiles after the cache files were deleted.
- Add domain models, repository, and use cases for TTS engines/voices/jobs
- Add TtsDownloadWorker to poll job status and download completed audio
- Add TtsScreen/TtsModel/TtsContent with engine/voice selection and job creation
- Add TTS button to RemoteLibraryContent book cards
- Add Hilt WorkManager support and repository binding
- Add TTS string resources
- Add CacheRepository + CacheBookUseCase to download/cache remote ebooks
via Audiobookshelf and upsert a local BookEntity/EbookFileEntity.
- Support plain local file paths in FileProviderImpl and CachedFile.canAccess
so reader can open downloaded ebooks stored in app filesDir.
- Add Read button to RemoteLibraryContent for books with hasEbook=true.
- Wire RemoteLibraryModel/Screen to cache the ebook and navigate to
ReaderScreen with the local book id.
- Add string resource for the Read button.
- Add Offline only switch above the remote books list.
- Display cache status (pending/downloading/completed/failed) per book.
- Add download and delete-cache action buttons.
- Show LinearProgressIndicator while a book is downloading.
* Option to show horizontal ruler and dim unfocused part of the screen (both height of the focused part and its vertical position can be customized)
* Option to hide horizontal ruler
* Option to change horizontal ruler's thickness
* Option to change dimming (0-100%)
Resolves: #197