Repository navigation
v0.29.0
This release adds PR text regeneration to submit, tightens tree --json for short and scoped views, and moves merge orchestration out of the CLI layer, along with a broad modernization pass over the codebase.
Highlights
stackit submit --regeneraterebuilds PR titles and descriptions from your current commits, even when there's nothing new to push. In a terminal it shows the replacement text and asks before writing. It works with--dry-run(preview only) and--json, which reports aregenerated: {title, body}field per branch. Lock banners and stack footers are preserved.- Breaking (JSON):
tree short --jsonandt --jsonmatch the text view. Short views are now local-only. They make no GitHub calls and omitpr,commits,additions,deletions,github_available,approved_countandin_review_count; before, these fields came back as zeros.--stackand--steps Nnow limit branches, children and summary to the drawn set. Scripts that need the full shape should usetree --jsonorstate --json. - More reliable orphaned-metadata handling in
sync. Answers you've already given are kept if you cancel a later prompt. Each push runs on its own, so one rejection no longer fails the rest. Duplicate metadata writes are gone. - Faster
submitplanning and dashboard ordering. Missing PR content is fetched in one batch, branch metadata is no longer read twice, and dashboard branch ordering no longer rescans for children.
Features
- Added
submit --regenerateto rebuild PR titles and descriptions from commits, with dry-run and JSON preview support (#1753).
Fixes
- Made
tree short --json,t --json,--stackand--stepsJSON output match the drawn view and skip GitHub lookups for short views (#1752). - Batched orphaned-metadata pushes, kept already-answered prompts on cancel, and removed a redundant metadata write during
sync(#1805). - Added coverage and documented the rule for refusing modifications when a stack's worktree registration is invalid (#1811).
Performance
- Batched fetching of missing PR content during submit planning (#1746).
- Stopped double-reading branch metadata when computing PR submission status (#1786).
- Indexed children when ordering dashboard branches (#1745).
Refactors
- Moved merge orchestration (
MergePR,Drain, post-merge sync, progress events) from the CLI intointernal/actions/merge, routed prompts through handler interfaces, addedinternal/actions/stackview, and narrowed engine and GitHub interfaces (#1814). - Composed PR bodies in one place and resolved submit options up front (#1819).
- Modernized the codebase with stdlib helpers:
slices/cmpinstead ofsort,slices.Index/Contains/ContainsFunc,slices.Sorted(maps.Keys(...)),strings.Cut/CutPrefix/CutSuffix, and range-over-int loops (#1816, #1818, #1820, #1822, #1824, #1825, #1826, #1827, #1828, #1829). - Stopped discarding the
Getwderror in the gh command runner (#1815).
Docs
- Aligned agent workflow templates with fold and validation behavior (#1751).
Chore
- Updated Go and web dependencies to latest (#1823).
- Parallelized serial engine and git tests without losing coverage (#1813).
What's Changed
- perf(test): parallelize serial engine and git tests, coverage preserved by @jonnii in #1813
- refactor: narrow interfaces, type primitives, and push logic down a layer by @jonnii in #1814
- refactor: drop discarded Getwd error in gh command runner by @jonnii in #1815
- fix: refuse modifications when a worktree registration is invalid by @jonnii in #1811
- perf: stop double-reading branch metadata in PR submission status by @jonnii in #1786
- perf: batch missing PR content during submit planning by @jonnii in #1746
- fix: batch orphaned-metadata push and dedupe redundant metadata write by @jonnii in #1805
- refactor: use slices.Index/Contains instead of hand-rolled helpers by @jonnii in #1816
- docs: align agent workflows with fold and validation behavior by @jonnii in #1751
- refactor: use slices.Sorted(maps.Keys(m)) for sorted map keys by @jonnii in #1818
- perf: index children when ordering dashboard branches by @jonnii in #1745
- fix: honor short and bounded tree JSON views by @jonnii in #1752
- feat: regenerate PR titles and descriptions during submit by @jonnii in #1753
- refactor: compose PR bodies in one place and resolve submit options up front by @jonnii in #1819
- refactor: replace package sort with slices/cmp by @jonnii in #1820
- refactor: use slices.ContainsFunc for hand-rolled any-match loops by @jonnii in #1822
- chore: update Go and web dependencies to latest by @jonnii in #1823
- refactor: use range-over-int for counting loops by @jonnii in #1824
- refactor: use strings.Cut to take the first line of a message by @jonnii in #1825
- refactor: use strings.Cut instead of Index-and-slice by @jonnii in #1826
- refactor: use strings.Cut/CutPrefix instead of SplitN by @jonnii in #1827
- refactor: use strings.CutPrefix/CutSuffix instead of Has+Trim pairs by @jonnii in #1828
- refactor: use stdlib helpers instead of hand-rolled loops by @jonnii in #1829
Full Changelog: v0.28.0...v0.29.0