@softspark/ai-toolkit 3.2.0 → 3.2.1

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,16 @@ Versioning follows [Semantic Versioning](https://semver.org/).
7
7
 
8
8
  ---
9
9
 
10
+ ## v3.2.1 — Statusline shellcheck cleanup (2026-05-04)
11
+
12
+ Patch release. Lint-only fix in the default status line hook — no behavior change.
13
+
14
+ ### Fixed
15
+
16
+ - **`app/hooks/ai-toolkit-statusline.sh` shellcheck warnings** — removed the unused `C_GRAY` color variable (SC2034) and replaced the deprecated `[ p -o q ]` form with `{ [ p ] || [ q ]; }` (SC2166). CI shellcheck gate at `--severity=warning` now passes clean across `app/hooks/*.sh`.
17
+
18
+ ---
19
+
10
20
  ## v3.2.0 — Output discipline & token-aware status line (2026-05-04)
11
21
 
12
22
  Minor release. Two coordinated additions: per-response output discipline and a real-token status line installed by default.
package/README.md CHANGED
@@ -14,14 +14,11 @@
14
14
 
15
15
  ---
16
16
 
17
- ## What's New in v3.2.0
17
+ ## What's New in v3.2.1
18
18
 
19
- Minor release adding response-length governance and a token-aware status line installed by default.
19
+ Patch release. Shellcheck cleanup of the default status line hook no behavior change.
20
20
 
21
- - **Output modes for `brand-voice`** `concise` (≤60% tokens) and `strict` (≤40%) modes governing conversational responses, with rule files in `app/skills/brand-voice/modes/` and a `measure.py` evaluator that runs against fixtures with load-bearing-fact assertions.
22
- - **Default comprehensive status line** — `ai-toolkit install` now wires `~/.claude/settings.json` to a single line showing cwd, git, a 10-cell context-window progress bar (green <70% / orange 70–89% / red ≥90%), `↑input ↓output` token arrows, effort level, and model. All data read directly from Claude Code's statusLine stdin — no JSONL parsing, ~50 ms cold start. User-customized statusLine entries are preserved untouched. Cost segment opt-in via `AI_TOOLKIT_STATUSLINE_SHOW_COST=1`.
23
- - **Real token telemetry** — `scripts/session_token_stats.py` parses Claude Code session JSONL for `/briefing --tokens` reporting and baseline capture. Stdlib-only.
24
- - **Opt-outs via env vars** — `AI_TOOLKIT_STATUSLINE_DISABLE`, `_NO_TOKENS`, `_NO_GIT`, `_NO_EFFORT`, `_NO_COLOR`, `_SHOW_COST` (opt-in), `_DUMP` (debug).
21
+ - **Statusline lint cleanup** `app/hooks/ai-toolkit-statusline.sh` now passes `shellcheck --severity=warning`: removed the unused `C_GRAY` color variable (SC2034) and replaced the deprecated `[ p -o q ]` form with `{ [ p ] || [ q ]; }` (SC2166).
25
22
 
26
23
  See [CHANGELOG.md](CHANGELOG.md) for full history.
27
24
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ai-toolkit",
3
3
  "description": "Professional-grade Claude Code toolkit with persona presets, skill security auditor, expanded lifecycle hooks, experimental opt-in plugin packs, benchmark harvesting, and multi-tool support.",
4
- "version": "3.2.0",
4
+ "version": "3.2.1",
5
5
  "author": {
6
6
  "name": "SoftSpark",
7
7
  "url": "https://github.com/softspark"
@@ -39,7 +39,7 @@ set -u
39
39
  # renders the statusline. So always emit colors unless explicitly disabled.
40
40
  if [ "${AI_TOOLKIT_STATUSLINE_NO_COLOR:-0}" = "1" ]; then
41
41
  C_RESET="" C_GREEN="" C_BOLD_GREEN="" C_CYAN="" C_BLUE="" C_RED=""
42
- C_YELLOW="" C_MAGENTA="" C_DIM="" C_GRAY="" C_BOLD_YELLOW="" C_ORANGE=""
42
+ C_YELLOW="" C_MAGENTA="" C_DIM="" C_BOLD_YELLOW="" C_ORANGE=""
43
43
  else
44
44
  C_RESET=$'\033[0m'
45
45
  C_GREEN=$'\033[0;32m'
@@ -51,7 +51,6 @@ else
51
51
  C_BOLD_YELLOW=$'\033[1;33m'
52
52
  C_MAGENTA=$'\033[0;35m'
53
53
  C_DIM=$'\033[2m'
54
- C_GRAY=$'\033[0;37m'
55
54
  C_ORANGE=$'\033[38;5;208m'
56
55
  fi
57
56
 
@@ -160,8 +159,8 @@ fi
160
159
  # ↑ green = upload (input tokens sent to model)
161
160
  # ↓ red = download (output tokens received from model)
162
161
  SEG_TOKENS=""
163
- if [ "${AI_TOOLKIT_STATUSLINE_NO_TOKENS:-0}" != "1" ] && \
164
- [ -n "$IN_TOK" ] && [ "$IN_TOK" != "0" -o "$OUT_TOK" != "0" ]; then
162
+ if [ "${AI_TOOLKIT_STATUSLINE_NO_TOKENS:-0}" != "1" ] && [ -n "$IN_TOK" ] && \
163
+ { [ "$IN_TOK" != "0" ] || [ "$OUT_TOK" != "0" ]; }; then
165
164
  SEG_TOKENS=" ${C_BOLD_GREEN}\xe2\x86\x91${IN_TOK}${C_RESET} ${C_RED}\xe2\x86\x93${OUT_TOK}${C_RESET}"
166
165
  if [ "${AI_TOOLKIT_STATUSLINE_SHOW_COST:-0}" = "1" ] && [ -n "$COST" ]; then
167
166
  SEG_TOKENS+=" ${C_BOLD_GREEN}\$${COST}${C_RESET}"
package/manifest.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "3.2.0",
2
+ "version": "3.2.1",
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": "3.2.0",
3
+ "version": "3.2.1",
4
4
  "description": "AI coding toolkit: 112 skills, 44 agents, 12-editor write-through (Claude, Cursor, Windsurf, Copilot, Gemini, Cline, Roo, Aider, Augment, Antigravity, Codex, opencode), machine-enforced safety constitution, SARIF audit, signed npm provenance.",
5
5
  "keywords": [
6
6
  "claude",