gitpr-cli 0.0.36__tar.gz → 0.0.37__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.
Files changed (55) hide show
  1. {gitpr_cli-0.0.36/gitpr_cli.egg-info → gitpr_cli-0.0.37}/PKG-INFO +21 -7
  2. gitpr_cli-0.0.36/PKG-INFO → gitpr_cli-0.0.37/README.md +487 -492
  3. gitpr_cli-0.0.36/README.md → gitpr_cli-0.0.37/gitpr_cli.egg-info/PKG-INFO +506 -473
  4. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/gitpr_cli.egg-info/SOURCES.txt +2 -0
  5. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/config.py +16 -0
  6. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/core.py +95 -24
  7. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/linter_engine.py +2 -0
  8. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/main.py +33 -26
  9. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/mcp_server.py +121 -24
  10. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/metrics.py +5 -1
  11. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/ui/pr_publish_app.py +49 -20
  12. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/updater.py +2 -2
  13. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/tests/test_core.py +37 -0
  14. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/tests/test_external_linters.py +8 -1
  15. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/tests/test_i18n.py +20 -4
  16. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/tests/test_mcp_server.py +122 -28
  17. gitpr_cli-0.0.37/tests/test_mcp_server_e2e.py +247 -0
  18. gitpr_cli-0.0.37/tests/test_pr_publish_linter_modal.py +173 -0
  19. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/LICENSE +0 -0
  20. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/gitpr_cli.egg-info/dependency_links.txt +0 -0
  21. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/gitpr_cli.egg-info/entry_points.txt +0 -0
  22. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/gitpr_cli.egg-info/requires.txt +0 -0
  23. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/gitpr_cli.egg-info/top_level.txt +0 -0
  24. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/pyproject.toml +0 -0
  25. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/setup.cfg +0 -0
  26. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/__init__.py +0 -0
  27. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/ai_providers.py +0 -0
  28. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/blame_engine.py +0 -0
  29. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/cache.py +0 -0
  30. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/chat_memory.py +0 -0
  31. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/github_api.py +0 -0
  32. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/i18n.py +0 -0
  33. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/issue_engine.py +0 -0
  34. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/linter_wizard.py +0 -0
  35. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/security.py +0 -0
  36. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/spinner.py +0 -0
  37. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/tui_issue.py +0 -0
  38. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/ui/__init__.py +0 -0
  39. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/ui/chat_app.py +0 -0
  40. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/ui/help_screen.py +0 -0
  41. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/ui/issue_app.py +0 -0
  42. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/ui/linter_app.py +0 -0
  43. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/ui/metrics_app.py +0 -0
  44. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/src/ui/pr_publish_help.py +0 -0
  45. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/tests/test_blame_metrics.py +0 -0
  46. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/tests/test_chat_backend.py +0 -0
  47. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/tests/test_install_wizard.py +0 -0
  48. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/tests/test_linter_metrics.py +0 -0
  49. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/tests/test_mcp_prompts.py +0 -0
  50. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/tests/test_metrics.py +0 -0
  51. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/tests/test_plugins.py +0 -0
  52. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/tests/test_pre_save.py +0 -0
  53. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/tests/test_skill_command.py +0 -0
  54. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/tests/test_smart_excludes.py +0 -0
  55. {gitpr_cli-0.0.36 → gitpr_cli-0.0.37}/tests/test_thinking_words.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gitpr-cli
3
- Version: 0.0.36
3
+ Version: 0.0.37
4
4
  Summary: AI-powered PR automation, commit messages, and code review (Gemini, DeepSeek, and Ollama)
5
5
  Author-email: Natan Fiuza <contato@natanfiuza.dev.br>
6
6
  Requires-Python: >=3.10
@@ -24,7 +24,7 @@ Dynamic: license-file
24
24
  <img src="https://raw.githubusercontent.com/natanfiuza/gitpr/main/docs/logo.png" alt="GitPR Logo" width="150">
25
25
  </p>
26
26
 
27
- GitPR CLI is a command-line automation tool that uses **Google Gemini** and **DeepSeek** artificial intelligence to analyze your code changes (git diff) or entire files. The tool automatically generates commit messages in the *Conventional Commits* standard, detailed Pull Request descriptions, and deep Code Reviews aimed at reducing technical debt.
27
+ GitPR CLI is a command-line automation tool that uses **Google Gemini**, **DeepSeek**, and **Ollama** artificial intelligence to analyze your code changes (git diff) or entire files. The tool automatically generates commit messages in the *Conventional Commits* standard, detailed Pull Request descriptions, and deep Code Reviews aimed at reducing technical debt.
28
28
 
29
29
  🌐 **Website:** [gitpr.natanfiuza.dev.br](https://gitpr.natanfiuza.dev.br/) · 📂 **Repository:** [github.com/natanfiuza/gitpr](https://github.com/natanfiuza/gitpr)
30
30
 
@@ -165,7 +165,7 @@ You can pass the following *flags* for specific actions:
165
165
  * `--status`: Lists uncommitted file changes categorized as **new**, **modified**, and **deleted** — fast, no AI, no network. 📖 [Full docs](https://github.com/natanfiuza/gitpr/blob/main/docs/git-status.md)
166
166
  * `--no-unstaged-check`: Skips the unstaged files verification before AI processing for a single invocation. Equivalent to `GITPR_SKIP_UNSTAGED_CHECK=true` for one run. 📖 [Full docs](https://github.com/natanfiuza/gitpr/blob/main/docs/git-status.md)
167
167
  * `--linter-setup`: **Interactive external linter wizard.** Guides you through installing and configuring external linters (ESLint, PHPCS, Stylelint) as a Checkstyle XML bridge. 📖 [Full docs](https://github.com/natanfiuza/gitpr/blob/main/docs/linter-regras-customizadas.md)
168
- * `--mcp`: Starts GitPR as an **MCP server** (Model Context Protocol) on stdio transport. Enables integration with VS Code, Cursor, Claude Desktop, and other MCP-compatible editors — exposing all GitPR AI capabilities as 10 annotated tools, 15 resources, and 7 pre-built prompts directly inside your IDE. Also available as the standalone `gitpr-mcp` command.
168
+ * `--mcp`: Starts GitPR as an **MCP server** (Model Context Protocol) on stdio transport. Enables integration with VS Code, Cursor, Claude Desktop, and other MCP-compatible editors — exposing all GitPR AI capabilities as 12 annotated tools, 15 resources, and 7 pre-built prompts directly inside your IDE. Also available as the standalone `gitpr-mcp` command.
169
169
  * `--plugins`: Lists all **globally installed plugins** — custom linter packs from `~/.gitpr/plugins/linter/` and MCP prompt templates from `~/.gitpr/plugins/prompts/`. These plugins apply across all your projects without duplication. 📖 [Full docs](https://github.com/natanfiuza/gitpr/blob/main/docs/plugins-system.md)
170
170
  * `--install`: **Interactive Setup Wizard.** Runs a guided 4-step setup: downloads skill templates, installs Git hooks, configures MCP for detected editors, and checks/requests your AI provider API key. Each step asks for confirmation before proceeding.
171
171
  * `-ih` or `--installhooks`: Automatically installs **local Git Hooks** (`pre-commit` and `prepare-commit-msg`) in your repository.
@@ -221,16 +221,28 @@ gitpr --linter-setup
221
221
 
222
222
  The wizard shows pre-configured presets (PHPCS, ESLint, Stylelint — controlled remotely via `templates/gitpr.linter-presets.json`), guides you through the native installation command (e.g.: `npm install --save-dev eslint`), and injects the correct `external_linters` block into your `.gitpr.linter.yml`.
223
223
 
224
- Every run — manual via `--linter` or automatic before commits — consolidates the Regex Rules and External Linters into a single Markdown report saved at `.gitpr/reports/linter/` (customizable via `OUTPUT_FILE_NAME_LINTER`).
224
+ Every run — manual via `--linter` or automatic before commits — consolidates the Regex Rules and External Linters into a single Markdown report saved at `.gitpr/reports/linter/` (customizable via `OUTPUT_FILE_NAME_LINTER`). The report is generated only when violations are found — clean runs create no files.
225
+
226
+ ## 🤝 Co-Author Signature
227
+
228
+ Every commit message generated by GitPR automatically carries the co-author trailer:
229
+
230
+ ```text
231
+ Co-Authored-By: Gitpr-cli <gitpr@natanfiuza.dev.br>
232
+ ```
233
+
234
+ The trailer is appended programmatically (never by the AI) in all flows: console suggestion (`gitpr -c`), the `prepare-commit-msg` hook, auto-commit (`--no-edit`), the PR publication TUI, and the MCP `generate_commit_message` tool. It is idempotent — never duplicated when the message already contains it — and is hidden from the TUI edit screen, injected only when the commit is executed.
235
+
236
+ 📖 **Full documentation:** [docs/commit-message-ia.md](https://github.com/natanfiuza/gitpr/blob/main/docs/commit-message-ia.md)
225
237
 
226
238
  ## 🧠 Multi-Model Architecture (AI-Agnostic)
227
239
 
228
240
  GitPR is not tied to a single Artificial Intelligence. During initial setup, the user can choose their default engine. We currently support:
229
- * **Google Gemini** (Default: `gemini-2.5-flash`)
230
- * **DeepSeek** (Default: `deepseek-chat`)
241
+ * **Google Gemini** (Default: `gemini-pro-latest`)
242
+ * **DeepSeek** (Default: `deepseek-v4-pro`)
231
243
  * **Ollama** (Local) — run models locally without internet, fully compatible with the OpenAI API format
232
244
 
233
- You can dynamically switch models by configuring the `GEMINI_API_MODEL` or `DEEPSEEK_API_MODEL` variables in your `~/.gitpr/.env` file, or switch in real-time using the `--provider` flag.
245
+ You can dynamically switch models by configuring the `GEMINI_API_MODEL_PRIMARY` or `DEEPSEEK_API_MODEL_PRIMARY` variables in your `~/.gitpr/.env` file, or switch in real-time using the `--provider` flag.
234
246
 
235
247
  ## 🎯 Customizable "Skills" System (Prompt Engineering)
236
248
 
@@ -249,6 +261,7 @@ GitPR automatically detects your system language and displays messages in your n
249
261
 
250
262
  * **Auto-detection:** On first run, GitPR detects your OS language and saves it to `~/.gitpr/.env` (`GITPR_LANG`).
251
263
  * **Translation files:** Language packs are downloaded automatically from the official repository to `~/.gitpr/langs/`.
264
+ * **5 languages:** English, Portuguese (Brazil), Portuguese (Portugal), Spanish, and French. Packs are versioned (`__lang_version__`) and self-update automatically (OTA) when a new translation release ships.
252
265
  * **English fallback:** If a translation is missing, the English text is displayed directly.
253
266
  * **Developer API:** Use `from src.i18n import __` and wrap all user-facing strings with `__("Your text here")`.
254
267
  * **Placeholders:** Supports named parameters — `__("Downloading {file}...", file="template.md")`.
@@ -445,6 +458,7 @@ If you want to implement GitPR as an automated quality barrier in your team, che
445
458
  * [**Install Wizard**](https://github.com/natanfiuza/gitpr/blob/main/docs/install-wizard.md) — Step-by-step guided setup for configuring GitPR in a new project.
446
459
  * [**AI Providers**](https://github.com/natanfiuza/gitpr/blob/main/docs/providers-ia.md) — Configuration and selection between Google Gemini, DeepSeek, and Ollama.
447
460
  * [**Auto-Updater**](https://github.com/natanfiuza/gitpr/blob/main/docs/auto-update.md) — How GitPR's automatic update (hot-swap) works.
461
+ * [**Architecture**](https://github.com/natanfiuza/gitpr/blob/main/docs/ARCHITECTURE.md) — Project architecture, design patterns, and technical stack overview.
448
462
  * [**GitHub Token (PAT) Integration and Security**](https://github.com/natanfiuza/gitpr/blob/main/docs/github-pat-integration.md) — Understand how GitPR creates issues directly in the repository with authentication.
449
463
  * [**Internationalization (i18n)**](https://github.com/natanfiuza/gitpr/blob/main/docs/i18n_explanation.md) — Architecture, usage patterns, and how to add new languages.
450
464
  * [**MCP Integration**](https://github.com/natanfiuza/gitpr/blob/main/docs/mcp-integration.md) — Connect GitPR to VS Code, Cursor, and Claude Desktop via Model Context Protocol.