Skip to content
CAI
Software that uses CAICheck a score

DIYgod/DPlayer

35.2

Weak · 1 October 2026

3.4k

lines of production code

JavaScript

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a modular video player library that supports playback via HLS, MPEG DASH, FLV, and WebTorrent. It provides a customizable interface with features such as AirPlay, Chromecast, danmaku (scrolling comments), and multi-subtitle support. The project includes a comprehensive demo page and documentation site to showcase these capabilities.

Features

Initial CSS styling for the DPlayer video interface

The project now includes a complete set of Less stylesheets that define the visual appearance and layout of the video player. This adds styling for the main player container, control bar (including progress bar, volume, and fullscreen controls), danmaku (scrolling comments) animations, bezel overlays, tooltips, menus, and responsive adjustments for mobile and fullscreen modes.

src/css · high confidence

Removals

Removal of legacy DPlayer entry files

The legacy entry point files \src/DPlayer.js\ and \src/DPlayer.scss\ have been removed from the source code. This cleanup eliminates unused or obsolete root-level module definitions, likely as part of the broader modularization and refactoring efforts that reorganized the player's internal structure into separate components.

src · high confidence

Behavioural changes

DPlayer distribution files updated with new build output

The distributed files in the dist folder have been regenerated. The standalone CSS file (DPlayer.min.css) has been removed, with styles now bundled directly into the JavaScript build. The main JavaScript bundle (DPlayer.min.js) has been updated to a new version, incorporating changes to the player's internal structure and UI rendering logic.

dist · high confidence

DPlayer v2 rewrite with modular architecture and new features

The player has been rewritten from the ground up using ES6 classes, separating concerns into distinct modules (api, bar, bezel, comment, contextmenu, controller, danmaku, events, fullscreen, hotkey, i18n, icons, info-panel, options, player, setting, subtitle, subtitles, timer, user, utils). This refactor introduces several new capabilities: native AirPlay support for iOS/Mac Safari, Chromecast integration, and WebTorrent playback. The user interface now includes a custom context menu with a video info panel, a dedicated comment/danmaku input system, and improved mobile controls (mobile play button, draggable progress bar). Subtitle handling has been enhanced with multi-subtitle support, adaptive box height, and i18n. The danmaku system now supports v3 API endpoints, speed control, and unlimited mode. Default behaviors have changed: AirPlay is enabled by default, Chromecast is disabled by default, and the preload attribute defaults to 'metadata'. The player also now supports custom playback speeds and a 'preventClickToggle' option.

src/js · high confidence

Demo page restructured with new styling and expanded feature examples

The demo page has been completely redesigned with a new CSS stylesheet (demo.css) and JavaScript logic (demo.js) to showcase a broader range of player capabilities. The layout now includes a dialog-based video player, dedicated sections for HLS, MPEG DASH, FLV, and WebTorrent support, and a live demo with WebSocket danmaku. The example player (dp2) demonstrates advanced options such as context menus, hotkeys, AirPlay, Chromecast, and quality switching, while also logging a comprehensive list of player events. Additionally, a performance monitoring panel using stats.js has been added to the interface.

demo · high confidence

Enforce linting on staged files before commit

A pre-commit hook has been added to the repository to automatically run lint-staged on staged files before each commit. This ensures that code quality checks are enforced consistently, preventing unlinted code from being committed.

.husky · high confidence

Project documentation and build infrastructure overhaul

The project has migrated its documentation system to VuePress, replacing the previous setup, and switched its build process from Gulp to Webpack, resulting in the removal of the \gulpfile.js\. The README has been significantly expanded to include detailed feature lists, sponsor acknowledgments, and a comprehensive list of related projects and integrations. Additionally, the repository now includes a \.prettierrc\ for code formatting, a \.prettierignore\ file, and an updated \.gitignore\ to exclude VuePress build artifacts and VS Code settings.

(repo-wide) · high confidence

Video player template migrated to art-template syntax

The video player UI templates (player.art and video.art) have been rewritten to use the art-template syntax, replacing the previous templating engine. This change updates how the player renders controls, including support for AirPlay, Chromecast, screenshot capture, danmaku settings, and subtitle selection, ensuring the interface correctly reflects the new template logic.

src/template · high confidence

Webpack build configuration refactored into separate dev and prod configs

The build system now uses distinct webpack configuration files for development (dev.config.js) and production (prod.config.js) environments. This change introduces UMD library output targeting, enabling the library to be consumed via module loaders or global scripts. It also adds support for Less stylesheets, SVG inlining, and art-template templates, while embedding the application version and Git commit hash into the build for debugging and tracking purposes.

webpack · high confidence

Dependencies

Upgrade build tooling to Webpack 5 and VuePress 1.9

The project's build system has been modernized by replacing the legacy Gulp-based workflow with Webpack 5 (v5.88.2) and upgrading VuePress to version 1.9.10 for documentation generation. This shift introduces a suite of updated development dependencies, including Babel 7.22, PostCSS 8.4, and Less 4.2, while also adding new runtime dependencies like Axios 1.4.0 and balloon-css. For users, this ensures a more stable and performant build process and documentation site, though it requires a Node.js environment compatible with these newer tool versions.

(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 32 → 35 (+3.6)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 56 → 56 (+0.0)
  • Architecture 97 → 97 (-0.3)
  • Maturity 33 → 33 (+0.0)
  • Readiness 20 → 21 (+1.2)
  • Security 35 → 57 (+21.7)

Resolved (2)

  • Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (no pnpm-resolved versions to grade)
  • High CVE: [GHSA redacted] (pnpm-lock.yaml)

New (2)

  • Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (the committed lockfile resolved no direct production dependency)
  • Documentation: no installation or build instructions (README.md)

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

Survey your own repository

DIYgod/DPlayer 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 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit bc43cc0ac2470f3b3552414a81e64b913b107bb3 — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.