Skip to content

feat: community wave — 7 fixes, relink, sidebar Write, discoverability (v0.13.5.0)#641

Merged
garrytan merged 17 commits intomainfrom
garrytan/fix-wave-578-594-573
Mar 30, 2026
Merged

feat: community wave — 7 fixes, relink, sidebar Write, discoverability (v0.13.5.0)#641
garrytan merged 17 commits intomainfrom
garrytan/fix-wave-578-594-573

Conversation

@garrytan
Copy link
Copy Markdown
Owner

Summary

Seven fixes from community PRs and adversarial review, plus new tooling for skill management and sidebar capabilities.

Fixes

New Features

Test Coverage

648 tests pass, 0 failures. New regression test for double-prefix bug.

Pre-Landing Review

No issues found.

Adversarial Review

Large tier (1200+ lines). Codex structured review + Claude adversarial subagent + Codex adversarial.

High confidence (found by multiple sources):

  • gstack-relink double-prefix bug — FIXED (commit 2968d32)

Informational (not blocking):

  • Sidebar agent setTimeout can double-resolve Promise (low impact, single-threaded)
  • Unbounded stderr buffer (capped at 500 chars on output, 300s max lifetime)
  • gstack-open-url URL validation (callers validate upstream)

TODOS

No TODO items completed in this PR.

Test plan

  • All tests pass (648 pass, 0 fail)
  • Relink double-prefix regression test added and passing
  • Sidebar security test updated for Write tool

🤖 Generated with Claude Code

garrytan and others added 14 commits March 28, 2026 22:20
Tests-first for all fixes in this PR wave:
- #594 discoverability: gstack tag in descriptions, 120-char first line
- #573 feature signals: ship/SKILL.md Step 4 detection
- #510 context warnings: no preemptive warnings in generated files
- #474 Safety Net: no find -delete in generated files
- #467 telemetry: JSONL writes gated by _TEL conditional
- #584 sidebar: Write in allowedTools, stderr capture
- #578 relink: prefixed/flat symlinks, cleanup, error, config hook

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
-delete is a non-POSIX extension that fails on Safety Net environments.
-exec rm {} + is POSIX-compliant and works everywhere.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When telemetry is off, nothing is written anywhere — not just remote,
but local JSONL too. Clean trust contract: off means off everywhere.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The system handles context compaction automatically. Preemptive warnings
waste tokens and create false urgency. Skills should not warn about
context limits — just describe the compression priority order.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Every SKILL.md.tmpl description now contains "gstack" on the last line,
making skills findable in Claude Code's command palette. First-line hooks
stay under 120 chars. Split ship description to fix wrapping.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New bin/gstack-relink creates prefixed (gstack-*) or flat symlinks
based on skill_prefix config. gstack-config auto-triggers relink
when skill_prefix changes. Setup guards against recursive calls
with GSTACK_SETUP_RUNNING env var.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
/ship Step 4 now checks for feature signals (new routes, migrations,
test+source pairs, feat/ branches) when deciding version bumps.
PATCH requires no feature signals. MINOR asks the user if any signal
is detected or 500+ lines changed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…584)

Add Write to sidebar allowedTools (both sidebar-agent.ts and server.ts).
Write doesn't expand attack surface beyond what Bash already provides.
Replace empty stderr handler with buffer capture for better error
diagnostics. New bin/gstack-open-url for cross-platform URL opening.

Does NOT include Search Before Building intro flow (deferred).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…-594-573

# Conflicts:
#	browse/src/server.ts
#	browse/src/sidebar-agent.ts
The fallback allowedTools string now includes Write, matching the
sidebar-agent.ts change from commit 68dc957.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
gstack-relink now checks if a skill directory is already named gstack-*
before prepending the prefix. Previously, setting skill_prefix=true would
create gstack-gstack-upgrade, breaking the /gstack-upgrade command.

Matches setup script behavior (setup:260) which already has this guard.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Main landed v0.13.5.0 (Factory Droid Compatibility) while this branch
also had v0.13.5.0 (Community Wave). Resolved by keeping both entries
and bumping this branch to v0.13.6.0.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 29, 2026

E2E Evals: ✅ PASS

60/60 tests passed | $5.77 total cost | 12 parallel runners

Suite Result Status Cost
e2e-browse 8/8 $0.37
e2e-deploy 6/6 $1.09
e2e-design 3/3 $0.52
e2e-plan 7/7 $1.08
e2e-qa-workflow 3/3 $0.98
e2e-review 6/6 $0.95
e2e-workflow 3/3 $0.3
llm-judge 24/24 $0.48

12x ubicloud-standard-2 (Docker: pre-baked toolchain + deps) | wall clock ≈ slowest suite

garrytan and others added 3 commits March 29, 2026 15:41
Generated Factory Droid skills are build output, same as .agents/.
They should not be committed to the repo.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Main landed v0.13.5.1 (gitignore .factory) while this branch had
v0.13.6.0. Both entries kept, v0.13.6.0 stays as the higher version.
The .factory gitignore change was already on this branch.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Main landed v0.13.6.0 (GStack Learns) while this branch had v0.13.6.0
(Community Wave). Resolved by keeping both entries and bumping this
branch to v0.13.7.0. Regenerated SKILL.md files to pick up new learn
skill and apply the find -exec rm fix from this branch.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@garrytan garrytan merged commit cdd6f78 into main Mar 30, 2026
18 checks passed
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.

1 participant