Skip to content
CAI
Software that uses CAICheck a score

webtorrent/webtorrent-desktop

45.7

Weak · 2 October 2026

8.2k

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 desktop client for WebTorrent, built on Electron and React, designed to manage and play media from torrent files. It provides core capabilities for adding, pausing, and removing torrents, alongside a media player that supports local playback, external players, and casting to devices like Chromecast. The application handles platform-specific integrations for macOS, Windows, and Linux, including system tray management, file associations, and crash reporting.

Features

Add Linux desktop integration with sandbox workaround

The application now includes a system-wide desktop launcher and icons for Debian and its derivatives, enabling users to open torrent files and magnet links directly from their file manager or browser. The generated .desktop file includes the --no-sandbox flag in the execution commands to work around a known Electron 6 bug, and sets the StartupWMClass to ensure proper window grouping in desktop environments.

static/linux · high confidence

Initial release of the renderer library module

This change introduces the core renderer library (\src/renderer/lib\), establishing the foundational logic for the application's media playback and user state. It includes a new \cast.js\ module to handle Airplay, Chromecast, and DLNA device discovery and control, including subtitle streaming for Chromecast. A \media-extensions.js\ file defines the supported audio, video, and image file types, which are used by \torrent-player.js\ to determine playability. The \torrent-poster.js\ module implements logic to automatically select cover art for audio torrents (prioritizing files named 'cover', 'album', etc.) and generate video thumbnails. State management is handled by \state.js\ (using \application-config\ and debounced saves) and \migrations.js\, which ensures config files are upgraded from older versions (0.7.0 through 0.22.0) and handles default file handler re-installation. Additional utilities include \playlist.js\ for navigating torrent files, \sound.js\ for UI notification sounds, \telemetry.js\ for anonymous usage stats, and \dispatcher.js\ for memoized DOM event handling.

src/renderer/lib · high confidence

Introduce main-process modules for dialogs, dock, external players, and folder watching

The src/main directory now contains a set of new modules that centralize core desktop interactions. The dialog module standardizes file and folder selection for creating and adding torrents, while the dock module manages macOS-specific features like the dock menu and badge counts. External media playback is handled by a new external-player module that spawns VLC or custom players, and a folder-watcher module automatically adds .torrent files from a configured directory. Additional modules support Windows taskbar user tasks, system tray icons on Linux/Windows, and a new announcement system that displays remote messages via Electron dialogs.

src/main · high confidence

New build and maintenance scripts for WebTorrent Desktop

The repository now includes a suite of new scripts in the bin/ directory to streamline development and distribution. Developers can use bin/clean.js to remove build artifacts, configuration, and temporary files, and bin/open-config.js to quickly open the configuration folder. The bin/package.js script orchestrates the creation of platform-specific binaries (Mac, Windows, Linux) using electron-packager, handling transpilation, packaging, and output directory management. Additionally, bin/update-authors.sh automates the generation of the AUTHORS.md file from git history, and bin/darwin-entitlements.plist provides necessary security entitlements for macOS builds.

bin · high confidence

New controller architecture for media playback, torrent management, and preferences

The application introduces a set of dedicated controllers in src/renderer/controllers to manage core user interactions, replacing the previous monolithic or scattered logic. The PlaybackController now handles torrent and file playback, including the new 'highest playback priority' feature that pauses other active torrents to prioritize the current media. The MediaController manages local playback states and integrates with external players. New controllers for Audio Tracks and Subtitles allow users to switch audio streams and load external subtitle files (SRT/VTT) with automatic language detection. The TorrentController and TorrentListController handle the full lifecycle of torrents, including adding, pausing/resuming all, and global tracker configuration, while the PrefsController ensures immediate saving of user settings.

src/renderer/controllers · high confidence

Behavioural changes

Centralized configuration and crash reporting setup

The application now uses a dedicated configuration module (src/config.js) to manage static settings, including app metadata, UI dimensions, file paths, and URLs for updates and telemetry. This module also introduces system architecture detection (OS\_SYSARCH) and portable mode support, allowing the app to store settings in a local 'Portable Settings' folder on Windows when run as a portable app. Additionally, a new crash reporter module (src/crash-reporter.js) has been added to initialize Electron's crash reporting service with the configured product name and submission URL.

src · high confidence

Initial release of the Material UI-based renderer pages

The application's user interface has been rebuilt using Material UI, introducing a new dark theme with specific color palettes (grey and red accents) and system-specific fonts. This change replaces the previous UI implementation with new React components for the main application shell, torrent list, player, preferences, and torrent creation pages. Key user-facing updates include a redesigned torrent list with progress bars and metadata, a media player with support for multiple audio tracks, subtitles, and media session integration, and a preferences page that now supports global tracker configuration and automatic startup settings.

src/renderer/pages · high confidence

Migrate from Electron boilerplate to WebTorrent Desktop application

The application entry point has been refactored to load the actual WebTorrent Desktop code from the build directory (require('./build/main')) instead of the generic Electron boilerplate. This change removes the legacy index.html and index.css files, updates the copyright to WebTorrent, LLC, and establishes the project structure for the desktop client.

(repo-wide) · high confidence

New UI components for torrent management and error handling

Added several new React components to the renderer to enhance user interaction and error handling. The 'Delete All Torrents' and 'Remove Torrent' modals now allow users to confirm removal with an option to delete associated data files. The 'Open Torrent Address' modal automatically populates the input field with a magnet link from the clipboard if detected. Accessibility improvements were made to the header navigation controls, adding proper roles and labels. Additionally, new components handle specific scenarios: a 'Create Torrent Error' page for invalid file selections, an 'Unsupported Media' modal that offers to install VLC or open an external player, and an 'Update Available' modal directing users to the download page. The 'Path Selector' component now displays the full file path instead of just the name, and the 'Header' component ensures media controls remain visible on hover.

src/renderer/components · high confidence

Redesigned About window and new static assets for the React migration

The static assets have been updated to support the switch to React. The About window now displays the application version, the underlying WebTorrent library version, and the system architecture (32-bit vs. 64-bit). New static files include the main HTML entry point, a comprehensive CSS stylesheet featuring Material Icons and platform-specific fonts (Segoe UI on Windows), and a hidden WebTorrent window for background processes.

static · high confidence

Refactor window management into modular components

The application's main process window logic has been restructured from a monolithic file into separate, dedicated modules for the main, about, and webtorrent windows. This change introduces a new webtorrent window that remains hidden by default to keep the WebTorrent process alive, and updates the main and about windows to use the \@electron/remote\ module for inter-process communication. Additionally, the main window now debounces move and resize events to improve performance, and all windows are configured to disable background throttling and enable specific Blink features like AudioVideoTracks.

src/main/windows · high confidence

Renderer process restructured with React and performance optimizations

The renderer entry point (src/renderer/main.js) has been rewritten to use React instead of the previous virtual DOM library, introducing lazy loading for controllers and a require() hook to skip the slow inline-style-prefixer module. The webtorrent process (src/renderer/webtorrent.js) now generates a custom peer ID prefix (-WD-) and handles audio metadata parsing via the music-metadata library, while the main renderer initializes state asynchronously to improve startup speed.

src/renderer · high confidence

Test coverage

Initial integration test suite for WebTorrent Desktop

Added a new end-to-end integration test suite using Spectron and Tape to verify core application behaviors. The tests cover the torrent list interface (including start, stop, delete, and file selection), adding and creating torrents, and media playback for both video and audio streams. The suite includes platform-specific setup for temporary directories, mocks for Electron dialogs, and screenshot comparison logic to validate the UI state across Windows, macOS, and Linux.

test · high confidence

Dependencies

WebTorrent Desktop v0.24.0 dependency overhaul and Electron 27 upgrade

This release updates the application to version 0.24.0 and upgrades the core runtime to Electron 27.3.11, requiring Node.js 16+ and npm 7+. The dependency tree has been significantly modernized: the torrent client is updated to webtorrent 1.9.7, the UI framework to React 17.0.2 and Material-UI 0.20.2, and build tooling to Babel 7.29.7. Security and stability fixes are included in updates to chokidar (3.5.3), music-metadata (7.14.0), and @electron/remote (2.1.3). The project name has also been standardized to 'webtorrent-desktop'.

(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 45 → 46 (+0.9)
  • Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 37 → 37 (+0.0)
  • Architecture 85 → 87 (+2.4)
  • Maturity 46 → 46 (+0.0)
  • Readiness 59 → 57 (-2.3)
  • Security 59 → 67 (+8.3)
  • Accessibility 50 → 50 (+0.0)
  • Performance 100 (new)

Resolved (4)

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

New (22)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no project overview (README.md)
  • Documentation: no usage examples (README.md)
  • High CVE: [CVE redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • Outdated (npm): application-config
  • Outdated (npm): arch
  • Outdated (npm): auto-launch
  • Outdated (npm): bitfield
  • Outdated (npm): chokidar
  • Outdated (npm): create-torrent
  • Outdated (npm): debounce
  • Outdated (npm): iso-639-1
  • Outdated (npm): music-metadata
  • Outdated (npm): parse-torrent
  • Outdated (npm): react
  • Outdated (npm): react-dom
  • Outdated (npm): rimraf
  • Outdated (npm): semver
  • …and 2 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

webtorrent/webtorrent-desktop 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 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 6c91af345d4bd62603d7063ea02a50394d64af0d — 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.