Skip to content
CAI
Software that uses CAICheck a score

lizongying/my-tv-0

49.6

Weak · 25 September 2026

6k

lines of production code

Kotlin

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Features

Introduce remote configuration and crash reporting

The app now includes a local HTTP server (SimpleServer) that exposes API endpoints for remote configuration, including fetching and importing channel sources, managing proxy settings, and retrieving current settings. Additionally, a custom uncaught exception handler (MyTVExceptionHandler) has been added to capture crash logs and send them to a remote logging service, improving error tracking.

app/src/main/java/com/lizongying/mytv0 · high confidence

New UI components and visual assets for the app interface

This update introduces a comprehensive set of new Android resource files that define the visual appearance of the app's user interface. It includes new color selectors for switch controls (thumb and track), a custom progress bar drawable, and various rounded shape drawables for backgrounds. Additionally, new vector drawables are added for icons such as a checkmark, favorite (heart), sentiment, light mode, and volume controls. The update also adds XML layouts for key UI states and elements, including error and loading screens, a modal dialog, a program list, source items, a settings web view, and a time display overlay.

app/src/main/res · high confidence

Behavioural changes

Custom HTTP client with TLS 1.2 support and DNS caching

The app replaces the previous HTTP implementation with a custom \HttpClient\ that supports configurable HTTP and SOCKS proxies, caches DNS lookups to improve performance, and explicitly enables TLS 1.2 on older Android versions (pre-API 22) to ensure secure connectivity. As part of this refactor, the unused \TimeResponse\ data class has been removed.

app/src/main/java/com/lizongying/mytv0/requests · high confidence

Release v1.3.9.8 with optimized channel numbers

The application has been updated to version 1.3.9.8, which includes an optimization for channel numbers. This change is documented in the newly added HISTORY.md file, which serves as the official changelog for the software. The update also includes the addition of a LICENSE file (MIT), a Makefile for version generation, and a version.json file for release management. The README.md has been significantly expanded to include detailed usage instructions, supported configuration formats (txt, m3u, json), and troubleshooting tips.

(repo-wide) · high confidence

Replaced legacy channel list and program models with new EPG, source, and TV group models

The app's model layer was refactored to support richer channel management and EPG features. A new EPGXmlParser was added to parse XML-based electronic program guides, and the old Program model was removed. The TV list management was restructured: the old TVList and TVCategoryModel classes were removed and replaced with new TVGroupModel, TVListModel, and Sources classes. These changes introduce support for managing multiple video sources, tracking like status, and handling EPG data, while also adding methods to navigate between channels and groups.

app/src/main/java/com/lizongying/mytv0/models · medium confidence

Fixes

1 commit (1 fix) fixing app/libs

A fix in app/libs — 1 commit (1 fix), 1 file.

app/libs · low confidence · unverified

Dependencies

Gradle wrapper updated to version 8.12

The Gradle wrapper has been upgraded from version 8.2 to 8.12, which will cause the project to use the newer Gradle release for builds.

gradle · high confidence

Upgrade Android build configuration and dependencies

The project has been updated to use Gradle Version Catalogs (libs.versions.toml) for managing dependencies, replacing hardcoded version strings with centralized references. Key upgrades include the Android Gradle Plugin to 8.7.3, Kotlin to 2.0.0, and AndroidX libraries such as Media3 (1.5.1), Gson (2.11.0), and OkHttp (4.12.0). The build configuration also enables core library desugaring, increases the compile SDK to 35, and switches to dynamic versioning based on Git tags.

(dependencies) · medium 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 45 → 50 (+4.6)
  • Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 96 → 91 (-5.1)
  • Architecture 94 → 99 (+4.9)
  • Maturity 50 → 50 (+0.1)
  • Readiness 31 → 36 (+4.8)
  • Security 43 → 55 (+11.1)

Resolved (12)

  • Dimension evaluation failed
  • Duplicated block (15 lines × 2) (app/src/main/java/com/lizongying/mytv0/ListAdapter.kt)
  • Duplicated block (8 lines × 2) (app/src/main/java/com/lizongying/mytv0/MainViewModel.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)
  • Medium: security finding (details withheld)
  • No artifact signing
  • No exposed public API

New (45)

  • ClassTooLong: MainActivity (app/src/main/java/com/lizongying/mytv0/MainActivity.kt)
  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no licence statement (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (17 lines × 2) (app/src/main/java/com/lizongying/mytv0/MainActivity.kt)
  • Duplicated block (21 lines × 2) (app/src/main/java/com/lizongying/mytv0/InfoFragment.kt)
  • Duplicated block (30–33 lines × 4) (app/src/main/java/com/lizongying/mytv0/GroupAdapter.kt)
  • Duplicated block (5 lines × 2) (app/src/main/java/com/lizongying/mytv0/ListAdapter.kt)
  • Duplicated block (7 lines × 2) (app/src/main/java/com/lizongying/mytv0/MainViewModel.kt)
  • Duplicated block (7 lines × 2) (app/src/main/java/com/lizongying/mytv0/ModalFragment.kt)
  • Duplicated block (8 lines × 2) (app/src/main/java/com/lizongying/mytv0/ListAdapter.kt)
  • Duplicated block (8 lines × 2) (app/src/main/java/com/lizongying/mytv0/SimpleServer.kt)
  • FileTooLong: mytv0/MainActivity.kt (app/src/main/java/com/lizongying/mytv0/MainActivity.kt)
  • GestureListener.onFling (cognitive 18) (app/src/main/java/com/lizongying/mytv0/MainActivity.kt)
  • GroupAdapter.onBindViewHolder (cognitive 16) (app/src/main/java/com/lizongying/mytv0/GroupAdapter.kt)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • …and 25 more

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

Survey your own repository

lizongying/my-tv-0 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 19ab99c4c2f819fdfd08b09f64219bb7cd93eaa1 — 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.