• Introduce REST_DOCSTRING style in DocumentationStyle.
• Implement ReSTDocstringRenderer for reStructuredText output.
• Update renderers (Doxygen, Google, Numpy) to use examples instead of
example field consistently.
• Add exceptions field handling to GoogleDocstringRenderer,
NumpyDocstringRenderer and DoxygenRenderer.
• Update LLM constraints to refine example generation logic.
• Map new style to the corresponding renderer.
• Add explicit docstring section headers in Google style.
• Ensure blank lines separate sections in Google style.
• Standardize entity kind retrieval using str().
• Add support for rendering example in Numpy style.
• Improve return type parsing in Numpy style.
• Updated DocumentationStyle and ProgrammingLanguage enums in constants.py to use explicit string values instead of auto().
• Introduced CodeEntityKind as a str, Enum and added GENERIC and UNION kinds.
• Refactored DoxygenRenderer to use CodeEntityKind for mapping and added support for documenting generics, unions, and examples (
• Modify _get_node_to_document in parsers to return a tuple: (Node | None, bool).
• The boolean indicates if child nodes should be skipped during traversal.
• Update BaseParser traversal logic to respect the new return value.
• Enhance CParser and CPPParser to correctly identify nodes like template declarations where skipping children is necessary.
Refactor parsers to use the new _get_node_to_document method instead of _node_is_match.
This aligns with changes in BaseParser to return the specific node to document, allowing for more flexible entity extraction.
• Updated descriptions for entity_kind, description, members, and return_info fields in EntityDoc.
• Descriptions are now more precise regarding renderer usage and content expectations.
• Changed several logger.info calls to logger.debug.
• Updated one log message format in FileDocumenter.
This reduces noise in standard output by moving initialization and successful completion messages to the debug level.
• Moved entity extraction logic from PythonParser to BaseParser.
• Implemented generic AST traversal using TreeCursor in BaseParser.extract_entities.
• Added specific matching helpers (_node_is_match, etc.) to CParser for composite types and functions.
• Removed redundant traversal code from PythonParser.
• Removed remove_comments_and_docs and normalize_lines from BaseDocWriter.
• Deleted corresponding methods from CCppDocWriter and PythonDocWriter.
• Simplified BaseDocWriter.__enter__ and removed file reading logic.
• Removed _find_entity_text_position as it relied on removed methods.
This cleans up base class methods that were duplicated or no longer necessary after changes in related logic.
• Added instructions to prioritize existing comments/documentation.
• Clarified the role and required structure for the LLM output.
• Removed unnecessary debug logging.
• Replaced query-based entity extraction with AST traversal in BaseParser.
• FileDocumenter now calls extract_entities() instead of parse().
• PythonParser implements AST traversal logic to find definitions.
• Removed dependency on Query and QueryCursor from BaseParser.
• Implements remove_comments_and_docs method.
• Adds normalize_lines for stripping whitespace and expanding tabs.
• Prepares the writer for further code processing by cleaning input.
• Replace line_no with text_pos (row, column) in EntitySource.
• Update parsers to use start point row/column for entity tracking.
• Adjust writers (BaseDocWriter, CCppDocWriter, PythonDocWriter) to use the new position tuple.
• Introduce methods in PythonDocWriter to strip comments/docs and normalize lines.
• Update BaseDocWriter to preprocess file content upon loading.
• Renamed SourceEntity to EntitySource across modules.
• Replaced Tree Sitter ID with line_no in EntitySource.
• Updated FileDocumenter to remove commented-out code.
• Modified BaseParser to sort entities by line number descending after parsing.
• Updated type hints in LLM and BaseDocWriter.
• Added missing blank lines in several modules (__main__.py, cli.py, config.py, constants.py, models.py, python_parser.py).
• Improved formatting in parser.py and writer.py for better readability.
• Moved DocumentationStyle, ProgrammingLanguage, and CodeEntityKind to constants.py.
• Extracted renderer mappings to mappings/documentation_renderers.py.
• Extracted file extension handlers to mappings/extension_handlers.py.
• Renamed and moved tree-sitter mapping to mappings/tree_sitter_mappings.py.
• Updated imports across modules to use the new centralized mappings.
• Replaced term "node" with "entity" in several places for consistency.
• Extracted TS_NODE_KIND_MAP and related maps from __init__.py.
• Created treesitter_mapping.py to house these definitions.
• Updated parser.py and __init__.py to import from the new location.
• Renamed loggers in cli.py, config.py, and file_documenter.py for consistency.
• Consolidated file parsing and writing logic in FileDocumenter.
• Moved TS_NODE_KIND_MAP definition to parsers/__init__.py.
• Removed redundant language/writer mapping in FileDocumenter.
• Moved documentation generation logic from cli.py to a new FileDocumenter class.
• Updated cli.main to use FileDocumenter for processing files.
• Cleaned up imports and removed unused variables/functions in cli.py.
• Moved STYLE_TO_RENDERER definition to docai.doc_renderers.__init__.py.
• Extracted doc writing logic from cli.py into dedicated writers.
• Introduced BaseDocWriter and language-specific writers (PythonDocWriter, CCppDocWriter).
• Updated CLI to use writers based on detected language.
• Renamed base_parser.py to parser.py and updated imports.
• Added necessary imports for renderers and parsers in cli.py.
• Moved CONFIG_PATHS and SUFFIX_TO_PARSER from constants.py to cli.py.
• Removed deprecated constants.py.
• Updated cli.py to use xdg_config_home for config path discovery.
• Refactored config.py to define STYLE_TO_RENDERER internally and handle config loading errors more strictly.
• Updated llm.py to use SourceEntity.kind instead of SourceEntity.type.
• Introduced CodeEntityKind mapping in base_parser.py to translate tree-sitter node types to CodeEntityKind.
• Updated SourceEntity to use CodeEntityKind.
• Moved renderer selection logic in cli.py to happen before LLM call.
• Replaced hardcoded GoogleDocstringRenderer usage in cli.py with dynamic renderer selection based on configuration.
• Introduced DocumentationStyle enum and STYLE_TO_RENDERER mapping in constants.py.
• Updated Config to load documentation styles mapping to DocumentationStyle enums.
• Removed example/requirement fetching from LLM prompt in llm.py as style is now configured.
• Added NumpyDocstringRenderer implementation.
This centralizes documentation style configuration and allows supporting multiple output formats dynamically.
• Rename CodeNode to SourceEntity and CodeNodeLang to
ProgrammingLanguage.
• Introduce EntityDoc and MemberDoc for structured documentation
output.
• Update CLI to use EntityDoc and render using GoogleDocstringRenderer
by default.
• Implement base Renderer class and specific renderers for Google and
Doxygen styles.
• Update Config and DocWriter to use the new model and language enums.
• Moved CodeNode and CodeNodeLang from code_node.py to models.py.
• Introduced DocModel in models.py for LLM output structure.
• Updated imports across the project to reference docai.models.
• Removed debugging print statements in cli.py.
• Updated CodeNode initialization in base_parser.py to use keyword arguments.
- Remove CodeParser class and integrate BaseParser-based parsers via
SUFFIX_TO_PARSER
- Simplify CodeNode.type from enum to str
- Update CLI to use new generate_doc function with file-specific
parsers
- Add docstring to CCppDocStrategy.get_insert_position with usage
warning
• Move dependencies from requirements.txt to pyproject.toml with static
listing
• Add project.scripts entry for docai CLI app
• Update main.py to use docai.cli:app instead of main.py
• Remove obsolete main.py and requirements.txt files
This modernizes packaging and simplifies the CLI setup.
• Introduce configurable logging with --log-level option in main.py
• Refactor logger initialization into a dedicated function
• Add detailed logging statements across CodeParser, LLM, and main
modules
• Enhance docstrings for CodeNodeLang, CodeNodeType, and CodeNode
classes
• Improve error handling and user feedback in parsing and LLM
generation
• Minor formatting fixes in doc_writer.py and remove interactive pause
in main.py
- Add LLM config section in config.toml with base_url, api_key, model
- Rename config sections to [language.*] for consistency
- Remove TextPoint class and text_point from CodeNode and CodeParser
- Implement _find_node_text_position in DocWriter for position
detection via text matching
- Update LLM.generate_doc to return DocModel | None and handle errors
- Modify main.py to write generated docs to files with user
confirmation