Skip to content

Refresh Anycast color, typography, and spacing - #5

Merged
musepy merged 4 commits into
mainfrom
codex/anycast-2-spacing-type
Jul 30, 2026
Merged

Refresh Anycast color, typography, and spacing#5
musepy merged 4 commits into
mainfrom
codex/anycast-2-spacing-type

Conversation

@musepy

@musepy musepy commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator

What

  • Add centralized Anycast 2.0 color, typography, spacing, radius, and reusable component tokens.
  • Apply matching light and dark themes that follow system appearance, with readable secondary text at both endpoints.
  • Give the full player a dedicated dark treatment with blurred artwork, a five-stop dark overlay, light status bar, text-safe controls, and high-contrast settings controls.
  • Replace full-card playback fills with compact progress tracks: 4 pt on episode cards and the mini player, 6 pt on the full scrubber.
  • Cover play/pause, selected/unselected, enabled/disabled, loading, empty, and progress 0/partial/complete/unknown visual states without Material-purple fallbacks.
  • Complete transcript and subscription state presentation instead of showing blank or misleading empty screens during async work.

State audit

  • Light/dark: list, empty state, navigation, cards, mini player, player, settings, and subscriptions reviewed.
  • Playback: play and pause controls reviewed; loading and unavailable controls disable correctly.
  • Progress: normalized 0/partial/complete states; unknown/loading/unavailable full scrubbers are non-seekable and labelled.
  • Settings: both sliders have visible active/inactive tracks; switches have distinct selected/unselected and disabled colors.
  • Transcript: unavailable, generate prompt, processing, failed, saved-data loading, ready, translation loading, translation failure, selection, chat/export actions, and artwork fallbacks have explicit visual states. Prompt and status-bar endpoints were reviewed on the simulator.
  • Subscriptions: loading, error/retry, empty, content, artwork loading, and artwork failure states are explicit; light and dark empty endpoints were reviewed on the simulator.
  • Contrast: secondary text uses readable endpoints; player/transcript copy stays text-safe over the worst bright-artwork composite; inverse-surface card actions remain adaptive.

Impact

Presentation and visual-state handling only: colors, text styling, spacing, surfaces, progress presentation, async presentation flags, and control states. No data schema, persistence format, API, release version, signing, or store behavior changes.

Validation

  • dart analyze on all follow-up changed source/test files — no issues
  • flutter test --no-pub — 19 tests passed
  • git diff --check
  • flutter build ios --simulator --debug --no-pub
  • ✅ iPhone 17 Pro simulator review — light/dark list and subscription empty states, player play/pause, 0/partial progress, settings sliders/switches, transcript prompt, artwork fallback, and light status bar
  • ✅ Required PR CI — Analyze/Test, Android release bundle, and unsigned iOS build all passed
  • ℹ️ Simulator data contained 0 transcript, 0 translation, and 0 subscription rows; ready/translation/content states were verified deterministically without generating or modifying user data
  • ⚠️ flutter pub get --enforce-lockfile — Flutter 3.44.6 would update five SDK transitive dependencies (characters, matcher, material_color_utilities, meta, test_api); pubspec.lock was left unchanged
  • ⚠️ local full flutter analyze --no-fatal-infos --no-pub exits nonzero on the existing experimental profilesSampleRate warning at lib/main.dart:62; CI uses the repository’s fixed toolchain and is authoritative

All required CI checks pass. Ready for owner review; not merged.

@musepy
musepy marked this pull request as ready for review July 30, 2026 13:52
@musepy
musepy requested a review from sljeff July 30, 2026 13:53

musepy commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator Author

Follow-up visual-state audit is now pushed in 9885074.

This pass covers the gaps from the simulator review: player control colors, blurred/darkened artwork background, settings text and both sliders, selected/unselected and disabled switches, compact episode/mini-player progress, synchronized remaining-time text, and non-seekable loading/unknown progress states. Light and dark endpoints were checked on an iPhone 17 Pro simulator, and the expanded suite passes all 14 tests.

@sljeff this is ready for another review. I have not merged it; the new CI run is still in progress.

musepy commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator Author

Additional audit requested for transcript and subscriptions is pushed in 5b097d2.

Transcript now has explicit unavailable, prompt, processing, failed, loading, ready, translation-loading/failure, artwork fallback, and action states; the generate CTA and iOS status bar were corrected for contrast. Subscriptions now distinguish loading/error/empty/content and provide artwork loading/error fallbacks instead of briefly presenting loading as empty.

Local simulator data had no transcript, translation, or subscription rows, so I did not trigger AI generation or fabricate user data. The non-present states are covered by deterministic state/component tests; the suite now passes 19 tests. @sljeff please review this latest commit after the restarted CI run completes. I have not merged the PR.

musepy commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator Author

Final CI for 5b097d2 is green: Analyze/Test, Android release bundle, and unsigned iOS build all passed. @sljeff the complete visual-state audit, including transcript and subscriptions, is ready for owner review. PR remains open and unmerged.

@musepy
musepy merged commit 023e4b9 into main Jul 30, 2026
3 checks passed
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.

2 participants