- feat: Web Mercator axis-aligned cutline support by @kylebarron in #424
- feat(geotiff): New internal method to fetch multiple tiles concurrently, with range coalescing by @kylebarron in #530
- feat(geotiff): route fetchTiles through batched, range-coalescing getTiles by @kylebarron in #531
- chore!: Rename TilesetDescriptor to RasterTilesetDescriptor by @kylebarron in #547
- refactor!: Make MosaicTileset2D private by @kylebarron in #550
- Ensure you're only using the top-level
MosaicLayer, not the previously-exportedMosaicTileset2D. Also ensure you import theMinimalTileDatatype from thedeck.gl-rasterpackage, not fromdeck.gl-geotiff.
- Ensure you're only using the top-level
- feat: Vermont open data example by @kylebarron in #502
- feat: Update land-cover example to have filterable categories by @kylebarron in #506
- feat: Use
devicePixelRatiofor level of detail computation in tile traversal by @kylebarron in #513 - feat(geotiff): thread AbortSignal through GeoTIFF open/fromUrl by @kylebarron in #515
- feat: Spiral out loading by @kylebarron in #477
- feat(mosaic)!: add explicit
key?: stringto mosaic sources by @kylebarron in #533 - feat: Expose onTile callbacks through raster tile layers by @kylebarron in #546
- fix!: Default to linear sampling for non-paletted COGs by @kylebarron in #514
- fix(examples): correct NDVI range filter in naip-mosaic by @kylebarron in #522
- fix(mosaic-layer): make sources prop reactive to updates by @kylebarron in #511
- fix(geotiff): Turn off HTTP request bounds checking by @kylebarron in #527
- fix:
PlanarConfigurationTIFF tag is not required by @kylebarron in #542
- perf(geotiff)!: block-aligned LRU header cache; lazy tile metadata by @kylebarron in #529
- fix(raster-tileset): memoize tile bounding volumes across traversals by @kylebarron in #525
- perf(raster-tileset): Reduce re-renders of RasterLayer for same per-tile transforms by @kylebarron in #543
- perf(raster-layer): avoid re-compiling shader Model as much as possible by @kylebarron in #540
- refactor: make
MultiCOGLayerextendRasterTileLayerby @kylebarron in #499 - feat(examples): shared component package + migrate cog-basic & sentinel-2 by @kylebarron in #520
- feat(examples): migrate remaining examples to the shared component package by @kylebarron in #521
Full Changelog: https://github.com/developmentseed/deck.gl-raster/compare/v0.6.1...v0.7.0
feat: Allow renderTile prop in RasterTileLayer to return null
- Zarr support:
- feat: Create
@developmentseed/geozarrpackage and define zod schema by @kylebarron in #395 - feat: Create zarr-tileset as implementation of generic tile traversal by @kylebarron in #397
- feat: Initial, most basic GeoZarr example by @kylebarron in #399
- feat: Zarr temporal animation by @kylebarron in #445
- feat: Zarr AEF example by @kylebarron in #467
- feat: Create
- feat: Sprite-based colormap by @kylebarron in #447
- refactor: Create
RasterTileLayerabstraction indeck.gl-rasterpackage by @kylebarron in #462 - feat: Split COG tile traversal off TileMatrixSet by @kylebarron in #480
- fix: Define texture2darray precision in colormap module by @kylebarron in #459
- fix: Handle EPSG:4326 projection with missing
unitsby @kylebarron in #473 - fix: Allow
MinimalTileDatato benullin RasterTileLayer by @kylebarron in #484
- perf: Cull root tiles in raster-tileset to viewport by @kylebarron in #464
- perf: use source.coop proxy for dynamical Zarr example by @alukach in #471
- perf: Don't dynamic-import builtin deflate decoder by @kylebarron in #483
- docs: Expose Zarr package through docs site by @kylebarron in #486
- docs: inject Plausible analytics into example sites via CI by @aboydnw in #478
- feat: Brainstorming for COG GCPs support by @kylebarron in #485
- chore: Fix
cleanscript, fix lockfile by @kylebarron in #481 - chore: Remove usage of deprecated deck.gl enum by @kylebarron in #474
Full Changelog: https://github.com/developmentseed/deck.gl-raster/compare/v0.5.0...v0.6.0
- refactor!: Generalize tile traversal interface by @kylebarron in #391 and refactor(deck.gl-raster)!: Finish generalizing tile traversal by @kylebarron in #394
- This is only a breaking change if you were using the low-level tile traversal primitives exported by
@developmentseed/deck.gl-raster. There were no breaking changes to theCOGLayer.
- This is only a breaking change if you were using the low-level tile traversal primitives exported by
- New
MultiCOGLayer:- feat: Initial work for
MultiCOGLayer: cross-resolution tileset for sentinel/landsat by @kylebarron in #408 - feat: Debug view for MultiCOGLayer by @kylebarron in #410
- fix: Fix edge tile rendering in MultiCOGLayer by @kylebarron in #411
- fix: Define
byteLengthon MultiCOG internal tile data by @kylebarron in #413 - fix: Ensure we reset state when changing sources in MultiCOGLayer by @kylebarron in #414
- fix: Filter out nodata pixels in Sentinel-2 example by @kylebarron in #415
- feat: Initial work for
- feat: Pass any
TextureSourcetoMeshTextureLayerby @kylebarron in #369 - feat(geotiff): Support multi-tile fetching by @kylebarron in #406
- fix: Turn off lighting/
materialby default by @kylebarron in #423 - fix: Remove alignment workarounds, bump to deck/luma 9.3 by @kylebarron in #419
- fix: Move
lercto non-dev dependencies by @kylebarron in #367 - fix: Fix black flash when panning by @kylebarron in #377
- perf: Avoid unnecessary mesh recomputation by @kylebarron in #370
- perf: Cache the result of bounding volume computation per RasterTileNode by @kylebarron in #371
- feat: Print tile xyz index in COG Layer debug mode by @kylebarron in #378
- ci: pin GitHub Actions to SHA digests (fix zizmor unpinned-uses) by @lhoupert in #390
- refactor: move projection utils from
deck.gl-geotifftoprojpackage by @kylebarron in #398 - fix: Use
MapboxOverlayPropsinstead ofDeckPropsin example to fix type check by @kylebarron in #400 - chore: deduplicate tsconfigs in examples folder by @kylebarron in #426
- ci: Ensure we typecheck examples by @kylebarron in #427
- ci: Apply typechecking to source packages on CI by @kylebarron in #430
- ci: deploy docs only on release tags by @kylebarron in #433
- feat: Clean up sentinel-2 example by @kylebarron in #437
- docs: Add link from example cards to code source by @kylebarron in #439
- docs: Update screenshots in docs by @kylebarron in #440
- docs: Update examples to link back to docs website by @kylebarron in #441
- @lhoupert made their first contribution in #390
Full Changelog: https://github.com/developmentseed/deck.gl-raster/compare/v0.4.0...v0.5.0
- feat: expose maxRequests on COGLayer by @maxrjones in #333
- fix: Bump proj4 to fix web mercator projection by @kylebarron in #346
- fix: fix setting default values for inherited props from TileLayer by @kylebarron in #347
- fix: Render mesh from Web Mercator coordinates by @kylebarron in #349
- fix: Clamp to Web Mercator latitude bounds by @kylebarron in #182
- feat: create new
@developmentseed/projsubpackage by @kylebarron in #356 - fix: Support TileLayer refinement strategies by @kylebarron in #354
- feat: add ndvi filter slider to NAIP-mosaic example by @kylebarron in #357
Full Changelog: https://github.com/developmentseed/deck.gl-raster/compare/v0.3.0...v0.4.0
- fix: Fix shader caching by @kylebarron in #221
- feat: Create new
geotiffsubpackage, abstracting over@cogeotiff/coreby @kylebarron in #223 - feat(affine): Create new
affinestandalone package as port of Pythonaffineby @kylebarron in #224 - feat: Initial GeoTIFF dynamic decoder API by @kylebarron in #226
- feat(geotiff): Overhaul
GeoTIFFandOverviewclasses by @kylebarron in #225 - chore: Use
@chunkd/source-filein tests for loading tiffs by @kylebarron in #227 - feat(geotiff): Support decoding JPEG and WebP-compressed COGs by @kylebarron in #229
- feat(geotiff): High-level CRS handling from GeoTIFF GeoKeys by @kylebarron in #236
- feat: Create
morecantilesubpackage by @kylebarron in #238 - feat(geotiff): generate TileMatrixSet from
GeoTIFFinstance by @kylebarron in #235 - feat: Overhaul to use our
geotiffpackage & generic TileMatrixSet support by @kylebarron in #208 - feat: Add AbortSignal support to
GeoTIFF.fetchTileby @kylebarron in #243 - chore: Update code for new upstream
SamplesPerPixeltyping by @kylebarron in #245 - test(geotiff): Add integration tests against geotiff.js by @kylebarron in #246
- feat(geotiff): LZW and Predictor support by @kylebarron in #247
- fix: Fix rendering of YCbCr-encoded JPEG images by @kylebarron in #249
- feat(geotiff): Support non-boundless reads by @kylebarron in #250
- feat(geotiff): Add tileCount property to GeoTIFF and Overview by @kylebarron in #254
- feat(geotiff): User-specified prefetch size by @kylebarron in #256
- fix: Fix declared luma.gl dependency by @kylebarron in #265
- fix: Fix
TileMatrixSetTilesetprojected bounds computation for each tile by @kylebarron in #274 - feat: Add mesh max error slider to NLCD example by @kylebarron in #271
- feat: add zstd via fzstd by @gadomski in #263
- feat: Offset transform by half pixel for pixel-is-point raster type by @kylebarron in #286
- feat: New
@developmentseed/epsgpackage for shipping compressed EPSG code bundle by @kylebarron in #262 - fix: Ensure 4-byte alignment on texture buffers by @kylebarron in #289
- chore: Update import of TiffImageTileCount by @kylebarron in #291
- fix: Update naip-mosaic example to use our
geotiffpackage by @kylebarron in #293 - fix: Turn off TIFF chunking for now by @kylebarron in #295
- feat: Decoder pool by @kylebarron in #277
- docs: Rewording of readme by @kylebarron in #296
- feat: Support reading band-interleaved COGs by @kylebarron in #297
- feat(geotiff): Separate source for header fetches and data fetches by @kylebarron in #299
- refactor: Cleaner type defs for DecodedPixels and RasterArray by @kylebarron in #306
- fix: Avoid unnecessarily calling
inferDefaultPipelineby @kylebarron in #307 - fix: Force loading gdal tags (nodata and metadata) by @kylebarron in #308
- test(geotiff): Set up integration tests against rasterio by @kylebarron in #311
- feat: Handle GeoTIFF transparency masks by @kylebarron in #309
- feat: Support lerc+deflate and lerc+zstd by @kylebarron in #314
- feat: Parse GDAL_Metadata TIFF tag, including stored statistics and offsets/scales by @kylebarron in #316
- feat: Support grayscale photometric interpretation by @kylebarron in #179
- fix: Fix adding alpha channel to uint16 image by @kylebarron in #318
- feat: Update
cog-basicexample app with drop-down image selector by @kylebarron in #323 - fix: Fix passing general layer props down to RasterLayer by @kylebarron in #329
- docs: Initial creation of docusaurus-based documentation website by @kylebarron in #304
- ci: Fix docs publish; fetch submodules by @kylebarron in #331
- docs: Initialize blog on website by @kylebarron in #332
- docs: API docs review by @kylebarron in #335
- ci: Fix building examples as part of docs website generation by @kylebarron in #336
- docs: Add example nav pane in top bar by @kylebarron in #337
- docs: Switch to DS logos and add simple static search index by @kylebarron in #338
- docs: Update hero image with USGS unsplash photo by @kylebarron in #339
- docs: Use smaller hero image for slightly smaller download size by @kylebarron in #340
Full Changelog: https://github.com/developmentseed/deck.gl-raster/compare/v0.2.0...v0.3.0
0.3.0-beta.2 (2026-02-19)
- feat: Add AbortSignal support to GeoTIFF.fetchTile (9d133b8)
0.3.0-beta.1 (2026-02-18)
- affine: Create new affine standalone package as port of Python affine (ce7b73d)
- Create
morecantilesubpackage (#238) (20b3ace) - Create new
geotiffsubpackage, abstracting over@cogeotiff/core(#223) (4fa5230) - geotiff: generate TileMatrixSet from
GeoTIFFinstance (#235) (cb1106e) - geotiff: High-level CRS handling from GeoTIFF GeoKeys (#236) (559dc03)
- geotiff: Overhaul
GeoTIFFandOverviewclasses (#225) (857a8c2) - geotiff: Support decoding JPEG and WebP-compressed COGs (#229) (3dc6281)
- Initial GeoTIFF dynamic decoder API (#226) (5d611f3)
- Overhaul to use our
geotiffpackage & generic TileMatrixSet support (#208) (860a701), closes #216
0.2.0 (2026-01-26)
Initial release to NPM.