📋 Changelog¶
Version history and changes
Changelog¶
All notable changes to Introligo will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]¶
[1.4.0] - 2025-01-30¶
Added¶
Rust Language Support - Automatic documentation extraction for Rust projects - Integration with Rust’s cargo doc system - Automatic detection and inclusion of Rust documentation
Java Language Support - Automatic documentation generation for Java projects - JavaDoc integration for comprehensive Java project documentation - Seamless conversion to Sphinx-compatible formats
Go Language Support - Automatic documentation extraction for Go projects - Automatic extraction using go doc -all command - RST conversion - godoc output automatically converted to reStructuredText - Seamless integration - extracted docs appear directly in Sphinx site - Graceful fallback - provides pkg.go.dev links when Go is not available - Automatic Go language detection from godoc_* fields - Support for godoc_package - single Go package documentation - Support for godoc_packages - multiple Go packages - Support for godoc_path - specify local package directory - New GoDocExtractor class for documentation extraction - Complete test coverage for Go documentation features - Example Go project configuration in examples/go_project/
Theme Examples - Additional example configurations with multiple themes - Demonstrations of various Sphinx themes and their configurations - Enhanced examples for better user guidance
Enhanced Testing - Improved test coverage - New test for hub mode functionality - Additional test cases for better code coverage
Changed¶
Code Cleanup - Removed unused code from generator.py for better maintainability
Markdown Integration - Minor fixes in markdown integration for improved reliability
Fixed¶
MyPy Compliance - Fixed MyPy type checking issues
Workflow Fixes - Resolved issues in GitHub Actions workflows
[1.3.0] - 2025-01-24¶
Added¶
Automated PyPI Publishing - Complete CI/CD pipeline for releases - New .github/workflows/publish-pypi.yml workflow for automated PyPI publishing - Triggers automatically on version tags (e.g., v1.3.0) - Uses PyPI trusted publishing (OIDC) - no API tokens needed - Automatic GitHub release creation with changelog extraction - Multi-Python version testing (3.8, 3.9, 3.10, 3.11, 3.12) after publishing - Distribution artifact archiving (.tar.gz and .whl files)
Dynamic Version Management - Automatic version extraction from git tags - Integrated setuptools-scm for version management - Version automatically extracted from git tags (format: vX.Y.Z) - Auto-generated _version.py file during build - Fallback version (0.0.0.dev0) for development mode - No manual version updates needed in code
Documentation Hub Architecture - Smart documentation discovery and organization - New DocumentationHub class for auto-discovering documentation files - Automatic discovery of README, CHANGELOG, CONTRIBUTING, and LICENSE files - Smart categorization by content analysis (getting_started, guides, api, about) - Pattern-based markdown file discovery - Configurable scan paths and exclusion patterns - Auto-generation of module configurations from discovered docs
Hub Configuration Support - YAML-driven hub mode - New hub and discovery configuration sections - auto_include options for readme, changelog, contributing, license - markdown_docs pattern matching for custom documentation - scan_paths for targeted directory scanning - exclude_patterns for filtering unwanted files
Markdown Header Demotion - Prevent duplicate H1 headers - Automatic header level demotion in markdown conversion - demote_headers parameter (default: True) in markdown converter - Converts # → ##, ## → ###, etc. when including markdown files - Maintains proper document hierarchy when combining files - Prevents conflicts with YAML-defined page titles
Enhanced Markdown Conversion - Extended markdown to RST features - Markdown link conversion: [text](url) → `` text `` - Internal document links: :doc:`text <file>` → :doc:`text <file>` - Anchor links: :ref:`anchor` → :ref:`anchor` - Image conversion: `
- ` → .. image:: path
Markdown table to RST list-table conversion
Link with anchor support: :doc:`text (Section) <file>`
Code block preservation (links not converted inside code)
Template Robustness - Better handling of optional configurations - Enhanced conf.py.jinja2 with conditional checks for optional parameters - Graceful handling of missing html_theme_options - Default empty lists for templates_path and exclude_patterns - LICENSE file recognition without file extension - Support for common text files (LICENSE, COPYING, AUTHORS, etc.)
Hub Example Project - Comprehensive demonstration - New examples/hub_project/ with hub architecture showcase - Python package with ComplexNumber class for autodoc demonstration - Comprehensive docstrings with examples and type hints - example_usage.py script demonstrating the API - Hub configuration with auto-discovery enabled - Integration of Python autodoc with hub mode
Comprehensive Documentation - Guides and references - New RELEASE.md - Complete release process guide (97 lines) - New .github/workflows/README.md - Workflow documentation - New GETTING_STARTED.md - 5-minute quickstart guide - New HUB_ARCHITECTURE.md - Technical hub architecture documentation - Integrated documentation files into main Introligo docs - Updated examples with hub configuration patterns
100% Test Coverage Achievement - Extensive testing improvements - Fixed 25 failing tests across the test suite - Added test_coverage.py with edge case coverage - Added test_include_loader.py for YAML loader testing - Added test_markdown_link_conversion.py for markdown features - Enhanced existing tests with better fixtures - All 207 tests passing with comprehensive coverage - Fixed test imports and module organization
Changed¶
Build System - Updated for dynamic versioning - Added setuptools-scm[toml]>=8.0 to build requirements - Changed version from static to dynamic = [“version”] - Added [tool.setuptools_scm] configuration in pyproject.toml
Version Management - Updated version import strategy - Modified introligo/__init__.py to import from _version.py - Added fallback for development environments - Removed hardcoded version string
Markdown Converter Defaults - Header demotion enabled by default - convert_markdown_to_rst() now demotes headers by default - Updated all markdown conversion tests for new behavior - Better integration with existing documentation hierarchies
Generator Imports - Improved module organization - Added direct imports for markdown conversion functions - Fixed duplicate method definitions - Better separation of concerns between modules
Test Organization - Restructured test imports - Updated test_utils.py to use direct imports from utils module - Updated test_markdown_link_conversion.py to use converter functions - Fixed imports in test_include_loader.py and test_coverage.py - Better test module structure and clarity
Fixed¶
Template Rendering - Resolved configuration errors - Fixed ‘dict object’ has no attribute ‘html_theme_options’ error - Fixed invalid Python syntax in generated conf.py - Fixed empty template assignments causing syntax errors - Added proper conditional checks for all optional Sphinx parameters
File Type Detection - Enhanced LICENSE handling - Fixed “Unsupported file type” warning for LICENSE files - Added filename-based detection for files without extensions - Support for LICENSE, COPYING, AUTHORS, CONTRIBUTORS, NOTICE files
Test Infrastructure - Resolved all test failures - Fixed 19 failing tests in test_utils.py (import errors) - Fixed 14 failing tests in test_markdown_link_conversion.py (function references) - Fixed 2 failing tests in test_coverage.py (logger mock paths) - Fixed mypy type annotation errors (26 files checked, 0 errors) - Fixed all ruff linting issues (import sorting, unused imports, undefined names)
Type Checking - Resolved mypy errors - Added explicit type annotation in hub.py: modules: Dict[str, Any] - Fixed include_constructor import references in tests - Updated imports from introligo.__main__ to correct modules - All type checking passes cleanly
Logger Mocking - Corrected test mock paths - Fixed logger mock from introligo.__main__.logger to introligo.generator.logger - Proper test coverage for warning and error logging - Accurate test assertions for logging behavior
Documentation¶
Integrated GETTING_STARTED.md into main documentation
Integrated HUB_ARCHITECTURE.md into main documentation
Created comprehensive release process guide
Added workflow documentation for GitHub Actions
Enhanced hub example with Python autodoc
Updated README with hub architecture information
[1.2.0] - 2025-10-13¶
Added¶
Sphinx conf.py Auto-generation - Major rework to automatically generate Sphinx configuration - New conf.py.jinja2 template for generating Sphinx configuration files - Automatic conf.py generation from introligo config - Removed need for manual conf.py maintenance in docs directory - Configuration-driven Sphinx setup
LaTeX Inclusions Support - Include external LaTeX files in documentation - latex_includes configuration option for including LaTeX files - Automatic LaTeX to RST math directive conversion - Relative path resolution from config file location - Support for mathematical equations and formulas in documentation
Color Palette System - Customizable color schemes for Sphinx themes - New palette system with YAML-based color definitions - Built-in celin palette with custom color scheme - Built-in default palette for standard Sphinx colors - Support for custom palette creation - Automatic theme color application to Sphinx configuration
Comprehensive Testing Infrastructure - Full unit test suite with extensive coverage - Tests for generator, page nodes, include loader, and utilities - Sphinx palette tests with color validation - Coverage reporting integration - Test fixtures and utilities for test setup
GitHub Actions CI/CD - Automated testing workflow - .github/workflows/tests.yml for running tests on push and PR - Automated linting with ruff - Code coverage reporting with codecov integration
Example Projects - Real-world usage examples - Python project example with full documentation setup - C project example with Doxygen integration - LaTeX project example with mathematical documentation - Example configurations for different palette usage - Comprehensive EXAMPLES.md documentation
Enhanced Documentation - Extensive Sphinx tutorial split across 4 chapters:
Introduction to Sphinx and introligo
Configuration and setup
Themes and colors customization
Advanced features and techniques
Reorganized markdown tutorial into dedicated directory
Enhanced README with detailed feature descriptions
Changed¶
Template System - Restructured template organization - Moved from default.jinja2 to conf.py.jinja2 for configuration generation - Updated template to generate complete Sphinx conf.py files - Enhanced template with palette and theme support
Documentation Preview - Improved preview.py functionality - Updated to work with auto-generated conf.py files - Enhanced error handling and logging - Better integration with new configuration system
Updated API exports in __init__.py for better module interface
Enhanced pyproject.toml with additional development dependencies
Fixed¶
Fixed API import problems with module structure
Fixed ruff linting issues across codebase
Fixed codecov integration for proper coverage reporting
Code formatting consistency improvements
[1.1.0] - 2025-10-06¶
Added¶
PyPI Package Structure - Restructured as a proper Python package - Created introligo/ package directory with proper module structure - Added pyproject.toml for modern Python packaging (PEP 621) - Added setup.py for backwards compatibility - Added MANIFEST.in for including non-Python files - Extracted Jinja2 template to introligo/templates/default.jinja2 - Created __init__.py with public API exports - Added command-line entry point: introligo command - Added optional dependencies groups: docs, cpp, dev - Created PUBLISHING.md with PyPI publishing guide - Created PACKAGE_STRUCTURE.md documenting package structure
GitHub Actions CI/CD - Automated deployment workflows - Added .github/workflows/deploy-docs.yml for GitHub Pages deployment after tagging. - Documentation auto-deploys to GitHub Pages on tag push
Markdown file inclusion support - Include external markdown files in documentation - Automatic markdown to RST conversion - Support for headers (H1-H4), code blocks, and text formatting - Relative path resolution from config file location - Single file or multiple files support - Proper emoji support in markdown content - Auto-skip first H1 “Changelog” header to prevent duplication with YAML title
Enhanced emoji support with improved display width calculation for RST underlines
Comprehensive markdown includes documentation with subpages: - Basic Usage examples - Best Practices guide - Real-world Use Cases (8 scenarios) - Troubleshooting guide
Changed¶
Package Structure - Reorganized for PyPI distribution - Moved main code from introligo.py to introligo/__main__.py - Template now loads from introligo/templates/default.jinja2 - Kept original introligo.py for backwards compatibility - Updated docs/preview.py to use python -m introligo instead of script path
Improved get_relative_path_from() method for correct toctree path generation
Enhanced count_display_width() function with comprehensive emoji range coverage
Updated YAML configuration reference to clarify markdown_includes usage for Changelog
Fixed¶
Fixed toctree paths to be relative to parent directory instead of base directory
Corrected subpage navigation in hierarchical documentation structures
Fixed duplicate “Changelog” header when including CHANGELOG.md via markdown_includes
[1.0.0] - 2025-10-05¶
Added¶
Initial release
!include directive for modular configuration files
Support for splitting documentation across multiple files
Relative path resolution for included files
Nested include support
Rich content support: - Features lists - Usage examples with syntax highlighting - Installation guides - Configuration sections - API reference - Notes and see also sections
Custom sections support for flexible documentation structure
Enhanced error handling and logging
Hierarchical page organization with parent-child relationships
Automatic toctree generation
Python autodoc integration
C/C++ documentation support via Doxygen/Breathe
Template-based RST generation with Jinja2
ASCII-safe folder naming with automatic slugification
Dry-run mode for previewing changes
Support for multiple documentation sections
YAML-based configuration for easy maintenance
Features¶
Support for hierarchical module organization
Custom page titles and descriptions
Automatic directory structure generation
Rich content blocks (overview, features, installation, etc.)
Multiple usage examples per module
See also and references sections
Changelog tracking per module
Examples directory support
Custom sections for flexibility
—
Unreleased¶
Planned¶
Support for additional markdown features (tables, links, images)
Multi-language documentation support
Additional template customization options
Enhanced metadata support
Search optimization features
—
[1.4.0]: https://github.com/JakubBrzezo/introligo/compare/v1.3.0…v1.4.0 [1.3.0]: https://github.com/JakubBrzezo/introligo/compare/v1.2.0…v1.3.0 [1.2.0]: https://github.com/JakubBrzezo/introligo/compare/v1.1.0…v1.2.0 [1.1.0]: https://github.com/JakubBrzezo/introligo/compare/v1.0.0…v1.1.0 [1.0.0]: https://github.com/JakubBrzezo/introligo/releases/tag/v1.0.0