Skip to content

Merge with Mihon: SQLDelight driver, transaction cleanup, and Gradle 9.5 #406

Open
Dark25 wants to merge 41 commits into
masterfrom
merge-mihon-clean
Open

Merge with Mihon: SQLDelight driver, transaction cleanup, and Gradle 9.5 #406
Dark25 wants to merge 41 commits into
masterfrom
merge-mihon-clean

Conversation

@Dark25

@Dark25 Dark25 commented May 25, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

renovate-bot and others added 13 commits May 25, 2026 18:16
(cherry picked from commit 34fa9138d9b92b2f065a242a79ccb67f70a17c7b)
…(#3232)

(cherry picked from commit e676c8e6e15181e0eb8ddbd8dc4a9ca8e438375e)
(cherry picked from commit d68347f5fbc897c78ff255c1c343f90c161ca6f6)
(cherry picked from commit cb6daa5e4ca4830f9818ad296a6413f089f81559)
(cherry picked from commit 5b32a990a2380da119713f07169b1b7296a0ccb0)
…3256)

(cherry picked from commit 4faf89fc6fd9c5ab5786029ed1aebabeb0fd8e73)
(cherry picked from commit 38ccd7d5fc07cb7ddc353835ec57e88f43488301)
(cherry picked from commit a2f3ec94aa2a079cbcbcf54aaaa5f1d1f1a8a4e4)
…#3270)

`sqldelight-androidx-driver` has it's own transaction management

(cherry picked from commit 8e0c911f93e60db35dcbe2a9103ac6ea0d803e29)
Copilot AI review requested due to automatic review settings May 25, 2026 17:15

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR syncs Animetail’s build and data layers with Mihon’s recent changes, primarily upgrading the Gradle/AGP toolchain and migrating SQLDelight usage toward async APIs while cleaning up insert/transaction patterns across repositories.

Changes:

  • Upgraded build tooling (Gradle wrapper/scripts, AGP/Kotlin versions, compile SDK) and adjusted CI workflows accordingly.
  • Enabled SQLDelight async code generation and refactored multiple repositories to use async query/Flow helpers.
  • Updated many SQLDelight insert statements to return last_insert_rowid() directly from the insert query (removing separate “select last inserted id” statements).

Reviewed changes

Copilot reviewed 51 out of 53 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
source-local/build.gradle.kts KMP Android target tweaks; add withHostTest workaround; remove instrumentation runner config block.
source-api/build.gradle.kts Update Android optimization/keep rules publishing; add withHostTest workaround.
i18n/build.gradle.kts Add withHostTest workaround for KMP Android target.
i18n-tail/build.gradle.kts Remove Android lint disable block.
i18n-aniyomi/build.gradle.kts Remove lint disables and preBuild dependency; rely on androidComponents generated res wiring.
gradlew.bat Update Windows wrapper behavior around setlocal/exit handling.
gradlew Update referenced Gradle template URL hash.
gradle/wrapper/gradle-wrapper.properties Bump Gradle distribution to 9.5.0; add retry-related properties.
gradle/mihon.versions.toml Bump Android compile SDK version.
gradle/libs.versions.toml Bump many dependency/plugin versions; add Android KMP library plugin; adjust SQLDelight + image-decoder coordinates.
gradle/build-logic/src/main/kotlin/PluginKotlinMultiplatform.kt Switch to Android KMP library plugin and configure Android target SDK/desugaring via build-logic.
gradle/build-logic/src/main/kotlin/PluginComposeAndroid.kt Add helper to configure buildFeatures via CommonExtension.
gradle/build-logic/src/main/kotlin/PluginAndroidBase.kt Inline Android SDK/desugaring defaults into base plugin; add helper extension funcs.
gradle/build-logic/src/main/kotlin/mihon/gradle/extensions/Project.kt Change Project.android {} helper to configure via CommonExtension.
gradle/build-logic/src/main/kotlin/mihon/gradle/configurations/Android.kt Delete old configureAndroid() implementation (moved into plugins).
gradle.properties Remove deprecated/obsolete AndroidX + KMP source set layout properties.
domain/build.gradle.kts Add compileOnly Compose BOM/runtime annotation dependency alignment.
data/src/main/sqldelightanime/dataanime/saved_search.sq Make insert return last_insert_rowid() within the insert query block.
data/src/main/sqldelightanime/dataanime/feed_saved_search.sq Same insert/rowid pattern update; remove standalone rowid query.
data/src/main/sqldelightanime/dataanime/episodes.sq Same insert/rowid pattern update; remove standalone rowid query.
data/src/main/sqldelightanime/dataanime/custom_buttons.sq Same insert/rowid pattern update; remove standalone rowid query.
data/src/main/sqldelightanime/dataanime/categories.sq Same insert/rowid pattern update; remove standalone rowid query.
data/src/main/sqldelightanime/dataanime/animes.sq Same insert/rowid pattern update; remove standalone rowid query.
data/src/main/sqldelight/data/mangas.sq Convert insert to return rowid; add insertNetworkManga query for upsert-like behavior.
data/src/main/sqldelight/data/chapters.sq Convert insert to return rowid; remove standalone rowid query.
data/src/main/sqldelight/data/categories.sq Convert insert to return rowid; remove standalone rowid query.
data/src/main/java/tachiyomi/data/updates/manga/MangaUpdatesRepositoryImpl.kt Migrate from handler wrapper to direct Database + async query/Flow helpers.
data/src/main/java/tachiyomi/data/source/manga/MangaSourceRepositoryImpl.kt Migrate flows to Database queries using new subscribeToList extension.
data/src/main/java/tachiyomi/data/source/anime/SavedSearchRepositoryImpl.kt Use insert query return value directly instead of separate last-row-id query.
data/src/main/java/tachiyomi/data/source/anime/FeedSavedSearchRepositoryImpl.kt Use insert query return value directly; adjust partial update batching behavior.
data/src/main/java/tachiyomi/data/QueryExtension.kt Add Flow subscription helpers using SQLDelight async coroutines APIs.
data/src/main/java/tachiyomi/data/items/episode/EpisodeRepositoryImpl.kt Use insert query return value directly for assigning inserted IDs.
data/src/main/java/tachiyomi/data/items/chapter/ChapterRepositoryImpl.kt Replace handler calls with Database + async await/subscribe APIs; adjust transaction usage.
data/src/main/java/tachiyomi/data/history/manga/MangaHistoryRepositoryImpl.kt Replace handler calls with direct async DB query usage.
data/src/main/java/tachiyomi/data/entries/manga/MangaRepositoryImpl.kt Replace handler calls with Database + async await/subscribe APIs; refactor transactional writes.
data/src/main/java/tachiyomi/data/entries/anime/AnimeRepositoryImpl.kt Rely on insert returning value directly (remove standalone last-row-id query).
data/src/main/java/tachiyomi/data/custombutton/CustomButtonRepositoryImpl.kt Change multi-update behavior to per-update calls.
data/src/main/java/tachiyomi/data/category/manga/MangaCategoryRepositoryImpl.kt Migrate to async query APIs; change multi-update behavior to per-update calls.
data/src/main/java/tachiyomi/data/category/anime/AnimeCategoryRepositoryImpl.kt Change multi-update behavior to per-update calls.
data/build.gradle.kts Enable SQLDelight async generation for both databases.
build.gradle.kts Add Kotlin Gradle plugin to buildscript; add Android KMP library plugin alias.
app/src/main/java/eu/kanade/tachiyomi/di/AppModule.kt Minor constructor argument style change for SQLDelight driver creation.
app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaRestorer.kt Remove standalone last-row-id query usage on insert (insert now returns id).
app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaCategoriesRestorer.kt Same insert/rowid behavior change for category creation.
app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/CustomButtonRestorer.kt Same insert/rowid behavior change for custom button creation.
app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/AnimeRestorer.kt Remove standalone last-row-id query usage on insert (insert now returns id).
app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/AnimeCategoriesRestorer.kt Same insert/rowid behavior change for category creation.
app/src/main/java/eu/kanade/domain/entries/manga/interactor/SetExcludedScanlators.kt Switch to direct Database transaction usage; currently mixes sync/async query APIs.
app/src/main/java/eu/kanade/domain/entries/manga/interactor/GetExcludedScanlators.kt Migrate to async await/subscribe query APIs.
app/build.gradle.kts Adjust source set resource dir DSL; add SQLDelight async dependency; remove some buildFeatures toggles.
.github/workflows/build_push.yml Bump softprops/action-gh-release action pin/version.
.github/workflows/build_pull_request.yml Run debug unit tests and upload corresponding report path.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +106 to +107
for (update in updates) {
updatePartial(update)
Comment on lines +44 to +45
for (update in updates) {
updatePartialCustomButton(update)
Comment on lines +75 to +76
for (update in updates) {
updatePartialAnimeCategory(update)
Comment on lines 82 to 86
override suspend fun updatePartialMangaCategories(updates: List<CategoryUpdate>) {
handler.await(inTransaction = true) {
for (update in updates) {
updatePartialBlocking(update)
}
updates.forEach { update ->
updatePartialMangaCategory(update)
}
}
package eu.kanade.domain.entries.manga.interactor

import tachiyomi.data.handlers.manga.MangaDatabaseHandler
import app.cash.sqldelight.async.coroutines.awaitAsList
renovate-bot and others added 14 commits June 12, 2026 19:35
…xtension index format (#3349)

# Conflicts:
#	app/src/main/AndroidManifest.xml
#	app/src/main/java/eu/kanade/domain/DomainModule.kt
#	app/src/main/java/eu/kanade/domain/extension/anime/interactor/TrustAnimeExtension.kt
#	app/src/main/java/eu/kanade/presentation/browse/manga/MangaExtensionsScreen.kt
#	app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt
#	app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/AnimeExtensionReposScreen.kt
#	app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/MangaExtensionReposScreenModel.kt
#	app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/components/ExtensionReposDialogs.kt
#	app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/components/ExtensionStoresContent.kt
#	app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/components/ExtensionStoresScreen.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupOptions.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/AnimeExtensionRepoBackupCreator.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/backup/models/Backup.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/BackupRestorer.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/RestoreOptions.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/AnimeExtensionRepoRestorer.kt
#	app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt
#	app/src/main/java/eu/kanade/tachiyomi/extension/manga/api/MangaExtensionApi.kt
#	app/src/main/java/eu/kanade/tachiyomi/extension/manga/model/MangaExtension.kt
#	app/src/main/java/eu/kanade/tachiyomi/extension/model/Extension.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/browse/manga/extension/MangaExtensionsTab.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
#	app/src/main/java/mihon/core/migration/migrations/TrustExtensionRepositoryMigration.kt
#	data/src/main/sqldelight/data/extension_store.sq
#	data/src/main/sqldelight/migrations/11.sqm
#	data/src/main/sqldelightanime/dataanime/extension_repos.sq
#	domain/src/main/java/eu/kanade/tachiyomi/extension/model/Extension.kt
#	domain/src/main/java/mihon/domain/extensionrepo/manga/interactor/CreateMangaExtensionRepo.kt
#	domain/src/main/java/mihon/domain/extensionrepo/manga/interactor/GetMangaExtensionRepo.kt
#	domain/src/main/java/mihon/domain/extensionrepo/manga/interactor/UpdateMangaExtensionRepo.kt
#	domain/src/main/java/mihon/domain/extensionrepo/manga/repository/MangaExtensionRepoRepository.kt
(cherry picked from commit 97a7deb)

# Conflicts:
#	CHANGELOG.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants