@softspark/ai-toolkit 4.29.1 → 4.29.2

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
@@ -7,6 +7,39 @@ Versioning follows [Semantic Versioning](https://semver.org/).
7
7
 
8
8
  ---
9
9
 
10
+ ## v4.29.2 — The Codex dry-run stops hiding a surface (2026-08-21)
11
+
12
+ ### Fixed
13
+
14
+ - **`install --dry-run` never mentioned the Codex hook surfaces.** Selecting
15
+ `codex` runs `gen_codex_hooks()` unconditionally, at every profile, writing
16
+ `.codex/hooks.json` and the hook scripts under `.codex/hooks/` (23 files). The
17
+ dry-run branch in `scripts/install_steps/ai_tools.py` printed only
18
+ `.codex/agents/` and `.agents/skills/`. A preview that omits a whole surface is
19
+ worse than no preview, and this is the surface a user is asked to review and
20
+ trust with `/hooks` before Codex will run any of it.
21
+ - **The global preview named the manifest but not its scripts.** It listed
22
+ `$CODEX_HOME/hooks.json` and stopped there, leaving out
23
+ `$CODEX_HOME/ai-toolkit-hooks/`. Same defect, other branch.
24
+
25
+ ### Added
26
+
27
+ - Four tests in `tests/test_install_profiles.bats`: the preview names both hook
28
+ paths, it names them at `minimal`/`standard`/`full` alike, the preview matches
29
+ what a live install then writes to disk, and `--dry-run` still writes nothing.
30
+ All four fail against v4.29.1.
31
+
32
+ ### Changed
33
+
34
+ - Test count: 1671 → 1675.
35
+
36
+ **Found by:** running the Release Verification SOP against the published
37
+ v4.29.1. Phase 9.1 checks dry-run output for each native surface, and the Codex
38
+ hook lines were missing — so that SOP check would have produced a false negative
39
+ on a build where the surface really was gone.
40
+
41
+ ---
42
+
10
43
  ## v4.29.1 — The guard stops blocking the safe branch delete (2026-08-21)
11
44
 
12
45
  ### Fixed
package/README.md CHANGED
@@ -6,21 +6,21 @@
6
6
  [![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)
7
7
  [![Skills](https://img.shields.io/badge/skills-109-brightgreen)](app/skills/)
8
8
  [![Agents](https://img.shields.io/badge/agents-44-blue)](app/agents/)
9
- [![Tests](https://img.shields.io/badge/tests-1671%20passing-success)](tests/)
9
+ [![Tests](https://img.shields.io/badge/tests-1675%20passing-success)](tests/)
10
10
 
11
- ## What's New in v4.29.1
11
+ ## What's New in v4.29.2
12
12
 
13
- **v4.29.1** stops the destructive-command guard from blocking a safe branch delete:
13
+ **v4.29.2** makes `install --dry-run` tell the truth about Codex hooks:
14
14
 
15
- - `guard-destructive.sh` matched every pattern with one case-insensitive grep, so
16
- the force-delete pattern also caught the lowercase safe delete -- the variant
17
- that refuses to drop an unmerged branch, and exactly the post-merge cleanup the
18
- toolkit's own git-workflow rules prescribe.
19
- - Patterns are now matched in two passes. Command names and flags are matched
20
- case-sensitively, because short flags that differ only in case are different
21
- flags. SQL keywords and the Windows `format` command stay case-insensitive, so
22
- lowercase SQL still blocks.
23
- - Force delete still blocks. Test count: 1666 -> 1671.
15
+ - Selecting `codex` always installs Codex lifecycle hooks -- `.codex/hooks.json`
16
+ plus the scripts under `.codex/hooks/` -- at every profile. The dry-run branch
17
+ listed only agents and skills, so the preview silently omitted a whole surface,
18
+ and the one you are asked to review and trust with `/hooks`.
19
+ - Both previews now name it: project installs announce
20
+ `.codex/hooks.json + .codex/hooks/`, global installs add
21
+ `$CODEX_HOME/ai-toolkit-hooks/` next to `$CODEX_HOME/hooks.json`.
22
+ - Four tests pin the preview against what the live install actually writes, so a
23
+ surface cannot go missing from the dry-run again. Test count: 1671 -> 1675.
24
24
 
25
25
  ## Table of Contents
26
26
 
@@ -3,7 +3,7 @@
3
3
  "name": "ai-toolkit",
4
4
  "displayName": "AI Toolkit",
5
5
  "description": "Professional-grade engineering skills, agents, rules, and lifecycle guardrails for Claude Code, Claude Chat, and Cowork.",
6
- "version": "4.29.1",
6
+ "version": "4.29.2",
7
7
  "author": {
8
8
  "name": "SoftSpark",
9
9
  "url": "https://github.com/softspark"
package/manifest.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.29.1",
2
+ "version": "4.29.2",
3
3
  "components": {
4
4
  "agents": {
5
5
  "description": "44 specialized agents (orchestrator, backend, frontend, security, devops, etc.)",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softspark/ai-toolkit",
3
- "version": "4.29.1",
3
+ "version": "4.29.2",
4
4
  "description": "AI coding toolkit: 109 skills, 44 agents, 12 developer-tool integrations, recoverable native tool-output filtering, Claude Chat/Cowork export, safety constitution, SARIF audit, and signed npm provenance.",
5
5
  "keywords": [
6
6
  "claude",
@@ -173,7 +173,7 @@ def install_ai_tools(target_dir: Path, rules_dir: Path,
173
173
  if "codex" in eds:
174
174
  if dry_run:
175
175
  print(" Would inject: $CODEX_HOME/AGENTS.md, $CODEX_HOME/agents/, "
176
- "$CODEX_HOME/hooks.json")
176
+ "$CODEX_HOME/hooks.json + $CODEX_HOME/ai-toolkit-hooks/")
177
177
  print(" Would generate: ~/.agents/skills/ (shared Codex skill discovery)")
178
178
  else:
179
179
  _install_codex_global(target_dir, rules_dir)
@@ -1224,6 +1224,12 @@ def _install_local_dry_run(reset: bool, editors: list[str] | None = None,
1224
1224
  if "opencode" in eds:
1225
1225
  print(" Would generate: .opencode/skills/ (profile=full)")
1226
1226
  if "codex" in eds:
1227
+ # Hooks are not profile-gated: the live path runs gen_codex_hooks
1228
+ # unconditionally whenever codex is selected, so the preview must say so
1229
+ # at every profile. Announcing the asset directory as well as the
1230
+ # manifest matters here — the hook scripts are what a user reviews and
1231
+ # trusts with /hooks before Codex will run them.
1232
+ print(" Would generate: .codex/hooks.json + .codex/hooks/ (hook scripts)")
1227
1233
  print(" Would generate: .codex/agents/ native agents")
1228
1234
  print(" Would generate: .agents/skills/ Codex skills")
1229
1235
  if codex_skills: