@programinglive/commiter 1.2.12 → 1.2.17
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/.github/ISSUE_TEMPLATE/bug_report.md +28 -28
- package/.github/ISSUE_TEMPLATE/config.yml +5 -5
- package/.github/ISSUE_TEMPLATE/feature_request.md +20 -20
- package/.github/PULL_REQUEST_TEMPLATE.md +24 -24
- package/.github/workflows/publish.yml +8 -5
- package/CHANGELOG.md +275 -235
- package/CODE_OF_CONDUCT.md +36 -36
- package/LICENSE +21 -21
- package/PUBLISH.md +142 -142
- package/README.md +218 -217
- package/SECURITY.md +30 -30
- package/commitlint.config.cjs +4 -4
- package/docs/CREATE_RELEASES.md +103 -103
- package/{PRD.md → docs/PRD.md} +96 -96
- package/docs/QUICK_RELEASE_GUIDE.md +101 -101
- package/docs/release-notes/RELEASE_NOTES.md +226 -185
- package/index.js +199 -199
- package/netlify.toml +2 -2
- package/package.json +96 -96
- package/scripts/create-releases.js +219 -219
- package/scripts/release.cjs +285 -258
- package/scripts/update-release-notes.cjs +182 -182
- package/web/README.md +79 -79
- package/web/css/style.css +963 -963
- package/web/favicon.svg +10 -10
- package/web/index.html +510 -510
- package/web/js/script.js +256 -256
- package/web/og-image.svg +24 -24
- package/.netlify/netlify.toml +0 -25
- package/.netlify/state.json +0 -3
package/docs/CREATE_RELEASES.md
CHANGED
|
@@ -1,103 +1,103 @@
|
|
|
1
|
-
# Creating GitHub Releases
|
|
2
|
-
|
|
3
|
-
This guide explains how to populate your GitHub releases page with releases from your tags.
|
|
4
|
-
|
|
5
|
-
## Problem
|
|
6
|
-
|
|
7
|
-
You have tags in your repository (v1.0.0, v1.1.9, etc.) but the GitHub releases page is empty. GitHub doesn't automatically create releases from tags - you need to create them manually.
|
|
8
|
-
|
|
9
|
-
## Solution Options
|
|
10
|
-
|
|
11
|
-
### Option 1: Use the Automated Script (Recommended)
|
|
12
|
-
|
|
13
|
-
We've created a script that will automatically create releases for all your tags using the content from CHANGELOG.md.
|
|
14
|
-
|
|
15
|
-
#### Prerequisites
|
|
16
|
-
1. Create a GitHub Personal Access Token:
|
|
17
|
-
- Go to https://github.com/settings/tokens
|
|
18
|
-
- Click "Generate new token" → "Generate new token (classic)"
|
|
19
|
-
- Give it a name like "Commiter Releases"
|
|
20
|
-
- Select scope: `repo` (Full control of private repositories)
|
|
21
|
-
- Click "Generate token"
|
|
22
|
-
- **Copy the token immediately** (you won't see it again!)
|
|
23
|
-
|
|
24
|
-
#### Steps
|
|
25
|
-
1. Set your GitHub token as an environment variable:
|
|
26
|
-
```powershell
|
|
27
|
-
# Windows PowerShell
|
|
28
|
-
$env:GITHUB_TOKEN="your_token_here"
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
2. Run the script:
|
|
32
|
-
```bash
|
|
33
|
-
node scripts/create-releases.js
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
3. The script will:
|
|
37
|
-
- Read all your local tags
|
|
38
|
-
- Parse CHANGELOG.md for release notes
|
|
39
|
-
- Create GitHub releases for each tag
|
|
40
|
-
- Skip tags that already have releases
|
|
41
|
-
|
|
42
|
-
### Option 2: Create Releases Manually
|
|
43
|
-
|
|
44
|
-
If you prefer to create releases manually or just want to create the latest release:
|
|
45
|
-
|
|
46
|
-
1. Go to https://github.com/programinglive/commiter/releases
|
|
47
|
-
2. Click "Draft a new release"
|
|
48
|
-
3. Click "Choose a tag" and select `v1.1.9`
|
|
49
|
-
4. Set the release title to `v1.1.9`
|
|
50
|
-
5. Copy the release notes from CHANGELOG.md (lines 5-10):
|
|
51
|
-
```markdown
|
|
52
|
-
### 🐛 Bug Fixes
|
|
53
|
-
|
|
54
|
-
* convert release scripts to CJS to support ESM projects ([842da02](https://github.com/programinglive/commiter/commit/842da0298f1c4df7aa93b43ca8698e3669ef6450))
|
|
55
|
-
```
|
|
56
|
-
6. Click "Publish release"
|
|
57
|
-
7. Repeat for other versions if needed
|
|
58
|
-
|
|
59
|
-
### Option 3: Use GitHub CLI (if installed)
|
|
60
|
-
|
|
61
|
-
If you have GitHub CLI installed (`gh`):
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
# Create release for v1.1.9
|
|
65
|
-
gh release create v1.1.9 \
|
|
66
|
-
--title "v1.1.9" \
|
|
67
|
-
--notes "### 🐛 Bug Fixes
|
|
68
|
-
|
|
69
|
-
* convert release scripts to CJS to support ESM projects"
|
|
70
|
-
|
|
71
|
-
# Or create from CHANGELOG
|
|
72
|
-
gh release create v1.1.9 --notes-file CHANGELOG.md
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
## After Creating Releases
|
|
76
|
-
|
|
77
|
-
Once releases are created, they will appear on:
|
|
78
|
-
- https://github.com/programinglive/commiter/releases
|
|
79
|
-
- The right sidebar of your repository
|
|
80
|
-
- In the repository's release feed
|
|
81
|
-
|
|
82
|
-
## Automating Future Releases
|
|
83
|
-
|
|
84
|
-
To automatically create GitHub releases during your release process, you can:
|
|
85
|
-
|
|
86
|
-
1. **Add to your release script** - Modify `scripts/release.cjs` to create GitHub releases
|
|
87
|
-
2. **Use GitHub Actions** - Set up a workflow that creates releases when tags are pushed
|
|
88
|
-
3. **Use the script** - Run `scripts/create-releases.js` after each release
|
|
89
|
-
|
|
90
|
-
## Troubleshooting
|
|
91
|
-
|
|
92
|
-
### "GITHUB_TOKEN not set"
|
|
93
|
-
Make sure you've set the environment variable in your current terminal session.
|
|
94
|
-
|
|
95
|
-
### "API rate limit exceeded"
|
|
96
|
-
GitHub API has rate limits. The script waits 1 second between requests to avoid this. If you hit the limit, wait an hour and try again.
|
|
97
|
-
|
|
98
|
-
### "Resource not accessible by integration"
|
|
99
|
-
Your token doesn't have the right permissions. Make sure you selected the `repo` scope when creating the token.
|
|
100
|
-
|
|
101
|
-
## Security Note
|
|
102
|
-
|
|
103
|
-
**Never commit your GitHub token to the repository!** Always use environment variables or secure secret management.
|
|
1
|
+
# Creating GitHub Releases
|
|
2
|
+
|
|
3
|
+
This guide explains how to populate your GitHub releases page with releases from your tags.
|
|
4
|
+
|
|
5
|
+
## Problem
|
|
6
|
+
|
|
7
|
+
You have tags in your repository (v1.0.0, v1.1.9, etc.) but the GitHub releases page is empty. GitHub doesn't automatically create releases from tags - you need to create them manually.
|
|
8
|
+
|
|
9
|
+
## Solution Options
|
|
10
|
+
|
|
11
|
+
### Option 1: Use the Automated Script (Recommended)
|
|
12
|
+
|
|
13
|
+
We've created a script that will automatically create releases for all your tags using the content from CHANGELOG.md.
|
|
14
|
+
|
|
15
|
+
#### Prerequisites
|
|
16
|
+
1. Create a GitHub Personal Access Token:
|
|
17
|
+
- Go to https://github.com/settings/tokens
|
|
18
|
+
- Click "Generate new token" → "Generate new token (classic)"
|
|
19
|
+
- Give it a name like "Commiter Releases"
|
|
20
|
+
- Select scope: `repo` (Full control of private repositories)
|
|
21
|
+
- Click "Generate token"
|
|
22
|
+
- **Copy the token immediately** (you won't see it again!)
|
|
23
|
+
|
|
24
|
+
#### Steps
|
|
25
|
+
1. Set your GitHub token as an environment variable:
|
|
26
|
+
```powershell
|
|
27
|
+
# Windows PowerShell
|
|
28
|
+
$env:GITHUB_TOKEN="your_token_here"
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
2. Run the script:
|
|
32
|
+
```bash
|
|
33
|
+
node scripts/create-releases.js
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
3. The script will:
|
|
37
|
+
- Read all your local tags
|
|
38
|
+
- Parse CHANGELOG.md for release notes
|
|
39
|
+
- Create GitHub releases for each tag
|
|
40
|
+
- Skip tags that already have releases
|
|
41
|
+
|
|
42
|
+
### Option 2: Create Releases Manually
|
|
43
|
+
|
|
44
|
+
If you prefer to create releases manually or just want to create the latest release:
|
|
45
|
+
|
|
46
|
+
1. Go to https://github.com/programinglive/commiter/releases
|
|
47
|
+
2. Click "Draft a new release"
|
|
48
|
+
3. Click "Choose a tag" and select `v1.1.9`
|
|
49
|
+
4. Set the release title to `v1.1.9`
|
|
50
|
+
5. Copy the release notes from CHANGELOG.md (lines 5-10):
|
|
51
|
+
```markdown
|
|
52
|
+
### 🐛 Bug Fixes
|
|
53
|
+
|
|
54
|
+
* convert release scripts to CJS to support ESM projects ([842da02](https://github.com/programinglive/commiter/commit/842da0298f1c4df7aa93b43ca8698e3669ef6450))
|
|
55
|
+
```
|
|
56
|
+
6. Click "Publish release"
|
|
57
|
+
7. Repeat for other versions if needed
|
|
58
|
+
|
|
59
|
+
### Option 3: Use GitHub CLI (if installed)
|
|
60
|
+
|
|
61
|
+
If you have GitHub CLI installed (`gh`):
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Create release for v1.1.9
|
|
65
|
+
gh release create v1.1.9 \
|
|
66
|
+
--title "v1.1.9" \
|
|
67
|
+
--notes "### 🐛 Bug Fixes
|
|
68
|
+
|
|
69
|
+
* convert release scripts to CJS to support ESM projects"
|
|
70
|
+
|
|
71
|
+
# Or create from CHANGELOG
|
|
72
|
+
gh release create v1.1.9 --notes-file CHANGELOG.md
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## After Creating Releases
|
|
76
|
+
|
|
77
|
+
Once releases are created, they will appear on:
|
|
78
|
+
- https://github.com/programinglive/commiter/releases
|
|
79
|
+
- The right sidebar of your repository
|
|
80
|
+
- In the repository's release feed
|
|
81
|
+
|
|
82
|
+
## Automating Future Releases
|
|
83
|
+
|
|
84
|
+
To automatically create GitHub releases during your release process, you can:
|
|
85
|
+
|
|
86
|
+
1. **Add to your release script** - Modify `scripts/release.cjs` to create GitHub releases
|
|
87
|
+
2. **Use GitHub Actions** - Set up a workflow that creates releases when tags are pushed
|
|
88
|
+
3. **Use the script** - Run `scripts/create-releases.js` after each release
|
|
89
|
+
|
|
90
|
+
## Troubleshooting
|
|
91
|
+
|
|
92
|
+
### "GITHUB_TOKEN not set"
|
|
93
|
+
Make sure you've set the environment variable in your current terminal session.
|
|
94
|
+
|
|
95
|
+
### "API rate limit exceeded"
|
|
96
|
+
GitHub API has rate limits. The script waits 1 second between requests to avoid this. If you hit the limit, wait an hour and try again.
|
|
97
|
+
|
|
98
|
+
### "Resource not accessible by integration"
|
|
99
|
+
Your token doesn't have the right permissions. Make sure you selected the `repo` scope when creating the token.
|
|
100
|
+
|
|
101
|
+
## Security Note
|
|
102
|
+
|
|
103
|
+
**Never commit your GitHub token to the repository!** Always use environment variables or secure secret management.
|
package/{PRD.md → docs/PRD.md}
RENAMED
|
@@ -1,96 +1,96 @@
|
|
|
1
|
-
# Commiter Product Requirements Document (PRD)
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
1
|
+
# Commiter Product Requirements Document (PRD)
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
@@ -1,101 +1,101 @@
|
|
|
1
|
-
# Quick Guide: Create GitHub Release for v1.1.9
|
|
2
|
-
|
|
3
|
-
Follow these simple steps to create your first GitHub release:
|
|
4
|
-
|
|
5
|
-
## Step 1: Navigate to New Release Page
|
|
6
|
-
1. Make sure you're logged into GitHub
|
|
7
|
-
2. Go to: https://github.com/programinglive/commiter/releases/new
|
|
8
|
-
|
|
9
|
-
## Step 2: Fill in the Form
|
|
10
|
-
|
|
11
|
-
### Choose a tag
|
|
12
|
-
- Click "Choose a tag"
|
|
13
|
-
- Type: `v1.1.9`
|
|
14
|
-
- Click "Create new tag: v1.1.9 on publish"
|
|
15
|
-
|
|
16
|
-
### Release title
|
|
17
|
-
- Type: `v1.1.9`
|
|
18
|
-
|
|
19
|
-
### Describe this release
|
|
20
|
-
Copy and paste this content:
|
|
21
|
-
|
|
22
|
-
```markdown
|
|
23
|
-
### 🐛 Bug Fixes
|
|
24
|
-
|
|
25
|
-
* convert release scripts to CJS to support ESM projects ([842da02](https://github.com/programinglive/commiter/commit/842da0298f1c4df7aa93b43ca8698e3669ef6450))
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Step 3: Publish
|
|
29
|
-
- Click the green "Publish release" button
|
|
30
|
-
|
|
31
|
-
## Done! ✅
|
|
32
|
-
|
|
33
|
-
Your release will now appear at: https://github.com/programinglive/commiter/releases
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
## Create More Releases (Optional)
|
|
38
|
-
|
|
39
|
-
If you want to create releases for older versions, here's the content for each:
|
|
40
|
-
|
|
41
|
-
### v1.1.8
|
|
42
|
-
**Title:** `v1.1.8`
|
|
43
|
-
**Description:**
|
|
44
|
-
```markdown
|
|
45
|
-
### 🐛 Bug Fixes
|
|
46
|
-
|
|
47
|
-
* update installation script to copy missing files and update gitignore ([5d56259](https://github.com/programinglive/commiter/commit/5d562592fe35b684fa12bd89748b24551ae28a66))
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
### v1.1.7
|
|
51
|
-
**Title:** `v1.1.7`
|
|
52
|
-
**Description:**
|
|
53
|
-
```markdown
|
|
54
|
-
### 📝 Documentation
|
|
55
|
-
|
|
56
|
-
* recommend dev workflow mcp server ([58a5054](https://github.com/programinglive/commiter/commit/58a5054fafd627ef23c448fd93b1383518590ad2))
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### v1.1.6
|
|
60
|
-
**Title:** `v1.1.6`
|
|
61
|
-
**Description:**
|
|
62
|
-
```markdown
|
|
63
|
-
### 🐛 Bug Fixes
|
|
64
|
-
|
|
65
|
-
* revert to simple release notes staging to avoid git ref conflicts ([2f6a40e](https://github.com/programinglive/commiter/commit/2f6a40ed7259cffdb0b1de1633af3e43df475044))
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
### v1.1.5
|
|
69
|
-
**Title:** `v1.1.5`
|
|
70
|
-
**Description:**
|
|
71
|
-
```markdown
|
|
72
|
-
### ✨ Features
|
|
73
|
-
|
|
74
|
-
* include release notes in release commit via amendment ([3f2afa8](https://github.com/programinglive/commiter/commit/3f2afa8bd0bd264d047df06ae791384e74dc827e))
|
|
75
|
-
|
|
76
|
-
### 📝 Documentation
|
|
77
|
-
|
|
78
|
-
* update release notes for v1.1.5 ([cb3dbe6](https://github.com/programinglive/commiter/commit/cb3dbe62a85a174bfb074e3d2526a005fc83d0d7))
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### v1.1.1
|
|
82
|
-
**Title:** `v1.1.1`
|
|
83
|
-
**Description:**
|
|
84
|
-
```markdown
|
|
85
|
-
### 🐛 Bug Fixes
|
|
86
|
-
|
|
87
|
-
* remove fs.F_OK deprecation warning ([1b0652b](https://github.com/programinglive/commiter/commit/1b0652b88d1b095e1045994948f75ce8194f9d3a))
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
### v1.0.12
|
|
91
|
-
**Title:** `v1.0.12`
|
|
92
|
-
**Description:**
|
|
93
|
-
```markdown
|
|
94
|
-
### ✨ Features
|
|
95
|
-
|
|
96
|
-
* auto-detect test command during release ([602e30e](https://github.com/programinglive/commiter/commit/602e30e94ff7c58b35f8c54bd495c0334352c72c))
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
**Tip:** You only need to create releases for the major versions (1.1.9, 1.1.8, 1.1.7, etc.). You can skip the older patch versions if you want to save time.
|
|
1
|
+
# Quick Guide: Create GitHub Release for v1.1.9
|
|
2
|
+
|
|
3
|
+
Follow these simple steps to create your first GitHub release:
|
|
4
|
+
|
|
5
|
+
## Step 1: Navigate to New Release Page
|
|
6
|
+
1. Make sure you're logged into GitHub
|
|
7
|
+
2. Go to: https://github.com/programinglive/commiter/releases/new
|
|
8
|
+
|
|
9
|
+
## Step 2: Fill in the Form
|
|
10
|
+
|
|
11
|
+
### Choose a tag
|
|
12
|
+
- Click "Choose a tag"
|
|
13
|
+
- Type: `v1.1.9`
|
|
14
|
+
- Click "Create new tag: v1.1.9 on publish"
|
|
15
|
+
|
|
16
|
+
### Release title
|
|
17
|
+
- Type: `v1.1.9`
|
|
18
|
+
|
|
19
|
+
### Describe this release
|
|
20
|
+
Copy and paste this content:
|
|
21
|
+
|
|
22
|
+
```markdown
|
|
23
|
+
### 🐛 Bug Fixes
|
|
24
|
+
|
|
25
|
+
* convert release scripts to CJS to support ESM projects ([842da02](https://github.com/programinglive/commiter/commit/842da0298f1c4df7aa93b43ca8698e3669ef6450))
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Step 3: Publish
|
|
29
|
+
- Click the green "Publish release" button
|
|
30
|
+
|
|
31
|
+
## Done! ✅
|
|
32
|
+
|
|
33
|
+
Your release will now appear at: https://github.com/programinglive/commiter/releases
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Create More Releases (Optional)
|
|
38
|
+
|
|
39
|
+
If you want to create releases for older versions, here's the content for each:
|
|
40
|
+
|
|
41
|
+
### v1.1.8
|
|
42
|
+
**Title:** `v1.1.8`
|
|
43
|
+
**Description:**
|
|
44
|
+
```markdown
|
|
45
|
+
### 🐛 Bug Fixes
|
|
46
|
+
|
|
47
|
+
* update installation script to copy missing files and update gitignore ([5d56259](https://github.com/programinglive/commiter/commit/5d562592fe35b684fa12bd89748b24551ae28a66))
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### v1.1.7
|
|
51
|
+
**Title:** `v1.1.7`
|
|
52
|
+
**Description:**
|
|
53
|
+
```markdown
|
|
54
|
+
### 📝 Documentation
|
|
55
|
+
|
|
56
|
+
* recommend dev workflow mcp server ([58a5054](https://github.com/programinglive/commiter/commit/58a5054fafd627ef23c448fd93b1383518590ad2))
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### v1.1.6
|
|
60
|
+
**Title:** `v1.1.6`
|
|
61
|
+
**Description:**
|
|
62
|
+
```markdown
|
|
63
|
+
### 🐛 Bug Fixes
|
|
64
|
+
|
|
65
|
+
* revert to simple release notes staging to avoid git ref conflicts ([2f6a40e](https://github.com/programinglive/commiter/commit/2f6a40ed7259cffdb0b1de1633af3e43df475044))
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### v1.1.5
|
|
69
|
+
**Title:** `v1.1.5`
|
|
70
|
+
**Description:**
|
|
71
|
+
```markdown
|
|
72
|
+
### ✨ Features
|
|
73
|
+
|
|
74
|
+
* include release notes in release commit via amendment ([3f2afa8](https://github.com/programinglive/commiter/commit/3f2afa8bd0bd264d047df06ae791384e74dc827e))
|
|
75
|
+
|
|
76
|
+
### 📝 Documentation
|
|
77
|
+
|
|
78
|
+
* update release notes for v1.1.5 ([cb3dbe6](https://github.com/programinglive/commiter/commit/cb3dbe62a85a174bfb074e3d2526a005fc83d0d7))
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### v1.1.1
|
|
82
|
+
**Title:** `v1.1.1`
|
|
83
|
+
**Description:**
|
|
84
|
+
```markdown
|
|
85
|
+
### 🐛 Bug Fixes
|
|
86
|
+
|
|
87
|
+
* remove fs.F_OK deprecation warning ([1b0652b](https://github.com/programinglive/commiter/commit/1b0652b88d1b095e1045994948f75ce8194f9d3a))
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### v1.0.12
|
|
91
|
+
**Title:** `v1.0.12`
|
|
92
|
+
**Description:**
|
|
93
|
+
```markdown
|
|
94
|
+
### ✨ Features
|
|
95
|
+
|
|
96
|
+
* auto-detect test command during release ([602e30e](https://github.com/programinglive/commiter/commit/602e30e94ff7c58b35f8c54bd495c0334352c72c))
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
**Tip:** You only need to create releases for the major versions (1.1.9, 1.1.8, 1.1.7, etc.). You can skip the older patch versions if you want to save time.
|