Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 10 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ A browser extension for managing BitTorrent clients. Built with WXT, React, and
[![Chrome](https://img.shields.io/badge/Chrome-Coming_Soon-lightgrey?logo=googlechrome)](https://github.com/StarlightDaemon/CTRL/releases)
[![Firefox](https://img.shields.io/badge/Firefox-Coming_Soon-lightgrey?logo=firefox)](https://github.com/StarlightDaemon/CTRL/releases)
[![CI](https://github.com/StarlightDaemon/CTRL/actions/workflows/ci.yml/badge.svg)](https://github.com/StarlightDaemon/CTRL/actions/workflows/ci.yml)
[![Tests](https://img.shields.io/badge/Tests-357%20passing-brightgreen)](extension/tests)
[![Tests](https://img.shields.io/badge/Tests-See%20CI-blue)](https://github.com/StarlightDaemon/CTRL/actions/workflows/ci.yml)
[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)

---
Expand Down Expand Up @@ -36,14 +36,18 @@ A browser extension for managing BitTorrent clients. Built with WXT, React, and
| Aria2 | ✅ Basic | RPC Multicall |
| Synology | ✅ Full | 2FA, Device Token, NAS Integration |

This table is the public support matrix for implemented adapter types. Internal audit or stabilization priorities may temporarily focus on a subset of adapters without implying that the others were removed from the product.

---

## 🚧 Project Status

**Current Status**: Beta / Active Development
**Target**: v1.0 Store Release (Coming 2026)
**Current Status**: Beta / Active Stabilization
**Target**: v1.0 Store Release

This project is currently in **Beta**. Use [docs/BETA_TESTING.md](docs/BETA_TESTING.md) as the public source of truth for current beta status, tester guidance, and validation-scope notes.

This project is currently in **Beta**. We recommend most users wait for the official release on the Chrome Web Store and Firefox Add-ons site.
`ROADMAP.md` is strategic direction, not the live status page.

---

Expand All @@ -62,9 +66,9 @@ This project is currently in **Beta**. We recommend most users wait for the offi

| Document | Description |
|----------|-------------|
| [Beta Guide](docs/BETA_TESTING.md) | **Start Here** - Installation & Testing |
| [Beta Guide](docs/BETA_TESTING.md) | **Start Here** - Public beta status, installation, and testing guidance |
| [E2E Troubleshooting](docs/E2E_TROUBLESHOOTING.md) | Diagnose Playwright/Environment issues |
| [ROADMAP.md](ROADMAP.md) | Future features & strategy |
| [ROADMAP.md](ROADMAP.md) | Strategic direction, not live status |
| [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md) | Setup build environment |
| [CONTRIBUTING.md](CONTRIBUTING.md) | Contribution guidelines |

Expand Down
8 changes: 5 additions & 3 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

> **Strategic direction for the CTRL browser extension**

Status note: This roadmap is strategic direction, not the public live-status page. Use [docs/BETA_TESTING.md](docs/BETA_TESTING.md) for the current beta-status and tester-facing state.

---

## Vision
Expand All @@ -17,7 +19,7 @@ Transform CTRL from a working port into a **Best-in-Class** torrent management s

### ✅ Current Baseline
- **Phase 1: Beta Release** shipped in January 2026
- **357 unit tests** currently pass in the maintained local/CI baseline
- **Maintained validation baseline** is documented in `docs/CI_BASELINE.md`
- **Deterministic CI** is restored with tracked lockfile, `npm ci`, and npm caching
- **Mainline rewrite and normalization** are complete
- **Privacy Policy** and beta distribution remain in place
Expand Down Expand Up @@ -64,7 +66,7 @@ Transform CTRL from a working port into a **Best-in-Class** torrent management s

| Feature | Priority | Notes |
|---------|----------|-------|
| VPN Integration Check | Medium | ⏳ Deferred to v0.4.x+ |
| VPN Integration Check | Medium | ⏳ Deferred to v0.4.x+; prototype archived |
| Cloud Sync | Low | Encrypted settings sync |
| Torrent Detail View | Low | Files, Peers, Trackers tabs |
| RSS Auto-Downloader | Low | Regex filtering |
Expand Down Expand Up @@ -99,4 +101,4 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for how to get involved.

---

*Last Updated: March 2026*
*Last Updated: April 2026*
61 changes: 32 additions & 29 deletions docs/BETA_TESTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
**Release Date**: January 2026
**Status**: Public Beta Testing

Authority note: This document is the public source of truth for current beta status, tester guidance, and validation-scope notes. `README.md` is the overview page, and `ROADMAP.md` is strategic direction rather than live status.

---

## What is CTRL?
Expand All @@ -18,7 +20,7 @@ CTRL (Torrent Control) is a browser extension that provides a **unified interfac

### ✅ Fully Functional Features

#### Torrent Client Support (9 Clients)
#### Torrent Client Support (10 Clients)
- ✅ **qBittorrent** - Full support with categories, tags, and sequential download
- ✅ **Transmission** - Session management and directory support
- ✅ **Deluge** - Multi-step authentication and label support
Expand All @@ -28,9 +30,13 @@ CTRL (Torrent Control) is a browser extension that provides a **unified interfac
- ✅ **BiglyBT** - Basic operations
- ✅ **Vuze** - Basic operations
- ✅ **Aria2** - JSON-RPC multicall support
- ✅ **Synology** - NAS integration with device-token and 2FA support

This list mirrors the public adapter matrix in `README.md`. Internal audit or stabilization priorities may focus on a subset of adapters without changing the product-level support matrix shown here.

#### Site Integrations
- ⛔ **Discontinued** - Use Context Menu (Right-Click) integration instead.
- ⛔ **Removed from CTRL** - Site-specific integrations were moved to a separate extension to keep CTRL focused and avoid a "kitchen sink" product scope.
- ✅ **Supported alternative in CTRL** - Use Context Menu (Right-Click) integration instead.


#### Core Features
Expand All @@ -49,11 +55,11 @@ CTRL (Torrent Control) is a browser extension that provides a **unified interfac
## ⚠️ Known Limitations

### Technical Debt
- **YTS.mx**: Planned integration via API/Context Menu.
- **No site-specific integrations in CTRL**: Site-integration work now belongs to the separate extension, not this repository's product scope.


### Not Implemented Yet
- **E2E Testing**: Playwright test infrastructure designed but not yet implemented
- **E2E Testing**: Playwright-based end-to-end tests exist under `./tests/e2e`. CI runs non-`@integration` tests only (`npm run test:e2e -- --grep-invert "@integration"`). Full E2E coverage is not yet claimed.
- **Performance Optimization**: Diffing engine for large torrent lists (>5,000 torrents) not yet implemented
- **Advanced i18n**: Build-time transformation pipeline planned

Expand All @@ -70,7 +76,7 @@ CTRL (Torrent Control) is a browser extension that provides a **unified interfac
### Method 1: From GitHub Releases (Recommended)

1. **Download the Extension**
- Visit [Releases](https://github.com/YOUR_USERNAME/CTRL/releases)
- Visit [Releases](https://github.com/StarlightDaemon/CTRL/releases)
- Download `ctrl-chrome-v0.2.0-beta.1.zip` (for Chrome/Edge)
- OR download `ctrl-firefox-v0.2.0-beta.1.zip` (for Firefox)
- Extract the ZIP file
Expand All @@ -94,7 +100,7 @@ CTRL (Torrent Control) is a browser extension that provides a **unified interfac

```bash
# Clone repository
git clone https://github.com/YOUR_USERNAME/CTRL.git
git clone https://github.com/StarlightDaemon/CTRL.git
cd CTRL/extension

# Install dependencies
Expand Down Expand Up @@ -181,10 +187,10 @@ npm run build:firefox
- Report any authentication issues
- Verify torrent operations work (add, pause, resume, remove)

2. **Site Integration Stability**
- Test on different torrent sites
- Report if buttons don't appear
- Check for layout conflicts or broken pages
2. **Context Menu Reliability**
- Test adding magnet links through the right-click context menu
- Report missing menu entries or wrong client targeting
- Check behavior across different sites and link types

3. **Cross-Browser Testing**
- Test on Chrome, Edge, and Firefox
Expand All @@ -197,7 +203,7 @@ npm run build:firefox

### How to Report Bugs

**GitHub Issues**: https://github.com/YOUR_USERNAME/CTRL/issues
**GitHub Issues**: https://github.com/StarlightDaemon/CTRL/issues

**Please include**:
1. **Browser**: Chrome/Edge/Firefox + version
Expand All @@ -217,23 +223,22 @@ npm run build:firefox

- [ ] **10+ active beta testers** providing feedback
- [ ] **<5 critical bugs** discovered
- [ ] **All 9 clients** verified working
- [ ] **All 10 clients** verified working
- [ ] **Positive user feedback** on core functionality
- [ ] **No data loss** or credential security issues

### Roadmap to v1.0

**Next Release: v0.3.0** (Estimated: Week 4-7)
- ✅ Migrate 1337x to Shadow DOM
- ✅ Integrate YTS.mx (#1 movie site)
- ✅ Implement E2E testing with Playwright
- ✅ Performance benchmarking
**Next Release: v0.3.x** (Timing TBD)
- ✅ Continue post-beta stabilization and adapter hardening
- ✅ Maintain Playwright E2E infrastructure (CI runs non-@integration subset)
- ✅ Continue performance benchmarking and tuning

**Production Release: v1.0** (Estimated: Week 13-16)
**Production Release: v1.0** (Timing TBD)
- ✅ Chrome Web Store submission
- ✅ Firefox AMO submission
- ✅ Code signing for installers
- Full E2E test coverage
- Full E2E test coverage (not yet achieved)
- ✅ Accessibility score >90

---
Expand All @@ -248,7 +253,7 @@ npm run build:firefox
- ✅ Credentials encrypted with AES-GCM locally
- ✅ Open source - code is auditable

**Privacy Policy**: [View Full Policy](https://YOUR_USERNAME.github.io/CTRL/privacy)
**Privacy Policy**: [View Full Policy](PRIVACY_POLICY.md)

---

Expand All @@ -257,24 +262,22 @@ npm run build:firefox
### New Features
- 🎉 First public beta release
- ✅ Multi-server management
- ✅ 9 torrent client adapters
- ✅ 10 torrent client adapters
- ✅ Encrypted credential vault
- ✅ 7 language translations
- ⛔ **Site Integrations**: Removed for stability and store compliance.

### Testing
- ✅ 153 unit tests passing
- ✅ All adapter tests passing
- ⚠️ E2E tests pending
- ✅ Unit and adapter test suites are part of the maintained validation baseline
- ✅ Playwright E2E tests configured (CI runs non-@integration subset)


---

## 💬 Community & Support

**Questions?** Open a [Discussion](https://github.com/YOUR_USERNAME/CTRL/discussions)
**Bugs?** Create an [Issue](https://github.com/YOUR_USERNAME/CTRL/issues)
**Email**: [your-email@domain.com]
**Questions?** Open a [Discussion](https://github.com/StarlightDaemon/CTRL/discussions)
**Bugs?** Create an [Issue](https://github.com/StarlightDaemon/CTRL/issues)

---

Expand All @@ -283,7 +286,7 @@ npm run build:firefox
- [Main README](../README.md) - Project overview
- [ROADMAP](../ROADMAP.md) - Strategic direction
- [CONTRIBUTING](../CONTRIBUTING.md) - How to contribute
- [Privacy Policy](https://YOUR_USERNAME.github.io/CTRL/privacy) - Full privacy details
- [Privacy Policy](PRIVACY_POLICY.md) - Full privacy details

---

Expand All @@ -305,4 +308,4 @@ Your feedback is invaluable in making CTRL a production-ready extension. Thank y

*CTRL v0.2.0-beta.1*
*Released: January 2026*
*Next Release: v0.3.0 (Week 4-7)*
*Next Release: v0.3.x (Timing TBD)*
8 changes: 4 additions & 4 deletions docs/PRIVACY_POLICY.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Privacy Policy

**Last Updated**: January 2026
**Last Updated**: April 2026
**Effective Date**: January 2026

---
Expand Down Expand Up @@ -134,7 +134,7 @@ We may update this privacy policy from time to time. Changes will be posted on t

CTRL is open-source software. You can inspect the source code to verify our privacy claims:

**GitHub Repository**: https://github.com/YOUR_USERNAME/CTRL
**GitHub Repository**: https://github.com/StarlightDaemon/CTRL

The code shows:
- No analytics libraries
Expand All @@ -152,8 +152,8 @@ BitTorrent is a legitimate protocol used for distributing open-source software,

If you have questions about this privacy policy or CTRL's data practices:

- **Email**: [your-email@domain.com]
- **GitHub Issues**: https://github.com/YOUR_USERNAME/CTRL/issues
- **GitHub Discussions**: https://github.com/StarlightDaemon/CTRL/discussions
- **GitHub Issues**: https://github.com/StarlightDaemon/CTRL/issues

---

Expand Down
43 changes: 27 additions & 16 deletions docs/privacy.html
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@
<div class="container">
<h1>Privacy Policy</h1>
<div class="meta">
<strong>Last Updated:</strong> January 2026<br>
<strong>Last Updated:</strong> April 2026<br>
<strong>Effective Date:</strong> January 2026
</div>

Expand Down Expand Up @@ -180,22 +180,29 @@ <h2>What Data is NOT Collected</h2>

<h2>How CTRL Works</h2>

<h3>Site Integration (Content Scripts)</h3>
<p>CTRL injects user interface components into torrent indexing websites (e.g., TorrentGalaxy, 1337x, Nyaa) to provide one-click "Add to Client" functionality.</p>
<h3>User-Initiated Actions</h3>
<p>CTRL operates only when you explicitly interact with it. It does not automatically modify web pages or background-monitor your browsing activity.</p>

<p><strong>How you interact with CTRL:</strong></p>
<ol>
<li><strong>Context Menus:</strong> You can right-click on a magnet link or a page to send torrents directly to your client.</li>
<li><strong>Scan Page:</strong> You can manually trigger a "Scan Page for Magnets" action from the context menu. This generically scans the current page for magnet links (<code>magnet:?xt=...</code>) and adds them to your selected client.</li>
<li><strong>Manual Addition:</strong> You can add torrents by pasting URLs or magnet links directly into the extension popup.</li>
</ol>

<p><strong>What happens:</strong></p>
<ol>
<li>CTRL detects magnet links on supported pages</li>
<li>Adds UI buttons next to those links</li>
<li>When you click a button, the magnet link is processed <strong>locally</strong></li>
<li>The link is sent directly to <strong>your configured torrent client</strong> (on your local network or remote server)</li>
<li>When you initiate an action, CTRL processes the request <strong>locally</strong>.</li>
<li>If scanning a page, it identifies links matching the magnet protocol.</li>
<li>The link is sent directly to <strong>your configured torrent client</strong> (on your local network or remote server).</li>
</ol>

<p><strong>What does NOT happen:</strong></p>
<ul>
<li>CTRL does not read page content beyond detecting magnet links</li>
<li>CTRL does not track which torrents you view or download</li>
<li>CTRL does not send any data about your browsing to external servers</li>
<li>CTRL does not automatically inject UI components or buttons into websites.</li>
<li>CTRL does not detect magnet links on page load; it only scans when you tell it to.</li>
<li>CTRL does not track which torrents you view or download.</li>
<li>CTRL does not send any data about your browsing to external servers.</li>
</ul>

<h3>Protocol Handling</h3>
Expand Down Expand Up @@ -234,9 +241,13 @@ <h3><code>notifications</code></h3>
<p><strong>Purpose:</strong> To notify you when downloads complete or errors occur.</p>
<p><strong>Data Access:</strong> None. Notifications are created locally.</p>

<h3><code>host_permissions</code> (specific domains)</h3>
<p><strong>Purpose:</strong> To inject UI components on supported torrent indexing sites.</p>
<p><strong>Data Access:</strong> Only the ability to detect magnet links (href attributes) on these specific sites. No page content is read or transmitted.</p>
<h3><code>activeTab</code></h3>
<p><strong>Purpose:</strong> To generically scan the current page for magnet links when you manually select the "Scan Page" option from the context menu.</p>
<p><strong>Data Access:</strong> Only the ability to identify magnet link URLs (<code>href</code> attributes) on the page you are currently viewing and have interacted with.</p>

<h3><code>optional_host_permissions</code></h3>
<p><strong>Purpose:</strong> To allow communication with your self-hosted torrent client (for example qBittorrent or Transmission).</p>
<p><strong>Data Access:</strong> Permissions are only requested for the specific URL of your torrent client. No data from other websites is accessed using these permissions.</p>

<h2>Your Rights</h2>
<p>Since CTRL does not collect any personal data, there is no data for you to request, correct, or delete from our servers (because we don't have servers).</p>
Expand All @@ -257,7 +268,7 @@ <h2>Changes to This Privacy Policy</h2>

<h2>Open Source Transparency</h2>
<p>CTRL is open-source software. You can inspect the source code to verify our privacy claims:</p>
<p><strong>GitHub Repository:</strong> <a href="https://github.com/YOUR_USERNAME/CTRL" target="_blank">https://github.com/YOUR_USERNAME/CTRL</a></p>
<p><strong>GitHub Repository:</strong> <a href="https://github.com/StarlightDaemon/CTRL" target="_blank">https://github.com/StarlightDaemon/CTRL</a></p>

<p>The code shows:</p>
<ul>
Expand All @@ -275,8 +286,8 @@ <h2>Legal Disclaimer</h2>
<h2>Contact</h2>
<p>If you have questions about this privacy policy or CTRL's data practices:</p>
<ul>
<li><strong>Email:</strong> [your-email@domain.com]</li>
<li><strong>GitHub Issues:</strong> <a href="https://github.com/YOUR_USERNAME/CTRL/issues" target="_blank">https://github.com/YOUR_USERNAME/CTRL/issues</a></li>
<li><strong>GitHub Discussions:</strong> <a href="https://github.com/StarlightDaemon/CTRL/discussions" target="_blank">https://github.com/StarlightDaemon/CTRL/discussions</a></li>
<li><strong>GitHub Issues:</strong> <a href="https://github.com/StarlightDaemon/CTRL/issues" target="_blank">https://github.com/StarlightDaemon/CTRL/issues</a></li>
</ul>

<hr>
Expand Down
19 changes: 9 additions & 10 deletions extension/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### 💎 Core Architecture & CI
- **Mainline Rewrite**: Successfully completed the safe rewrite of the project repository history.
- **CI Determinism**: Transitioned to a fully deterministic npm workflow using `package-lock.json` validation and `npm ci` caching.
### 💎 Core Architecture & Release Operations
- **Firefox Source Packaging**: Added a clean-tree AMO source archive generation step for compliant release packaging.
- **Build Maintenance**: Cleaned up source archive pathspecs to accommodate test directory removals.

### ✅ Testing & Reliability
- **Test Baseline Growth**: Expanded the test suite significantly, growing from 153 to **357 passing tests**.
- **Adapter Hardening**:
- Implemented active status validation guards for Deluge to prevent UI-blocking timeouts.
- Enhanced qBittorrent handling for 401 Unauthorized responses with active attempt tracking.
- **Connection Truthfulness**:
- Resolved generic "Authentication Failed" UI masking by ensuring the actual adapter error strings propagate to the UI during Test Connection.
- Hardened Chrome and Firefox vault session persistence and active runtime background resolution.
- **Runtime Carry-Forward**: Restored non-VPN runtime features and their corresponding adapter tests.
- **Test Optimization**: Cleaned up the test surface by removing stale, duplicate Playwright E2E specs.
- **Validation Fixes**: Corrected RuTorrent property mappings to unblock the adapter unit tests.

### 📖 Documentation
- **Product Docs**: Updated and carried forward public product documentation to match the rebuilt branch.

## [0.2.0-beta.1] - 2026-01-11

Expand Down
Loading
Loading