@rahul05ranjan/dhruv-cli 1.3.0 → 1.4.6

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.
Files changed (103) hide show
  1. package/.github/ENTERPRISE.md +275 -0
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +45 -17
  3. package/.github/ISSUE_TEMPLATE/documentation_issue.md +61 -0
  4. package/.github/ISSUE_TEMPLATE/feature_request.md +61 -9
  5. package/.github/ISSUE_TEMPLATE/security_vulnerability.md +74 -0
  6. package/.github/dependabot.yml +42 -2
  7. package/.github/pull_request_template.md +13 -0
  8. package/.github/workflows/build-publish.yml +154 -0
  9. package/.github/workflows/ci.yml +251 -18
  10. package/.github/workflows/contribution.yml +169 -27
  11. package/.github/workflows/dependabot-auto-merge.yml +61 -2
  12. package/.github/workflows/deploy.yml +336 -0
  13. package/.github/workflows/monitoring.yml +270 -0
  14. package/.github/workflows/release.yml +229 -0
  15. package/.github/workflows/security.yml +198 -0
  16. package/.releaserc.json +50 -0
  17. package/AGENTS.md +13 -0
  18. package/CHANGELOG.md +8 -0
  19. package/PUBLISHING_FIX.md +92 -0
  20. package/__tests__/core.test.ts +318 -0
  21. package/__tests__/setup.ts +61 -0
  22. package/__tests__/workflows.test.ts +95 -0
  23. package/dist/commands/explain.js +13 -44
  24. package/dist/commands/fix.js +13 -38
  25. package/dist/commands/generate.js +45 -54
  26. package/dist/commands/health.d.ts +1 -0
  27. package/dist/commands/health.js +376 -0
  28. package/dist/commands/init.js +47 -42
  29. package/dist/commands/menu.js +90 -2
  30. package/dist/commands/metrics.d.ts +1 -0
  31. package/dist/commands/metrics.js +51 -0
  32. package/dist/commands/optimize.js +42 -34
  33. package/dist/commands/review.js +52 -48
  34. package/dist/commands/security-check.js +52 -42
  35. package/dist/commands/status.d.ts +1 -0
  36. package/dist/commands/status.js +45 -0
  37. package/dist/commands/suggest.js +13 -39
  38. package/dist/config/config.js +30 -2
  39. package/dist/core/ai.d.ts +77 -2
  40. package/dist/core/ai.js +207 -30
  41. package/dist/core/command-runner.d.ts +17 -0
  42. package/dist/core/command-runner.js +78 -0
  43. package/dist/core/logger.d.ts +40 -0
  44. package/dist/core/logger.js +138 -0
  45. package/dist/core/metrics.d.ts +34 -0
  46. package/dist/core/metrics.js +206 -0
  47. package/dist/core/prompts.d.ts +1 -0
  48. package/dist/core/prompts.js +121 -0
  49. package/dist/core/security.d.ts +34 -0
  50. package/dist/core/security.js +197 -0
  51. package/dist/index.js +43 -3
  52. package/dist/utils/ux.d.ts +3 -0
  53. package/dist/utils/ux.js +15 -0
  54. package/docs/agents/domain.md +51 -0
  55. package/docs/agents/issue-tracker.md +45 -0
  56. package/docs/agents/triage-labels.md +15 -0
  57. package/docs/api/.nojekyll +1 -0
  58. package/docs/api/assets/hierarchy.js +1 -0
  59. package/docs/api/assets/highlight.css +71 -0
  60. package/docs/api/assets/icons.js +18 -0
  61. package/docs/api/assets/icons.svg +1 -0
  62. package/docs/api/assets/main.js +60 -0
  63. package/docs/api/assets/navigation.js +1 -0
  64. package/docs/api/assets/search.js +1 -0
  65. package/docs/api/assets/style.css +1633 -0
  66. package/docs/api/hierarchy.html +1 -0
  67. package/docs/api/index.html +39 -0
  68. package/docs/api/modules.html +1 -0
  69. package/eslint.config.js +170 -0
  70. package/jest.config.json +37 -0
  71. package/lighthouserc.json +22 -0
  72. package/logs/.8a99b6cf655346317fdbf29f4fffcf91131432f3-audit.json +15 -0
  73. package/logs/.eee104bf8fff5ecd38a6a2842df260de6470a7c3-audit.json +15 -0
  74. package/package.json +62 -8
  75. package/src/commands/explain.ts +13 -42
  76. package/src/commands/fix.ts +13 -31
  77. package/src/commands/generate.ts +47 -46
  78. package/src/commands/health.ts +440 -0
  79. package/src/commands/init.ts +48 -42
  80. package/src/commands/menu.ts +86 -2
  81. package/src/commands/metrics.ts +65 -0
  82. package/src/commands/optimize.ts +40 -28
  83. package/src/commands/review.ts +54 -40
  84. package/src/commands/security-check.ts +54 -34
  85. package/src/commands/status.ts +47 -0
  86. package/src/commands/suggest.ts +13 -32
  87. package/src/config/config.ts +35 -2
  88. package/src/core/ai.ts +237 -26
  89. package/src/core/command-runner.ts +105 -0
  90. package/src/core/logger.ts +194 -0
  91. package/src/core/metrics.ts +232 -0
  92. package/src/core/prompts.ts +128 -0
  93. package/src/core/security.ts +243 -0
  94. package/src/index.ts +50 -3
  95. package/src/utils/ux.ts +18 -0
  96. package/test-suite.sh +147 -0
  97. package/tsconfig.json +3 -2
  98. package/typedoc.json +44 -0
  99. package/types/global.d.ts +13 -0
  100. package/validate-workflows.sh +270 -0
  101. package/.eslintignore +0 -1
  102. package/.eslintrc.cjs +0 -43
  103. package/src/core/ai.test.js +0 -40
@@ -0,0 +1,229 @@
1
+ name: Release Management
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ tags: ['v*']
7
+ workflow_dispatch:
8
+ inputs:
9
+ release_type:
10
+ description: 'Release type (patch, minor, major, prerelease)'
11
+ required: true
12
+ default: 'patch'
13
+ type: choice
14
+ options:
15
+ - patch
16
+ - minor
17
+ - major
18
+ - prerelease
19
+
20
+ permissions:
21
+ contents: write
22
+ packages: write
23
+ pull-requests: write
24
+ issues: write
25
+ id-token: write
26
+
27
+ jobs:
28
+ pre-release-validation:
29
+ name: Pre-Release Validation
30
+ runs-on: ubuntu-latest
31
+ timeout-minutes: 20
32
+ steps:
33
+ - name: Harden Runner
34
+ uses: step-security/harden-runner@v2
35
+ with:
36
+ egress-policy: audit
37
+
38
+ - uses: actions/checkout@v4
39
+ with:
40
+ fetch-depth: 0
41
+ token: ${{ secrets.GITHUB_TOKEN }}
42
+
43
+ - name: Set up Node.js
44
+ uses: actions/setup-node@v4
45
+ with:
46
+ node-version: '22.14.0'
47
+ cache: 'npm'
48
+ registry-url: 'https://registry.npmjs.org'
49
+
50
+ - name: Install dependencies
51
+ run: npm ci --prefer-offline --no-audit
52
+
53
+ - name: Run full test suite
54
+ run: npm run test:ci
55
+
56
+ - name: Build project
57
+ run: npm run build
58
+
59
+ - name: Generate documentation
60
+ run: npm run docs
61
+
62
+ - name: Run security audit
63
+ run: npm audit --omit=dev --audit-level=high
64
+
65
+ - name: Package size check
66
+ run: |
67
+ npm pack --dry-run
68
+ du -sh *.tgz || echo "No package found"
69
+
70
+ - name: Validate package contents
71
+ run: |
72
+ npm pack
73
+ tar -tzf *.tgz | head -20
74
+
75
+ release:
76
+ name: Create Release
77
+ runs-on: ubuntu-latest
78
+ needs: pre-release-validation
79
+ timeout-minutes: 15
80
+ environment: production
81
+ env:
82
+ # Authentication uses OIDC with npm 11.5.1+; provenance is an attestation.
83
+ NPM_CONFIG_PROVENANCE: 'true'
84
+ steps:
85
+ - name: Harden Runner
86
+ uses: step-security/harden-runner@v2
87
+ with:
88
+ egress-policy: audit
89
+
90
+ - uses: actions/checkout@v4
91
+ with:
92
+ fetch-depth: 0
93
+ token: ${{ secrets.GITHUB_TOKEN }}
94
+
95
+ - name: Set up Node.js
96
+ uses: actions/setup-node@v4
97
+ with:
98
+ node-version: '22.14.0'
99
+ cache: 'npm'
100
+ registry-url: 'https://registry.npmjs.org'
101
+
102
+ - name: Install dependencies
103
+ run: npm ci --prefer-offline --no-audit
104
+
105
+ - name: Build project
106
+ run: npm run build
107
+
108
+ - name: Generate documentation
109
+ run: npm run docs
110
+
111
+ - name: Install npm with trusted publishing support
112
+ run: npm install --global npm@11.17.0
113
+
114
+ - name: Generate changelog
115
+ run: |
116
+ npx conventional-changelog-cli -p angular -i CHANGELOG.md -s
117
+ git add CHANGELOG.md || echo "No changelog changes"
118
+
119
+ - name: Create Release PR
120
+ if: github.event_name == 'workflow_dispatch'
121
+ uses: peter-evans/create-pull-request@v7
122
+ with:
123
+ token: ${{ secrets.GITHUB_TOKEN }}
124
+ commit-message: 'chore(release): prepare release ${{ github.event.inputs.release_type }}'
125
+ title: 'chore(release): prepare ${{ github.event.inputs.release_type }} release'
126
+ body: |
127
+ ## Release Preparation
128
+
129
+ This PR prepares a ${{ github.event.inputs.release_type }} release.
130
+
131
+ ### Changes included:
132
+ - Updated version in package.json
133
+ - Generated changelog
134
+ - Updated documentation
135
+
136
+ ### Pre-release checklist:
137
+ - [ ] All tests passing
138
+ - [ ] Documentation updated
139
+ - [ ] Security audit clean
140
+ - [ ] Breaking changes documented
141
+
142
+ **Auto-generated by Release Management workflow**
143
+ branch: release/prepare-${{ github.event.inputs.release_type }}
144
+ delete-branch: true
145
+
146
+ - name: Release with semantic-release
147
+ if: github.ref == 'refs/heads/main' && github.event_name == 'push'
148
+ env:
149
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
150
+ run: npx semantic-release
151
+
152
+ - name: Manual publish for workflow dispatch
153
+ if: github.event_name == 'workflow_dispatch'
154
+ run: |
155
+ # For manual releases, update version first
156
+ npm version ${{ github.event.inputs.release_type }} --no-git-tag-version
157
+ npm publish --access public --provenance
158
+
159
+ - name: Update GitHub Pages
160
+ if: startsWith(github.ref, 'refs/tags/v')
161
+ uses: peaceiris/actions-gh-pages@v4
162
+ with:
163
+ github_token: ${{ secrets.GITHUB_TOKEN }}
164
+ publish_dir: ./docs
165
+ publish_branch: gh-pages
166
+ enable_jekyll: false
167
+
168
+ - name: Create GitHub Release
169
+ if: startsWith(github.ref, 'refs/tags/v')
170
+ uses: softprops/action-gh-release@v2
171
+ with:
172
+ files: |
173
+ dist/**
174
+ docs/**
175
+ *.tgz
176
+ generate_release_notes: true
177
+ draft: false
178
+ prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') || contains(github.ref, 'rc') }}
179
+
180
+ post-release:
181
+ name: Post Release Tasks
182
+ runs-on: ubuntu-latest
183
+ needs: release
184
+ if: always() && (needs.release.result == 'success')
185
+ timeout-minutes: 10
186
+ steps:
187
+ - name: Harden Runner
188
+ uses: step-security/harden-runner@v2
189
+ with:
190
+ egress-policy: audit
191
+
192
+ - uses: actions/checkout@v4
193
+
194
+ - name: Update repository topics
195
+ # Best-effort: GITHUB_TOKEN cannot replaceAllTopics without admin.
196
+ continue-on-error: true
197
+ uses: actions/github-script@v7
198
+ with:
199
+ script: |
200
+ const packageJson = require('./package.json');
201
+ const topics = [
202
+ 'cli',
203
+ 'ai',
204
+ 'developer-tools',
205
+ 'ollama',
206
+ 'typescript',
207
+ `version-${packageJson.version.replace(/\./g, '-')}`
208
+ ];
209
+
210
+ await github.rest.repos.replaceAllTopics({
211
+ owner: context.repo.owner,
212
+ repo: context.repo.repo,
213
+ names: topics
214
+ });
215
+
216
+ - name: Notify stakeholders
217
+ uses: 8398a7/action-slack@v3
218
+ continue-on-error: true
219
+ with:
220
+ status: 'success'
221
+ channel: '#releases'
222
+ text: |
223
+ 🎉 New release published!
224
+
225
+ **Repository:** ${{ github.repository }}
226
+ **Version:** ${{ github.ref_name }}
227
+ **Release Notes:** ${{ github.server_url }}/${{ github.repository }}/releases/tag/${{ github.ref_name }}
228
+ env:
229
+ SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}
@@ -0,0 +1,198 @@
1
+ name: Security Monitoring
2
+
3
+ on:
4
+ schedule:
5
+ - cron: '0 6 * * 1' # Every Monday at 6 AM UTC
6
+ workflow_dispatch:
7
+ push:
8
+ branches: [ main ]
9
+ pull_request:
10
+ branches: [ main ]
11
+
12
+ permissions:
13
+ contents: read
14
+ actions: read
15
+
16
+ jobs:
17
+ secret-scan:
18
+ name: Secret Scanning
19
+ runs-on: ubuntu-latest
20
+ timeout-minutes: 10
21
+ steps:
22
+ - name: Harden Runner
23
+ uses: step-security/harden-runner@v2
24
+ with:
25
+ egress-policy: audit
26
+
27
+ - uses: actions/checkout@v4
28
+ with:
29
+ fetch-depth: 0
30
+
31
+ - name: Run TruffleHog
32
+ uses: trufflesecurity/trufflehog@main
33
+ with:
34
+ path: ./
35
+ # Use the action's event-aware range (push, PR, or full history).
36
+ extra_args: --debug --only-verified
37
+
38
+ license-check:
39
+ name: License Compliance
40
+ runs-on: ubuntu-latest
41
+ timeout-minutes: 10
42
+ steps:
43
+ - name: Harden Runner
44
+ uses: step-security/harden-runner@v2
45
+ with:
46
+ egress-policy: audit
47
+
48
+ - uses: actions/checkout@v4
49
+
50
+ - name: Set up Node.js
51
+ uses: actions/setup-node@v4
52
+ with:
53
+ node-version: '20.8.1'
54
+ cache: 'npm'
55
+
56
+ - name: Install dependencies
57
+ run: npm ci --prefer-offline --no-audit
58
+
59
+ - name: Check licenses
60
+ run: |
61
+ npx license-checker --summary --onlyAllow 'MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;0BSD;Unlicense' || echo "License check completed with warnings"
62
+ continue-on-error: true
63
+
64
+ supply-chain:
65
+ name: Supply Chain Security
66
+ runs-on: ubuntu-latest
67
+ timeout-minutes: 15
68
+ steps:
69
+ - name: Harden Runner
70
+ uses: step-security/harden-runner@v2
71
+ with:
72
+ egress-policy: audit
73
+
74
+ - uses: actions/checkout@v4
75
+
76
+ - name: Set up Node.js
77
+ uses: actions/setup-node@v4
78
+ with:
79
+ node-version: '20.8.1'
80
+ cache: 'npm'
81
+
82
+ - name: Install dependencies
83
+ run: npm ci --prefer-offline --no-audit
84
+
85
+ - name: Run OSV Scanner
86
+ uses: google/osv-scanner-action/osv-scanner-action@v2.6.0
87
+ continue-on-error: true
88
+ with:
89
+ scan-args: |-
90
+ --recursive
91
+ ./
92
+
93
+ - name: Run Snyk Security Scan
94
+ uses: snyk/actions/node@master
95
+ env:
96
+ SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
97
+ with:
98
+ args: --severity-threshold=high
99
+ continue-on-error: true
100
+
101
+ sbom-generation:
102
+ name: Generate SBOM
103
+ runs-on: ubuntu-latest
104
+ timeout-minutes: 10
105
+ steps:
106
+ - name: Harden Runner
107
+ uses: step-security/harden-runner@v2
108
+ with:
109
+ egress-policy: audit
110
+
111
+ - uses: actions/checkout@v4
112
+
113
+ - name: Set up Node.js
114
+ uses: actions/setup-node@v4
115
+ with:
116
+ node-version: '20.8.1'
117
+ cache: 'npm'
118
+
119
+ - name: Install dependencies
120
+ run: npm ci --prefer-offline --no-audit
121
+
122
+ - name: Generate SBOM
123
+ run: |
124
+ npx --yes @cyclonedx/cyclonedx-npm --output-file sbom.json
125
+ npx --yes @cyclonedx/cyclonedx-npm --output-file sbom.xml --output-format XML
126
+
127
+ - name: Upload SBOM
128
+ uses: actions/upload-artifact@v4
129
+ with:
130
+ name: sbom-files
131
+ path: |
132
+ sbom.json
133
+ sbom.xml
134
+ retention-days: 90
135
+
136
+ security-scorecard:
137
+ name: OSSF Scorecard
138
+ runs-on: ubuntu-latest
139
+ permissions:
140
+ security-events: write
141
+ actions: read
142
+ contents: read
143
+ id-token: write
144
+ # Scorecard only supports analysis from the repository's default branch.
145
+ if: github.event_name != 'pull_request' && github.ref == format('refs/heads/{0}', github.event.repository.default_branch)
146
+ steps:
147
+ - name: Harden Runner
148
+ uses: step-security/harden-runner@v2
149
+ with:
150
+ egress-policy: audit
151
+
152
+ - uses: actions/checkout@v4
153
+ with:
154
+ persist-credentials: false
155
+
156
+ - name: Run analysis
157
+ uses: ossf/scorecard-action@v2.4.4
158
+ with:
159
+ results_file: results.sarif
160
+ results_format: sarif
161
+ publish_results: true
162
+
163
+ - name: Upload SARIF results
164
+ if: always() && hashFiles('results.sarif') != ''
165
+ uses: github/codeql-action/upload-sarif@v3
166
+ with:
167
+ sarif_file: results.sarif
168
+
169
+ container-scan:
170
+ name: Container and Dependency Scan
171
+ runs-on: ubuntu-latest
172
+ timeout-minutes: 15
173
+ if: github.event_name != 'pull_request'
174
+ permissions:
175
+ contents: read
176
+ security-events: write
177
+ steps:
178
+ - name: Harden Runner
179
+ uses: step-security/harden-runner@v2
180
+ with:
181
+ egress-policy: audit
182
+
183
+ - uses: actions/checkout@v4
184
+
185
+ # Scorecard publishing only permits approved actions in its own job.
186
+ - name: Container and dependency scan
187
+ uses: anchore/scan-action@v7.4.2
188
+ id: scan
189
+ with:
190
+ path: "."
191
+ fail-build: false
192
+ output-format: sarif
193
+
194
+ - name: Upload Anchore scan SARIF file
195
+ if: always() && steps.scan.outputs.sarif != ''
196
+ uses: github/codeql-action/upload-sarif@v3
197
+ with:
198
+ sarif_file: ${{ steps.scan.outputs.sarif }}
@@ -0,0 +1,50 @@
1
+ {
2
+ "branches": [
3
+ "main",
4
+ {
5
+ "name": "improvement",
6
+ "prerelease": "beta"
7
+ },
8
+ {
9
+ "name": "development",
10
+ "prerelease": "alpha"
11
+ }
12
+ ],
13
+ "plugins": [
14
+ "@semantic-release/commit-analyzer",
15
+ "@semantic-release/release-notes-generator",
16
+ [
17
+ "@semantic-release/changelog",
18
+ {
19
+ "changelogFile": "CHANGELOG.md"
20
+ }
21
+ ],
22
+ "@semantic-release/npm",
23
+ [
24
+ "@semantic-release/github",
25
+ {
26
+ "assets": [
27
+ {
28
+ "path": "dist/**",
29
+ "label": "Distribution files"
30
+ },
31
+ {
32
+ "path": "docs/**",
33
+ "label": "Documentation"
34
+ }
35
+ ]
36
+ }
37
+ ],
38
+ [
39
+ "@semantic-release/git",
40
+ {
41
+ "assets": [
42
+ "CHANGELOG.md",
43
+ "package.json",
44
+ "package-lock.json"
45
+ ],
46
+ "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
47
+ }
48
+ ]
49
+ ]
50
+ }
package/AGENTS.md ADDED
@@ -0,0 +1,13 @@
1
+ ## Agent skills
2
+
3
+ ### Issue tracker
4
+
5
+ Issues live in GitHub Issues (rahul05ranjan/dhruv-cli), via the `gh` CLI. See `docs/agents/issue-tracker.md`.
6
+
7
+ ### Triage labels
8
+
9
+ Default five-role vocabulary: `needs-triage`, `needs-info`, `ready-for-agent`, `ready-for-human`, `wontfix`. See `docs/agents/triage-labels.md`.
10
+
11
+ ### Domain docs
12
+
13
+ Single-context: one `CONTEXT.md` + `docs/adr/` at the repo root. See `docs/agents/domain.md`.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ # [1.4.0](https://github.com/rahul05ranjan/dhruv-cli/compare/v1.4.5...v1.4.0) (2026-09-18)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **ci:** isolate Scorecard publishing from other security scans ([087833b](https://github.com/rahul05ranjan/dhruv-cli/commit/087833b470c2df96da54eb1f07fc5ef488106f61))
7
+ * **ci:** repair trusted publishing and security workflows ([7f6d202](https://github.com/rahul05ranjan/dhruv-cli/commit/7f6d2028ffde96a446d6f346d0936c56fb830e61))
8
+ * **ci:** update Anchore scanner for the current vulnerability database ([7009198](https://github.com/rahul05ranjan/dhruv-cli/commit/70091989b636878f61c741eb2b5abf21fb5df922))
1
9
  # Changelog
2
10
 
3
11
  ## [1.1.1](https://github.com/rahul05ranjan/dhruv-cli/compare/v1.1.0...v1.1.1) (2025-06-29)
@@ -0,0 +1,92 @@
1
+ # 🔧 NPM Publishing Issue Resolution
2
+
3
+ ## Issue Description
4
+ The GitHub Actions workflow was failing with:
5
+ ```
6
+ npm ERR! 403 403 Forbidden - PUT https://registry.npmjs.org/@rahul05ranjan%2fdhruv-cli - You cannot publish over the previously published versions: 0.0.0-development.
7
+ ```
8
+
9
+ ## Root Cause
10
+ The package.json had version `0.0.0-development` which already exists on NPM and cannot be republished.
11
+
12
+ ## Solution Applied
13
+
14
+ ### 1. ✅ Updated Package Version
15
+ - Changed version from `0.0.0-development` to `1.4.0` (next logical version after `1.3.0`)
16
+ - This avoids the conflict with existing published versions
17
+
18
+ ### 2. ✅ Added Semantic Release Configuration
19
+ - Created `.releaserc.json` with proper semantic-release configuration
20
+ - Added support for conventional commits and automated versioning
21
+ - Installed required semantic-release plugins
22
+
23
+ ### 3. ✅ Improved CI/CD Workflows
24
+ - **Modified `ci.yml`**: Removed direct npm publish to avoid conflicts
25
+ - **Updated `release.yml`**: Enhanced with semantic-release support
26
+ - **Created `build-publish.yml`**: New dedicated publishing workflow with version conflict detection
27
+
28
+ ### 4. ✅ Version Conflict Prevention
29
+ The new `build-publish.yml` workflow includes:
30
+ - Automatic version conflict detection
31
+ - Smart version bumping based on commit messages
32
+ - Support for manual version bumping
33
+ - Proper Git tagging and GitHub releases
34
+
35
+ ## Current Status
36
+ - ✅ Package version: `1.4.0` (ready for publishing)
37
+ - ✅ Dry run successful: Package can be published without conflicts
38
+ - ✅ All tests passing
39
+ - ✅ Build successful
40
+ - ✅ Linting clean
41
+ - ✅ Documentation generated
42
+
43
+ ## Published Versions on NPM
44
+ ```json
45
+ [
46
+ "0.0.0-development",
47
+ "1.0.0", "1.0.1", "1.1.0", "1.1.1",
48
+ "1.1.2", "1.1.3", "1.1.4", "1.1.5",
49
+ "1.1.6", "1.2.0", "1.2.1", "1.2.2",
50
+ "1.2.3", "1.2.4", "1.3.0"
51
+ ]
52
+ ```
53
+
54
+ ## Next Steps
55
+ 1. **For immediate fix**: The package is ready to publish as version `1.4.0`
56
+ 2. **For future releases**: Use the new `build-publish.yml` workflow
57
+ 3. **For semantic releases**: Commit messages should follow conventional commits format
58
+
59
+ ## Workflow Recommendations
60
+
61
+ ### For Hotfixes/Patches
62
+ ```bash
63
+ # Commit with conventional format
64
+ git commit -m "fix: resolve critical issue"
65
+ # This will trigger a patch release (1.4.1)
66
+ ```
67
+
68
+ ### For Features
69
+ ```bash
70
+ # Commit with conventional format
71
+ git commit -m "feat: add new functionality"
72
+ # This will trigger a minor release (1.5.0)
73
+ ```
74
+
75
+ ### For Breaking Changes
76
+ ```bash
77
+ # Commit with breaking change notation
78
+ git commit -m "feat!: major API changes
79
+
80
+ BREAKING CHANGE: This changes the API structure"
81
+ # This will trigger a major release (2.0.0)
82
+ ```
83
+
84
+ ## Files Modified
85
+ - ✅ `package.json` - Updated version to 1.4.0
86
+ - ✅ `.releaserc.json` - Added semantic-release configuration
87
+ - ✅ `.github/workflows/ci.yml` - Removed direct publishing
88
+ - ✅ `.github/workflows/release.yml` - Enhanced with semantic-release
89
+ - ✅ `.github/workflows/build-publish.yml` - New intelligent publishing workflow
90
+ - ✅ `package.json` - Added semantic-release dependencies
91
+
92
+ The publishing issue is now resolved! 🎉