Commit graph

24 commits

Author SHA1 Message Date
okhsunrog
5aadb0165b Rename APK artifact from vpnhide-lsposed to vpnhide 2026-04-14 03:00:10 +03:00
okhsunrog
6f80892f24 Move update JSON files to update-json/ directory 2026-04-13 23:05:01 +03:00
okhsunrog
8f522166ee Add Magisk/KSU auto-update support via updateJson
- update-version.sh generates per-KMI update JSON files for kmod and one
  for zygisk, pointing to GitHub Release artifacts
- CI injects updateJson URL into module.prop before packaging zips
- module.prop in repo stays clean (no updateJson), CI appends it per-variant
- Update version mismatch issue texts to direct users to KernelSU/Magisk
  Modules for updating
- Fix versionName/versionCode back to 0.4.2 (was accidentally 0.4.3 from
  test bump)
2026-04-13 21:15:35 +03:00
okhsunrog
14af7b7ec4 Rework Apps tab UI and fix lint issues
- Replace top bar filter icon with inline "Show system apps" checkbox
- Add hint card explaining L/K/Z layer toggles and Zygisk caveat
- Move showSystem state inside AppPickerScreen
- Fix RELEASE_OR_CODENAME lint error (requires API 30, min is 29)
- Mark technical check strings as translatable="false"
- Add Android lint step to CI
- Apply ktlint formatting
2026-04-13 20:48:26 +03:00
okhsunrog
69d2aa3903 ci: add Android SDK to CI image, revert lsposed job to container 2026-04-13 15:35:28 +03:00
okhsunrog
16f4746c9a fix: lsposed CI back to bare ubuntu with Rust+NDK setup (needs Android SDK) 2026-04-13 15:34:05 +03:00
okhsunrog
d1a547984a fix: use GITHUB_WORKSPACE env var instead of github.workspace in container 2026-04-13 15:30:53 +03:00
okhsunrog
12c082911e fix: use absolute paths in lsposed CI job (container workdir) 2026-04-13 15:27:37 +03:00
okhsunrog
892e3bb910 refactor: remove separate process, delete test-app, simplify diagnostics
- Remove CheckRunnerService and :checks process — the ECONNREFUSED
  issue was caused by Android per-app network restriction, not Vector
  runtime. Checks run directly in the main process now.
- Delete test-app entirely — all diagnostics are now in the VPN Hide app
- Remove test-app from CI, lint, .gitignore, and update-version.sh
- Add lsposed/native to version update script and CI lint
2026-04-13 14:58:52 +03:00
okhsunrog
567b377d47 feat: merge diagnostics into VPN Hide app
- Add native Rust checks library (lsposed/native/) with all 26 detection
  checks, ported from test-app with updated JNI package path
- Add NativeChecks.kt JNI bridge
- Add DiagnosticsScreen.kt with full test UI (sections, banners, cards)
- Add bottom navigation: Apps tab (target picker) + Diagnostics tab
- Update CI: lsposed job now uses CI container image (has Rust + NDK)
- Merge all diagnostic strings into lsposed strings.xml (EN + RU)
- Add cargo-ndk build task to lsposed gradle
2026-04-13 11:35:53 +03:00
okhsunrog
540d7cbfcc feat: add release signing for lsposed and test-app APKs
- Add signingConfigs to both build.gradle.kts files, reading keystore
  credentials from keystore.properties (gitignored, local absolute path)
- Both debug and release builds use the same signing key for consistent
  signatures between local and CI builds
- CI decodes keystore from ANDROID_KEYSTORE_BASE64 secret, builds
  assembleRelease instead of assembleDebug
- Add keystore-related files to .gitignore for test-app
2026-04-13 00:13:44 +03:00
okhsunrog
b4677cdb25 ci: add clang-format, ktlint, and cargo test to lint job
- Rename lint-rust → lint, add clang-format and ktlint checks
- Add cargo test step for zygisk unit tests
- Install clang-format and ktlint 1.8.0 in CI Docker image
2026-04-12 23:29:36 +03:00
okhsunrog
5107412d04 ci: rename APK artifacts to vpnhide-lsposed.apk and vpnhide-test.apk 2026-04-11 23:07:03 +03:00
okhsunrog
5d5bfaa482 ci: auto-detect clang version in DDK image 2026-04-11 22:58:41 +03:00
okhsunrog
f071e7877b ci: use DDK images for kmod, build all 7 GKI generations
Replace custom kernel source cloning + prepare with pre-built DDK
Docker images (ghcr.io/ylarod/ddk-min). These include kernel headers,
Module.symvers, and AOSP clang for each GKI generation.

Now builds for: android12-5.10, android13-5.10, android13-5.15,
android14-5.15, android14-6.1, android15-6.6, android16-6.12.

Drop sha256 files from releases.
2026-04-11 22:55:49 +03:00
okhsunrog
de7c4eaaf4 ci: add rustfmt and clippy to Docker image 2026-04-11 22:36:01 +03:00
okhsunrog
efed29f7d5 ci: add Rust lint job (fmt + clippy for both crates) 2026-04-11 22:29:40 +03:00
okhsunrog
e413debe45 refactor: replace C++ native checks with Rust
Port all 15 native VPN detection checks from C++ to Rust using
jni + libc crates. Gradle triggers cargo-ndk automatically via
a preBuild dependency — single `./gradlew installDebug` builds
everything.

- Remove CMakeLists.txt and native-lib.cpp
- Add test-app/native/ Rust crate with Cargo.toml and src/lib.rs
- Gradle buildRustNative task runs cargo-ndk, copies .so to jniLibs
- Update CI test-app job with Rust + NDK setup
- 23/23 checks pass on device
2026-04-11 22:19:59 +03:00
okhsunrog
fe2a104572 ci: unify into single workflow with parallel builds
Replace separate kmod/zygisk/lsposed workflows with one ci.yml.
Four jobs run in parallel: kmod, zygisk, lsposed, test-app.
A release job depends on all four and runs only on tag pushes,
creating a GitHub release with all artifacts and checksums.
2026-04-11 21:46:49 +03:00
okhsunrog
1849ead690 ci: add flex, bison, libssl-dev, libelf-dev to Docker image 2026-04-11 21:10:30 +03:00
okhsunrog
50176322d3 ci: add AOSP clang to PATH for host tool compilation 2026-04-11 21:07:57 +03:00
okhsunrog
617d7c3213 ci: specify branch for AOSP clang sparse checkout 2026-04-11 20:57:19 +03:00
okhsunrog
5ee50935c4 ci: use AOSP clang in Docker image, fix kmod build
- Add Google's AOSP clang (clang-r487747c, same as Pixel kernel build)
  to the CI Docker image via sparse checkout. Distro clang caused ABI
  mismatches leading to bootloops on device.
- Update kmod workflow to use the Docker image + AOSP clang instead of
  system clang from apt.
- Replace symvers with real vmlinux.symvers from Pixel kernel build
  (8050 symbols vs 4060 from device .ko extraction).
- Add kmod build deps (bc, kmod, cpio, binutils-aarch64) to Docker image.
2026-04-11 20:53:20 +03:00
okhsunrog
12daca5c1a monorepo: combine vpnhide-zygisk, vpnhide (lsposed), and vpnhide-kmod
Unified repository for the complete Android VPN-hiding stack:
- zygisk/ — Rust Zygisk module (inline libc hooks via shadowhook)
- lsposed/ — Kotlin LSPosed module (Java API + system_server hooks)
- kmod/ — C kernel module (kretprobe hooks, invisible to anti-tamper)

CI workflows use path filters to build only the changed component.
2026-04-11 15:01:49 +03:00