samiul@portfolio:~/projects/dareader$ cat README.md
03 dareader
A Tachiyomi-style reader for Linux in Kotlin + Compose Multiplatform that loads Keiyoushi's Android extensions directly on the desktop JVM.
status: early: loader slice working
samiul@portfolio:~/projects/dareader$ cat problem.txt
Keiyoushi extensions ship as Android APKs: Dalvik bytecode linked against android.* classes. A desktop JVM can't load dex at all, let alone satisfy those imports.
samiul@portfolio:~/projects/dareader$ cat build.log
The extension runtime does it in-process: parse the APK manifest without installing, convert the dex to a jar with dex2jar, run two ASM repair passes over the bytecode, then load each jar in its own child-first classloader with android.* stubbed out on the JVM. The approach and the compat module are vendored from Suwayomi-Server rather than reinvented. The loader slice renders browse → detail → reader against live extensions (exercised on MangaDex and Comic Fury), with an extension store, install trust checks and a dark Material 3 shell on Compose Multiplatform. Revenant takes the other route to the same problem and runs extensions in a sidecar server.
samiul@portfolio:~/projects/dareader$ cat highlights.txt
- APK → dex2jar → ASM repair → child-first classloader, all in-process
- android.* stubbed on the desktop JVM
- Browse → detail → reader working against live extensions
- Extension store with an install trust pipeline
- Compose Multiplatform, Material 3 dark shell
samiul@portfolio:~/projects/dareader$ cat stack.toml
# dareader
lang = "kotlin + java"
ui = "compose multiplatform, material 3"
load = "dex2jar + asm repair passes"
isolate = "child-first classloader per jar"
compat = "android.* stubs on the jvm"
status = "loader slice working"
stack = ["Kotlin", "Compose Multiplatform", "Java", "Gradle"]
samiul@portfolio:~/projects/dareader$ git remote -v