Commit graph

769 commits

Author SHA1 Message Date
Atte149
a7a9f65391 Fix API contract: Response<ResponseBody> for endpoints returning JSON objects
- getBook, updateReadingProgress, updatePlaybackProgress: Response<String> → Response<ResponseBody>
- Fixes kotlinx-serialization converter crash on JSON object responses
- health(): Response<Unit> (already fixed)
- Fix hasUriScheme(): matches() → containsMatchIn()
- Full Russian translation of strings.xml (583 lines)
- Russian added as default language in CoreData
2026-06-19 21:05:29 +03:00
Atte149
efbd2aff66 P0: live playback progress, per-track audio cache, worker fix, TTS extension fix
- 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
2026-06-19 16:39:31 +03:00
Atte149
8405f18f5f Raise minSdk to 31 and update AGENTS.md status 2026-06-16 19:59:14 +03:00
Atte149
6ddbb01973 Polish audio/TTS UI: move labels to strings.xml, fix TTS WorkManager observer leak 2026-06-16 19:57:52 +03:00
Atte149
ccfc677ea7 docs: update AGENTS.md with integrated feature status and APK 2026-06-16 12:21:50 +03:00
Atte149
37dfd74fc9 Merge feature/progress-sync: reading and playback progress sync 2026-06-16 12:19:45 +03:00
Atte149
f54ed847f7 Merge feature/tts: TTS jobs screen with bookshelf-api 2026-06-16 12:18:04 +03:00
Atte149
abe1a3db14 Merge feature/audio: audiobook player with ExoPlayer 2026-06-16 12:15:23 +03:00
Atte149
c8c1503d8c Merge feature/ebook: open remote ebooks from RemoteLibrary 2026-06-16 12:12:01 +03:00
Atte149
7205e35d9d Merge feature/cache-ui: RemoteLibrary cache UI 2026-06-16 12:05:45 +03:00
Atte149
acff930d7b feat(audio): implement audiobook player with ExoPlayer and MediaSession
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.
2026-06-16 12:04:53 +03:00
Atte149
a6f8b6782a feat(tts): implement TTS jobs screen with bookshelf-api integration
- 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
2026-06-16 11:58:10 +03:00
Atte149
a8a1417b9d feat(progress): implement reading and playback progress sync with bookshelf-api
- Add ProgressRepository + impl to push reading/playback progress to bookshelf-api
- Add SyncReadingProgressUseCase and SyncPlaybackProgressUseCase
- Add request models for bookshelf-api and Audiobookshelf progress endpoints
- Add audio progress fields (audioCurrentFile, audioCurrentPosition) to Book/BookEntity
- Add Room migration 17->18 and generated schema
- Add BookDao/BookRepository query for books with remote IDs
- Add ProgressSyncWorker scheduled from Application.onCreate
- Hook SyncReadingProgressUseCase into ReaderModel progress updates
- Add AudioPlayerProgress placeholder with TODO for playback sync hook
- Add Hilt binding for ProgressRepository and missing string resources
2026-06-16 11:50:06 +03:00
Atte149
d1257e1d60 feat(remote-library): add ebook opening from RemoteLibrary tab
- 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.
2026-06-16 11:48:30 +03:00
Atte149
f385b9ba8b feat(bookshelf): add offline cache UI to RemoteLibrary tab
- 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.
2026-06-16 11:45:04 +03:00
Atte149
ed3afc1f16 Merge feature/settings-validation (server validation, cache/TTS scaffold) into feature/ui-polish 2026-06-16 11:40:52 +03:00
Atte149
23298b0f26 feat(ui-polish): improve RemoteLibrary & BookshelfSettings UI, add icons/strings 2026-06-16 11:35:04 +03:00
Atte149
1ed35239fd docs: update AGENTS.md status and next steps 2026-06-16 10:01:48 +03:00
Atte149
cff4db13ab Phase 5b: RemoteLibrary tab — fetch libraries/books, simple list UI 2026-06-16 09:58:26 +03:00
Atte149
0c2dfbd592 Phase 5a: server settings UI — BookshelfSettings screen, model, navigation, strings 2026-06-16 09:45:17 +03:00
Atte149
2f9431f6e6 Phase 4b: remote use cases (FetchLibraries, FetchBooks, SearchBooks) 2026-06-15 21:41:04 +03:00
Atte149
2a6b8a219d Phase 4: domain layer — ServerSettings, RemoteLibrary model, repository interface + impl 2026-06-15 21:33:13 +03:00
Atte149
33fddc922b Phase 3: data layer — remote BookEntity fields, audio/ebook/cache tables, DAOs, migration 16→17 2026-06-15 21:29:26 +03:00
Atte149
2b63ff2bec Phase 2: network scaffold (bookshelf-api + ABS clients, DI, models) 2026-06-15 21:07:32 +03:00
Atte149
ad821faecd Fork: rename package and applicationId 2026-06-15 16:13:31 +03:00
Acclorite
b0ab7d320a
docs: update README.md 2026-02-20 17:59:13 +02:00
Acclorite
06d41b8587
chore: update copyright 2026-01-01 12:39:08 +02:00
Acclorite
c7cae413f7
fix: possible issues with renaming files when caching
* Write files to cache directly (previously first to .tmp, then rename, which may've led to issues on some devices)
2025-12-27 14:35:22 +02:00
Acclorite
7f234a0ba1
feat: improve navigator bottom sheet design
* Added icons
* Aligned to the left

Co-authored-by: Edward205 <52004020+Edward205@users.noreply.github.com>
2025-12-27 14:02:50 +02:00
Acclorite
959a193e52
feat: add "horizontal limiter" option
* 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
2025-12-26 13:22:51 +02:00
Acclorite
ffa249ab78
feat: update translations 2025-12-24 15:54:09 +02:00
Acclorite
2f6138cf4e
# Conflicts:
#	app/src/main/res/values-ro/strings.xml
2025-12-24 15:50:36 +02:00
Acclorite
bda2ed1b04
feat: remove help screen
Resolves: #286
2025-12-24 15:40:52 +02:00
Acclorite
a7f55fd648
refactor: error messages in parsers 2025-11-16 11:40:21 +02:00
Acclorite
d97ca6e517
refactor: logging 2025-11-16 11:32:59 +02:00
Acclorite
df818e3081
merge: parsers-improvement into master 2025-11-13 10:07:37 +02:00
Acclorite
cce3f0fcea
feat: add loading indicator to book info's file loading 2025-11-13 10:05:20 +02:00
Acclorite
9e17d86588
refactor: cover parser 2025-11-12 10:12:58 +02:00
Acclorite
c76f7f38d5
refactor: move parsers 2025-11-07 09:09:12 +02:00
Acclorite
24d3e3ba0a
feat: option to disable scrolling in the Reader
* Appears after enabling horizontal gesture

Resolves: #186
2025-10-25 15:24:18 +03:00
Acclorite
5ba036fafb
feat: update translations 2025-10-22 17:33:55 +03:00
Acclorite
fcee822d8d
fix: display cutout start padding 2025-10-20 17:24:38 +03:00
Acclorite
bd7dbecce2
feat: option to hide navigation labels
* Added an option to hide navigation bar labels under icons
2025-10-19 19:55:55 +03:00
Acclorite
67befe9a8c
chore: update dependencies 2025-10-18 20:54:29 +03:00
Acclorite
a79af23734
fix: downgrade AGP version to 8.11.1
Resolves: #266
2025-10-16 09:06:14 +03:00
Acclorite
b0a21c116f
fix: scrollToItem does not work correctly 2025-10-13 14:35:21 +03:00
Acclorite
5a943185d8
docs: update fastlane full_description 2025-10-12 12:44:24 +03:00
Acclorite
44b4c1cdd9
docs: update README.md 2025-10-12 12:43:43 +03:00
Acclorite
d7efe8403b
chore: release v1.8.0 changelog 2025-10-12 12:43:30 +03:00
Acclorite
59eae6e029
fix: incorrect checkbox dialog item text color 2025-10-12 12:36:35 +03:00