Compare commits
base: tudor/school_compare:fix/homepage-truth-and-rhythm-main
tudor/school_compare:main
tudor/school_compare:fix/la-averages-site
tudor/school_compare:fix/ks4-2023-24-pipeline
tudor/school_compare:fix/ofsted-current-status-site
tudor/school_compare:fix/ofsted-current-status-pipeline
tudor/school_compare:fix/gias-encoding
tudor/school_compare:fix/scheduled-dbt-selectors
tudor/school_compare:fix/nearby-drop-lede
tudor/school_compare:fix/school-page-selective-flag
tudor/school_compare:feat/header-facts-and-flags
tudor/school_compare:fix/la-average-cached-failure
tudor/school_compare:fix/search-row-facts
tudor/school_compare:fix/header-nursery-and-gender
tudor/school_compare:feat/phase-order-child-path
tudor/school_compare:fix/desktop-clear-keeps-search
tudor/school_compare:fix/modal-close-tap-target
tudor/school_compare:feat/single-state-school-group
tudor/school_compare:feat/school-type-groups-faith
tudor/school_compare:fix/filter-options-not-from-results
tudor/school_compare:feat/mobile-filter-sheet
tudor/school_compare:fix/e2e-after-half-mile-default
tudor/school_compare:fix/map-popup-view-button
tudor/school_compare:fix/default-radius-half-mile
tudor/school_compare:fix/toolbar-one-line
tudor/school_compare:fix/phase-filter-exact-match
tudor/school_compare:fix/phase-filter-global
tudor/school_compare:fix/map-pane-header
tudor/school_compare:feat/map-list-rows
tudor/school_compare:fix/phone-toolbar-width
tudor/school_compare:feat/results-map-view
tudor/school_compare:feat/results-toolbar
tudor/school_compare:feat/compare-limit-per-phase
tudor/school_compare:copy/remove-em-dashes
tudor/school_compare:fix/jump-sheet-under-bottom-bar
tudor/school_compare:fix/nearby-journey-waits-for-smooth-scroll
tudor/school_compare:fix/nearby-scroll-journey-clicks-offscreen-card
tudor/school_compare:fix/nearby-schools-order-by-distance
tudor/school_compare:feat/similar-schools-nearby
tudor/school_compare:fix/release-check-diagnostics
tudor/school_compare:feat/release-identity-and-reliability-gate
tudor/school_compare:docs/current-truth-and-legacy-inventory
tudor/school_compare:fix/og-image-route-group
tudor/school_compare:feat/school-page-place-links
tudor/school_compare:feat/about-blog-flags
tudor/school_compare:fix/payload-import-map
tudor/school_compare:fix/payload-initial-migration
tudor/school_compare:feat/about-and-blog
tudor/school_compare:fix/destinations-national-grain
tudor/school_compare:fix/airflow-fixed-admin-password
tudor/school_compare:feat/ks4-destinations
tudor/school_compare:fix/dark-mode-map-popup-contrast
tudor/school_compare:fix/distance-flag-off-absence-copy
tudor/school_compare:fix/navigation-source-soft-nav
tudor/school_compare:feat/place-school-attributes
tudor/school_compare:feat/place-analytics
tudor/school_compare:fix/mobile-hero-search
tudor/school_compare:fix/suggest-reopens-over-results
tudor/school_compare:fix/dark-map-fade
tudor/school_compare:fix/hero-dropdown-clipping
tudor/school_compare:feat/school-autosuggest
tudor/school_compare:fix/flags-runbook
tudor/school_compare:feat/feature-flags
tudor/school_compare:fix/place-phase-links
tudor/school_compare:feat/place-alphabetical-sort
tudor/school_compare:fix/e2e-canonical-and-robots
tudor/school_compare:feat/place-multiple-authorities
tudor/school_compare:fix/place-table-alignment
tudor/school_compare:fix/place-presentation-to-main
tudor/school_compare:fix/place-title-brand-doubling
tudor/school_compare:fix/place-page-presentation
tudor/school_compare:fix/place-phase-variants
tudor/school_compare:fix/locality-collision-skip
tudor/school_compare:feat/w2-location-layer
tudor/school_compare:feat/seo-metadata-c1
tudor/school_compare:fix/sitemap-any-year-data
tudor/school_compare:fix/staging-noindex
tudor/school_compare:feat/seo-crawl-hygiene-main
tudor/school_compare:feat/hero-artwork
tudor/school_compare:fix/homepage-truth-and-rhythm-main
tudor/school_compare:feat/brand-logo-artwork
tudor/school_compare:fix/homepage-truth-and-rhythm
tudor/school_compare:feat/schoolcompare-brand
tudor/school_compare:feat/detail-gias-fields-remove-unwired
tudor/school_compare:fix/special-schools-not-failing
tudor/school_compare:fix/detail-allthrough-admissions-phase
tudor/school_compare:fix/expert-signoff-shouldfixes
tudor/school_compare:fix/gias-blank-name-codes
tudor/school_compare:feat/compare-api-enrichment
tudor/school_compare:feat/gias-code-dictionaries
tudor/school_compare:feat/compare-chart-mobile-readability
tudor/school_compare:feat/pr-comment-agent
..
compare: tudor/school_compare:04669861954505699d304ed7f8bc5e88ee5c75a8
tudor/school_compare:main
tudor/school_compare:fix/la-averages-site
tudor/school_compare:fix/ks4-2023-24-pipeline
tudor/school_compare:fix/ofsted-current-status-site
tudor/school_compare:fix/ofsted-current-status-pipeline
tudor/school_compare:fix/gias-encoding
tudor/school_compare:fix/scheduled-dbt-selectors
tudor/school_compare:fix/nearby-drop-lede
tudor/school_compare:fix/school-page-selective-flag
tudor/school_compare:feat/header-facts-and-flags
tudor/school_compare:fix/la-average-cached-failure
tudor/school_compare:fix/search-row-facts
tudor/school_compare:fix/header-nursery-and-gender
tudor/school_compare:feat/phase-order-child-path
tudor/school_compare:fix/desktop-clear-keeps-search
tudor/school_compare:fix/modal-close-tap-target
tudor/school_compare:feat/single-state-school-group
tudor/school_compare:feat/school-type-groups-faith
tudor/school_compare:fix/filter-options-not-from-results
tudor/school_compare:feat/mobile-filter-sheet
tudor/school_compare:fix/e2e-after-half-mile-default
tudor/school_compare:fix/map-popup-view-button
tudor/school_compare:fix/default-radius-half-mile
tudor/school_compare:fix/toolbar-one-line
tudor/school_compare:fix/phase-filter-exact-match
tudor/school_compare:fix/phase-filter-global
tudor/school_compare:fix/map-pane-header
tudor/school_compare:feat/map-list-rows
tudor/school_compare:fix/phone-toolbar-width
tudor/school_compare:feat/results-map-view
tudor/school_compare:feat/results-toolbar
tudor/school_compare:feat/compare-limit-per-phase
tudor/school_compare:copy/remove-em-dashes
tudor/school_compare:fix/jump-sheet-under-bottom-bar
tudor/school_compare:fix/nearby-journey-waits-for-smooth-scroll
tudor/school_compare:fix/nearby-scroll-journey-clicks-offscreen-card
tudor/school_compare:fix/nearby-schools-order-by-distance
tudor/school_compare:feat/similar-schools-nearby
tudor/school_compare:fix/release-check-diagnostics
tudor/school_compare:feat/release-identity-and-reliability-gate
tudor/school_compare:docs/current-truth-and-legacy-inventory
tudor/school_compare:fix/og-image-route-group
tudor/school_compare:feat/school-page-place-links
tudor/school_compare:feat/about-blog-flags
tudor/school_compare:fix/payload-import-map
tudor/school_compare:fix/payload-initial-migration
tudor/school_compare:feat/about-and-blog
tudor/school_compare:fix/destinations-national-grain
tudor/school_compare:fix/airflow-fixed-admin-password
tudor/school_compare:feat/ks4-destinations
tudor/school_compare:fix/dark-mode-map-popup-contrast
tudor/school_compare:fix/distance-flag-off-absence-copy
tudor/school_compare:fix/navigation-source-soft-nav
tudor/school_compare:feat/place-school-attributes
tudor/school_compare:feat/place-analytics
tudor/school_compare:fix/mobile-hero-search
tudor/school_compare:fix/suggest-reopens-over-results
tudor/school_compare:fix/dark-map-fade
tudor/school_compare:fix/hero-dropdown-clipping
tudor/school_compare:feat/school-autosuggest
tudor/school_compare:fix/flags-runbook
tudor/school_compare:feat/feature-flags
tudor/school_compare:fix/place-phase-links
tudor/school_compare:feat/place-alphabetical-sort
tudor/school_compare:fix/e2e-canonical-and-robots
tudor/school_compare:feat/place-multiple-authorities
tudor/school_compare:fix/place-table-alignment
tudor/school_compare:fix/place-presentation-to-main
tudor/school_compare:fix/place-title-brand-doubling
tudor/school_compare:fix/place-page-presentation
tudor/school_compare:fix/place-phase-variants
tudor/school_compare:fix/locality-collision-skip
tudor/school_compare:feat/w2-location-layer
tudor/school_compare:feat/seo-metadata-c1
tudor/school_compare:fix/sitemap-any-year-data
tudor/school_compare:fix/staging-noindex
tudor/school_compare:feat/seo-crawl-hygiene-main
tudor/school_compare:feat/hero-artwork
tudor/school_compare:fix/homepage-truth-and-rhythm-main
tudor/school_compare:feat/brand-logo-artwork
tudor/school_compare:fix/homepage-truth-and-rhythm
tudor/school_compare:feat/schoolcompare-brand
tudor/school_compare:feat/detail-gias-fields-remove-unwired
tudor/school_compare:fix/special-schools-not-failing
tudor/school_compare:fix/detail-allthrough-admissions-phase
tudor/school_compare:fix/expert-signoff-shouldfixes
tudor/school_compare:fix/gias-blank-name-codes
tudor/school_compare:feat/compare-api-enrichment
tudor/school_compare:feat/gias-code-dictionaries
tudor/school_compare:feat/compare-chart-mobile-readability
tudor/school_compare:feat/pr-comment-agent
3
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
0466986195 |
Merge pull request 'feat(home): use the supplied hero artwork instead of a drawn one' (#93) from feat/hero-artwork into main
Stage (build -> staging -> E2E gate) / Build Backend (FastAPI) (push) Successful in 13s
Stage (build -> staging -> E2E gate) / Build Frontend (Next.js) (push) Successful in 53s
Stage (build -> staging -> E2E gate) / Build Pipeline (Meltano + dbt + Airflow) (push) Successful in 12s
Stage (build -> staging -> E2E gate) / Deploy to Staging (push) Successful in 1s
Stage (build -> staging -> E2E gate) / E2E Journeys against Staging (push) Failing after 1m14s
Reviewed-on: #93 |
||
|
|
3f0e05cc99 |
feat(home): use the supplied hero artwork instead of a drawn one
PR Checks / Frontend Typecheck + Tests (pull_request) Successful in 1m3s
PR Checks / Backend Smoke (pull_request) Successful in 7s
PR Checks / Build Backend (no push) (pull_request) Successful in 11s
PR Checks / Build Frontend (no push) (pull_request) Successful in 46s
PR Checks / Build Pipeline (no push) (pull_request) Successful in 10s
PR Checks / AI Code Review (Claude) (pull_request) Successful in 2m29s
Replaces the hand-drawn SVG landscape with the illustration supplied by the project owner. Master is assets/hero-source.png; everything under public/brand/hero-* comes from scripts/build-hero-images.js and should never be hand-edited. LAYOUT The artwork is composed as a full-bleed hero: it reserves an empty cream area down its left side for the headline. The old hero was a two-column grid with art in the right 0.88fr, which would have cropped that reserved area off and shrunk the scene into a thumbnail — the one thing the picture is built not to be. So the panel is now a single layered block: artwork behind, copy on top, and below the one-column breakpoint the artwork leaves the background and becomes a band under the search. Overlaying does not survive down to phone widths — the panel gets too narrow for the copy to stay inside the cream, so the scrim would have to cover nearly the whole image and you would be left with a tinted rectangle. Hence the switch at 860px rather than a single treatment stretched across every width. CONTRAST The copy sits on a gradient of --hero-ground, a new token sampled from the artwork's own cream (#FDF9F3) rather than from Sand. Sand is eight to thirteen points darker per channel, which leaves a visible seam straight down the hero. The scrim exists because the artwork is a fixed image on a fluid panel: past some width the headline would otherwise land on hillside green. Measured on rendered pixels, sampling background up to 120px beyond the right edge of each line, so a longer line still has margin: light title 14.36:1 body 6.52:1 dark title 11.01:1 body 6.44:1 The worst light case is hillside green showing through the scrim at 6.52:1. TWO CROPS The slot is two shapes: roughly 2.1:1–2.7:1 behind the desktop panel, and 2.6:1–4.9:1 as the band. A single file under object-fit: cover centre-crops, and at the band's extreme that slices a strip through the scene and loses the schoolhouse — exactly how the drawn hero failed on phones. <picture> switches crop, not just resolution: the band file is pre-cropped around the school and is already near 2.6:1, with the subject at ~65% across so squeezing toward 4.9:1 crops the empty sides instead. WEIGHT 1.6 MB PNG in, AVIF and WebP out; a browser fetches exactly one file — about 23–33 kB on desktop, 9–18 kB on a phone. The JPEG is only the <img> fallback. `sizes` describes the real panel box (max-width 1400 minus padding) rather than 100vw, which over-requested a candidate at every width on the LCP element. DARK THEME A raster cannot be re-graded token by token the way the drawing was, but it would reproduce the same failure — a bright illustration is the brightest object on a near-black page. It is dimmed in CSS to read as dusk, and the scrim fades it into the dark panel rather than into cream. TESTS The two illustration journeys are replaced by three, each covering a failure that still renders a valid-looking page: the artwork actually loading (naturalWidth, not src), the crop switching at the breakpoint, a modern format winning negotiation, and the dark theme dimming it. public/brand/CREDITS.md records provenance for every asset in that folder. The hero's licence line is marked unconfirmed — that one needs the owner. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|
|
f1819e9c4d |
Merge pull request 'fix(home): correct what the landing page claims, and give it one rhythm' (#92) from fix/homepage-truth-and-rhythm-main into main
Stage (build -> staging -> E2E gate) / Build Backend (FastAPI) (push) Successful in 13s
Stage (build -> staging -> E2E gate) / Build Frontend (Next.js) (push) Successful in 51s
Stage (build -> staging -> E2E gate) / Build Pipeline (Meltano + dbt + Airflow) (push) Successful in 12s
Stage (build -> staging -> E2E gate) / Deploy to Staging (push) Successful in 0s
Stage (build -> staging -> E2E gate) / E2E Journeys against Staging (push) Failing after 1m13s
Reviewed-on: #92 |