// changelog
Changelog
Meld is the orchestrator and UI. It drives a custom Arnis fork to generate each cell.
Meld (orchestrator)
v1.2
2026-06-18
current
Offline OSM, much faster cells, cleaner water
Offline, faster, cleaner. Bake a whole region's OSM once from local Geofabrik .pbf files and generate with zero Overpass calls, with the OSM cache keyed to a fixed map grid so overlapping selections reuse tiles. The biggest per cell cost was a supplementary building fetch that ran even with buildings off; it is now skipped for roads only builds (a measured cell dropped from about 29s to 4s) and caches to disk when buildings are on. Your drawn area is remembered per world across a restart, and the diagonal water and sand wedges are fixed.
Build offline
- OSM data packs. Drop Geofabrik .osm.pbf files in a folder and bake them once into the shared cache, so generation needs no Overpass. The OSM data pack card has Check coverage, Bake from .pbf, Scan folder and live progress; baked tiles share the same grid as the live fetch. Needs an optional osmium dependency.
- OSM cache that reuses. Map data is cached on a fixed web mercator grid keyed only by tile, independent of scale and selection, so a 90 percent overlapping selection downloads only the new edge and an identical re run downloads nothing.
- Empty tiles and retry. Sea and no data tiles are baked as valid empty tiles so coverage reads a true 100 percent, and rate limited fetches retry with backoff and cache instead of re fetching every run.
Faster cells
- Overture gate. The fork's supplementary Overture Maps building fetch, measured at about 93 percent of a cell's time, now runs only when buildings are enabled. A roads only cell dropped from 28.8s to 4.2s.
- Overture cache. With buildings on, the index and partition files cache to disk and download once instead of once per cell.
- No merge step. Each cell reads its own grid tiles straight from the shared cache (the fork takes a tile directory and computes the covering tiles from the bbox), so there is no per cell or per group OSM file to assemble before a build.
- Skip the terrain warm when elevation is already cached, removing minutes from every run on a complete pack.
Cleaner and remembered
- Water wedge fix. A water polygon that crosses a cell edge could leave an open outline that the bbox clip closed with a straight chord, flooding a triangle of water and a band of sand across correct land. A broken outline is now dropped instead of closed with a fake edge, so the wedge is gone and real water is preserved.
- Selection persistence. The drawn area, its polygon and the planned cells save into each project and redraw on a server restart, per world.
- Detail and reliability. Road detail clean and compact modes, a custom Overpass URL, sub world operations, and disk recovery of orphaned patches.
v1.1
2026-06-16
Bigger builds, region data packs, one shared cache
Go bigger, see more, waste nothing. The fork picked up an in process multi core engine and stream to disk, so a single cell can be huge. Map data now lives in one shared, visible folder reused by every world, and a per spawn cache walk that was quietly adding seconds to every cell is gone. Build a small area first to confirm your scale, elevation detail and save location before you commit a whole country.
Bigger builds
- In process multi core generation. A cell spanning three or more region tiles now builds its tiles in parallel inside one Arnis process, on top of Meld's existing cross process parallelism. Small cells keep the unchanged sequential path; big cells go wide.
- Stream to disk. Big cells evict finished regions to disk during generation instead of holding the whole world in RAM, so 8x8 and 16x16 cells complete without running out of memory.
- Cell sizes 1, 2, 4, 8 and 16 (powers of two, default 4; 8 and 16 marked as testing). The cap is raised from 6 to 16.
- Spiral generation order. Cells build center out in concentric rings instead of edge first.
See more
- Region data packs. Bulk download a whole region's elevation once into the shared cache, so generation runs offline and is never rate limited. The Data pack card has Check coverage, Download elevation, a re fetch this view button, a packs list, and Import folder (drop in a folder of tiles to use them with no download).
- Height preview. A grayscale or hillshade overlay of the cached elevation on the map, so you can see the terrain before you build. Red means a tile is not cached yet. Zoom out for a regional view or in for full detail, and click a tile for its height range, size and status.
- No data hole repair. The terrain source has real gaps that served all black tiles, showing up as dark bands in the preview and flat dips in game. Meld now rebuilds each hole by upsampling the deepest zoom that does have data, baked into the cache so both the preview and Arnis read real terrain.
- Selectable elevation detail. An Elevation detail dropdown picks the terrain zoom used for download and generation. Auto matches the zoom to your scale, so you get the right detail with no waste; a lower zoom is far fewer tiles, dodges the no data holes, and stays lossless against the roughly 30 m source.
- Left status rail. A second thin panel mirrors the right: a live System card (CPU, RAM, save disk free with a low disk warning), the Build estimate, Workers, and the Log. A Cache card shows where the shared cache lives plus per type size with Clear buttons.
- No buildings mode. A Buildings toggle in the Meld settings and the Arnis GUI for a roads and land cover only world; building footprints are emptied so land cover fills in cleanly with no building shaped holes.
Waste nothing
- One shared cache. OSM, terrain and land cover caches now live under one folder in the Meld project (override with
MELD_CACHE_DIR), reused by every world instead of being hidden in AppData and re downloaded per project.
- Paint tool. In Edit mode, click and drag across the map to add or remove cells; the whole drag persists in one atomic write.
- Select to retry. Drag to mark a clump of cells with a distinct blue dashed ring, then re run them with one button.
- CPU controls. A CPU budget slider, a threads per task floor, a stagger toggle and step, and adaptive pacing that spaces worker starts from the measured average cell time so cores stay busy without all 16 launching at once.
- Failed cells say why (out of memory, disk full, rate limit, network timeout, or crash), and a cell that fails for a transient reason is auto retried up to twice; deterministic failures are not.
Fixes
- Floating vegetation over water and roads on big and streamed exports; the cleanup now runs per tile instead of post merge after regions were already evicted.
- Duplicate banners, signs and chests on the parallel path are now deduped by coordinate on the Java write path.
- A worker thread crash on the parallel path from the fork's wider block IDs meeting an undersized palette array.
- Cross tile seams and water artifacts settled by the 2.9.0 engine bump; editing the plan during a run no longer desyncs the worker pool (cell and plan edit routes refuse while a run or prefetch is active).
v1.0
2026-06-13
First release
Pipeline
- OSM Leaflet selection, then a region aligned cell grid, then parallel Arnis workers, then a canonical region merge.
- Global elevation lock plus a tile invariant seed for seamless adjacent cells.
- Origin anchored coordinate convention shared by the orchestrator, merge, JS and the fork, plus a merge time drift guard.
- Shared OSM prefetch. Meld downloads the selection's OpenStreetMap data once (one request, split into quarters only if the endpoint rejects it), caches it, and feeds every cell via
--file, so parallel runs never hit the Overpass per IP rate limit. A cyan dashed overlay shows the download footprint.
Workers and performance
- Worker pool, default 4 and cell size 4 (the safe sweet spot), up to 16, with a warning above 8 since the save phase is disk and RAM bound, not CPU bound. Worker count can be changed live during a run.
- Recommend reads your CPU, RAM and disk speed and suggests the best cell size and worker count.
- LOD ready. Chunk lighting is baked by default, so distant chunks render lit in Distant Horizons and Voxy without flying the whole world first.
Experience
- One detailed panel, auto center origin on selection, live mouse coordinates, themed in app dialogs (no browser popups).
- Estimated size, a live elapsed timer, a live per worker panel, and a finished run stats popup (actual time, on disk size, region file count).
- Resume unfinished, and Generate skips already merged cells (crash and overnight safe). Click a cell to regenerate it.
- New world keeps the finished world, then resets for the next (
Meld World 2, and so on) in the same saves folder, with a gold world title in Minecraft's world list.
- Editable Arnis settings (terrain, roofs, interiors, land cover, fill ground, height limit, bake lighting) in the panel, plus a 3D models toggle.
- Cell size from 1 to 16 (default 4), remembered across refreshes and new worlds.
The generator Meld runs for each cell. These are the changes that make adjacent cells line up.
v2.9.1
2026-06-18
latest
Direct tile reads, water wedge fix
A maintenance release on top of 2.9.0. A cell can read its own slice of a shared OSM tile cache directly, with no per cell merge step, and a water rendering artifact that could flood a triangle of a cell is fixed.
- Read OSM from a tile directory. A new option points Arnis at a directory of grid tiles; it computes the tiles overlapping the bbox, loads each and de duplicates them, so a Meld orchestrator fills the directory once and hands the same directory to every cell with zero assembly.
- Water wedge fix. A water multipolygon with member ways missing for a cell left its outline open; the bbox clip then closed it with a straight chord and flooded a triangle. The clip now drops a broken outline instead of closing it with a fake edge, so the wedge is gone and proper water is kept. Verified on real data, with a wedge cell dropping from 135,600 to 4,555 water blocks and a clean river cell byte identical.
- Overture gated and cached. The supplementary building fetch runs only when buildings are on, and its index and byte ranges cache to disk, so a roads only cell no longer downloads building data it will not use.
v2.9.0
2026-06-16
Upstream 2.9.0 engine, seam preserved
Pulls the fork up to the upstream 2.9.0 line (53 merged commits, in process tile parallelization, stream to disk region eviction, the mimalloc allocator) while keeping the cross tile seam intact. Two independently generated overlapping cells agree block for block (0 of 1024 boundary chunks differ).
- Merged 53 upstream louis-e/arnis commits. In process tile parallelization, stream to disk region eviction, the mimalloc allocator, the large area warning and the GUI ETA, with the master origin tile invariant seam preserved through the merge.
--no-buildings (alias --no-structures) drops all OSM buildings plus building adjacent features while keeping roads, rail, water, land cover and terrain, for a roads and ground only base layer.
ARNIS_ELEV_ZOOM caps the terrain tile zoom for the whole run, so elevation stays lighter and hole free; a coarser zoom such as z13 still carries the full roughly 30 m signal while sidestepping the no data holes and downloading far fewer tiles.
--download-terrain-only warms the AWS terrain cache for a bbox in one pass, and --offline (alias --elevation-cache-only) serves cache hits but errors on a miss instead of re downloading, so a batch run never quietly hammers the source.
- Parallel safe terrain fetch. Under Meld's roughly 64 concurrent fetches, cells were getting rate limited and truncated tiles that became flat seams. Fetch now uses 6 retries with backoff, deterministic per tile jitter, atomic cache writes and retry missing rounds, killing the staircase seam at the build center.
- Fixed an i32 corner sum overflow crash on far from origin master coordinates, plus the cross tile coordinate drift under master origin (longitude now anchored at the origin latitude so it maps to one block X project wide). Plain single world generation is byte identical.
v2.8.6
2026-06-13
Download only fetch
Lets an external scheduler pre-fetch a region's OSM once and feed it to many cells, instead of every cell querying Overpass.
--download-only. Fetches the OSM data to --save-json-file and exits before any world generation. Meld uses it to download the whole selection once, then passes --file to every cell, so parallel runs make zero Overpass calls and never trip the per IP rate limit. Purely additive, behaviour is unchanged when the flag is omitted.
v2.8.5
2026-06-11
Seamless multi tile rendering
Makes adjacent tiles agree at their shared borders, so the merge is visually seamless (~97% of rendered surface). All gated to --seed; single world output is byte identical.
- Trees, parks & vegetation meld. Scatter areas (forest, wood, tree_row, leisure, landuse) now decide each tile with a position seeded RNG instead of a shared stream consumed in flood fill order, so the scatter no longer relocates on one side of a seam. Scatter ways and relation members render unclipped (cap guarded) so both tiles flood fill an identical interior.
- Buildings. Multipolygon (relation) buildings no longer split at a tile border; buildings whose footprint is mostly water are skipped.
- Terrain. Elevation and land cover grids are sized with the world's origin anchored metric (no ~0.1% drift off OSM); robust parallel AWS fetch (more retries, retry missing tiles, atomic cache writes); the global outlier filter is skipped in tile mode (it caused a coastal border step).
- Biome. Cell local biome lookup plus a globally continuous chunk latitude removes the grass and leaf colour seam.
v2.8.4
2026-06-09
Coordinate seam fix
- Fixed cross tile coordinate drift under
--master-origin-lat/lng. The longitude to block X factor was computed from avg_lat = (point + origin)/2, so one longitude mapped to different block X by latitude, shearing each tile off the region grid and leaving unrendered grass strips at seams. Now anchored at origin_lat, so tiles align exactly on region boundaries. Adds a latitude invariance regression test.
v2.8.3
2026-06-02
Meld water update
- Comprehensive underwater, shore and wetland rewrite: vanilla MC ocean floor (mostly GRAVEL, rare CLAY, SAND, DIRT patches), rare MAGMA and SOUL_SAND vents, domain warped organic shapes.
- Prominent dunes, sand to grass shore fade, wetland MOSS rings, tiered cattail with state stacked candles.
--seed (alias of --tile-invariant-rendering) drives the global noise seed, so beds, dunes and shores are reproducible.
- A sweep pass removes vegetation left floating over water and roads.
v2.8.1
earlier
- Tile invariant building rendering: pre clip bounds plus seeded salted RNG, so a building straddling two tiles renders identically in both.
- Global elevation min and max flags for cross tile Y normalisation,
--master-origin global coordinates, --road-detail clean and compact modes, and --overpass-url override.
The Arnis fork tracks louis-e/arnis, merged up to the v2.9.0 line.