Linux support (#381)

* Add desktop release CI and support for Arch Linux packaging

* Make Gradle wrapper executable in desktop-release workflow

* Make Gradle wrapper executable in desktop-release workflow

* Make Gradle wrapper executable in desktop-release workflow

* Configure Gradle and update Java environment in desktop-release workflow

* Update Java setup and AUR packaging in desktop release workflow

* Update Java setup and AUR packaging in desktop release workflow

* Add MSIX packaging support for Windows desktop distribution

* Update AUR packaging metadata and validation

* Use spine toc attribute for NCX resolution

* crash fixes

* Implement automatic discovery and injection of EPUB font face siblings

* Enhance custom font support with family grouping and variable font handling

* Optimize metadata loading and improve TTS highlighting

* Add keyboard navigation support for EPUB reader

* Refine PDF spread page sizing to respect aspect ratios

* Implement responsive maximum height for reader popups and sheets

* Handle TTS generation failures by skipping problematic chunks

* Refactor PDF tile rendering logic and zoom indicator behavior

* Prefer block and offset locators over page index in native vertical flow

* Implement save and share actions for original book files

* Add Estonian language support

* Implement temporary viewing mode for external files

* Implement direct opening for temporary external files without library persistence

* fix failing tests

* Import SharedFileCapabilities in DesktopLibraryUi

* Improve native vertical reader progress, persistence, and image support

* Center target in viewport for native vertical reader and support animated scrolling
This commit is contained in:
Aryan 2026-06-14 13:43:49 +05:30 committed by GitHub
parent a13d6599d1
commit 625a4d5d2e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
102 changed files with 6012 additions and 687 deletions

View file

@ -1,20 +1,40 @@
import com.android.build.api.dsl.LibraryExtension
plugins {
alias(libs.plugins.kotlin.multiplatform)
id("com.android.library")
alias(libs.plugins.android.library) apply false
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.compose.multiplatform)
alias(libs.plugins.kotlin.serialization)
alias(libs.plugins.kover)
}
fun isDesktopOnlyBuild(): Boolean {
providers.gradleProperty("desktopOnly").orNull
?.let { return it.equals("true", ignoreCase = true) }
val requestedTasks = gradle.startParameter.taskNames
return requestedTasks.isNotEmpty() && requestedTasks.all { taskName ->
val normalized = taskName.removePrefix(":")
normalized.startsWith("desktopApp:")
}
}
val desktopOnlyBuild = isDesktopOnlyBuild()
if (!desktopOnlyBuild) {
apply(plugin = "com.android.library")
}
kotlin {
androidTarget()
if (!desktopOnlyBuild) {
androidTarget()
}
jvm("desktop")
jvmToolchain(21)
sourceSets {
val commonMain by getting
val androidMain by getting
val desktopMain by getting
val readerJvmMain by creating {
dependsOn(commonMain)
@ -22,7 +42,10 @@ kotlin {
implementation("org.jsoup:jsoup:1.17.2")
}
}
androidMain.dependsOn(readerJvmMain)
if (!desktopOnlyBuild) {
val androidMain by getting
androidMain.dependsOn(readerJvmMain)
}
desktopMain.dependsOn(readerJvmMain)
commonMain.dependencies {
@ -40,15 +63,17 @@ kotlin {
}
}
android {
namespace = "com.aryan.reader.shared"
compileSdk = 36
if (!desktopOnlyBuild) {
extensions.configure<LibraryExtension>("android") {
namespace = "com.aryan.reader.shared"
compileSdk = 36
defaultConfig {
minSdk = 26
}
defaultConfig {
minSdk = 26
}
buildFeatures {
buildConfig = true
buildFeatures {
buildConfig = true
}
}
}