Commit Graph
100 Commits
Author SHA1 Message Date
AntsyLich fc5592ff75 Don't bring back extension stores removed during a refresh
A store's refreshed details are written only if the store still exists when its fetch returns, so one removed while its index was loading stays removed. The unused get query becomes contains.
2026-09-27 22:44:15 +06:00
AntsyLich 0044cc73ec Fix stored stub sources not loading and being rewritten on every reload
Stub sources loaded from the database were written into a throwaway copy of the map, so they never reached the source manager. StubSource also becomes a data class, so a stored one compares equal to the same source again and isn't rewritten on every reload.
2026-09-27 22:43:48 +06:00
AntsyLich 6ee529c5aa Apply chapter sync in one transaction
A chapter sync's removals, inserts and updates go through one ChapterRepository.updateFromRemote call, applied atomically. A failure no longer leaves some of a sync's changes written and others missing. Restore folds duplicate chapters in a backup into one before writing, and the chapter deep link looks up the synced chapter afterwards rather than relying on the sync's return value.
2026-09-27 22:41:55 +06:00
AntsyLich 4df0e6b168 Keep category orders unique while reordering
Reordering first moves every category to a temporary negative position, then assigns the final ones, so two categories never share a position mid-update. Deleting a category no longer renumbers the system category.
2026-09-27 22:37:39 +06:00
AntsyLich 986f46c09a Merge manga favorite related fields into favorite_at
Migration 16 replaces favorite, date_added and favorite_modified_at with one nullable favorite_at. A favorite whose date_added is 0 falls back to favorite_modified_at. Manga.favorite and dateAdded become getters derived from it, and restore merges it by taking the earliest non-zero time.
2026-09-27 22:37:02 +06:00
AntsyLich f8fff318ba Build manga and chapter updates with a lambda and track assigned fields
MangaUpdate and ChapterUpdate are built with a lambda that records which fields were assigned, so an update writes only those fields.
2026-09-27 22:36:13 +06:00
AntsyLich 306befb214 Restrict raw database access to the data module
app no longer touches the database directly. Backup restore's queries move into a new RestoreRepository in :data, which restores a batch of entries all or nothing, stopping between entries if cancelled, as before. The remaining direct calls (excluded scanlators, clear database, backup creation, store and category restore) go through their repositories, and the database bindings move from AppBindings into :data.
2026-09-27 22:30:51 +06:00
AntsyLich a4abb6292b Split the universal update queries into case-specific ones
Source-owned fields move out of MangaUpdate/ChapterUpdate into MangaRemoteUpdate/ChapterRemoteUpdate, which only UpdateMangaFromRemote and SyncChaptersWithSource write. Backup restore gets its own updateFromBackup queries for entries and chapters, writing only what a backup carries.
2026-09-27 21:50:38 +06:00
AntsyLich c67a33f3d4 Remove unused sync scaffold
Drops the unused version, is_syncing and last_modified_at columns and their triggers.
2026-09-27 21:47:12 +06:00
AntsyLich 93a163f96e Only upload Crashlytics mapping file when building for release 2026-09-20 19:56:59 +06:00
AntsyLich 61680580dd Simplify build flags setup with distribution profile 2026-09-20 19:46:27 +06:00
AntsyLich 0de91a9c53 Remove redundant dimens.xm in :app 2026-09-20 16:36:15 +06:00
AntsyLich 2c979d2d32 Enable android.nonTransitiveRClass 2026-09-20 16:32:33 +06:00
AntsyLich 2b9cb4ca5a Refactor GenerateLocalesConfigTask to run when string files updates 2026-09-20 04:58:39 +06:00
AntsyLich 427e105840 Enable Gradle isolated projects 2026-09-20 04:58:39 +06:00
AntsyLich 12fbb13df5 Enable Gradle configuration cache 2026-09-20 04:58:38 +06:00
AntsyLich c69b14c975 Bump compileSdk to 37.2 2026-09-20 04:58:38 +06:00
AntsyLich debab6c261 Enable Gradle Tooling parallelism explicitly
Android Studio disables the backward compatibility that Gradle has for Tooling parallelism https://cs.android.com/search?q=org.gradle.tooling.parallel.ignore-legacy-default%3Dtrue&sq=
2026-09-20 04:58:38 +06:00
AntsyLich 1c43addeca Resolve Injekt dependencies directly from the Metro graph (#3965)
The previous setup had a circular dependency between Injekt
registration and extension loading.

In regard to #3931, I've moved the culprit ExtensionManager out of
Injekt altogether, alongside CoverCache, PreferenceStore and
TrackPreferences, none of which a source needs.
2026-09-15 15:57:48 +06:00
AntsyLich fdc2d40a1d Reload extensions when relevant settings are updated (#3954) 2026-09-14 22:41:53 +06:00
AntsyLich e6d8efe6f8 Expose installed extensions that failed to load (#3953) 2026-09-14 21:34:55 +06:00
AntsyLich 0e0bc6972a Allow user to load installed extensions regardless of content warning (#3952) 2026-09-14 21:22:32 +06:00
AntsyLich 0fbaa1ecec Replace extension NSFW flag with content warning app-wide (#3951) 2026-09-14 15:00:06 +00:00
AntsyLich 60e74b8d8f Don't try to create slider state when slider can't or won't be rendered (#3941) 2026-09-12 22:34:39 +06:00
AntsyLich d435dd9217 Switch to upstream Injekt
The patch is redundant given we switched to Metro DI and don't use `Injekt.addSingletonFactory` anymore
2026-09-12 16:04:58 +06:00
AntsyLich f7da5c856a Switch to upstream sqldelight-androidx-driver
The deadlock issue should be fixed upstream
2026-09-12 16:03:50 +06:00
AntsyLich 737fdbfbf0 Switch to upstream FlexibleAdapter
Closes #3932

Upstream published to Maven Central
2026-09-12 16:03:50 +06:00
AntsyLich 802958b1ea Bump compileSdk to 37.1 2026-09-12 15:28:40 +06:00
AntsyLich 34a33ed4f8 Use filled icon for library continue reading button 2026-08-30 23:30:28 +06:00
AntsyLich 7f342ca076 Use built-in DelegateLastClassLoader for extensions (#3874)
Assisted-by: Claude:claude-opus-5
2026-08-29 16:07:51 +00:00
AntsyLich b695940114 Switch to Material Symbols and use Valkyrie for ImageVector generation (#3873)
* Add material symbols icon module

Assisted-by: Claude:claude-opus-5

* Replace material icons with material symbols

Assisted-by: Claude:claude-opus-5

* Add simple icons module and migrate CustomIcons

Assisted-by: Claude:claude-opus-5
2026-08-29 21:39:55 +06:00
AntsyLich 5fadea61e7 Make the source manager surface suspend (#3869)
Assisted-by: Claude:claude-opus-5
2026-08-28 23:36:28 +06:00
AntsyLich 270b78ba95 Wait for extensions to load before the list is propagated (#3841) 2026-08-22 20:37:01 +00:00
AntsyLich 46c8f07c12 Limit vertical divider height in global search toolbar (#3839) 2026-08-22 19:56:26 +00:00
AntsyLich a2c24ff042 Use upstream scaffold (#3834) 2026-08-22 02:22:45 +00:00
AntsyLich 3e98c15b74 Remove duplicate in strings.xml 2026-08-17 05:09:13 +06:00
AntsyLich b2015d1ef3 Migrate to Metro DI (#3608)
Assisted-by: Claude:claude-opus-5
2026-08-16 18:47:48 +00:00
AntsyLich 5fa5f7e159 Load extensions off the main thread (#3788)
Assisted-by: Claude:claude-opus-5
2026-08-16 16:35:38 +00:00
AntsyLich ed30766a9f Match WebGPU reader background and transition colors to the old reader (#3765)
Assisted-by: Claude:claude-opus-5
2026-08-14 20:50:56 +00:00
AntsyLich b1efee47f5 Replace StateViewModel with explicit backing fields (#3763)
Assisted-by: Claude:claude-opus-5
2026-08-14 19:53:06 +00:00
AntsyLich d00efa4bfc Make LibraryViewModel collect library only while subscribed (#3762)
Assisted-by: Claude:claude-opus-5
2026-08-14 19:39:22 +00:00
AntsyLich b1a9a05926 Make UpdatesViewModel collect updates only while subscribed (#3761)
Assisted-by: Claude:claude-opus-5
2026-08-14 19:39:04 +00:00
AntsyLich b393088cfa Rename preview build type to nightly and label FOSS builds (#3760)
Assisted-by: Claude:claude-opus-5
2026-08-15 01:20:55 +06:00
AntsyLich 77a1a5afbd Make ExtensionsViewModel collect extensions only while subscribed (#3729)
Assisted-by: Claude:claude-opus-5
2026-08-08 20:05:11 +06:00
AntsyLich a494ebd791 Make HistoryViewModel collect history only while subscribed (#3728)
Assisted-by: Claude:claude-opus-5
2026-08-08 20:04:41 +06:00
AntsyLich c68efd0e86 Make DownloadQueueViewModel collect downloads only while subscribed (#3727)
Assisted-by: Claude:claude-opus-5
2026-08-08 20:04:29 +06:00
AntsyLich ae37c1651a Make ExtensionDetailsViewModel collect sources only while subscribed (#3726)
Assisted-by: Claude:claude-opus-5
2026-08-08 20:04:17 +06:00
AntsyLich 62288c08fb Make UpcomingViewModel collect manga only while subscribed (#3725)
Assisted-by: Claude:claude-opus-5
2026-08-08 20:04:05 +06:00
AntsyLich 3cb9883d62 Make MigrateSourceViewModel collect sources only while subscribed (#3723)
Assisted-by: Claude:claude-opus-5
2026-08-08 11:59:17 +06:00
AntsyLich fab4cbd279 Make MigrateMangaViewModel collect favorites only while subscribed (#3722)
Assisted-by: Claude:claude-opus-5
2026-08-08 11:59:04 +06:00
AntsyLich 6c0058d230 Make SourcesViewModel collect sources only while subscribed (#3721)
Assisted-by: Claude:claude-opus-5
2026-08-08 11:58:52 +06:00
AntsyLich 2aec7d19c0 Make CategoryViewModel collect categories only while subscribed (#3720)
Assisted-by: Claude:claude-opus-5
2026-08-08 11:58:41 +06:00
AntsyLich bb9767c9df Make SourcesFilterViewModel collect sources only while subscribed (#3719)
Assisted-by: Claude:claude-opus-5
2026-08-08 11:58:30 +06:00
AntsyLich 864281af7d Make ExtensionFilterViewModel collect languages only while subscribed (#3718)
Assisted-by: Claude:claude-opus-5
2026-08-08 11:58:18 +06:00
AntsyLich f6aad7497e Make ExtensionStoresViewModel collect stores only while subscribed (#3717)
Assisted-by: Claude:claude-opus-5
2026-08-08 11:58:06 +06:00
AntsyLich 0834884335 Make MangaCoverViewModel collect manga only while subscribed (#3716)
Assisted-by: Claude:claude-opus-5
2026-08-08 11:57:55 +06:00
AntsyLich 68aa4b003f Don't recheck for updates on configuration change (#3708) 2026-08-06 21:38:28 +06:00
AntsyLich aa25b3a14c Download app update without WorkManager (#3707) 2026-08-06 21:38:07 +06:00
AntsyLich 869fa1a4b2 Suppress R8 warnings for missing androidx.window extension classes 2026-08-05 23:14:47 +06:00
AntsyLich df6507256a Release v0.20.4 2026-08-05 22:27:07 +06:00
AntsyLich 21c6357967 Replace CategoryUpdate with dedicated update queries (#3693)
Assisted-by: Claude:claude-opus-5
2026-08-05 00:40:08 +06:00
AntsyLich 81e0754c0d Release v0.20.3 2026-08-04 16:58:34 +06:00
AntsyLich f7a1ecd251 Fix reader loading indefinitely in some scenarios (#3686)
Init the reader from the view model instead of the activity so it isn't
cancelled by a configuration change mid init, which left the retained
view model half initialized and needsInit() returning false.

Assisted-by: Claude Code:claude-opus-5
2026-08-03 23:51:17 +06:00
AntsyLich 55be95dd5d Improve WebView spoofing (#3678)
- Spoof `Sec-CH-UA` client hints to match the user agent
- Fix `X-Requested-With` spoofing leaking to unrelated callers
- Update default user agent to Chrome 149
2026-08-02 20:05:21 +06:00
AntsyLich 0648e2eaaf Release v0.20.2 2026-08-01 21:32:00 +06:00
AntsyLich 4296d056b5 Regenerate baseline profiles 2026-07-30 20:47:17 +06:00
AntsyLich 7aaa891aef Improve app update prompt flow experience (#3669) 2026-07-30 20:36:19 +06:00
AntsyLich d15a05602a Check for app and extension update on every cold start (#3658) 2026-07-30 01:17:10 +06:00
AntsyLich 069e5c91ac Collect data on device preferred abi
Mainly to analyze if it's worth making binaries for x86 and 32Bit devices
2026-07-25 20:32:23 +06:00
AntsyLich 9c3cc1ca5f Convert :source-api and :source-local to android library module (#3636)
- There's really no plan to support other platforms on this code base
- The "KMP" modules only had android target which is rather pointless
- `i18n` involves more work but given it has no actual code keeping it as is
2026-07-23 16:47:24 +00:00
AntsyLich 98705910e7 Fix crash caused by inaccessible view model classes during creation (#3609) 2026-07-19 14:06:01 +00:00
AntsyLich 98bb731b4d Remove non cancellable call when trying to init reader 2026-07-16 18:23:43 +06:00
AntsyLich c3b99aea07 Migrate to AndroidX ViewModel from Voyager ScreenModel (#3594) 2026-07-15 21:19:11 +06:00
AntsyLich cb2617dee0 Add fastlane metadata (#3564) 2026-07-11 20:01:33 +06:00
AntsyLich b4635c41a8 Fixed app bars remaining visible after changing pages by tapping in the paged reader after using the chapter navigator slider (#3567) 2026-07-10 13:35:16 +00:00
AntsyLich b2ca6bc5f3 Revert "Disable resumable image downloads"
This reverts commit 3d3bd49d1c.
2026-07-10 00:08:26 +06:00
AntsyLich a8d3e39779 Release v0.20.1 2026-07-10 00:07:57 +06:00
AntsyLich 3d3bd49d1c Disable resumable image downloads 2026-07-10 00:06:59 +06:00
AntsyLich 4a66b8b5df Fix HTTP Error 416 not being handled properly for resumable downloads 2026-07-10 00:03:07 +06:00
AntsyLich aa434285b2 Remove flag to disable code shrinking
androidx.benchmark plugin adds non minified versions of the release variants. we can just reuse that.
2026-07-09 23:22:30 +06:00
AntsyLich 91e967128d Regenerate baseline profiles 2026-07-09 23:06:33 +06:00
AntsyLich abef1cb8c5 Add proguard rule for com.squareup.zstd 2026-07-09 22:46:40 +06:00
AntsyLich 75f506836c Fix app not reading tachiyomix.extensionLib extension metadata 2 (#3559) 2026-07-09 08:31:34 +00:00
AntsyLich 44780e74b5 Add vertical chapter navigator for paged reader with height adjustment option (#3531) 2026-07-09 08:11:56 +00:00
AntsyLich 0ff654205f Update aboutLibraries to v15 (#3553) 2026-07-08 17:13:18 +00:00
AntsyLich a313c747f3 Fix reader navigator slider steps not updating after changing chapter (#3549) 2026-07-08 16:58:45 +00:00
AntsyLich 66b390c62a Fix app not reading tachiyomix.extensionLib extension metadata (#3545)
Android was interpreting the field as a float and failing (which is nuts imo)

Also cleaned up the lib validation logic
2026-07-08 07:43:17 +00:00
AntsyLich 3b078331a0 Fix support for non-system SAF providers (#3530) 2026-07-06 23:14:24 +06:00
AntsyLich b8e5f22c01 Add proguard rules to keep Serializable writeReplace and readResolve 2026-07-05 22:21:04 +06:00
AntsyLich c3bf7a78c0 Fix crash when putting app in background (#3523) 2026-07-05 11:51:10 +06:00
AntsyLich 94b3b5eaa2 Revert "Fix crash when putting app in background while on notes screen (#3515)"
This reverts commit 76cc04c8f4.
2026-07-04 15:18:40 +06:00
AntsyLich 27284a40ab Fix crash trying to select text in notes screen (#3516) 2026-07-03 23:32:03 +06:00
AntsyLich 76cc04c8f4 Fix crash when putting app in background while on notes screen (#3515) 2026-07-03 23:25:29 +06:00
AntsyLich dfed97edc8 Address compose and xmlutil deprecations (#3507) 2026-07-02 19:15:42 +00:00
AntsyLich a82ccea6f5 Update voyager to 2.2.21-1.10.3 (#3466) 2026-06-27 08:53:33 +06:00
AntsyLich 19f1d00fcb Release v0.20.0 2026-06-27 05:58:04 +06:00
AntsyLich 6c6a07c0c0 Ensure app shortcuts use correct color scheme on preview builds (#3473) 2026-06-26 14:25:19 +06:00
AntsyLich 8e323e30de Update store decoding to account for new CONTENT_WARNING_UNSPECIFIED (#3472) 2026-06-26 07:24:53 +00:00
AntsyLich 735cea35f9 Ensure all tachiyomix required dependencies are present (#3465) 2026-06-23 18:19:27 +00:00
AntsyLich 41265cce32 Query for new tachiyomix metadata from extensions (#3464) 2026-06-23 18:04:44 +00:00