Skip to content

0.11.1 — stability pass (adversarial review fixes) - #10

Merged
wavyx merged 4 commits into
mainfrom
fix/0.11.1-stability
Jun 5, 2026
Merged

0.11.1 — stability pass (adversarial review fixes)#10
wavyx merged 4 commits into
mainfrom
fix/0.11.1-stability

Conversation

@wavyx

@wavyx wavyx commented Jun 5, 2026

Copy link
Copy Markdown
Owner

Fixes from a four-agent contrarian review of 0.11.0. All real bugs that sat at 100% coverage.

CRITICAL

  • paginate infinite-loop on a non-numeric pages (both clients) — self-DoS.
  • Homebrew --jq crashed (node-jq's binary isn't downloadable in the brew sandbox) — formula now depends_on "jq" + $JQ_PATH, with a --jq smoke in test do.

HIGH (MCP)

  • argv injection (flags now --name=value, positionals after --).
  • signal-killed subprocess reported as error, not silent success.
  • tool timeout + output cap (no hang/OOM).
  • mcp serve forwards --profile (was wrong-account).
  • integer args accept numbers; auth:*/docs:auth excluded; workflow:run destructive.
  • 429 backoff guards non-numeric Retry-After.

MEDIUM

  • reports reject --output csv/table clearly (were silently empty); docs reframed to JSON.
  • readText('@missing') → clear error; keychain write failures → friendly guidance.

730 tests, 100% coverage; lint clean. Post-merge: regen the Homebrew formula and push to the tap.

wavyx added 4 commits June 5, 2026 18:45
Both API clients could loop forever when a list response had a non-numeric
`pages` total, and busy-loop with no delay when a 429 `Retry-After` was
non-numeric (e.g. an HTTP-date). Coerce + validate, falling back to a sane
delay / terminating the page loop.
- Pass tool flags as --name=value and positionals after --, so an argument
  value starting with - can't be reinterpreted as a CLI flag.
- Report a signal-killed tool subprocess as an error (was silent success).
- Add a timeout + output-size cap to tool execution (no server hang/OOM).
- Forward the active --profile to tool subprocesses (was using default).
- Accept JSON numbers for integer args; drop the inert `yes` input.
- Exclude auth:*/docs:auth (local creds, browser/port side-effects); flag
  workflow:run destructive. Correct the guide's hint description.
- Reports reject --output csv/table clearly (nested data) instead of emitting
  nothing; docs reframed to JSON.
- readText('@missing') throws a clear CliError, not a raw ENOENT.
- Keychain write failures (e.g. in a container) give the friendly
  'keychain unavailable' guidance instead of a raw PermissionDenied.
- Homebrew formula depends on jq and points node-jq at it via $JQ_PATH, so
  --jq works (the bundled binary can't download in the brew sandbox).
@codecov-commenter

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@wavyx
wavyx merged commit 118bcf6 into main Jun 5, 2026
11 checks passed
@wavyx
wavyx deleted the fix/0.11.1-stability branch June 5, 2026 16:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants