Fix rebucketing, seed upgrades, watch pruning, end re-stamping; add model tests

Editing a workout's start date now removes the file at its old month
bucket so the record no longer duplicates on the next reconcile. Seed
reconcile re-checks the tombstone veto before overwriting an upgraded
seed. The watch applies authoritative-empty pushes so remote deletes
prune, and a re-saved finished workout keeps its original end time.
Adds unit tests for the mappers, path bucketing, and status machine.

Claude-Session: https://claude.ai/code/session_01HJDQQDA9QdP8zByg43H5v3
This commit is contained in:
2026-07-08 07:54:10 -04:00
parent a93cbc30b7
commit 06fa52345b
11 changed files with 697 additions and 8 deletions
+3 -1
View File
@@ -132,7 +132,8 @@ struct SettingsView: View {
Text("iCloud Sync")
}
// MARK: - Developer Section
// MARK: - Developer Section (debug builds only)
#if DEBUG
Section {
NavigationLink {
DuplicateCleanupView()
@@ -142,6 +143,7 @@ struct SettingsView: View {
} header: {
Text("Developer")
}
#endif
// MARK: - About Section
Section {