Queue document writes durably and surface sync trouble in the UI
iCloud Drive writes now flow through a persistent WriteBacklog sidecar (drained with backoff, flushed on backgrounding, wiped with the cache on account change), so a save can never be lost to a transient coordinator error. A status banner on the workout list surfaces stuck syncing. Also: the split picker gains a Recent section with day labels, split rows fold SplitItem into SplitListView, and list rows dim the multiply sign in sets-by-reps. Claude-Session: https://claude.ai/code/session_01HJDQQDA9QdP8zByg43H5v3
This commit is contained in:
@@ -21,3 +21,18 @@ list (`WorkoutLogListView`) has UI already waiting on these:
|
||||
machine settings, and its own "add exercise to a running workout" path
|
||||
(`Workouts Watch App/Views/WorkoutLogListView.swift`) doesn't snapshot
|
||||
`machineSettings` into the new log.
|
||||
|
||||
## Wish list
|
||||
|
||||
- **Pinned splits in the split picker**: add a "Pinned" section above "Recent" in
|
||||
`SplitPickerSheet` (`Workouts/Views/WorkoutLogs/WorkoutLogsView.swift`), with a
|
||||
swipe-to-pin action on the rows (and possibly on `SplitListView` for symmetry).
|
||||
Storage decision (2026-07-08): a `pinnedSplitIDs` set in `UserDefaults` — matches
|
||||
the existing preference precedent (`restSeconds`, `weightUnit`) and survives cache
|
||||
rebuilds. Do **not** put an `isPinned` flag in `SplitDocument`: pinning a starter
|
||||
seed would trigger the clone-on-edit fork, and `reconcileSeeds()` would overwrite
|
||||
the flag with bundle bytes anyway. At read time, resolve stored IDs through
|
||||
`sync.currentSplitID(for:)` (as `recentSplits` does) and prune IDs whose split no
|
||||
longer exists; exclude pinned splits from the Recent section. Upgrade path if
|
||||
cross-device pins ever matter: a tiny `Preferences/pins.json` iCloud document.
|
||||
Watch, if wanted later: push the ID list via the `WCPayload` application context.
|
||||
|
||||
Reference in New Issue
Block a user