Compare commits

..
Author SHA1 Message Date
TudorandClaude Fable 5 cc5b6955d8 fix(school): make hero map fullscreen work on iOS Safari
iOS Safari has no Element.requestFullscreen (fullscreen is video-only),
so tapping the map band or 'View on map' silently did nothing on
iPhones. Fall back to a fixed-position CSS overlay driven by state when
the Fullscreen API is missing or its promise rejects, locking body
scroll while open. The Leaflet map already re-measures via the shared
isFullscreen flag. New e2e journey simulates the iOS condition by
deleting the API and asserts the overlay opens and closes; it fails
against the current production build.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 21:27:41 +01:00
TudorandClaude Fable 5 35752a7d53 chore(ci): diagnostic v2 — capture headers to attribute the 500s
Staging Rankings Diagnostic / Staging rankings year diagnostic (push) Successful in 1s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 15:49:15 +01:00
TudorandClaude Fable 5 e48469b058 chore(ci): push-triggered staging diagnostic workflow (temporary)
Staging Rankings Diagnostic / Staging rankings year diagnostic (push) Successful in 1s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 15:47:00 +01:00
TudorandClaude Fable 5 660d84502a chore(ci): temporary staging rankings year diagnostic (do not merge)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 15:24:03 +01:00
2 changed files with 47 additions and 1 deletions
+28
View File
@@ -0,0 +1,28 @@
# TEMPORARY diagnostic workflow — delete after the rankings year= bug is closed.
name: Staging Rankings Diagnostic
on:
push:
branches:
- diag/staging-rankings-year
jobs:
staging-api-diagnostic:
name: Staging rankings year diagnostic
runs-on: ubuntu-latest
steps:
- name: Probe staging rankings year handling
env:
BASE: ${{ secrets.STAGING_BASE_URL }}
run: |
probe() {
echo "== $1 =="
curl -s --max-time 15 -D /tmp/h.txt -o /tmp/b.txt "$BASE$1"
echo "--- headers:"; cat /tmp/h.txt
echo "--- body (first 400 bytes):"; head -c 400 /tmp/b.txt; echo
}
probe "/api/data-info"
probe "/api/filters"
probe "/api/rankings?metric=rwm_expected_pct&limit=3"
probe "/api/rankings?metric=rwm_expected_pct&limit=3&year=202425"
probe "/"
+19 -1
View File
@@ -12,7 +12,25 @@ env:
PIPELINE_IMAGE_NAME: ${{ gitea.repository }}-pipeline
jobs:
frontend-checks:
# TEMPORARY: evidence gathering for the rankings year= empty-list bug on
# staging. Remove before merging. Prints status codes and row counts only.
staging-api-diagnostic:
name: Staging rankings year diagnostic
runs-on: ubuntu-latest
steps:
- name: Probe staging rankings year handling
env:
BASE: ${{ secrets.STAGING_BASE_URL }}
run: |
echo "== /api/filters years =="
curl -s --max-time 15 "$BASE/api/filters" -o /tmp/f.json -w "status %{http_code}\n"
python3 -c "import json; print(json.load(open('/tmp/f.json')).get('years'))" || head -c 300 /tmp/f.json
echo "== /api/rankings probes (metric=rwm_expected_pct, limit=3) =="
for Q in "" "&year=202425" "&year=201819" "&year=2024"; do
CODE=$(curl -s --max-time 15 -o /tmp/r.json -w "%{http_code}" "$BASE/api/rankings?metric=rwm_expected_pct&limit=3$Q")
echo "query [$Q] -> status $CODE"
python3 -c "import json; d=json.load(open('/tmp/r.json')); print(' year:', d.get('year'), 'total:', d.get('total'), 'rows:', len(d.get('rankings', [])))" || head -c 300 /tmp/r.json
done
name: Frontend Typecheck + Tests
runs-on: ubuntu-latest
steps: