Skip to content

Prepare trust-focused TestFlight beta #76

@cbusillo

Description

@cbusillo

Objective

Prepare Context Panel for a trust-focused TestFlight beta. The beta should prove the native app, widget, login item, provider adapters, local storage, and permission model behave predictably on real machines before adding more cleverness.

The guiding promise is: a tester can set up Code/OpenAI, Claude, and Gemini; the widget keeps updating; failures are understandable; stale data is preserved only when that is safer than deleting useful state; and every ready-to-test claim is backed by the canonical /Applications/Context Panel.app runtime receipt.

Finish Line

Context Panel is ready for TestFlight when the must-fix child work is complete, packaging validation passes, and a fresh canonical runtime receipt shows baseline=OK for the installed app, widget extension, URL handler, and refresh login item.

Current Status

State: Active. Packaging validation #71 is complete; reset priming remains deferred in #75.
Next action: Break this umbrella into the scoped child issues below and start with setup clarity plus provider/account detail polish.
Blocked by: No current packaging blocker. Reset priming remains related/deferred in #75.
Last verified: 2026-05-16 during cross-repo issue audit; stale blocker wording for completed #71 was clarified.

Scope

  • In: TestFlight readiness, setup clarity, provider/account detail, refresh/stale/failure behavior, diagnostics/status language, runtime validation, and App Store/TestFlight packaging readiness.
  • Out: reset priming implementation, notifications, deep history/charts, advanced widget customization, smart recommendations, and new provider reverse-engineering unless current supported flows break.

Acceptance Criteria

  • Setup flow clearly tells testers which file/source to authorize for each provider and what success/failure means.
  • App detail views expose combined and per-account OpenAI limits, including email, plan, 5-hour, weekly, and additional limits where useful.
  • Background refresh settings persist, login item state follows saved settings, and manual/background refresh produce compatible snapshot shapes.
  • Provider failures are plain-language and actionable; raw HTTP/status details are kept to diagnostics.
  • Stale and failed data handling is deliberate: preserve useful last-known data when the provider has no fresh data, but do not overwrite fresh sibling data with stale limits.
  • Runtime validation remains codified: before any ready-to-test/TestFlight handoff, scripts/context-panel-runtime-baseline.sh check or install --launch completes with baseline=OK.
  • TestFlight packaging/export/upload path is validated separately.

Relationships

Child issues to create/link:

  • Setup clarity and permission repair for provider files.
  • OpenAI provider/account detail polish.
  • Refresh, stale-data, and login-item trust pass.
  • Diagnostics and user-facing state language pass.

Validation

Use these as the release-readiness baseline:

swift test --filter 'ProviderConnectorTests|SnapshotStoreTests|FastModeForecastTests|WidgetSnapshotTests|AccountConfigurationStoreTests|ResetPrimerPlannerTests'
scripts/context-panel-runtime-baseline.sh install --launch

For final TestFlight packaging, use the release/package scripts and validate the exported/uploaded artifact per #71.

Decisions

  • Ship a trust beta before adding more intelligence.
  • Keep reset priming deferred until it can be cheap, account-safe, and unsurprising.
  • The widget should remain combined/glanceable; per-account detail belongs in the app.
  • The canonical runtime remains /Applications/Context Panel.app; DerivedData/worktree bundles are not valid app/widget/provider test runtimes.

Open Questions

  • Do we want one TestFlight build with only Chris as tester before inviting outside users?
  • How much diagnostics detail should be visible by default versus hidden behind a Troubleshooting section?
  • Should the default refresh interval remain 5 minutes for beta, or move to 10 minutes for less background activity?

Metadata

Metadata

Assignees

No one assigned

    Labels

    planDurable planning issueplan:activeCurrent active plan

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions