mvn-tree-visualizer 1.2.0__tar.gz → 1.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of mvn-tree-visualizer might be problematic. Click here for more details.

Files changed (64) hide show
  1. mvn_tree_visualizer-1.4.0/.github/FUNDING.yml +13 -0
  2. mvn_tree_visualizer-1.4.0/.github/ISSUE_TEMPLATE/bug_report.md +36 -0
  3. mvn_tree_visualizer-1.4.0/.github/ISSUE_TEMPLATE/feature_request.md +22 -0
  4. mvn_tree_visualizer-1.4.0/.github/ISSUE_TEMPLATE/question.md +21 -0
  5. mvn_tree_visualizer-1.4.0/.github/PULL_REQUEST_TEMPLATE.md +30 -0
  6. mvn_tree_visualizer-1.4.0/.github/SECURITY.md +52 -0
  7. mvn_tree_visualizer-1.4.0/.github/dependabot.yml +39 -0
  8. mvn_tree_visualizer-1.4.0/.github/instructions/copilot-instructions.md +92 -0
  9. mvn_tree_visualizer-1.4.0/.github/workflows/ci.yml +38 -0
  10. mvn_tree_visualizer-1.4.0/.github/workflows/release.yml +58 -0
  11. {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/.gitignore +9 -1
  12. mvn_tree_visualizer-1.4.0/CHANGELOG.md +109 -0
  13. {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/CONTRIBUTING.md +41 -1
  14. mvn_tree_visualizer-1.4.0/PKG-INFO +209 -0
  15. mvn_tree_visualizer-1.4.0/README.md +189 -0
  16. mvn_tree_visualizer-1.4.0/RELEASE.md +185 -0
  17. mvn_tree_visualizer-1.4.0/ROADMAP.md +131 -0
  18. mvn_tree_visualizer-1.4.0/docs/INTEGRATION.md +261 -0
  19. mvn_tree_visualizer-1.4.0/docs/README.md +42 -0
  20. mvn_tree_visualizer-1.4.0/docs/THEMES.md +106 -0
  21. mvn_tree_visualizer-1.4.0/examples/README.md +91 -0
  22. mvn_tree_visualizer-1.4.0/examples/complex-project/diagram-dark.html +467 -0
  23. mvn_tree_visualizer-1.4.0/examples/complex-project/diagram-minimal.html +442 -0
  24. mvn_tree_visualizer-1.4.0/examples/complex-project/maven_dependency_file +84 -0
  25. mvn_tree_visualizer-1.4.0/examples/simple-project/dependencies.json +40 -0
  26. mvn_tree_visualizer-1.4.0/examples/simple-project/diagram-dark.html +250 -0
  27. mvn_tree_visualizer-1.4.0/examples/simple-project/diagram-minimal.html +225 -0
  28. mvn_tree_visualizer-1.4.0/examples/simple-project/maven_dependency_file +9 -0
  29. mvn_tree_visualizer-1.4.0/examples/watch-test/README.md +22 -0
  30. mvn_tree_visualizer-1.4.0/examples/watch-test/test_maven_file +2 -0
  31. mvn_tree_visualizer-1.4.0/issues.md +79 -0
  32. {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/pyproject.toml +32 -1
  33. mvn_tree_visualizer-1.4.0/src/mvn_tree_visualizer/cli.py +225 -0
  34. mvn_tree_visualizer-1.4.0/src/mvn_tree_visualizer/diagram.py +26 -0
  35. mvn_tree_visualizer-1.4.0/src/mvn_tree_visualizer/enhanced_template.py +218 -0
  36. mvn_tree_visualizer-1.4.0/src/mvn_tree_visualizer/exceptions.py +25 -0
  37. mvn_tree_visualizer-1.4.0/src/mvn_tree_visualizer/file_watcher.py +71 -0
  38. mvn_tree_visualizer-1.4.0/src/mvn_tree_visualizer/get_dependencies_in_one_file.py +40 -0
  39. mvn_tree_visualizer-1.4.0/src/mvn_tree_visualizer/outputs/html_output.py +132 -0
  40. {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/src/mvn_tree_visualizer/outputs/json_output.py +2 -2
  41. mvn_tree_visualizer-1.4.0/src/mvn_tree_visualizer/themes.py +189 -0
  42. mvn_tree_visualizer-1.4.0/src/mvn_tree_visualizer/validation.py +86 -0
  43. mvn_tree_visualizer-1.4.0/tests/test_html_output.py +200 -0
  44. {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/tests/test_json_output.py +7 -7
  45. mvn_tree_visualizer-1.4.0/tests/test_watch_mode.py +169 -0
  46. {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/uv.lock +327 -2
  47. mvn_tree_visualizer-1.2.0/.github/workflows/publish.yml +0 -29
  48. mvn_tree_visualizer-1.2.0/CHANGELOG.md +0 -49
  49. mvn_tree_visualizer-1.2.0/PKG-INFO +0 -94
  50. mvn_tree_visualizer-1.2.0/README.md +0 -75
  51. mvn_tree_visualizer-1.2.0/ROADMAP.md +0 -34
  52. mvn_tree_visualizer-1.2.0/issues.md +0 -84
  53. mvn_tree_visualizer-1.2.0/src/mvn_tree_visualizer/TEMPLATE.py +0 -61
  54. mvn_tree_visualizer-1.2.0/src/mvn_tree_visualizer/cli.py +0 -94
  55. mvn_tree_visualizer-1.2.0/src/mvn_tree_visualizer/diagram.py +0 -14
  56. mvn_tree_visualizer-1.2.0/src/mvn_tree_visualizer/get_dependencies_in_one_file.py +0 -13
  57. mvn_tree_visualizer-1.2.0/src/mvn_tree_visualizer/outputs/html_output.py +0 -65
  58. mvn_tree_visualizer-1.2.0/tests/test_html_output.py +0 -159
  59. {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/.python-version +0 -0
  60. {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/CODE_OF_CONDUCT.md +0 -0
  61. {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/LICENSE +0 -0
  62. {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/ruff.toml +0 -0
  63. {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/src/mvn_tree_visualizer/__init__.py +0 -0
  64. {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/src/mvn_tree_visualizer/__main__.py +0 -0
@@ -0,0 +1,13 @@
1
+ # These are supported funding model platforms
2
+
3
+ github: # Replace with a single GitHub username or organization
4
+ patreon: # Replace with a single Patreon username
5
+ open_collective: # Replace with a single Open Collective username
6
+ ko_fi: irakliskonsoulas
7
+ tidelift: # Replace with a single Tidelift package-name e.g., npm/babel
8
+ community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9
+ liberapay: # Replace with a single Liberapay username
10
+ issuehunt: # Replace with a single IssueHunt username
11
+ otechie: # Replace with a single Otechie username
12
+ lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
13
+ custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve
4
+ title: '[BUG] '
5
+ labels: bug
6
+ assignees: ''
7
+ ---
8
+
9
+ **Describe the bug**
10
+ A clear and concise description of what the bug is.
11
+
12
+ **To Reproduce**
13
+ Steps to reproduce the behavior:
14
+ 1. Run command '...'
15
+ 2. See error
16
+
17
+ **Expected behavior**
18
+ A clear and concise description of what you expected to happen.
19
+
20
+ **Maven dependency tree sample**
21
+ Please provide a sample of your Maven dependency tree output:
22
+ ```
23
+ [paste your maven dependency tree here]
24
+ ```
25
+
26
+ **Screenshots**
27
+ If applicable, add screenshots to help explain your problem.
28
+
29
+ **Environment:**
30
+ - OS: [e.g. Windows 10, macOS, Ubuntu 20.04]
31
+ - Python version: [e.g. 3.13]
32
+ - Package version: [e.g. 1.2.0]
33
+ - Maven version: [e.g. 3.8.1]
34
+
35
+ **Additional context**
36
+ Add any other context about the problem here.
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for this project
4
+ title: '[FEATURE] '
5
+ labels: enhancement
6
+ assignees: ''
7
+ ---
8
+
9
+ **Is your feature request related to a problem? Please describe.**
10
+ A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
11
+
12
+ **Describe the solution you'd like**
13
+ A clear and concise description of what you want to happen.
14
+
15
+ **Describe alternatives you've considered**
16
+ A clear and concise description of any alternative solutions or features you've considered.
17
+
18
+ **Use case**
19
+ Describe how this feature would be used and who would benefit from it.
20
+
21
+ **Additional context**
22
+ Add any other context or screenshots about the feature request here.
@@ -0,0 +1,21 @@
1
+ ---
2
+ name: Question
3
+ about: Ask a question about usage or functionality
4
+ title: '[QUESTION] '
5
+ labels: question
6
+ assignees: ''
7
+ ---
8
+
9
+ **Question**
10
+ What would you like to know?
11
+
12
+ **Context**
13
+ Provide any relevant context about your use case or what you're trying to achieve.
14
+
15
+ **What you've tried**
16
+ If applicable, describe what you've already tried.
17
+
18
+ **Environment (if relevant):**
19
+ - OS: [e.g. Windows 10, macOS, Ubuntu 20.04]
20
+ - Python version: [e.g. 3.13]
21
+ - Package version: [e.g. 1.2.0]
@@ -0,0 +1,30 @@
1
+ ## Description
2
+ Brief description of the changes made in this PR.
3
+
4
+ ## Type of Change
5
+ - [ ] Bug fix (non-breaking change which fixes an issue)
6
+ - [ ] New feature (non-breaking change which adds functionality)
7
+ - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
8
+ - [ ] Documentation update
9
+ - [ ] Code refactoring
10
+ - [ ] Performance improvement
11
+ - [ ] Other (please describe):
12
+
13
+ ## Testing
14
+ - [ ] I have added tests that prove my fix is effective or that my feature works
15
+ - [ ] New and existing unit tests pass locally with my changes
16
+ - [ ] I have tested the CLI functionality manually
17
+
18
+ ## Checklist
19
+ - [ ] My code follows the project's style guidelines
20
+ - [ ] I have performed a self-review of my code
21
+ - [ ] I have commented my code, particularly in hard-to-understand areas
22
+ - [ ] I have made corresponding changes to the documentation
23
+ - [ ] My changes generate no new warnings
24
+ - [ ] I have updated the CHANGELOG.md file (if applicable)
25
+
26
+ ## Screenshots (if applicable)
27
+ Add screenshots to help explain your changes.
28
+
29
+ ## Additional Notes
30
+ Any additional information that would be helpful for reviewers.
@@ -0,0 +1,52 @@
1
+ # Security Policy
2
+
3
+ ## Supported Versions
4
+
5
+ We actively support the following versions of mvn-tree-visualizer:
6
+
7
+ | Version | Supported |
8
+ | ------- | ------------------ |
9
+ | 1.3.x | :white_check_mark: |
10
+ | 1.2.x | :white_check_mark: |
11
+ | 1.1.x | :x: |
12
+ | 1.0.x | :x: |
13
+
14
+ ## Reporting a Vulnerability
15
+
16
+ If you discover a security vulnerability in mvn-tree-visualizer, please report it to us responsibly.
17
+
18
+ ### How to Report
19
+
20
+ 1. **Do not create a public GitHub issue** for security vulnerabilities
21
+ 2. **Email us directly** at: dyka3773@gmail.com
22
+ 3. **Include the following information:**
23
+ - Description of the vulnerability
24
+ - Steps to reproduce
25
+ - Affected versions
26
+ - Potential impact
27
+ - Suggested fix (if available)
28
+
29
+ ### Response Timeline
30
+
31
+ - **Acknowledgment**: We will acknowledge receipt of your report as soon as possible (usually within 48 hours)
32
+ - **Assessment**: We will assess the vulnerability within 7 days
33
+ - **Fix**: We will work on a fix and release it as soon as possible
34
+ - **Credit**: We will credit you in the security advisory (unless you prefer to remain anonymous)
35
+
36
+ ### Security Best Practices
37
+
38
+ When using mvn-tree-visualizer:
39
+
40
+ 1. **Keep updated**: Always use the latest version
41
+ 2. **Validate inputs**: Be cautious with dependency files from untrusted sources
42
+ 3. **File permissions**: Ensure proper file permissions on generated outputs
43
+ 4. **CI/CD**: Use in secure CI/CD environments
44
+
45
+ ### Scope
46
+
47
+ This security policy applies to:
48
+ - The mvn-tree-visualizer Python package
49
+ - Official GitHub repository
50
+ - Documentation and examples
51
+
52
+ Thank you for helping keep mvn-tree-visualizer secure!
@@ -0,0 +1,39 @@
1
+ version: 2
2
+ updates:
3
+ # Enable version updates for Python dependencies
4
+ - package-ecosystem: "pip"
5
+ directory: "/"
6
+ schedule:
7
+ interval: "weekly"
8
+ open-pull-requests-limit: 10
9
+ commit-message:
10
+ prefix: "deps"
11
+ prefix-development: "deps-dev"
12
+ labels:
13
+ - "dependencies"
14
+ - "python"
15
+
16
+ - package-ecosystem: "uv"
17
+ directory: "/"
18
+ schedule:
19
+ interval: "weekly"
20
+ open-pull-requests-limit: 10
21
+ commit-message:
22
+ prefix: "deps"
23
+ prefix-development: "deps-dev"
24
+ labels:
25
+ - "dependencies"
26
+ - "uv"
27
+ - "python"
28
+
29
+ # Enable version updates for GitHub Actions
30
+ - package-ecosystem: "github-actions"
31
+ directory: "/"
32
+ schedule:
33
+ interval: "weekly"
34
+ open-pull-requests-limit: 5
35
+ commit-message:
36
+ prefix: "ci"
37
+ labels:
38
+ - "dependencies"
39
+ - "github-actions"
@@ -0,0 +1,92 @@
1
+ # GitHub Copilot Instructions for mvn-tree-visualizer
2
+
3
+ ## Project Overview
4
+ This is a Python CLI tool that parses Maven dependency trees (`mvn dependency:tree` output) and generates interactive HTML diagrams (using Mermaid.js) or JSON outputs. The tool supports watch mode for real-time regeneration and has a modular architecture focused on error handling and user experience.
5
+
6
+ ## Architecture & Key Components
7
+
8
+ ### Core Flow
9
+ 1. **Input Validation** (`validation.py`) - Find and validate Maven dependency files
10
+ 2. **File Merging** (`get_dependencies_in_one_file.py`) - Combine multiple dependency files
11
+ 3. **Parsing** (`diagram.py`) - Read merged dependency tree
12
+ 4. **Output Generation** (`outputs/`) - Generate HTML (Mermaid.js) or JSON
13
+ 5. **Watch Mode** (`file_watcher.py`) - Monitor files for changes using watchdog
14
+
15
+ ### Module Structure
16
+ ```
17
+ src/mvn_tree_visualizer/
18
+ ├── cli.py # Entry point with comprehensive error handling
19
+ ├── exceptions.py # Custom exception hierarchy
20
+ ├── validation.py # File discovery and validation logic
21
+ ├── diagram.py # Core dependency tree processing
22
+ ├── file_watcher.py # Real-time file monitoring
23
+ ├── get_dependencies... # Multi-file merging logic
24
+ ├── TEMPLATE.py # Jinja2 HTML template for Mermaid.js
25
+ └── outputs/
26
+ ├── html_output.py # Mermaid diagram generation
27
+ └── json_output.py # Structured JSON output
28
+ ```
29
+
30
+ ## Development Conventions
31
+
32
+ ### Error Handling Pattern
33
+ - Use custom exceptions from `exceptions.py`: `DependencyFileNotFoundError`, `DependencyParsingError`, `OutputGenerationError`
34
+ - Provide actionable error messages with Maven commands and file paths
35
+ - Follow the pattern in `cli.py:generate_diagram()` for comprehensive error handling
36
+
37
+ ### Testing Approach
38
+ - Use pytest with descriptive test names like `test_convert_to_mermaid_deeper_tree()`
39
+ - Test both positive cases and error conditions
40
+ - Include realistic Maven dependency tree samples in test data
41
+ - Run tests with: `uv run pytest tests/ -v`
42
+
43
+ ### Package Management
44
+ - Uses `uv` as package manager - always use `uv run` for commands
45
+ - Core dependencies: `jinja2` (templating), `watchdog` (file monitoring)
46
+ - Entry point: `mvn-tree-visualizer` command maps to `cli:cli`
47
+
48
+ ### Code Quality
49
+ - Lint with: `uv run ruff check .`
50
+ - Type hints required throughout (project uses Python 3.13+)
51
+ - Follow existing patterns for file validation and path handling
52
+
53
+ ## Critical Implementation Details
54
+
55
+ ### Maven Dependency Parsing
56
+ - Input format: `[INFO] groupId:artifactId:type:version:scope` with tree structure using `+`, `|`, `\`
57
+ - Handle both 4-part and 5-part dependency strings (see `html_output.py:_convert_to_mermaid`)
58
+ - Depth calculation based on whitespace: `depth = len(parts[0].split(" ")) - 1`
59
+
60
+ ### File Discovery Pattern
61
+ - Multi-file support: searches directory tree for `maven_dependency_file` (configurable)
62
+ - Merges files from different Maven modules into single intermediate file
63
+ - Validates file existence, permissions, and content before processing
64
+
65
+ ### Output Generation
66
+ - HTML uses Mermaid.js with `graph LR` format
67
+ - Version display controlled by `--show-versions` flag
68
+ - JSON output maintains tree structure with parent-child relationships
69
+
70
+ ### Watch Mode Implementation
71
+ - Uses watchdog library for cross-platform file monitoring
72
+ - Monitors specific filename pattern across directory tree
73
+ - Debounces changes and provides timestamped feedback
74
+
75
+ ## Common Development Tasks
76
+
77
+ ### Adding New Output Formats
78
+ 1. Create new module in `outputs/` directory
79
+ 2. Follow pattern from `html_output.py` and `json_output.py`
80
+ 3. Add format option to CLI and update `generate_diagram()` in `cli.py`
81
+
82
+ ### Error Message Improvements
83
+ - All user-facing errors should include specific file paths and suggested Maven commands
84
+ - Use `print_maven_help()` pattern for guiding users to generate dependency files
85
+ - Test error scenarios in addition to happy path
86
+
87
+ ### Testing New Features
88
+ - Include realistic Maven dependency trees in test data
89
+ - Test both single-module and multi-module project scenarios
90
+ - Verify error handling with invalid/missing files
91
+
92
+ Remember: This tool processes Maven output files, not Maven projects directly. Users must run `mvn dependency:tree -DoutputFile=maven_dependency_file` first.
@@ -0,0 +1,38 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [ master, develop ]
6
+ pull_request:
7
+ branches: [ master, develop ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ python-version: ["3.13"]
15
+
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - name: Set up Python ${{ matrix.python-version }}
20
+ uses: actions/setup-python@v5
21
+ with:
22
+ python-version: ${{ matrix.python-version }}
23
+
24
+ - name: Install dependencies
25
+ run: |
26
+ python -m pip install --upgrade pip
27
+ pip install -e .
28
+ pip install pytest ruff
29
+
30
+ - name: Run linter
31
+ run: ruff check src/ tests/
32
+
33
+ - name: Run tests
34
+ run: pytest -v
35
+
36
+ - name: Test CLI
37
+ run: |
38
+ python -m mvn_tree_visualizer --help
@@ -0,0 +1,58 @@
1
+ name: Semantic Release
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ workflow_dispatch:
7
+
8
+ concurrency: ${{ github.workflow }}-${{ github.ref }}
9
+
10
+ jobs:
11
+ release:
12
+ runs-on: ubuntu-latest
13
+ permissions:
14
+ contents: write
15
+ id-token: write
16
+ issues: write
17
+ pull-requests: write
18
+
19
+ steps:
20
+ - name: Checkout
21
+ uses: actions/checkout@v4
22
+ with:
23
+ fetch-depth: 0
24
+ token: ${{ secrets.GITHUB_TOKEN }}
25
+
26
+ - name: Set up Python
27
+ uses: actions/setup-python@v5
28
+ with:
29
+ python-version: '3.13'
30
+
31
+ - name: Install uv
32
+ uses: astral-sh/setup-uv@v4
33
+
34
+ - name: Install dependencies
35
+ run: |
36
+ uv sync --dev
37
+
38
+ - name: Run tests
39
+ run: |
40
+ uv run pytest tests/ -v
41
+
42
+ - name: Run linting
43
+ run: |
44
+ uv run ruff check .
45
+
46
+ - name: Python Semantic Release
47
+ id: release
48
+ uses: python-semantic-release/python-semantic-release@v10.2.0
49
+ with:
50
+ github_token: ${{ secrets.GITHUB_TOKEN }}
51
+
52
+ - name: Publish to PyPI
53
+ if: steps.release.outputs.released == 'true'
54
+ env:
55
+ TWINE_USERNAME: __token__
56
+ TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
57
+ run: |
58
+ uv run twine upload dist/*
@@ -18,6 +18,14 @@ lib/
18
18
  lib64/
19
19
  parts/
20
20
  sdist/
21
+
22
+ # Project specific - only ignore in root directory
23
+ /dependency_tree.txt
24
+ /maven_dependency_file
25
+ /diagram.html
26
+ /dependencies.json
27
+ /*.svg
28
+
21
29
  var/
22
30
  wheels/
23
31
  share/python-wheels/
@@ -179,7 +187,7 @@ cython_debug/
179
187
  # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
180
188
  # and can be added to the global gitignore or merged into this file. However, if you prefer,
181
189
  # you could uncomment the following to ignore the entire vscode folder
182
- # .vscode/
190
+ .vscode/
183
191
 
184
192
  # Ruff stuff:
185
193
  .ruff_cache/
@@ -0,0 +1,109 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ <!--next-version-placeholder-->
9
+
10
+ ## [1.3.0] - 2025-07-09
11
+
12
+ ### Added
13
+ - Watch mode functionality with `--watch` flag for automatic diagram regeneration
14
+ - File system monitoring using watchdog library for real-time updates
15
+ - New file_watcher module for decoupled file monitoring logic
16
+ - Enhanced error handling system with comprehensive user guidance
17
+ - Clear error messages for missing dependency files with helpful Maven commands
18
+ - Specific validation for directories, file permissions, and content
19
+ - Detailed diagnostics for parsing errors and empty files
20
+ - User-friendly error messages with emojis and actionable suggestions
21
+ - Custom exception classes for better error categorization
22
+ - Comprehensive test coverage for error scenarios
23
+
24
+ ### Changed
25
+ - **BREAKING**: JSON output now uses simplified package names (artifact-id only) to match HTML output behavior
26
+ - Root packages now show as "my-app" instead of "com.example:my-app"
27
+ - Ensures consistency between HTML and JSON output formats
28
+ - Refactored CLI module to separate concerns and improve maintainability
29
+ - Improved error handling with timestamped console output and graceful failure modes
30
+ - Enhanced file processing with better encoding handling (UTF-8) and validation
31
+ - Updated dependency file merging logic with better error detection
32
+
33
+ ### Fixed
34
+ - Removed unused imports and improved code organization
35
+ - Fixed intermediate file path handling in diagram generation
36
+
37
+ ## [1.2.0] - 2025-07-09
38
+
39
+ ### Added
40
+ - Comprehensive type hints throughout the entire codebase
41
+ - `--show-versions` flag to display dependency versions in both HTML and JSON outputs
42
+ - Support for complex dependency trees with real-world examples
43
+ - "Typing :: Typed" classifier in pyproject.toml to indicate type hint support
44
+ - CHANGELOG.md to track project changes
45
+
46
+ ### Changed
47
+ - Enhanced CLI help text to reflect new features
48
+ - Improved JSON output structure for better programmatic access
49
+ - Updated documentation with version feature examples
50
+
51
+ ### Fixed
52
+ - Type annotation issues and improved code clarity
53
+ - JSON serialization for complex dependency structures
54
+
55
+ ## [1.1.0] - 2025-07-05
56
+
57
+ ### Added
58
+ - JSON output format option for programmatic consumption
59
+ - Multi-file support for Maven modules (searches for multiple `maven_dependency_file`)
60
+ - File merging functionality for complex projects
61
+ - Comprehensive error handling for file operations
62
+ - Enhanced CLI with format selection
63
+
64
+ ### Changed
65
+ - Improved project structure with organized outputs directory
66
+ - Better separation of concerns between HTML and JSON generation
67
+
68
+ ### Fixed
69
+ - File handling issues with large dependency trees
70
+ - Output format validation and error messages
71
+
72
+ ## [1.0.0] - 2025-07-01
73
+
74
+ ### Added
75
+ - Initial release of mvn-tree-visualizer
76
+ - HTML diagram generation using Mermaid.js
77
+ - CLI interface for processing Maven dependency files
78
+ - Basic error handling and validation
79
+ - Support for Maven dependency tree parsing
80
+ - Interactive HTML output with visual dependency graphs
81
+ - Improved code documentation and readability with type hints
82
+ - Updated README.md with new feature documentation and usage examples
83
+
84
+ ### Fixed
85
+ - Better static type checking support for development tools
86
+
87
+ ## [1.1.0] - 2025-07-08
88
+
89
+ ### Added
90
+ - JSON output format support alongside existing HTML format
91
+ - `--format` CLI argument to choose between HTML and JSON outputs
92
+ - Comprehensive test suite for both output formats
93
+ - GitHub Actions workflow for automated PyPI publishing
94
+
95
+ ### Changed
96
+ - Decoupled output generation logic from core diagram creation
97
+ - Improved code modularity with separate output modules
98
+
99
+ ### Fixed
100
+ - Enhanced project structure and maintainability
101
+
102
+ ## [1.0.0] - Initial Release
103
+
104
+ ### Added
105
+ - HTML diagram generation using Mermaid.js
106
+ - Interactive SVG export functionality
107
+ - File merging from multiple Maven dependency files
108
+ - Basic CLI interface with essential options
109
+ - Project documentation and contribution guidelines
@@ -47,8 +47,48 @@ pytest
47
47
 
48
48
  ### Commit and push
49
49
 
50
+ We use [Conventional Commits](https://www.conventionalcommits.org/) for commit messages to enable automatic versioning and changelog generation.
51
+
52
+ **Commit Message Format:**
53
+ ```
54
+ <type>[optional scope]: <description>
55
+
56
+ [optional body]
57
+
58
+ [optional footer(s)]
59
+ ```
60
+
61
+ **Types:**
62
+ - `feat`: A new feature (triggers minor version bump)
63
+ - `fix`: A bug fix (triggers patch version bump)
64
+ - `docs`: Documentation only changes
65
+ - `style`: Changes that do not affect the meaning of the code
66
+ - `refactor`: A code change that neither fixes a bug nor adds a feature
67
+ - `perf`: A code change that improves performance (triggers patch version bump)
68
+ - `test`: Adding missing tests or correcting existing tests
69
+ - `chore`: Changes to the build process or auxiliary tools
70
+ - `ci`: Changes to CI configuration files and scripts
71
+
72
+ **Examples:**
73
+ ```bash
74
+ feat: add theme support with --theme option
75
+ fix: resolve dependency parsing error with special characters
76
+ docs: update README with new theme examples
77
+ chore: update dependencies to latest versions
78
+ ```
79
+
80
+ **BREAKING CHANGES:**
81
+ For breaking changes, add `!` after the type or include `BREAKING CHANGE:` in the footer:
82
+ ```bash
83
+ feat!: change CLI interface for better usability
84
+ # or
85
+ feat: change CLI interface
86
+
87
+ BREAKING CHANGE: --output-format flag renamed to --format
88
+ ```
89
+
50
90
  ```bash
51
- git commit -m "Your descriptive commit message"
91
+ git commit -m "feat: add your new feature description"
52
92
  git push origin 123-add-a-feature
53
93
  ```
54
94