Skip to content

v0.19.2

Latest

Choose a tag to compare

@github-actions github-actions released this 21 Jun 21:55
· 73 commits to main since this release
02e7137

This release is a broad performance pass — batching git and GitHub
operations to eliminate N+1 calls across nearly every command — together
with a sync --dry-run correctness fix and cleaner sync output.

Highlights

  • sync --dry-run is now a true read-only preview. Previously it could perform side effects; it now never fast-forwards trunk, deletes branches, restacks, or pushes to GitHub — it just shows you what sync would do (#1236).
  • Faster commands across the board. Git and GitHub operations are now batched throughout submit, sync, merge, delete, create, reorder, fold, absorb, log, and the dashboard, removing per-branch N+1 calls. The global revision cache was replaced with explicit batched readers, so large stacks feel noticeably snappier.
  • Cleaner sync output. The streaming and interactive sync output was decluttered and polished, and empty phase headers are now suppressed in the interactive sync TUI (#1237, #1238, #1268).
  • Accurate file and commit counts. info and stack-info now count changed files against the stack's divergence point rather than whole history, and commit lists are based on the divergence point too — so counts reflect the branch's actual changes (#1260, #1261, #1265).

Fixes

  • Make sync --dry-run a true read-only preview (#1236).
  • Base commit lists on the divergence point, not whole history (#1265).
  • Count changed files in info against the divergence point (#1261).
  • Count changed files in stack-info against the divergence point (#1260).
  • Don't report a worktree as removed when anchor branch deletion fails (#1248).
  • Escape Slack mrkdwn special characters in share output (#1246).
  • Declutter and polish sync streaming output (#1237).
  • Suppress empty phase headers in the interactive sync TUI (#1238).
  • Polish sync output quality (#1268).

Performance

  • Batch behind-branch pulls and prefetch remote branch statuses in a parallel block on sync (#1206, #1207).
  • Batch orphaned-metadata cleanup into one transaction on sync (#1230).
  • Batch PR-info writes, warm caches, and batch revision resolution in submit planning (#1228, #1256).
  • Read external-parent remote status in one batch on submit (#1229).
  • Batch PR-info writes during consolidation merge, sync, and submit validation (#1205, #1216).
  • Batch child reparenting on insert in create (#1226) and pre-reparent of children in delete (#1227).
  • Resolve PR node IDs in one GraphQL query and batch PR state/body fetch in consolidation cleanup (#1231, #1233).
  • Batch ref deletions in DeleteBranch to match DeleteBranches (#1239).
  • Batch child metadata writes in RenameBranch (#1220).
  • Batch commit-to-branch lookups in absorb (#1221).
  • Reparent same-parent children in one pass for fold and pluck (#1222).
  • Reparent via batched ReparentBranchesToParents in reorder and flatten (#1225).
  • Warm revision and stat caches before per-branch loops (#1223).
  • Batch PR status and warm caches for the stack in stack-info (#1224).
  • Batch commit messages in the dashboard shippable rebuild (#1262).
  • Annotate the log action from batched BranchStats (#1257).
  • Read stack metadata in a single cat-file lookup (#1232).

Refactors

  • Remove the global revision cache in favor of explicit batched readers (#1258).
  • Add per-concern batch readers for branch state (#1252).
  • Bound batchByBranch fan-out and add a concurrency rule (#1264).
  • Plan flatten from batched revision/divergence values (#1253).
  • Annotate log from batched stats, keeping forge status a separate concern (#1254, #1259).
  • Trim the batch cleanup APIs (#1234).
  • Consolidate split-hunk cleanup with a deferred branch restore (#1247).
  • Extract helpers to cut duplication — applyPRMetadata, buildBatchPRNodeQuery, Plan.BranchNames(), and splitNulTerminated (#1204, #1243, #1255, #1273).
  • Remove redundant GetBranch calls in InfoAction (#1272).
  • Tidy review nits in the branch-state readers (#1263).

Chore

  • Update all Go and frontend dependencies to latest versions (#1240).
  • Add the /optimize-tests dev skill for coverage-guarded test speedups, hardened with parallel-hazard detection and a union coverage guard (#1208, #1213).
  • Parallelize the action test suite for faster runs (#1209, #1210, #1211, #1212).
  • Add a golden-output transcript harness for sync (#1217, #1218).

What's Changed

  • refactor: extract applyPRMetadata helper to remove duplication by @jonnii in #1204
  • perf: batch PR info writes during consolidation merge by @jonnii in #1205
  • feat: add /optimize-tests skill for coverage-guarded test speedups by @jonnii in #1208
  • perf(test): parallelize action-package tests and harden /optimize-tests skill by @jonnii in #1214
  • perf(test): parallelize fold/move/pluck action subtests by @jonnii in #1209
  • perf(test): parallelize sync action subtests by @jonnii in #1210
  • perf(test): parallelize 10 action subpackages' scenario tests by @jonnii in #1211
  • perf(test): parallelize root actions package tests (excluding stdin-mutating modify) by @jonnii in #1212
  • feat(skill): harden /optimize-tests with parallel-hazard detection and union coverage guard by @jonnii in #1213
  • Merging 2 PRs by @jonnii in #1215
  • perf(sync): batch behind-branch pulls by @jonnii in #1206
  • perf(sync): prefetch remote branch statuses in Phase 1 parallel block by @jonnii in #1207
  • perf: batch PR info writes during sync and submit validation by @jonnii in #1216
  • Merging 2 PRs by @jonnii in #1219
  • refactor: extract reusable golden helper and sync prompt-description helpers by @jonnii in #1217
  • test: add golden-output transcript harness for sync by @jonnii in #1218
  • perf(create): batch child reparenting on insert via ReparentBranchesRecompute by @jonnii in #1226
  • perf(submit): read external parent remote status in one batch by @jonnii in #1229
  • perf(delete): batch pre-reparent of children via ReparentBranchesToParents by @jonnii in #1227
  • Merging 12 PRs by @jonnii in #1235
  • perf(engine): batch child metadata writes in RenameBranch by @jonnii in #1220
  • perf(absorb): batch commit-to-branch lookups via FindBranchesForCommits by @jonnii in #1221
  • perf(fold,pluck): reparent same-parent children via ReparentBranches by @jonnii in #1222
  • perf: warm revision/stat caches before per-branch loops by @jonnii in #1223
  • perf(stack-info): batch PR status and warm caches for the stack by @jonnii in #1224
  • perf(reorder,flatten): reparent via per-branch ReparentBranchesToParents by @jonnii in #1225
  • perf(submit): batch PR-info writes and warm caches during planning by @jonnii in #1228
  • perf(sync): batch orphaned-metadata cleanup in one transaction by @jonnii in #1230
  • perf(merge): resolve PR node IDs in one GraphQL query by @jonnii in #1231
  • perf(git): read stack metadata in one cat-file lookup by @jonnii in #1232
  • perf(merge): batch PR state/body fetch in consolidation cleanup by @jonnii in #1233
  • refactor: trim batch cleanup APIs by @jonnii in #1234
  • perf: batch ref deletions in DeleteBranch to match DeleteBranches by @jonnii in #1239
  • chore: update all dependencies to latest versions by @jonnii in #1240
  • refactor: add Plan.BranchNames() to eliminate repeated branch-name extraction loops by @jonnii in #1243
  • feat: Postgres-backed repo store for the API server by @jonnii in #1244
  • feat: add PostgreSQL repo-config store for the API server by @jonnii in #1067
  • feat: serve API server repos from the Postgres store by @jonnii in #1068
  • fix: escape Slack mrkdwn special chars in share output by @jonnii in #1246
  • refactor: consolidate split hunk cleanup with deferred branch restore by @jonnii in #1247
  • fix: don't report worktree as removed when anchor branch deletion fails by @jonnii in #1248
  • refactor: extract buildBatchPRNodeQuery to eliminate duplicated GraphQL boilerplate by @jonnii in #1255
  • test(store): use testcontainers locally instead of a fixed local Postgres by @jonnii in #1266
  • Merging 13 PRs by @jonnii in #1267
  • refactor(engine): per-concern batch readers for branch state by @jonnii in #1252
  • refactor(flatten): plan from batched revision/divergence values by @jonnii in #1253
  • refactor(log): annotate from batched stats, forge status separate by @jonnii in #1254
  • perf(submit): batch revision resolution in planning by @jonnii in #1256
  • perf(log): annotate the log action from batched BranchStats by @jonnii in #1257
  • refactor(git): remove the global revision cache by @jonnii in #1258
  • refactor: finish annotation batching, drop dead reload hook, add guardrail by @jonnii in #1259
  • fix(stack-info): count changed files against the divergence point by @jonnii in #1260
  • fix(info): count changed files against the divergence point by @jonnii in #1261
  • perf(dashboard): batch commit messages in shippable rebuild by @jonnii in #1262
  • refactor: tidy review nits in branch-state readers by @jonnii in #1263
  • refactor(engine): bound batchByBranch fan-out, add concurrency rule by @jonnii in #1264
  • fix(engine): base commit lists on the divergence point, not whole history by @jonnii in #1265
  • Sync output quality by @jonnii in #1269
  • fix: make sync --dry-run a true read-only preview by @jonnii in #1236
  • fix: declutter and polish sync streaming output by @jonnii in #1237
  • fix: suppress empty phase headers in the interactive sync TUI by @jonnii in #1238
  • fix: polish sync output quality by @jonnii in #1268
  • refactor: remove redundant GetBranch calls in InfoAction by @jonnii in #1272
  • refactor: extract splitNulTerminated helper in git package by @jonnii in #1273

Full Changelog: v0.19.1...v0.19.2