2026-07-03 - 2026-10-03
Overview
167 Pull requests merged by 1 user
Merged
#179 fix(school): send the school page its admissions policy, and read it exactly
Merged
#178 fix(search): stop replaying a failed LA-averages request forever
Merged
#177 feat(school): facts and flags in the school header, shared with search rows
Merged
#176 fix(search): tag only what the register records, and count the whole school
Merged
#175 fix(school): show Nursery only for nursery classes, and say Girls' school
Merged
#174 feat(search): phases in the order a child meets them
Merged
#173 fix(search): desktop Clear all keeps the search
Merged
#172 fix(modal): give the close button a 44px touch target
Merged
#171 feat(search): one state school group, not academy and council-run
Merged
#170 feat(search): school type groups and a faith filter
Merged
#169 fix(search): offer every filter option, not only those in the results
Merged
#168 feat(search): filter on phones through one sheet
Merged
#167 test(e2e): scroll a long list, and wait out the popup crossfade
Merged
#166 fix(map): draw the map card's View button like the list's
Merged
#165 fix(search): default to half a mile, and offer a quarter mile
Merged
#164 fix(search): set the toolbar's line count by width, not by results
Merged
#163 fix(api): filter by every GIAS phase, not just the grouped ones
Merged
#162 fix(search): offer every phase while a phase filter is applied
Merged
#161 fix(search): keep the map list's count and sort on one line
Merged
#160 feat(search): show the list view's rows beside the map
Merged
#159 fix(search): keep the phone results toolbar inside the screen
Merged
#158 feat(search): align the map view with the mockup and open postcode searches on it
Merged
#157 feat(search): pin the results toolbar and float the map button on phones
Merged
#156 feat(compare): five per phase, not five overall
Merged
#155 copy(web): replace em dashes in public copy
Merged
#154 fix(web): lift the mobile jump sheet above the bottom tab bar
Merged
#153 test(e2e): wait for the carousel's smooth scroll to settle before measuring it
Merged
#152 test(e2e): fix the nearby-schools journey clicking a card it scrolled past
Merged
#151 fix: order nearby schools by distance, not by how alike they are
Merged
#150 feat: similar schools nearby on the detail page
Merged
#149 fix(ci): make a failed release check say what it actually saw
Merged
#148 feat: verify what we actually deployed, and publish data all-or-nothing
Merged
#147 docs: describe the system that exists, and remove the importer's remains
Merged
#146 fix(seo): declare the share card, which the route group stopped inheriting
Merged
#145 feat(seo): link school pages into the location layer
Merged
#144 feat(flags): put /about and /blog behind flags, dark by default
Merged
#143 fix(cms): regenerate the import map so the Content field renders
Merged
#141 fix(cms): ship the initial Payload migration (recovers two commits stranded after #140 merged)
Merged
#140 feat: a named author, an About page and a Payload blog
Merged
#139 fix(destinations): the DAG died on a null in a primary key
Merged
#138 fix(airflow): a fixed admin password from the environment, and a tap that missed #137
Merged
#137 feat(destinations): say what happened to a school's leavers, without republishing what DfE withheld
Merged
#136 fix(map): the popup never took the dark theme
Merged
#135 fix(admissions): flag-off pages must not speak for the council
Merged
#134 fix(analytics): the funnel source read a referrer that never changes
Merged
#133 feat(places): say what each school is, not only how it scored
Merged
#132 feat(analytics): measure the location layer, and stop calling it direct
Merged
#131 fix(suggest): the dropdown reopened on top of the search results
Merged
#130 fix(search): the mobile hero search was indented by a card's padding
Merged
#129 fix(map): the hero map's fade to the header was hardcoded white
Merged
#128 fix(suggest): let the dropdown out of the hero panel
Merged
#127 feat(suggest): school autosuggest, and the rate-limit fix it needed first
Merged
#126 docs(flags): Unleash does not create flags by itself
Merged
#125 feat(flags): ship-dark feature flags, with last-distance-offered behind the first one
Merged
#124 fix(places): phase links must stay in their own namespace
Merged
#123 feat(places): list schools alphabetically on place pages
Merged
#122 fix(e2e): three assertions that were wrong about correct behaviour
Merged
#121 feat(places): name every authority a place sits in
Merged
#120 fix(places): align the measure column's heading with its values
Merged
#119 fix(places): phase-grouped tables, plain-English measures, styled links
Merged
#118 fix(places): phase-grouped tables, plain-English measures, styled links
Merged
#117 fix(places): stop the place titles doubling the brand
Merged
#116 fix(places): submit and link the phase variants
Merged
#115 fix(places): a locality collision must not break the sitemap
Merged
#114 feat(seo): the location layer — town, locality, authority and outcode pages (W2)
Merged
#113 feat(seo): rewrite the C1 snippets to earn the click (W8)
Merged
#112 fix(seo): a school is publishable on any year's results, not the latest
Merged
#111 fix(seo): keep staging out of the search index
Merged
#110 fix(seo): crawl hygiene and a per-family sitemap index (W1)
Merged
#108 fix(seo): crawl hygiene and a per-family sitemap index (W1)
Merged
#109 fix(data): drop the Welsh school GIAS does not type as Welsh
Merged
#107 feat(data): publish England only, dropping Welsh and overseas establishments
Merged
#106 fix(e2e): scope the Distance-tab assertion, and separate the tile figures
Merged
#105 fix(admissions): state distance in miles throughout, never mixed
Merged
#104 feat(admissions): publish the latest cut-off only, holding history back
Merged
#103 fix(admissions): move the cut-off detail into its own section
Merged
#102 feat(admissions): add the cut-off history, map and postcode check
Merged
#101 feat(admissions): show the last distance offered where councils publish it
Merged
#100 chore: drop the hero byline, and refresh a figure in the UX audit notes
Merged
#99 fix(charts): make the national-average marker visible on both templates
Merged
#98 feat(home): swap in the higher-fidelity hero artwork
Merged
#97 feat(home): add a first-person byline under the hero search
Merged
#96 fix(home): stop implying we are official, and fix the mobile hero and search
Merged
#95 fix(e2e): assert the brand lockup and touch icon as they are actually built
Merged
#94 fix(home): art-direct the hero's fallback path, and declare sharp
Merged
#93 feat(home): use the supplied hero artwork instead of a drawn one
Merged
#92 fix(home): correct what the landing page claims, and give it one rhythm
Merged
#91 fix(home): correct what the landing page claims, and give it one rhythm
Merged
#90 feat(brand): use the supplied logo artwork instead of a reconstruction
Merged
#89 feat(brand): adopt the schoolcompare identity across the site
Merged
#88 fix(design): correct the font assertion (serif$ matched sans-serif) and make the Leaflet overrides win
Merged
#87 fix(design): resolve the font tokens — staging was rendering entirely in Times
Merged
#86 feat(design): adopt the Cohort identity — palette, type, mark and dark theme
Merged
#85 fix(detail): restore the shell's mobile header/nav CSS
Merged
#84 perf(detail): render school detail sections on the server
Merged
#83 feat(detail): move religious character into header details + mobile reveal
Merged
#82 feat(detail): surface GIAS identity/contact details, drop unwired sections
Merged
#81 feat(ui): viewport-aware InfoPopover replaces broken metric tooltips
Merged
#80 fix(compare): a no-results school no longer blanks the trend chart
Merged
#79 feat(security): allow analytics subdomain to iframe the site
Merged
#78 fix(detail): give Results Over Time chart more height on desktop
Merged
#77 feat(analytics): load Umami heatmap recorder
Merged
#76 fix(detail): compare each SATs bar to its own national benchmark
Merged
#75 feat(admissions): surface easy-to-miss deadlines as callout boxes
Merged
#74 fix(rankings,admissions): correct education-accuracy audit findings
Merged
#73 fix(home): correct education/Ofsted claims on the landing page
Merged
#72 fix(detail): let the special-school note span the full container width
Merged
#71 fix(detail): align Ofsted Report Card grade chips
Merged
#70 fix: don’t portray special schools as failing the mainstream benchmark
Merged
#69 fix(detail): label the phase of all-through admissions figures (Batch F review fix)
Merged
#68 fix(detail): render both phases for all-through schools (Batch E)
Merged
#67 fix(detail): gap-honest year axis on the detail-page trend charts (Batch D)
Merged
#66 fix(detail): banded admissions + plain-English Progress 8 (Batch C)
Merged
#65 fix(detail): 'England average' provenance labelling (Batch B)
Merged
#64 fix(detail): Ofsted sentinel codes, sixth form, carried-forward labels (Batch A)
Merged
#63 fix(list/map): report-card schools badged as Report Card, not their old grade
Merged
#62 fix(detail): render & correctly date Ofsted report cards
Merged
#61 fix(ci): promotion E2E-gate check uses Actions token, not REGISTRY_TOKEN (403)
Merged
#60 style(compare): shorten Ofsted link text to 'Ofsted page'
Merged
#59 style(compare): enlarge per-school name label in mobile section cards
Merged
#58 fix(compare): anchor grade-5 & EBacc rows; restore secondary-button outline
Merged
#57 fix(compare): keep add-school sheet above the mobile keyboard (VisualViewport)
Merged
#56 fix(compare): repair mobile add-school modal + re-apply stranded chart-height fix
Merged
#55 fix(compare): expert should-fixes S1-S4, S6 (S5/S7 closed by verification)
Merged
#54 fix(pipeline): annual DAG never builds the official KS4 national mart
Merged
#53 fix(compare): expert sign-off must-fixes M1-M3
Merged
#52 fix(compare): stale-basket fetch blanking comparisons; rail caption
Merged
#51 fix(compare): align sticky school chips with their data columns on desktop
Merged
#50 fix(compare): five must-fix findings from the final expert review
Merged
#49 fix: preserve literal 'NULL' strings for primary key columns
Merged
#48 fix: convert NaN/NULL to None and restore record properties structure in tap.py
Merged
#47 feat: ingest independent schools in Ofsted tap and dbt staging
Merged
#46 Pass phase state to compare sub-components to prevent phase metrics override by multi-phase schools
Merged
#45 Fix Ofsted transitional inspections, phase tab exclusions, and FSM benchmark comparison
Merged
#44 fix(compare): sticky school bar hidden behind the site header
Merged
#43 School name cutoff fix
Merged
#42 fix(compare): match mockups — remove trends table + mobile measure-first cards
Merged
#41 fix(compare): trends chart was squashed to ~150px — give it a real height
Merged
#40 test(e2e): fix flaky compare journey — select two same-phase schools
Merged
#38 perf(api): batch supplementary queries — /api/compare stops scaling per school
Merged
#39 ci: speed up Frontend Typecheck + Tests (cache node_modules; cancel superseded runs)
Merged
#37 fix(compare): blank page on refresh + remove dead per-page comparison fetch
Merged
#36 perf(compare): import-time KS4 national averages mart; no refetch on metric change
Merged
#35 feat(compare): parent-first compare screen — sections, England anchors, report cards, mobile-first
Merged
#34 feat(api): compare endpoint enrichment — supplementary blocks, national averages, benchmarks, report-card labels
Merged
#32 feat(pipeline): compare-screen data foundation — raw→marts promotions, national averages, Ofsted report cards
Merged
#33 ci: two-stage deploy — staging automatic, production behind a manual approval
Merged
#27 fix(api): blank-name GIAS sentinel codes map to empty string, not Unknown(n)
Merged
#26 fix(pipeline): add the missing backend cache-invalidation step to the data DAGs
Merged
#25 fix(api): legacy name-column fallback when marts predate the GIAS code migration
Merged
#24 feat: GIAS classification fields stored as codes, translated in code
Merged
#23 fix(ui): shorten proposed-to-close notice copy
Merged
#22 feat: include and mark 'Open, but proposed to close' schools
Merged
#21 feat: drive sixth-form separation from GIAS OfficialSixthForm flag
Merged
#20 fix(api): school detail 500s for schools with no performance rows
Merged
#19 feat(home): move "use my location" beside the hero search box
Merged
#18 fix(map): results map fullscreen falls back to an overlay on iOS
Merged
#17 fix(search): stop the mobile sort dropdown overflowing the viewport
Merged
#16 feat(compare): lay mobile chart chips two per row
Merged
#15 fix(e2e): compare-chips test must compare schools in one phase
Merged
#14 fix(frontend): proxy /api and /sitemap.xml at runtime, not via baked rewrites
Merged
#13 chore: remove the Ofsted Parent View feature end to end
Merged
#12 fix(compare): keep chart data when a client refetch fails
Merged
#11 feat(compare): readable comparison chart on mobile
Merged
#10 fix(school): make hero map fullscreen work on iOS Safari
Merged
#8 fix(e2e): pick the latest explicit year in the rankings year test
Merged
#7 fix(api): accept academic-year codes in rankings year filter
1 Pull request proposed by 1 user
Proposed
#180 fix(school): drop the nearby section's lede, which repeated its heading
1 Issue closed from 1 user
Closed
#31 If there are no KS4 results, display note saying there are no results instead of showing 0%
3 Issues created by 1 user
Opened
#29 Make map school view scroll to school on the right list when clicked on
Opened
#30 Search by name label cannot be removed
Opened
#31 If there are no KS4 results, display note saying there are no results instead of showing 0%