This repository was archived by the owner on Oct 1, 2026. It is now read-only.
Repository navigation
v0.4.0
Minor Changes
-
0dd68eeThanks @cevr! - Comprehensive audit — security, soundness, UX, and new featuresSecurity:
- Prevent git flag injection via branch names (
--separator in git commands) - Branch name validation (reject
--prefixed,.., spaces,.lock, ending., ending/, single@, empty, invalid chars) - Wrap
Bun.spawninEffect.syncfor referential transparency
Bug fixes:
- Spinner shows failure icon on error, warning on interrupt (was always green)
- ANSI codes no longer leak to stdout when piped (separate stdout/stderr color detection)
submitpreserves existing PR body on re-submit (was wipingbodyfield)clean --jsonemits output on all code paths (early return, dry-run, normal)cleanonly removes branch from metadata after successful git deletedeletechecks for dirty working tree before checkoutsyncno longer auto-aborts rebase on conflict — leaves in progress for user resolutionsyncusesrebaseOntowith merge-base computation to avoid duplicating commitssync --from <last-branch>warns instead of silently succeedingdetectskips stack creation when name already exists--verboseand--quietare now mutually exclusive (exit code 2)- Corrupted stack file backed up before reset
- Navigation commands respect
--quietflag
New features:
stacked amend— amend commit + auto-rebase children (--edit,--from,--json)stacked doctor— check metadata health, auto-fix stale branches (--fix,--json)stacked rename— rename stacks (--json)stacked reorder— move branches within a stack (--before,--after,--json)stacked split— split stack at a branch point (--dry-run,--json)--jsonand--dry-runonsynccommand--jsonon navigation commands (checkout,up,down,top,bottom)--dry-runondeletecommand- Error codes on all errors (structured
Error [CODE]: messageformat) - Exit code 2 for usage errors, 1 for operational errors
createandadoptare idempotent (safe to re-run)- Global flags visible in
--helpoutput initprints next-steps guidancesubmit --onlyflag to process only the current branchsubmit --title/--bodyper-branch support (comma-delimited or single-branch)- Interactive confirmations for
deleteandclean(skip with--yes/-y) adopthints to runstacked syncafter adopting- Argument descriptions in help output for all commands
- Root command examples in
stacked --help
Refactoring:
Effect.fnwrapping for all ui functions (trace spans)- Removed dead code and deduplicated stack lookups
- Error handling uses
Effect.catchTagsinstead of manual_taginspection - Exposed
findBranchStackas public StackService method
- Prevent git flag injection via branch names (