Andy Allan [Thu, 1 Oct 2026 12:40:54 +0000 (13:40 +0100)]
Fix N+1 queries for comment authors in the notes API
Preload the authors of note comments, and of the notes themselves for
the RSS feeds, when rendering notes from the API.
The tests now use notes with comments by at least three different
users, as prosopite doesn't always detect an N+1 query with only two
records - the first query in a process can have a different call stack
while the association's statement cache is built.
Andy Allan [Thu, 1 Oct 2026 10:50:57 +0000 (11:50 +0100)]
Detect N+1 queries in tests using prosopite
Each request handled by the tests (controllers, integration and system)
is scanned separately for N+1 queries using prosopite's rack middleware,
as is each job performed outside of a request. The test fails if any are found.
Jobs performed during a request aren't scanned, as their queries would
otherwise count towards the request's. That would make a request that triggers
three email notifications look like an N+1 query, whereas in reality each job
is performed separately.
Existing N+1 queries are allowed when any of the files listed in
test/prosopite_todo.yml are in the call stack. This means we can work
through that list, but avoid adding new N+1 queries in other parts of our code.
Updates `activerecord-postgis` from 0.6.0 to 0.6.1
- [Release notes](https://github.com/seuros/activerecord-postgis/releases)
- [Changelog](https://github.com/seuros/activerecord-postgis/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seuros/activerecord-postgis/compare/activerecord-postgis/v0.6.0...activerecord-postgis/v0.6.1)
Updates `actionpack-page_caching` from 1.2.4 to 1.2.5
- [Release notes](https://github.com/rails/actionpack-page_caching/releases)
- [Changelog](https://github.com/rails/actionpack-page_caching/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rails/actionpack-page_caching/compare/v1.2.4...v1.2.5)
Updates `doorkeeper` from 5.9.7 to 5.9.9
- [Release notes](https://github.com/doorkeeper-gem/doorkeeper/releases)
- [Changelog](https://github.com/doorkeeper-gem/doorkeeper/blob/main/CHANGELOG.md)
- [Commits](https://github.com/doorkeeper-gem/doorkeeper/compare/v5.9.7...v5.9.9)
Updates `doorkeeper-openid_connect` from 1.10.5 to 2.0.0
- [Release notes](https://github.com/doorkeeper-gem/doorkeeper-openid_connect/releases)
- [Changelog](https://github.com/doorkeeper-gem/doorkeeper-openid_connect/blob/master/CHANGELOG.md)
- [Commits](https://github.com/doorkeeper-gem/doorkeeper-openid_connect/compare/v1.10.5...v2.0.0)
Updates `dalli` from 5.1.0 to 5.1.1
- [Release notes](https://github.com/petergoldstein/dalli/releases)
- [Changelog](https://github.com/petergoldstein/dalli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/petergoldstein/dalli/compare/v5.1.0...v5.1.1)
Updates `aws-sdk-s3` from 1.232.1 to 1.232.2
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)
Updates `herb` from 0.10.4 to 0.11.0
- [Release notes](https://github.com/marcoroth/herb/releases)
- [Commits](https://github.com/marcoroth/herb/compare/v0.10.4...v0.11.0)
Updates `database_consistency` from 3.0.12 to 3.0.13
- [Changelog](https://github.com/djezzzl/database_consistency/blob/master/CHANGELOG.md)
- [Commits](https://github.com/djezzzl/database_consistency/compare/v3.0.12...v3.0.13)
Updates `aws-partitions` from 1.1289.0 to 1.1291.0
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-partitions/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)
Updates `bindata` from 3.0.0 to 3.0.1
- [Changelog](https://github.com/dmendel/bindata/blob/master/ChangeLog.rdoc)
- [Commits](https://github.com/dmendel/bindata/compare/v3.0.0...v3.0.1)
Bumps the dependencies group with 2 updates: [tag2link](https://github.com/JOSM/tag2link) and [@herb-tools/linter](https://github.com/marcoroth/herb/tree/HEAD/javascript/packages/linter).
Updates `tag2link` from 2026.8.21 to 2026.9.21
- [Release notes](https://github.com/JOSM/tag2link/releases)
- [Commits](https://github.com/JOSM/tag2link/compare/2026.8.21...2026.9.21)
Updates `@herb-tools/linter` from 0.10.4 to 0.11.0
- [Release notes](https://github.com/marcoroth/herb/releases)
- [Commits](https://github.com/marcoroth/herb/commits/v0.11.0/javascript/packages/linter)
Keep auth provider logos styleable after SVG optimisation
Give the Apple and GitHub logo background/foreground svgo-stable bg/fg
classes and style those instead of rect/path, and drop the svg
width/height from apple, github and microsoft so their viewBox survives.
Pablo Brasero [Tue, 22 Sep 2026 12:30:14 +0000 (13:30 +0100)]
Avoid regexp not supported in old browsers
This comes after a user reported that the slippy map doesn't work on iOS 15,
which we have been able to reproduce with an old iPhone.
MapLibre's translation string keys are in CapitalisedCamelCase, as opposed to
our usual snake_case. This also conflicts with Leaflet's keys which are
also in snake_case. This creates a weird scenario where a translation key
is duplicated: `GeolocateControl` for MapLibre and `geolocate_control` for
leaflet.
Updates `faraday` from 2.14.3 to 2.14.4
- [Release notes](https://github.com/lostisland/faraday/releases)
- [Changelog](https://github.com/lostisland/faraday/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lostisland/faraday/compare/v2.14.3...v2.14.4)
Updates `opentelemetry-sdk` from 1.13.0 to 1.13.1
- [Release notes](https://github.com/open-telemetry/opentelemetry-ruby/releases)
- [Commits](https://github.com/open-telemetry/opentelemetry-ruby/compare/opentelemetry-sdk/v1.13.0...opentelemetry-sdk/v1.13.1)
Updates `aws-sdk-s3` from 1.232.0 to 1.232.1
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)
Updates `unicode-display_width` from 3.2.0 to 3.3.0
- [Changelog](https://github.com/janlelis/unicode-display_width/blob/main/CHANGELOG.md)
- [Commits](https://github.com/janlelis/unicode-display_width/compare/v3.2.0...v3.3.0)
Updates `annotaterb` from 4.24.0 to 4.25.0
- [Changelog](https://github.com/drwl/annotaterb/blob/main/CHANGELOG.md)
- [Commits](https://github.com/drwl/annotaterb/compare/v4.24.0...v4.25.0)
Updates `database_consistency` from 3.0.11 to 3.0.12
- [Changelog](https://github.com/djezzzl/database_consistency/blob/master/CHANGELOG.md)
- [Commits](https://github.com/djezzzl/database_consistency/compare/v3.0.11...v3.0.12)
Updates `aws-partitions` from 1.1287.0 to 1.1289.0
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-partitions/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)
Updates `faraday-http-cache` from 2.7.0 to 2.8.0
- [Release notes](https://github.com/plataformatec/faraday-http-cache/releases)
- [Changelog](https://github.com/sourcelevel/faraday-http-cache/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plataformatec/faraday-http-cache/compare/v2.7.0...v2.8.0)
Updates `io-console` from 0.9.3 to 0.9.4
- [Release notes](https://github.com/ruby/io-console/releases)
- [Commits](https://github.com/ruby/io-console/compare/v0.9.3...v0.9.4)
Updates `net-protocol` from 0.3.0 to 0.4.0
- [Release notes](https://github.com/ruby/net-protocol/releases)
- [Commits](https://github.com/ruby/net-protocol/compare/v0.3.0...v0.4.0)
Updates `opentelemetry-instrumentation-net_http` from 0.29.0 to 0.29.1
- [Release notes](https://github.com/open-telemetry/opentelemetry-ruby-contrib/releases)
- [Commits](https://github.com/open-telemetry/opentelemetry-ruby-contrib/compare/opentelemetry-instrumentation-net_http/v0.29.0...opentelemetry-instrumentation-net_http/v0.29.1)
Updates `rubyzip` from 3.6.0 to 3.7.0
- [Release notes](https://github.com/rubyzip/rubyzip/releases)
- [Changelog](https://github.com/rubyzip/rubyzip/blob/main/Changelog.md)
- [Commits](https://github.com/rubyzip/rubyzip/compare/v3.6.0...v3.7.0)
Updates `unicode-emoji` from 4.2.0 to 4.3.0
- [Changelog](https://github.com/janlelis/unicode-emoji/blob/main/CHANGELOG.md)
- [Commits](https://github.com/janlelis/unicode-emoji/compare/v4.2.0...v4.3.0)
Andy Allan [Wed, 23 Sep 2026 14:43:59 +0000 (15:43 +0100)]
Validate the bbox parameters when exporting
A missing parameter raised OSM::APIBadUserInput, which isn't handled
by web controllers and so resulted in a 500 error, and a non-numeric
one was silently treated as zero. Validate them with param! instead
so that both get a bad request response.
Andy Allan [Wed, 23 Sep 2026 15:19:55 +0000 (16:19 +0100)]
Return a JSON error when reverse geocoding fails for a JSON request
There is no JSON error template, so a nominatim error resulted in a
missing template exception. Return the error as JSON instead, and
ignore error responses when setting the home location name so that
the existing name is kept.
Andy Allan [Wed, 23 Sep 2026 15:19:44 +0000 (16:19 +0100)]
Render reverse geocoding results once, after all have been collected
The respond_to block was inside the loop, so nothing was
rendered when nominatim found no results. JSON requests then got a 406
error, and the home location name wasn't cleared when choosing a
location that has no name.
Andy Allan [Wed, 23 Sep 2026 14:43:59 +0000 (15:43 +0100)]
Validate the bbox parameter when listing changesets
An invalid bbox raised OSM::APIBadUserInput, which isn't handled by
web controllers and so resulted in a 500 error. Validate it with
param! instead so that it gets a bad request response.
Andy Allan [Wed, 23 Sep 2026 13:18:04 +0000 (14:18 +0100)]
Disable live asset compilation in production
The Rails 8.0 update dropped config.assets.compile = false, as the
new framework template assumes Propshaft. This left sprockets-rails
defaulting to compiling assets on demand in production, and requests
for /assets/ raise Sprockets::FileOutsidePaths, giving a 500 error.
Updates `doorkeeper` from 5.9.6 to 5.9.7
- [Release notes](https://github.com/doorkeeper-gem/doorkeeper/releases)
- [Changelog](https://github.com/doorkeeper-gem/doorkeeper/blob/main/CHANGELOG.md)
- [Commits](https://github.com/doorkeeper-gem/doorkeeper/compare/v5.9.6...v5.9.7)
Updates `opentelemetry-exporter-otlp` from 0.35.1 to 0.36.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-ruby/releases)
- [Commits](https://github.com/open-telemetry/opentelemetry-ruby/compare/opentelemetry-exporter-otlp/v0.35.1...opentelemetry-exporter-otlp/v0.36.0)
Updates `aws-sdk-s3` from 1.229.0 to 1.232.0
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)
Updates `herb` from 0.10.3 to 0.10.4
- [Release notes](https://github.com/marcoroth/herb/releases)
- [Commits](https://github.com/marcoroth/herb/compare/v0.10.3...v0.10.4)
Updates `selenium-webdriver` from 4.48.0 to 4.49.0
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-4.48.0...selenium-4.49.0)
Updates `simplecov` from 1.2.0 to 1.3.0
- [Release notes](https://github.com/simplecov-ruby/simplecov/releases)
- [Changelog](https://github.com/simplecov-ruby/simplecov/blob/main/CHANGELOG.md)
- [Commits](https://github.com/simplecov-ruby/simplecov/compare/v1.2.0...v1.3.0)
Updates `aws-partitions` from 1.1284.0 to 1.1287.0
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-partitions/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)
Updates `aws-sdk-core` from 3.254.1 to 3.257.0
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-core/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)
Updates `aws-sdk-kms` from 1.130.0 to 1.132.0
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-kms/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)
Updates `bigdecimal` from 4.1.2 to 4.1.3
- [Release notes](https://github.com/ruby/bigdecimal/releases)
- [Changelog](https://github.com/ruby/bigdecimal/blob/master/CHANGES.md)
- [Commits](https://github.com/ruby/bigdecimal/compare/v4.1.2...v4.1.3)
Updates `git` from 5.4.1 to 5.6.0
- [Release notes](https://github.com/ruby-git/ruby-git/releases)
- [Changelog](https://github.com/ruby-git/ruby-git/blob/v5.6.0/CHANGELOG.md)
- [Commits](https://github.com/ruby-git/ruby-git/compare/v5.4.1...v5.6.0)
Updates `io-console` from 0.9.2 to 0.9.3
- [Release notes](https://github.com/ruby/io-console/releases)
- [Commits](https://github.com/ruby/io-console/compare/v0.9.2...v0.9.3)
Updates `msgpack` from 1.8.4 to 1.8.5
- [Changelog](https://github.com/msgpack/msgpack-ruby/blob/master/ChangeLog)
- [Commits](https://github.com/msgpack/msgpack-ruby/compare/v1.8.4...v1.8.5)
Updates `net-imap` from 0.6.6 to 0.6.7
- [Release notes](https://github.com/ruby/net-imap/releases)
- [Commits](https://github.com/ruby/net-imap/compare/v0.6.6...v0.6.7)
Updates `opentelemetry-api` from 1.11.0 to 1.11.1
- [Release notes](https://github.com/open-telemetry/opentelemetry-ruby/releases)
- [Commits](https://github.com/open-telemetry/opentelemetry-ruby/compare/opentelemetry-api/v1.11.0...opentelemetry-api/v1.11.1)
Updates `opentelemetry-instrumentation-grpc` from 0.5.2 to 0.5.3
- [Release notes](https://github.com/open-telemetry/opentelemetry-ruby-contrib/releases)
- [Commits](https://github.com/open-telemetry/opentelemetry-ruby-contrib/compare/opentelemetry-instrumentation-grpc/v0.5.2...opentelemetry-instrumentation-grpc/v0.5.3)
Updates `opentelemetry-instrumentation-gruf` from 0.6.2 to 0.6.3
- [Release notes](https://github.com/open-telemetry/opentelemetry-ruby-contrib/releases)
- [Commits](https://github.com/open-telemetry/opentelemetry-ruby-contrib/compare/opentelemetry-instrumentation-gruf/v0.6.2...opentelemetry-instrumentation-gruf/v0.6.3)
Updates `opentelemetry-instrumentation-http_client` from 0.29.0 to 0.29.1
- [Release notes](https://github.com/open-telemetry/opentelemetry-ruby-contrib/releases)
- [Commits](https://github.com/open-telemetry/opentelemetry-ruby-contrib/compare/opentelemetry-instrumentation-http_client/v0.29.0...opentelemetry-instrumentation-http_client/v0.29.1)
Updates `opentelemetry-instrumentation-lmdb` from 0.26.0 to 0.26.1
- [Release notes](https://github.com/open-telemetry/opentelemetry-ruby-contrib/releases)
- [Commits](https://github.com/open-telemetry/opentelemetry-ruby-contrib/compare/opentelemetry-instrumentation-lmdb/v0.26.0...opentelemetry-instrumentation-lmdb/v0.26.1)