@wipcomputer/wip-ai-devops-toolbox 1.9.49 → 1.9.50

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
@@ -31,6 +31,33 @@
31
31
 
32
32
 
33
33
 
34
+
35
+ ## 1.9.50 (2026-03-20)
36
+
37
+ # Release Notes: wip-ai-devops-toolbox v1.9.50
38
+
39
+ **wip-release: require product update doc on every release.**
40
+
41
+ ## What changed
42
+
43
+ New quality gate in wip-release: checks that `ai/dev-updates/product-update/*-product-update.md` was modified since the last release tag. Same pattern as dev-updates, roadmap, and readme-first checks.
44
+
45
+ The product update doc is a human-readable test guide. Each release entry has: what changed, how it's supposed to work, and how to test. New entries go at the top. Additive only.
46
+
47
+ ## Why
48
+
49
+ Three repos now have product update docs but nothing enforced keeping them current. Without the gate, the docs will drift immediately (same problem we had with TECHNICAL.md).
50
+
51
+ ## Issues closed
52
+
53
+ - #220
54
+
55
+ ## How to verify
56
+
57
+ ```bash
58
+ wip-release patch --dry-run
59
+ # Should warn if product update doc not modified since last release
60
+ ```
34
61
 
35
62
  ## 1.9.49 (2026-03-20)
36
63
 
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.49"
8
+ version: "1.9.50"
9
9
  homepage: "https://github.com/wipcomputer/wip-ai-devops-toolbox"
10
10
  author: "Parker Todd Brooks"
11
11
  category: dev-tools
@@ -0,0 +1,24 @@
1
+ # Release Notes: wip-ai-devops-toolbox v1.9.50
2
+
3
+ **wip-release: require product update doc on every release.**
4
+
5
+ ## What changed
6
+
7
+ New quality gate in wip-release: checks that `ai/dev-updates/product-update/*-product-update.md` was modified since the last release tag. Same pattern as dev-updates, roadmap, and readme-first checks.
8
+
9
+ The product update doc is a human-readable test guide. Each release entry has: what changed, how it's supposed to work, and how to test. New entries go at the top. Additive only.
10
+
11
+ ## Why
12
+
13
+ Three repos now have product update docs but nothing enforced keeping them current. Without the gate, the docs will drift immediately (same problem we had with TECHNICAL.md).
14
+
15
+ ## Issues closed
16
+
17
+ - #220
18
+
19
+ ## How to verify
20
+
21
+ ```bash
22
+ wip-release patch --dry-run
23
+ # Should warn if product update doc not modified since last release
24
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/wip-ai-devops-toolbox",
3
- "version": "1.9.49",
3
+ "version": "1.9.50",
4
4
  "type": "module",
5
5
  "description": "The complete AI DevOps toolkit for AI-assisted development teams.",
6
6
  "license": "MIT",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/deploy-public",
3
- "version": "1.9.49",
3
+ "version": "1.9.50",
4
4
  "description": "Private-to-public repo sync. Excludes ai/ folder, creates PR, merges, cleans up branches.",
5
5
  "bin": {
6
6
  "deploy-public": "./deploy-public.sh"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/post-merge-rename",
3
- "version": "1.9.49",
3
+ "version": "1.9.50",
4
4
  "description": "Post-merge branch renaming. Appends --merged-YYYY-MM-DD to preserve history.",
5
5
  "bin": {
6
6
  "post-merge-rename": "./post-merge-rename.sh"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/wip-branch-guard",
3
- "version": "1.9.49",
3
+ "version": "1.9.50",
4
4
  "description": "PreToolUse hook that blocks all writes on main branch. Forces agents to work on branches or worktrees.",
5
5
  "type": "module",
6
6
  "main": "guard.mjs",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/wip-file-guard",
3
- "version": "1.9.49",
3
+ "version": "1.9.50",
4
4
  "type": "module",
5
5
  "description": "Hook that blocks destructive edits to protected identity files. For Claude Code CLI and OpenClaw.",
6
6
  "main": "guard.mjs",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/wip-license-guard",
3
- "version": "1.9.49",
3
+ "version": "1.9.50",
4
4
  "description": "License compliance for your own repos. Ensures correct copyright, dual-license blocks, and LICENSE files.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/wip-license-hook",
3
- "version": "1.9.49",
3
+ "version": "1.9.50",
4
4
  "description": "License rug-pull detection and dependency license compliance for open source projects",
5
5
  "type": "module",
6
6
  "main": "dist/cli/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/wip-readme-format",
3
- "version": "1.9.49",
3
+ "version": "1.9.50",
4
4
  "description": "Reformat any repo's README to follow the WIP Computer standard. Agent-first, human-readable.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -388,6 +388,20 @@ function checkProductDocs(repoPath) {
388
388
  }
389
389
  }
390
390
 
391
+ // 4. Product update doc: modified since last tag
392
+ const productUpdateDir = join(aiDir, 'dev-updates', 'product-update');
393
+ if (existsSync(productUpdateDir)) {
394
+ const puFiles = readdirSync(productUpdateDir).filter(f => f.endsWith('.md'));
395
+ if (puFiles.length > 0) {
396
+ const anyModified = puFiles.some(f =>
397
+ fileModifiedSinceLastTag(repoPath, `ai/dev-updates/product-update/${f}`)
398
+ );
399
+ if (!anyModified) {
400
+ missing.push('ai/dev-updates/product-update/ (product update doc not updated since last release)');
401
+ }
402
+ }
403
+ }
404
+
391
405
  return { missing, ok: missing.length === 0, skipped: false };
392
406
  }
393
407
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/wip-release",
3
- "version": "1.9.49",
3
+ "version": "1.9.50",
4
4
  "type": "module",
5
5
  "description": "One-command release pipeline. Bumps version, updates changelog + SKILL.md, publishes to npm + GitHub.",
6
6
  "main": "core.mjs",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/wip-repo-init",
3
- "version": "1.9.49",
3
+ "version": "1.9.50",
4
4
  "description": "Scaffold the standard ai/ directory structure in any repo",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/wip-repo-permissions-hook",
3
- "version": "1.9.49",
3
+ "version": "1.9.50",
4
4
  "type": "module",
5
5
  "description": "Repo visibility guard. Blocks repos from going public without a -private counterpart.",
6
6
  "main": "core.mjs",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/wip-repos",
3
- "version": "1.9.49",
3
+ "version": "1.9.50",
4
4
  "type": "module",
5
5
  "description": "Repo manifest reconciler. Single source of truth for repo organization. Like prettier for folder structure.",
6
6
  "main": "core.mjs",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/universal-installer",
3
- "version": "1.9.49",
3
+ "version": "1.9.50",
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",