mbtileserver/CHANGELOG.md

216 lines
8.4 KiB
Markdown
Raw Normal View History

# Changelog
2023-10-24 18:53:17 +03:00
## 0.11.0 (in development)
- support returning missing image tiles as HTTP 404 instead of blank tiles using
the `--missing-image-tile-404` option (#177).
2023-10-24 18:53:17 +03:00
## 0.10.0
2023-03-11 04:52:13 +03:00
- supports GCC11 on Ubuntu 22.04 (#166)
- switch from Docker Hub to Github Container Registry (#168)
2023-03-11 04:52:13 +03:00
### Breaking changes
- now requires Go 1.18+.
- replaced Leaflet and Mapbox GL JS maps used in preview endpoint with MapLibre GL.
This change drops the interactive map controls present in the Leaflet preview
(opacity slider, basemap changer, zoombox) (#176).
- removed built-in basemaps used in the preview endpoint (#176). You can now
specify a basemap style using the `--basemap-style-url` option or basemap
image tiles using the `--basemap-tiles-url` option.
## 0.9.0
### Breaking changes
- now requires Go 1.17+.
### General changes
- upgraded Docker containers to Go 1.19
- upgraded Go version used for release to Go 1.19
### Command-line interface
- added support for specifying host IP address to listen on using the `--host`
option (#138).
2022-06-08 02:00:11 +03:00
- switched basemaps to [Stamen map tiles](http://maps.stamen.com/) (#148)
- added auto-detection of tile size and return blank tile of same size
(if available) for image tilesets when tile is not found (#155).
2022-02-17 23:33:38 +03:00
## 0.8.2
2022-01-25 20:08:13 +03:00
### Bug fixes
- fixed handling of `X-Forwarded-Host` header (#135)
- fixed incorrect closing of sqlite connections during initial validation
of tilesets (#136) in `mbtiles-go`
- handle missing `center` in `metadata` table in map preview for vector tiles (#137)
2022-01-25 20:08:13 +03:00
## 0.8.1
### Bug fixes
- fixed handling of moved / renamed files within watched directories when
using the `--enable-fs-watch` option.
2021-12-22 20:50:49 +03:00
## 0.8
### General changes
- display attribution in preview maps if present in tileset metadata.
2021-12-22 20:50:49 +03:00
- upgraded Docker containers to Go 1.17.
- upgraded Go version used for release to Go 1.17.
- switched to go:embed for embedding templates and static assets.
2021-12-14 22:04:41 +03:00
- dropped internal mbtiles package in favor of github.com/brendan-ward/mbtiles-go,
2021-12-22 20:50:49 +03:00
which wraps the SQlite-specific go package `crawshaw.io/sqlite` for better
performance.
### Command-line interface
2021-12-22 20:50:49 +03:00
- added support for watching filesystem for changes to tilesets using
`--enable-fs-watch` option.
### Breaking changes
2021-12-22 20:50:49 +03:00
- now requires Go 1.16+.
- removes ArcGIS API layer info at the service root and layers endpoint (#116);
this was not providing useful information for image tilesets.
- removed `handlers.Assets`; static assets are intended only for use in template
or static file handlers.
2021-12-22 20:50:49 +03:00
- removed support for UTF Grids.
### Bug Fixes
- fix handlers for ArcGIS API endpoints, resolving tile shift issue (#116).
- obviated incorrect include of node_modules in compiled asset file; executable
is now smaller and faster to build.
## O.7
### General changes
- substantial changes to internal functionality and HTTP handlers, see details below
- now requires Go 1.13+
- upgraded Docker containers to Go 1.16
- upgraded Go version used for release to Go 1.16
- removed `vendor` directory; no longer needed for Go 1.13
- switched from Travis-CI to Github actions for running tests
### Command-line interface
- added support for automatically generating unique tileset IDs using `--generate-ids` option
- added ability to toggle off non-tile endpoints:
- `--disable-preview`: disables the map preview, enabled by default.
- `--disable-svc-list`: disables the list of map services, enabled by default
- `--disable-tilejson`: disables the TileJSON endpoint for each tile service
- `--tiles-only`: shortcut that disables preview, service list, and TileJSON endpoints
- added ability to have multiple tile paths using a comma-delimited list of paths passed to `--dir` option
- moved static assets for map preview that were originally served on `/static`
endpoint to `/services/<tileset_id>/map/static` so that this endpoint is
disabled when preview is disabled via `--disable-preview`.
### Go API
- added `ServiceSetConfig` for configuration options for `ServiceSet` instances
- added `ServiceSet.AddTileset()`, `ServiceSet.UpdateTileset()`,
`ServiceSet.RemoveTileset()`, and `ServiceSet.HasTileset()` functions.
WARNING: these functions are not yet thread-safe.
### Breaking changes
#### Command-line interface:
- ArcGIS endpoints are now opt-in via `--enable-arcgis` option (disabled by default)
- `--path` option has been renamed to `--root-url` for clarity (env var is now `ROOT_URL`)
- `--enable-reload` has been renamed to `--enable-reload-signal`
#### Handlers API
- `ServiceSet.Handler` parameters have been replaced with `ServiceSetConfig`
passed to `handlers.New()` instead.
- removed `handlers.NewFromBaseDir()`, replaced with `handlers.New()` and calling
`ServiceSet.AddTileset()` for each `Tileset` to register.
- removed `ServiceSet.AddDBOnPath()`; this is replaced by calling
`ServiceSet.AddTileset()` for each `Tileset` to register.
### Bug fixes
- Fixed WebP parsing, now uses simplified check for a `RIFF` header (WebP is only likely RIFF format to be stored in tiles). #98, #110
### Details
This version involved a significant refactor of internal functionality and HTTP
handlers to provide better ability to modify services at runtime, provide
granular control over the endpoints that are exposed, and cleanup handling
of middleware.
Most internal HTTP handlers for `ServiceSet` and `Tileset` in the
`github.com/consbio/mbtileserver/handlers` package are now `http.HandlerFunc`s
instead of custom handlers that returned status codes or errors as in the previous
versions.
The internal routing within these handlers has been modified to enable
tilesets to change at runtime. Previously, we were using an `http.ServeMux`
for all routes, which breaks when the `Tileset` instances pointed to by those
routes have changed at runtime. Now, the top-level `ServiceSet.Handler()`
allows dynamic routing to any `Tileset` instances currently published. Each
`Tileset` is now responsible for routing to its subpaths (e.g., tile endpoint).
The singular public handler endpoint is still an `http.Handler` instance but
no longer takes any parameters. Those parameters are now handled using
configuration options instead.
`ServiceSet` now enables configuration to set the root URL, toggle which endpoints
are exposed and set the internal error logger. These are passed in using a
`ServiceSetConfig` struct when the service is constructed; these configuration
options are not modifiable at runtime.
`Tileset` instances are now created individually from a set of source `mbtiles`
files, instead of generated within `ServiceSet` from a directory. This provides
more granular control over assigning IDs to tilesets as well as creating,
updating, or deleting `Tileset` instances. You must generate unique IDs for
tilesets before adding to the `ServiceSet`; you can use
`handlers.SHA1ID(filename)` to generate a unique SHA1 ID of the service based on
its full filename path, or `handlers.RelativePathID(filename, tilePath)` to
generate the ID from its path and filename within the tile directory `tilePath`.
HMAC authorization has been refactored into middleware external to the Go API.
It now is instantiated as middleware in `main.go`; this provides better
separation of concerns between the server (`main.go`) and the Go API. The API
for interacting with HMAC authorization from the CLI or endpoints remains the
same.
Most of the updates are demonstrated in `main.go`.
## 0.6.1
- upgraded Docker containers to Go 1.14 (solves out of memory issues during builds on small containers)
## 0.6
- fixed bug in map preview when bounds are not defined for a tileset (#84)
- updated Leaflet to 1.6.0 and Mapbox GL to 0.32.0 (larger upgrades contingent on #65)
- fixed issues with `--tls` option (#89)
- added example proxy configuration for Caddy and NGINX (#91)
- fixed issues with map preview page using HTTP basemaps (#90)
- resolved template loading issues (#85)
### Breaking changes - handlers API:
- Removed `TemplatesFromAssets` as it was not used internally, and unlikely used externally
- Removed `secretKey` from `NewFromBaseDir` parameters; this is replaced by calling `SetRequestAuthKey` on a `ServiceSet`.
## 0.5.0
- Added Docker support (#74, #75)
- Fix case-sensitive mbtiles URLs (#77)
- Add support for graceful reloading (#69, #72, #73)
- Add support for environment args (#70)
- All changes prior to 6/1/2019