devcommit 0.1.5.0__tar.gz → 0.1.5.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.
- {devcommit-0.1.5.0 → devcommit-0.1.5.2}/PKG-INFO +63 -19
- {devcommit-0.1.5.0 → devcommit-0.1.5.2}/README.md +62 -18
- devcommit-0.1.5.2/devcommit/__version__.py +7 -0
- {devcommit-0.1.5.0 → devcommit-0.1.5.2}/devcommit/app/ai_providers.py +127 -95
- devcommit-0.1.5.2/devcommit/app/changelog.py +89 -0
- {devcommit-0.1.5.0 → devcommit-0.1.5.2}/devcommit/app/gemini_ai.py +11 -2
- {devcommit-0.1.5.0 → devcommit-0.1.5.2}/devcommit/main.py +1022 -426
- {devcommit-0.1.5.0 → devcommit-0.1.5.2}/devcommit/utils/parser.py +12 -0
- {devcommit-0.1.5.0 → devcommit-0.1.5.2}/pyproject.toml +1 -1
- {devcommit-0.1.5.0 → devcommit-0.1.5.2}/COPYING +0 -0
- {devcommit-0.1.5.0 → devcommit-0.1.5.2}/devcommit/__init__.py +0 -0
- {devcommit-0.1.5.0 → devcommit-0.1.5.2}/devcommit/app/__init__.py +0 -0
- {devcommit-0.1.5.0 → devcommit-0.1.5.2}/devcommit/app/prompt.py +0 -0
- {devcommit-0.1.5.0 → devcommit-0.1.5.2}/devcommit/utils/__init__.py +0 -0
- {devcommit-0.1.5.0 → devcommit-0.1.5.2}/devcommit/utils/git.py +0 -0
- {devcommit-0.1.5.0 → devcommit-0.1.5.2}/devcommit/utils/logger.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devcommit
|
|
3
|
-
Version: 0.1.5.
|
|
3
|
+
Version: 0.1.5.2
|
|
4
4
|
Summary: AI-powered git commit message generator
|
|
5
5
|
License: GNU GENERAL PUBLIC LICENSE
|
|
6
6
|
Version 3, 29 June 2007
|
|
@@ -711,6 +711,7 @@ A command-line AI tool for autocommits.
|
|
|
711
711
|
|
|
712
712
|
- 🤖 **Multi-AI Provider Support** - Choose from Gemini, Groq, OpenAI, Claude, Ollama, or custom APIs
|
|
713
713
|
- 🚀 Automatic commit generation using AI
|
|
714
|
+
- 📝 **Changelog Generation** - Automatically generate markdown changelogs from your changes
|
|
714
715
|
- 📁 Directory-based commits - create separate commits for each root directory
|
|
715
716
|
- 🎯 Interactive mode to choose between global or directory-based commits
|
|
716
717
|
- 📄 **Commit specific files or folders** - Stage and commit only selected files/directories
|
|
@@ -1115,6 +1116,47 @@ Selecting "Regenerate commit messages" will:
|
|
|
1115
1116
|
|
|
1116
1117
|
This works for all commit modes (global, directory, and per-file commits).
|
|
1117
1118
|
|
|
1119
|
+
### Changelog Generation
|
|
1120
|
+
|
|
1121
|
+
DevCommit can automatically generate markdown changelog files from your changes using AI.
|
|
1122
|
+
|
|
1123
|
+
**Usage:**
|
|
1124
|
+
|
|
1125
|
+
```bash
|
|
1126
|
+
# Generate changelog after committing
|
|
1127
|
+
devcommit --changelog
|
|
1128
|
+
|
|
1129
|
+
# Generate changelog before staging (recommended)
|
|
1130
|
+
devcommit --stageAll --changelog
|
|
1131
|
+
|
|
1132
|
+
# Short form
|
|
1133
|
+
devcommit -s -c
|
|
1134
|
+
|
|
1135
|
+
# With specific files
|
|
1136
|
+
devcommit --stageAll --changelog --files src/
|
|
1137
|
+
```
|
|
1138
|
+
|
|
1139
|
+
**How it works:**
|
|
1140
|
+
|
|
1141
|
+
- **With `--stageAll`**: Changelog is generated from unstaged changes **before** staging
|
|
1142
|
+
- **Without `--stageAll`**: Changelog is generated from the last commit **after** committing
|
|
1143
|
+
- Changelogs are saved as markdown files with datetime-based names (e.g., `2026-01-28_00-55-30.md`)
|
|
1144
|
+
- Default directory: `changelogs/` (configurable via `CHANGELOG_DIR` in `.dcommit`)
|
|
1145
|
+
- Uses Keep a Changelog format with AI-generated content
|
|
1146
|
+
|
|
1147
|
+
**Example workflow:**
|
|
1148
|
+
|
|
1149
|
+
```bash
|
|
1150
|
+
# Make changes to your code
|
|
1151
|
+
# ...
|
|
1152
|
+
|
|
1153
|
+
# Stage all changes and generate changelog before committing
|
|
1154
|
+
devcommit --stageAll --changelog
|
|
1155
|
+
|
|
1156
|
+
# The changelog file is created in changelogs/ directory
|
|
1157
|
+
# Then changes are staged and committed
|
|
1158
|
+
```
|
|
1159
|
+
|
|
1118
1160
|
### Additional Options
|
|
1119
1161
|
|
|
1120
1162
|
- `--excludeFiles` or `-e`: Exclude specific files from the diff
|
|
@@ -1124,6 +1166,7 @@ This works for all commit modes (global, directory, and per-file commits).
|
|
|
1124
1166
|
- `--directory` or `-d`: Force directory-based commits
|
|
1125
1167
|
- `--files` or `-f`: Stage and commit specific files or folders (can specify multiple)
|
|
1126
1168
|
- `--push` or `-p`: Push commits to remote after committing
|
|
1169
|
+
- `--changelog` or `-c`: Generate changelog file from changes
|
|
1127
1170
|
|
|
1128
1171
|
### Examples
|
|
1129
1172
|
|
|
@@ -1157,6 +1200,15 @@ devcommit -s -f src/core src/modules/account/ --directory
|
|
|
1157
1200
|
|
|
1158
1201
|
# Stage and commit, then push
|
|
1159
1202
|
devcommit -s -f src/core src/modules/account/ -p
|
|
1203
|
+
|
|
1204
|
+
# Generate changelog before staging and committing
|
|
1205
|
+
devcommit --stageAll --changelog
|
|
1206
|
+
|
|
1207
|
+
# Generate changelog after committing
|
|
1208
|
+
devcommit --changelog
|
|
1209
|
+
|
|
1210
|
+
# Generate changelog with specific files
|
|
1211
|
+
devcommit -s -c -f src/
|
|
1160
1212
|
```
|
|
1161
1213
|
|
|
1162
1214
|
## AI Provider Support
|
|
@@ -1188,28 +1240,19 @@ devcommit
|
|
|
1188
1240
|
```bash
|
|
1189
1241
|
export AI_PROVIDER=openrouter
|
|
1190
1242
|
export OPENROUTER_API_KEY='your-openrouter-api-key'
|
|
1191
|
-
# Optional: specify model (default:
|
|
1192
|
-
export OPENROUTER_MODEL='
|
|
1243
|
+
# Optional: specify model (default: meta-llama/llama-3.3-70b-instruct:free)
|
|
1244
|
+
export OPENROUTER_MODEL='meta-llama/llama-3.3-70b-instruct:free'
|
|
1193
1245
|
devcommit
|
|
1194
1246
|
```
|
|
1195
1247
|
|
|
1196
1248
|
**Popular free models on OpenRouter (add `:free` suffix):**
|
|
1197
1249
|
|
|
1198
|
-
**
|
|
1199
|
-
- `
|
|
1200
|
-
- `
|
|
1201
|
-
- `
|
|
1202
|
-
- `
|
|
1203
|
-
|
|
1204
|
-
**Reasoning & General Purpose:**
|
|
1205
|
-
- `xiaomi/mimo-v2-flash:free` - Mixture-of-Experts model (309B params, top open-source on SWE-bench)
|
|
1206
|
-
- `tngtech/deepseek-r1t2-chimera:free` - DeepSeek R1T2 reasoning model (671B params)
|
|
1207
|
-
- `tngtech/deepseek-r1t-chimera:free` - DeepSeek R1T reasoning model
|
|
1208
|
-
- `tngtech/tng-r1t-chimera:free` - Creative storytelling and character interaction model
|
|
1209
|
-
|
|
1210
|
-
**Lightweight & Fast:**
|
|
1211
|
-
- `z-ai/glm-4.5-air:free` - GLM 4.5 Air lightweight variant (MoE architecture)
|
|
1212
|
-
- `nvidia/nemotron-3-nano-30b-a3b:free` - NVIDIA's efficient small model (30B params, 3B active)
|
|
1250
|
+
**Recommended Models:**
|
|
1251
|
+
- `meta-llama/llama-3.3-70b-instruct:free` - Llama 3.3 70B Instruct (Powerful & General Purpose)
|
|
1252
|
+
- `google/gemma-3-27b-it:free` - Google Gemma 3 27B Instruct (Efficient & Capable)
|
|
1253
|
+
- `openai/gpt-oss-120b:free` - OpenAI GPT-OSS 120B (Large & Experimental)
|
|
1254
|
+
- `tngtech/deepseek-r1t-chimera:free` - DeepSeek R1T Chimera (Strong Reasoning)
|
|
1255
|
+
- `qwen/qwen3-next-80b-a3b-instruct:free` - Qwen3 Next 80B (Advanced Instruction Following)
|
|
1213
1256
|
|
|
1214
1257
|
**Important Notes:**
|
|
1215
1258
|
- **Logging Requirements:** Some free models may log your prompts and responses for model improvement purposes. This means:
|
|
@@ -1274,7 +1317,7 @@ All configuration can be set via **environment variables** or **`.dcommit` file*
|
|
|
1274
1317
|
| Variable | Description | Default |
|
|
1275
1318
|
|----------|-------------|---------|
|
|
1276
1319
|
| `OPENROUTER_API_KEY` | OpenRouter API key ([Get it here](https://openrouter.ai/keys)) | - |
|
|
1277
|
-
| `OPENROUTER_MODEL` | Model name (add `:free` suffix for free models) | `
|
|
1320
|
+
| `OPENROUTER_MODEL` | Model name (add `:free` suffix for free models) | `meta-llama/llama-3.3-70b-instruct:free` |
|
|
1278
1321
|
|
|
1279
1322
|
**Anthropic:**
|
|
1280
1323
|
| Variable | Description | Default |
|
|
@@ -1305,6 +1348,7 @@ All configuration can be set via **environment variables** or **`.dcommit` file*
|
|
|
1305
1348
|
| `COMMIT_MODE` | Default commit strategy | `auto` | `auto`, `directory`, `global`, `related` |
|
|
1306
1349
|
| `EXCLUDE_FILES` | Files to exclude from diff | `package-lock.json, pnpm-lock.yaml, yarn.lock, *.lock` | Comma-separated file patterns |
|
|
1307
1350
|
| `MAX_TOKENS` | Maximum tokens for AI response | `8192` | Any positive integer |
|
|
1351
|
+
| `CHANGELOG_DIR` | Directory for changelog files | `changelogs` | Any directory path |
|
|
1308
1352
|
|
|
1309
1353
|
### Configuration Priority
|
|
1310
1354
|
|
|
@@ -6,6 +6,7 @@ A command-line AI tool for autocommits.
|
|
|
6
6
|
|
|
7
7
|
- 🤖 **Multi-AI Provider Support** - Choose from Gemini, Groq, OpenAI, Claude, Ollama, or custom APIs
|
|
8
8
|
- 🚀 Automatic commit generation using AI
|
|
9
|
+
- 📝 **Changelog Generation** - Automatically generate markdown changelogs from your changes
|
|
9
10
|
- 📁 Directory-based commits - create separate commits for each root directory
|
|
10
11
|
- 🎯 Interactive mode to choose between global or directory-based commits
|
|
11
12
|
- 📄 **Commit specific files or folders** - Stage and commit only selected files/directories
|
|
@@ -410,6 +411,47 @@ Selecting "Regenerate commit messages" will:
|
|
|
410
411
|
|
|
411
412
|
This works for all commit modes (global, directory, and per-file commits).
|
|
412
413
|
|
|
414
|
+
### Changelog Generation
|
|
415
|
+
|
|
416
|
+
DevCommit can automatically generate markdown changelog files from your changes using AI.
|
|
417
|
+
|
|
418
|
+
**Usage:**
|
|
419
|
+
|
|
420
|
+
```bash
|
|
421
|
+
# Generate changelog after committing
|
|
422
|
+
devcommit --changelog
|
|
423
|
+
|
|
424
|
+
# Generate changelog before staging (recommended)
|
|
425
|
+
devcommit --stageAll --changelog
|
|
426
|
+
|
|
427
|
+
# Short form
|
|
428
|
+
devcommit -s -c
|
|
429
|
+
|
|
430
|
+
# With specific files
|
|
431
|
+
devcommit --stageAll --changelog --files src/
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
**How it works:**
|
|
435
|
+
|
|
436
|
+
- **With `--stageAll`**: Changelog is generated from unstaged changes **before** staging
|
|
437
|
+
- **Without `--stageAll`**: Changelog is generated from the last commit **after** committing
|
|
438
|
+
- Changelogs are saved as markdown files with datetime-based names (e.g., `2026-01-28_00-55-30.md`)
|
|
439
|
+
- Default directory: `changelogs/` (configurable via `CHANGELOG_DIR` in `.dcommit`)
|
|
440
|
+
- Uses Keep a Changelog format with AI-generated content
|
|
441
|
+
|
|
442
|
+
**Example workflow:**
|
|
443
|
+
|
|
444
|
+
```bash
|
|
445
|
+
# Make changes to your code
|
|
446
|
+
# ...
|
|
447
|
+
|
|
448
|
+
# Stage all changes and generate changelog before committing
|
|
449
|
+
devcommit --stageAll --changelog
|
|
450
|
+
|
|
451
|
+
# The changelog file is created in changelogs/ directory
|
|
452
|
+
# Then changes are staged and committed
|
|
453
|
+
```
|
|
454
|
+
|
|
413
455
|
### Additional Options
|
|
414
456
|
|
|
415
457
|
- `--excludeFiles` or `-e`: Exclude specific files from the diff
|
|
@@ -419,6 +461,7 @@ This works for all commit modes (global, directory, and per-file commits).
|
|
|
419
461
|
- `--directory` or `-d`: Force directory-based commits
|
|
420
462
|
- `--files` or `-f`: Stage and commit specific files or folders (can specify multiple)
|
|
421
463
|
- `--push` or `-p`: Push commits to remote after committing
|
|
464
|
+
- `--changelog` or `-c`: Generate changelog file from changes
|
|
422
465
|
|
|
423
466
|
### Examples
|
|
424
467
|
|
|
@@ -452,6 +495,15 @@ devcommit -s -f src/core src/modules/account/ --directory
|
|
|
452
495
|
|
|
453
496
|
# Stage and commit, then push
|
|
454
497
|
devcommit -s -f src/core src/modules/account/ -p
|
|
498
|
+
|
|
499
|
+
# Generate changelog before staging and committing
|
|
500
|
+
devcommit --stageAll --changelog
|
|
501
|
+
|
|
502
|
+
# Generate changelog after committing
|
|
503
|
+
devcommit --changelog
|
|
504
|
+
|
|
505
|
+
# Generate changelog with specific files
|
|
506
|
+
devcommit -s -c -f src/
|
|
455
507
|
```
|
|
456
508
|
|
|
457
509
|
## AI Provider Support
|
|
@@ -483,28 +535,19 @@ devcommit
|
|
|
483
535
|
```bash
|
|
484
536
|
export AI_PROVIDER=openrouter
|
|
485
537
|
export OPENROUTER_API_KEY='your-openrouter-api-key'
|
|
486
|
-
# Optional: specify model (default:
|
|
487
|
-
export OPENROUTER_MODEL='
|
|
538
|
+
# Optional: specify model (default: meta-llama/llama-3.3-70b-instruct:free)
|
|
539
|
+
export OPENROUTER_MODEL='meta-llama/llama-3.3-70b-instruct:free'
|
|
488
540
|
devcommit
|
|
489
541
|
```
|
|
490
542
|
|
|
491
543
|
**Popular free models on OpenRouter (add `:free` suffix):**
|
|
492
544
|
|
|
493
|
-
**
|
|
494
|
-
- `
|
|
495
|
-
- `
|
|
496
|
-
- `
|
|
497
|
-
- `
|
|
498
|
-
|
|
499
|
-
**Reasoning & General Purpose:**
|
|
500
|
-
- `xiaomi/mimo-v2-flash:free` - Mixture-of-Experts model (309B params, top open-source on SWE-bench)
|
|
501
|
-
- `tngtech/deepseek-r1t2-chimera:free` - DeepSeek R1T2 reasoning model (671B params)
|
|
502
|
-
- `tngtech/deepseek-r1t-chimera:free` - DeepSeek R1T reasoning model
|
|
503
|
-
- `tngtech/tng-r1t-chimera:free` - Creative storytelling and character interaction model
|
|
504
|
-
|
|
505
|
-
**Lightweight & Fast:**
|
|
506
|
-
- `z-ai/glm-4.5-air:free` - GLM 4.5 Air lightweight variant (MoE architecture)
|
|
507
|
-
- `nvidia/nemotron-3-nano-30b-a3b:free` - NVIDIA's efficient small model (30B params, 3B active)
|
|
545
|
+
**Recommended Models:**
|
|
546
|
+
- `meta-llama/llama-3.3-70b-instruct:free` - Llama 3.3 70B Instruct (Powerful & General Purpose)
|
|
547
|
+
- `google/gemma-3-27b-it:free` - Google Gemma 3 27B Instruct (Efficient & Capable)
|
|
548
|
+
- `openai/gpt-oss-120b:free` - OpenAI GPT-OSS 120B (Large & Experimental)
|
|
549
|
+
- `tngtech/deepseek-r1t-chimera:free` - DeepSeek R1T Chimera (Strong Reasoning)
|
|
550
|
+
- `qwen/qwen3-next-80b-a3b-instruct:free` - Qwen3 Next 80B (Advanced Instruction Following)
|
|
508
551
|
|
|
509
552
|
**Important Notes:**
|
|
510
553
|
- **Logging Requirements:** Some free models may log your prompts and responses for model improvement purposes. This means:
|
|
@@ -569,7 +612,7 @@ All configuration can be set via **environment variables** or **`.dcommit` file*
|
|
|
569
612
|
| Variable | Description | Default |
|
|
570
613
|
|----------|-------------|---------|
|
|
571
614
|
| `OPENROUTER_API_KEY` | OpenRouter API key ([Get it here](https://openrouter.ai/keys)) | - |
|
|
572
|
-
| `OPENROUTER_MODEL` | Model name (add `:free` suffix for free models) | `
|
|
615
|
+
| `OPENROUTER_MODEL` | Model name (add `:free` suffix for free models) | `meta-llama/llama-3.3-70b-instruct:free` |
|
|
573
616
|
|
|
574
617
|
**Anthropic:**
|
|
575
618
|
| Variable | Description | Default |
|
|
@@ -600,6 +643,7 @@ All configuration can be set via **environment variables** or **`.dcommit` file*
|
|
|
600
643
|
| `COMMIT_MODE` | Default commit strategy | `auto` | `auto`, `directory`, `global`, `related` |
|
|
601
644
|
| `EXCLUDE_FILES` | Files to exclude from diff | `package-lock.json, pnpm-lock.yaml, yarn.lock, *.lock` | Comma-separated file patterns |
|
|
602
645
|
| `MAX_TOKENS` | Maximum tokens for AI response | `8192` | Any positive integer |
|
|
646
|
+
| `CHANGELOG_DIR` | Directory for changelog files | `changelogs` | Any directory path |
|
|
603
647
|
|
|
604
648
|
### Configuration Priority
|
|
605
649
|
|