Skip to content

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 13 Dec 11:31
· 58 commits to main since this release

v0.4.0 (2025-12-13)

Bug Fixes

  • Ensure command line arguments are only parsed when not running under pytest (b36450b)

  • Ignore inline code fenced references as they are not real references (1b7cd7c)

  • Improve markdown reference validation and parsing (8f38107)

  • Optimize regex patterns: replace greedy .+ with specific character classes

    • BASIC_REFERENCE_PATTERN: [^]]+ for text, [^)]+ for links
    • INLINE_LINK_PATTERN: [^>]+ instead of .+
  • Fix _drop_code_block_references: use list filtering instead of modifying during iteration

  • Implement _process_inline_links for processing angle-bracket enclosed links

  • Activate inline links validation in main processing loop

  • Fix header path resolution: resolve relative markdown file paths to absolute
    before checking for headers (fixes validation of other.md#header patterns)

  • Move get_command_line_argumets() from parsers.py to new cli.py to break circular import (5cb49e7)

  • create new cli.py file and move CLI related code there

  • update settings.py

  • update parsers.py

  • Outdated lockfile and qa (bc6ff4a)

  • Qa issues that were only on remote (146d50f)

  • cd: Update build command to ensure poetry is installed before building (7886095)

  • ci: Add contents permission for deploy job (d66a31f)

  • ci: Comment out code coverage to codecov (968c632)

Chores

  • Make QA happy :) (53d0a75)

  • also set line length to 100

  • Remove obsolete publish-to-pypi workflow (5c71104)

  • dependabot: Configure dependabot to apply security patches (f471032)

Add open-pull-requests-limit: 0. This will prevent opening of pull requests for normal version bumps. Security updates will still be created.

  • deps: Bump requests from 2.32.3 to 2.32.4 (#50, d2383f4)

Bumps requests from 2.32.3 to 2.32.4.


updated-dependencies:

  • dependency-name: requests dependency-version: 2.32.4

dependency-type: direct:production

update-type: version-update:semver-patch ...

Signed-off-by: dependabot[bot] support@github.com

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • deps: Bump the pip group with 2 updates (#52, 185db64)

updated-dependencies:

  • dependency-name: requests dependency-version: 2.32.4

dependency-type: direct:production

dependency-group: pip

  • dependency-name: urllib3 dependency-version: 2.5.0

dependency-type: indirect

dependency-group: pip ...

Signed-off-by: dependabot[bot] support@github.com

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • deps: Bump urllib3 in the pip group across 1 directory (#80, cee5d8b)

  • deps-dev: Bump commitizen from 4.4.1 to 4.6.1 (#37, ec4822f)

Bumps commitizen from 4.4.1 to 4.6.1.


updated-dependencies:

  • dependency-name: commitizen dependency-version: 4.6.1

dependency-type: direct:development

update-type: version-update:semver-minor ...

Signed-off-by: dependabot[bot] support@github.com

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • deps-dev: Bump commitizen from 4.6.1 to 4.8.3 (#49, 4d114b3)

Bumps commitizen from 4.6.1 to 4.8.3.


updated-dependencies:

  • dependency-name: commitizen dependency-version: 4.8.3

dependency-type: direct:development

update-type: version-update:semver-minor ...

Signed-off-by: dependabot[bot] support@github.com

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • deps-dev: Bump pytest from 8.3.5 to 8.4.1 (#53, c94ac98)

Bumps pytest from 8.3.5 to 8.4.1.


updated-dependencies:

  • dependency-name: pytest dependency-version: 8.4.1

dependency-type: direct:development

update-type: version-update:semver-minor ...

Signed-off-by: dependabot[bot] support@github.com

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • deps-dev: Bump pytest from 8.4.1 to 8.4.2 (#69, ea9d07c)

Bumps pytest from 8.4.1 to 8.4.2.


updated-dependencies:

  • dependency-name: pytest dependency-version: 8.4.2

dependency-type: direct:development

update-type: version-update:semver-patch ...

Signed-off-by: dependabot[bot] support@github.com

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • deps-dev: Bump python-semantic-release from 10.3.1 to 10.4.1 (#73, 151cf92)

Bumps python-semantic-release from 10.3.1 to 10.4.1.


updated-dependencies:

  • dependency-name: python-semantic-release dependency-version: 10.4.1

dependency-type: direct:development

update-type: version-update:semver-minor ...

Signed-off-by: dependabot[bot] support@github.com

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • deps-dev: Bump python-semantic-release from 9.21.0 to 9.21.1 (#38, b2c89f3)

Bumps python-semantic-release from 9.21.0 to 9.21.1.


updated-dependencies:

  • dependency-name: python-semantic-release dependency-version: 9.21.1

dependency-type: direct:development

update-type: version-update:semver-patch ...

Signed-off-by: dependabot[bot] support@github.com

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • deps-dev: Bump python-semantic-release from 9.21.1 to 10.3.1 (#61, 4da4e26)

Bumps python-semantic-release from 9.21.1 to 10.3.1.


updated-dependencies:

  • dependency-name: python-semantic-release dependency-version: 10.3.1

dependency-type: direct:development

update-type: version-update:semver-major ...

Signed-off-by: dependabot[bot] support@github.com

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • deps-dev: Bump ruff from 0.11.2 to 0.11.8 (#36, a720223)

Bumps ruff from 0.11.2 to 0.11.8.


updated-dependencies:

  • dependency-name: ruff dependency-version: 0.11.8

dependency-type: direct:development

update-type: version-update:semver-patch ...

Signed-off-by: dependabot[bot] support@github.com

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

Continuous Integration

  • Fix trusted publishing exchange failure (a8d2ee3)

  • Update ci workflows to new makefile setup and tools (c17632c)

Documentation

  • Add CONTRIBUTING.md and enhance documentation (ba00727)

  • Document commit conventions and development workflow (7549cf3)

  • Add Commit Convention section explaining conventional commits format

  • Document which commit types trigger version bumps (feat, fix, perf)

  • Document types that don't trigger releases (docs, chore, ci, style, etc.)

  • Add practical examples of conventional commit messages

  • Document new version management make targets

  • Add codecov coverage badge to badges section

  • Remove development status notice (preparing for v1.0.0 stable release)

  • Update development commands documentation

  • Fix mistake in pre commit usage example (43e8dad)

  • Improve commit hook example (ab9e026)

  • Update CONTRIBUTING.md with coverage requirements and test instructions and modify README.md for Codecov token visibility (99252b4)

Features

  • Add makefile QA and test setup (e33ff96)

  • create makefile for running and grouping QA and test commands

  • add pytest-cov, mypy, vulture, and deptry to dev dependencies.

  • configure vulture with minimum confidence and excluded specific patterns.

  • set up per-rule ignores for deptry.

  • configure mypy with Python version and warning options.

  • Add version management commands and pre-commit hook setup (9536935)

  • Update make init to auto-install pre-commit hooks

  • Add make bump-version to preview next version

  • Add make changelog to show unreleased changes

  • Add make check-version to display current/next versions

  • Add make update-hooks to keep pre-commit hooks current

  • Configure commitizen and semantic-release for v1.0.0 transition (9cd0282)

  • Add [tool.commitizen] section with version sync and changelog bumping

  • Update [tool.semantic_release] with angular parser and major_on_zero=true

  • Simplify build_command to use 'poetry build' directly

  • Enable Dependabot for pip and github-actions (5 PR limit each)

  • Create .pre-commit-config.yaml with commitizen commit-msg hook

  • Add pre-commit to dev dependencies

  • Modernize CI/CD workflows with Poetry caching and codecov integration (56bf8fc)

  • Replace curl-based Poetry installation with snok/install-poetry@v1

  • Enable isolated virtual environments (.venv in project root) for caching

  • Upgrade setup-python from v2/v4 to v5 for consistency

  • Add dependency caching with GitHub Actions cache

  • Add codecov integration with XML coverage reports and artifacts

  • Fix build-validation.yml matrix strategy with explicit job definitions

  • Add validation for all PR commits using cz check

  • Create version-preview workflow for automatic version bump detection

  • Remove redundant publish-to-pypi.yml workflow

Refactoring

  • Improve CLI argument parsing exit behavior (f89c742)

  • Add sys.exit(0) when no paths provided for cleaner UX

  • Print help message and exit cleanly instead of continuing

  • Improve code quality and type safety (4abcd26)

  • Replace mutable default arguments with None in utils.py:

    • get_markdown_files_from_dir(exclude=None)
    • get_markdown_files_from_args(exclude=None)
  • Add proper return type hints (list[str]) to:

    • load_exclusion_patterns()
    • get_markdown_files_from_dir()
    • get_markdown_files_from_args()
  • Fix logging configuration to preserve error messages in non-verbose mode

    • Change handler level from CRITICAL to WARNING

Testing

  • Add new test files and expand existing tests (f914dea)

  • tests/test_parsers.py (27 tests) - Covers MarkdownParser class and all parsing methods - Tests code block filtering (critical for correctness) - Tests all reference types (basic, images, inline links) - Tests edge cases and error handling

  • tests/test_main.py (20 tests) - Covers ReferenceChecker class - Covers main() orchestration function - Tests broken/valid reference detection - Tests remote checking with mocked HTTP responses - Tests summary printing and sorting

  • tests/test_cli.py (18 tests) - Covers all CLI arguments and flags - Tests short and long flag variants - Tests flag combinations - Tests help/exit behavior

  • tests/test_settings.py (15 tests) - Covers Settings class initialization - Tests all property accessors - Tests is_valid() method - Tests pytest detection logic

  • tests/test_validators/test_remote_reference.py (16 tests) - Covers is_valid_remote_reference() function - Tests various HTTP status codes - Tests timeout and connection errors - Tests SSL certificate errors

  • tests/test_utils.py - Added 7 tests for load_exclusion_patterns() - Tests with existing/missing .refcheckignore - Tests whitespace handling - Tests empty files and comments

  • Create test infrastructure (d80e598)

  • Created tests/conftest.py with centralized fixtures:

    • Settings mocks for all flag combinations
    • HTTP request mocks (success, 404, timeout, SSL errors)
    • File system helpers (temp files, directory structures)
    • Common test data (sample markdown content)
  • Created tests/fixtures/ directory structure:

    • valid/ - Valid markdown with various reference types
    • code_blocks/ - Code block edge cases
    • broken_refs/ - Intentionally broken references
    • edge_cases/ - Malformed syntax and special characters
  • Enhance test coverage configuration and enforce coverage thresholds (a33f889)


Detailed Changes: v0.3.0...v0.4.0