Skip to content
CAI
Software that uses CAICheck a score

Mygod/VPNHotspot

63.4

Adequate · 25 September 2026

30.7k

lines of production code

Kotlin

with Rust

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Features

Add NAT66 ICMP verification script

A new script, scripts/verify\_nat66\_icmp\_hop\_limit.sh, has been added to the project. This script performs host-side NAT66 ICMPv6 smoke tests, including gateway and public echo requests, hop-limit validation, and UDP/TCP/ICMP verification over a specified interface. It requires root privileges and various network utilities to run.

scripts · high confidence

Repository initialization and build system update

The repository was initialized with a new Apache License 2.0, a comprehensive AGENTS.md development guide, and an updated gradlew script that now uses the -jar flag to invoke the Gradle wrapper, alongside a .gitmodules file adding the aosp-hardware-interfaces submodule.

(repo-wide) · high confidence

Behavioural changes

Added Google services configuration and updated ProGuard rules

The mobile module now includes a google-services.json file for Firebase/Google services integration, enabling analytics and app invite features for the 'be.mygod.vpnhotspot' package. Additionally, ProGuard rules were updated to preserve line number information for debugging, disable code obfuscation, and force coroutine debug mode to improve stack trace readability in release builds.

mobile · high confidence

Added Gradle JVM toolchain configuration

A new file, gradle/gradle-daemon-jvm.properties, has been added to the project. This file configures the Java toolchain for the Gradle daemon, specifying JetBrains as the vendor and version 21 as the target Java version, along with download URLs for various operating systems and architectures.

gradle · high confidence

Pin AOSP hardware/interfaces to specific commit for VINTF stability

The repository now pins the external AOSP hardware/interfaces submodule to a specific frozen commit (0162af698935100a590b7359581ac8b1b80693e5) from the android17-release branch. This ensures that the generated client-side Binder proxies for the WiFi supplicant and common interfaces remain stable and compatible with the runtime path, preventing unexpected changes from upstream AOSP from breaking the integration.

external · medium confidence

Test coverage

Added tests for Room data conversion and database migration

Added new Android instrumented tests to verify the correctness of Room database converters and migration logic. The \ConvertersTest\ ensures that \AnnotatedString\ objects are correctly persisted and restored, including legacy \SpannableString\ formats. The \MigrationTest\ validates that the database schema correctly migrates from version 1 to version 2. Additionally, \VendorDataTest\ was added to verify the serialization and deserialization of vendor data, ensuring that order, duplicate OUIs, and escaped characters are preserved correctly.

mobile/src · high confidence

Dependencies

Migrate build system to Kotlin DSL and modernize dependencies

The project's build configuration has been migrated from Groovy to Kotlin DSL (build.gradle.kts, settings.gradle.kts), introducing a modernized dependency management system via gradle/libs.versions.toml. This includes updating the Android Gradle Plugin to version 9.3.1, upgrading Kotlin to 2.4.10, and refreshing the dependency graph with newer versions of libraries such as AndroidX, Compose, and Firebase. The legacy build.gradle and settings.gradle files have been removed in favor of the new structure.

(dependencies) · high confidence

Updated Gradle wrapper to version 9.6.1

The Gradle wrapper has been upgraded from version 4.1 to 9.6.1. This update includes a new SHA256 distribution checksum and network timeout configuration, which may require a longer download time or different network conditions when building the project.

gradle/wrapper · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 31 → 63 (+31.9)
  • Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 92 → 83 (-9.3)
  • Architecture 94 → 99 (+5.0)
  • Maturity 51 → 65 (+13.9)
  • Readiness 28 → 73 (+45.8)
  • Security 42 → 87 (+45.5)
  • Domain Modelling 19 → 51 (+32.5)
  • Event Sourcing 100 (new)

Resolved (31)

  • Coverage not measured — test suite did not build
  • Dimension evaluation failed
  • Duplicated block (10 lines × 2) (mobile/src/main/java/be/mygod/vpnhotspot/ui/PreferenceComponents.kt)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • …and 11 more

New (153)

  • ApConfigurationScreenKt.ApConfigurationScreen (cognitive 71) (mobile/src/main/java/be/mygod/vpnhotspot/ui/apconfiguration/ApConfigurationScreen.kt)
  • ApConfigurationScreenKt.ApConfigurationScreen (cyclomatic 56) (mobile/src/main/java/be/mygod/vpnhotspot/ui/apconfiguration/ApConfigurationScreen.kt)
  • ApConfigurationSessionKt.applySystemApConfiguration (cognitive 34) (mobile/src/main/java/be/mygod/vpnhotspot/ui/apconfiguration/ApConfigurationSession.kt)
  • ApConfigurationState.generateConfigError (cognitive 31) (mobile/src/main/java/be/mygod/vpnhotspot/ui/apconfiguration/ApConfigurationState.kt)
  • ApConfigurationState.generateConfigError (cyclomatic 23) (mobile/src/main/java/be/mygod/vpnhotspot/ui/apconfiguration/ApConfigurationState.kt)
  • App.attachBaseContext (cognitive 24) (mobile/src/main/java/be/mygod/vpnhotspot/App.kt)
  • App.attachBaseContext (cyclomatic 17) (mobile/src/main/java/be/mygod/vpnhotspot/App.kt)
  • AssociationTask::run (cognitive 17) (mobile/src/main/rust/vpnhotspotd/src/nat66/udp.rs)
  • Change coupling: DaemonController.kt ↔ neighbour.rs (mobile/src/main/java/be/mygod/vpnhotspot/root/daemon/DaemonController.kt)
  • Change coupling: NetlinkNeighbourMonitoringService.kt ↔ NetlinkNeighbourMonitoringTileService.kt (mobile/src/main/java/be/mygod/vpnhotspot/NetlinkNeighbourMonitoringService.kt)
  • Change coupling: RepeaterService.kt ↔ WifiP2pManagerHelper.kt (mobile/src/main/java/be/mygod/vpnhotspot/RepeaterService.kt)
  • ClassTooLong: ApConfigurationState (mobile/src/main/java/be/mygod/vpnhotspot/ui/apconfiguration/ApConfigurationState.kt)
  • ClassTooLong: RepeaterService (mobile/src/main/java/be/mygod/vpnhotspot/RepeaterService.kt)
  • ClientViewModel.populateClients (cognitive 33) (mobile/src/main/java/be/mygod/vpnhotspot/client/ClientViewModel.kt)
  • ClientViewModel.populateClients (cyclomatic 21) (mobile/src/main/java/be/mygod/vpnhotspot/client/ClientViewModel.kt)
  • ClientsScreenKt.ClientRow (cyclomatic 20) (mobile/src/main/java/be/mygod/vpnhotspot/ui/ClientsScreen.kt)
  • ClientsScreenKt.ClientsScreen (cognitive 19) (mobile/src/main/java/be/mygod/vpnhotspot/ui/ClientsScreen.kt)
  • DaemonController.ensureDaemonLocked (cognitive 17) (mobile/src/main/java/be/mygod/vpnhotspot/root/daemon/DaemonController.kt)
  • DaemonController.startReaderLocked (cognitive 36) (mobile/src/main/java/be/mygod/vpnhotspot/root/daemon/DaemonController.kt)
  • DaemonController.startReaderLocked (cyclomatic 22) (mobile/src/main/java/be/mygod/vpnhotspot/root/daemon/DaemonController.kt)
  • …and 133 more

Architecture

  • Containers 0 added · 0 removed · contexts 1 added · 0 removed · edges 0 added · 0 removed

Added bounded contexts (1)

  • mobile

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

Mygod/VPNHotspot was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 25 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 6e3d4a4f9db4f72d0d4a422350b5234cddb52c48 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-dd72cc24c749.