Frontend QA batch: date/TZ, https origin, date-422, VAPID rotation, trace-precip, partial-day gate #70
No reviewers
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: Jinemi/thermograph#70
Loading…
Reference in a new issue
No description provided.
Delete branch "qa/frontend-qa-batch"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Six fixes from a frontend QA sweep (one of them a live user report from Ruru), integrated into one branch off
dev. 122 backend tests pass on the combined branch; all frontend JS parses. Each was developed and tested independently, then merged (one trivial import-line conflict inday.js, resolved as a union).The six
todayISO()/stepDay()used UTC, so UTC+ users past local midnight couldn't reach their local "today" and prev/next was off-by-one. Now routed through localisoOfDate().frontend/static/{shared,day}.js. Fixes the Weekly tab, Day Detail, and the calendar picker.og:url/og:image/robots/ all sitemap<loc>emittedhttp://on an HTTPS site (Caddy terminates TLS). Now derive the scheme fromTHERMOGRAPH_BASE_URLwhen the request host matches the public host; localhost/LAN stays http. Fixed in the frontend SSR emitter (frontend/content.py, the real source) and the backend JSON-LD (backend/api/content_routes.py). Infra follow-up: add HSTS in Caddy.api_grade/api_day500'd on a malformeddate; now return 422.backend/web/app.py.enable()re-subscribes on key mismatch;send()prunes 401/403; VAPID contact default fixed to.org.frontend/static/push-client.js,backend/notifications/push.py. Must land before any VAPID key rotation (e.g. secrets-sops).precip == 0 → Dry,> 0 → Trace+): dry-streaks reset on any rain>0, a rounds-to-zero trace day renders "trace" (not0.0"),weatherType/chart/table key dry-vs-rain on the grade class, and the rain chart fan is remapped to the 8 tiers. Grading itself unchanged.backend/data/grading.py,frontend/static/{shared,calendar,day,app,chart}.js.backend/data/climate.py. (Ops follow-up separately: NASA primary failing fleet-wide, sync-worker lag — that's why ~92% of cells are on this fallback.)Targets
dev; from there it promotes to beta.https://claude.ai/code/session_01DKw14tBn1DPXhw3qMpfeMu