55 lines
4.1 KiB
Markdown
55 lines
4.1 KiB
Markdown
# 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.
|