DIYgod/DPlayer
35.2
Weak · 1 October 2026
3.4k
lines of production code
JavaScript
primary language
2
measurements over time
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.