Version: [5965] 02Agent OSM Downloader 1.2.1

## [1.2.1] - 2026-08-19

### Fixed

- **Every download after the first one could crash.** The persistent
Overpass
  cache added in 1.2.0 opened one SQLite connection and reused it from
  whatever thread called it first; QGIS runs each download on its own
worker
  thread, so a later download from a different thread hit
  `sqlite3.ProgrammingError: SQLite objects created in a thread can
only be
  used in that same thread` and failed outright. The connection is now
opened
  with `check_same_thread=False` and every access is serialized
through a
  lock.
- **A single failed tile discarded an entire tiled download.** A large
extent
  split into several bounded requests aborted completely — throwing
away
  every tile that had already succeeded — the moment one tile
exhausted all
  three Overpass mirrors. A failing tile is now skipped and reported
by
  number; the tiles that did succeed are still merged into layers, and
a
  retry only needs to fill the gap since successful tiles stay cached.
- **The docked panel didn't fit a short QGIS panel height and couldn't
  scroll.** The tab widget claimed a stretch factor it didn't need,
leaving a
  block of empty space inside the active tab while the "Run download"
  section and Download button could run off the bottom of a docked
panel
  with no way to reach them. The tab widget now sizes to its actual
content,
  and the whole dock is wrapped in a scroll area.

### Changed

- The dock now opens tabbed with QGIS's **Browser** panel instead of
as a
  separate stacked row in the left dock area.
- A small **"+ OSM basemap"** button now sits in the tab bar's
top-right
  corner (a soft purple-grey accent, distinct from the plugin's
green), so
  the basemap can be added from any tab without opening Run download.
- A finished download's layer group is now **inserted at the top** of
the
  layer tree instead of appended at the bottom, so it is immediately
visible.

## [1.2.0] - 2026-08-19

### Query

- **Exclude tag.** Every download endpoint (Presets, Place, Custom
tag,
  Advanced query) now accepts an optional exclude key/value. A
matching
  feature is dropped once the OSM response arrives — a client-side
filter,
  not additional Overpass query text — and is surfaced on the Query
tab as
  "Exclude tag (optional)".
- **Regex value matching.** The Advanced query panel gained a "Match
values
  as regex (~)" checkbox that renders every filled value as an
Overpass
  regex selector instead of an exact match. Regex values still cannot
carry
  quotes, backslashes or semicolons, capped at 60 characters.
- **Six tag filters**, up from four (`MAX_ADVANCED_FILTERS`).
- **Persistent Overpass cache.** Responses now persist to a small
on-disk
  SQLite cache under the QGIS profile directory instead of an
in-session
  dictionary, so re-downloading the same region stays instant even
after
  restarting QGIS.
- **Mirror retry.** A transient failure (a dropped connection, a 5xx)
gets
  one retry against the same mirror, with a short pause, before the
request
  moves on to the next pinned mirror.

### Command

- **Typo tolerance.** A misspelled preset word (`buildngs`,
`helthcare`)
  now falls back to a bounded offline fuzzy match when no exact phrase
is
  found, weighted so a word owned by one preset outweighs one shared
by
  several.
- **Negation.** "download parking without charging" now extracts an
  exclude tag and routes the match to the Query tab, pre-filled with
both
  the matched tag(s) and the exclusion.
- **Same-theme combination.** A command naming two datasets from the
same
  group (e.g. "parks and water") now checks both, generalising the
existing
  Urban Context special case.
- **Command history.** The Command tab keeps a clickable list of the
last
  ten interpreted commands.

yes

geo140195philo

2026-08-19T13:10:29.023881+00:00

3.28.0

4.99.0

None

no

Version management

Plugin details