[PR #595] [MERGED] feat(cli): add gh-style stderr spinner for paginate #640

Closed
opened 2026-02-26 22:31:54 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/rudrankriyam/App-Store-Connect-CLI/pull/595
Author: @rudrankriyam
Created: 2/17/2026
Status: Merged
Merged: 2/17/2026
Merged by: @rudrankriyam

Base: mainHead: cursor/app-version-localizations-a60b


📝 Commits (5)

  • 077a0d5 feat(cli): add shared stderr spinner
  • 2555d1e feat(cli): add spinner to paginate fetches
  • b0b921b feat(cli): add delayed spinner for auth and pagination
  • 4d188cd refactor(cli): centralize spinner pagination plumbing
  • b2982a9 fix(auth): fail fast on keychain access denied

📊 Changes

39 files changed (+1235 additions, -434 deletions)

View changed files

📝 internal/auth/keychain.go (+55 -0)
📝 internal/auth/keychain_test.go (+40 -0)
📝 internal/cli/analytics/analytics_instances.go (+8 -8)
📝 internal/cli/analytics/analytics_reports.go (+8 -8)
📝 internal/cli/analytics/analytics_requests.go (+8 -10)
📝 internal/cli/apps/apps.go (+8 -10)
📝 internal/cli/builds/build_test_notes.go (+8 -8)
📝 internal/cli/builds/builds_commands.go (+8 -10)
📝 internal/cli/builds/builds_individual_testers.go (+8 -8)
📝 internal/cli/builds/builds_related.go (+8 -7)
📝 internal/cli/builds/builds_relationships.go (+8 -7)
📝 internal/cli/builds/builds_uploads.go (+16 -16)
📝 internal/cli/certificates/certificates.go (+8 -8)
📝 internal/cli/docs/templates/ASC.md (+1 -0)
📝 internal/cli/profiles/profiles.go (+8 -8)
📝 internal/cli/reviews/review_attachments.go (+8 -8)
📝 internal/cli/reviews/review_items.go (+8 -8)
📝 internal/cli/reviews/review_submissions.go (+24 -24)
📝 internal/cli/reviews/reviews.go (+8 -10)
📝 internal/cli/reviews/reviews_summarizations.go (+8 -7)

...and 19 more files

📄 Description

Summary

  • Adds a shared, gh-style indeterminate spinner (charset 11: ⣾ ⣽ ⣻ ⢿ ⡿ ⣟ ⣯ ⣷) for interactive runs.
  • Spinner is stderr-only, requires stdout+stderr TTY, and is disabled when debug/retry logging is active.
  • Wires the spinner into --paginate paths so multi-page fetches show visual feedback (apps list, builds/testflight/reviews/analytics/xcode-cloud, signing lists, etc.).
  • Treats explicit Keychain denial as a hard auth error (prevents silent fallback to other credential sources unless you opt out via ASC_BYPASS_KEYCHAIN).

UX

  • Disable spinner: ASC_SPINNER_DISABLED=1 asc ...
  • Spinner is not shown when stdout is piped (preserves clean JSON contracts).

Issues

Closes #594.

Validation

  • make format
  • make lint
  • ASC_BYPASS_KEYCHAIN=1 make test

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/rudrankriyam/App-Store-Connect-CLI/pull/595 **Author:** [@rudrankriyam](https://github.com/rudrankriyam) **Created:** 2/17/2026 **Status:** ✅ Merged **Merged:** 2/17/2026 **Merged by:** [@rudrankriyam](https://github.com/rudrankriyam) **Base:** `main` ← **Head:** `cursor/app-version-localizations-a60b` --- ### 📝 Commits (5) - [`077a0d5`](https://github.com/rudrankriyam/App-Store-Connect-CLI/commit/077a0d522e0da6583992b440a48ae017451a048e) feat(cli): add shared stderr spinner - [`2555d1e`](https://github.com/rudrankriyam/App-Store-Connect-CLI/commit/2555d1e6f6968253ba5de9aceea24885db1e7e35) feat(cli): add spinner to paginate fetches - [`b0b921b`](https://github.com/rudrankriyam/App-Store-Connect-CLI/commit/b0b921ba414e3188a4fca333466db39cdeb96e1a) feat(cli): add delayed spinner for auth and pagination - [`4d188cd`](https://github.com/rudrankriyam/App-Store-Connect-CLI/commit/4d188cd9bbadd3e730d1f1a0a35bac1dbb3c11ed) refactor(cli): centralize spinner pagination plumbing - [`b2982a9`](https://github.com/rudrankriyam/App-Store-Connect-CLI/commit/b2982a9e065ece31970a9e5214b2de913e41e3cf) fix(auth): fail fast on keychain access denied ### 📊 Changes **39 files changed** (+1235 additions, -434 deletions) <details> <summary>View changed files</summary> 📝 `internal/auth/keychain.go` (+55 -0) 📝 `internal/auth/keychain_test.go` (+40 -0) 📝 `internal/cli/analytics/analytics_instances.go` (+8 -8) 📝 `internal/cli/analytics/analytics_reports.go` (+8 -8) 📝 `internal/cli/analytics/analytics_requests.go` (+8 -10) 📝 `internal/cli/apps/apps.go` (+8 -10) 📝 `internal/cli/builds/build_test_notes.go` (+8 -8) 📝 `internal/cli/builds/builds_commands.go` (+8 -10) 📝 `internal/cli/builds/builds_individual_testers.go` (+8 -8) 📝 `internal/cli/builds/builds_related.go` (+8 -7) 📝 `internal/cli/builds/builds_relationships.go` (+8 -7) 📝 `internal/cli/builds/builds_uploads.go` (+16 -16) 📝 `internal/cli/certificates/certificates.go` (+8 -8) 📝 `internal/cli/docs/templates/ASC.md` (+1 -0) 📝 `internal/cli/profiles/profiles.go` (+8 -8) 📝 `internal/cli/reviews/review_attachments.go` (+8 -8) 📝 `internal/cli/reviews/review_items.go` (+8 -8) 📝 `internal/cli/reviews/review_submissions.go` (+24 -24) 📝 `internal/cli/reviews/reviews.go` (+8 -10) 📝 `internal/cli/reviews/reviews_summarizations.go` (+8 -7) _...and 19 more files_ </details> ### 📄 Description ## Summary - Adds a shared, `gh`-style indeterminate spinner (charset 11: `⣾ ⣽ ⣻ ⢿ ⡿ ⣟ ⣯ ⣷`) for interactive runs. - Spinner is stderr-only, requires stdout+stderr TTY, and is disabled when debug/retry logging is active. - Wires the spinner into `--paginate` paths so multi-page fetches show visual feedback (apps list, builds/testflight/reviews/analytics/xcode-cloud, signing lists, etc.). - Treats explicit Keychain denial as a hard auth error (prevents silent fallback to other credential sources unless you opt out via `ASC_BYPASS_KEYCHAIN`). ## UX - Disable spinner: `ASC_SPINNER_DISABLED=1 asc ...` - Spinner is not shown when stdout is piped (preserves clean JSON contracts). ## Issues Closes #594. ## Validation - `make format` - `make lint` - `ASC_BYPASS_KEYCHAIN=1 make test` --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-02-26 22:31:54 +03:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/App-Store-Connect-CLI#640
No description provided.