Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[0.9.2] - 2026-04-17

Fixed

  • Skip degenerate rings with fewer than 4 points in Shape#polygon_from_way and Shape#build_rings to prevent RGeo LinearRing crashes from incomplete ways
  • ErrorParser now scans <p> tags before <strong> so Overpass error bodies that use <strong> as an inline label (e.g. <p><strong>Error</strong>: line 3: parse error: bbox requires four arguments</p>) surface the real message instead of just "Error". Syntax errors now also report details[:line] when the line number precedes parse error:, and extracted text is HTML-entity-decoded (so messages contain "nod" rather than &quot;nod&quot;)

[0.9.1] - 2026-02-07

Added

  • Query.perform_raw for executing pre-built queries with inline bounding boxes
  • Configurable max_retries for retry attempts on rate limiting and timeout errors
  • Structured error data: errors now include code, error_message, details, and http_status attributes
  • New ErrorParser class to parse HTML error responses from Overpass API
  • to_h and to_json methods on error classes for easy serialization

[0.9.0] - 2026-02-04

Added

  • Configurable API endpoint and timeout via Underpass.configure
  • Error handling with RateLimitError, TimeoutError, and ApiError classes
  • Automatic retries with exponential backoff for 429/504 responses
  • In-memory response caching with TTL expiration
  • Configurable Overpass QL recurse operators
  • Multipolygon assembly from OSM relations
  • Route relation support (assembles way members into MultiLineString)
  • Feature class wrapping geometries with OSM metadata (tags, id, type)
  • GeoJSON export via Underpass::GeoJSON.encode
  • Query Builder DSL with chainable node, way, relation, nwr methods
  • Area/named region queries via Query.perform_in_area
  • Proximity queries with around filter in Builder DSL
  • Post-query tag filtering via Underpass::Filter
  • Lazy enumeration via Matcher#lazy_matches
  • YARD documentation

Changed

  • BREAKING: Query.perform now returns Underpass::Feature objects instead of bare RGeo geometries
  • Upgraded to Ruby 3.4
  • Modernized CI and build tooling

Dependencies

  • Added rgeo-geojson ~> 2.2

[0.0.7] - 2019-07-31

  • Previous release