@programinglive/commiter 1.2.17 β†’ 1.2.18

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,24 @@
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.18](https://github.com/programinglive/commiter/compare/v1.2.17...v1.2.18) (2026-01-01)
6
+
7
+
8
+ ### πŸ“ Documentation
9
+
10
+ * **release-notes:** add 1.2.17 entry ([0a79779](https://github.com/programinglive/commiter/commit/0a7977964e9231a53d7d006cec5e847daeee2033))
11
+ * **web:** refresh homepage content for v1.2.17 ([2fc6666](https://github.com/programinglive/commiter/commit/2fc6666369e18a0dbda9488d9ed0ac6a09298f95))
12
+
13
+
14
+ ### ✨ Features
15
+
16
+ * add usage warning and MCP dev-workflow tip ([df7bc00](https://github.com/programinglive/commiter/commit/df7bc0078f75780f3daaeb703b6fe2b248910446))
17
+
18
+
19
+ ### βœ… Tests
20
+
21
+ * add automated tests for usage warnings ([af6283e](https://github.com/programinglive/commiter/commit/af6283edfa4e1e677fc20bfc5e6b243db192867f))
22
+
5
23
  ### [1.2.17](https://github.com/programinglive/commiter/compare/v1.2.16...v1.2.17) (2025-12-26)
6
24
 
7
25
 
@@ -1,4 +1,4 @@
1
1
  module.exports = {
2
2
  extends: ['@commitlint/config-conventional'],
3
3
  ignores: [(message) => message.startsWith('chore(release):')]
4
- };
4
+ }
package/docs/PRD.md CHANGED
@@ -1,96 +1,18 @@
1
- # Commiter Product Requirements Document (PRD)
1
+ # PRD: Usage Clarification and Automated Testing
2
2
 
3
- ## 1. Overview
4
- Commiter is a CLI utility that bootstraps and automates conventional release workflows for JavaScript/TypeScript projects. It enforces commit conventions, orchestrates semantic version bumps, keeps release tooling configured, and surfaces feedback during release execution so teams can ship confidently.
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.
5
5
 
6
- ## 2. Problem Statement
7
- Growing teams often struggle to keep release processes consistent: commit messages drift from convention, changelogs become stale, and release scripts accumulate manual steps. Commiter removes this friction by installing opinionated tooling, providing curated scripts, and running guard rails (tests, linters) before invoking `standard-version` to publish a release.
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.
8
8
 
9
- ## 3. Goals & Success Metrics
10
- - **Consistent releases**: Every release run through Commiter formats commits, updates changelogs, tags, and version bumps without manual editing.
11
- - **Low ceremony onboarding**: A single `npx commiter` command prepares repositories (Husky, commitlint, release scripts).
12
- - **Signal-rich automation**: Release logs clearly show which steps ran, including any warnings (e.g., tests skipped). Zero noisy deprecation warnings.
13
- - **Reliability**: New releases do not regress existing behavior; the automated test suite passes (`node --test`).
14
- - **Adoption Metric**: Track installations (npm downloads) and successful release script exits.
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`.
15
15
 
16
- ## 4. Personas
17
- 1. **Solo Maintainer** – wants painless semantic releases without memorizing commands.
18
- 2. **Team Lead** – enforces commit standards across contributors and ensures releases produce accurate changelogs.
19
- 3. **DevOps/CI Engineer** – integrates Commiter’s release command into CI pipelines and expects deterministic, machine-readable output.
20
-
21
- ## 5. Key Features
22
- - **Setup CLI (`index.js`)**
23
- - Installs dev dependencies (`standard-version`, `commitlint`, `husky`).
24
- - Configures package scripts (`npm run release`, `release:major/minor/patch`, `release:first`).
25
- - Creates Husky hooks and commitlint configuration.
26
- - Generates release helper script and ensures executable permissions (POSIX-friendly).
27
- - **Release Helper (`scripts/release.js`)**
28
- - Detects release type from CLI args or npm context.
29
- - Runs project tests via detected package manager before releasing.
30
- - Invokes `standard-version`, passing the preload script via `NODE_OPTIONS`.
31
- - Supports first release mode that sets version to 0.0.1 for new projects.
32
- - Stays focused on repository assets only (website updates are intentionally manual to avoid cross-project impacts).
33
- - **Preload Patching (`scripts/preload/fs-f-ok.cjs`)**
34
- - Hooks Node’s module loader to transparently replace deprecated `fs.F_OK` usages in `standard-version` without altering `node_modules`.
35
- - **Website & Documentation**
36
- - Professional landing page in `web/` directory.
37
- - Automated GitHub Releases generation.
38
- - Open Graph social media preview support.
39
- - **Testing**
40
- - Suite executed via `node --test` covers setup utilities, release argument parsing, and the preload patch.
41
-
42
- ## 6. Functional Requirements
43
- 1. Running `npx @programinglive/commiter` inside a Node project should configure release tooling without manual edits.
44
- 2. `npm run release` must:
45
- - Run the project’s tests (if defined) with the correct package manager.
46
- - Execute `standard-version`, passing the preload script via `NODE_OPTIONS`.
47
- - Exit with non-zero status if tests or standard-version commands fail.
48
- 3. CLI should provide friendly console output (status icons, instructions).
49
- 4. The preload script must eliminate `[DEP0176] fs.F_OK` warnings on supported Node versions.
50
- 5. Documentation (README, PRD, release notes) remains shipped with the package. Each project integrating Commiter must keep a `docs/PRD.md` file present in the repository. The release helper enforces this by warning when the PRD is missing so maintainers remember to author or update the document before tagging releases.
51
-
52
- ## 7. Non-Functional Requirements
53
- - **Compatibility**: Supports Node.js 18+ (aligning with dependencies); tested on Windows/macOS/Linux.
54
- - **Maintainability**: Avoid direct edits to dependencies; wrap behavior in Commiter-controlled modules.
55
- - **Performance**: Release command overhead minimal (<1s additional startup time) beyond running tests and standard-version.
56
- - **Security**: No network requests during CLI execution beyond npm installs triggered by the user.
57
-
58
- ## 8. User Journeys
59
- 1. **Initial Setup**
60
- - Run `npx @programinglive/commiter`.
61
- - Tool installs dependencies, updates `package.json`, and scaffolds Husky hooks.
62
- - Maintainer confirms success message and new scripts.
63
- 2. **First Release**
64
- - Developer runs `npm run release:first` for new projects.
65
- - Commiter sets version to 0.0.1, runs tests, creates initial changelog and git tag.
66
- - Project foundation established with proper semantic versioning.
67
- 3. **Standard Release**
68
- - Developer runs `npm run release minor` or `npm run release` (defaults to patch).
69
- - Commiter runs tests, ensures preload patch prevents deprecation warnings, executes `standard-version`.
70
- - Release completes with updated changelog and git tag.
71
- 4. **CI Pipeline**
72
- - CI job executes `npm run release -- --prerelease beta`.
73
- - Logs show tests executed, no deprecation warnings, and release artifacts generated.
74
-
75
- ## 9. Milestones & Roadmap
76
- - **v1.1.x** (current)
77
- - Deprecation warning mitigation, enhanced tests, PRD + release documentation.
78
- - **Future Considerations**
79
- - Support for monorepo detection (Lerna/Nx) to run scoped releases.
80
- - Optional lint/test command customization via config file.
81
- - Telemetry opt-in for release statistics (downloads, success rates).
82
-
83
- ## 10. Risks & Mitigations
84
- - **Dependency API Changes**: Upstream packages may alter file paths. Mitigate with targeted module resolution and tests.
85
- - **User Customization Conflicts**: Custom scripts might skip tests. Provide documentation for overriding behavior.
86
- - **Platform Differences**: Windows path quoting; addressed via `buildPreloadFlag` helper.
87
-
88
- ## 11. Release & QA Checklist
89
- - [x] `npm test` (alias for `node --test`) passes.
90
- - [x] Manual run of `node scripts/release.js --help` shows no `[DEP0176]` warning.
91
- - [ ] Update `CHANGELOG.md` (handled by standard-version during actual release).
92
- - [ ] Verify README reflects latest setup instructions before shipping.
93
-
94
- ## 12. Appendices
95
- - **Release Notes**: See `docs/release-notes/` for per-change summaries.
96
- - **Testing Artifacts**: `test/` directory contains Node test runner suites.
16
+ ## Verification
17
+ - Automated tests in `test/usage-warning.test.js`.
18
+ - Manual verification of CLI output.
@@ -4,6 +4,7 @@ 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
8
  | 1.2.17 | 2025-12-26 | **web:** update homepage for v1.2.16 release (c4ba36e) |
8
9
  | 1.2.16 | 2025-12-13 | upgrade to node 20 and update npm for OIDC (5f7d9a0) |
9
10
  | 1.2.15 | 2025-12-13 | remove registry-url to fix OIDC auth conflict (c49b6e8) |
@@ -75,6 +76,16 @@ This document summarizes every published version of `@programinglive/commiter`.
75
76
 
76
77
 
77
78
 
79
+
80
+
81
+ ## 1.2.18 – πŸ“ Documentation
82
+
83
+ Released on **2026-01-01**.
84
+
85
+ - **release-notes:** add 1.2.17 entry (0a79779)
86
+ - **web:** refresh homepage content for v1.2.17 (2fc6666)
87
+ - add usage warning and MCP dev-workflow tip (df7bc00)
88
+ - add automated tests for usage warnings (af6283e)
78
89
 
79
90
  ## 1.2.17 – πŸ“ Documentation
80
91
 
package/index.js CHANGED
@@ -37,6 +37,19 @@ function copyRecursiveSync(src, dest) {
37
37
  }
38
38
 
39
39
  function setupCommiter() {
40
+ const args = process.argv.slice(2);
41
+
42
+ // If arguments are passed, it's likely someone is trying to use this as a commit tool
43
+ if (args.length > 0) {
44
+ console.error('\n⚠️ WARNING: @programinglive/commiter is a SETUP and RELEASE tool, NOT a commit tool.');
45
+ console.error('πŸ‘‰ To commit your changes, please use standard git commands:');
46
+ console.error(' git add .');
47
+ console.error(' git commit -m "your message"\n');
48
+ console.error('πŸ’‘ TIP for AI: Use the `@programinglive/dev-workflow-mcp-server` to handle commits and releases properly.');
49
+ console.error('❌ If you meant to setup this project, run without arguments.\n');
50
+ process.exit(1);
51
+ }
52
+
40
53
  console.log('πŸš€ Setting up Commiter...\n');
41
54
 
42
55
  // Check if package.json exists
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@programinglive/commiter",
3
- "version": "1.2.17",
3
+ "version": "1.2.18",
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": {
@@ -88,8 +88,8 @@
88
88
  ]
89
89
  },
90
90
  "devDependencies": {
91
- "@commitlint/cli": "^20.1.0",
92
- "@commitlint/config-conventional": "^20.0.0",
91
+ "@commitlint/cli": "^20.2.0",
92
+ "@commitlint/config-conventional": "^20.2.0",
93
93
  "husky": "^9.1.7",
94
94
  "standard-version": "^9.5.0"
95
95
  }
@@ -63,7 +63,7 @@ function getNpmRunArgument(env = process.env) {
63
63
 
64
64
  function buildStandardVersionArgs({ releaseType, extraArgs }) {
65
65
  const args = [];
66
-
66
+
67
67
  // Handle --first-release flag
68
68
  const isFirstRelease = Array.isArray(extraArgs) && extraArgs.includes('--first-release');
69
69
  if (isFirstRelease) {
@@ -75,6 +75,11 @@ function buildStandardVersionArgs({ releaseType, extraArgs }) {
75
75
  const isValid = VALID_RELEASE_TYPES.has(normalized) || SEMVER_REGEX.test(normalized);
76
76
  if (!isValid) {
77
77
  const allowed = Array.from(VALID_RELEASE_TYPES).join(', ');
78
+ console.error('\n⚠️ WARNING: Unknown release type or command detected.');
79
+ console.error('πŸ‘‰ If you are trying to commit changes, please use standard git commands:');
80
+ console.error(' git add .');
81
+ console.error(' git commit -m "your message"\n');
82
+ console.error('πŸ’‘ TIP for AI: Use the `@programinglive/dev-workflow-mcp-server` to handle commits and releases properly.');
78
83
  throw new Error(`Unknown release type "${normalized}". Use one of ${allowed} or a valid semver version.`);
79
84
  }
80
85
  args.push('--release-as', normalized);
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.16 - Latest Release</span>
69
+ <span>v1.2.17 - 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.16</div>
93
+ <div class="stat-value">1.2.17</div>
94
94
  <div class="stat-label">Latest Version</div>
95
95
  </div>
96
96
  <div class="stat-item">
@@ -388,6 +388,12 @@
388
388
  <!-- RELEASES_TIMELINE:START -->
389
389
  <div class="release-item">
390
390
  <div class="release-badge">Latest</div>
391
+ <div class="release-version">v1.2.17</div>
392
+ <div class="release-date">December 26, 2025</div>
393
+ <div class="release-type">πŸ“ Documentation</div>
394
+ <p class="release-description">web: update homepage for the v1.2.16 release spotlight</p>
395
+ </div>
396
+ <div class="release-item">
391
397
  <div class="release-version">v1.2.16</div>
392
398
  <div class="release-date">December 13, 2025</div>
393
399
  <div class="release-type">πŸ‘· Continuous Integration</div>
@@ -417,6 +423,12 @@
417
423
  <div class="release-type">🧹 Chores</div>
418
424
  <p class="release-description">cleanup and add deployment scripts</p>
419
425
  </div>
426
+ <div class="release-item">
427
+ <div class="release-version">v1.2.11</div>
428
+ <div class="release-date">December 11, 2025</div>
429
+ <div class="release-type">🧹 Chores</div>
430
+ <p class="release-description">cleanup and add deployment scripts</p>
431
+ </div>
420
432
  <!-- RELEASES_TIMELINE:END -->
421
433
  </div>
422
434
  <div class="releases-cta">