From b1e063605d10c43e2e12695ed88adc15872a9d57 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 19 May 2026 15:32:33 +0000 Subject: [PATCH 1/2] Prepare v1.1.0: bump version + fix stale troubleshooting invocations Version bump: - pyproject.toml: 1.0.0 -> 1.1.0 - src/substack_link_checker/__init__.py: __version__ -> 1.1.0 - CHANGELOG.md: rename [Unreleased] -> [1.1.0] - 2026-05-19, add a fresh empty [Unreleased] section above it Troubleshooting fix: - README.md Troubleshooting section's code blocks still used the pre-refactor `python substack_link_checker.py ...` / `python fetch_archive_urls.py ...` form because PR #4 was based on the audit branch before B3's CLI rewrite landed. Updated to the current `substack-link-checker check ...` and `substack-link-checker fetch-archive ...` invocations so a reader following the troubleshooting steps doesn't hit "command not found" on the main entry point. Once this lands, push tag v1.1.0 to trigger the release workflow (which builds the wheel/sdist and attaches them to the GitHub Release). --- CHANGELOG.md | 10 ++++++++++ README.md | 8 ++++---- pyproject.toml | 2 +- src/substack_link_checker/__init__.py | 2 +- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f2ace1f..5ac401f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.1.0] - 2026-05-19 + +Post-v1.0.0 repo-hygiene release. Adds packaging, CI, tests, security +hardening, automation, and docs without changing the link-checker's +runtime behavior. See the README's "Migrating from v1.0.0" section for +the CLI invocation changes. + ### Added - `pyproject.toml` making the project pip-installable with a `substack-link-checker` console entry point. @@ -61,6 +68,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Corrected the clone URL in `README.md` (was `substack-link-checker`, now `substack-broken-link-checker`). +- Troubleshooting section's code blocks now use the new + `substack-link-checker check ...` invocations instead of the + pre-refactor `python substack_link_checker.py ...` form. ## [1.0.0] - 2026-01-01 diff --git a/README.md b/README.md index c2176f1..cd8c016 100644 --- a/README.md +++ b/README.md @@ -128,9 +128,9 @@ your Substack — some accounts only expose a single combined sitemap. Fall back to scraping the archive page: ```bash -python fetch_archive_urls.py https://YOUR.substack.com 2024 +substack-link-checker fetch-archive https://YOUR.substack.com 2024 # Produces archive_urls_2024.txt -python substack_link_checker.py --base-url https://YOUR.substack.com \ +substack-link-checker check --base-url https://YOUR.substack.com \ --url-file archive_urls_2024.txt ``` @@ -140,7 +140,7 @@ The target site is rate-limiting or geo-blocking the checker, not actually broken. Add it to `--skip-domains` so it's assumed OK: ```bash -python substack_link_checker.py ... --skip-domains rate-limited.example.com +substack-link-checker check ... --skip-domains rate-limited.example.com ``` For a recurring list, put one domain per line in a file and pass @@ -153,7 +153,7 @@ longer accepts by default. Usually the right call is to flag the domain as broken (it really is unreachable from a modern client): ```bash -python substack_link_checker.py ... --broken-domains old-tls.example.com +substack-link-checker check ... --broken-domains old-tls.example.com ``` ### Many `Soft 404 (page title indicates error)` results that look fine diff --git a/pyproject.toml b/pyproject.toml index 74b3543..1e76e3f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "substack-broken-link-checker" -version = "1.0.0" +version = "1.1.0" description = "A fast, async Python tool to find broken links in your Substack newsletter archive." readme = "README.md" license = { file = "LICENSE" } diff --git a/src/substack_link_checker/__init__.py b/src/substack_link_checker/__init__.py index 787bf72..4c6be14 100644 --- a/src/substack_link_checker/__init__.py +++ b/src/substack_link_checker/__init__.py @@ -3,7 +3,7 @@ from ._cli_check import load_domains_from_file from .checker import BrokenLinkRecord, LinkCheckResult, SubstackLinkChecker -__version__ = "1.0.0" +__version__ = "1.1.0" __all__ = [ "BrokenLinkRecord", From 37c6beef65147281694d811d33a5b60fb487f492 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 19 May 2026 15:37:16 +0000 Subject: [PATCH 2/2] Fix CI smoke test (root-level substack_link_checker.py is gone) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The CI test job has been running `python substack_link_checker.py --help` as a post-install smoke test since PR #1. B3 (PR #3) deleted that file when refactoring the codebase into the src-layout package, but didn't update this step. CI has been failing on every PR since B3 merged. Replace with two invocations against the installed console script: - `substack-link-checker --help` (top-level dispatcher) - `substack-link-checker check --help` (check subcommand) This is also why the actions/checkout Dependabot PR (#7) was reported as failing — same root cause, not the action bump itself. --- .github/workflows/ci.yml | 3 ++- CHANGELOG.md | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fdb05f1..b30ee1e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,7 +41,8 @@ jobs: - name: Import smoke test run: | python -c "import substack_link_checker; print('import OK')" - python substack_link_checker.py --help + substack-link-checker --help + substack-link-checker check --help - name: Run tests run: pytest -q diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ac401f..103db21 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -71,6 +71,11 @@ the CLI invocation changes. - Troubleshooting section's code blocks now use the new `substack-link-checker check ...` invocations instead of the pre-refactor `python substack_link_checker.py ...` form. +- CI smoke test step in `.github/workflows/ci.yml` was still running + `python substack_link_checker.py --help`, which started failing once + the package refactor removed that root-level file. Updated to invoke + the installed `substack-link-checker` console script instead. This + was also blocking the Dependabot PRs from going green. ## [1.0.0] - 2026-01-01