tunacode-cli 0.0.76.4__tar.gz → 0.0.76.9__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 tunacode-cli might be problematic. Click here for more details.

Files changed (430) hide show
  1. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/delta_summaries/behavior_changes.json +53 -5
  2. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/memory_anchors/anchors.json +49 -4
  3. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/metadata/file_classifications.json +0 -10
  4. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/AGENTS.md +0 -2
  5. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/CLAUDE.md +0 -2
  6. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/PKG-INFO +1 -1
  7. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/TODO.md +7 -7
  8. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/changelog/CHANGELOG.md +19 -4
  9. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/development/hatch-build-system.md +0 -1
  10. tunacode_cli-0.0.76.9/memory-bank/plan/2025-09-24_cli_prompt_toolkit_fuzzy_plan.md +89 -0
  11. tunacode_cli-0.0.76.9/memory-bank/research/2025-09-24_fuzzy_logic_implementation_analysis.md +96 -0
  12. tunacode_cli-0.0.76.9/plan-models.md +60 -0
  13. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/pyproject.toml +2 -2
  14. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/commands/registry.py +2 -7
  15. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/main.py +1 -1
  16. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/constants.py +1 -1
  17. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/ui/completers.py +172 -39
  18. tunacode_cli-0.0.76.9/src/tunacode/ui/path_heuristics.py +89 -0
  19. tunacode_cli-0.0.76.9/tests/characterization/test_cli_fuzzy_matching.py +60 -0
  20. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/conftest.py +8 -0
  21. tunacode_cli-0.0.76.4/.claude/patterns/coding_patterns.md +0 -12
  22. tunacode_cli-0.0.76.4/llm-agent-tools/knowledge_base/README.md +0 -88
  23. tunacode_cli-0.0.76.4/llm-agent-tools/knowledge_base/README.md:Zone.Identifier +0 -0
  24. tunacode_cli-0.0.76.4/llm-agent-tools/knowledge_base/tools/anchor_drop.py +0 -104
  25. tunacode_cli-0.0.76.4/llm-agent-tools/knowledge_base/tools/anchor_drop.py:Zone.Identifier +0 -0
  26. tunacode_cli-0.0.76.4/memory-bank/research/2025-09-22_12-01-06_cli_fuzzy_logic_analysis.md +0 -51
  27. tunacode_cli-0.0.76.4/src/tunacode/utils/fuzzy_utils.py +0 -33
  28. tunacode_cli-0.0.76.4/tests/characterization/test_cli_fuzzy_matching.py +0 -19
  29. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/README.md +0 -0
  30. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/debug_history/2025-09-21-rag-search-hyphen-gotcha.md +0 -0
  31. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/debug_history/debug_sessions.json +0 -0
  32. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/delta_summaries/2025-01-05-baseline.yml +0 -0
  33. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/delta_summaries/2025-09-21-models_registry-pydantic-conversion.md +0 -0
  34. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/delta_summaries/2025-09-21-models_registry-validation-tests.md +0 -0
  35. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/delta_summaries/2025-09-21-test-update-model-command-characterization.md +0 -0
  36. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/delta_summaries/api_change_logs.json +0 -0
  37. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/delta_summaries/fix-text-alignment-layout-task3.md +0 -0
  38. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/delta_summaries/reasoning_logs.json +0 -0
  39. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/delta_summaries/task4_ui_formatting_fix.md +0 -0
  40. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/delta_summaries/v0.0.53_to_v0.0.54.diff +0 -0
  41. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/development/always-on-display-implementation.md +0 -0
  42. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/development/cli-json-recovery-incident.md +0 -0
  43. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/development/directory-caching-optimization.md +0 -0
  44. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/development/esc-investigation/ESC_KEY_INVESTIGATION.md +0 -0
  45. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/development/esc-investigation/ESC_KEY_STREAMING_ANALYSIS.md +0 -0
  46. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/development/hatch-commands.md +0 -0
  47. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/development/model-updates-2025.md +0 -0
  48. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/development/onboarding-improvements.md +0 -0
  49. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/development/openai_tool_calling_evaluation.md +0 -0
  50. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/development/phase5-prompt-injection-system.md +0 -0
  51. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/development/slash-commands.md +0 -0
  52. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/development/uv-hatch-setup.md +0 -0
  53. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/development/uv-installer-updates.md +0 -0
  54. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/development/version-management.md +0 -0
  55. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/docs_model_friendly/component_purpose.md +0 -0
  56. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/docs_model_friendly/component_relationships.md +0 -0
  57. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/docs_model_friendly/rag_modules_overview.md +0 -0
  58. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/kv/github-actions-release-fix.json +0 -0
  59. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/metadata/components.yml +0 -0
  60. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/metadata/hotspots.txt +0 -0
  61. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/patterns/canonical_patterns/backward_compatibility_refactor.md +0 -0
  62. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/patterns/json_retry_implementation.md +0 -0
  63. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/qa/context_logs/latest_session.txt +0 -0
  64. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/qa/context_logs/main-agent-integration-20250917-123100/commits.txt +0 -0
  65. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/qa/context_logs/main-agent-integration-20250917-123100/diffstat.txt +0 -0
  66. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/qa/context_logs/main-agent-integration-20250917-123100/files.json +0 -0
  67. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/qa/context_logs/main-agent-integration-20250917-123100/hunks.txt +0 -0
  68. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/qa/context_logs/main-agent-integration-20250917-141518/commits.txt +0 -0
  69. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/qa/context_logs/main-agent-integration-20250917-141518/diffstat.txt +0 -0
  70. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/qa/context_logs/main-agent-integration-20250917-141518/files.json +0 -0
  71. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/qa/context_logs/main-agent-integration-20250917-141518/hunks.txt +0 -0
  72. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/qa/context_logs/react-tool-session-20250120-000002/summary.md +0 -0
  73. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/qa/context_logs/smart-git-20250917-122934/commits.txt +0 -0
  74. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/qa/context_logs/smart-git-20250917-122934/diffstat.txt +0 -0
  75. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/qa/context_logs/smart-git-20250917-122934/files.json +0 -0
  76. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/qa/fix-agent-errors.yml +0 -0
  77. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/qa/fix-publish-script.yml +0 -0
  78. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/qa/fix-runtime-warnings.yml +0 -0
  79. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/qa/reasoning_docs/main-agent-integration-20250917-123100.md +0 -0
  80. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/qa/reasoning_docs/main-agent-integration-20250917-141518.md +0 -0
  81. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/qa/reasoning_docs/smart-git-20250917-122934.md +0 -0
  82. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/semantic_index/function_call_graphs.json +0 -0
  83. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/semantic_index/intent_mappings.json +0 -0
  84. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.claude/semantic_index/type_relationships.json +0 -0
  85. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.github/pull_request_template.md +0 -0
  86. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.github/scripts/check_file_size.py +0 -0
  87. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.github/workflows/lint.yml +0 -0
  88. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.github/workflows/publish-release-v2.yml +0 -0
  89. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.gitignore +0 -0
  90. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/.pre-commit-config.yaml +0 -0
  91. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/LICENSE +0 -0
  92. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/MANIFEST.in +0 -0
  93. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/README.md +0 -0
  94. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/assets/tunacode_example.png +0 -0
  95. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/docs/reports/subagent_analysis/code-synthesis-analyzer_report.md +0 -0
  96. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/docs/reports/subagent_analysis/codebase-analyzer_report.md +0 -0
  97. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/docs/reviews/FAGAN_PLAN.md +0 -0
  98. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/docs/reviews/agent_seams.md +0 -0
  99. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/docs/reviews/fagan_inspection_defects.json +0 -0
  100. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/docs/reviews/fagan_inspection_summary.md +0 -0
  101. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/docs/reviews/main_agent_refactor_issues.md +0 -0
  102. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/docs/reviews/main_agent_refactor_plan.md +0 -0
  103. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/README.md +0 -0
  104. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/agent/TOOLS_WORKFLOW.md +0 -0
  105. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/agent/agent-flow.md +0 -0
  106. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/agent/agent-inspo.md +0 -0
  107. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/agent/how-tunacode-agent-works.md +0 -0
  108. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/agent/main-agent-architecture.md +0 -0
  109. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/agent/swepmini-example.md +0 -0
  110. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/agent/tunacode-tool-system.md +0 -0
  111. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/agent-tools/ReAct-vs-ReWoo.md +0 -0
  112. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/agent-tools/tools-architecture.md +0 -0
  113. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/configuration/.env.example +0 -0
  114. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/configuration/config-file-example.md +0 -0
  115. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/configuration/config-flow-diagram.md +0 -0
  116. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/configuration/config-touch-points.md +0 -0
  117. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/configuration/environment-variables.md +0 -0
  118. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/configuration/local-models.md +0 -0
  119. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/configuration/logging-configuration.md +0 -0
  120. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/configuration/tunacode-json-example.md +0 -0
  121. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/configuration/tunacode.json.example +0 -0
  122. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/development/codebase-hygiene.md +0 -0
  123. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/development/command-system-architecture.md +0 -0
  124. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/development/creating-custom-commands.md +0 -0
  125. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/development/performance-optimizations.md +0 -0
  126. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/development/prompt-principles.md +0 -0
  127. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/development/publishing-workflow.md +0 -0
  128. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/development/streaming-text-prefix-fix.md +0 -0
  129. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/tests/README.md +0 -0
  130. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/tests/characterization-testing.md +0 -0
  131. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/tests/mocking-strategies.md +0 -0
  132. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/tests/troubleshooting.md +0 -0
  133. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/ui/ui-architecture.md +0 -0
  134. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/user/commands.md +0 -0
  135. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/user/getting-started.md +0 -0
  136. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/documentation/user/tools.md +0 -0
  137. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/llm-agent-tools/.gitignore +0 -0
  138. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/llm-agent-tools/README.md +0 -0
  139. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/llm-agent-tools/rag_modules/README.md +0 -0
  140. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/llm-agent-tools/rag_modules/indexer.py +0 -0
  141. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/llm-agent-tools/rag_modules/rag-cli.sh +0 -0
  142. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/llm-agent-tools/rag_modules/search.py +0 -0
  143. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/llm-agent-tools/rag_modules/stats.py +0 -0
  144. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/execute/2025-09-12_15-20-00_model_selection_config_persistence_fix.md +0 -0
  145. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/execute/2025-09-15_12-30-00_configuration_dashboard_implementation.md +0 -0
  146. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/execute/2025-09-15_configuration_dashboard_ux_improvements.md +0 -0
  147. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/plan/2025-09-11_13-30-00_agent_loop_architecture_enhancement.md +0 -0
  148. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/plan/2025-09-11_14-00-00_enum_state_machine_implementation.md +0 -0
  149. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/plan/2025-09-11_14-15-00_automated_cli_tool_testing_framework.md +0 -0
  150. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/plan/2025-09-12_12-20-00_global_graceful_error_handling_implementation.md +0 -0
  151. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/plan/2025-09-12_15-08-14_model_selection_config_persistence_fix.md +0 -0
  152. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/plan/2025-09-15_12-29-04_configuration_dashboard_implementation.md +0 -0
  153. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/plan/2025-09-17_15-30-00_main-agent-refactor_plan.md +0 -0
  154. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/plan/2025-09-19_11-30-00_tunacode_md_to_agents_md_migration.md +0 -0
  155. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/research/2025-01-19_react-shim-analysis.md +0 -0
  156. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/research/2025-09-07_21-13-37_agent_loop_architecture.md +0 -0
  157. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/research/2025-09-11_13-14-06_agent_loop_enhancement_analysis.md +0 -0
  158. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/research/2025-09-12_12-15-48_global_graceful_error_handling_analysis.md +0 -0
  159. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/research/2025-09-12_14-54-43_model_configuration_crash_analysis.md +0 -0
  160. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/research/2025-09-12_15-06-58_model_selection_config_update_issue.md +0 -0
  161. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/research/2025-09-12_ai-agent-tools-architecture.md +0 -0
  162. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/research/2025-09-15_12-19-00_configuration_system_and_dashboard.md +0 -0
  163. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/research/2025-09-15_13-54-11_first-chunk_character_loss_investigation.md +0 -0
  164. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/research/2025-09-16_11-12-45_setup_py_usage_and_location_analysis.md +0 -0
  165. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/research/2025-09-19_11-25-00_tunacode_md_to_agents_md_migration.md +0 -0
  166. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/research/2025-09-21_models-registry-pydantic-conversion.md +0 -0
  167. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/memory-bank/research/main_agent_refactor_plan.md +0 -0
  168. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/pytest.ini +0 -0
  169. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/scripts/check-file-length.sh +0 -0
  170. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/scripts/download_ripgrep.py +0 -0
  171. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/scripts/install_linux.sh +0 -0
  172. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/scripts/playwright_cache.py +0 -0
  173. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/scripts/setup_dev_env.sh +0 -0
  174. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/scripts/startup_timer.py +0 -0
  175. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/scripts/uninstall.sh +0 -0
  176. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/scripts/utils/vulture_whitelist.py +0 -0
  177. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/scripts/verify_dev_env.sh +0 -0
  178. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/README.md +0 -0
  179. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/__init__.py +0 -0
  180. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/__init__.py +0 -0
  181. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/__init__.py +0 -0
  182. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/commands/__init__.py +0 -0
  183. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/commands/base.py +0 -0
  184. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/commands/implementations/__init__.py +0 -0
  185. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/commands/implementations/command_reload.py +0 -0
  186. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/commands/implementations/conversation.py +0 -0
  187. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/commands/implementations/debug.py +0 -0
  188. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/commands/implementations/development.py +0 -0
  189. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/commands/implementations/model.py +0 -0
  190. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/commands/implementations/plan.py +0 -0
  191. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/commands/implementations/quickstart.py +0 -0
  192. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/commands/implementations/system.py +0 -0
  193. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/commands/implementations/template.py +0 -0
  194. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/commands/implementations/todo.py +0 -0
  195. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/commands/slash/__init__.py +0 -0
  196. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/commands/slash/command.py +0 -0
  197. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/commands/slash/loader.py +0 -0
  198. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/commands/slash/processor.py +0 -0
  199. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/commands/slash/types.py +0 -0
  200. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/commands/slash/validator.py +0 -0
  201. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/commands/template_shortcut.py +0 -0
  202. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/repl.py +0 -0
  203. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/repl_components/__init__.py +0 -0
  204. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/repl_components/command_parser.py +0 -0
  205. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/repl_components/error_recovery.py +0 -0
  206. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/repl_components/output_display.py +0 -0
  207. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/cli/repl_components/tool_executor.py +0 -0
  208. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/configuration/__init__.py +0 -0
  209. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/configuration/defaults.py +0 -0
  210. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/configuration/key_descriptions.py +0 -0
  211. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/configuration/models.py +0 -0
  212. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/configuration/settings.py +0 -0
  213. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/context.py +0 -0
  214. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/__init__.py +0 -0
  215. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/agents/__init__.py +0 -0
  216. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/agents/agent_components/__init__.py +0 -0
  217. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/agents/agent_components/agent_config.py +0 -0
  218. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/agents/agent_components/agent_helpers.py +0 -0
  219. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/agents/agent_components/json_tool_parser.py +0 -0
  220. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/agents/agent_components/message_handler.py +0 -0
  221. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/agents/agent_components/node_processor.py +0 -0
  222. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/agents/agent_components/response_state.py +0 -0
  223. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/agents/agent_components/result_wrapper.py +0 -0
  224. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/agents/agent_components/state_transition.py +0 -0
  225. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/agents/agent_components/streaming.py +0 -0
  226. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/agents/agent_components/task_completion.py +0 -0
  227. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/agents/agent_components/tool_buffer.py +0 -0
  228. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/agents/agent_components/tool_executor.py +0 -0
  229. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/agents/agent_components/truncation_checker.py +0 -0
  230. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/agents/main.py +0 -0
  231. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/agents/utils.py +0 -0
  232. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/background/__init__.py +0 -0
  233. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/background/manager.py +0 -0
  234. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/code_index.py +0 -0
  235. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/llm/__init__.py +0 -0
  236. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/logging/__init__.py +0 -0
  237. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/logging/config.py +0 -0
  238. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/logging/formatters.py +0 -0
  239. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/logging/handlers.py +0 -0
  240. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/logging/logger.py +0 -0
  241. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/setup/__init__.py +0 -0
  242. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/setup/agent_setup.py +0 -0
  243. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/setup/base.py +0 -0
  244. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/setup/config_setup.py +0 -0
  245. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/setup/config_wizard.py +0 -0
  246. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/setup/coordinator.py +0 -0
  247. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/setup/environment_setup.py +0 -0
  248. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/setup/git_safety_setup.py +0 -0
  249. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/setup/template_setup.py +0 -0
  250. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/state.py +0 -0
  251. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/token_usage/api_response_parser.py +0 -0
  252. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/token_usage/cost_calculator.py +0 -0
  253. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/token_usage/usage_tracker.py +0 -0
  254. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/core/tool_handler.py +0 -0
  255. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/exceptions.py +0 -0
  256. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/prompts/system.md +0 -0
  257. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/prompts/system.md.bak +0 -0
  258. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/py.typed +0 -0
  259. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/services/__init__.py +0 -0
  260. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/services/mcp.py +0 -0
  261. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/setup.py +0 -0
  262. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/templates/__init__.py +0 -0
  263. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/templates/loader.py +0 -0
  264. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/__init__.py +0 -0
  265. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/base.py +0 -0
  266. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/bash.py +0 -0
  267. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/exit_plan_mode.py +0 -0
  268. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/glob.py +0 -0
  269. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/grep.py +0 -0
  270. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/grep_components/__init__.py +0 -0
  271. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/grep_components/file_filter.py +0 -0
  272. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/grep_components/pattern_matcher.py +0 -0
  273. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/grep_components/result_formatter.py +0 -0
  274. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/grep_components/search_result.py +0 -0
  275. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/list_dir.py +0 -0
  276. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/present_plan.py +0 -0
  277. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/prompts/bash_prompt.xml +0 -0
  278. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/prompts/exit_plan_mode_prompt.xml +0 -0
  279. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/prompts/glob_prompt.xml +0 -0
  280. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/prompts/grep_prompt.xml +0 -0
  281. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/prompts/list_dir_prompt.xml +0 -0
  282. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/prompts/present_plan_prompt.xml +0 -0
  283. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/prompts/react_prompt.xml +0 -0
  284. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/prompts/read_file_prompt.xml +0 -0
  285. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/prompts/run_command_prompt.xml +0 -0
  286. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/prompts/todo_prompt.xml +0 -0
  287. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/prompts/update_file_prompt.xml +0 -0
  288. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/prompts/write_file_prompt.xml +0 -0
  289. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/react.py +0 -0
  290. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/read_file.py +0 -0
  291. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/run_command.py +0 -0
  292. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/schema_assembler.py +0 -0
  293. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/todo.py +0 -0
  294. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/update_file.py +0 -0
  295. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/write_file.py +0 -0
  296. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tools/xml_helper.py +0 -0
  297. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tutorial/__init__.py +0 -0
  298. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tutorial/content.py +0 -0
  299. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tutorial/manager.py +0 -0
  300. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/tutorial/steps.py +0 -0
  301. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/types.py +0 -0
  302. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/ui/__init__.py +0 -0
  303. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/ui/config_dashboard.py +0 -0
  304. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/ui/console.py +0 -0
  305. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/ui/constants.py +0 -0
  306. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/ui/decorators.py +0 -0
  307. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/ui/input.py +0 -0
  308. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/ui/keybindings.py +0 -0
  309. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/ui/lexers.py +0 -0
  310. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/ui/logging_compat.py +0 -0
  311. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/ui/model_selector.py +0 -0
  312. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/ui/output.py +0 -0
  313. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/ui/panels.py +0 -0
  314. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/ui/prompt_manager.py +0 -0
  315. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/ui/tool_descriptions.py +0 -0
  316. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/ui/tool_ui.py +0 -0
  317. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/ui/utils.py +0 -0
  318. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/ui/validators.py +0 -0
  319. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/utils/__init__.py +0 -0
  320. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/utils/api_key_validation.py +0 -0
  321. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/utils/bm25.py +0 -0
  322. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/utils/config_comparator.py +0 -0
  323. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/utils/diff_utils.py +0 -0
  324. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/utils/file_utils.py +0 -0
  325. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/utils/import_cache.py +0 -0
  326. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/utils/json_utils.py +0 -0
  327. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/utils/message_utils.py +0 -0
  328. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/utils/models_registry.py +0 -0
  329. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/utils/retry.py +0 -0
  330. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/utils/ripgrep.py +0 -0
  331. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/utils/security.py +0 -0
  332. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/utils/system.py +0 -0
  333. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/utils/text_utils.py +0 -0
  334. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/utils/token_counter.py +0 -0
  335. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/src/tunacode/utils/user_configuration.py +0 -0
  336. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/CHARACTERIZATION_README.md +0 -0
  337. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/CHARACTERIZATION_TEST_PLAN.md +0 -0
  338. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/CHARACTERIZATION_TEST_PLAN_AGENT_MAIN.md +0 -0
  339. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/CHARACTERIZATION_TEST_PLAN_COMMANDS.md +0 -0
  340. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/FILE_OPERATIONS_TEST_GUIDE.md +0 -0
  341. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/__init__.py +0 -0
  342. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/agent/__init__.py +0 -0
  343. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/agent/conftest.py +0 -0
  344. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/agent/test_agent_creation.py +0 -0
  345. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/agent/test_json_tool_parsing.py +0 -0
  346. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/agent/test_process_node.py +0 -0
  347. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/agent/test_process_request.py +0 -0
  348. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/agent/test_tool_message_patching.py +0 -0
  349. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/background/test_background_edge_cases.py +0 -0
  350. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/background/test_cleanup.py +0 -0
  351. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/background/test_task_cancellation.py +0 -0
  352. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/background/test_task_creation.py +0 -0
  353. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/background/test_task_execution.py +0 -0
  354. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/code_index/test_cache_management.py +0 -0
  355. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/code_index/test_file_scanning.py +0 -0
  356. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/code_index/test_index_building.py +0 -0
  357. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/code_index/test_search_operations.py +0 -0
  358. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/code_index/test_symbol_extraction.py +0 -0
  359. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/commands/__init__.py +0 -0
  360. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/commands/test_init_command.py +0 -0
  361. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/commands/test_model_selection_persistence.py +0 -0
  362. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/conftest.py +0 -0
  363. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/context/README.md +0 -0
  364. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/context/__init__.py +0 -0
  365. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/context/test_context_acceptance.py +0 -0
  366. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/context/test_context_integration.py +0 -0
  367. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/context/test_context_loading.py +0 -0
  368. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/context/test_tunacode_logging.py +0 -0
  369. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/repl/test_command_parsing.py +0 -0
  370. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/repl/test_error_handling.py +0 -0
  371. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/repl/test_escape_key_behavior.py +0 -0
  372. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/repl/test_input_handling.py +0 -0
  373. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/repl/test_keyboard_interrupts.py +0 -0
  374. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/repl/test_multiline_input.py +0 -0
  375. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/repl/test_output_display_logic.py +0 -0
  376. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/repl/test_repl_initialization.py +0 -0
  377. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/repl/test_session_flow.py +0 -0
  378. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/services/test_error_recovery.py +0 -0
  379. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/services/test_llm_routing.py +0 -0
  380. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/services/test_mcp_integration.py +0 -0
  381. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/services/test_service_lifecycle.py +0 -0
  382. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/state/test_agent_tracking.py +0 -0
  383. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/state/test_message_history.py +0 -0
  384. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/state/test_permissions.py +0 -0
  385. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/state/test_session_management.py +0 -0
  386. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/state/test_state_initialization.py +0 -0
  387. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/state/test_user_config.py +0 -0
  388. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/test_characterization_commands.py +0 -0
  389. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/test_characterization_grep.py +0 -0
  390. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/test_characterization_main.py +0 -0
  391. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/test_characterization_repl.py +0 -0
  392. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/ui/test_async_ui.py +0 -0
  393. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/ui/test_console_output.py +0 -0
  394. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/ui/test_diff_display.py +0 -0
  395. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/ui/test_prompt_rendering.py +0 -0
  396. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/ui/test_spinner_messages.py +0 -0
  397. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/ui/test_tool_confirmations.py +0 -0
  398. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/utils/test_expand_file_refs.py +0 -0
  399. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/utils/test_file_operations.py +0 -0
  400. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/utils/test_git_commands.py +0 -0
  401. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/utils/test_token_counting.py +0 -0
  402. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/characterization/utils/test_utils_edge_cases.py +0 -0
  403. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/integration/test_startup_dashboard.py +0 -0
  404. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/test_agent_output_formatting.py +0 -0
  405. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/test_command_parser_retry.py +0 -0
  406. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/test_completion_detection.py +0 -0
  407. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/test_glob_phase3.py +0 -0
  408. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/test_json_concatenation_recovery.py +0 -0
  409. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/test_json_retry.py +0 -0
  410. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/test_logging_config.py +0 -0
  411. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/test_onboarding_features.py +0 -0
  412. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/test_phase2_type_hints.py +0 -0
  413. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/test_plan_mode.py +0 -0
  414. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/test_prompt_changes_validation.py +0 -0
  415. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/test_prompt_injection.py +0 -0
  416. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/test_security.py +0 -0
  417. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/test_slash_commands_comprehensive.py +0 -0
  418. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/test_slash_commands_functional.py +0 -0
  419. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/test_slash_commands_integration.py +0 -0
  420. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/test_slash_commands_isolated.py +0 -0
  421. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/test_spinner_updates.py +0 -0
  422. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/test_tool_batching_retry.py +0 -0
  423. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/ui/test_config_dashboard.py +0 -0
  424. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/unit/commands/test_model_selection_persistence_new.py +0 -0
  425. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/unit/config/test_user_configuration_permissions.py +0 -0
  426. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/unit/test_constants_enums.py +0 -0
  427. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/unit/test_react_tool.py +0 -0
  428. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/unit/utils/test_models_registry.py +0 -0
  429. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/unit/utils/test_models_registry_validation.py +0 -0
  430. {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.9}/tests/utils/test_config_comparator.py +0 -0
@@ -123,8 +123,7 @@
123
123
  "Routed CLI REPL agent imports through tunacode.core.agents to expose helper mocks",
124
124
  "Extended check_task_completion to accept legacy TUNACODE_TASK_COMPLETE marker"
125
125
  ]
126
- }
127
- ,
126
+ },
128
127
  {
129
128
  "id": "cli-fuzzy-matching-20250922-120500",
130
129
  "time": "2025-09-22T12:05:00",
@@ -137,8 +136,7 @@
137
136
  "Zero new dependencies; minimal code change localized to CommandRegistry.find_matching_commands",
138
137
  "Added tests to characterize prefix behavior and validate fuzzy suggestions for typos"
139
138
  ]
140
- }
141
- ,
139
+ },
142
140
  {
143
141
  "id": "file-ref-completer-dir-browse-20250922-122900",
144
142
  "time": "2025-09-22T12:29:00",
@@ -149,6 +147,56 @@
149
147
  "FileReferenceCompleter now treats a bare directory prefix without trailing slash as browsing inside that directory (e.g., '@tests' shows files inside tests/).",
150
148
  "Behavior and ordering preserved: exact files > fuzzy files > exact dirs > fuzzy dirs; existing case-insensitive exact matching and fuzzy improvements remain."
151
149
  ]
150
+ },
151
+ {
152
+ "id": "cli-fuzzy-removal-20250924-150600",
153
+ "time": "2025-09-24T15:06:00",
154
+ "branch": "current",
155
+ "base": "current",
156
+ "head": "current",
157
+ "bullets": [
158
+ "Removed difflib-backed fuzzy fallback from CommandRegistry.find_matching_commands; prefix-only matching restored.",
159
+ "Deleted shared fuzzy_utils helper module and characterization test covering fuzzy suggestions.",
160
+ "Simplified FileReferenceCompleter to rely on case-insensitive prefix ordering (files before directories).",
161
+ "Updated documentation and metadata to reflect removal of fuzzy matching implementation."
162
+ ]
163
+ },
164
+ {
165
+ "id": "cli-fuzzy-reintegration-20250924-181500",
166
+ "time": "2025-09-24T18:15:00",
167
+ "branch": "current",
168
+ "base": "current",
169
+ "head": "current",
170
+ "bullets": [
171
+ "Wired prompt_toolkit FuzzyWordCompleter into CommandCompleter and FileReferenceCompleter for typo-tolerant suggestions.",
172
+ "Restored CLI fuzzy characterization tests validating command and @file completions.",
173
+ "Adjusted test harness to load real prompt_toolkit modules instead of stubs when available.",
174
+ "Updated changelog, TODO, and research notes to document the prompt toolkit-based fuzzy implementation."
175
+ ]
176
+ },
177
+ {
178
+ "id": "merge-fuzzy-touchup-20250925-125158",
179
+ "time": "2025-09-25T12:51:58",
180
+ "branch": "fuzzy-touchup",
181
+ "base": "master",
182
+ "head": "master",
183
+ "bullets": [
184
+ "Merged fuzzy-touchup: refined file reference heuristics and fuzzy fixes",
185
+ "Accepted branch versions for conflicts in registry and completers",
186
+ "Reintroduced CLI fuzzy characterization test"
187
+ ]
188
+ },
189
+ {
190
+ "id": "release-0.0.76.5-20250925-125611",
191
+ "time": "2025-09-25T12:56:11",
192
+ "branch": "master",
193
+ "base": "v0.0.76.4",
194
+ "head": "v0.0.76.5",
195
+ "bullets": [
196
+ "Release v0.0.76.5: merged fuzzy-touchup branch",
197
+ "Bumped versions in pyproject and constants",
198
+ "Created GitHub release to trigger publish workflow"
199
+ ]
152
200
  }
153
201
  ]
154
- }
202
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 2,
3
- "generated": "2025-01-05",
3
+ "generated": "2025-09-24T16:12:08Z",
4
4
  "description": "Memory anchors are now embedded in source files as CLAUDE_ANCHOR[key] comments",
5
5
  "session_history": [
6
6
  {
@@ -151,14 +151,59 @@
151
151
  "kind": "line",
152
152
  "description": "Renamed release workflow so GitHub Actions executes the Ruff lint/test pipeline without cached definitions and pins Python 3.12 for Hatch stability",
153
153
  "status": "active"
154
- }
155
- ,{
154
+ },
155
+ {
156
156
  "anchor_key": "model-command-registry-validation-skip",
157
157
  "path": "tests/characterization/test_characterization_commands.py",
158
158
  "line": 73,
159
159
  "kind": "line",
160
160
  "description": "Characterization test bypasses registry.load() to avoid Pydantic validation failures from cached API data (e.g., zero limits). Preserves intent to display current model info.",
161
161
  "status": "active"
162
+ },
163
+ {
164
+ "anchor_key": "86cc1a41",
165
+ "path": "src/tunacode/cli/commands/registry.py",
166
+ "line": 317,
167
+ "kind": "line",
168
+ "description": "Prefix-only command matching after removing fuzzy fallback",
169
+ "status": "active",
170
+ "created": "2025-09-24T15:05:39Z"
171
+ },
172
+ {
173
+ "anchor_key": "1f0911c7",
174
+ "path": "src/tunacode/ui/completers.py",
175
+ "line": 176,
176
+ "kind": "line",
177
+ "description": "Prompt Toolkit fuzzy matching consolidates file and directory suggestions",
178
+ "status": "active",
179
+ "created": "2025-09-24T15:29:42Z"
180
+ },
181
+ {
182
+ "key": "0b3f320e",
183
+ "path": "src/tunacode/ui/path_heuristics.py",
184
+ "line": 7,
185
+ "kind": "line",
186
+ "description": "Cross-ecosystem skip directory defaults for FileReferenceCompleter global roots",
187
+ "status": "active",
188
+ "created": "2025-09-24T16:08:12Z"
189
+ },
190
+ {
191
+ "key": "6fd59413",
192
+ "path": "src/tunacode/ui/path_heuristics.py",
193
+ "line": 22,
194
+ "kind": "line",
195
+ "description": "Skip list includes __pycache__ to avoid noisy Python build artifacts in suggestions",
196
+ "status": "active",
197
+ "created": "2025-09-24T16:10:11Z"
198
+ },
199
+ {
200
+ "key": "2bcebd52",
201
+ "path": "src/tunacode/ui/path_heuristics.py",
202
+ "line": 31,
203
+ "kind": "line",
204
+ "description": "Skip heuristic checks every path component to prune nested junk directories such as __pycache__",
205
+ "status": "active",
206
+ "created": "2025-09-24T16:12:08Z"
162
207
  }
163
208
  ]
164
- }
209
+ }
@@ -145,16 +145,6 @@
145
145
  "type": "test",
146
146
  "category": "tools",
147
147
  "classification": "test"
148
- },
149
- "src/tunacode/cli/commands/registry.py": {
150
- "type": "source",
151
- "category": "commands",
152
- "classification": "implementation"
153
- },
154
- "tests/characterization/test_cli_fuzzy_matching.py": {
155
- "type": "test",
156
- "category": "commands",
157
- "classification": "test"
158
148
  }
159
149
  }
160
150
  }
@@ -96,8 +96,6 @@ Docs → model-friendly explanations of purposes & relationships.
96
96
  Delta Summaries → record API/behavior shifts with reasoning.
97
97
 
98
98
  Memory Anchors → embed UUID-tagged semantic anchors in code.
99
- you MUST use this tool to drop anchors: python3 knowledge_base/tools/anchor_drop.py <file> <line> <description> to mark important locations
100
- with UUID-based comments stored in .claude/memory_anchors/anchors.json
101
99
  ---
102
100
 
103
101
  ### Example##\#
@@ -91,8 +91,6 @@ Rules:
91
91
  * Docs → model-friendly explanations of purposes & relationships.
92
92
  * Delta Summaries → record API/behavior shifts with reasoning.
93
93
  * Memory Anchors → embed UUID-tagged semantic anchors in code.
94
- you MUST use this tool to drop anchors: python3 knowledge_base/tools/anchor_drop.py <file> <line> <description> to mark important locations
95
- with UUID-based comments stored in .claude/memory_anchors/anchors.json
96
94
  * Keeep entries nonverbose and distilled to the core implemenation for the next dev. You will be punished for not following these instructions.
97
95
 
98
96
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tunacode-cli
3
- Version: 0.0.76.4
3
+ Version: 0.0.76.9
4
4
  Summary: Your agentic CLI developer.
5
5
  Project-URL: Homepage, https://tunacode.xyz/
6
6
  Project-URL: Repository, https://github.com/alchemiststudiosDOTai/tunacode
@@ -1,18 +1,18 @@
1
- # Current Issue
1
+ # Prompt Toolkit Fuzzy Reintegration
2
2
 
3
- @-mentions only show directories first, then files. Need fuzzy-first file matching for patterns like `testexampl.py`.
3
+ Fuzzy-first matching resumed on 2025-09-24 using prompt_toolkit's native fuzzy completers. Notes below capture the revived implementation plan and historical context for further refinement.
4
4
 
5
5
  ---
6
6
 
7
- ## Architecture Analysis
7
+ ## Architecture Analysis (current state)
8
8
 
9
- - `src/tunacode/ui/completers.py:70-128`: Current `FileReferenceCompleter` uses basic `startswith()` matching.
10
- - `src/tunacode/cli/commands/registry.py:305-327`: Fuzzy matching exists for commands using `difflib.get_close_matches`.
11
- - `src/tunacode/utils/models_registry.py`: Advanced fuzzy matching using `difflib.SequenceMatcher`.
9
+ - `src/tunacode/ui/completers.py:23-74`: `CommandCompleter` wraps registry commands with `FuzzyWordCompleter` for near-miss suggestions.
10
+ - `src/tunacode/ui/completers.py:80-164`: `FileReferenceCompleter` blends exact prefix ordering with fuzzy scoring for files then directories.
11
+ - `src/tunacode/utils/models_registry.py`: Continues to expose `SequenceMatcher`-based fuzzy similarity for models.
12
12
 
13
13
  ---
14
14
 
15
- ## Minimal Implementation Strategy
15
+ ## Minimal Implementation Strategy (archived plan)
16
16
 
17
17
  1. **Create Shared Fuzzy Utility**
18
18
  - File: `src/tunacode/utils/fuzzy_utils.py`
@@ -5,6 +5,23 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.0.76.8] - 2025-09-25
9
+
10
+ ### Fixed
11
+ - Ensure PyPI package version matches tag by bumping project metadata to 0.0.76.8
12
+
13
+ ## [0.0.76.6] - 2025-09-25
14
+
15
+ ### Fixed
16
+ - CI Lint: formatted path_heuristics.py to satisfy ruff format
17
+ - Release: re-tag to include formatting fix
18
+
19
+ ## [0.0.76.5] - 2025-09-25
20
+
21
+ ### Changed
22
+ - Merge fuzzy-touchup branch: refined fuzzy matching and file reference heuristics
23
+ - Release process: version bump and CI publish workflow used
24
+
8
25
  ## [0.0.76.4] - 2025-09-25
9
26
 
10
27
  ### Added
@@ -24,20 +41,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
24
41
  ## [Unreleased] - 2025-09-22
25
42
 
26
43
  ### Added
27
- - **Enhanced File Reference Completion** - Fuzzy-first matching for @mentions with smart directory browsing
28
- - **Fuzzy CLI Command Matching** - CLI suggests closest commands when no exact/prefix match
29
44
  - **Models Registry Pydantic Conversion** - Complete conversion to Pydantic BaseModel with validation
30
45
  - **RAG Tooling** - SQLite FTS5 index for .claude/ knowledge base search and indexing
31
46
  - **Comprehensive Validation Tests** - Added golden baseline tests and validation edge cases
47
+ - **Prompt Toolkit Fuzzy Completers** - Wrapped command and @file completers with native fuzzy matching for typo tolerance
32
48
 
33
49
  ### Changed
34
- - **File Reference Ordering** - New priority: exact files > fuzzy files > exact dirs > fuzzy dirs
50
+ - **File Reference Ordering** - Re-established fuzzy priority: exact files > fuzzy files > exact dirs > fuzzy dirs
35
51
  - **Bare Directory Browsing** - Type `@dir` (without trailing slash) to browse directory contents
36
52
  - **Code Style Guidelines** - Updated CLAUDE.md with improved coding patterns and best practices
37
53
  - **Models Registry Validation** - Added constraints for non-negative costs and positive limits
38
54
 
39
55
  ### Fixed
40
- - **Unused Import Removal** - Removed unused Iterable import from fuzzy_utils.py
41
56
  - **Validation Edge Cases** - Enhanced registry validation for model loading scenarios
42
57
 
43
58
  ## [0.0.76.2] - 2025-09-19
@@ -19,7 +19,6 @@ uv install hatch
19
19
  uv venv
20
20
 
21
21
  # Install development dependencies
22
- # MEMORY-ANCHOR: dev-setup-2025-09-22-current
23
22
  source .venv/bin/activate && uv pip install -e ".[dev]"
24
23
 
25
24
  # Run the application
@@ -0,0 +1,89 @@
1
+ # Plan – Prompt Toolkit Fuzzy Completion Reintegration
2
+ **Date:** 2025-09-24
3
+ **Owner:** Claude Coding Agent
4
+ **Status:** Draft
5
+
6
+ **Progress Snapshot (2025-09-24 18:20 UTC)**
7
+ - Red ✅ – Characterization tests recreated and failing baseline captured.
8
+ - Green ✅ – prompt_toolkit fuzzy completions implemented; targeted tests pass via `uv run`.
9
+ - Blue ▢ – Refactor/documentation cleanup and broader regression testing still pending.
10
+
11
+ ## 1. Objective & Success Criteria
12
+ - Reintroduce fuzzy matching for command names and @file references using `prompt_toolkit`'s native fuzzy completers (`FuzzyCompleter`, `FuzzyWordCompleter`).
13
+ - Deliver behavior that restores typo tolerance and mid-string matching while preserving existing prefix ordering expectations.
14
+ - Avoid introducing new source modules; limit scope to targeted edits with clear fail-fast semantics and explicit typing.
15
+
16
+ Success is measured by:
17
+ 1. A green characterization test capturing fuzzy suggestions for both slash commands and @file references.
18
+ 2. Manually verified CLI experience showing fuzzy suggestions ordered ahead of less-relevant results without performance regressions.
19
+ 3. Updated documentation and knowledge base entries reflecting the renewed behavior.
20
+
21
+ ## 1.1 Existing Prompt Toolkit Usage (proof)
22
+ - `src/tunacode/ui/completers.py:6-16` already imports `prompt_toolkit.completion` classes and integrates them into the CLI completer pipeline.
23
+ - `src/tunacode/ui/prompt_manager.py:6-12` builds the primary prompt session using `prompt_toolkit` components (`PromptSession`, `KeyBindings`, `Completer`).
24
+ - `src/tunacode/ui/model_selector.py:5-21` constructs a rich TUI with `prompt_toolkit` layout primitives, confirming the library underpins current interactive flows.
25
+ - `src/tunacode/cli/repl.py:11-32` depends on `prompt_toolkit.application.run_in_terminal` to coordinate CLI rendering, demonstrating tight integration today.
26
+
27
+ ## 2. Implementation Surfaces (no new files)
28
+ | Area | File | Change Intent |
29
+ | --- | --- | --- |
30
+ | Command registry completer wiring | `src/tunacode/cli/commands/registry.py` | Inject `FuzzyCompleter` around existing command lists when building the prompt-toolkit completer, while keeping fallback error handling fail-fast. |
31
+ | REPL command completion bootstrap | `src/tunacode/cli/repl.py` & `src/tunacode/ui/completers.py` | Introduce prompt toolkit fuzzy wrappers for both slash-command and file reference completers; ensure ordering logic stays explicit and hidden state removed. |
32
+ | UI completers | `src/tunacode/ui/completers.py` | Refactor `CommandCompleter`/`FileReferenceCompleter` to delegate fuzzy scoring to `prompt_toolkit`, extracting symbolic constants for cutoffs and match limits. |
33
+ | Metadata & anchors | `.claude/memory_anchors/anchors.json`, `.claude/delta_summaries/behavior_changes.json` | Update anchors to capture new fuzzy integration touch-points; document behavior shift.
34
+ | Documentation | `documentation/changelog/CHANGELOG.md`, `TODO.md`, `memory-bank/research/2025-09-24_fuzzy_logic_implementation_analysis.md` | Refresh changelog/TODO to reflect reintroduction; append research updates.
35
+
36
+ ## 3. Test-First Strategy (single failing test)
37
+ - Add characterization test `tests/characterization/test_cli_fuzzy_matching.py::TestPromptToolkitFuzzy::test_fuzzy_suggests_command` that spins up the CLI completer, feeds a typo like `"/hep"`, and asserts the fuzzy candidate list includes `/help` while prefix-only logic would fail.
38
+ - Extend same test module with `test_fuzzy_file_reference_prioritizes_files` to verify `@tst_example.py` suggests `test_example.py` via fuzzy selection, ensuring files precede directories.
39
+ - Run the new test in isolation with `uv run --python .venv/bin/python -m pytest tests/characterization/test_cli_fuzzy_matching.py` expecting RED initially.
40
+
41
+ ## 4. Execution Timeline (TDD Red → Green → Blue)
42
+ 1. **Red**
43
+ - Recreate `tests/characterization/test_cli_fuzzy_matching.py` with updated prompt-toolkit based expectations.
44
+ - Exercise CLI completer wiring without touching implementation to confirm failure.
45
+ 2. **Green**
46
+ - Layer `FuzzyCompleter` around command and file completers; expose configuration constants.
47
+ - Verify green by re-running the isolated test, then full suite via `uv run hatch run test` to confirm no regressions.
48
+ 3. **Blue**
49
+ - Refine duplicated logic, extract helper functions where intent is repeated, and update documentation/metadata/anchors.
50
+
51
+ **Cross-ecosystem follow-ups (deferred):**
52
+ - Auto-prioritise roots by inspecting ecosystem markers (e.g., `package.json`, `CMakeLists.txt`) instead of hard-coding Python paths.
53
+ - Extend ignore lists to cover `node_modules`, `build`, `dist`, `target`, and other non-Python artifacts.
54
+ - Consider optional metadata-driven weighting so language-specific extensions (.js/.ts, .cpp/.hpp) bubble up appropriately.
55
+
56
+ ## 5. Risks & Mitigations
57
+ - **Performance degradation with large command/file sets** → Use `ThreadedCompleter` if latency is observed; document fallback in TODO.
58
+ - **Inconsistent ordering vs. historical expectations** → Maintain explicit post-processing to enforce file-before-dir rules.*
59
+ - **Prompt Toolkit version drift** → Confirm current version supports `FuzzyCompleter` and capture requirement in research note if upgrade needed.
60
+
61
+ ## 6. Open Questions
62
+ 1. Should we gate fuzzy behavior behind a user config flag for power users who prefer prefix-only matching?
63
+ 2. Do we need to resurrect additional fuzzy tests (e.g., for models registry) or limit surface area to CLI interactions?
64
+ 3. Are there accessibility considerations (e.g., highlight styling) that require Rich integration updates?
65
+
66
+ ## 7. Next Immediate Action
67
+ - Implement RED step: restore the characterization test, then execute `uv run --python .venv/bin/python -m pytest tests/characterization/test_cli_fuzzy_matching.py` to capture the failing baseline before touching implementation code.
68
+
69
+ *Maintain file-before-directory ordering by combining prompt-toolkit fuzzy scoring with deterministic post-sort tied to symbolic constants.
70
+
71
+
72
+ - Clarify Objective: Target a detection + weighting layer that broadens ecosystem coverage while keeping current Python-first flow intact when nothing else matches.
73
+ okay again this is the issue we dont know whart codin g languae they will use
74
+
75
+ - Inventory Current State: Document today’s hardcoded paths/skip lists in src/tunacode/ui/completers.py so we know exactly what must stay as the Python fallback.
76
+ - Introduce Ecosystem Schema: Define a small EcosystemProfile dataclass or typed dict storing markers, roots, skips, extensions, metadata tags; start with just
77
+ Python + JS/TS + C++ to keep diff tiny.
78
+ - Add Detection Utility: Implement _detect_ecosystem() that walks upward a bounded depth, counts marker hits per profile, and returns the best match (ties fall back
79
+ to Python profile). Cache result on the completer instance.
80
+ - Refactor Root/Skip Providers: Swap the current module-level constants for a profile = self._detect_or_default() call that feeds priority roots, skip prefixes, and
81
+ extension sets into the existing traversal logic. Preserve ordering rules from the behavior change log.
82
+ - Lightweight Metadata Hook: When building Completion, append the profile’s metadata hint if defined for the file extension; no UI overhaul required.
83
+ - Optional Config Ingestion: Allow a simple TOML override (e.g., .tunacode-completer.toml) that merges into the selected profile. Keep parsing isolated so it can be
84
+ skipped if file absent.
85
+ - Testing Strategy: Extend characterization tests with tmpdir fixtures for JS and C++ layouts; ensure Python baseline stays green. Cover config override and no-
86
+ marker fallback. Run via hatch run test.
87
+ - Knowledge Base Updates: Plan to record new anchors around detection logic, refresh .claude/semantic_index/function_call_graphs.json, and log behavior/API shifts in
88
+ delta_summaries/behavior_changes.json once code lands.
89
+
@@ -0,0 +1,96 @@
1
+ # Research – Fuzzy Logic Implementation Analysis
2
+ **Date:** 2025-09-24
3
+ **Owner:** Claude Research Agent
4
+ **Phase:** Research
5
+
6
+ ## Goal
7
+ Summarize all *existing knowledge* about fuzzy logic implementation before making changes to support first-class fuzzy matching with @t syntax.
8
+
9
+ ## Status Update (2025-09-24)
10
+ - CLI fuzzy fallback and @file fuzzy completion were removed on the safe branch to retire accumulated tech debt. This document now serves as a historical reference for any future reintroduction work.
11
+ - Shared helper `src/tunacode/utils/fuzzy_utils.py` and characterization test `tests/characterization/test_cli_fuzzy_matching.py` were deleted; changelog and metadata record the regression to prefix-only behavior.
12
+ - Prompt toolkit-native fuzzy completions were reintroduced on 2025-09-24, wiring `FuzzyWordCompleter` into `CommandCompleter` and `FileReferenceCompleter` with fresh characterization tests capturing the new behavior.
13
+
14
+ ## Additional Search
15
+ - `grep -ri "fuzzy" .claude/` - Found behavior changes and file classifications
16
+ - RAG search revealed CLI fuzzy matching enhancement details
17
+
18
+ Post-removal verification confirmed updated changelog entry (`documentation/changelog/CHANGELOG.md`) and new delta summary (`.claude/delta_summaries/behavior_changes.json`) documenting the rollback.
19
+
20
+ ## Findings
21
+
22
+ ### Removed CLI/File components (2025-09-24 early session)
23
+ - `src/tunacode/utils/fuzzy_utils.py` → Deleted module that wrapped `difflib.get_close_matches`.
24
+ - `src/tunacode/cli/commands/registry.py` → Fuzzy fallback removed; command matching temporarily reverted to prefix-only with anchor `86cc1a41` marking the change.
25
+ - `src/tunacode/ui/completers.py` → Fuzzy ordering removed; completion relied on case-insensitive prefixes until prompt toolkit reintegration.
26
+ - `tests/characterization/test_cli_fuzzy_matching.py` → Deleted golden coverage for CLI fuzzy suggestions ahead of prompt toolkit rewrite.
27
+
28
+ ### Reintroduced surfaces (2025-09-24 late session)
29
+ - `tests/characterization/test_cli_fuzzy_matching.py` → Recreated characterization tests covering prompt toolkit fuzzy suggestions for slash commands and @file references.
30
+ - `src/tunacode/ui/completers.py` → Adopted `FuzzyWordCompleter` for both command and file completions, maintaining explicit ordering guarantees.
31
+ - `tests/conftest.py` → Adjusted to honor real prompt_toolkit modules when installed, ensuring tests exercise genuine fuzzy completers.
32
+
33
+ ### Remaining fuzzy usage
34
+ - `src/tunacode/utils/models_registry.py:114-132` → Still employs `SequenceMatcher` for model similarity scoring; untouched by the rollback.
35
+
36
+ ## Key Patterns / Solutions Found
37
+
38
+ ### Historical CLI/File architecture (removed 2025-09-24)
39
+ - **Two-tier matching**: Exact/prefix matches first, fuzzy fallback second.
40
+ - **Multiple fuzzy algorithms**: `get_close_matches` (CLI) + `SequenceMatcher` (models).
41
+ - **Priority ordering**: exact files > fuzzy files > exact dirs > fuzzy dirs.
42
+ - **Case-insensitive matching** with original case preservation.
43
+
44
+ ### Algorithm Details (historical CLI behavior)
45
+ - **difflib.get_close_matches**: Previously used Ratcliff/Obershelp pattern matching for CLI fallbacks
46
+ - **Cutoff threshold**: 0.75 similarity ratio (configurable)
47
+ - **Result limits**: 3 for CLI, 10 for file completions
48
+ - **Zero external dependencies**: Uses only Python standard library
49
+
50
+ ### Command System Overview (post-removal)
51
+ - **@file references**: Include file contents (`@filename.ext`)
52
+ - **@dir references**: Directory expansion (`@dirname/` or `@dirname/**`)
53
+ - **Slash commands**: Markdown-based commands in `.claude/commands/`
54
+ - **File completion**: Case-insensitive prefix matching (fuzzy support removed)
55
+
56
+ ## Knowledge Gaps
57
+
58
+ ### Missing Context for First-Class Fuzzy Implementation
59
+ - **@t syntax specification**: How should @t behave differently from current @file?
60
+ - **Priority algorithm details**: What factors determine file priority beyond name matching?
61
+ - **Performance requirements**: Need for caching/indexing vs real-time fuzzy matching
62
+ - **User experience expectations**: Should @t show matches immediately or require confirmation?
63
+ - **Integration points**: How to replace current prefix-first approach with fuzzy-first
64
+
65
+ ### Technical Considerations
66
+ - **Backward compatibility**: Current system preserves prefix behavior - breaking changes needed
67
+ - **File discovery scope**: Current code index vs full filesystem search
68
+ - **Memory/performance tradeoffs**: Caching strategies for frequent @t usage
69
+ - **Configuration options**: User customization of cutoff thresholds and result limits
70
+
71
+ ## References
72
+
73
+ ### Implementation Files
74
+ - `src/tunacode/cli/commands/registry.py` - Historical fuzzy fallback implementation (removed; see anchor `86cc1a41`).
75
+ - `src/tunacode/ui/completers.py` - Historical fuzzy ordering implementation (removed).
76
+ - `src/tunacode/utils/models_registry.py` - Still provides advanced similarity scoring for models.
77
+
78
+ ### Test Files
79
+ - `tests/characterization/test_cli_fuzzy_matching.py` - Historical characterization test (deleted 2025-09-24).
80
+ - `tests/unit/utils/test_models_registry.py` - Model registry fuzzy matching tests (still valid).
81
+
82
+ ### Documentation
83
+ - `memory-bank/research/2025-09-22_12-01-06_cli_fuzzy_logic_analysis.md` - Previous fuzzy logic analysis
84
+ - `.claude/delta_summaries/behavior_changes.json` - Historical enhancement, 2025-09-24 removal entry, and prompt toolkit reintegration log
85
+ - `.claude/memory_anchors/anchors.json` - Memory anchors tracking removal (key `86cc1a41`) and new prompt toolkit fuzzy anchors
86
+
87
+ ### Configuration
88
+ - `.claude/metadata/file_classifications.json` - Historical classification entries updated with restored CLI fuzzy test coverage
89
+
90
+ ## Next Steps Recommendations
91
+
92
+ 1. **Define @t specification** (if reintroducing fuzzy behavior): Clarify exact behavior and user experience expectations.
93
+ 2. **Design priority algorithm**: Determine ranking factors for file matches, acknowledging the previous fuzzy-first experiment.
94
+ 3. **Plan migration strategy**: Outline how to reintroduce fuzzy logic without regressing current prefix guarantees.
95
+ 4. **Performance testing**: Evaluate fuzzy matching performance characteristics before any future rollout.
96
+ 5. **User feedback integration**: Capture how users would prefer disambiguation when fuzzy suggestions return.
@@ -0,0 +1,60 @@
1
+ # Models Registry Pydantic Conversion Plan
2
+
3
+ ## Phase 1: Characterization Tests (Red)
4
+
5
+ 1. **Create Golden Baseline Tests**
6
+ - Create `tests/unit/utils/test_models_registry.py`
7
+ - Test current dataclass behavior and field access patterns
8
+ - Test the complex `_parse_data()` method with various inputs
9
+ - Test all method signatures (`format_display()`, `matches_search()`, etc.)
10
+ - Test fallback data loading and parsing
11
+
12
+ 2. **Integration Characterization**
13
+ - Document current error handling behavior (silent fallbacks)
14
+ - Test field access patterns used by dependent components
15
+ - Verify current serialization/deserialization behavior
16
+
17
+ ## Phase 2: Pydantic Conversion (Green)
18
+
19
+ 3. **Convert Data Classes to Pydantic Models**
20
+ - Replace `@dataclass` with `BaseModel` for all 5 classes
21
+ - Add proper validation rules (non-negative costs, positive limits)
22
+ - Preserve all existing methods and properties
23
+ - Ensure backward compatibility for field access
24
+
25
+ 4. **Update Parsing Logic**
26
+ - Simplify `_parse_data()` method using Pydantic validation
27
+ - Remove manual type checking code
28
+ - Add proper error handling for validation failures
29
+ - Validate hardcoded fallback data
30
+
31
+ 5. **Update Dependencies**
32
+ - Update 4 dependent files (`completers.py`, `input.py`, `model_selector.py`, `model.py`)
33
+ - Ensure all imports and field access patterns work with Pydantic models
34
+ - Test integration points still function correctly
35
+
36
+ ## Phase 3: Validation and Testing (Blue)
37
+
38
+ 6. **Create Validation Tests**
39
+ - Test Pydantic validation scenarios (invalid costs, negative limits)
40
+ - Test error handling with malformed data
41
+ - Test type coercion behavior
42
+ - Test backward compatibility
43
+
44
+ 7. **Manual Confirmation**
45
+ - Run existing test suite to ensure no regressions
46
+ - Test CLI model selection functionality manually
47
+ - Verify UI components still work correctly
48
+ - Check performance impact on model loading
49
+
50
+ ---
51
+
52
+ ### Success Criteria
53
+
54
+ - All existing tests pass
55
+ - New validation tests pass
56
+ - Field access patterns preserved
57
+ - Method signatures unchanged
58
+ - Parsing logic simplified from 66 lines to ~20 lines
59
+ - Proper validation errors raised for invalid data
60
+ - Performance impact < 10%
@@ -5,7 +5,7 @@ build-backend = "hatchling.build"
5
5
  [project]
6
6
  name = "tunacode-cli"
7
7
 
8
- version = "0.0.76.4"
8
+ version = "0.0.76.9"
9
9
  description = "Your agentic CLI developer."
10
10
  keywords = ["cli", "agent", "development", "automation"]
11
11
  readme = "README.md"
@@ -170,7 +170,7 @@ typecheck = "mypy src/"
170
170
  security = "bandit -r src/ -ll"
171
171
 
172
172
  # Version management
173
- version = "0.0.76.4"
173
+ version = "0.0.76.9"
174
174
 
175
175
  # Release workflow
176
176
  release = [
@@ -5,7 +5,6 @@ CLAUDE_ANCHOR[command-registry]: Central command registration and execution
5
5
 
6
6
  import logging
7
7
  from dataclasses import dataclass
8
- from difflib import get_close_matches
9
8
  from pathlib import Path
10
9
  from typing import Any, Dict, List, Optional, Type
11
10
 
@@ -315,16 +314,12 @@ class CommandRegistry:
315
314
  self.discover_commands()
316
315
  partial = partial_command.lower()
317
316
 
318
- # 1) Prefer prefix matches (preserves current behavior)
317
+ # CLAUDE_ANCHOR[key=86cc1a41] Prefix-only command matching after removing fuzzy fallback
319
318
  prefix_matches = [cmd for cmd in self._commands.keys() if cmd.startswith(partial)]
320
319
  if prefix_matches:
321
320
  return prefix_matches
322
321
 
323
- # 2) Fuzzy fallback for typos and near-misses
324
- # CLAUDE_ANCHOR[fuzzy-command-matching]: Fuzzy fallback using difflib
325
- # Keep minimal change: reuse built-ins, avoid new deps.
326
- fuzzy = get_close_matches(partial, list(self._commands.keys()), n=3, cutoff=0.75)
327
- return fuzzy
322
+ return []
328
323
 
329
324
  def is_command(self, text: str) -> bool:
330
325
  """Check if text starts with a registered command (supports partial matching)."""
@@ -19,7 +19,7 @@ from tunacode.ui import console as ui
19
19
  from tunacode.utils.system import check_for_updates
20
20
 
21
21
  app_settings = ApplicationSettings()
22
- app = typer.Typer(help="TunaCode - OS AI-powered CLI Coding Tool")
22
+ app = typer.Typer(help="TunaCode - OS AI-powered development assistant")
23
23
  state_manager = StateManager()
24
24
 
25
25
 
@@ -9,7 +9,7 @@ from enum import Enum
9
9
 
10
10
  # Application info
11
11
  APP_NAME = "TunaCode"
12
- APP_VERSION = "0.0.76.4"
12
+ APP_VERSION = "0.0.76.9"
13
13
 
14
14
 
15
15
  # File patterns