@programinglive/commiter 1.2.8 β†’ 1.2.16

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,8 +19,13 @@ jobs:
19
19
  - name: Setup Node.js
20
20
  uses: actions/setup-node@v4
21
21
  with:
22
- node-version: '18'
23
- registry-url: 'https://registry.npmjs.org'
22
+ node-version: '20'
23
+
24
+ - name: Update npm and configure registry
25
+ run: |
26
+ npm install -g npm@latest
27
+ npm config set registry https://registry.npmjs.org/
28
+ npm config set //registry.npmjs.org/:_authToken ""
24
29
 
25
30
  - name: Install dependencies
26
31
  run: npm ci
@@ -29,6 +34,4 @@ jobs:
29
34
  run: npm test
30
35
 
31
36
  - name: Publish to NPM
32
- run: npm publish --access public
33
- env:
34
- NODE_AUTH_TOKEN: ${{ secrets.COMMITER_TOKEN }}
37
+ run: npm publish --provenance --access public
package/CHANGELOG.md CHANGED
@@ -2,6 +2,80 @@
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.16](https://github.com/programinglive/commiter/compare/v1.2.15...v1.2.16) (2025-12-13)
6
+
7
+
8
+ ### πŸ‘· Continuous Integration
9
+
10
+ * upgrade to node 20 and update npm for OIDC ([5f7d9a0](https://github.com/programinglive/commiter/commit/5f7d9a0d668ab5702879841de2f9d0818fa8f6bd))
11
+
12
+ ### [1.2.15](https://github.com/programinglive/commiter/compare/v1.2.14...v1.2.15) (2025-12-13)
13
+
14
+
15
+ ### πŸ‘· Continuous Integration
16
+
17
+ * remove registry-url to fix OIDC auth conflict ([c49b6e8](https://github.com/programinglive/commiter/commit/c49b6e81195c5b9dc40611ee87fd22d45c33e3a9))
18
+
19
+ ### [1.2.14](https://github.com/programinglive/commiter/compare/v1.2.13...v1.2.14) (2025-12-13)
20
+
21
+
22
+ ### πŸ‘· Continuous Integration
23
+
24
+ * remove legacy auth token env ([8508deb](https://github.com/programinglive/commiter/commit/8508deb5ee725519848588780d897f03fdb725eb))
25
+
26
+ ### [1.2.13](https://github.com/programinglive/commiter/compare/v1.2.12...v1.2.13) (2025-12-13)
27
+
28
+
29
+ ### πŸ‘· Continuous Integration
30
+
31
+ * enable npm trusted publishing (OIDC) with provenance ([5e1e852](https://github.com/programinglive/commiter/commit/5e1e852abfa6860e7e1533895ebf3f2996a11bfb))
32
+
33
+ ### [1.2.12](https://github.com/programinglive/commiter/compare/v1.2.10...v1.2.12) (2025-12-13)
34
+
35
+
36
+ ### 🧹 Chores
37
+
38
+ * cleanup and add deployment scripts ([4124b5f](https://github.com/programinglive/commiter/commit/4124b5fc25f2975a62cccbfb3fa168c54e0058bf))
39
+ * **release:** 1.2.11 πŸš€ ([2bbf62a](https://github.com/programinglive/commiter/commit/2bbf62a569546e06a7c27f0a2ecae838493161c6))
40
+
41
+
42
+ ### πŸ› Bug Fixes
43
+
44
+ * resolve npm pkg warnings ([6d7a193](https://github.com/programinglive/commiter/commit/6d7a1937d70e6cf2f69edd6c7def8deba7a732d7))
45
+ * **setup:** surface first release commands ([8701e9a](https://github.com/programinglive/commiter/commit/8701e9ae75fde65f55ab956e0636bcff6c0672a9))
46
+
47
+ ### [1.2.11](https://github.com/programinglive/commiter/compare/v1.2.10...v1.2.11) (2025-12-11)
48
+
49
+
50
+ ### 🧹 Chores
51
+
52
+ * cleanup and add deployment scripts ([4124b5f](https://github.com/programinglive/commiter/commit/4124b5fc25f2975a62cccbfb3fa168c54e0058bf))
53
+
54
+
55
+ ### πŸ› Bug Fixes
56
+
57
+ * **setup:** surface first release commands ([8701e9a](https://github.com/programinglive/commiter/commit/8701e9ae75fde65f55ab956e0636bcff6c0672a9))
58
+
59
+ ### [1.2.10](https://github.com/programinglive/commiter/compare/v1.2.9...v1.2.10) (2025-12-11)
60
+
61
+
62
+ ### ✨ Features
63
+
64
+ * enhance release workflow with first release support and patch defaults ([d5f1334](https://github.com/programinglive/commiter/commit/d5f133425718eab44fd9d8cdc4fc50641697efd0))
65
+
66
+ ### [1.2.9](https://github.com/programinglive/commiter/compare/v1.2.8...v1.2.9) (2025-12-05)
67
+
68
+
69
+ ### 🧹 Chores
70
+
71
+ * add release:first script ([0240fce](https://github.com/programinglive/commiter/commit/0240fceaaad231074f1525b9d5208697cfa9d5fa))
72
+ * update gitignore and release notes ([c12f935](https://github.com/programinglive/commiter/commit/c12f935aaeb56b412fdefdc888acea544bc83e3b))
73
+
74
+
75
+ ### πŸ“ Documentation
76
+
77
+ * document release:first command and update tests ([876a208](https://github.com/programinglive/commiter/commit/876a20893a6a1fd3433992ba62d62ed6bd09c0b0))
78
+
5
79
  ### [1.2.8](https://github.com/programinglive/commiter/compare/v1.2.6...v1.2.8) (2025-12-02)
6
80
 
7
81
 
package/PRD.md CHANGED
@@ -21,13 +21,14 @@ Growing teams often struggle to keep release processes consistent: commit messag
21
21
  ## 5. Key Features
22
22
  - **Setup CLI (`index.js`)**
23
23
  - Installs dev dependencies (`standard-version`, `commitlint`, `husky`).
24
- - Configures package scripts (`npm run release`, `release:major/minor/patch`).
24
+ - Configures package scripts (`npm run release`, `release:major/minor/patch`, `release:first`).
25
25
  - Creates Husky hooks and commitlint configuration.
26
26
  - Generates release helper script and ensures executable permissions (POSIX-friendly).
27
27
  - **Release Helper (`scripts/release.js`)**
28
28
  - Detects release type from CLI args or npm context.
29
29
  - Runs project tests via detected package manager before releasing.
30
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.
31
32
  - Stays focused on repository assets only (website updates are intentionally manual to avoid cross-project impacts).
32
33
  - **Preload Patching (`scripts/preload/fs-f-ok.cjs`)**
33
34
  - Hooks Node’s module loader to transparently replace deprecated `fs.F_OK` usages in `standard-version` without altering `node_modules`.
@@ -59,11 +60,15 @@ Growing teams often struggle to keep release processes consistent: commit messag
59
60
  - Run `npx @programinglive/commiter`.
60
61
  - Tool installs dependencies, updates `package.json`, and scaffolds Husky hooks.
61
62
  - Maintainer confirms success message and new scripts.
62
- 2. **Standard Release**
63
- - Developer runs `npm run release minor`.
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).
64
69
  - Commiter runs tests, ensures preload patch prevents deprecation warnings, executes `standard-version`.
65
70
  - Release completes with updated changelog and git tag.
66
- 3. **CI Pipeline**
71
+ 4. **CI Pipeline**
67
72
  - CI job executes `npm run release -- --prerelease beta`.
68
73
  - Logs show tests executed, no deprecation warnings, and release artifacts generated.
69
74
 
package/README.md CHANGED
@@ -168,15 +168,21 @@ Valid types: `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `build`
168
168
 
169
169
  Release commits generated by `standard-version` such as `chore(release): 1.0.0 πŸš€` are automatically ignored by `commitlint`.
170
170
 
171
- ### First release
171
+ ### First Release
172
172
 
173
- If this is your first release and you don't have a version tag yet:
173
+ For new projects without any version tags, use the first release command to start from version 0.0.1:
174
174
 
175
175
  ```bash
176
- npm run release -- --first-release
176
+ npm run release:first
177
177
  ```
178
178
 
179
- Running the setup command ensures the default `npm test` script is `echo "No tests specified"`, preventing the Husky `pre-commit` hook from failing during this initial release. Replace it with your real test command once available.
179
+ Running the first release command:
180
+ - Sets the initial version to **0.0.1**
181
+ - Creates the first git tag
182
+ - Generates the initial CHANGELOG.md
183
+ - Commits the release with proper formatting
184
+
185
+ This ensures your project starts with a clean, semantic version foundation. Replace the default test script with your real test command once available.
180
186
 
181
187
  ### Dry run
182
188
 
@@ -4,6 +4,14 @@ This document summarizes every published version of `@programinglive/commiter`.
4
4
 
5
5
  | Version | Date | Highlights |
6
6
  |---------|------|------------|
7
+ | 1.2.16 | 2025-12-13 | upgrade to node 20 and update npm for OIDC (5f7d9a0) |
8
+ | 1.2.15 | 2025-12-13 | remove registry-url to fix OIDC auth conflict (c49b6e8) |
9
+ | 1.2.14 | 2025-12-13 | remove legacy auth token env (8508deb) |
10
+ | 1.2.13 | 2025-12-13 | enable npm trusted publishing (OIDC) with provenance (5e1e852) |
11
+ | 1.2.12 | 2025-12-13 | cleanup and add deployment scripts (4124b5f) |
12
+ | 1.2.11 | 2025-12-11 | cleanup and add deployment scripts (4124b5f) |
13
+ | 1.2.10 | 2025-12-11 | enhance release workflow with first release support and patch defaults (d5f1334) |
14
+ | 1.2.9 | 2025-12-05 | add release:first script (0240fce) |
7
15
  | 1.2.8 | 2025-12-02 | remove website auto updates (c6f2498) |
8
16
  | 1.2.7 | 2025-12-02 | remove website auto updates (c6f2498) |
9
17
  | 1.2.6 | 2025-11-30 | tests only run during release, not on commit (15600a0) |
@@ -58,6 +66,68 @@ This document summarizes every published version of `@programinglive/commiter`.
58
66
 
59
67
 
60
68
 
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+ ## 1.2.16 – πŸ‘· Continuous Integration
78
+
79
+ Released on **2025-12-13**.
80
+
81
+ - upgrade to node 20 and update npm for OIDC (5f7d9a0)
82
+
83
+ ## 1.2.15 – πŸ‘· Continuous Integration
84
+
85
+ Released on **2025-12-13**.
86
+
87
+ - remove registry-url to fix OIDC auth conflict (c49b6e8)
88
+
89
+ ## 1.2.14 – πŸ‘· Continuous Integration
90
+
91
+ Released on **2025-12-13**.
92
+
93
+ - remove legacy auth token env (8508deb)
94
+
95
+ ## 1.2.13 – πŸ‘· Continuous Integration
96
+
97
+ Released on **2025-12-13**.
98
+
99
+ - enable npm trusted publishing (OIDC) with provenance (5e1e852)
100
+
101
+ ## 1.2.12 – 🧹 Chores
102
+
103
+ Released on **2025-12-13**.
104
+
105
+ - cleanup and add deployment scripts (4124b5f)
106
+ - **release:** 1.2.11 πŸš€ (2bbf62a)
107
+ - resolve npm pkg warnings (6d7a193)
108
+ - **setup:** surface first release commands (8701e9a)
109
+
110
+ ## 1.2.11 – 🧹 Chores
111
+
112
+ Released on **2025-12-11**.
113
+
114
+ - cleanup and add deployment scripts (4124b5f)
115
+ - **setup:** surface first release commands (8701e9a)
116
+
117
+ ## 1.2.10 – ✨ Features
118
+
119
+ Released on **2025-12-11**.
120
+
121
+ - enhance release workflow with first release support and patch defaults (d5f1334)
122
+
123
+ ## 1.2.9 – 🧹 Chores
124
+
125
+ Released on **2025-12-05**.
126
+
127
+ - add release:first script (0240fce)
128
+ - update gitignore and release notes (c12f935)
129
+ - document release:first command and update tests (876a208)
130
+
61
131
  ## 1.2.8 – ♻️ Refactors
62
132
 
63
133
  Released on **2025-12-02**.
package/index.js CHANGED
@@ -63,6 +63,7 @@ function setupCommiter() {
63
63
  packageJson.scripts['release:major'] = 'node scripts/release.cjs major';
64
64
  packageJson.scripts['release:minor'] = 'node scripts/release.cjs minor';
65
65
  packageJson.scripts['release:patch'] = 'node scripts/release.cjs patch';
66
+ packageJson.scripts['release:first'] = 'node scripts/release.cjs --first-release';
66
67
 
67
68
  // Add standard-version config
68
69
  packageJson['standard-version'] = {
@@ -174,10 +175,12 @@ npx --no -- commitlint --edit "$1"
174
175
 
175
176
  console.log('\nβœ… Commiter setup complete!\n');
176
177
  console.log('πŸ“š Available commands:');
177
- console.log(' npm run release major - Create a major release (1.0.0 β†’ 2.0.0)');
178
- console.log(' npm run release minor - Create a minor release (1.0.0 β†’ 1.1.0)');
179
- console.log(' npm run release patch - Create a patch release (1.0.0 β†’ 1.0.1)');
180
- console.log(' npm run release - Auto-detect version bump');
178
+ console.log(' npm run release major - Create a major release (1.0.0 β†’ 2.0.0)');
179
+ console.log(' npm run release minor - Create a minor release (1.0.0 β†’ 1.1.0)');
180
+ console.log(' npm run release patch - Create a patch release (1.0.0 β†’ 1.0.1)');
181
+ console.log(' npm run release - Auto-detect version bump');
182
+ console.log(' npm run release:first - Initialize the first release at 0.0.1');
183
+ console.log(' npm run release -- --first - Alternative first release flag (0.0.1 start)');
181
184
  console.log(' npm run release -- --prerelease beta - Create a beta prerelease\n');
182
185
  console.log('🎯 Commit format: type(scope): subject');
183
186
  console.log(' Example: feat(auth): add user login\n');
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@programinglive/commiter",
3
- "version": "1.2.8",
3
+ "version": "1.2.16",
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": {
7
- "commiter": "./index.js"
7
+ "commiter": "index.js"
8
8
  },
9
9
  "scripts": {
10
10
  "test": "node --test",
@@ -13,6 +13,7 @@
13
13
  "release:major": "node scripts/release.cjs major",
14
14
  "release:minor": "node scripts/release.cjs minor",
15
15
  "release:patch": "node scripts/release.cjs patch",
16
+ "release:first": "node scripts/release.cjs --first-release",
16
17
  "web": "npx serve web"
17
18
  },
18
19
  "keywords": [
@@ -26,18 +26,18 @@ const SEMVER_REGEX = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/;
26
26
  const LOCKFILE_PREFERENCES = [
27
27
  { manager: 'pnpm', file: 'pnpm-lock.yaml' },
28
28
  { manager: 'yarn', file: 'yarn.lock' },
29
- { manager: 'bun', file: 'bun.lockb' },
29
+ { manager: 'bun', file: 'bun.lock' },
30
30
  { manager: 'npm', file: 'package-lock.json' }
31
31
  ];
32
32
 
33
33
  function getCliArguments(argv = process.argv) {
34
34
  const rawArgs = argv.slice(2);
35
35
  if (rawArgs.length === 0) {
36
- return { releaseType: undefined, extraArgs: [] };
36
+ return { releaseType: 'patch', extraArgs: [] };
37
37
  }
38
38
 
39
39
  if (rawArgs[0].startsWith('-')) {
40
- return { releaseType: undefined, extraArgs: rawArgs };
40
+ return { releaseType: 'patch', extraArgs: rawArgs };
41
41
  }
42
42
 
43
43
  const [firstArg, ...rest] = rawArgs;
@@ -60,7 +60,14 @@ function getNpmRunArgument(env = process.env) {
60
60
 
61
61
  function buildStandardVersionArgs({ releaseType, extraArgs }) {
62
62
  const args = [];
63
- if (releaseType) {
63
+
64
+ // Handle --first-release flag
65
+ const isFirstRelease = Array.isArray(extraArgs) && extraArgs.includes('--first-release');
66
+ if (isFirstRelease) {
67
+ args.push('--release-as', '0.0.1');
68
+ // Remove --first-release from extraArgs to avoid passing it to standard-version
69
+ extraArgs = extraArgs.filter(arg => arg !== '--first-release');
70
+ } else if (releaseType) {
64
71
  const normalized = releaseType.trim();
65
72
  const isValid = VALID_RELEASE_TYPES.has(normalized) || SEMVER_REGEX.test(normalized);
66
73
  if (!isValid) {
package/web/index.html CHANGED
@@ -275,6 +275,9 @@
275
275
  <div class="step-content">
276
276
  <h3>Release Your Changes</h3>
277
277
  <p>Run the appropriate release command based on your changes</p>
278
+ <div class="code-block">
279
+ <code>npm run release:first # New project β†’ 0.0.1</code>
280
+ </div>
278
281
  <div class="code-block">
279
282
  <code>npm run release:patch # 1.0.0 β†’ 1.0.1</code>
280
283
  </div>