Part of epic #992. Web is the trim surface for routes recorded on any device (server-only routes).
recorded-routes service: TrimRecordedRouteRequest model + trimRoute(id, request) imperative POST then reloadSelected(); reloadList(); (mutations-imperative + reload rule; never hand-patch resources).
activity-report/services/route-trimmer.ts: pure suggestTrim + preview stats (reuse pinned math from gps-tracking.service.ts if exported, else fixture-pinned copy).
trim-layer.service.ts (@Service({ autoProvided: false }), component-provided, ensure-source pattern from analysis-layer.service.ts): trim-dimmed line + trim-handles circles.
trim-panel.component.ts (+spec): dual-thumb mat-slider, suggested-trim button, before/after strip, confirm/cancel. Transloco keys activityReport.trim.* (en first, pnpm i18n:scan for es _review).
activity-report.component.*: Trim toolbar toggle; trim mode hides analysis layers, hosts panel; confirm → trimRoute → resources reload → exit trim mode. Graceful when analysis 404s.
Specs for service/trimmer/panel/layer (shared fixture in route-trimmer.spec.ts); pnpm run lint:fix + lint:styles:fix.
Part of epic #992. Web is the trim surface for routes recorded on any device (server-only routes).
- `recorded-routes` service: `TrimRecordedRouteRequest` model + `trimRoute(id, request)` imperative POST then `reloadSelected(); reloadList();` (mutations-imperative + reload rule; never hand-patch resources).
- `activity-report/services/route-trimmer.ts`: pure `suggestTrim` + preview stats (reuse pinned math from `gps-tracking.service.ts` if exported, else fixture-pinned copy).
- `trim-layer.service.ts` (`@Service({ autoProvided: false })`, component-provided, ensure-source pattern from `analysis-layer.service.ts`): `trim-dimmed` line + `trim-handles` circles.
- `trim-panel.component.ts` (+spec): dual-thumb `mat-slider`, suggested-trim button, before/after strip, confirm/cancel. Transloco keys `activityReport.trim.*` (en first, `pnpm i18n:scan` for es `_review`).
- `activity-report.component.*`: Trim toolbar toggle; trim mode hides analysis layers, hosts panel; confirm → `trimRoute` → resources reload → exit trim mode. Graceful when analysis 404s.
- Specs for service/trimmer/panel/layer (shared fixture in `route-trimmer.spec.ts`); `pnpm run lint:fix` + `lint:styles:fix`.
Code:spikersoft-angular@508d97a0 (PR #624, feat/route-trim-996, commit 817f227b) — "feat(tracker): web trim mode on activity report (#996)".
Live: deployed to learn.spikersoft.com —
https://learn.spikersoft.com/assets/i18n/en.json → activityReport.trim exists with the full key set introduced by this work: toggle, sliderLabel, suggested, keptPoints, cancel, apply, confirmTitle, confirmMessage, confirmApply, conflict, failed, dismiss (including the conflict string for the backend's 409 path — "This activity changed on another device").
the tracker/activities route is present in the deployed main-KZKZUOSX.js bundle.
server dependency live: POST https://api.spikersoft.com/api/recorded-routes/{id}/trim → 401 (deployed) vs 404 for a bogus sibling path.
Verified complete 2026-08-07 — closing.
- **Code:** `spikersoft-angular@508d97a0` (PR #624, `feat/route-trim-996`, commit `817f227b`) — "feat(tracker): web trim mode on activity report (#996)".
- **Live:** deployed to `learn.spikersoft.com` —
- `https://learn.spikersoft.com/assets/i18n/en.json` → `activityReport.trim` exists with the full key set introduced by this work: `toggle, sliderLabel, suggested, keptPoints, cancel, apply, confirmTitle, confirmMessage, confirmApply, conflict, failed, dismiss` (including the `conflict` string for the backend's 409 path — "This activity changed on another device").
- the `tracker/activities` route is present in the deployed `main-KZKZUOSX.js` bundle.
- server dependency live: `POST https://api.spikersoft.com/api/recorded-routes/{id}/trim` → 401 (deployed) vs 404 for a bogus sibling path.
- **Shipped by:** angular PR #624.
Not migrated: nothing left to do.
— 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. Web is the trim surface for routes recorded on any device (server-only routes).
recorded-routesservice:TrimRecordedRouteRequestmodel +trimRoute(id, request)imperative POST thenreloadSelected(); reloadList();(mutations-imperative + reload rule; never hand-patch resources).activity-report/services/route-trimmer.ts: puresuggestTrim+ preview stats (reuse pinned math fromgps-tracking.service.tsif exported, else fixture-pinned copy).trim-layer.service.ts(@Service({ autoProvided: false }), component-provided, ensure-source pattern fromanalysis-layer.service.ts):trim-dimmedline +trim-handlescircles.trim-panel.component.ts(+spec): dual-thumbmat-slider, suggested-trim button, before/after strip, confirm/cancel. Transloco keysactivityReport.trim.*(en first,pnpm i18n:scanfor es_review).activity-report.component.*: Trim toolbar toggle; trim mode hides analysis layers, hosts panel; confirm →trimRoute→ resources reload → exit trim mode. Graceful when analysis 404s.route-trimmer.spec.ts);pnpm run lint:fix+lint:styles:fix.Verified complete 2026-08-07 — closing.
spikersoft-angular@508d97a0(PR #624,feat/route-trim-996, commit817f227b) — "feat(tracker): web trim mode on activity report (#996)".learn.spikersoft.com—https://learn.spikersoft.com/assets/i18n/en.json→activityReport.trimexists with the full key set introduced by this work:toggle, sliderLabel, suggested, keptPoints, cancel, apply, confirmTitle, confirmMessage, confirmApply, conflict, failed, dismiss(including theconflictstring for the backend's 409 path — "This activity changed on another device").tracker/activitiesroute is present in the deployedmain-KZKZUOSX.jsbundle.POST https://api.spikersoft.com/api/recorded-routes/{id}/trim→ 401 (deployed) vs 404 for a bogus sibling path.Not migrated: nothing left to do.
— Opus 5 Agent