mirror of
https://github.com/garrytan/gstack.git
synced 2026-08-08 23:36:06 +02:00
fix: resolve merge conflicts with main (v0.13.6.0)
Main landed v0.13.5.0 (Factory Droid support) while this branch removes Factory Droid. Bumped to v0.13.6.0, preserved both 0.13.5.0 and 0.13.4.0 CHANGELOG entries from main history. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
+37
-5
@@ -1,25 +1,57 @@
|
||||
# Changelog
|
||||
|
||||
## [0.13.4.0] - 2026-03-29 — Security Audit Round 2
|
||||
## [0.13.6.0] - 2026-03-29 — Security Audit Round 2
|
||||
|
||||
Two rounds of security hardening. The browse binary now wraps all page content in trust boundary markers so agents can't be tricked by malicious pages. The Chrome extension validates message senders. CDP binds to localhost only. Bun installs use checksum verification. Factory Droid support removed (dead code).
|
||||
Browse output is now wrapped in trust boundary markers so agents can tell page content from tool output. Markers are escape-proof. The Chrome extension validates message senders. CDP binds to localhost only. Bun installs use checksum verification.
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Sidebar agent now respects server-side args.** The sidebar-agent process was silently rebuilding its own Claude args from scratch, ignoring `--model`, `--allowedTools`, and other flags set by the server. Now uses the queued args.
|
||||
- **Trust boundary markers are escape-proof.** URLs sanitized (no newlines), marker strings escaped in content. A malicious page can't forge the END marker to break out of the untrusted block.
|
||||
|
||||
### Added
|
||||
|
||||
- **Content trust boundary markers.** Every browse command that returns page content (`text`, `html`, `links`, `forms`, `accessibility`, `console`, `dialog`, `snapshot`, `diff`, `resume`, `watch stop`) wraps output in `--- BEGIN/END UNTRUSTED EXTERNAL CONTENT ---` markers. Agents know what's page content vs tool output.
|
||||
- **XML prompt framing for sidebar.** User messages wrapped in `<user-message>` tags with XML escaping. Bash restricted to browse commands only. Opus as default model.
|
||||
- **Extension sender validation.** Chrome extension rejects messages from unknown senders and enforces a message type allowlist. Prevents cross-extension message spoofing.
|
||||
- **CDP localhost-only binding.** `bin/chrome-cdp` now passes `--remote-debugging-address=127.0.0.1` and `--remote-allow-origins` to prevent remote debugging exposure.
|
||||
- **Checksum-verified bun install.** The browse SKILL.md bootstrap now downloads the bun install script to a temp file and verifies SHA-256 before executing. No more piping curl to bash.
|
||||
|
||||
### Removed
|
||||
|
||||
- **Factory Droid support.** Removed `--host factory`, `.factory/` generated skills, Factory CI checks, and all Factory-specific code paths. Dead code, never shipped.
|
||||
- **Factory Droid support.** Removed `--host factory`, `.factory/` generated skills, Factory CI checks, and all Factory-specific code paths.
|
||||
|
||||
## [0.13.5.0] - 2026-03-29 — Factory Droid Compatibility
|
||||
|
||||
gstack now works with Factory Droid. Type `/qa` in Droid and get the same 29 skills you use in Claude Code. This makes gstack the first skill library that works across Claude Code, Codex, and Factory Droid.
|
||||
|
||||
### Added
|
||||
|
||||
- **Factory Droid support (`--host factory`).** Generate Factory-native skills with `bun run gen:skill-docs --host factory`. Skills install to `.factory/skills/` with proper frontmatter (`user-invocable: true`, `disable-model-invocation: true` for sensitive skills like /ship and /land-and-deploy).
|
||||
- **`--host all` flag.** One command generates skills for all 3 hosts. Fault-tolerant: catches per-host errors, only fails if Claude generation fails.
|
||||
- **`gstack-platform-detect` binary.** Prints a table of installed AI coding agents with versions, skill paths, and gstack status. Useful for debugging multi-host setups.
|
||||
- **Sensitive skill safety.** Six skills with side effects (ship, land-and-deploy, guard, careful, freeze, unfreeze) now declare `sensitive: true` in their templates. Factory Droids won't auto-invoke them. Claude and Codex output strips the field.
|
||||
- **Factory CI freshness check.** The skill-docs workflow now verifies Factory output is fresh on every PR.
|
||||
- **Factory awareness across operational tooling.** skill-check dashboard, gstack-uninstall, and setup script all know about Factory.
|
||||
|
||||
### Changed
|
||||
|
||||
- **Refactored multi-host generation.** Extracted `processExternalHost()` shared helper from the Codex-specific code block. Both Codex and Factory use the same function for output routing, symlink loop detection, frontmatter transformation, and path rewrites. Codex output is byte-identical after refactor.
|
||||
- **Build script uses `--host all`.** Replaces chained `gen:skill-docs` calls with a single `--host all` invocation.
|
||||
- **Tool name translation for Factory.** Claude Code tool names ("use the Bash tool") are translated to generic phrasing ("run this command") in Factory output, matching Factory's tool naming conventions.
|
||||
|
||||
## [0.13.4.0] - 2026-03-29 — Sidebar Defense
|
||||
|
||||
The Chrome sidebar now defends against prompt injection attacks. Three layers: XML-framed prompts with trust boundaries, a command allowlist that restricts bash to browse commands only, and Opus as the default model (harder to manipulate).
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Sidebar agent now respects server-side args.** The sidebar-agent process was silently rebuilding its own Claude args from scratch, ignoring `--model`, `--allowedTools`, and other flags set by the server. Every server-side configuration change was silently dropped. Now uses the queued args.
|
||||
|
||||
### Added
|
||||
|
||||
- **XML prompt framing with trust boundaries.** User messages are wrapped in `<user-message>` tags with explicit instructions to treat content as data, not instructions. XML special characters (`< > &`) are escaped to prevent tag injection attacks.
|
||||
- **Bash command allowlist.** The sidebar's system prompt now restricts Claude to browse binary commands only (`$B goto`, `$B click`, `$B snapshot`, etc.). All other bash commands (`curl`, `rm`, `cat`, etc.) are forbidden. This prevents prompt injection from escalating to arbitrary code execution.
|
||||
- **Opus default for sidebar.** The sidebar now uses Opus (the most injection-resistant model) by default, instead of whatever model Claude Code happens to be running.
|
||||
- **ML prompt injection defense design doc.** Full design doc at `docs/designs/ML_PROMPT_INJECTION_KILLER.md` covering the follow-up ML classifier (DeBERTa, BrowseSafe-bench, Bun-native 5ms vision). P0 TODO for the next PR.
|
||||
|
||||
## [0.13.3.0] - 2026-03-28 — Lock It Down
|
||||
|
||||
|
||||
Reference in New Issue
Block a user