gitai-local 1.3.0__tar.gz → 1.3.2__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gitai-local
3
- Version: 1.3.0
3
+ Version: 1.3.2
4
4
  Summary: AI-powered conventional commit message generator running 100% locally
5
5
  License-Expression: MIT
6
6
  Project-URL: Homepage, https://github.com/PabloSalinasDev/GitAI-CLI
@@ -64,7 +64,7 @@ The benefit of implementing this CLI is twofold:
64
64
  3. After staging changes, run `gitai`. It feeds the diff (or initial commit context) into the model and proposes a commit message.
65
65
  4. At the end of your session, run `gitai out` to stop the daemon and free RAM.
66
66
 
67
- ### 📖 Interactive Help & Documentation Access
67
+ ### Interactive Help & Documentation Access
68
68
 
69
69
  GitAI CLI features a native, robust command-line validation and help module. If you ever need a quick reminder of the available architecture commands, explicit routing links, or want to report a technical issue, you can invoke the user manual directly from your shell.
70
70
 
@@ -206,9 +206,9 @@ Based on extensive stress-testing on standard consumer hardware (e.g., Intel i7
206
206
 
207
207
  | Hardware Profile | Context Size | Estimated Time * | Commit Accuracy |
208
208
  |------------------|--------------|------------------|-----------------|
209
- | **Modern Desktop / Laptop**<br>*(Ryzen 5/7, Core i5/i7 11th+ Gen, DDR5)* | Small to Large Diffs | **~8 – 20 seconds** | ~98% |
210
- | **Older / Standard Hardware**<br>*(Legacy Intel i7, DDR4 @ 2400MHz)* | Small to Medium Diffs | **~20 – 40 seconds** | ~98% |
211
- | **Stress Test / Massive Changes**<br>*(Legacy Hardware + Dense Diffs)* | Large Multi-file Diffs | **~40 – 70 seconds** | ~98% |
209
+ | **Modern Desktop / Laptop**<br>*(Ryzen 5/7, Core i5/i7 11th+ Gen, DDR5)* | Small to Large Diffs | **~8 – 20 seconds** | ~90% |
210
+ | **Older / Standard Hardware**<br>*(Legacy Intel i7, DDR4 @ 2400MHz)* | Small to Medium Diffs | **~20 – 40 seconds** | ~90% |
211
+ | **Stress Test / Massive Changes**<br>*(Legacy Hardware + Dense Diffs)* | Large Multi-file Diffs | **~40 – 70 seconds** | ~85% |
212
212
 
213
213
  > **Note on Performance:** Times are heavily bound to RAM clock speed and single-core efficiency. A dense, multi-file diff analyzed on legacy hardware might occasionally touch the upper boundary of the stress test zone. However, GitAI's built-in traffic manager ensures payloads remain strictly bounded to keep local execution controlled and predictable.
214
214
 
@@ -218,7 +218,7 @@ Based on extensive stress-testing on standard consumer hardware (e.g., Intel i7
218
218
 
219
219
  Why are these times so consistent? GitAI does not just dump raw data into the LLM. It includes a custom pre-processing pipeline that strips out compiler noise, binary files, white spaces, and structural brackets before sending the payload.
220
220
 
221
- * **Linear vs. Deductive Processing:** Testing proved that sending a complete, clean code block up to 2500 characters is significantly faster than truncating it too early. By providing the model with full, clean context, the LLM processes the data linearly instead of wasting CPU cycles trying to "guess" missing code structures. This balance cuts down processing overhead by up to 30 seconds on older machines while boosting commit accuracy to a staggering **98%**.
221
+ * **Linear vs. Deductive Processing:** Testing proved that sending a complete, clean code block up to 2500 characters is significantly faster than truncating it too early. By providing the model with full, clean context, the LLM processes the data linearly instead of wasting CPU cycles trying to "guess" missing code structures. This balance cuts down processing overhead by up to 40 seconds on older machines while boosting commit accuracy to a staggering **85%**.
222
222
 
223
223
  ## Dependencies
224
224
 
@@ -231,6 +231,33 @@ Why are these times so consistent? GitAI does not just dump raw data into the LL
231
231
 
232
232
  ---
233
233
 
234
+ ## Privacy & Security
235
+
236
+ GitAI is designed with a strict privacy-first architecture:
237
+
238
+ * **100% Local Execution:** All prompt processing and commit analysis run entirely on your local CPU/GPU using `llama.cpp` bindings.
239
+ * **Zero Telemetry:** The CLI collects no analytics, logs, or usage metrics.
240
+ * **Air-Gapped Friendly:** Once the GGUF model is downloaded, no internet connection is required to generate commits or run commands.
241
+ * **No Code Exposure:** Your repository diffs and code never leave your machine or hit external APIs.
242
+
243
+ ---
244
+
245
+ ## Uninstallation
246
+
247
+ To completely remove GitAI and delete the downloaded local model weights (~4.7 GB):
248
+
249
+ ```bash
250
+ # 1. Delete the local model cache
251
+ Remove-Item -Recurse -Force "$env:LOCALAPPDATA\gitai" # Windows
252
+
253
+ # 2. Uninstall the package
254
+ pipx uninstall gitai-local # If installed via pipx (README instructions)
255
+ # or
256
+ pip uninstall gitai-local # If installed via standard pip (PyPI default)
257
+ ```
258
+
259
+ ---
260
+
234
261
  ## License
235
262
 
236
263
  This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
@@ -43,7 +43,7 @@ The benefit of implementing this CLI is twofold:
43
43
  3. After staging changes, run `gitai`. It feeds the diff (or initial commit context) into the model and proposes a commit message.
44
44
  4. At the end of your session, run `gitai out` to stop the daemon and free RAM.
45
45
 
46
- ### 📖 Interactive Help & Documentation Access
46
+ ### Interactive Help & Documentation Access
47
47
 
48
48
  GitAI CLI features a native, robust command-line validation and help module. If you ever need a quick reminder of the available architecture commands, explicit routing links, or want to report a technical issue, you can invoke the user manual directly from your shell.
49
49
 
@@ -185,9 +185,9 @@ Based on extensive stress-testing on standard consumer hardware (e.g., Intel i7
185
185
 
186
186
  | Hardware Profile | Context Size | Estimated Time * | Commit Accuracy |
187
187
  |------------------|--------------|------------------|-----------------|
188
- | **Modern Desktop / Laptop**<br>*(Ryzen 5/7, Core i5/i7 11th+ Gen, DDR5)* | Small to Large Diffs | **~8 – 20 seconds** | ~98% |
189
- | **Older / Standard Hardware**<br>*(Legacy Intel i7, DDR4 @ 2400MHz)* | Small to Medium Diffs | **~20 – 40 seconds** | ~98% |
190
- | **Stress Test / Massive Changes**<br>*(Legacy Hardware + Dense Diffs)* | Large Multi-file Diffs | **~40 – 70 seconds** | ~98% |
188
+ | **Modern Desktop / Laptop**<br>*(Ryzen 5/7, Core i5/i7 11th+ Gen, DDR5)* | Small to Large Diffs | **~8 – 20 seconds** | ~90% |
189
+ | **Older / Standard Hardware**<br>*(Legacy Intel i7, DDR4 @ 2400MHz)* | Small to Medium Diffs | **~20 – 40 seconds** | ~90% |
190
+ | **Stress Test / Massive Changes**<br>*(Legacy Hardware + Dense Diffs)* | Large Multi-file Diffs | **~40 – 70 seconds** | ~85% |
191
191
 
192
192
  > **Note on Performance:** Times are heavily bound to RAM clock speed and single-core efficiency. A dense, multi-file diff analyzed on legacy hardware might occasionally touch the upper boundary of the stress test zone. However, GitAI's built-in traffic manager ensures payloads remain strictly bounded to keep local execution controlled and predictable.
193
193
 
@@ -197,7 +197,7 @@ Based on extensive stress-testing on standard consumer hardware (e.g., Intel i7
197
197
 
198
198
  Why are these times so consistent? GitAI does not just dump raw data into the LLM. It includes a custom pre-processing pipeline that strips out compiler noise, binary files, white spaces, and structural brackets before sending the payload.
199
199
 
200
- * **Linear vs. Deductive Processing:** Testing proved that sending a complete, clean code block up to 2500 characters is significantly faster than truncating it too early. By providing the model with full, clean context, the LLM processes the data linearly instead of wasting CPU cycles trying to "guess" missing code structures. This balance cuts down processing overhead by up to 30 seconds on older machines while boosting commit accuracy to a staggering **98%**.
200
+ * **Linear vs. Deductive Processing:** Testing proved that sending a complete, clean code block up to 2500 characters is significantly faster than truncating it too early. By providing the model with full, clean context, the LLM processes the data linearly instead of wasting CPU cycles trying to "guess" missing code structures. This balance cuts down processing overhead by up to 40 seconds on older machines while boosting commit accuracy to a staggering **85%**.
201
201
 
202
202
  ## Dependencies
203
203
 
@@ -210,6 +210,33 @@ Why are these times so consistent? GitAI does not just dump raw data into the LL
210
210
 
211
211
  ---
212
212
 
213
+ ## Privacy & Security
214
+
215
+ GitAI is designed with a strict privacy-first architecture:
216
+
217
+ * **100% Local Execution:** All prompt processing and commit analysis run entirely on your local CPU/GPU using `llama.cpp` bindings.
218
+ * **Zero Telemetry:** The CLI collects no analytics, logs, or usage metrics.
219
+ * **Air-Gapped Friendly:** Once the GGUF model is downloaded, no internet connection is required to generate commits or run commands.
220
+ * **No Code Exposure:** Your repository diffs and code never leave your machine or hit external APIs.
221
+
222
+ ---
223
+
224
+ ## Uninstallation
225
+
226
+ To completely remove GitAI and delete the downloaded local model weights (~4.7 GB):
227
+
228
+ ```bash
229
+ # 1. Delete the local model cache
230
+ Remove-Item -Recurse -Force "$env:LOCALAPPDATA\gitai" # Windows
231
+
232
+ # 2. Uninstall the package
233
+ pipx uninstall gitai-local # If installed via pipx (README instructions)
234
+ # or
235
+ pip uninstall gitai-local # If installed via standard pip (PyPI default)
236
+ ```
237
+
238
+ ---
239
+
213
240
  ## License
214
241
 
215
242
  This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
@@ -33,7 +33,7 @@ def ensure_model():
33
33
  print(Fore.CYAN + "│ GitAI - First run: downloading AI model │")
34
34
  print(Fore.CYAN + "│ AI Model Setup - one time only │")
35
35
  print(Fore.CYAN + "│ │")
36
- print(Fore.CYAN + "│ Developed by PyBloSoft © 2026 - Ver. 1.3.0 │")
36
+ print(Fore.CYAN + "│ Developed by PyBloSoft © 2026 - Ver. 1.3.2 │")
37
37
  print(Fore.CYAN + "└─────────────────────────────────────────────┘\n")
38
38
 
39
39
  MODEL_DIR.mkdir(parents=True, exist_ok=True)
@@ -50,25 +50,27 @@ def ensure_model():
50
50
 
51
51
  def print_progress(pct, d_gb, t_gb):
52
52
  bar_len = 30
53
- filled = int(bar_len * pct)
54
- bar = Fore.YELLOW + "█" * filled + Style.DIM + "░" * (bar_len - filled)
55
- print(Fore.YELLOW + f"\r[{bar}" + Style.RESET_ALL + Fore.YELLOW + f"] {pct*100:.1f}% {d_gb:.2f}/{t_gb:.2f} GB", end="", flush=True)
53
+ filled = int(bar_len * pct)
54
+ bar = "█" * filled + "░" * (bar_len - filled)
55
+
56
+ line = f"\r\033[K[{bar}] {pct*100:.1f}% {d_gb:.2f}/{t_gb:.2f} GB"
57
+ sys.stdout.write(Fore.YELLOW + line + Style.RESET_ALL)
58
+ sys.stdout.flush()
56
59
 
57
- f = None
58
60
  try:
59
61
  with open(tmp_path, "wb") as f:
60
62
  with httpx.stream("GET", MODEL_URL, follow_redirects=True, timeout=None) as r:
61
63
  r.raise_for_status()
62
- total = int(r.headers.get("content-length", 0))
64
+ total = int(r.headers.get("content-length", 0))
63
65
  downloaded = 0
64
66
 
65
67
  for chunk in r.iter_bytes(chunk_size=1024 * 256):
66
68
  f.write(chunk)
67
69
  downloaded += len(chunk)
68
70
  if total:
69
- pct = downloaded / total
71
+ pct = downloaded / total
70
72
  d_gb = downloaded / 1_073_741_824
71
- t_gb = total / 1_073_741_824
73
+ t_gb = total / 1_073_741_824
72
74
  print_progress(pct, d_gb, t_gb)
73
75
 
74
76
  sys.stdout.write("\033[?25h")
@@ -78,13 +80,6 @@ def ensure_model():
78
80
  print(Fore.GREEN + "\n\n Model downloaded successfully.\n")
79
81
 
80
82
  except KeyboardInterrupt:
81
-
82
- if f and not f.closed:
83
- try:
84
- f.close()
85
- except Exception:
86
- pass
87
-
88
83
  sys.stdout.write("\033[?25h")
89
84
  sys.stdout.flush()
90
85
 
@@ -98,13 +93,6 @@ def ensure_model():
98
93
  os._exit(1)
99
94
 
100
95
  except Exception as e:
101
-
102
- if f and not f.closed:
103
- try:
104
- f.close()
105
- except Exception:
106
- pass
107
-
108
96
  sys.stdout.write("\033[?25h")
109
97
  sys.stdout.flush()
110
98
 
@@ -10,7 +10,6 @@ import threading
10
10
  from colorama import init, Fore, Style
11
11
 
12
12
  from gitai.config import MODEL_PATH, PORT
13
- import __main__
14
13
 
15
14
  init(autoreset=True)
16
15
 
@@ -112,14 +111,16 @@ def clean_git_diff(raw_diff, max_estimated=2500, debug=True):
112
111
  percent = 95
113
112
 
114
113
  filled_length = int(bar_length * percent // 100)
115
- bar = Fore.YELLOW + '█' * filled_length + Style.DIM + '░' * (bar_length - filled_length)
114
+ bar = '█' * filled_length + '░' * (bar_length - filled_length)
116
115
 
117
- sys.stdout.write(Fore.YELLOW + f'\r Crunching diff: [{bar}' + Style.RESET_ALL + Fore.YELLOW + f'] {percent:.0f}%')
116
+ line = f"\r\033[K Crunching diff: [{bar}] {percent:.0f}%"
117
+ sys.stdout.write(Fore.YELLOW + line + Style.RESET_ALL)
118
118
  sys.stdout.flush()
119
119
  time.sleep(0.2)
120
120
 
121
121
  bar_final = '█' * bar_length
122
- sys.stdout.write(Fore.YELLOW + f'\r Crunching diff: [{bar_final}' + Fore.YELLOW + '] 100%\n\n')
122
+ final_line = f"\r\033[K Crunching diff: [{bar_final}] 100%\n\n"
123
+ sys.stdout.write(Fore.YELLOW + final_line + Style.RESET_ALL)
123
124
  sys.stdout.flush()
124
125
 
125
126
  finally:
@@ -7,6 +7,18 @@ from gitai.llm_client import start_daemon, stop_daemon, generate_commit_message
7
7
 
8
8
  init(autoreset=True)
9
9
 
10
+ def is_git_repo():
11
+ result = subprocess.run(
12
+ ["git", "rev-parse", "--is-inside-work-tree"],
13
+ capture_output=True,
14
+ text=True,
15
+ check=False,
16
+ encoding="utf-8",
17
+ errors="replace",
18
+ env=get_secure_env()
19
+ )
20
+ return result.returncode == 0
21
+
10
22
  def is_initial_commit():
11
23
  result = subprocess.run(
12
24
  ["git", "rev-parse", "HEAD"],
@@ -82,21 +94,27 @@ def run_commit(message):
82
94
 
83
95
  def print_help():
84
96
  """Print the user manual integrated directly into the terminal with web access."""
85
- print(Fore.CYAN + "═"*74)
86
- print(Fore.CYAN + " GitAI CLI - Offline Privacy-First Commit Generator")
87
- print(Fore.CYAN + " Developed by PyBloSoft © 2026 - Ver. 1.3.0")
88
- print(Fore.CYAN + ""*74)
97
+
98
+ print(Fore.CYAN + ""*86)
99
+ print(Fore.CYAN + " GitAI CLI - Offline Privacy-First Commit Generator")
100
+ print(Fore.CYAN + " Developed by PyBloSoft © 2026 - Ver. 1.3.2")
101
+ print(Fore.CYAN + "═"*86)
89
102
  print("Usage:")
90
103
  print(f" gitai {Style.DIM}Analyze staged changes and generate a conventional commit.{Style.RESET_ALL}")
91
104
  print(f" gitai init {Style.DIM}Download and configure the local LLM engine weights.{Style.RESET_ALL}")
92
105
  print(f" gitai start {Style.DIM}Launch the background daemon and prime the prompt cache.{Style.RESET_ALL}")
93
106
  print(f" gitai out {Style.DIM}Stop the background daemon session and free system RAM.{Style.RESET_ALL}")
94
107
  print(f" gitai help {Style.DIM}Show this user manual screen.{Style.RESET_ALL}")
95
- print(Fore.CYAN + "─"*74)
108
+ print(Fore.CYAN + "─"*86)
109
+ print("Privacy & Security Guarantees:")
110
+ print(f" • {Fore.GREEN}100% Local Inference:{Style.RESET_ALL} Runs entirely on your CPU/RAM using local GGUF weights.")
111
+ print(f" • {Fore.GREEN}Zero Telemetry:{Style.RESET_ALL} No internet connection required, no tracking, no data collection.")
112
+ print(f" • {Fore.GREEN}Air-Gapped Ready:{Style.RESET_ALL} Your source code and diffs never leave this machine.")
113
+ print(Fore.CYAN + "─"*86)
96
114
  print("Links & Support:")
97
115
  print(f" • Documentation: {Fore.BLUE}https://github.com/PabloSalinasDev/GitAI-CLI#readme{Style.RESET_ALL}")
98
116
  print(f" • Report an Issue: {Fore.BLUE}https://github.com/PabloSalinasDev/GitAI-CLI/issues{Style.RESET_ALL}")
99
- print(Fore.CYAN + "═"*74 + "\n")
117
+ print(Fore.CYAN + "═"*86 + "\n")
100
118
 
101
119
  def main():
102
120
  args = sys.argv[1:]
@@ -109,6 +127,10 @@ def main():
109
127
 
110
128
  # 2. START LOGICAL DAY: gitai start (Check local language and raise the model)
111
129
  if args and args[0] == "start":
130
+ if not is_git_repo():
131
+ print(Fore.RED + " Error: this directory is not a git repository.")
132
+ print(Fore.CYAN + " Run 'git init' first.")
133
+ return
112
134
  if not model_exists():
113
135
  print(Fore.CYAN + " Model file not found. Run 'gitai init' first to download it.")
114
136
  return
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gitai-local
3
- Version: 1.3.0
3
+ Version: 1.3.2
4
4
  Summary: AI-powered conventional commit message generator running 100% locally
5
5
  License-Expression: MIT
6
6
  Project-URL: Homepage, https://github.com/PabloSalinasDev/GitAI-CLI
@@ -64,7 +64,7 @@ The benefit of implementing this CLI is twofold:
64
64
  3. After staging changes, run `gitai`. It feeds the diff (or initial commit context) into the model and proposes a commit message.
65
65
  4. At the end of your session, run `gitai out` to stop the daemon and free RAM.
66
66
 
67
- ### 📖 Interactive Help & Documentation Access
67
+ ### Interactive Help & Documentation Access
68
68
 
69
69
  GitAI CLI features a native, robust command-line validation and help module. If you ever need a quick reminder of the available architecture commands, explicit routing links, or want to report a technical issue, you can invoke the user manual directly from your shell.
70
70
 
@@ -206,9 +206,9 @@ Based on extensive stress-testing on standard consumer hardware (e.g., Intel i7
206
206
 
207
207
  | Hardware Profile | Context Size | Estimated Time * | Commit Accuracy |
208
208
  |------------------|--------------|------------------|-----------------|
209
- | **Modern Desktop / Laptop**<br>*(Ryzen 5/7, Core i5/i7 11th+ Gen, DDR5)* | Small to Large Diffs | **~8 – 20 seconds** | ~98% |
210
- | **Older / Standard Hardware**<br>*(Legacy Intel i7, DDR4 @ 2400MHz)* | Small to Medium Diffs | **~20 – 40 seconds** | ~98% |
211
- | **Stress Test / Massive Changes**<br>*(Legacy Hardware + Dense Diffs)* | Large Multi-file Diffs | **~40 – 70 seconds** | ~98% |
209
+ | **Modern Desktop / Laptop**<br>*(Ryzen 5/7, Core i5/i7 11th+ Gen, DDR5)* | Small to Large Diffs | **~8 – 20 seconds** | ~90% |
210
+ | **Older / Standard Hardware**<br>*(Legacy Intel i7, DDR4 @ 2400MHz)* | Small to Medium Diffs | **~20 – 40 seconds** | ~90% |
211
+ | **Stress Test / Massive Changes**<br>*(Legacy Hardware + Dense Diffs)* | Large Multi-file Diffs | **~40 – 70 seconds** | ~85% |
212
212
 
213
213
  > **Note on Performance:** Times are heavily bound to RAM clock speed and single-core efficiency. A dense, multi-file diff analyzed on legacy hardware might occasionally touch the upper boundary of the stress test zone. However, GitAI's built-in traffic manager ensures payloads remain strictly bounded to keep local execution controlled and predictable.
214
214
 
@@ -218,7 +218,7 @@ Based on extensive stress-testing on standard consumer hardware (e.g., Intel i7
218
218
 
219
219
  Why are these times so consistent? GitAI does not just dump raw data into the LLM. It includes a custom pre-processing pipeline that strips out compiler noise, binary files, white spaces, and structural brackets before sending the payload.
220
220
 
221
- * **Linear vs. Deductive Processing:** Testing proved that sending a complete, clean code block up to 2500 characters is significantly faster than truncating it too early. By providing the model with full, clean context, the LLM processes the data linearly instead of wasting CPU cycles trying to "guess" missing code structures. This balance cuts down processing overhead by up to 30 seconds on older machines while boosting commit accuracy to a staggering **98%**.
221
+ * **Linear vs. Deductive Processing:** Testing proved that sending a complete, clean code block up to 2500 characters is significantly faster than truncating it too early. By providing the model with full, clean context, the LLM processes the data linearly instead of wasting CPU cycles trying to "guess" missing code structures. This balance cuts down processing overhead by up to 40 seconds on older machines while boosting commit accuracy to a staggering **85%**.
222
222
 
223
223
  ## Dependencies
224
224
 
@@ -231,6 +231,33 @@ Why are these times so consistent? GitAI does not just dump raw data into the LL
231
231
 
232
232
  ---
233
233
 
234
+ ## Privacy & Security
235
+
236
+ GitAI is designed with a strict privacy-first architecture:
237
+
238
+ * **100% Local Execution:** All prompt processing and commit analysis run entirely on your local CPU/GPU using `llama.cpp` bindings.
239
+ * **Zero Telemetry:** The CLI collects no analytics, logs, or usage metrics.
240
+ * **Air-Gapped Friendly:** Once the GGUF model is downloaded, no internet connection is required to generate commits or run commands.
241
+ * **No Code Exposure:** Your repository diffs and code never leave your machine or hit external APIs.
242
+
243
+ ---
244
+
245
+ ## Uninstallation
246
+
247
+ To completely remove GitAI and delete the downloaded local model weights (~4.7 GB):
248
+
249
+ ```bash
250
+ # 1. Delete the local model cache
251
+ Remove-Item -Recurse -Force "$env:LOCALAPPDATA\gitai" # Windows
252
+
253
+ # 2. Uninstall the package
254
+ pipx uninstall gitai-local # If installed via pipx (README instructions)
255
+ # or
256
+ pip uninstall gitai-local # If installed via standard pip (PyPI default)
257
+ ```
258
+
259
+ ---
260
+
234
261
  ## License
235
262
 
236
263
  This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "gitai-local"
7
- version = "1.3.0"
7
+ version = "1.3.2"
8
8
  description = "AI-powered conventional commit message generator running 100% locally"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
File without changes
File without changes