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
20 changes: 0 additions & 20 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,6 @@ jobs:

- uses: astral-sh/setup-uv@v5

- name: Generate PyPI README (strip TOC)
run: |
python -c "
import re
from pathlib import Path
src = Path('README.md').read_text(encoding='utf-8')
cleaned = re.sub(r'\n---\n.*?\n---\n', '\n\n', src, count=1, flags=re.DOTALL)
Path('README-pypi.md').write_text(cleaned, encoding='utf-8')
"

- name: Install dependencies
run: uv sync --extra dev

Expand All @@ -51,16 +41,6 @@ jobs:

- uses: astral-sh/setup-uv@v5

- name: Generate PyPI README (strip TOC)
run: |
python -c "
import re
from pathlib import Path
src = Path('README.md').read_text(encoding='utf-8')
cleaned = re.sub(r'\n---\n.*?\n---\n', '\n\n', src, count=1, flags=re.DOTALL)
Path('README-pypi.md').write_text(cleaned, encoding='utf-8')
"

- name: Install package
run: uv tool install .

Expand Down
10 changes: 0 additions & 10 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,6 @@ jobs:

- uses: astral-sh/setup-uv@v5

- name: Generate PyPI README (strip TOC)
run: |
python -c "
import re
from pathlib import Path
src = Path('README.md').read_text(encoding='utf-8')
cleaned = re.sub(r'\n---\n.*?\n---\n', '\n\n', src, count=1, flags=re.DOTALL)
Path('README-pypi.md').write_text(cleaned, encoding='utf-8')
"

- name: Build distributions
run: uv build

Expand Down
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
# Virtual environment
.venv/

# Generated at publish time (strip TOC for PyPI)
README-pypi.md

# Python
__pycache__/
*.pyc
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ Format follows [Keep a Changelog](https://keepachangelog.com/). Versions follow

### Fixed

- **Fresh-clone `pip install -e .` failure**: `pyproject.toml` pointed at `README-pypi.md`, a `.gitignore`d build artifact only generated by CI/publish workflows, so any source install from a fresh clone failed with `OSError: Readme file does not exist: README-pypi.md`. The dual-README setup existed solely to strip the in-README table of contents before publishing to PyPI (anchor links don't render reliably there). Removed the generation dance entirely: deleted the TOC block from `README.md` (GitHub's "Outline" sidebar provides a TOC anyway), pointed `pyproject.toml` at `README.md` directly, and dropped the `Generate PyPI README` step from `ci.yml` (both jobs) and `publish.yml`. `README-pypi.md` is no longer gitignored because it is no longer a thing.
- **Stale `python -m yt_dont_recommend` examples in the package module docstring** (closes #31): replaced every example in `src/yt_dont_recommend/__init__.py` with the `yt-dont-recommend` console-script form (the package has no `__main__.py`, so the `python -m` form never worked), and added the now-required `--blocklist` flag to each example. The same doc-drift affected `CLAUDE.md` § "End-to-End Test Cycle", which referenced a non-existent top-level `yt_dont_recommend.py` — updated to use the console-script form as well. Also corrected a stale `License: MIT` line in the module docstring to `License: Apache-2.0` to match the main-branch license switch.
- **Scheduler catch-up spawn storm** (closes #17): after the host woke from sleep (or otherwise missed multiple consecutive scheduled slots), the heartbeat loop would spawn one full blocklist+clickbait run per missed slot back-to-back, resulting in three or more overlapping browser sessions fighting over the same Chromium profile. Stale missed slots are now coalesced into a single catch-up run.
- **`workflow_run` event registration for `pr-labels-ci.yml`** (PRs #24–#28): literal GitHub Actions template-expression syntax inside shell comments in `run:` blocks was being substituted by the runner at queue time, which failed parsing and silently prevented the workflow from registering with the `workflow_run` trigger at all — the label automation never fired. Took five iterations to diagnose and escape correctly. The workflow now registers cleanly (visible under `gh api repos/.../actions/workflows`) and dispatches on completion of the source workflow.
Expand Down
28 changes: 0 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,34 +13,6 @@ Automates YouTube's "Don't recommend channel" action in bulk, using any channel

No browser extension can do this. Extensions filter content client-side on a single browser. This tool affects the server-side recommendation engine.

---

- [Platform Support](#platform-support)
- [Install](#install)
- [Clickbait Detection Extras](#clickbait-detection-extras)
- [Upgrading](#upgrading)
- [Uninstall](#uninstall)
- [Development Setup](#development-setup)
- [Usage](#usage)
- [Exclusion Lists](#exclusion-lists)
- [Subscription Protection](#subscription-protection)
- [Auto-Unblock (False Positive Correction)](#auto-unblock-false-positive-correction)
- [Blocklist Format](#blocklist-format)
- [Built-in Sources](#built-in-sources)
- [How It Works](#how-it-works)
- [State & Logs](#state--logs)
- [Caveats](#caveats)
- [Automatic Safeguards](#automatic-safeguards)
- [Running Periodically](#running-periodically)
- [Notifications](#notifications)
- [Updates](#updates)
- [Checking and Updating Selectors](#checking-and-updating-selectors)
- [Acknowledgments](#acknowledgments)
- [Changelog](#changelog)
- [License](#license)

---

## Platform Support

| Platform | Status |
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ name = "yt-dont-recommend"
version = "0.4.2"
requires-python = ">=3.10"
description = "Bulk-train YouTube's recommendation algorithm via 'Don't recommend channel' — works on Fire TV, mobile, and smart TVs"
readme = {file = "README-pypi.md", content-type = "text/markdown"}
readme = {file = "README.md", content-type = "text/markdown"}
license = {text = "Apache-2.0"}
authors = [
{name = "Chris Means", email = "chris.a.means@gmail.com"},
Expand Down
Loading