Skip to content

v2.1.6

Choose a tag to compare

@lucasdmarco lucasdmarco released this 09 Jun 15:12
· 52 commits to master since this release

Cross-Harness Portability (F0-F8) + RCE elimination

F0 — Python portátil

\sys.executable\ em todos os hooks.
esolvePythonCmd()\ no JS (prefere \python3, fallback \python).

F1 — Path resolution unificada

_paths.py\ com
ead_with_fallback(). Dados migrados para ~/.gstack/.

F2 — Input normalization

_harness.py\ mapeia snake_case + camelCase (\lastMessage/ \last_assistant_message, etc).

F3 — Crash safety

\sys.excepthook\ global em \stop.py\ — qualquer exceção gera JSON válido no stdout.

F4 — MCP para Claude

\claude.js\ escreve MCP servers em ~/.claude/settings.json\ além de ~/.mcp.json.

F5 — Bridge real

\writeRealHarnessBridge\ aponta para ~/.gstack/hooks/\ em vez do diretório morto ~/.gstack-vibehard/hooks/.

F6 — Claude independente do Codex

Hooks copiados do pacote (\hooks/hooks/) — não mais de ~/.codex/hooks/.

F7 — OpenCode com stdin

Plugin \gstack-session.js\ passa payload JSON com {cwd, transcript_path, last_assistant_message}'.

F8 — Detectores

Windsurf, Gemini CLI, Kiro, Zed adicionados ao \detector.js.

RCE elimination

  • \safeDownloadAndRun: PowerShell use \param(,)\ bind — URL nunca interpretada como comando.
  • \headroom.js: 6 \execSync\ convertidos para \execFileSync\ com {shell:false}.
  • README corrigido: claims falsas sobre 'todo o código usa execFileSync' removidas.