16 Commits

Author SHA1 Message Date
Sameen Karim d1acbf0092 remote stack checkout 2026-04-09 21:47:55 -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 c56277b68b unstack cmd 2026-04-08 12:44:11 -04:00
Sameen Karim cb7f9fa895 update pr base if not already part of a stack 2026-04-03 11:33:14 -04:00
Sameen Karim 4604b798c0 rm unstack 2026-04-03 04:15:41 -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 865b4704d7 support custom hostnames for ghes 2026-03-25 17:35:16 -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 c2ddf60fb1 Add testable interfaces for git and github packages
Introduce Ops interface and MockOps for git operations, and ClientOps
interface with MockClient for GitHub API operations. This enables
command-level tests to inject mocks without changing production code.

- git.Ops interface wraps all 34 public git functions
- Package-level functions now delegate through a swappable ops variable
- SetOps()/CurrentOps() allow tests to inject MockOps
- github.ClientOps interface covers all Client methods
- MockClient provides configurable function-field test doubles
- All defaults return zero values; no-op for error returns

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 14:02:10 -04:00
Sameen Karim b7c15c1da6 interactive terminal ui for view 2026-03-12 01:26:51 -04:00
Sameen Karim 5937a75151 addressing review comments 2026-03-11 09:15:55 -04:00
Sameen Karim cf62538481 sync state of prs in stack 2026-03-10 19:08:15 -04:00
Sameen Karim 86d342e88f delete stack locally 2026-03-09 09:51:35 -04:00
Sameen Karim ad9d170f58 push branches and create prs 2026-02-18 04:15:54 -05:00
Sameen Karim 2536e9a5d4 view stack 2026-02-17 19:35:26 -05:00