Skip to content
CAI
Software that uses CAICheck a score

celzero/rethink-app

39.1

Weak · 2 August 2026

139.7k

lines of production code

Kotlin

primary language

3

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This is an Android application designed for network privacy and censorship circumvention, featuring a full-featured VPN client with support for WireGuard, DNS-over-HTTPS, and proxy hopping. The system provides comprehensive network monitoring, including connection logging, firewall rules, and detailed DNS statistics. It also includes a subscription management layer for in-app billing and sponsorships, alongside robust diagnostic tools for crash reporting and log export.

How it got here

2020 — Architecture modernization and test coverage

18 changes.

This period focused on modernizing the Android application's architecture by migrating to Kotlin, adopting Koin for dependency injection, and replacing legacy UI and networking components. The work also involved updating the build system to newer Gradle and Android plugin versions, removing obsolete libraries, and adding comprehensive unit and UI tests to improve code health and reliability.

2021–2023 — UI overhaul and feature expansion

18 changes.

This period focused on a comprehensive UI overhaul and the introduction of numerous new features, including advanced settings, app-specific logs, and enhanced network management tools. The app gained significant new capabilities such as background backup/restore workers, WireGuard hop routing, data usage tracking, and improved error reporting and update mechanisms.

2024–2026 — In-app billing and sponsorship integration

21 changes.

This period focused on implementing comprehensive in-app billing and sponsorship features across different app variants. The work introduced Google Play In-App Billing for subscriptions, one-time purchases, and sponsor contributions, while providing stubbed or placeholder implementations for F-Droid and website builds. Additionally, the app integrated Firebase Crashlytics for error reporting and added UI components like guided tours and database tests.

Features

Add Google Play subscription adapter for in-app billing

A new RecyclerView adapter, GooglePlaySubsAdapter, has been introduced to handle the display of subscription plans and pricing details from Google Play. This component manages the UI for in-app billing, supporting features such as shimmer loading states, selection tracking, and formatted price display (including discounts and free trials).

app/src/play/java/com/celzero/bravedns/adapter · high confidence

Added Firebase Crashlytics integration for automatic error reporting

The app now includes a new utility, FirebaseErrorReporting, which enables automatic crash reporting via Firebase Crashlytics. This feature is controlled by a user setting (firebaseErrorReportingEnabled) and manages user identification tokens to associate crash reports with specific users. The implementation handles initialization, enabling/disabling data collection, and logging custom messages or exceptions to Firebase.

app/src/website/java/com/celzero/bravedns/util · high confidence

Added Google Play subscription adapter for in-app purchases

A new GooglePlaySubsAdapter class was added to handle the display of subscription plans and in-app purchase products within the app. This adapter manages the RecyclerView for subscription lists, supporting both shimmer loading states and actual product details including pricing, discounts, and trial periods.

app/src/website/java/com/celzero/bravedns/adapter · high confidence

Added Play Store in-app billing message provider

Introduced PlayInAppMessageProvider for both Play and website build variants, delegating to InAppBillingHandler to enable Google Play's in-app messaging for billing recovery scenarios such as payment declines or cancellation notices.

app/src/play/java/com/celzero/bravedns/service, app/src/website/java/com/celzero/bravedns/service · high confidence

Added RPN proxy key management and availability checking

A new PipKeyManager class was introduced to handle the generation, storage, and retrieval of keys for the RPN proxy. This includes caching the public key response to prevent duplicate network calls and checking RPN availability status for the device.

app/src/main/java/com/celzero/bravedns/rpnproxy · high confidence

Added Rethink Plus subscription UI for Google Play

The Rethink Plus subscription interface is now available for users on Google Play devices. This new fragment integrates with Google Play's in-app billing to display subscription plans, handle purchase flows, and manage error states. The UI includes a product type toggle, a subscription plan list, and a processing bottom sheet to guide users through the purchase process.

app/src/play/java/com/celzero/bravedns/ui · high confidence

Added Rethink Plus subscription UI for Google Play In-App Billing

The app now includes a new RethinkPlusFragment that implements the user interface for managing subscriptions via Google Play's In-App Billing. This change introduces a dedicated screen for browsing and purchasing subscription plans, handling the full purchase lifecycle including state management, error handling, and integration with the InAppBillingHandler. The UI supports both standard and 'extend mode' for one-time purchases, featuring a grid layout for subscription plans, a processing bottom sheet, and specific styling for buttons and text elements.

app/src/website/java/com/celzero/bravedns/ui · high confidence

Adds Firebase Crashlytics integration for error reporting in Play Store builds

The Play Store variant of the app now includes a new FirebaseErrorReporting utility that integrates with Firebase Crashlytics to capture and report application errors. This component manages the lifecycle of error reporting, including initializing the Crashlytics instance, generating and persisting a user token for user identification, and providing methods to log messages, record exceptions, and set custom keys. The feature is gated by a new 'firebaseErrorReportingEnabled' setting in PersistentState, allowing the app to conditionally enable or disable error reporting based on user preferences or configuration.

app/src/play/java/com/celzero/bravedns/util · high confidence

Adds in-app billing and purchase conflict notifications for Play Store users

The app now includes a complete in-app billing implementation for Google Play, featuring a new \BillingModule\ for dependency injection, \BillingListener\ and \OnPurchaseListener\ interfaces, and a \Result\/\ResultState\ system to track billing states. The update introduces \ServerApiError\ to handle specific HTTP errors (401, 409, 5xx) and adds notification handlers (\DeviceAuthErrorNotifier\, \DeviceNotRegisteredNotifier\, \PurchaseConflictNotifier\) that alert users about authentication failures, device registration issues, and purchase conflicts when the app is in the background.

app/src/play/java/com/celzero/bravedns/iab · high confidence

Adds new sponsor support UI and data layer

The app now includes a new sponsor support flow, introducing a UI for selecting contribution amounts ($5, $10, $25, $50) via a slider and quick-select chips. The \SponsorFragment\ manages the payment options, offering Google Play billing when available and a fallback to a Stripe link for all users. A \SponsorBadgeView\ displays a community sponsor badge, while a success screen confirms completed contributions. The backend is supported by a new \SponsorDao\ for database operations and a \SponsorProvider\ interface for opening the sponsor page.

app/src/full/java/com/celzero/bravedns/sponsor, app/src/main/java/com/celzero/bravedns/sponsor · medium confidence

Adds new utility classes for accessibility, crash reporting, settings, and UI

The app introduces several new utility classes in the util package: BackgroundAccessibilityService to track foreground apps and manage firewall states; CrashReporter and GoReportingHandler to capture and report Go-level crashes and logs to Firebase and local files; NewSettingsManager to handle new feature badges and expiry logic; QrCodeFromFileScanner for scanning QR codes from images; RemoteFileTagUtil for managing remote blocklist files; and UIUtils and WindowExtensions for UI formatting, status mapping, and frost/blur effects. These changes add new capabilities for accessibility monitoring, crash reporting, settings management, and UI enhancements.

app/src/full/java/com/celzero/bravedns/util · high confidence

In-app billing and purchase handling for the website build

The website build now includes the full in-app billing implementation, previously limited to the Play Store variant. This adds the \BillingBackendClient\ for server-side account and device identity management, along with handlers for subscriptions and one-time purchases, allowing the website version to process purchases and manage entitlements via Google Play Billing.

app/src/website/java/com/celzero/bravedns/iab · high confidence

Initial project structure and build configuration

The repository is initialized with the core build configuration for the Rethink app, including an Android.bp file that defines the 'Rethink' Android application, its dependencies, and system-level permissions. The project also includes an Apache 2.0 license file, a funding.json for sponsorship information, and a .gitignore to manage build artifacts. Additionally, the Gradle wrapper scripts (gradlew and gradlew.bat) are updated to be executable and include Apache 2.0 headers.

(repo-wide) · high confidence

Introduce Rethink Plus subscription management

A new RethinkPlusViewModel has been added to handle the business logic and state management for the Rethink Plus subscription feature. This includes managing in-app billing interactions, tracking product details, and coordinating with the subscription state machine to provide a seamless purchase and management experience for users.

app/src/website/java/com/celzero/bravedns/viewmodel · high confidence

Introduce guided tour for the home screen

A new guided tour system has been added to the home screen, featuring a step-by-step overlay that highlights key UI elements like the VPN toggle, DNS, Firewall, Proxy, Logs, and Rethink+ features. The implementation includes a manager to track completion status and a controller to manage the overlay, tooltips, and animations. Users will now see an interactive walkthrough of the app's main features upon first launch or when the tour is reset.

app/src/full/java/com/celzero/bravedns/ui/tour · high confidence

New adapters for alerts, connection logs, and DNS endpoints

The app introduces several new RecyclerView adapters to support new and improved UI features. AlertAdapter displays system alerts with expandable details and action dialogs. ConnectionLogAdapter and ConnectionTrackerAdapter display active and historical connection logs with detailed status indicators. BlockFreeDnsAdapter, DnsCryptEndpointAdapter, DoTEndpointAdapter, and DohEndpointAdapter manage lists of DNS endpoints and configurations. Additionally, BubbleAllowedAppsAdapter and BubbleBlockedAppsAdapter handle lists of apps in the bubble interface, while ConsoleLogAdapter displays console logs with color-coded severity levels.

app/src/full/java/com/celzero/bravedns/adapter · high confidence

New background services and logging infrastructure for crash and network diagnostics

The app introduces several new service components to improve diagnostics and logging. A new quick-settings tile service (BraveTileService) manages the VPN toggle, handling app-lock states and activity launching. A DiagnosticsManager is added to monitor network connectivity and detect data stalls. Logging is enhanced with a new EventLogger for structured debugging events, a ConsoleLogManager for console logs, and specialized file descriptor readers (GoCrashFileDescriptorReader, GoLogFileDescriptorReader) that capture Go runtime crashes and logs. Additionally, a FirewallRuleset enum defines the various firewall rule types, and a DomainRulesManager handles custom domain rules and trusted domains.

app/src/main/java/com/celzero/bravedns/service · high confidence

New background workers for backup and restore operations

The app introduces dedicated background workers, BackupAgent and RestoreAgent, to handle backup and restore processes. This change moves the backup and restore logic into separate worker classes, allowing these operations to run in the background. The backup process now includes backing up shared preferences, databases, and WireGuard configurations, while the restore process handles restoring these components. Additionally, the restore process includes validation of metadata and cleanup of temporary files.

app/src/main/java/com/celzero/bravedns/backup · high confidence

New bottom sheets for app rules, connection tracking, and DNS logs

The app introduces several new bottom-sheet UI components to provide deeper visibility and control over network activity. Users can now view and manage app-specific IP and domain rules, inspect detailed connection logs with firewall status, and configure DNS blocklist settings. Additionally, new sheets handle device authentication errors and registration mismatches, guiding users to contact support with pre-filled account details. The connection tracker sheet also displays the application name and icon for each entry.

app/src/full/java/com/celzero/bravedns/ui/bottomsheet · high confidence

New broadcast receivers for VPN control, notifications, and user presence

Added three new broadcast receivers to handle system and app events: VpnControlReceiver allows external apps (e.g., Tasker) to start or stop the VPN; NotificationActionReceiver processes actions from the notification bar, such as pausing, resuming, or stopping the VPN, and handles firewall alerts; and UserPresentReceiver detects screen unlock/lock events to inform the VPN service. These changes enable new ways to interact with the VPN and manage firewall states through system broadcasts and notifications.

app/src/full/java/com/celzero/bravedns/receiver · high confidence

New data usage tracking and smart keep-alive pings

The app now tracks per-app and per-connection data usage, providing detailed upload and download byte counts for each application. Additionally, the scheduler introduces a smart keep-alive mechanism for WireGuard and RPN proxies, which manages periodic ping schedules to maintain persistent connections more efficiently.

app/src/main/java/com/celzero/bravedns/scheduler · high confidence

New dialogs for network configuration and proxy hopping

The app introduces several new UI components in the dialog package to support updated network settings and proxy management. A new CustomLanIpDialog allows users to configure custom LAN IP, gateway, router, and DNS settings in both automatic and manual modes. NetworkReachabilityDialog provides a toggle between automatic and manual network connectivity checks, allowing users to specify custom IP and URL probes for IPv4 and IPv6. For proxy management, GenericHopDialog serves as a base for WgHopDialog and RpnProxyHopDialog, enabling users to switch between WireGuard configurations and RPN proxy countries. Additionally, WgSsidDialog and RpnSsidDialog facilitate the management of SSIDs for WireGuard and RPN configurations, while WgAddPeerDialog and WgIncludeAppsDialog streamline peer and app inclusion for WireGuard. A new SubscriptionAnimDialog displays a celebratory animation for subscription events.

app/src/full/java/com/celzero/bravedns/ui/dialog · high confidence

New download and billing API interfaces

Added new interfaces for downloading blocklists, IP information, and WireGuard/Warp configurations, alongside a new interface for in-app billing server interactions. A custom Retrofit converter factory was also introduced to safely handle empty or non-JSON responses from these endpoints.

app/src/full/java/com/celzero/bravedns/customdownloader · high confidence

New screens for app-specific logs, settings, and security

The app introduces several new activities to improve the user experience and security. A new Advanced Settings screen allows users to configure debug options like memory limits and protocol translation modes. App-specific logs are now separated into distinct screens for IP and domain logs, providing clearer visibility into network activity. Additionally, an App Lock feature has been added, requiring biometric authentication before accessing the app, and an Alerts screen displays recent blocked connections. These changes restructure how users interact with logs and settings while adding a layer of app security.

app/src/full/java/com/celzero/bravedns/ui/activity · high confidence

New utility classes for app configuration, logging, and network handling

Added several new utility classes to the app's utility package: AndroidUidConfig for mapping Android system UIDs, Logger for centralized logging, IPUtil for IP address manipulation, InternetProtocol for network protocol handling, Protocol for network protocol types, ResourceRecordTypes for DNS record types, and BubbleHelper for managing Android bubble notifications. These additions support improved logging, network configuration, and UI features.

app/src/main/java/com/celzero/bravedns/util · high confidence

New viewmodels for app connections, alerts, and endpoint management

The app introduces a suite of new ViewModels to power updated UIs for app connections, alerts, and endpoint management. AppConnectionsViewModel now provides paginated, filterable lists of IP, domain, ASN, and active connections, while AlertsViewModel manages log lists for IPs, domains, and apps. New viewmodels for AllowedAppsBubble and BlockedAppsBubble consolidate app data from connection and DNS logs to display temporary allowances and recent blocks. Additionally, dedicated viewmodels are added for DNSCrypt, DoH, DoT, and ODoH endpoints, alongside new models for proxy app mapping, purchase history, and WireGuard configurations, all registered in the Koin module.

app/src/full/java/com/celzero/bravedns/viewmodel · high confidence

Stubbed in-app billing and server API classes for F-Droid builds

Added three new files in the F-Droid source set to provide stub implementations for the in-app billing and server API layers. PurchaseDetail, ServerApiError, and ServerOrderHistoryRepository are now present in the fdroid package, ensuring that shared code depending on these classes compiles correctly on F-Droid builds where actual billing functionality is not available. These stubs return empty or error states, effectively disabling in-app purchase features for the F-Droid variant while maintaining codebase consistency.

. · high confidence

WireGuard configuration parsing and hop routing logic

The app now includes a comprehensive set of classes for parsing and managing WireGuard configurations, including \Config\, \Peer\, and \WgInterface\ models, alongside utilities for IP address and endpoint handling. Additionally, a new \WgHopManager\ is introduced to manage routing between different WireGuard configurations, enabling users to set up and manage hop-based routing scenarios.

app/src/main/java/com/celzero/bravedns/wireguard · high confidence

Removals

Removal of bundled tun2socks artifacts

The project has removed the previously bundled tun2socks Android archive (tun2socks.aar) and its associated git-id tracking file. This cleanup eliminates the local copy of the outline-go-tun2socks library, which was previously included in the repository under the Apache 2.0 license.

tun2socks · high confidence

Removed legacy DNS packet parsing classes

The Java and Kotlin implementations of the DnsPacket class, which handled parsing of DNS query and response packets, have been removed from the app. This eliminates the previous, separate parsing logic for DNS packets in the net/dns package.

app/src/main/java/com/celzero/bravedns/net/dns · high confidence

Architecture

Database layer refactored to use Koin dependency injection

The database layer has been refactored to use Koin for dependency injection. This change introduces a new \DataModule\ and \DatabaseModule\ that wire up database instances, DAOs, and repositories using Koin's \module\ DSL. The \ConnectionTrackerRepository\ and \ConsoleLogRepository\ are now injected via Koin, and the \DatabaseModule\ explicitly registers all database-related singletons, including \AppDatabase\, \LogDatabase\, and \ConsoleLogDatabase\ instances, along with their respective DAOs and repositories.

app/src/main/java/com/celzero/bravedns/database · high confidence

Behavioural changes

3 commits (1 fix) modifying app/src/main/assets/database

A change to existing behaviour in app/src/main/assets/database — 3 commits (1 fix), 2 files.

app/src/main/assets/database · medium confidence · unverified

App update and error reporting improvements

The app now uses a dedicated NonStoreAppUpdater to check for and manage updates for non-Play Store versions, ensuring proper version code handling. Additionally, the application initializes a global exception handler and integrates Firebase for automatic error reporting and enhanced bug reporting on startup, improving crash diagnostics.

app/src/full/java/com/celzero/bravedns · high confidence

DNS transaction model expanded with new tracking fields and language migration

The \Transaction\ class was migrated from Java to Kotlin and significantly expanded to support new DNS logging features. The new Kotlin \Transaction\ class includes fields for DNSSEC status (\dnssecOk\, \dnssecValid\), caching (\isCached\), region, and upstream block status (\upstreamBlock\, \blockedTarget\). This replaces the previous Java implementation which only tracked basic query details like name, type, and status. Additionally, a new \CountryMap\ class was added to map IP addresses to country codes, and the \Prober\ class was reformatted for consistency.

app/src/main/java/com/celzero/bravedns/net/doh · high confidence

F-Droid build adds stubbed billing and sponsor modules

The F-Droid flavor now includes stub implementations for in-app billing and sponsor features to ensure the app compiles and runs without Google Play dependencies. New files include stubs for the Google Play Billing client (AccountIdentifiers, BillingClient, Purchase), a no-op BillingBackendClient and its Koin module, and no-op notifiers for device auth, device registration, and purchase conflicts. The InAppBillingHandler and SubscriptionCheckWorker are replaced with no-op or placeholder versions. Additionally, a DeGoogledSponsorProvider is added to handle sponsor links without Google services, and the RethinkPlusFragment displays a "Coming Soon" placeholder for the premium subscription screen.

app/src/fdroid · high confidence

Glide image loading module reconfigured with custom cache and error handling

The Glide module has been refactored to optimize memory and disk caching (30 MB and 350 MB respectively) and increase thread counts for disk and source executors. Additionally, the module now registers no-op model loaders for the \Unit\ type, which prevents \NoModelLoaderAvailableException\ crashes when Glide attempts to load images for invalid or empty models.

app/src/main/java/com/celzero/bravedns/glide · high confidence

Improved UID resolution for network connections

The app now uses a new ConnectionTracer component to resolve the UID of network connections more reliably. It caches resolved UIDs for 300 seconds to reduce redundant lookups, supports TCP, UDP, ICMP, and ICMPv6 protocols, and implements a retry strategy that falls back to unspecified IPs for unconnected UDP sockets. This should result in more accurate connection tracking and fewer failed lookups.

app/src/main/java/com/celzero/bravedns/net/manager · medium confidence

Improved identity storage with environment isolation

The in-app billing implementation now uses a secure, encrypted store that strictly separates production and test customer identities. This prevents test credentials from being used in production (and vice versa) and includes a migration path for legacy identity data, ensuring that each environment's identity is stored in its own encrypted file.

app/src/main/java/com/celzero/bravedns/iab · medium confidence

Major UI overhaul and reorganization of settings and configuration screens

The app's settings and configuration screens have been restructured into new Fragment-based components, including a revamped ConfigureFragment that serves as a central hub for accessing app, DNS, firewall, proxy, and other settings. The About screen has been significantly expanded to display detailed system metrics, including memory profiling, battery stats, and database statistics. Additionally, the UI for managing custom IP and domain rules has been updated with improved search functionality, import capabilities, and better handling of empty states and loading indicators across the list fragments.

app/src/full/java/com/celzero/bravedns/ui/fragment · high confidence

Play Store builds use Google Play Update API and Play-specific providers

The Play Store variant of the app now uses the Google Play Core library to check for and install app updates, replacing the previous update mechanism. Additionally, the Play build registers a Play-specific in-app message provider and initializes Firebase error reporting and global exception handling, ensuring that crash reports and in-app messages are handled according to Play Store policies.

app/src/play/java/com/celzero/bravedns · high confidence

Refactored Go VPN adapter to use the new Firestack backend

The Go-based VPN adapter has been refactored to use the new Firestack backend, replacing the previous Intra-based implementation. This change updates the underlying network engine and proxy handling logic, which may affect how VPN connections are established and maintained.

app/src/main/java/com/celzero/bravedns/net/go · high confidence

Removed legacy UI and automation components

Removed the legacy \ApplicationManagerActivity\, \FirewallActivity\, \AppInfoActivity\, and \HomeScreenActivity\ from the \ui\ package, along with the \automaton\ package containing \AppPermissionGroup\, \AppPermissions\, \Permission\, and \PermissionsManager\. Also removed \PrivateDnsManager\ and various bottom sheet fragments (\BottomSheetFragment\, \FilterAndSortBottomFragment\). These deletions indicate a significant UI and architecture overhaul, likely in preparation for a new interface or framework, as the removed files contained the old app management, firewall, and accessibility-based automation logic.

app/src/main/java/com/celzero/bravedns/ui · high confidence

Removed legacy adapter classes and the FastAdapter library

The \Apk\, \ApkListAdapter\, \ApplicationManagerApk\, \FirewallApk\, and \PermissionManagerApk\ files in the \app/src/main/java/com/celzero/bravedns/adapter\ directory have been deleted. This change removes the previous implementation of list adapters that relied on the \FastAdapter\ library, likely as part of a broader migration to ViewBinding and standard RecyclerView adapters.

app/src/main/java/com/celzero/bravedns/adapter · high confidence

Removed stale build artifacts from the tun2socks build directory

The \tun2socks/build/.transforms\ directory, which contained cached intermediate build artifacts (including \.bin\ files, \AndroidManifest.xml\, \R.txt\, and native library references), has been deleted. This cleanup removes generated files that were previously ignored by git, ensuring the build directory no longer contains these transient transform outputs.

tun2socks/build · high confidence

Revamped bug report collection and log export

The app's bug report and log export mechanisms have been completely rewritten. A new BugReportCollector and BugReportZipper handle the creation of bug report archives, including improved handling of Go crash logs, console logs, and app exit information. The EnhancedBugReport object now manages tombstone and Go runtime logs, with better file management and Firebase reporting. Additionally, a new LogExportWorker allows for chunked, memory-efficient export of console logs to zip files, preventing out-of-memory issues when handling large log tables.

app/src/full/java/com/celzero/bravedns/scheduler · high confidence

Sponsorship now uses Google Play Billing

The app has replaced the previous sponsorship mechanism with a new Google Play Billing implementation. A new SponsorModule registers the GooglePlaySponsorProvider and initializes the SponsorBillingManager at startup, ensuring the billing client connects early so that existing sponsor purchases are queried promptly. The SponsorBillingManagerImpl now handles product queries and billing flows using the Google Play Billing API, allowing users to select from multiple contribution tiers via one-time purchase offers. This change is specific to the Play Store variant of the app.

app/src/play/java/com/celzero/bravedns/sponsor · high confidence

Sponsorship now uses Google Play billing

The app has replaced the previous Stripe-based sponsorship flow with Google Play In-App Purchases. A new billing implementation initializes the Google Play Billing Client at startup, allowing the app to query product details and launch a billing flow for one-time contributions. The system maps specific contribution amounts (e.g., $5, $10, $25) to corresponding purchase options, enabling users to select their preferred tier directly within the app.

app/src/website/java/com/celzero/bravedns/sponsor · high confidence

UI overhaul and base activity refactoring

The app's UI layer has been significantly restructured. A new \BaseActivity\ centralizes status-bar appearance handling and alpha-build theme overlays, which all activities now inherit. The \HomeScreenActivity\ has been completely rewritten to use the new base, integrate navigation components, and handle background/foreground states. A new \LauncherSwitcher\ utility manages dynamic launcher alias switching, and \NotificationHandlerActivity\ has been refactored into a trampoline-style activity to handle various notification intents. These changes improve visual consistency, navigation handling, and code maintainability across the application's screens.

app/src/full/java/com/celzero/bravedns/ui · high confidence

Updated ProGuard/R8 rules for build optimization and library compatibility

The app's build configuration has been updated to disable optimization and obfuscation for specific classes to ensure compatibility with R8 full mode. New ProGuard rules preserve generic signatures for Retrofit, Kotlin coroutines, and Gson (including com.google.gson.reflect.TypeToken) to prevent reflection-based JSON parsing from breaking. Additionally, rules were added to retain OkHttp's public suffix database and Guava's LocalCache classes, addressing issues \#875 and \#1495. A new file, DownloadConstants.kt, was added to define constants for file downloads, and a lint configuration was introduced to suppress string format warnings in translation files.

app · medium confidence

Updated remote blocklist data

The remote blocklist data file (filetag.json) in the app's assets has been updated to the latest version, ensuring the app uses the most recent remote blocklist configurations for content filtering and security.

app/src/main/assets · high confidence

WireGuard configs stored as plain text and in-app billing messages surfaced

WireGuard configuration files are now saved as plain-text files rather than encrypted ones, allowing the Go backend and backup/restore flows to read and write them directly. Additionally, the app now supports displaying Google Play Billing in-app messages (such as payment-declined recovery or subscription-canceled alerts) through a new \InAppMessageProvider\ interface, which is implemented for the Play flavor to show these messages in the activity's \onResume()\.

app/src/full/java/com/celzero/bravedns/service · high confidence

Test coverage

Added UI and unit tests for app screens and dialogs; Added UI tests for Anti-Censorship activity; Added database access object tests for app components; Added unit tests for core app components.

Dependencies

Gradle wrapper updated to version 8.13

The Gradle wrapper has been upgraded from version 6.1.1 to 8.13, which will require users to use the newer Gradle build system for compiling the project.

gradle · high confidence

Modernizes Android build system and removes legacy dependencies

The project has been modernized to use the Gradle Plugin DSL, upgraded to Android Gradle Plugin 8.13.1 and Kotlin 2.1.20, and migrated from JCenter to Maven Central. The build configuration now supports Android 14 (targetSdk 35/36) and Android 15+ (compileSdk 36). Legacy modules like 'tun2socks' have been removed from the build, and the root project name was changed to 'rethink'.

(dependencies) · 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

Score

  • CAI 39 → 39 (+0.5)

Lenses

  • Code Health 76 → 76 (+0.0)
  • Architecture 98 → 99 (+0.8)
  • Maturity 48 → 52 (+3.7)
  • Readiness 59 → 59 (+0.0)
  • Security 27 → 27 (+0.0)
  • Domain Modelling 35 → 35 (+0.0)

Resolved (208)

  • Boundary-crossing change coupling: ConsoleLogActivity.kt ↔ ConsoleLogDAO.kt (app/src/full/java/com/celzero/bravedns/ui/activity/ConsoleLogActivity.kt)
  • Boundary-crossing change coupling: ProxyManager.kt ↔ ProxyApplicationMappingDAO.kt (app/src/full/java/com/celzero/bravedns/service/ProxyManager.kt)
  • Boundary-crossing change coupling: WireguardManager.kt ↔ WgConfigFilesDAO.kt (app/src/full/java/com/celzero/bravedns/service/WireguardManager.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/adapter/DoTEndpointAdapter.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/adapter/GenericHopAdapter.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/adapter/GenericHopAdapter.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/adapter/LocalAdvancedViewAdapter.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/adapter/OneWgConfigAdapter.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/service/WireguardManager.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/ui/HomeScreenActivity.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/ui/activity/DetailedStatisticsActivity.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/ui/activity/ProxySettingsActivity.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/ui/activity/TunnelSettingsActivity.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/ui/bottomsheet/LocalBlocklistsBottomSheet.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/ui/bottomsheet/LocalBlocklistsBottomSheet.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/ui/dialog/RpnSsidDialog.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/ui/fragment/AboutFragment.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/ui/fragment/ServerSelectionFragment.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/util/UIUtils.kt)
  • Duplicated block (10 lines × 2) (app/src/main/java/com/celzero/bravedns/rpnproxy/RpnHopManager.kt)
  • …and 188 more

New (223)

  • BraveVPNService.calculatePtMode (cognitive 20) (app/src/main/java/com/celzero/bravedns/service/BraveVPNService.kt)
  • BraveVPNService.calculatePtMode (cyclomatic 18) (app/src/main/java/com/celzero/bravedns/service/BraveVPNService.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/adapter/ConnectionLogAdapter.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/adapter/CustomIpAdapter.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/adapter/DnsCryptEndpointAdapter.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/adapter/GenericHopAdapter.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/adapter/LocalAdvancedViewAdapter.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/adapter/OneWgConfigAdapter.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/adapter/OneWgConfigAdapter.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/receiver/VPNControlReceiver.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/service/WireguardManager.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/ui/activity/AppWiseDomainLogsActivity.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/ui/activity/BubbleActivity.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/ui/activity/ConsoleLogActivity.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/ui/activity/TunnelSettingsActivity.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/ui/bottomsheet/ConnTrackerBottomSheet.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/ui/bottomsheet/ConnTrackerBottomSheet.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/ui/bottomsheet/DeviceAuthErrorBottomSheet.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/ui/bottomsheet/ProxyCountriesBtmSheet.kt)
  • Duplicated block (10 lines × 2) (app/src/full/java/com/celzero/bravedns/ui/fragment/ConnectionTrackerFragment.kt)
  • …and 203 more

Changes since last survey

  • 73 commits — 60 feature/other, 13 fixes

By area

  • app/src — 58 commits
  • (repo) — 7 commits
  • (root) — 4 commits
  • .github/workflows — 3 commits
  • app/build.gradle — 1 commit

Notable commits

  • fix: ip-rule: fix bulk import, pass2
  • fix: review: fix possible cause of TOCTOU in RpnMgr
  • fix: review: fix the rpn related deviceId fetch
  • fix: review: fix the tests for GoVpnAdapter
  • fix: review: log fix in TunDnsManager
  • fix: rpn: fix rename const values in play build
  • fix: sponsor: fix multiple products handling for sponsor
  • fix: ui: entitlement minor ui fixes, post review
  • fix: ui: fix correct default value in xml
  • fix: ui: fix frost override on home screen card color
  • fix: ui: fix ip not showing properly in rpn server list
  • fix: ui: fix wg, rpn detail screen titles
  • fix: vpn: bind/protect changes, fix tidcsv in DNSOpts
  • change: Merge branch 'celzero:main' into dev-v055y
  • change: Merge branch 'celzero:main' into dev-v055y
  • change: Merge branch 'main' into dev-v055y
  • change: Merge branch 'main' into dev-v055y
  • change: Merge pull request #2924 from hussainmohd-a/dev-v055y
  • change: Merge pull request #2935 from hussainmohd-a/dev-v055y
  • change: Merge pull request #2938 from hussainmohd-a/dev-v055y
  • …and 53 more

Architecture

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

Added bounded contexts (1)

  • .

Removed bounded contexts (1)

  • .

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

Survey your own repository

celzero/rethink-app 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 2 August 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 607e3fa1354de862c92a4fd630d1b223debb79ac — the exact code this score is about.
  • Scored under rubric-2026.08.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer latest.