[GH-ISSUE #657] Dashboard: pretty app release status + optional insights + account health #185

Closed
opened 2026-02-26 21:33:56 +03:00 by kerem · 1 comment
Owner

Originally created by @rudrankriyam on GitHub (Feb 19, 2026).
Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/657

Problem

Users want a single, non-interactive command that answers:

  • "Are we good to ship?" (release pipeline readiness)
  • "What needs attention right now?" (actionable blockers)

Separately, teams want an opt-in weekly summary of business/engagement signals sourced from Apple-provided exports (public API), suitable for CI artifacts and human review.

Today, answering these questions requires stitching together multiple commands and mentally assembling state.

Proposal (scoped, explicit)

1) App release dashboard: asc status

Entry point:

asc status --app "APP_ID" [flags]

Goals:

  • Default output: minified JSON (CI/agents)
  • Human-friendly: --output table / --output markdown renders a "dashboard" with section headers
  • Non-interactive, no mutations

Suggested flags:

  • --app (required; respects ASC_APP_ID)
  • --include (comma-separated sections; default = sensible set)
    • values: app,builds,testflight,appstore,submission,review,phased-release,links
  • Standard output flags: --output json|table|markdown, --pretty

Dashboard formatting rules (table output):

  • Render as multiple stacked sections (not one giant table)
  • Use symbol prefixes for states (no ANSI color dependency): , , ,
  • Prefer relative timestamps for humans (e.g. "2h ago") while keeping exact ISO timestamps in JSON
  • Optional "NEEDS ATTENTION" section at the top when something is actionable

Implementation note:

  • Use the existing multi-table rendering mechanism (registerDirect / direct render registry) to emit multiple tables in a single command.

2) Weekly insights summary (opt-in): asc insights weekly

Entry point:

asc insights weekly --app "APP_ID" [flags]

Goals:

  • Weekly "this week vs last week" summary in JSON and table output
  • Must be honest about data provenance and availability
  • Public API only

Potential sources (choose explicit --source):

  • --source analytics (App Analytics exports via analyticsReportRequests/downloads)
  • --source sales (Sales & trends report downloads)

Suggested flags:

  • --app (required)
  • --source analytics|sales (required)
  • --week "YYYY-MM-DD" (week start date, or a documented convention)
  • --vendor when --source sales (respects ASC_VENDOR_NUMBER)
  • --output json|table|markdown, --pretty

Output model:

  • Deterministic list of metrics with thisWeek, lastWeek, delta, deltaPercent (when meaningful)
  • When a metric cannot be computed from the selected source, include it as unavailable with a clear reason (not silently omitted)

Non-goals (phase 1):

  • No proprietary/undocumented endpoints
  • No attempt to compute ambiguous metrics without explicit definitions

3) Account / workspace health (separate scope)

Avoid overloading asc status with non-app checks. Provide explicit commands:

  • asc account status (team-level signals)

    • agreements status (blocked/expiring)
    • other account-level blockers discoverable via public API
  • asc doctor (local + auth sanity)

    • current auth source/profile selection summary (never prints secrets)
    • common misconfigurations, helpful next steps

4) Multi-app portfolio view (future)

For true cross-app "what needs attention" workflows, add a portfolio runner later:

  • asc apps status --file .asc/apps.json (bounded concurrency, aggregated result)

Implementation notes

  • Fetch sections concurrently with bounded concurrency; respect ASC_TIMEOUT.
  • Deterministic ordering in arrays and stable table output.
  • Provide deep links (links section) to relevant App Store Connect web UI pages.

Acceptance criteria

asc status

  • asc status --help exists and documents sections/flags
  • Missing --app returns exit code 2 (usage)
  • Default JSON parses and is deterministic
  • --include reliably filters sections
  • --output table produces a readable multi-section dashboard

asc insights weekly

  • asc insights weekly --help exists
  • Missing required flags returns exit code 2
  • JSON output includes explicit source metadata and week range
  • Table output is human readable and deterministic
  • Tests cover at least one success path per source and one unavailable-metric path

Test plan (TDD-first)

  • cmdtests:
    • status default JSON shape + include filtering
    • table output smoke assertions (headers/section names)
    • error cases (missing flags)
  • httptest fixtures for API responses
  • For export-based inputs (sales/analytics), include small gz fixtures and parse them (no stringly assertions)
  • Existing app dashboard idea: #585
  • Multi-app orchestration manifest: #592
Originally created by @rudrankriyam on GitHub (Feb 19, 2026). Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/657 ## Problem Users want a single, non-interactive command that answers: - "Are we good to ship?" (release pipeline readiness) - "What needs attention right now?" (actionable blockers) Separately, teams want an opt-in weekly summary of business/engagement signals sourced from Apple-provided exports (public API), suitable for CI artifacts and human review. Today, answering these questions requires stitching together multiple commands and mentally assembling state. ## Proposal (scoped, explicit) ### 1) App release dashboard: `asc status` Entry point: ```bash asc status --app "APP_ID" [flags] ``` Goals: - Default output: minified JSON (CI/agents) - Human-friendly: `--output table` / `--output markdown` renders a "dashboard" with section headers - Non-interactive, no mutations Suggested flags: - `--app` (required; respects `ASC_APP_ID`) - `--include` (comma-separated sections; default = sensible set) - values: `app,builds,testflight,appstore,submission,review,phased-release,links` - Standard output flags: `--output json|table|markdown`, `--pretty` Dashboard formatting rules (table output): - Render as multiple stacked sections (not one giant table) - Use symbol prefixes for states (no ANSI color dependency): `✓`, `⏳`, `✗`, `—` - Prefer relative timestamps for humans (e.g. "2h ago") while keeping exact ISO timestamps in JSON - Optional "NEEDS ATTENTION" section at the top when something is actionable Implementation note: - Use the existing multi-table rendering mechanism (`registerDirect` / direct render registry) to emit multiple tables in a single command. ### 2) Weekly insights summary (opt-in): `asc insights weekly` Entry point: ```bash asc insights weekly --app "APP_ID" [flags] ``` Goals: - Weekly "this week vs last week" summary in JSON and table output - Must be honest about data provenance and availability - Public API only Potential sources (choose explicit `--source`): - `--source analytics` (App Analytics exports via `analyticsReportRequests`/downloads) - `--source sales` (Sales & trends report downloads) Suggested flags: - `--app` (required) - `--source analytics|sales` (required) - `--week "YYYY-MM-DD"` (week start date, or a documented convention) - `--vendor` when `--source sales` (respects `ASC_VENDOR_NUMBER`) - `--output json|table|markdown`, `--pretty` Output model: - Deterministic list of metrics with `thisWeek`, `lastWeek`, `delta`, `deltaPercent` (when meaningful) - When a metric cannot be computed from the selected source, include it as unavailable with a clear reason (not silently omitted) Non-goals (phase 1): - No proprietary/undocumented endpoints - No attempt to compute ambiguous metrics without explicit definitions ### 3) Account / workspace health (separate scope) Avoid overloading `asc status` with non-app checks. Provide explicit commands: - `asc account status` (team-level signals) - agreements status (blocked/expiring) - other account-level blockers discoverable via public API - `asc doctor` (local + auth sanity) - current auth source/profile selection summary (never prints secrets) - common misconfigurations, helpful next steps ### 4) Multi-app portfolio view (future) For true cross-app "what needs attention" workflows, add a portfolio runner later: - `asc apps status --file .asc/apps.json` (bounded concurrency, aggregated result) ## Implementation notes - Fetch sections concurrently with bounded concurrency; respect `ASC_TIMEOUT`. - Deterministic ordering in arrays and stable table output. - Provide deep links (`links` section) to relevant App Store Connect web UI pages. ## Acceptance criteria ### `asc status` - [ ] `asc status --help` exists and documents sections/flags - [ ] Missing `--app` returns exit code 2 (usage) - [ ] Default JSON parses and is deterministic - [ ] `--include` reliably filters sections - [ ] `--output table` produces a readable multi-section dashboard ### `asc insights weekly` - [ ] `asc insights weekly --help` exists - [ ] Missing required flags returns exit code 2 - [ ] JSON output includes explicit source metadata and week range - [ ] Table output is human readable and deterministic - [ ] Tests cover at least one success path per source and one unavailable-metric path ## Test plan (TDD-first) - cmdtests: - `status` default JSON shape + include filtering - table output smoke assertions (headers/section names) - error cases (missing flags) - httptest fixtures for API responses - For export-based inputs (sales/analytics), include small gz fixtures and parse them (no stringly assertions) ## Related - Existing app dashboard idea: #585 - Multi-app orchestration manifest: #592
kerem closed this issue 2026-02-26 21:33:56 +03:00
Author
Owner

@rudrankriyam commented on GitHub (Feb 20, 2026):

Closing as completed. Status dashboard now renders 'Needs Attention' only when blockers exist; fix is on main in e8f1c3bd.

<!-- gh-comment-id:3937211025 --> @rudrankriyam commented on GitHub (Feb 20, 2026): Closing as completed. Status dashboard now renders 'Needs Attention' only when blockers exist; fix is on main in e8f1c3bd.
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#185
No description provided.