28 Commits

Author SHA1 Message Date
Sameen Karim e8344e10ac clear interactive selector on interrupt 2026-04-09 22:51:00 -04:00
Sameen Karim dcb5885053 Skip pushing branches with queued PRs
Detect merge queue status via the GitHub GraphQL API's mergeQueueEntry
field and temporarily skip queued branches in push, sync, and submit
commands. Unlike merged state (which is persisted permanently), queued
state is transient — held in-memory only via a json:"-" tagged field
on BranchRef. Each command run re-checks queue status from the API, so
if a PR is ejected from the queue it becomes active again on next run.

Changes:
- Add MergeQueueEntry to PullRequest GraphQL struct and PRDetails
- Add IsQueued()/IsSkipped()/QueuedBranches() to stack model
- Update ActiveBranches() family to exclude queued branches
- Skip queued branches in push, sync (rebase + push), and submit
- Add queued icon, style, and QUEUED state label in TUI view
- Add comprehensive tests for queued state handling

Closes github/pull-requests#24019

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-09 08:24:36 -04:00
Sameen Karim bd76d31ef3 early exit if all branches merged 2026-04-03 09:43:47 -04:00
Sameen Karim d4967d8d04 submit command 2026-04-03 04:02:59 -04:00
Sameen Karim 891f51f943 add to stack api 2026-04-03 01:54:02 -04:00
Sameen Karim d4adefe238 create stack api 2026-04-03 01:53:29 -04:00
Sameen Karim 37e32a5137 only lock for writes 2026-03-25 20:39:48 -04:00
Sameen Karim 211e563d1f lock failure exit code 2026-03-25 20:06:18 -04:00
Sameen Karim e568d7f005 add file locking to prevent concurrent stack file edits 2026-03-25 19:14:00 -04:00
Sameen Karim 1304670224 flag to specify remote and bypass interactive prompt 2026-03-24 01:36:05 -04:00
Sameen Karim 260497643a exit codes by error type 2026-03-24 00:38:04 -04:00
Sameen Karim 6e9927d124 rm update pr base logic, should all happen on server 2026-03-23 04:46:55 -04:00
Sameen Karim 1a1f49f2fb exit with nonzero status on error 2026-03-23 04:22:45 -04:00
Sameen Karim 24e18bd088 Handle SIGINT gracefully during interactive prompts
When Ctrl+C is pressed during a prompter interaction, the CLI now prints
a friendly 'Received interrupt, aborting operation' message instead of
ugly wrapped errors like 'failed to read prefix: could not prompt:
interrupt'.

Changes:
- Add isInterruptError(), printInterrupt(), and errInterrupt sentinel
  to cmd/utils.go for centralized interrupt detection
- Update all 8 prompt sites (init, push, checkout, utils) to detect
  survey's terminal.InterruptErr and exit cleanly
- Update callers of resolveStack, pickRemote, and ensureRerere to
  propagate interrupt without double-printing errors
- Change ensureRerere signature to return error so callers can abort
  on interrupt
- Add tests for interrupt detection helpers

Closes td-746bdc

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-22 20:26:26 -06:00
Sameen Karim e874e26374 push all branches atomically and resolve remotes 2026-03-21 23:35:39 -07:00
Sameen Karim 9d2a7cf8dd use multiline commit msgs for pr body 2026-03-19 12:39:34 -04:00
Sameen Karim a27a4f5ad9 rename flag to --skip-prs 2026-03-18 01:02:59 -04:00
Sameen Karim 2879cfe9b1 add links to downstack prs in body 2026-03-13 03:34:05 -04:00
Sameen Karim d5903fe4cd hyperlinked PRs in output 2026-03-13 02:30:52 -04:00
Sameen Karim 49e05a0049 interactive prompt or autogenerate for pr title 2026-03-13 02:22:19 -04:00
Sameen Karim d5305eb4ba improved handling of merged branches 2026-03-12 09:24:32 -04:00
Sameen Karim 910b69ce71 force push with lease by default 2026-03-11 15:24:58 -04:00
Sameen Karim 5937a75151 addressing review comments 2026-03-11 09:15:55 -04:00
Sameen Karim f1421adfb4 rebase onto for handling squashed prs 2026-03-11 00:01:14 -04:00
Sameen Karim cf62538481 sync state of prs in stack 2026-03-10 19:08:15 -04:00
Sameen Karim fdaa11fba0 updated storage format 2026-03-10 17:06:05 -04:00
Sameen Karim b39609a8d7 disambiguate for multiple stacks 2026-03-10 01:10:28 -04:00
Sameen Karim ad9d170f58 push branches and create prs 2026-02-18 04:15:54 -05:00