# Changelog

All notable changes to the ArxSilex MapTools Converter are documented in this file.

## [Unreleased]

## [1.5.2] - 2026-09-01

### Fixed

- Resizing a circle from one of its bounding-box handles now scales relative to the initial pointer
  distance, so the radius no longer jumps to the longer corner-to-center distance when dragging starts.

## [1.5.1] - 2026-09-01

### Added

- Select the number and size of parallel elevation export buffers from the available processors,
  physical memory and JVM heap headroom, while retaining a low-memory path for 4 GiB systems.

### Changed

- GeoTIFF elevation output is generated in independent strips on up to 16 CPU workers and written
  through bounded multi-megabyte buffers at deterministic file offsets.
- Elevation sources are resolved through a geographic degree index, and each output row evaluates
  only the longitude intervals covered by the selected rectangles and circles.

### Fixed

- Large multi-HGT GeoTIFF exports no longer scan every source and selection for every raster cell or
  write each Float32 sample as four separate single-byte file operations.

## [1.5.0] - 2026-09-01

### Added

- Import, preview, search and spatially clip any number of Mapsforge POI databases, either alone,
  alongside map and elevation sources, or as multiple entries from ZIP archives.
- Merge all selected POI databases into one v3 or v4 output while remapping source-local POI and
  category IDs and unifying category trees by their complete hierarchy.

### Changed

- POI-only and map-plus-POI workflows now use every loaded POI source instead of limiting the job
  to one companion database.
- Mixed POI v3/v4 inputs are normalized to the selected target schema before the final database,
  spatial index and optional full-text index are rebuilt.

### Fixed

- Exact duplicate POIs at overlapping country or regional boundaries are emitted only once without
  removing distinct nearby POIs.

## [1.4.0] - 2026-09-01

### Added

- Import ZIP containers that hold any mixture of supported map, POI and elevation files, with an
  entry-selection dialog before extraction.
- Extracted archive entries use the existing source inspection, map preview, area selection and
  export workflow exactly like directly selected files.

### Changed

- The source page now offers separate controls for direct files and ZIP containers and explains
  that supported formats may be mixed inside one archive.

### Security

- ZIP imports validate every path, entry count, declared and actual sizes, compression ratio,
  available disk space and CRC before accepting an extracted file.
- Archive extraction is restricted to session-local storage with unique destinations and bounded
  streaming; path traversal, absolute paths, non-portable names, encrypted archives and nested ZIP
  recursion are rejected or deliberately not opened.

## [1.3.1] - 2026-09-01

### Fixed

- Include the Java naming runtime module required by Apache SIS so GeoTIFF elevation files can be inspected and imported in packaged Windows and Linux builds.

## [1.3.0] - 2026-09-01

### Added

- Elevation-only imports now render an offline hypsometric preview with shaded relief, transparent
  NoData cells and a metric or imperial elevation legend for geographic area selection.
- Combined map and elevation imports show the terrain below roads, labels and POIs without changing
  the coordinates or resolution used by the final export.

## [1.2.0] - 2026-09-01

### Added

- Import and geographic inspection of SRTM HGT, georeferenced DEM GeoTIFF, ESRI ASCII Grid and
  DTED elevation sources, either independently or alongside map and POI sources.
- Independent elevation export to GeoTIFF, ESRI ASCII Grid, SRTM HGT tiles or DTED cells, with
  rectangle and circle selections applied as one overlap-free raster union.

### Changed

- The source, content and export steps now expose only the map, POI and elevation outputs supported
  by the currently loaded source combination.
- Elevation conversion runs in the isolated worker and reports cancellable, monotonic progress.
- GeoTIFF elevation output is streamed in bounded strips and carries explicit WGS84 and NoData
  metadata for direct MapTools compatibility.

### Fixed

- Tiled elevation outputs are validated and cleaned up as complete directories after failure or
  cancellation instead of being treated as single files.
- DTED readers and writers use the standard 3428-byte UHL/DSI/ACC prefix; exported GeoTIFF NoData
  cells remain empty when reopened by the converter or MapTools.
- Linux release builds start from the exact validated `Linux/build` directory instead of reusing
  stale cross-environment Kotlin output on DrvFS.

## [1.1.0] - 2026-08-31

### Added

- Export progress now represents the complete job across source preparation, map generation, POI
  generation and validation, including elapsed time and an approximate remaining time.
- Systems with at least four processors, 16 GiB total memory and 10 GiB currently available memory
  can generate map and POI outputs in parallel workers.

### Changed

- Mapsforge source conversion reports known node, way and relation totals while writing the
  intermediate PBF. Each worker retains the 4 GiB heap limit; lower-memory systems continue to use
  the sequential export path.

### Fixed

- Percentages emitted for individual Mapsforge zoom intervals are no longer shown as the percentage
  of the entire export or allowed to move the progress bar backwards.
- The source archive excludes nested Gradle and Kotlin build caches.

## [1.0.4] - 2026-08-31

### Changed

- Rectangle and circle selections use transparent dark-petrol fills. The active area has a stronger
  fill and gold outline, while inactive areas retain a subtler petrol outline for clear distinction.

## [1.0.3] - 2026-08-31

### Fixed

- Content and export pages keep their workflow navigation in a fixed footer while only the page
  content scrolls, so Back and Continue remain visible at the default and smaller window heights.
- The source archive excludes local validation caches.

## [1.0.2] - 2026-08-31

### Changed

- Progress output for large Mapsforge source materialization is rate-limited and reports the active
  scanning or writing phase without flooding the export log.

### Fixed

- Large Mapsforge `.map` sources are materialized tile by tile with disk-backed duplicate tracking,
  preventing Java heap exhaustion while retaining the 4 GiB worker limit.
- Mapsforge sources that were already filtered to the selected rectangles and circles are no longer
  cropped a second time before multi-source merging.

## [1.0.1] - 2026-08-28

### Fixed

- Content and export pages now show a vertical scrollbar when the available window height is too small,
  keeping the lower workflow buttons accessible.
- Worker-launcher generation no longer participates in the build cache, preventing restored launcher
  outputs from clearing an already generated application image and bundled runtime.
- Mapsforge exports from materialized `.map` sources use the tile-based writer and no longer exceed
  the 4 GiB worker heap for large, highly compressed selections.
- A Mapsforge in-memory export that exhausts the heap is retried once in a fresh worker with the HD
  processor; eligible direct PBF inputs retain the safe in-memory fallback for the known HD-store error.
- Temporary Mapsforge HD indexes are assigned to the portable session directory when the isolated
  worker starts and are not left in the Windows user profile after it exits.

## [1.0.0] - 2026-08-28

### Added

- First public version of the ArxSilex MapTools Converter.
- Import of OpenStreetMap PBF, Mapsforge map and Mapsforge POI files.
- Combined map and POI processing, including POI-only workflows.
- Interactive selection of multiple rectangular and circular areas with overlap-free totals.
- Place and POI search with temporary map markers.
- Export to Mapsforge map v4 or v5 and POI v3 or v4.
- Portable Windows x64 and Linux x64 applications with a localized interface, metric and imperial units, and offline processing.
