Skip to content

Fix iOS/macOS build: ReadinessChecklistCard.lead is a String (#81 regression) - #132

Merged
ryanbr merged 1 commit into
mainfrom
fix-fitness-lead-localizedstringkey
Jul 9, 2026
Merged

ryanbr merged 1 commit into
mainfrom
fix-fitness-lead-localizedstringkey

Conversation

@ryanbr

@ryanbr ryanbr commented Jul 9, 2026

Copy link
Copy Markdown
Owner

The v8.5.0 release build failed to compile on both iOS and macOS (Android + the bump job succeeded, so v8.5.0 was published with only the APK):

Strand/Screens/HealthView.swift:744: error: cannot convert value of type 'String' to expected argument type 'LocalizedStringKey'

Cause

fitnessReadyLead() (from #81, the Fitness Age countdown) returns an already-localized String (String(localized:), word-for-word matched to Android), but ReadinessChecklistCard.lead was typed LocalizedStringKey?. It compiled nowhere because the fork runs the Swift build only at release/on-demand, not per-commit — so #81's iOS-only change was never compiled before merge.

Fix

Type lead as String? and render it verbatim via Text(String). Re-keying an already-resolved localized string through LocalizedStringKey would be wrong anyway. Both callers already pass a String / nil (lines 734 lead: nil, 742 lead: fitnessReadyLead()), and the only use is the single Text(lead), so it's self-contained.

Single error in the failed logs (no downstream errors), so this unblocks the build. Can't compile Swift on WSL — rides the re-run of the Release workflow.

Release recovery (after merge)

The v8.5.0 release exists but is incomplete (APK only). Cleanest path: delete the incomplete v8.5.0 release and its tag, then re-dispatch the Release workflow so it recreates v8.5.0 at this fixed commit with all three artifacts. (Alternatively, just re-run to attach macOS/iOS assets to the existing release — but then the tag stays at the broken commit.)

…alizedStringKey

The v8.5.0 release build failed to compile on both iOS and macOS:
  HealthView.swift:744: cannot convert 'String' to 'LocalizedStringKey'

fitnessReadyLead() (#81, Fitness Age countdown) returns an already-localized
String (String(localized:), word-for-word matched to Android), but the card's
`lead` was typed LocalizedStringKey?. Re-keying an already-resolved string is
wrong anyway; the fix is to type `lead` as String? and render it verbatim via
Text(String). Both callers already pass a String / nil, and the only use is the
single Text(lead), so this is self-contained.

This slipped in because the fork runs the Swift build only at release/on-demand,
not per-commit, so #81's iOS-only change wasn't compiled before merge.
@ryanbr
ryanbr merged commit 22d8ab0 into main Jul 9, 2026
@ryanbr ryanbr mentioned this pull request Jul 9, 2026
6 of 12 tasks
@ryanbr
ryanbr deleted the fix-fitness-lead-localizedstringkey branch July 14, 2026 10:49
DX23876 pushed a commit to DX23876/noop that referenced this pull request Jul 22, 2026
…tringkey

Fix iOS/macOS build: ReadinessChecklistCard.lead is a String (ryanbr#81 regression)
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