Commit graph

553 commits

Author SHA1 Message Date
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
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
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
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
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
b0a21c116f
fix: scrollToItem does not work correctly 2025-10-13 14:35:21 +03:00
Acclorite
59eae6e029
fix: incorrect checkbox dialog item text color 2025-10-12 12:36:35 +03:00
Acclorite
c04d597d25
chore: remove outdated credit 2025-10-09 10:59:55 +03:00
Acclorite
b93f58e7c1
chore: update aboutlibraries.json 2025-10-03 19:33:21 +03:00
Acclorite
19114d35b0
fix: migrate sort order of default category 2025-10-03 19:23:03 +03:00
Acclorite
53e6b5bf3e
feat(translation): add Hungarian and Korean
* Thank you for translation!
2025-10-01 14:15:46 +03:00
Acclorite
ef30803af7
fix(translation): insert empty lines between comments in uk/strings.xml 2025-10-01 14:08:50 +03:00
Weblate (bot)
6bdf3b8219
feat: update translations (#238)
* feat: German translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/de/

* feat: Spanish translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/es/

* feat: Arabic translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/ar/

* feat: Czech translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/cs/

* feat: French translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/fr/

* feat: Italian translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/it/

* feat: Polish translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/pl/

* feat: Romanian translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/ro/

* feat: Turkish translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/tr/

* feat: Chinese (Simplified Han script) translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/zh_Hans/

* feat: Portuguese (Brazil) translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/pt_BR/

* feat: Tamil translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/ta/

* feat: Hindi translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/hi/

* feat: Belarusian translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/be/

* feat: Japanese translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/ja/

* feat: Chinese (Simplified Han script) translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/zh_Hans/

* feat: Malayalam translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/ml/

* feat: Malayalam translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/ml/

* feat: Korean translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/ko/

* feat: Turkish translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/tr/

* feat: Turkish translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/tr/

* feat: German translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/de/

* feat: Arabic translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/ar/

* feat: Arabic translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/ar/

* feat: Portuguese (Brazil) translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/pt_BR/

* feat: Portuguese (Brazil) translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/pt_BR/

* feat: Spanish translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/es/

* feat: Spanish translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/es/

* feat: Ukrainian translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/uk/

* feat: Chinese (Simplified Han script) translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/zh_Hans/

* feat: add Hungarian language

* feat: Spanish translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/es/

* feat: Spanish translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/es/

* feat: Spanish translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/es/

* feat: Spanish translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/es/

* feat: Hungarian translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/hu/

* feat: French translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/fr/

* feat: add Catalan language

* feat: add Chinese (Traditional Han script) language

* feat: add Greek language

* feat: add Sinhala language

* feat: Chinese (Simplified Han script) translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/zh_Hans/

* feat: add Estonian language

* feat: Arabic translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/ar/

* feat: Spanish translation

Translation URL: https://hosted.weblate.org/projects/book-story/book-story-translation/es/

---------

Co-authored-by: tct123 <tct1234@protonmail.com>
Co-authored-by: Locochov <107516283+Locochov@users.noreply.github.com>
Co-authored-by: Biscuittttt <biscuitwithtea.tall310@passinbox.com>
Co-authored-by: lsr <hryazajimavostionich@gmail.com>
Co-authored-by: Andewalden <Andewalden@users.noreply.hosted.weblate.org>
Co-authored-by: Deleted User <noreply+92233@weblate.org>
Co-authored-by: Chris KK <tlumaczeniegodot@gmail.com>
Co-authored-by: Viorel-Cătălin Răpițeanu <rapiteanu.catalin@gmail.com>
Co-authored-by: Deerio Chaelingo <DeeChael@outlook.com>
Co-authored-by: Juan Carlos Rubin <juancarlosrubin08@gmail.com>
Co-authored-by: தமிழ்நேரம் <anishprabu.t@gmail.com>
Co-authored-by: Shahrzaad Parekh <smparekh@gmail.com>
Co-authored-by: IamR3m <klubberzone@gmail.com>
Co-authored-by: maccha <swear-grew-rematch@duck.com>
Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Muhammed Shehaz <shehax21@gmail.com>
Co-authored-by: chamDomi <andykim1315@gmail.com>
Co-authored-by: Sasi Ba <sasiba8328@fuasha.com>
Co-authored-by: jonnysemon <jonnysemon@users.noreply.hosted.weblate.org>
Co-authored-by: Juan Rubin <juancrubin08@gmail.com>
Co-authored-by: camisama0907 <momochiicami@gmail.com>
Co-authored-by: Acclorite <acclorite@users.noreply.hosted.weblate.org>
Co-authored-by: Eskuero <3skuero@gmail.com>
Co-authored-by: Sofia <sofimanci2112@gmail.com>
Co-authored-by: Komainu <0komainu0@users.noreply.hosted.weblate.org>
Co-authored-by: arden <minsmerc@proton.me>
Co-authored-by: Samylol99 <merkouche3@gmail.com>
Co-authored-by: Acclorite <2ma0bhpk@anonaddy.com>
2025-10-01 14:00:16 +03:00
Acclorite
b28e6e7858
feat: add note to the LibrarySortSubcategory 2025-10-01 13:51:28 +03:00
Acclorite
f2b2b04bac
fix: ensure default category 2025-10-01 13:43:41 +03:00
Acclorite
67e5eb8edf
fix: incorrect value in library top bar 2025-10-01 13:39:15 +03:00
Acclorite
30ee74cfff
feat: select all books button in library
* Added "Select all books" button to the Library which selects all books in the current category
2025-09-28 17:48:48 +03:00
Acclorite
14cf04a8ce
fix: show default category when no other categories exist
* Fixed bug where default category wasn't shown if no categories and books exist
2025-09-25 20:42:54 +03:00
Acclorite
c46ecb7ff0
fix: crash because of migration
* Fixed crash related to migration
2025-09-24 23:30:34 +03:00
Acclorite
6d7e178d4c
refactor: category entity
* Merge CategorySortEntity with CategoryEntity
2025-09-23 16:59:24 +03:00
Acclorite
1d9f5514ff
refactor: book entity
* Remove nullability from author
2025-09-01 22:18:49 +03:00
Acclorite
56b5aba67a
refactor: history entity
* Added HistoryWithBook that fetches both HistoryEntity and BookEntity
* Removed nullability from History
2025-08-29 13:51:39 +03:00
Acclorite
a45078cae5
refactor: color preset entity
* I/O for repository calls
* Removed nullability from ColorPresetEntity
2025-08-27 23:20:07 +03:00
Acclorite
b0c567bdc9
refactor: settings viewmodel 2025-08-24 15:25:46 +03:00