fix(npm-globals): patch global frog to skip git-ignored friction logs

Merged
SH
16d ago
+192-2

Summary

  • Global frog 1.1.0 runs git add on published friction entries. When the friction-log directory is git-ignored, that fails and the command reports COMMIT_FAILED after the issues were already filed, so pending entries never clear.
  • install-npm-globals.sh now applies package.json patchedDependencies to the global bun install: it copies each patch into ~/.bun/install/global, records it in the global package.json, and runs bun install there. A failed apply prints a warning instead of being silenced.
  • Adds patches/frog@1.1.0.patch, which skips ignored paths in Git.add and keeps a piped body when frog log gets a title. Pins frog to 1.1.0 so the patch key always matches.
  • No upstream release fixes this yet. 1.1.0 is the latest version.

Verification

  • Repro: on a repo that ignores **/.agents/*, unpatched global Git.add fails with git add -- .agents/friction-log/... and the patched build succeeds.
  • Scratch BUN_INSTALL global: patchedDependencies + bun install applies the patch, and the patch survives a later unrelated bun add --global.
  • shellspec spec/npm_globals_spec.sh: 76 examples, 0 failures. shellcheck and shfmt -d are clean.

decided: patch via the global installer's patchedDependencies rather than a fork or hand edit - bun applies it declaratively on every activation and the patch drops cleanly once upstream ships a fix
decided: pin frog to exact 1.1.0 - a patch keyed to one version must not silently stop applying on a minor bump

🤖 Generated with Claude Code


Summary by cubic

Fixes global frog 1.1.0 reporting COMMIT_FAILED after a successful publish when the friction-log directory is git-ignored, leaving pending entries stuck.

  • install-npm-globals.sh now copies patches into ~/.bun/install/global, records them in the global package.json, and runs bun install there; a failed apply prints a warning.
  • Adds patches/frog@1.1.0.patch, which skips git-ignored paths in Git.add and keeps a piped body when frog log gets a title.
  • Pins frog to 1.1.0 so the patch key always matches the installed version.