@wipcomputer/wip-ai-devops-toolbox 1.9.61 → 1.9.62
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 +24 -0
- package/SKILL.md +1 -1
- package/package.json +1 -1
- package/tools/deploy-public/package.json +1 -1
- package/tools/post-merge-rename/package.json +1 -1
- package/tools/wip-branch-guard/package.json +1 -1
- package/tools/wip-file-guard/package.json +1 -1
- package/tools/wip-license-guard/package.json +1 -1
- package/tools/wip-license-hook/package.json +1 -1
- package/tools/wip-readme-format/package.json +1 -1
- package/tools/wip-release/core.mjs +26 -1
- package/tools/wip-release/package.json +1 -1
- package/tools/wip-repo-init/package.json +1 -1
- package/tools/wip-repo-permissions-hook/package.json +1 -1
- package/tools/wip-repos/package.json +1 -1
- package/tools/wip-universal-installer/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -31,6 +31,30 @@
|
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
|
|
34
|
+
|
|
35
|
+
## 1.9.62 (2026-03-29)
|
|
36
|
+
|
|
37
|
+
# Release Notes: wip-ai-devops-toolbox v1.9.62
|
|
38
|
+
|
|
39
|
+
**Fix wip-release leaving dirty state on main after every release.**
|
|
40
|
+
|
|
41
|
+
## The story
|
|
42
|
+
|
|
43
|
+
wip-release writes to 15+ files during a release (root package.json, 12 sub-tool package.json files, SKILL.md, CHANGELOG.md, product docs, trashed release notes). But gitCommitAndTag() only staged 3 files (package.json, CHANGELOG.md, SKILL.md). The other 12+ files were left modified on disk, uncommitted. This blocked git pull on the next operation and required manual `git checkout -- .` every time.
|
|
44
|
+
|
|
45
|
+
Fix: stage all files that wip-release modifies. Sub-tool package.json files, product docs (ai/product/), and trashed release notes (_trash/) are now included in the release commit.
|
|
46
|
+
|
|
47
|
+
## Issues closed
|
|
48
|
+
|
|
49
|
+
- #231 (wip-release rollback version bumps on failure)
|
|
50
|
+
|
|
51
|
+
## How to verify
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
wip-release patch
|
|
55
|
+
git status
|
|
56
|
+
# Should show clean working tree after release
|
|
57
|
+
```
|
|
34
58
|
|
|
35
59
|
## 1.9.61 (2026-03-29)
|
|
36
60
|
|
package/SKILL.md
CHANGED
|
@@ -5,7 +5,7 @@ license: MIT
|
|
|
5
5
|
interface: [cli, module, mcp, skill, hook, plugin]
|
|
6
6
|
metadata:
|
|
7
7
|
display-name: "WIP AI DevOps Toolbox"
|
|
8
|
-
version: "1.9.
|
|
8
|
+
version: "1.9.62"
|
|
9
9
|
homepage: "https://github.com/wipcomputer/wip-ai-devops-toolbox"
|
|
10
10
|
author: "Parker Todd Brooks"
|
|
11
11
|
category: dev-tools
|
package/package.json
CHANGED
|
@@ -149,12 +149,37 @@ function trashReleaseNotes(repoPath) {
|
|
|
149
149
|
|
|
150
150
|
function gitCommitAndTag(repoPath, newVersion, notes) {
|
|
151
151
|
const msg = `v${newVersion}: ${notes || 'Release'}`;
|
|
152
|
-
// Stage
|
|
152
|
+
// Stage ALL files that wip-release modifies:
|
|
153
|
+
// - Root: package.json, CHANGELOG.md, SKILL.md
|
|
154
|
+
// - Sub-tools: tools/*/package.json
|
|
155
|
+
// - Product docs: ai/product/plans-prds/roadmap.md, ai/product/readme-first-product.md
|
|
156
|
+
// - Trashed release notes: _trash/RELEASE-NOTES-*.md
|
|
157
|
+
// Using git add -A on specific paths instead of listing each file (#231)
|
|
153
158
|
for (const f of ['package.json', 'CHANGELOG.md', 'SKILL.md']) {
|
|
154
159
|
if (existsSync(join(repoPath, f))) {
|
|
155
160
|
execFileSync('git', ['add', f], { cwd: repoPath, stdio: 'pipe' });
|
|
156
161
|
}
|
|
157
162
|
}
|
|
163
|
+
// Stage sub-tool package.json files
|
|
164
|
+
const toolsDir = join(repoPath, 'tools');
|
|
165
|
+
if (existsSync(toolsDir)) {
|
|
166
|
+
for (const sub of readdirSync(toolsDir, { withFileTypes: true })) {
|
|
167
|
+
if (!sub.isDirectory()) continue;
|
|
168
|
+
const subPkg = join('tools', sub.name, 'package.json');
|
|
169
|
+
if (existsSync(join(repoPath, subPkg))) {
|
|
170
|
+
execFileSync('git', ['add', subPkg], { cwd: repoPath, stdio: 'pipe' });
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// Stage product docs and trashed release notes
|
|
175
|
+
const aiProduct = join(repoPath, 'ai', 'product');
|
|
176
|
+
if (existsSync(aiProduct)) {
|
|
177
|
+
execFileSync('git', ['add', 'ai/product/'], { cwd: repoPath, stdio: 'pipe' });
|
|
178
|
+
}
|
|
179
|
+
const trash = join(repoPath, '_trash');
|
|
180
|
+
if (existsSync(trash)) {
|
|
181
|
+
execFileSync('git', ['add', '_trash/'], { cwd: repoPath, stdio: 'pipe' });
|
|
182
|
+
}
|
|
158
183
|
// Use execFileSync to avoid shell injection via notes.
|
|
159
184
|
// --no-verify: wip-release legitimately commits on main (version bump + changelog).
|
|
160
185
|
// The pre-commit hook blocks all commits on main, but wip-release is the one exception.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wipcomputer/universal-installer",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.62",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "The Universal Interface specification for agent-native software. Teaches your AI how to build repos with every interface: CLI, Module, MCP Server, OpenClaw Plugin, Skill, Claude Code Hook.",
|
|
6
6
|
"main": "detect.mjs",
|