Skip to content

Marketing screenshot demo infra (Progress/Season/Widget/Watch)#6

Merged
PrernaWeb merged 2 commits into
testflight/no-paywallfrom
app/screenshot-demo-infra
Jul 25, 2026
Merged

Marketing screenshot demo infra (Progress/Season/Widget/Watch)#6
PrernaWeb merged 2 commits into
testflight/no-paywallfrom
app/screenshot-demo-infra

Conversation

@PrernaWeb

Copy link
Copy Markdown
Owner

DEBUG-only scaffolding that powers the marketing/website screenshots. Everything here is #if DEBUG + COACHSAGE_DEMO-gated and cannot run in a release build.

Stacked on #5 (refactor/thresholds-view) — the thresholds demo route renders ThresholdsView, so this depends on that PR. GitHub will retarget this to testflight/no-paywall once #5 merges.

What changed

  • DemoMode.swift: seed an A/B/C season and 12 weeks of progressHistory (realistic easy-session HR so the sRPE CTL/ATL land credibly, not at elite numbers).
  • HomeModel.swift: refreshProgress uses the seeded history in demo mode.
  • RunCoachApp.swift: progress / season / widget COACHSAGE_SCREEN routes; the progress route owns its HomeModel via @StateObject (so the async load survives a demo-root re-render).
  • WidgetMockupView.swift: re-created medium-widget mockup for capture (widget extensions can't be screenshotted from the app; same precedent as LiveActivityScreenshotView).
  • RunCoachWatchApp.swift: seed a demo WidgetSnapshot under COACHSAGE_DEMO so the standalone watch app renders on a watchOS sim.
  • scripts/capture-website-screenshots.sh: add the new screens.

Test plan

Build DEBUG for a booted iPhone 17 sim, simctl install, then per screen SIMCTL_CHILD_COACHSAGE_DEMO=1 SIMCTL_CHILD_COACHSAGE_SCREEN=<name> simctl launch … --terminate-running-process:

  • progress → 12-week volume chart, fitness trend, consistency, PBs (not the empty state); Fitness CTL/ATL/TSB in a sane range (~250–330), not elite.
  • season → A/B/C events with priority labels.
  • widget → medium widget mockup on a wallpaper.
  • thresholds → thresholds screen (from the base PR).
  • Apple Watch: build RunCoach, install Debug-watchsimulator/RunCoachWatch.app on a watch sim, launch com.andrewleslie.RunCoach.watchkitapp with SIMCTL_CHILD_COACHSAGE_DEMO=1 → "Today" + recommendation, green recovery dot.
  • Release build unaffected: every new path is DEBUG/COACHSAGE_DEMO-gated.

🤖 Generated with Claude Code

PrernaWeb and others added 2 commits July 22, 2026 09:45
DEBUG/COACHSAGE_DEMO-gated only:
- DemoMode: seed a full A/B/C season and 12 weeks of progressHistory (with
  realistic easy-session heart rates so the sRPE-based CTL/ATL land in a
  credible range rather than elite figures).
- HomeModel.refreshProgress: use the seeded history in demo mode so the
  Progress screen renders without HealthKit data.
- RunCoachApp: add progress/season/thresholds COACHSAGE_SCREEN routes. The
  progress route owns its HomeModel via @StateObject so the async history
  load survives a demo-root re-render (inline models were captured empty).
- capture script: add the three new screens.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- WidgetMockupView + COACHSAGE_SCREEN=widget route: renders the medium
  Home Screen widget on a wallpaper for marketing capture (re-created for
  capture like LiveActivityScreenshotView, since a widget extension can't be
  screenshotted from the app).
- RunCoachWatchApp: seed a demo WidgetSnapshot into the App-Group store under
  COACHSAGE_DEMO so the standalone watch app renders real content on a
  watchOS sim (no phone to sync from). DEBUG-only.
- capture script: add the widget screen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
coachsage-site Ready Ready Preview, Comment Jul 21, 2026 11:46pm
run-coach Ready Ready Preview, Comment Jul 21, 2026 11:46pm

PrernaWeb added a commit that referenced this pull request Jul 21, 2026
…View, #6 demo infra)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
PrernaWeb added a commit that referenced this pull request Jul 22, 2026
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@PrernaWeb
PrernaWeb changed the base branch from refactor/thresholds-view to testflight/no-paywall July 25, 2026 06:11
@PrernaWeb
PrernaWeb merged commit 2bd682f into testflight/no-paywall Jul 25, 2026
4 of 5 checks passed
PrernaWeb added a commit that referenced this pull request Jul 25, 2026
Bundles for TestFlight:
- Daily recommendation no longer persists yesterday's advice into a new
  training day (HomeModel).
- PR #5: ThresholdsView extracted from SettingsView (behaviour-preserving).
- PR #6: DEBUG/COACHSAGE_DEMO screenshot demo infra.
- main merged in, bringing the race-week backend fix (already live in
  production) and the support@coachsage.app site change.

NOT included: the retry-button no-op fix — the attempted fix deadlocked
and was reverted (caa3abd). Still open; see backlog.md.

Verified: xcodebuild build succeeded.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
PrernaWeb added a commit that referenced this pull request Jul 25, 2026
This section only ever existed on testflight/no-paywall, so main's backlog
was missing it and the two copies conflicted on every merge. Brought across
and updated: PRs #5 and #6 are merged and shipped in build 75.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
PrernaWeb added a commit that referenced this pull request Jul 25, 2026
backlog.md is edited on both branches but the branch never merges back to
main, so the two copies diverged and conflicted on every main->branch merge
(twice today). Adopting main's copy wholesale: main is now the only place to
edit it, and it reaches this branch via the normal merge.

Nothing is lost — main already carries the website/PR section that only
existed here, updated to show #5 and #6 merged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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