Skip to content

Improve app copy and temporal clarity - #172

Open
FZ2000 wants to merge 3 commits into
mainfrom
codex/app-copy-clarity
Open

FZ2000 wants to merge 3 commits into
mainfrom
codex/app-copy-clarity

Conversation

@FZ2000

@FZ2000 FZ2000 commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Replaces protocol-shaped and ambiguous wording across Dashboard, Work, Usage, Sources, the menu, and setup with concise state, consequence, and recovery copy.
  • Fixes receipt project-scope reduction so mixed sessions are order-independent, conflicting identities fail closed, and the former yellow warning explains the actual limitation: project grouping may be incomplete.
  • Centralizes time presentation so positive sub-minute spans never read as zero, older activity becomes an absolute date, future or invalid clocks are named, provider resets distinguish missing/future/passed/invalid, and duplicate freshness is suppressed.
  • Gives Sources an explicit loading/current/unavailable/retained-failure state machine. A failed refresh now outranks retained data, retained rows are visibly older, and privacy copy accurately discloses bounded scrubbed execute-command capture.
  • Adds deterministic Sources and setup matrices and updates every affected canonical light/dark, minimum-size, error, retained-data, and accessibility reference.

Latest main compatibility

Current main 5f233f1 is merged at head 37312b9.

  • The merge preserves main's Dashboard signal rail, decision-signal validity checks, trust-unavailable review state, and accelerated CI/visual-snapshot workflow.
  • Improve app copy and temporal clarity #172's typed ingestion failures now feed the signal rail directly, so a failed refresh outranks retained health and raw diagnostics do not become primary copy.
  • Improve app copy and temporal clarity #172's centralized temporal policy remains authoritative for provider reset text while main's invalid, missing, and stale 7-day usage distinctions remain intact.
  • The obsolete dashboard-attention-unavailable references were removed with main; the replacement dashboard-trust-unavailable matrix was regenerated from the combined source.
  • All binary snapshot conflicts were resolved by rendering the combined tree, not by selecting either stale side.

Research and scenario validation

The copy hierarchy follows Apple's guidance to write clearly, lead with the most important information, keep alerts actionable, and use disclosure for secondary detail (Writing, Alerts, Disclosure controls). Error states identify the problem and offer a recovery action in line with WCAG guidance (Error identification, Error suggestion); status changes remain available without turning raw diagnostics into the primary message (Status messages).

This was challenged against 100 simulated usage scenarios across three specialist review passes plus a final whole-diff audit: novice/expert readers, keyboard and large-text use, conflicting or absent evidence, stale/failed services, dense receipts, old/future timestamps, and provider-limit edge cases. This is role-play evaluation, not 100 human participants or a usability-study claim.

Review order

  1. src/agentacct/receipt.py and tests/test_receipt.py: deterministic project-scope and producer copy contracts.
  2. TemporalText.swift, TemporalTextTests.swift, and temporal call sites: the shared time-state policy.
  3. SourcesPane.swift, SourcesSnapshotHarness.swift, and Sources tests: failure precedence, retained-data disclosure, evidence roles, and privacy wording.
  4. Dashboard, Work, Usage, menu, and setup presentation diffs: the surface-level copy hierarchy.
  5. The latest-main integration in DashboardPane.swift, DashboardStore.swift, and UsageCapacity.swift: signal-rail architecture plus typed source failures and centralized reset copy.
  6. Canonical reference images: expected consequences of the copy, state coverage, and merged dashboard architecture.

Test plan at current head 37312b9

  • Full Python suite: python -m pytest -q2,667 passed; one third-party Starlette deprecation warning.
  • Full Swift suite: swift test224 passed; seven visual wrappers skipped by design and exercised by the next command.
  • Canonical visuals: ./Scripts/visual-snapshots record DashboardVisualRegressionTests MenuVisualRegressionTests SetupVisualRegressionTests SourcesVisualRegressionTests UsageVisualRegressionTests WorkVisualRegressionTests — all six suites recorded and immediately verified on macos-26.6-25G72-xcode-26.6-17F113-arm64-2x.
  • All 99 effective changed references were visually reviewed across light/dark, minimum/reference, loading/error/stale, compact/accessibility, and RTL states; no clipping or contradictory state was found.
  • Release build: swift build -c release passed at exact head.
  • AppBuildIdentityTests: 4 passed at exact head.
  • No unresolved index entries or conflict markers; git diff --check is clean.
  • Secret review: no credentials, private logs, paid calls, or external provider requests were added or run.

Fresh GitHub CI is running for this head.

Safety checklist

  • Preserves local-first behavior.
  • Does not store API keys or secrets.
  • Does not expose localhost services publicly by default.
  • Does not control processes agentacct did not start.
  • Provider/API forwarding remains opt-in and budget-gated; no paid provider/API calls were run.
  • JSON output paths remain machine-readable when --json is used.

Docs

  • Public docs were assessed. No docs update is needed: this changes app presentation and receipt wording, with the durable contract covered by exact tests and reviewed visual references.

Manual follow-up boundary

CI and deterministic native rendering can verify the code and reference matrix. They do not substitute for a human VoiceOver pass or a signed installed-app session against a live daemon; this PR does not claim those manual checks were performed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant