Skip to content

improve agent friendliness of view --json#80

Merged
skarim merged 2 commits into
skarim/optimize-tui-loadfrom
skarim/view-json-trunk
May 11, 2026
Merged

improve agent friendliness of view --json#80
skarim merged 2 commits into
skarim/optimize-tui-loadfrom
skarim/view-json-trunk

Conversation

@skarim

@skarim skarim commented May 6, 2026

Copy link
Copy Markdown
Collaborator

Fix gh stack view --json returning interactive prompt

Problem

When an agent or script runs gh stack view --json and the current branch is either not in a stack or belongs to multiple stacks (e.g. a trunk branch), the command shows an interactive prompt instead of returning valid JSON.

Fix

When --json is set and the stack is ambiguous, return an exit code 2 (branch not in stack) or 6 (branch belongs to multiple stacks).


Stack created with GitHub Stacks CLIGive Feedback 💬

@skarim skarim marked this pull request as ready for review May 6, 2026 01:43
Copilot AI review requested due to automatic review settings May 6, 2026 01:43

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes gh stack view --json producing interactive prompts (which breaks machine-readable output) by routing JSON mode through a non-interactive stack resolution path and returning typed exit codes for ambiguous or missing stacks.

Changes:

  • Added a dedicated runViewJSON path that resolves the current stack without invoking interactive disambiguation and returns ErrNotInStack (code 2) / ErrDisambiguate (code 6) as appropriate.
  • Adjusted runView control flow so JSON mode exits early (and never shows the interactive loader/prompt flow).
  • Added tests covering --json behavior for: branch not in stack, branch in multiple stacks, and branch in a single stack (valid JSON output).
Show a summary per file
File Description
cmd/view.go Early-exits JSON mode into a new non-interactive resolver to avoid prompts and provide typed exit codes.
cmd/view_test.go Adds regression tests validating exit codes and ensuring JSON output remains valid for the single-stack case.

Copilot's findings

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 2/2 changed files
  • Comments generated: 0
@skarim skarim force-pushed the skarim/view-json-trunk branch from ffe8379 to 47e79d1 Compare May 7, 2026 14:20
@skarim skarim force-pushed the skarim/optimize-tui-load branch from c6aebd0 to 58761b6 Compare May 7, 2026 14:20
@skarim skarim merged commit 8dbd7c6 into main May 11, 2026
6 checks passed
@skarim skarim deleted the skarim/view-json-trunk branch May 11, 2026 15:09
ryanclark added a commit to ryanclark/gh-stack that referenced this pull request Jun 19, 2026
Ports the still-applicable upstream changes since the fork point, adapted
to this fork's standard-GitHub-API architecture (no private stack backend;
stack deps tracked via "Requires #N"). Each change was test-driven.

Bug fixes:
- github#56  guard GraphQL PR-number conversion against int32 overflow
- github#41  skip merged+deleted branches when rebasing (rev-parse error)
- github#42  same fix on the sync path
- github#43  --onto rebase for merged branches: backfill refs, pre-seed onto
       state, stale-base fallback via merge-base
- github#39  always anchor branch diffs on the merge-base (inflated diff counts)
- github#95  sync now cascades when the stack is stale even if trunk is current;
       rebase skips queued branches (IsSkipped)
- github#80  view --json resolves directly with typed exit codes (no prompt)
- github#49  (Part A) ignore stale merged/closed PRs for reused branch names
       (the backend ListStacks path is intentionally omitted)

Features (standard API only):
- github#108 trunk command       - github#51  switch command
- github#74  unstack -> active    - github#101 add adopts existing branch
- github#40  fast-forward branches behind their remote
- github#76  draft PRs by default + --open (adds MarkPRReadyForReview)
- github#77  seed PR body from repo template (keeps "Requires #N")
- github#94  sync --prune merged branches

Infra / cleanup:
- github#103/github#110 bump github.com/cli/cli/v2 to v2.93.0 (go get + tidy)
- github#89  remove placeholder `merge` command + docs
- fix stale `unstack [branch]` docs

Note: this commit is layered on in-progress local work (go-git ops,
PR/commit caching, discover command) that shares the same files, so the
two are committed together. Full suite green: build, vet, go test ./...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

3 participants