v11.5.0
Highlights
- Explore page UI refresh — redesigned right sidebar centered on badges/achievements and communal progress, both Explore and Validate now scale to browser width, scroll-wheel zoom on both tools, minimap zoom buttons, refreshed buttons/colors/fonts, plus assorted bug fixes and code modernization #303, #1121, #2260, #3594 (PR #4255)
- AccessScore comes to the v3 API with a new severity-, quality-, and tag-aware scoring model #3855 (PR #4298)
- New Admin "API Analytics" tab showing v3 public API usage aggregated from activity logs #4262 (PR #4270)
- New admin-only "Not validated by an admin" filter on the admin LabelMap, for partners tracking admin review coverage #4243 (PR #4313)
Public API (/v3) — new endpoints & improvements
- New
GET /v3/api/accessScoreStreetsandGET /v3/api/accessScoreRegions#3855 (PR #4298) - New
GET /v3/api/regions— neighborhood info & geometry, similar to/v3/api/streets#4017 (PR #4253) - New
GET /v3/api/overallStatsByDayandGET /v3/api/aggregateStatsByDay— daily time-series of label/validation activity, with live charts in the docs #4274 (PR #4275) overallStatsvalidation stats are now split intocombined/human/aibreakdowns so consumers can separate AI votes from human votes #4223 (PR #4251) — see Breaking changesaggregateStatshas a newtutorial_labelscount field #3981 (PR #4293)- New
/cropImage/:labelType/:labelId/metadataendpoint, mirroring/backupImage#4226 (PR #4260) - API streaming failures are now logged so large-export empty
200s aren't silent #4161, #4133 (PR #4306) - Standardized API errors across the Cities/Region/Stats controllers #3871 (PR #4268)
- Fixed
/v3/api/streetsreturninguser_ids: [null]with an off-by-oneuser_count#3887 (PR #4305) — see Breaking changes - Fixed assorted v3 API input-validation bugs (PR #4261)
⚠️ Breaking public API changes
All on the
/v3preview API (changed in place per #3871). Consumers should
review before upgrading.
- All v3 output field names are now
snake_case— JSON bodies, GeoJSONproperties, CSV headers, and shapefile/GeoPackage fields. Query params stay camelCase. AffectsaggregateStats,cities,labelTypes→label_types,labelTags→label_tags,streetTypes→street_types,labelClusters, and the metadata serializers #3871 (PR #4264) - Validation results are now strings:
/v3/api/validationsreturns"validation_result": "Agree"(no morevalidation_result_string); the filter param is now?validationResult=Agree;/v3/api/validationResultTypesdrops itsidfield; labels-APIvalidationsaggregate casing changes (user:agree→user:Agree) #4230 (PR #4263) overallStatsvalidationsblock restructured:validations.Overall→validations.combined.Overall(plus newhuman/aisiblings) #4223 (PR #4251)- Removed the v2 AccessScore API entirely —
/v2/access/score/streetsand/v2/access/score/neighborhoodsnow return 404 (these were the only/v2routes; superseded by the v3 endpoints above) #3864 (PR #4304)
Security
- Hardened v3 API raw-SQL filter escaping and validated
saveImagelabel-type/name path inputs (PR #4239) - Scoped CSRF token injection to same-origin fetch requests #4232 (PR #4311)
Bug fixes & performance
- Fixed fire-and-forget DB writes in the gallery and UTM-contribution paths #4229 (PR #4309)
- Detach
PanoMarkerresize/pov_changedlisteners on removal to prevent leaks #4231 (PR #4307) - Fixed a discarded
DBIOin the validation-undo path #4228 (PR #4299) - Use the
geomGIST index for thelabel_pointbbox filter #4238 (PR #4312)
Developer experience & infrastructure
- Began a testing & CI pipeline #4248 (PRs #4242, #4246, #4248, #4250, #4265)
- Migrated developer docs from the wiki into the repo #4252 (PRs #4294, #4296, #4301, #4303)
- Added
CLAUDE.md, an in-repo guide for Claude Code (PR #4240)
Full Changelog: v11.4.3...v11.5.0