MotorSignal-App/docs/website-gps-badge-deploymen...

55 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# GPS badge overlap deployment — 2026-10-04
## Result
Deployed website revision `c7b00a4bd315c9185a01f4f28630f58c9f130cb2`. The replay GPS/source metadata now occupies a normal-flow row below the Leaflet viewport. The telemetry source, map rendering, and controls were not changed.
Changed and committed files:
- `website/components/web-telemetry-replay-modal.tsx`
- `website/tests/replay-recorded-data.test.tsx`
Commit contains only these two files. The regression asserts the badge is outside the map, visible on the map tab, hidden on the corner tab, and preserves the telemetry source.
## Verification
- Focused replay regression: 5/5 passed in both worktrees.
- TypeScript check and `git diff --check`: passed.
- Fresh production build: passed with production project `motoapp-d22e0`, no emulator configuration or demo build reuse. Artifact excludes the regression test and local QA harness.
- Production signed-in replay: actual existing R2 CSV ride loaded; badge showed `GPS: 34.04784, -85.23513`, source `r2-csv`, and OpenStreetMap label. At desktop width, Leaflet zoom tiles moved from z10 to z11 on `+` and returned to z10 on `−`. DOM geometry showed no overlap with Leaflet controls, no clipping, 11px text, and badge outside the map.
- At production viewport 390×844, mouse `+` moved tiles z8→z9 and `−` returned z9→z8. Badge remained readable with no control overlap, clipping, or horizontal dialog overflow.
- At 320×740, DOM checks showed the badge wrapped to 55px height, retained all text, and had no overlap/clipping/overflow. The production zoom level sampled asynchronously during viewport resize and animation, so this width's production zoom transition is not counted as verified.
- Separate sanitized local Playwright browser with actual Leaflet and touch input: desktop1280×900, mobile320×740, mobile390×844, landscape844×390 all passed `tap +`/`tap −` (z18→19→18), badge/control separation, readable text, and responsive fit. Tile imagery was stubbed locally; no production session/data was used. This is browser emulation, not physical-device testing.
- Public smoke: `/api/version` 200 with the deployed revision; `/account` 200; guest telemetry request 401.
The authenticated production browser session expired during the final narrow-width checks. A final screenshot showed the replay and badge but the page had returned to its signed-out header. Authenticated checks therefore apply to the observed signed-in period above; no further authenticated check was possible after expiry. No data was changed.
## Deployment and rollback
Fresh artifact SHA-256: `c4420a7cd782fd117168acaec93a234c2f74cf3d0ee9e2c3c065bb12e78eec1e`.
Rollback archive on VPS: `/home/motorsignal-admin/rollback-website-b25b6e5-to-c7b00a4-20261004.tar.gz` (mode 0600). The previous runtime `.next` is also retained at `/opt/motorsignal/releases/20260920-master-7efd29a/website/.next.rollback-c7b00a4bd315`.
As the VPS administrator, run:
```sh
python3 /home/motorsignal-admin/deploy-badge-c7b00a4bd315.py rollback
```
This restores the preceding working replay runtime and scoped source, then restarts only the website.
## Evidence
Evidence directory: `C:/Users/Bill/Desktop/flutter-app/output/playwright/badge-20261004/`.
- `local-touch-results.json`, `local-mobile-final.png`, `local-desktop-final.png`: isolated responsive/touch results.
- `focused-validation.json`, `production-config.json`, `production-build-result.json`, `production-build.log`: regression, configuration, and fresh build.
- `motorsignal-website-c7b00a4bd315.tar.gz`, `stage-result.json`, `deployment-result.json`: packaged artifact and deployment.
- `public-smoke.json`: served revision and public/guest checks.
The production screenshot was inspected in the Codex browser and was not saved into this evidence directory.
## Git state and scope
Deployment worktree HEAD is `c7b00a4bd315c9185a01f4f28630f58c9f130cb2`; it was clean after the scoped commit. The main checkout remains on `release/v1.0.2-build102-community-feed` at `bd278cdfd3619242a3056c6a2738abb0aff70feb`, preserving all pre-existing dirty/untracked work. No push, mobile release, backend/rules change, production fixture, or user ride mutation occurred.