Repository navigation
feat(cli): add testflight subcommand tree - #29
setoelkahfi wants to merge 9 commits into
Conversation
…28) Update the sitiai and klepon release-session plans to reflect what gh stack #27 landed (#24 docs/list-builds-pagination -> #25 feat/signing-doctor -> #26 feat/apps-await-processing): - sitiai: add a 2025-10-11 progress callout; mark findings #2 (signing doctor, PR #25), #5 (await-processing, PR #26) and #6 (list_builds pagination doc, PR #24) as shipped; detail the await-processing CLI surface; note the upload.rs cluster (#3 + #1, #4 folded) is next. - klepon: cross-link the two findings that built on its builds API (#6 pagination doc, #5 await-processing on BuildsApi::list_builds). Co-authored-by: siGit Code v1.6.7-acp <noreply@sigit.si>
The `limit=200` on the builds collection reads like a ceiling, but `list_all` follows Apple's `links.next` cursor until the collection is exhausted. Spell out that 200 is the largest page ASC allows (fewer round-trips), not the number of builds returned, so callers don't treat the vector length as "the 200 most recent builds." Co-Authored-By: siGit Code v1.6.7-acp <noreply@sigit.si>
Add a read-only signing health check that cross-references the login keychain against Apple's certificates and reports which ASC certificates this machine can actually sign with (private key present locally). - frontend: new keychain module + run_doctor, DoctorReport/DoctorCertificate - cli: macOS-gated `asc signing doctor` subcommand, JSON output - CLI-only (reads the login keychain); never transmits key material Co-Authored-By: siGit Code v1.6.7-acp <noreply@sigit.si>
Build the asc CLI for linux/windows/macOS (amd64 + arm64), checksum each asset, and publish a GitHub release with auto-generated notes. Mirrors the smbcloud-cli release-github.yml, trimmed to what ascapi needs: toolchain pinned to stable (no rust-toolchain.toml here) and no OS-package-manager fan-out (no homebrew/scoop/winget workflows in this repo yet). Co-Authored-By: siGit Code v1.6.7-acp <noreply@sigit.si>
Add `asc testflight` with three sub-trees: - `testflight groups` — list, get, and add-build (CLI-only, writable) - `testflight app-review-detail` — get and update - `testflight app-review-submissions` — list and submit (CLI-only, irreversible) Adds the supporting ASC domain modules in `crates/aso`: - `beta_group`: list groups, get by id, add builds (body-serialisation tests) - `beta_app_review_detail`: get + PATCH update (deserialise + skip-None tests) - `beta_app_review_submission`: list + POST create (filter-key + body tests) - `beta_build_localization`: list + POST create + PATCH update (round-trip tests) Exposes the read-only operations as MCP tools: - `testflight_beta_groups_list`, `testflight_beta_groups_get` - `testflight_beta_app_review_detail_get` - `testflight_beta_app_review_submissions_list` Writable / irreversible operations (add-build, submit, localization writes) are CLI-only per the project's destructive-op policy. All CI gates pass: fmt, clippy -D warnings, 92 tests, rustdoc -D warnings. Co-Authored-By: siGit Code v1.6.7-acp <noreply@sigit.si>
There was a problem hiding this comment.
This change introduces a new asc testflight CLI subcommand tree with three main areas: beta groups (list, get, add-build), beta app review detail (get, update), and beta app review submissions (list, submit). Four new modules are added to the aso crate, each with their own API traits and tests. The MCP server exposes read-only operations for beta groups and beta app review detail as new tools, with appropriate request types and tool registration. The CLI and MCP code are updated to wire in these new commands and tools. The release workflow YAML is added for GitHub releases. All new code is covered by tests, and the CLI-only/writable operations are not exposed as MCP tools, matching the project policy. No prior findings are left open, and all new code is integrated cleanly with the existing structure.
Automated review by siGit Code Review · commit 0820c57 · see the review dashboard
The `limit=200` on the builds collection reads like a ceiling, but `list_all` follows Apple's `links.next` cursor until the collection is exhausted. Spell out that 200 is the largest page ASC allows (fewer round-trips), not the number of builds returned, so callers don't treat the vector length as "the 200 most recent builds." Co-Authored-By: siGit Code v1.6.7-acp <noreply@sigit.si>
Keep both the new Testflight and Signing subcommands in crates/cli. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Adds `asc apps await-processing <APP_ID>`, which polls
GET /v1/builds?filter[app]={id} until the newest matching build
reaches a terminal state (VALID succeeds; INVALID/FAILED fail) or
times out. Flags: --version, --pre-release-version,
--interval (default 30s), --timeout (default 1800s).
The poll loop and pure classify()/AwaitConfig/AwaitOutcome live in
the shared frontend crate (await_processing.rs) so the behaviour is
testable and reusable; AwaitOutcome serializes without key material.
Co-Authored-By: siGit Code v1.6.7-acp <noreply@sigit.si>
feat(apps): add await-processing to poll builds to terminal state
There was a problem hiding this comment.
This change introduces a new TestFlight subcommand tree to the CLI and corresponding ASC domain modules in the aso crate for beta groups, beta app review details, beta app review submissions, and beta build localizations. Each module provides async extension traits for the App Store Connect API, with comprehensive tests for serialization, deserialization, and edge cases. The MCP server exposes new read-only tools for listing beta groups and fetching beta app review details, with writable/irreversible operations intentionally CLI-only. The await_processing module provides a polling mechanism for build processing status, and a new keychain module implements a macOS-only 'signing doctor' that cross-checks local keychain certificates against those known to Apple. The release workflow for GitHub Actions is added. All previous findings appear addressed, and the new code is well-tested and documented. Reviewers should focus on the correctness of API interactions, the safety of irreversible operations, and the accuracy of the MCP tool boundaries.
Automated review by siGit Code Review · commit ce9e1ff · see the review dashboard
Summary
Adds
asc testflightwith three sub-trees:testflight groups—list,get,add-build(CLI-only, writable)testflight app-review-detail—get,updatetestflight app-review-submissions—list,submit(CLI-only, irreversible)New ASC domain modules (
crates/aso)beta_groupbeta_app_review_detailbeta_app_review_submissionbeta_build_localizationNew MCP tools
Read-only operations exposed as MCP tools per the project policy:
testflight_beta_groups_list,testflight_beta_groups_gettestflight_beta_app_review_detail_gettestflight_beta_app_review_submissions_listWritable / irreversible operations (
add-build,submit, localization writes) are CLI-only.CI
All gates pass locally:
cargo fmt,clippy -D warnings, 92 tests,rustdoc -D warnings.