Changes¶
[v1.0.3]¶
Migrate to
httpx2.Support following
Retry-Afterheaders for rate-limited requests.Adds granular URL check outcomes with warning-level issues for rate-limited URLs instead of treating them as broken.
Treat 401 and 403 responses as unverifiable with appropriate issue messages instead of flagging as broken.
[v1.0.2] 4 May 2026¶
Relax pinned dependencies to allow for patch updates:
click>=8.3.3,httpx>=0.28.1.
[v1.0.1] 18 April 2026¶
Add positional
SRCargument as alternative to--dir, allowing users to pass individual files or directories directly.Replace spinner with Click’s built-in progress bar for checking progress.
Update default timeout from 15s to 20s for better reliability.
[v1.0.0] 13 April 2026¶
Features Added¶
Add check registry system with pluggable
BaseCheckclasses (BrokenPathsCheck,BrokenURLsCheck,URLsTrackingCheck,PathsTrackingCheck,URLsLocaleCheck).Add
Configfrozen dataclass unifying all runtime options.Add
CheckResultstructured result type withissuesandlinks_checkedfields.Add fenced code block detection to skip links inside code blocks during extraction.
Add handling for unsupported protocol redirects, for example
vscode://, treated as alive instead of broken.Add
format_issues_table()for formatting per-file issues into a complete markdown table.Add
openai.comas a built-in skip domain that is always skipped during URL checks.Add lazy template loading for report generation.
Add encoding error handling with
errors="replace"for file reading.Add
OSErrorhandling for path existence checks.Add max redirect limit (10) for HTTP requests.
Add exponential backoff for URL retry logic (
0.5 * 2^attempt).Increase default timeout from 15s to 20s for URL checks.
Breaking Changes¶
Replace
requestswithhttpxfor all HTTP operations, using connection pooling and per-thread clients.Raise minimum Python version from 3.9 to 3.10.
Pin dependencies:
click==8.3.2,httpx==0.28.1.Restructure package modules:
markdown_checker.markdown_link_base->markdown_checker.models.basemarkdown_checker.paths->markdown_checker.models.pathmarkdown_checker.urls->markdown_checker.models.urlmarkdown_checker.utils.format_output->markdown_checker.reports.format_outputmarkdown_checker.reports.generator_base->markdown_checker.reports.basemarkdown_checker.reports.md_reports.generator->markdown_checker.reports.markdownCLI logic extracted to
markdown_checker.cliCheck logic extracted to
markdown_checker.checker
Remove
markdown_checker.utils.loggingmodule.Clear default skip domains from CLI options. Built-in skip domains are still applied internally.
Bugs Fixed¶
Fix mutation bugs and improve code safety.
Fix substring check logic in URL validation.
Other Changes¶
Migrate from pip/setuptools to uv for dependency management.
Replace single test file (~135 lines) with 16 dedicated test files (~1,500+ lines).
Add separate unit test CI workflow (
python-unit-tests.yaml) across Python 3.10-3.13.Migrate CI workflows to
astral-sh/setup-uv@v5withuv syncanduv run.Update pre-commit hooks:
pre-commit-hooksv6.0.0,mirrors-mypyv1.20.0,ruff-pre-commitv0.15.10.Add
slots=TruetoMarkdownPathandMarkdownURLdataclasses for memory efficiency.Pre-compile regex patterns at module level for performance.
Update API docs to reflect new module structure.
Add
advanced.mddocumentation page.
[v0.2.5] 5 May 2025¶
Disable GitHub.com URL checks (skipping until fixed).
[v0.2.4] 26 Jan 2025¶
Increase timeout for requests to check web URLs alive or not. Defaults to 15 seconds.
Consider status codes between 2xx and 3xx as valid URLs.
Add
AcceptandUser-Agentheaders to the requests, which are required by some websites.
[v0.2.3] 26 Nov 2024¶
Skip another domain by @IsuminI.
[v0.2.2] 8 Nov 2024¶
Change broken URL flagging to always try HEAD and GET on any URL before flagging it as broken.
[v0.2.1] 7 Aug 2024¶
Fix command line
list[str]type issue and useClick.IntRangefor retries and timeout.
[v0.2.0] 7 Aug 2024¶
Redesign the package.
Port to using Click instead of
arg_parser.Expose options for external users to allow for more customization.
Increase coverage for paths by including paths that start with
/or nothing.Add retires for URLs before flagging them as broken.
Perform HEAD request on URL which falls back to GET. If both do not work, flag as broken after the retries count finishes.
Analyze all web URLs except the ones in the
skip_domainslist.Change syntax of terminal comments to improve readability.
Add spinner to indicate that the tool is working (not compatible with all terminals).
Add documentation for the new features.
Use multiprocessing for checking broken URLs, reducing the execution time by 50%.
Add support for GitHub automatic annotations.
[v0.1.5] 8 Jul 2024¶
Increase timeout for requests to check web URLs alive or not. https://github.com/john0isaac/markdown-checker/pull/52
[v0.1.4] 6 May 2024¶
Improve Dev Experience. https://github.com/john0isaac/markdown-checker/pull/28
Better Typing. https://github.com/john0isaac/markdown-checker/pull/37
Add ruff, black, mypy, and workflows to check them on all supported Python versions.
Add pre-commit.
Change packaging strategy to setuptools with
pyproject.toml.Add docs in Read the Docs: https://markdown-checker.readthedocs.io/en/latest/
[v0.1.3] 15 March 2024¶
Change lessons to files.
Remove IDs from the end of relative paths.
[v0.1.2] 06 March 2024¶
Improve-package by @john0isaac in https://github.com/john0isaac/markdown-checker/pull/21
Skip VS Code redirect URLs.
Fix typos.
[v0.1.1] 06 March 2024¶
Fix: add requests to required packages by @john0isaac in https://github.com/john0isaac/markdown-checker/pull/19
[v0.1.0] 06 March 2024¶
Add development requirements and install in devcontainer by @john0isaac in https://github.com/john0isaac/markdown-checker/pull/13
Format with ruff and black by @john0isaac in https://github.com/john0isaac/markdown-checker/pull/14
Improve output of checker by @john0isaac in https://github.com/john0isaac/markdown-checker/pull/15
Feat: broken URLs by @john0isaac in https://github.com/john0isaac/markdown-checker/pull/16
Skip Microsoft security blog by @john0isaac in https://github.com/john0isaac/markdown-checker/pull/17
[v0.0.9] 05 March 2024¶
Fix: skip video URLs.
Feat: add devcontainer.
[v0.0.8] 30 December 2023¶
Feat: separate into modules.
Feat: generate markdown file.
Define tests to execute functions.
Docs: add instructions for local development.
[v0.0.7] 26 November 2023¶
Rename
get_input_argstoinputsmodule with no change.Improve paths reading using recursion.
Improve script output format.
[v0.0.5] 22 November 2023¶
Add description to package.
Improve package metadata.
Configure GitHub Actions on release.
Add contributing guidance, code of conduct, and templates for issues and pull requests.
[v0.0.4] 21 November 2023¶
Initial release.