TrimRangeSlider.swift (small dual-thumb control) + RouteTrimView.swift sheet: map preview, suggested-trim button, live before/after stats via TrackStats.stats(for:), confirm dialog with exact delta.
Commit paths: serverId == nil → local apply + recompute + routeStore.save (stays pendingUpload); serverId != nil → API trim then rewrite local file from response (stays synced); offline+synced → error, no local mutation. Never flip synced → pendingUpload (server dup).
Verified 2026-08-07 against spikersoft-ios@6926525 (main). Status: not started. No Core/Tracking/RouteTrimmer.swift, no TrimRangeSlider.swift, no RouteTrimView.swift, no RouteTrimmerTests.swift; TrackerStyle.json has no trim-dimmed / trim-handles sources or layers; RouteDetailView.swift has no Trim toolbar button. Nothing in main's 30-commit history touches trim.
Its dependencies are ready: the backend endpoint (#993) is merged at spikersoft-backend@f8f402cd and live (POST /api/recorded-routes/{id}/trim → 401, bogus sibling path → 404), and the Android twin (#995) shipped at spikersoft-android@4aa6100 as the reference implementation to mirror.
Closing here. Work now lives in the repo that holds the fix, so fixes #16 in a PR will auto-close it on merge. The umbrella tracker keeps cross-repo epics only.
— Opus 5 Agent
Migrated to **spikerj/spikersoft-ios#16** as part of the umbrella-tracker breakup.
Verified 2026-08-07 against `spikersoft-ios@6926525` (main). Status: **not started.** No `Core/Tracking/RouteTrimmer.swift`, no `TrimRangeSlider.swift`, no `RouteTrimView.swift`, no `RouteTrimmerTests.swift`; `TrackerStyle.json` has no `trim-dimmed` / `trim-handles` sources or layers; `RouteDetailView.swift` has no Trim toolbar button. Nothing in main's 30-commit history touches trim.
Its dependencies are ready: the backend endpoint (#993) is merged at `spikersoft-backend@f8f402cd` and **live** (`POST /api/recorded-routes/{id}/trim` → 401, bogus sibling path → 404), and the Android twin (#995) shipped at `spikersoft-android@4aa6100` as the reference implementation to mirror.
Closing here. Work now lives in the repo that holds the fix, so `fixes #16` in a PR will auto-close it on merge. The umbrella tracker keeps cross-repo epics only.
— Opus 5 Agent
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Part of epic #992.
Core/Tracking/RouteTrimmer.swift:apply(points:keepStart:keepEnd:)(inclusive slice + segment rebase) andsuggest(points:activityType:)per epic heuristic; reusesTrackStats.haversineKm.TrimRecordedRouteRequestDTO+SpikerSoftAPI.trimActivityRoute(id:_:) -> RecordedRouteDetailDTO.TrimRangeSlider.swift(small dual-thumb control) +RouteTrimView.swiftsheet: map preview, suggested-trim button, live before/after stats viaTrackStats.stats(for:), confirm dialog with exact delta.serverId == nil→ local apply + recompute +routeStore.save(stays pendingUpload);serverId != nil→ API trim then rewrite local file from response (stays synced); offline+synced → error, no local mutation. Never flip synced → pendingUpload (server dup).TrackerMapView.swift+TrackerStyle.json:trim-dimmed+trim-handlessources/layers, optional overlay inputs inapplyOverlays.RouteDetailView.swift: toolbar Trim button; refresh on dismiss. Server-only routes out of iOS v1 scope (web covers).RouteTrimmerTests.swiftwith the shared fixture;xcodegen generate.Migrated to spikerj/spikersoft-ios#16 as part of the umbrella-tracker breakup.
Verified 2026-08-07 against
spikersoft-ios@6926525(main). Status: not started. NoCore/Tracking/RouteTrimmer.swift, noTrimRangeSlider.swift, noRouteTrimView.swift, noRouteTrimmerTests.swift;TrackerStyle.jsonhas notrim-dimmed/trim-handlessources or layers;RouteDetailView.swifthas no Trim toolbar button. Nothing in main's 30-commit history touches trim.Its dependencies are ready: the backend endpoint (#993) is merged at
spikersoft-backend@f8f402cdand live (POST /api/recorded-routes/{id}/trim→ 401, bogus sibling path → 404), and the Android twin (#995) shipped atspikersoft-android@4aa6100as the reference implementation to mirror.Closing here. Work now lives in the repo that holds the fix, so
fixes #16in a PR will auto-close it on merge. The umbrella tracker keeps cross-repo epics only.— Opus 5 Agent