@programinglive/commiter 1.2.18 โ†’ 1.2.20

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.
@@ -19,7 +19,7 @@ jobs:
19
19
  - name: Setup Node.js
20
20
  uses: actions/setup-node@v4
21
21
  with:
22
- node-version: '20'
22
+ node-version: '24'
23
23
 
24
24
  - name: Update npm and configure registry
25
25
  run: |
package/CHANGELOG.md CHANGED
@@ -2,6 +2,31 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [1.2.20](https://github.com/programinglive/commiter/compare/v1.2.19...v1.2.20) (2026-01-01)
6
+
7
+
8
+ ### ๐Ÿ“ Documentation
9
+
10
+ * update release notes for v1.2.19 ๐Ÿ“‹ ([87759c1](https://github.com/programinglive/commiter/commit/87759c13f3c2f76b8e381c0b2f3ab3338f07f422))
11
+
12
+
13
+ ### โœ… Tests
14
+
15
+ * add comment for complete release test ([b87d0f5](https://github.com/programinglive/commiter/commit/b87d0f5c12e1d2ff18ec791d3f7acbfa121a26a8))
16
+
17
+ ### [1.2.19](https://github.com/programinglive/commiter/compare/v1.2.18...v1.2.19) (2026-01-01)
18
+
19
+
20
+ ### ๐Ÿ“ Documentation
21
+
22
+ * finalize v1.2.18 release notes and website update ([034faa5](https://github.com/programinglive/commiter/commit/034faa5dcae1294b57fbaf2773ce14a085259724))
23
+ * update README, restore PRD, and enhance website features ([451ef7b](https://github.com/programinglive/commiter/commit/451ef7bf0fff925e3589fa7a6c7dbe8e76c3e93d))
24
+
25
+
26
+ ### โœจ Features
27
+
28
+ * enhance release process with clear git operation guidance and auto-commit option ([91171e2](https://github.com/programinglive/commiter/commit/91171e2d426650a2e74250b6b9a3c9a9b8bb875e))
29
+
5
30
  ### [1.2.18](https://github.com/programinglive/commiter/compare/v1.2.17...v1.2.18) (2026-01-01)
6
31
 
7
32
 
package/README.md CHANGED
@@ -14,6 +14,8 @@ A standardized commit convention and release management tool for your repository
14
14
  - ๐Ÿ“ **Changelog Generation** - Automatic CHANGELOG.md with icons
15
15
  - ๐Ÿ”’ **Git Hooks** - Pre-commit and commit-msg validation via Husky
16
16
  - ๐ŸŽจ **Icon Support** - Each commit type has a dedicated icon in releases
17
+ - ๐ŸŽฏ **Enhanced Release Process** - Clear console guidance and optional auto-commit for release notes
18
+ - ๐Ÿค– **AI-Optimized Workflow** - Built-in guidance for AI assistants with clear next steps and automated git operations
17
19
 
18
20
  ## Installation
19
21
 
@@ -116,6 +118,20 @@ For breaking changes:
116
118
  npm run release:major
117
119
  ```
118
120
 
121
+ ### Complete Release (Auto-commit & Push)
122
+
123
+ For fully automated release with git operations:
124
+
125
+ ```bash
126
+ npm run release:complete
127
+ ```
128
+
129
+ This command:
130
+ - Runs the standard release process
131
+ - Automatically commits release notes with versioned message
132
+ - Pushes changes to remote
133
+ - Provides success confirmation
134
+
119
135
  ### Automatic Release
120
136
 
121
137
  Let `standard-version` determine the version bump based on commits:
@@ -124,6 +140,8 @@ Let `standard-version` determine the version bump based on commits:
124
140
  npm run release
125
141
  ```
126
142
 
143
+ **Note**: This command shows clear guidance for git operations needed after release notes generation.
144
+
127
145
  ## What Happens During Release?
128
146
 
129
147
  1. ๐Ÿงช **Runs tests** - Detects your package manager and runs the `test` script automatically (tests only run during release, not on commit)
@@ -131,17 +149,49 @@ npm run release
131
149
  3. ๐Ÿ“˜ **Verifies documentation** โ€“ Warns if `docs/PRD.md` is missing so every project keeps an up-to-date PRD
132
150
  4. ๐Ÿ”ข **Bumps version** - Updates version in `package.json`
133
151
  5. ๐Ÿ“ **Updates changelog** - Generates `CHANGELOG.md` with icons
134
- 6. ๐Ÿท๏ธ **Creates tag** - Creates a git tag for the release
135
- 7. ๐Ÿ’พ **Commits release** - Commits changes with format: `chore(release): v1.2.3 ๐Ÿš€`
152
+ 6. ๐Ÿ“‹ **Generates release notes** - Creates and stages release notes entry
153
+ 7. ๐Ÿท๏ธ **Creates tag** - Creates a git tag for the release
154
+ 8. ๐Ÿ’พ **Commits release** - Commits changes with format: `chore(release): v1.2.3 ๐Ÿš€`
155
+ 9. ๐ŸŽฏ **Shows next steps** - Provides clear guidance for git operations needed
156
+
157
+ ## Release Notes Management
158
+
159
+ ### Standard Release (Manual Git Operations)
160
+
161
+ When using `npm run release`, the tool provides clear console guidance:
162
+
163
+ ```
164
+ ๐ŸŽฏ Release notes generated and staged successfully!
165
+
166
+ ๐Ÿ“‹ NEXT STEPS REQUIRED:
167
+ โœ… Release notes have been staged for commit
168
+ ๐Ÿ”„ You need to commit and push the release notes:
169
+ git commit -m "docs: update release notes for version"
170
+ git push
171
+
172
+ ๐Ÿ’ก AI ASSISTANCE:
173
+ ๐Ÿค– Use the dev-workflow MCP server to handle the commit and push automatically
174
+ ๐Ÿ“ The release notes are now staged and ready for commit
175
+ ```
176
+
177
+ ### Complete Release (Automated Git Operations)
178
+
179
+ Use `npm run release:complete` for full automation:
180
+ - โœ… Release completed
181
+ - โœ… Release notes generated
182
+ - โœ… Changes committed
183
+ - โœ… Changes pushed
136
184
 
137
185
  ## Push Your Release
138
186
 
139
- After running a release command, push to remote:
187
+ After running a standard release command, push to remote:
140
188
 
141
189
  ```bash
142
190
  git push --follow-tags origin main
143
191
  ```
144
192
 
193
+ For complete releases, pushing is handled automatically.
194
+
145
195
  ## Pre-commit Hooks
146
196
 
147
197
  The following hooks are automatically enforced:
package/docs/PRD.md CHANGED
@@ -1,18 +1,44 @@
1
- # PRD: Usage Clarification and Automated Testing
1
+ # PRD: Enhanced Release Process and AI-Optimized Workflow
2
2
 
3
3
  ## Overview
4
- Prevent users and AI assistants from misusing `@programinglive/commiter` as a generic git commit tool. Guide AI assistants toward the correct tool (@programinglive/dev-workflow-mcp-server) and ensure these safeguards are verified by automated tests.
4
+ Enhance the release process with clear console guidance for git operations and optional auto-commit functionality. Improve AI assistant workflow with explicit next steps and automated git operations for release notes management.
5
5
 
6
6
  ## Problem
7
- AI assistants sometimes assume `@programinglive/commiter` is for committing files (e.g., `commiter "message"`). This fails because the tool is meant for setup and release orchestration. Automated verification of these safeguards was initially missing.
7
+ After running `npm run release`, release notes are generated but users and AI assistants don't understand that manual git operations (add, commit, push) are required. The process needs clear console output to guide the next steps and optional automation for complete releases.
8
8
 
9
9
  ## Requirements
10
- - Display a warning banner if arguments are passed to `node index.js`.
11
- - Suggest standard `git commit` commands.
12
- - Provide a tip to use the MCP dev-workflow for AI assistants.
13
- - Update release script error messages to include the same tip.
14
- - **[NEW]** Implement automated tests to verify the above behavior across `index.js` and `scripts/release.cjs`.
10
+ - Enhanced standard release script with clear console guidance for git operations
11
+ - New complete release script that handles git operations automatically
12
+ - AI-friendly workflow with explicit next steps and MCP server guidance
13
+ - Clear visual indicators and structured console output
14
+ - Version-aware commit messages for release notes
15
+ - Error handling and fallback options
16
+
17
+ ## Features Added
18
+
19
+ ### Enhanced Standard Release (`npm run release`)
20
+ - Clear console output showing release notes generation status
21
+ - Structured "NEXT STEPS REQUIRED" section
22
+ - Exact git commands needed for manual operations
23
+ - AI assistance guidance with MCP server recommendations
24
+ - Visual indicators with emojis for better readability
25
+
26
+ ### Complete Release (`npm run release:complete`)
27
+ - Full automation of release process including git operations
28
+ - Automatic detection of staged release notes changes
29
+ - Version-aware commit messages (e.g., "docs: update release notes for v1.2.20 ๐Ÿ“‹")
30
+ - Automatic push to remote repository
31
+ - Success confirmation with detailed status
32
+
33
+ ### AI-Optimized Workflow
34
+ - Built-in guidance for AI assistants
35
+ - Clear instructions for manual vs automated workflows
36
+ - MCP server integration recommendations
37
+ - Prevents confusion about required git operations
15
38
 
16
39
  ## Verification
17
- - Automated tests in `test/usage-warning.test.js`.
18
- - Manual verification of CLI output.
40
+ - Manual testing of both release workflows
41
+ - Verification of console output clarity and accuracy
42
+ - Testing of complete release automation
43
+ - Validation of AI-friendly guidance messages
44
+ - Error handling verification for git operation failures
@@ -4,7 +4,9 @@ This document summarizes every published version of `@programinglive/commiter`.
4
4
 
5
5
  | Version | Date | Highlights |
6
6
  |---------|------|------------|
7
- | 1.2.18 | 2026-01-01 | **release-notes:** add 1.2.17 entry (0a79779) |
7
+ | 1.2.20 | 2026-01-01 | update release notes for v1.2.19 ๐Ÿ“‹ (87759c1) |
8
+ | 1.2.19 | 2026-01-01 | finalize v1.2.18 release notes and website update (034faa5) |
9
+ | 1.2.18 | 2026-01-01 | Add usage safety warnings and MCP workflow tips |
8
10
  | 1.2.17 | 2025-12-26 | **web:** update homepage for v1.2.16 release (c4ba36e) |
9
11
  | 1.2.16 | 2025-12-13 | upgrade to node 20 and update npm for OIDC (5f7d9a0) |
10
12
  | 1.2.15 | 2025-12-13 | remove registry-url to fix OIDC auth conflict (c49b6e8) |
@@ -77,6 +79,23 @@ This document summarizes every published version of `@programinglive/commiter`.
77
79
 
78
80
 
79
81
 
82
+
83
+
84
+
85
+ ## 1.2.20 โ€“ ๐Ÿ“ Documentation
86
+
87
+ Released on **2026-01-01**.
88
+
89
+ - update release notes for v1.2.19 ๐Ÿ“‹ (87759c1)
90
+ - add comment for complete release test (b87d0f5)
91
+
92
+ ## 1.2.19 โ€“ ๐Ÿ“ Documentation
93
+
94
+ Released on **2026-01-01**.
95
+
96
+ - finalize v1.2.18 release notes and website update (034faa5)
97
+ - update README, restore PRD, and enhance website features (451ef7b)
98
+ - enhance release process with clear git operation guidance and auto-commit option (91171e2)
80
99
 
81
100
  ## 1.2.18 โ€“ ๐Ÿ“ Documentation
82
101
 
package/index.js CHANGED
@@ -210,3 +210,4 @@ if (require.main === module) {
210
210
  }
211
211
 
212
212
  module.exports = { setupCommiter, ensureSafeTestScript };
213
+ // Test change for complete release
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@programinglive/commiter",
3
- "version": "1.2.18",
3
+ "version": "1.2.20",
4
4
  "description": "Commiter keeps repositories release-ready by enforcing conventional commits, generating icon-rich changelog entries, and orchestrating semantic version bumps without manual toil. It bootstraps Husky hooks, commitlint rules, and release scripts that inspect history, detect framework-specific test commands, run them automatically, tag git releases, coordinate npm publishing, surface release metrics, enforce project-specific checks, and give maintainers observability across distributed teams. Plus!",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -14,6 +14,7 @@
14
14
  "release:minor": "node scripts/release.cjs minor",
15
15
  "release:patch": "node scripts/release.cjs patch",
16
16
  "release:first": "node scripts/release.cjs --first-release",
17
+ "release:complete": "node scripts/release-complete.cjs",
17
18
  "web": "npx serve web"
18
19
  },
19
20
  "keywords": [
@@ -88,8 +89,8 @@
88
89
  ]
89
90
  },
90
91
  "devDependencies": {
91
- "@commitlint/cli": "^20.2.0",
92
- "@commitlint/config-conventional": "^20.2.0",
92
+ "@commitlint/cli": "^20.5.3",
93
+ "@commitlint/config-conventional": "^20.5.3",
93
94
  "husky": "^9.1.7",
94
95
  "standard-version": "^9.5.0"
95
96
  }
@@ -0,0 +1,115 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { spawnSync } = require('child_process');
4
+ const path = require('path');
5
+ const fs = require('fs');
6
+
7
+ const { runRelease } = require('./release.cjs');
8
+
9
+ function runCompleteRelease({
10
+ argv = process.argv,
11
+ cwd = process.cwd(),
12
+ spawn = spawnSync
13
+ } = {}) {
14
+ console.log('๐Ÿš€ Starting complete release process...');
15
+ console.log(' This will run the release and automatically commit/push release notes\n');
16
+
17
+ // Run the standard release process
18
+ const releaseResult = runRelease({ argv, cwd, spawn });
19
+
20
+ if (releaseResult && typeof releaseResult.status === 'number' && releaseResult.status !== 0) {
21
+ console.error('โŒ Release failed. Aborting complete release process.');
22
+ return releaseResult;
23
+ }
24
+
25
+ // Get the current version for commit message
26
+ const packageJsonPath = path.join(cwd, 'package.json');
27
+ let version = 'unknown';
28
+
29
+ try {
30
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
31
+ version = packageJson.version;
32
+ } catch (error) {
33
+ console.warn('โš ๏ธ Could not read version from package.json');
34
+ }
35
+
36
+ // Check if there are staged changes to commit
37
+ const statusResult = spawn('git', ['status', '--porcelain'], {
38
+ cwd,
39
+ encoding: 'utf8'
40
+ });
41
+
42
+ if (statusResult.error || (statusResult.status !== 0)) {
43
+ console.warn('โš ๏ธ Could not check git status. Please commit manually.');
44
+ return releaseResult;
45
+ }
46
+
47
+ const stagedChanges = statusResult.stdout.split('\n').filter(line =>
48
+ line.trim() && line.startsWith('A ') || line.startsWith('M ')
49
+ );
50
+
51
+ if (stagedChanges.length === 0) {
52
+ console.log('โœ… No release notes changes to commit. Release complete!');
53
+ return releaseResult;
54
+ }
55
+
56
+ console.log(`๐Ÿ“ Found ${stagedChanges.length} staged change(s) to commit:`);
57
+ stagedChanges.forEach(change => {
58
+ const [status, ...filePathParts] = change.trim().split(' ');
59
+ const filePath = filePathParts.join(' ');
60
+ console.log(` ${status} ${filePath}`);
61
+ });
62
+
63
+ // Commit the staged changes
64
+ const commitMessage = `docs: update release notes for v${version} ๐Ÿ“‹`;
65
+ console.log(`\n๐Ÿ”„ Committing with message: "${commitMessage}"`);
66
+
67
+ const commitResult = spawn('git', ['commit', '-m', commitMessage], {
68
+ stdio: 'inherit',
69
+ cwd
70
+ });
71
+
72
+ if (commitResult.status !== 0) {
73
+ console.error('โŒ Failed to commit release notes. Please commit manually.');
74
+ return commitResult;
75
+ }
76
+
77
+ console.log('โœ… Release notes committed successfully!');
78
+
79
+ // Push the changes
80
+ console.log('\n๐Ÿ“ค Pushing changes to remote...');
81
+ const pushResult = spawn('git', ['push'], {
82
+ stdio: 'inherit',
83
+ cwd
84
+ });
85
+
86
+ if (pushResult.status !== 0) {
87
+ console.error('โŒ Failed to push changes. Please push manually.');
88
+ return pushResult;
89
+ }
90
+
91
+ console.log('\n๐ŸŽ‰ Complete release process finished successfully!');
92
+ console.log(' โœ… Release completed');
93
+ console.log(' โœ… Release notes generated');
94
+ console.log(' โœ… Changes committed');
95
+ console.log(' โœ… Changes pushed');
96
+ console.log(`\n๐Ÿ“ฆ Version ${version} is now live!`);
97
+
98
+ return pushResult;
99
+ }
100
+
101
+ if (require.main === module) {
102
+ try {
103
+ const result = runCompleteRelease();
104
+ if (result.status !== 0) {
105
+ process.exit(result.status ?? 1);
106
+ }
107
+ } catch (error) {
108
+ console.error(`โŒ Complete release failed: ${error.message}`);
109
+ process.exit(1);
110
+ }
111
+ }
112
+
113
+ module.exports = {
114
+ runCompleteRelease
115
+ };
@@ -202,6 +202,17 @@ function runRelease({
202
202
  const gitAddResult = spawnSync('git', ['add', releaseNotesPath], { stdio: 'inherit', cwd });
203
203
  if (!gitAddResult || typeof gitAddResult.status !== 'number' || gitAddResult.status !== 0) {
204
204
  console.warn('โš ๏ธ Release notes updated but failed to stage. Please add manually: git add ' + releaseNotesPath);
205
+ } else {
206
+ console.log('\n๐ŸŽฏ Release notes generated and staged successfully!');
207
+ console.log('\n๐Ÿ“‹ NEXT STEPS REQUIRED:');
208
+ console.log(' โœ… Release notes have been staged for commit');
209
+ console.log(' ๐Ÿ”„ You need to commit and push the release notes:');
210
+ console.log(' git commit -m "docs: update release notes for version"');
211
+ console.log(' git push');
212
+ console.log('\n๐Ÿ’ก AI ASSISTANCE:');
213
+ console.log(' ๐Ÿค– Use the dev-workflow MCP server to handle the commit and push automatically');
214
+ console.log(' ๐Ÿ“ The release notes are now staged and ready for commit');
215
+ console.log('');
205
216
  }
206
217
  }
207
218
 
package/web/index.html CHANGED
@@ -66,7 +66,7 @@
66
66
  <div class="hero-content">
67
67
  <div class="hero-badge">
68
68
  <span class="badge-dot"></span>
69
- <span>v1.2.17 - Latest Release</span>
69
+ <span>v1.2.20 - Latest Release</span>
70
70
  </div>
71
71
  <h1 class="hero-title">
72
72
  Ship Releases with <span class="gradient-text">Confidence</span>
@@ -90,7 +90,7 @@
90
90
  </div>
91
91
  <div class="hero-stats">
92
92
  <div class="stat-item">
93
- <div class="stat-value">1.2.17</div>
93
+ <div class="stat-value">1.2.20</div>
94
94
  <div class="stat-label">Latest Version</div>
95
95
  </div>
96
96
  <div class="stat-item">
@@ -121,9 +121,9 @@
121
121
  <div class="code-line output success">๐ŸŽ‰ Setup complete! Ready to release.</div>
122
122
  <div class="code-line"><span class="prompt">$</span> npm run release:patch</div>
123
123
  <div class="code-line output">โœ“ Running tests...</div>
124
- <div class="code-line output">โœ“ Bumping version to 1.2.17...</div>
124
+ <div class="code-line output">โœ“ Bumping version to 1.2.18...</div>
125
125
  <div class="code-line output">โœ“ Updating CHANGELOG.md...</div>
126
- <div class="code-line output success">๐Ÿš€ Release v1.2.17 ready!</div>
126
+ <div class="code-line output success">๐Ÿš€ Release v1.2.20 ready!</div>
127
127
  <div class="code-line cursor">_</div>
128
128
  </div>
129
129
  </div>
@@ -167,11 +167,21 @@
167
167
  <h3>Test Integration</h3>
168
168
  <p>Automatically runs your test suite before releasing to prevent broken releases</p>
169
169
  </div>
170
+ <div class="feature-card">
171
+ <div class="feature-icon">๐ŸŽฏ</div>
172
+ <h3>Enhanced Release Process</h3>
173
+ <p>Clear console guidance and optional auto-commit for release notes with AI-friendly workflow</p>
174
+ </div>
170
175
  <div class="feature-card">
171
176
  <div class="feature-icon">โšก</div>
172
177
  <h3>Zero Config</h3>
173
178
  <p>One command setup with sensible defaults. Works with npm, yarn, and pnpm out of the box</p>
174
179
  </div>
180
+ <div class="feature-card">
181
+ <div class="feature-icon">๐Ÿค–</div>
182
+ <h3>AI-Optimized Workflow</h3>
183
+ <p>Built-in guidance for AI assistants with clear next steps and automated git operations</p>
184
+ </div>
175
185
  </div>
176
186
  </div>
177
187
  </section>
@@ -275,6 +285,9 @@
275
285
  <div class="step-content">
276
286
  <h3>Release Your Changes</h3>
277
287
  <p>Run the appropriate release command based on your changes</p>
288
+ <div class="code-block">
289
+ <code>npm run release # Standard release with git guidance</code>
290
+ </div>
278
291
  <div class="code-block">
279
292
  <code>npm run release:first # New project โ†’ 0.0.1</code>
280
293
  </div>
@@ -287,6 +300,9 @@
287
300
  <div class="code-block">
288
301
  <code>npm run release:major # 1.0.0 โ†’ 2.0.0</code>
289
302
  </div>
303
+ <div class="code-block">
304
+ <code>npm run release:complete # Auto-commit & push release notes</code>
305
+ </div>
290
306
  </div>
291
307
  </div>
292
308
  </div>
@@ -388,6 +404,18 @@
388
404
  <!-- RELEASES_TIMELINE:START -->
389
405
  <div class="release-item">
390
406
  <div class="release-badge">Latest</div>
407
+ <div class="release-version">v1.2.20</div>
408
+ <div class="release-date">January 01, 2026</div>
409
+ <div class="release-type">โœจ Features</div>
410
+ <p class="release-description">Enhance release process with clear git operation guidance and auto-commit option</p>
411
+ </div>
412
+ <div class="release-item">
413
+ <div class="release-version">v1.2.19</div>
414
+ <div class="release-date">January 01, 2026</div>
415
+ <div class="release-type">๐Ÿ“ Documentation</div>
416
+ <p class="release-description">Update release notes for version 1.2.19</p>
417
+ </div>
418
+ <div class="release-item">
391
419
  <div class="release-version">v1.2.17</div>
392
420
  <div class="release-date">December 26, 2025</div>
393
421
  <div class="release-type">๐Ÿ“ Documentation</div>