tree-sitter-analyzer 1.2.5__tar.gz → 1.3.3__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 tree-sitter-analyzer might be problematic. Click here for more details.
- tree_sitter_analyzer-1.3.3/.gitattributes +51 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/CHANGELOG.md +183 -14
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/GITFLOW.md +76 -202
- tree_sitter_analyzer-1.3.3/GITFLOW_ja.md +157 -0
- tree_sitter_analyzer-1.3.3/GITFLOW_zh.md +157 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/PKG-INFO +9 -9
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/README.md +8 -8
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/README_ja.md +7 -7
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/README_zh.md +7 -7
- tree_sitter_analyzer-1.3.3/examples/cache_demo.py +216 -0
- tree_sitter_analyzer-1.3.3/examples/smart_cache_demo.py +126 -0
- tree_sitter_analyzer-1.3.3/examples/total_only_optimization_demo.py +165 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/pyproject.toml +2 -2
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/__init__.py +1 -1
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/mcp/tools/fd_rg_utils.py +30 -7
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/mcp/tools/find_and_grep_tool.py +26 -2
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/mcp/tools/list_files_tool.py +24 -1
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/mcp/tools/search_content_tool.py +165 -7
- tree_sitter_analyzer-1.3.3/tree_sitter_analyzer/mcp/utils/gitignore_detector.py +323 -0
- tree_sitter_analyzer-1.3.3/tree_sitter_analyzer/mcp/utils/search_cache.py +343 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/uv.lock +1 -1
- tree_sitter_analyzer-1.2.5/GITFLOW_ja.md +0 -313
- tree_sitter_analyzer-1.2.5/GITFLOW_zh.md +0 -313
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/.gitignore +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/.kiro/steering/product.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/.kiro/steering/structure.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/.kiro/steering/tech.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/.pre-commit-config.yaml +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/.pre-commit-hooks.yaml +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/AI_COLLABORATION_GUIDE.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/CODE_STYLE_GUIDE.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/CONTRIBUTING.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/DEPLOYMENT_GUIDE.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/LANGUAGE_GUIDELINES.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/LLM_CODING_GUIDELINES.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/MCP_SETUP_DEVELOPERS.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/MCP_SETUP_USERS.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/PROJECT_ROOT_CONFIG.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/PYPI_RELEASE_GUIDE.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/REFACTORING_SUMMARY.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/build_standalone.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/check_quality.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/docs/GITFLOW_BEST_PRACTICES.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/docs/RELEASE_EXECUTION_GUIDE.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/docs/api.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/docs/mcp_fd_rg_design.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/examples/BigService.java +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/examples/BigService.json +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/examples/BigService.summary.json +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/examples/JavaDocTest.java +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/examples/MultiClass.java +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/examples/Sample.java +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/examples/calculate_token_comparison.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/examples/project_root_demo.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/examples/sample.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/examples/security_demo.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/examples/security_integration_demo.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/llm_code_checker.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/pypirc_example.txt +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/pytest.ini +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/scripts/README.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/scripts/gitflow_helper.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/scripts/gitflow_release_automation.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/scripts/sync_version.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/scripts/sync_version_minimal.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/start_mcp_server.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/training/01_onboarding.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/training/02_architecture_map.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/training/03_cli_cheatsheet.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/training/04_mcp_cheatsheet.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/training/05_plugin_tutorial.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/training/06_quality_workflow.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/training/07_troubleshooting.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/training/08_prompt_library.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/training/09_tasks.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/training/10_glossary.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/training/11_takeover_plan.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/training/CLI_COMMAND_CORRECTIONS.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/training/IMPROVEMENT_SUMMARY.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/training/README.md +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/__main__.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/api.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/cli/__init__.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/cli/__main__.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/cli/commands/__init__.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/cli/commands/advanced_command.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/cli/commands/base_command.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/cli/commands/default_command.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/cli/commands/partial_read_command.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/cli/commands/query_command.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/cli/commands/structure_command.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/cli/commands/summary_command.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/cli/commands/table_command.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/cli/info_commands.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/cli_main.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/constants.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/core/__init__.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/core/analysis_engine.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/core/cache_service.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/core/engine.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/core/parser.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/core/query.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/core/query_filter.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/core/query_service.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/encoding_utils.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/exceptions.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/file_handler.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/formatters/__init__.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/formatters/base_formatter.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/formatters/formatter_factory.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/formatters/java_formatter.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/formatters/python_formatter.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/interfaces/__init__.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/interfaces/cli.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/interfaces/cli_adapter.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/interfaces/mcp_adapter.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/interfaces/mcp_server.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/language_detector.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/language_loader.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/languages/__init__.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/languages/java_plugin.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/languages/javascript_plugin.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/languages/python_plugin.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/mcp/__init__.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/mcp/resources/__init__.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/mcp/resources/code_file_resource.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/mcp/resources/project_stats_resource.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/mcp/server.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/mcp/tools/__init__.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/mcp/tools/analyze_scale_tool.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/mcp/tools/analyze_scale_tool_cli_compatible.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/mcp/tools/base_tool.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/mcp/tools/query_tool.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/mcp/tools/read_partial_tool.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/mcp/tools/table_format_tool.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/mcp/tools/universal_analyze_tool.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/mcp/utils/__init__.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/mcp/utils/error_handler.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/mcp/utils/path_resolver.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/models.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/output_manager.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/plugins/__init__.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/plugins/base.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/plugins/manager.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/project_detector.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/queries/__init__.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/queries/java.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/queries/javascript.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/queries/python.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/queries/typescript.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/query_loader.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/security/__init__.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/security/boundary_manager.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/security/regex_checker.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/security/validator.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/table_formatter.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/tree_sitter_analyzer/utils.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/upload_interactive.py +0 -0
- {tree_sitter_analyzer-1.2.5 → tree_sitter_analyzer-1.3.3}/upload_to_pypi.py +0 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Set the default behavior for all files
|
|
2
|
+
* text=auto
|
|
3
|
+
|
|
4
|
+
# Explicitly declare text files you want to always be normalized and converted
|
|
5
|
+
# to native line endings on checkout
|
|
6
|
+
*.py text eol=lf
|
|
7
|
+
*.md text eol=lf
|
|
8
|
+
*.yml text eol=lf
|
|
9
|
+
*.yaml text eol=lf
|
|
10
|
+
*.toml text eol=lf
|
|
11
|
+
*.txt text eol=lf
|
|
12
|
+
*.json text eol=lf
|
|
13
|
+
*.js text eol=lf
|
|
14
|
+
*.ts text eol=lf
|
|
15
|
+
*.html text eol=lf
|
|
16
|
+
*.css text eol=lf
|
|
17
|
+
*.sh text eol=lf
|
|
18
|
+
*.bat text eol=crlf
|
|
19
|
+
|
|
20
|
+
# Declare files that will always have CRLF line endings on checkout
|
|
21
|
+
*.sln text eol=crlf
|
|
22
|
+
|
|
23
|
+
# Denote all files that are truly binary and should not be modified
|
|
24
|
+
*.png binary
|
|
25
|
+
*.jpg binary
|
|
26
|
+
*.jpeg binary
|
|
27
|
+
*.gif binary
|
|
28
|
+
*.ico binary
|
|
29
|
+
*.mov binary
|
|
30
|
+
*.mp4 binary
|
|
31
|
+
*.mp3 binary
|
|
32
|
+
*.flv binary
|
|
33
|
+
*.fla binary
|
|
34
|
+
*.swf binary
|
|
35
|
+
*.gz binary
|
|
36
|
+
*.zip binary
|
|
37
|
+
*.7z binary
|
|
38
|
+
*.ttf binary
|
|
39
|
+
*.eot binary
|
|
40
|
+
*.woff binary
|
|
41
|
+
*.woff2 binary
|
|
42
|
+
*.pyc binary
|
|
43
|
+
*.pdf binary
|
|
44
|
+
*.ez binary
|
|
45
|
+
*.bz2 binary
|
|
46
|
+
*.swp binary
|
|
47
|
+
*.cache binary
|
|
48
|
+
*.so binary
|
|
49
|
+
*.dll binary
|
|
50
|
+
*.dylib binary
|
|
51
|
+
*.exe binary
|
|
@@ -1,22 +1,191 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## [1.
|
|
3
|
+
## [1.3.3] - 2025-01-15
|
|
4
4
|
|
|
5
5
|
### Fixed
|
|
6
|
-
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
6
|
+
- **🔍 MCP Search Tools Gitignore Detection**: Added missing gitignore auto-detection to `find_and_grep_tool` for consistent behavior with other MCP tools
|
|
7
|
+
- **⚙️ FD Command Pattern Handling**: Fixed fd command construction when no pattern is specified to prevent absolute paths being interpreted as patterns
|
|
8
|
+
- **🛠️ List Files Tool Error**: Resolved fd command errors in `list_files_tool` by ensuring '.' pattern is used when no explicit pattern provided
|
|
9
|
+
- **🧪 Test Coverage**: Updated test cases to reflect corrected fd command pattern handling behavior
|
|
9
10
|
|
|
10
11
|
### Technical Details
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
12
|
+
- **Root Cause**: Missing gitignore auto-detection in `find_and_grep_tool` and incorrect fd command pattern handling in `fd_rg_utils.py`
|
|
13
|
+
- **Solution**: Implemented gitignore detector integration and ensured default '.' pattern is always provided to fd command
|
|
14
|
+
- **Impact**: Fixes search failures in projects with `.gitignore` 'code/*' patterns and resolves fd command errors with absolute path interpretation
|
|
15
|
+
- **Affected Tools**: `find_and_grep_tool`, `list_files_tool`, and `search_content_tool` consistency
|
|
14
16
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
This hotfix ensures MCP search tools work correctly across different project configurations and .gitignore patterns.
|
|
18
|
+
|
|
19
|
+
## [1.3.2] - 2025-09-16
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
- **🐛 Critical Cache Format Compatibility Bug**: Fixed a severe bug in the smart caching system where `get_compatible_result` was returning wrong format cached data
|
|
23
|
+
- **Format Validation**: Added `_is_format_compatible` method to prevent `total_only` integer results from being returned for detailed query requests
|
|
24
|
+
- **User Impact**: Resolved the issue where users requesting detailed results after `total_only` queries received integers instead of proper structured data
|
|
25
|
+
- **Backward Compatibility**: Maintained compatibility for dict results with unknown formats while preventing primitive data return bugs
|
|
26
|
+
|
|
27
|
+
### Technical Details
|
|
28
|
+
- **Root Cause**: Direct cache hit was returning cached results without format validation
|
|
29
|
+
- **Solution**: Implemented format compatibility checking before returning cached data
|
|
30
|
+
- **Test Coverage**: Added comprehensive test suite with 6 test cases covering format compatibility scenarios
|
|
31
|
+
- **Bug Discovery**: Issue was identified through real-world usage documented in `roo_task_sep-16-2025_1-18-38-am.md`
|
|
32
|
+
|
|
33
|
+
This hotfix ensures MCP tools return correctly formatted data and prevents cache format mismatches that could break AI-assisted development workflows.
|
|
34
|
+
|
|
35
|
+
## [1.3.1] - 2025-01-15
|
|
36
|
+
|
|
37
|
+
### Added
|
|
38
|
+
- **🧠 Intelligent Cross-Format Cache Optimization**: Revolutionary smart caching system that eliminates duplicate searches across different result formats
|
|
39
|
+
- **🎯 total_only → count_only_matches Optimization**: Solves the specific user pain point of "don't waste double time re-searching when user wants file details after getting total count"
|
|
40
|
+
- **⚡ Smart Result Derivation**: Automatically derives file lists and summaries from cached count data without additional ripgrep executions
|
|
41
|
+
- **🔄 Cross-Format Cache Keys**: Intelligent cache key mapping enables seamless format transitions
|
|
42
|
+
- **📊 Dual Caching Mechanism**: total_only searches now cache both simple totals and detailed file counts simultaneously
|
|
43
|
+
|
|
44
|
+
### Performance Improvements
|
|
45
|
+
- **99.9% faster follow-up queries**: Second queries complete in ~0.001s vs ~14s for cache misses (14,000x improvement)
|
|
46
|
+
- **Zero duplicate executions**: Related search format requests served entirely from cache derivation
|
|
47
|
+
- **Perfect for LLM workflows**: Optimized for "total → details" analysis patterns common in AI-assisted development
|
|
48
|
+
- **Memory efficient derivation**: File lists and summaries generated from existing count data without additional storage
|
|
49
|
+
|
|
50
|
+
### Technical Implementation
|
|
51
|
+
- **Enhanced SearchCache**: Added `get_compatible_result()` method for intelligent cross-format result derivation
|
|
52
|
+
- **Smart Cache Logic**: `_create_count_only_cache_key()` enables cross-format cache key generation
|
|
53
|
+
- **Result Format Detection**: `_determine_requested_format()` automatically identifies output format requirements
|
|
54
|
+
- **Comprehensive Derivation**: `create_file_summary_from_count_data()` and `extract_file_list_from_count_data()` utility functions
|
|
55
|
+
|
|
56
|
+
### New Files & Demonstrations
|
|
57
|
+
- **Core Implementation**: Enhanced `search_cache.py` with cross-format optimization logic
|
|
58
|
+
- **Tool Integration**: Updated `search_content_tool.py` with dual caching mechanism
|
|
59
|
+
- **Utility Functions**: Extended `fd_rg_utils.py` with result derivation capabilities
|
|
60
|
+
- **Comprehensive Testing**: `test_smart_cache_optimization.py` with 11 test cases covering all optimization scenarios
|
|
61
|
+
- **Performance Demos**: `smart_cache_demo.py` and `total_only_optimization_demo.py` showcasing real-world improvements
|
|
62
|
+
|
|
63
|
+
### User Experience Improvements
|
|
64
|
+
- **Transparent Optimization**: Users get performance benefits without changing their usage patterns
|
|
65
|
+
- **Intelligent Workflows**: "Get total count → Get file distribution" workflows now complete almost instantly
|
|
66
|
+
- **Cache Hit Indicators**: Results include `cache_hit` and `cache_derived` flags for transparency
|
|
67
|
+
- **Real-world Validation**: Tested with actual project codebases showing consistent 99.9%+ performance improvements
|
|
68
|
+
|
|
69
|
+
### Developer Benefits
|
|
70
|
+
- **Type-Safe Implementation**: Full TypeScript-style type annotations for better IDE support
|
|
71
|
+
- **Comprehensive Documentation**: Detailed docstrings and examples for all new functionality
|
|
72
|
+
- **Robust Testing**: Mock-based tests ensure CI stability across different environments
|
|
73
|
+
- **Performance Monitoring**: Built-in cache statistics and performance tracking
|
|
74
|
+
|
|
75
|
+
This release addresses the critical performance bottleneck identified by users: avoiding redundant searches when transitioning from summary to detailed analysis. The intelligent caching system represents a fundamental advancement in search result optimization for code analysis workflows.
|
|
76
|
+
|
|
77
|
+
## [1.3.0] - 2025-01-15
|
|
78
|
+
|
|
79
|
+
### Added
|
|
80
|
+
- **Phase 2 Cache System**: Implemented comprehensive search result caching for significant performance improvements
|
|
81
|
+
- **SearchCache Module**: Thread-safe in-memory cache with TTL and LRU eviction (`tree_sitter_analyzer/mcp/utils/search_cache.py`)
|
|
82
|
+
- **Cache Integration**: Integrated caching into `search_content` MCP tool for automatic performance optimization
|
|
83
|
+
- **Performance Monitoring**: Added comprehensive cache statistics tracking and performance validation
|
|
84
|
+
- **Cache Demo**: Interactive demonstration script showing 200-400x performance improvements (`examples/cache_demo.py`)
|
|
85
|
+
|
|
86
|
+
### Performance Improvements
|
|
87
|
+
- **99.8% faster repeated searches**: Cache hits complete in ~0.001s vs ~0.4s for cache misses
|
|
88
|
+
- **200-400x speed improvements**: Demonstrated with real-world search operations
|
|
89
|
+
- **Automatic optimization**: Zero-configuration caching with smart defaults
|
|
90
|
+
- **Memory efficient**: LRU eviction and configurable cache size limits
|
|
91
|
+
|
|
92
|
+
### Technical Details
|
|
93
|
+
- **Thread-safe implementation**: Uses `threading.RLock()` for concurrent access
|
|
94
|
+
- **Configurable TTL**: Default 1-hour cache lifetime with customizable settings
|
|
95
|
+
- **Smart cache keys**: Deterministic key generation based on search parameters
|
|
96
|
+
- **Path normalization**: Consistent caching across different path representations
|
|
97
|
+
- **Comprehensive testing**: 19 test cases covering functionality and performance validation
|
|
98
|
+
|
|
99
|
+
### Documentation
|
|
100
|
+
- **Cache Feature Summary**: Complete implementation and performance documentation
|
|
101
|
+
- **Usage Examples**: Clear examples for basic usage and advanced configuration
|
|
102
|
+
- **Performance Benchmarks**: Real-world performance data and optimization benefits
|
|
103
|
+
|
|
104
|
+
## [1.2.5] - 2025-09-15
|
|
105
|
+
|
|
106
|
+
### 🐛 Bug Fixes
|
|
107
|
+
|
|
108
|
+
#### Fixed list_files tool Java file detection issue
|
|
109
|
+
- **Problem**: The `list_files` MCP tool failed to detect Java files when using root path "." due to command line argument conflicts in the `fd` command construction
|
|
110
|
+
- **Root Cause**: Conflicting pattern and path arguments in `build_fd_command` function
|
|
111
|
+
- **Solution**: Modified `fd_rg_utils.py` to use `--search-path` option for root directories and only append pattern when explicitly provided
|
|
112
|
+
- **Impact**: Significantly improved cross-platform compatibility, especially for Windows environments
|
|
113
|
+
|
|
114
|
+
### 🔧 Technical Changes
|
|
115
|
+
- **File**: `tree_sitter_analyzer/mcp/tools/fd_rg_utils.py`
|
|
116
|
+
- Replaced positional path arguments with `--search-path` option
|
|
117
|
+
- Removed automatic "." pattern addition that caused conflicts
|
|
118
|
+
- Enhanced command construction logic for better reliability
|
|
119
|
+
- **Tests**: Updated `tests/test_mcp_fd_rg_tools.py`
|
|
120
|
+
- Modified test assertions to match new `fd` command behavior
|
|
121
|
+
- Ensured test coverage for both pattern and no-pattern scenarios
|
|
122
|
+
|
|
123
|
+
### 📚 Documentation Updates
|
|
124
|
+
- **Enhanced GitFlow Documentation**: Added comprehensive AI-assisted development workflow
|
|
125
|
+
- **Multi-language Sync**: Updated English, Chinese, and Japanese versions of GitFlow documentation
|
|
126
|
+
- **Process Clarification**: Clarified PyPI deployment process and manual steps
|
|
127
|
+
|
|
128
|
+
### 🚀 Deployment
|
|
129
|
+
- **PyPI**: Successfully deployed to PyPI as version 1.2.5
|
|
130
|
+
- **Compatibility**: Tested and verified on Windows environments
|
|
131
|
+
- **CI/CD**: All automated workflows executed successfully
|
|
132
|
+
|
|
133
|
+
### 📊 Testing
|
|
134
|
+
- **Test Suite**: All 156 tests passing
|
|
135
|
+
- **Coverage**: Maintained high test coverage
|
|
136
|
+
- **Cross-platform**: Verified Windows compatibility
|
|
137
|
+
|
|
138
|
+
## [1.2.4] - 2025-09-15
|
|
139
|
+
|
|
140
|
+
### 🚀 Major Features
|
|
141
|
+
|
|
142
|
+
#### SMART Analysis Workflow
|
|
143
|
+
- **Complete S-M-A-R-T workflow**: Comprehensive workflow replacing the previous 3-step process
|
|
144
|
+
- **S (Setup)**: Project initialization and prerequisite verification
|
|
145
|
+
- **M (Map)**: File discovery and structure mapping
|
|
146
|
+
- **A (Analyze)**: Code analysis and element extraction
|
|
147
|
+
- **R (Retrieve)**: Content search and pattern matching
|
|
148
|
+
- **T (Trace)**: Dependency tracking and relationship analysis
|
|
149
|
+
|
|
150
|
+
#### Advanced MCP Tools
|
|
151
|
+
- **ListFilesTool**: Lightning-fast file discovery powered by `fd`
|
|
152
|
+
- **SearchContentTool**: High-performance text search powered by `ripgrep`
|
|
153
|
+
- **FindAndGrepTool**: Combined file discovery and content analysis
|
|
154
|
+
- **Enterprise-grade Testing**: 50+ comprehensive test cases ensuring reliability and stability
|
|
155
|
+
- **Multi-platform Support**: Complete installation guides for Windows, macOS, and Linux
|
|
156
|
+
|
|
157
|
+
### 📋 Prerequisites & Installation
|
|
158
|
+
- **fd and ripgrep**: Complete installation instructions for all platforms
|
|
159
|
+
- **Windows Optimization**: winget commands and PowerShell execution policies
|
|
160
|
+
- **Cross-platform**: Support for macOS (Homebrew), Linux (apt/dnf/pacman), Windows (winget/choco/scoop)
|
|
161
|
+
- **Verification Steps**: Commands to verify successful installation
|
|
162
|
+
|
|
163
|
+
### 🔧 Quality Assurance
|
|
164
|
+
- **Test Coverage**: 1564 tests passed, 74.97% coverage
|
|
165
|
+
- **MCP Tools Coverage**: 93.04% (Excellent)
|
|
166
|
+
- **Real-world Validation**: All examples tested and verified with actual tool execution
|
|
167
|
+
- **Enterprise-grade Reliability**: Comprehensive error handling and validation
|
|
168
|
+
|
|
169
|
+
### 📚 Documentation & Localization
|
|
170
|
+
- **Complete Translation**: Japanese and Chinese READMEs fully updated
|
|
171
|
+
- **SMART Workflow**: Detailed step-by-step guides in all three languages
|
|
172
|
+
- **Prerequisites Documentation**: Comprehensive installation guides
|
|
173
|
+
- **Verified Examples**: All MCP tool examples tested and validated
|
|
174
|
+
|
|
175
|
+
### 🎯 Sponsor Acknowledgment
|
|
176
|
+
Special thanks to **@o93** for sponsoring this comprehensive MCP tools enhancement, enabling the early release of advanced file search and content analysis features.
|
|
177
|
+
|
|
178
|
+
### 🛠️ Technical Improvements
|
|
179
|
+
- **Advanced File Search**: Powered by fd for lightning-fast file discovery
|
|
180
|
+
- **Intelligent Content Search**: Powered by ripgrep for high-performance text search
|
|
181
|
+
- **Combined Tools**: FindAndGrepTool for comprehensive file discovery and content analysis
|
|
182
|
+
- **Token Optimization**: Multiple output formats optimized for AI assistant interactions
|
|
183
|
+
|
|
184
|
+
### ⚡ Performance & Reliability
|
|
185
|
+
- **Built-in Timeouts**: Responsive operation with configurable time limits
|
|
186
|
+
- **Result Limits**: Prevents overwhelming output with smart result limiting
|
|
187
|
+
- **Error Resilience**: Comprehensive error handling and graceful degradation
|
|
188
|
+
- **Cross-platform Testing**: Validated on Windows, macOS, and Linux environments
|
|
20
189
|
|
|
21
190
|
## [1.2.3] - 2025-08-27
|
|
22
191
|
|
|
@@ -395,7 +564,7 @@
|
|
|
395
564
|
|
|
396
565
|
##### Test Coverage
|
|
397
566
|
- **QueryService Tests**: 13 comprehensive unit tests
|
|
398
|
-
- **QueryFilter Tests**: 29 detailed filtering tests
|
|
567
|
+
- **QueryFilter Tests**: 29 detailed filtering tests
|
|
399
568
|
- **CLI Integration Tests**: 11 real-world usage scenarios
|
|
400
569
|
- **MCP Tool Tests**: 9 tool definition and functionality tests
|
|
401
570
|
|
|
@@ -1257,7 +1426,7 @@ If you're using the MCP server, update your tool calls:
|
|
|
1257
1426
|
**After:**
|
|
1258
1427
|
```json
|
|
1259
1428
|
{
|
|
1260
|
-
"tool": "analyze_code_structure",
|
|
1429
|
+
"tool": "analyze_code_structure",
|
|
1261
1430
|
"arguments": { ... }
|
|
1262
1431
|
}
|
|
1263
1432
|
```
|
|
@@ -9,30 +9,30 @@ gitGraph
|
|
|
9
9
|
commit id: "Initial commit"
|
|
10
10
|
branch develop
|
|
11
11
|
commit id: "dev-1"
|
|
12
|
-
|
|
12
|
+
|
|
13
13
|
branch feature/my-feature
|
|
14
14
|
commit id: "feat-1"
|
|
15
15
|
commit id: "feat-2"
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
checkout develop
|
|
18
18
|
merge feature/my-feature id: "merge-feat"
|
|
19
|
-
|
|
19
|
+
|
|
20
20
|
branch release/v1.0.0
|
|
21
21
|
commit id: "release-prep"
|
|
22
|
-
|
|
22
|
+
|
|
23
23
|
checkout main
|
|
24
24
|
merge release/v1.0.0 tag: "v1.0.0"
|
|
25
|
-
|
|
25
|
+
|
|
26
26
|
checkout develop
|
|
27
27
|
merge release/v1.0.0
|
|
28
|
-
|
|
28
|
+
|
|
29
29
|
checkout main
|
|
30
30
|
branch hotfix/critical-fix
|
|
31
31
|
commit id: "fix-bug"
|
|
32
|
-
|
|
32
|
+
|
|
33
33
|
checkout main
|
|
34
34
|
merge hotfix/critical-fix tag: "v1.0.1"
|
|
35
|
-
|
|
35
|
+
|
|
36
36
|
checkout develop
|
|
37
37
|
merge hotfix/critical-fix
|
|
38
38
|
```
|
|
@@ -108,7 +108,18 @@ For manual releases:
|
|
|
108
108
|
|
|
109
109
|
3. **Update documentation**:
|
|
110
110
|
```bash
|
|
111
|
-
|
|
111
|
+
# Update README.md with new version, test counts, and coverage:
|
|
112
|
+
# - Version badges ([])
|
|
113
|
+
# - Test count badges ([])
|
|
114
|
+
# - Coverage badges ([])
|
|
115
|
+
# - "Latest Quality Achievements" section version references
|
|
116
|
+
# - Test environment section version references
|
|
117
|
+
# - All other version mentions throughout the document
|
|
118
|
+
# Update README_zh.md and README_ja.md translations with same changes
|
|
119
|
+
# Update GITFLOW_zh.md and GITFLOW_ja.md if workflow changes were made
|
|
120
|
+
# Update CHANGELOG.md with release details
|
|
121
|
+
# Update version references throughout all documentation files
|
|
122
|
+
# Note: scripts/improved_readme_updater.py may not exist, do manual updates
|
|
112
123
|
```
|
|
113
124
|
|
|
114
125
|
4. **Commit changes**:
|
|
@@ -123,7 +134,7 @@ For manual releases:
|
|
|
123
134
|
git merge release/v1.0.0
|
|
124
135
|
git tag -a v1.0.0 -m "Release v1.0.0"
|
|
125
136
|
git push origin main --tags
|
|
126
|
-
|
|
137
|
+
|
|
127
138
|
git checkout develop
|
|
128
139
|
git merge release/v1.0.0
|
|
129
140
|
git push origin develop
|
|
@@ -153,21 +164,39 @@ For manual releases:
|
|
|
153
164
|
3. **Update version** for hotfix:
|
|
154
165
|
```bash
|
|
155
166
|
# Update pyproject.toml version (e.g., 1.0.0 -> 1.0.1)
|
|
167
|
+
# Update server_version in pyproject.toml
|
|
168
|
+
# Sync version to __init__.py
|
|
169
|
+
uv run python scripts/sync_version_minimal.py
|
|
156
170
|
```
|
|
157
171
|
|
|
158
|
-
4. **
|
|
172
|
+
4. **Update documentation**:
|
|
173
|
+
```bash
|
|
174
|
+
# Update CHANGELOG.md with hotfix details
|
|
175
|
+
# Update README.md with new version, test counts, and coverage:
|
|
176
|
+
# - Version badges ([])
|
|
177
|
+
# - Test count badges ([])
|
|
178
|
+
# - Coverage badges ([])
|
|
179
|
+
# - "Latest Quality Achievements" section version references
|
|
180
|
+
# - Test environment section version references
|
|
181
|
+
# - All other version mentions throughout the document
|
|
182
|
+
# Update README_zh.md and README_ja.md translations with same changes
|
|
183
|
+
# Update GITFLOW_zh.md and GITFLOW_ja.md if workflow changes were made
|
|
184
|
+
# Update version references throughout all documentation files
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
5. **Merge to main and develop**:
|
|
159
188
|
```bash
|
|
160
189
|
git checkout main
|
|
161
190
|
git merge hotfix/critical-bug-fix
|
|
162
191
|
git tag -a v1.0.1 -m "Hotfix v1.0.1"
|
|
163
192
|
git push origin main --tags
|
|
164
|
-
|
|
193
|
+
|
|
165
194
|
git checkout develop
|
|
166
195
|
git merge hotfix/critical-bug-fix
|
|
167
196
|
git push origin develop
|
|
168
197
|
```
|
|
169
198
|
|
|
170
|
-
|
|
199
|
+
6. **Delete hotfix branch**:
|
|
171
200
|
```bash
|
|
172
201
|
git branch -d hotfix/critical-bug-fix
|
|
173
202
|
git push origin --delete hotfix/critical-bug-fix
|
|
@@ -210,6 +239,40 @@ uv run python scripts/automated_release.py
|
|
|
210
239
|
|
|
211
240
|
## Best Practices
|
|
212
241
|
|
|
242
|
+
### Line Ending Configuration
|
|
243
|
+
|
|
244
|
+
To prevent mixed line ending errors in pre-commit hooks:
|
|
245
|
+
|
|
246
|
+
1. **Ensure `.gitattributes` exists** with proper configuration:
|
|
247
|
+
```
|
|
248
|
+
* text=auto
|
|
249
|
+
*.py text eol=lf
|
|
250
|
+
*.md text eol=lf
|
|
251
|
+
*.yml text eol=lf
|
|
252
|
+
*.toml text eol=lf
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
2. **Configure Git locally**:
|
|
256
|
+
```bash
|
|
257
|
+
git config core.autocrlf input
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
3. **Configure your editor** (VS Code example in `.vscode/settings.json`):
|
|
261
|
+
```json
|
|
262
|
+
{
|
|
263
|
+
"files.eol": "\n",
|
|
264
|
+
"files.insertFinalNewline": true,
|
|
265
|
+
"files.trimTrailingWhitespace": true
|
|
266
|
+
}
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
4. **If you encounter mixed line ending errors**:
|
|
270
|
+
```bash
|
|
271
|
+
# Re-normalize all files
|
|
272
|
+
git rm --cached -r . && git reset --hard HEAD
|
|
273
|
+
git add . && git commit -m "Normalize line endings"
|
|
274
|
+
```
|
|
275
|
+
|
|
213
276
|
### Commit Messages
|
|
214
277
|
|
|
215
278
|
Use conventional commit format:
|
|
@@ -253,195 +316,6 @@ Before merging to `develop`:
|
|
|
253
316
|
- **Automatic versioning**: Managed by automated release process
|
|
254
317
|
- **Version consistency**: All files updated together
|
|
255
318
|
|
|
256
|
-
## 🤖 AI-Assisted Development Workflow
|
|
257
|
-
|
|
258
|
-
### Complete Bug Fix & Release Automation
|
|
259
|
-
|
|
260
|
-
This section provides a comprehensive workflow for AI assistants to handle bug fixes, version updates, and releases with minimal human intervention.
|
|
261
|
-
|
|
262
|
-
#### 1. **Bug Fix Workflow**
|
|
263
|
-
|
|
264
|
-
When fixing bugs, follow this automated sequence:
|
|
265
|
-
|
|
266
|
-
```bash
|
|
267
|
-
# 1. Check current branch and status
|
|
268
|
-
git status
|
|
269
|
-
git branch -v
|
|
270
|
-
|
|
271
|
-
# 2. Create feature branch from develop
|
|
272
|
-
git checkout develop
|
|
273
|
-
git pull origin develop
|
|
274
|
-
git checkout -b feature/fix-[bug-description]
|
|
275
|
-
|
|
276
|
-
# 3. Fix the bug (already completed in this session)
|
|
277
|
-
# - Edit the problematic files
|
|
278
|
-
# - Test the fix locally
|
|
279
|
-
|
|
280
|
-
# 4. Run comprehensive quality checks
|
|
281
|
-
uv run pytest tests/ -v
|
|
282
|
-
uv run python check_quality.py --new-code-only
|
|
283
|
-
uv run python llm_code_checker.py --check-all
|
|
284
|
-
|
|
285
|
-
# 5. Update version number (automatic patch increment)
|
|
286
|
-
python -c "
|
|
287
|
-
import re
|
|
288
|
-
with open('pyproject.toml', 'r') as f:
|
|
289
|
-
content = f.read()
|
|
290
|
-
current = re.search(r'version = \"(\d+)\.(\d+)\.(\d+)\"', content)
|
|
291
|
-
if current:
|
|
292
|
-
major, minor, patch = map(int, current.groups())
|
|
293
|
-
new_version = f'{major}.{minor}.{patch + 1}'
|
|
294
|
-
new_content = re.sub(r'version = \"(\d+)\.(\d+)\.(\d+)\"', f'version = \"{new_version}\"', content)
|
|
295
|
-
with open('pyproject.toml', 'w') as f:
|
|
296
|
-
f.write(new_content)
|
|
297
|
-
print(f'Version updated to {new_version}')
|
|
298
|
-
"
|
|
299
|
-
|
|
300
|
-
# 6. Update CHANGELOG.md
|
|
301
|
-
echo "
|
|
302
|
-
## [$(python -c "import re; content=open('pyproject.toml').read(); print(re.search(r'version = \"([^\"]+)\"', content).group(1))")] - $(date +%Y-%m-%d)
|
|
303
|
-
|
|
304
|
-
### Fixed
|
|
305
|
-
- Fixed MCP list_files tool failing to detect Java files in specific directories
|
|
306
|
-
- Resolved fd command parameter ordering issue in Windows environment
|
|
307
|
-
- Improved --search-path parameter usage for better cross-platform compatibility
|
|
308
|
-
|
|
309
|
-
### Technical Details
|
|
310
|
-
- Modified \`build_fd_command\` in \`fd_rg_utils.py\` to use \`--search-path\` instead of positional arguments
|
|
311
|
-
- Eliminated automatic \`\".\"\` pattern injection that caused command conflicts
|
|
312
|
-
- Enhanced Windows environment compatibility for file discovery operations
|
|
313
|
-
" >> CHANGELOG.md
|
|
314
|
-
|
|
315
|
-
# 7. Update README statistics (if test count changed)
|
|
316
|
-
uv run python scripts/improved_readme_updater.py
|
|
317
|
-
|
|
318
|
-
# 8. Commit all changes
|
|
319
|
-
git add .
|
|
320
|
-
git commit -m "fix: Resolve MCP list_files tool Java file detection issue
|
|
321
|
-
|
|
322
|
-
- Fix fd command parameter ordering in fd_rg_utils.py
|
|
323
|
-
- Use --search-path for better cross-platform compatibility
|
|
324
|
-
- Update version to $(python -c "import re; content=open('pyproject.toml').read(); print(re.search(r'version = \"([^\"]+)\"', content).group(1))")
|
|
325
|
-
- Update CHANGELOG.md and README statistics"
|
|
326
|
-
|
|
327
|
-
# 9. Push feature branch
|
|
328
|
-
git push origin feature/fix-[bug-description]
|
|
329
|
-
```
|
|
330
|
-
|
|
331
|
-
#### 2. **Automated Release Trigger**
|
|
332
|
-
|
|
333
|
-
After bug fix is committed:
|
|
334
|
-
|
|
335
|
-
```bash
|
|
336
|
-
# 10. Merge to develop (triggers automated PR creation)
|
|
337
|
-
git checkout develop
|
|
338
|
-
git pull origin develop
|
|
339
|
-
git merge feature/fix-[bug-description]
|
|
340
|
-
git push origin develop
|
|
341
|
-
|
|
342
|
-
# 11. Clean up feature branch
|
|
343
|
-
git branch -d feature/fix-[bug-description]
|
|
344
|
-
git push origin --delete feature/fix-[bug-description]
|
|
345
|
-
```
|
|
346
|
-
|
|
347
|
-
**Note**: Pushing to `develop` triggers the `develop-automation.yml` workflow which:
|
|
348
|
-
1. Runs all tests and quality checks
|
|
349
|
-
2. Builds the package
|
|
350
|
-
3. Creates an automated PR from develop to main
|
|
351
|
-
4. **Does NOT deploy to PyPI** (PyPI deployment happens only on release/hotfix branches)
|
|
352
|
-
|
|
353
|
-
#### 3. **Actual Release Process**
|
|
354
|
-
|
|
355
|
-
For PyPI deployment, you need to create a release branch:
|
|
356
|
-
|
|
357
|
-
```bash
|
|
358
|
-
# Create release branch for PyPI deployment
|
|
359
|
-
git checkout develop
|
|
360
|
-
git pull origin develop
|
|
361
|
-
git checkout -b release/v[new-version]
|
|
362
|
-
git push origin release/v[new-version]
|
|
363
|
-
```
|
|
364
|
-
|
|
365
|
-
This triggers `release-automation.yml` which:
|
|
366
|
-
- ✅ **Runs comprehensive tests**
|
|
367
|
-
- ✅ **Builds and validates package**
|
|
368
|
-
- ✅ **Deploys to PyPI automatically**
|
|
369
|
-
- ✅ **Creates release-to-main PR**
|
|
370
|
-
|
|
371
|
-
#### 4. **Post-Release Verification**
|
|
372
|
-
|
|
373
|
-
After release branch is created, the automated system will handle:
|
|
374
|
-
|
|
375
|
-
- ✅ **PyPI Deployment**: Package automatically published from release branch
|
|
376
|
-
- ✅ **GitHub PR Creation**: Automated PR from release to main
|
|
377
|
-
- ✅ **Quality Assurance**: All tests and builds verified
|
|
378
|
-
- ⚠️ **Manual Step Required**: README updates need to be done manually
|
|
379
|
-
|
|
380
|
-
Verify the release:
|
|
381
|
-
|
|
382
|
-
```bash
|
|
383
|
-
# Check PyPI deployment
|
|
384
|
-
pip index versions tree-sitter-analyzer
|
|
385
|
-
|
|
386
|
-
# Verify GitHub release
|
|
387
|
-
gh release list
|
|
388
|
-
|
|
389
|
-
# Check README updates
|
|
390
|
-
git log --oneline -5
|
|
391
|
-
```
|
|
392
|
-
|
|
393
|
-
#### 5. **AI Assistant Checklist**
|
|
394
|
-
|
|
395
|
-
When fixing bugs, AI assistants should automatically:
|
|
396
|
-
|
|
397
|
-
- [ ] **Identify Root Cause**: Analyze the technical issue thoroughly
|
|
398
|
-
- [ ] **Fix Implementation**: Apply the correct technical solution
|
|
399
|
-
- [ ] **Version Increment**: Automatically bump patch version in pyproject.toml
|
|
400
|
-
- [ ] **Update CHANGELOG**: Add detailed fix description with technical details
|
|
401
|
-
- [ ] **Quality Checks**: Run all tests and linting locally
|
|
402
|
-
- [ ] **Commit & Push**: Use conventional commit messages
|
|
403
|
-
- [ ] **Merge to Develop**: Triggers automated testing and PR creation
|
|
404
|
-
- [ ] **Create Release Branch**: For PyPI deployment (release/v[version])
|
|
405
|
-
- [ ] **Manual README Update**: Update statistics if test count changed (not automated)
|
|
406
|
-
- [ ] **Verify PyPI Deployment**: Check package publication after release branch
|
|
407
|
-
|
|
408
|
-
#### 6. **Multi-language Documentation Sync**
|
|
409
|
-
|
|
410
|
-
When updating GitFlow documentation, ensure all language versions are synchronized:
|
|
411
|
-
|
|
412
|
-
```bash
|
|
413
|
-
# Update all GitFlow documents
|
|
414
|
-
# 1. GITFLOW.md (English - primary)
|
|
415
|
-
# 2. GITFLOW_zh.md (Chinese)
|
|
416
|
-
# 3. GITFLOW_ja.md (Japanese)
|
|
417
|
-
|
|
418
|
-
# Verify consistency
|
|
419
|
-
diff -u GITFLOW.md GITFLOW_zh.md | head -20
|
|
420
|
-
diff -u GITFLOW.md GITFLOW_ja.md | head -20
|
|
421
|
-
```
|
|
422
|
-
|
|
423
|
-
#### 7. **Emergency Hotfix Protocol**
|
|
424
|
-
|
|
425
|
-
For critical production issues:
|
|
426
|
-
|
|
427
|
-
```bash
|
|
428
|
-
# 1. Create hotfix from main
|
|
429
|
-
git checkout main
|
|
430
|
-
git pull origin main
|
|
431
|
-
git checkout -b hotfix/critical-[issue]
|
|
432
|
-
|
|
433
|
-
# 2. Apply minimal fix
|
|
434
|
-
# 3. Update version (patch increment)
|
|
435
|
-
# 4. Update CHANGELOG
|
|
436
|
-
# 5. Commit with hotfix message
|
|
437
|
-
# 6. Merge to both main and develop
|
|
438
|
-
# 7. Tag and push
|
|
439
|
-
|
|
440
|
-
# Automated PyPI deployment will trigger immediately
|
|
441
|
-
```
|
|
442
|
-
|
|
443
|
-
This workflow ensures consistent, high-quality releases with minimal manual intervention while maintaining full traceability and documentation.
|
|
444
|
-
|
|
445
319
|
## CI/CD Integration
|
|
446
320
|
|
|
447
321
|
### GitHub Actions Workflows
|