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 f2ace1f..103db21 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,14 @@ 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. +- 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 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",