Skip to content

Latest commit

 

History

History
260 lines (190 loc) · 7.79 KB

File metadata and controls

260 lines (190 loc) · 7.79 KB

[v1.0.3]

  • Migrate to httpx2.
  • Support following Retry-After headers 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 SRC argument 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 BaseCheck classes (BrokenPathsCheck, BrokenURLsCheck, URLsTrackingCheck, PathsTrackingCheck, URLsLocaleCheck).
  • Add Config frozen dataclass unifying all runtime options.
  • Add CheckResult structured result type with issues and links_checked fields.
  • 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.com as 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 OSError handling 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 requests with httpx for 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.base
    • markdown_checker.paths -> markdown_checker.models.path
    • markdown_checker.urls -> markdown_checker.models.url
    • markdown_checker.utils.format_output -> markdown_checker.reports.format_output
    • markdown_checker.reports.generator_base -> markdown_checker.reports.base
    • markdown_checker.reports.md_reports.generator -> markdown_checker.reports.markdown
    • CLI logic extracted to markdown_checker.cli
    • Check logic extracted to markdown_checker.checker
  • Remove markdown_checker.utils.logging module.
  • 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@v5 with uv sync and uv run.
  • Update pre-commit hooks: pre-commit-hooks v6.0.0, mirrors-mypy v1.20.0, ruff-pre-commit v0.15.10.
  • Add slots=True to MarkdownPath and MarkdownURL dataclasses for memory efficiency.
  • Pre-compile regex patterns at module level for performance.
  • Update API docs to reflect new module structure.
  • Add advanced.md documentation 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 Accept and User-Agent headers 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 use Click.IntRange for 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_domains list.
  • 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. #52

[v0.1.4] 6 May 2024

  • Improve Dev Experience. #28
  • Better Typing. #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 #21
  • Skip VS Code redirect URLs.
  • Fix typos.

[v0.1.1] 06 March 2024

  • Fix: add requests to required packages by @john0isaac in #19

[v0.1.0] 06 March 2024

  • Add development requirements and install in devcontainer by @john0isaac in #13
  • Format with ruff and black by @john0isaac in #14
  • Improve output of checker by @john0isaac in #15
  • Feat: broken URLs by @john0isaac in #16
  • Skip Microsoft security blog by @john0isaac in #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_args to inputs module 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.