Repository navigation
v0.13.0
Breaking Changes
pkg/ has been minimized. Only entity interfaces, Deps structs, registrations and the types they reference remain public. Construction, wrappers and utility code moved to internal/. This only affects using tilegroxy as a library. See the extensibility docs and the new examples/extension project for the supported way to add custom entities.
SIGHUP now reloads the configuration instead of shutting down. Anything that relied on SIGHUP to stop the process should send SIGTERM or SIGINT instead.
Highlights
PMTiles provider. Serve tiles directly from a PMTiles archive.
MapLibre Tiles (MLT). Vector tile support now includes MLT alongside MVT, with new compositemlt and cropmlt providers. The decoder has protections against malicious or malformed tiles.
Bearer token authentication. A new bearer authentication validates API tokens looked up in a PostgreSQL or Redis datastore. It can attach a user ID and tenant ID, and lookups can optionally be cached in memory.
Passthrough authentication. A new passthrough authentication forwards the incoming credentials (header, cookie or query parameter) to an existing HTTP endpoint, so you can reuse auth your ecosystem already has.
Reload on SIGHUP. Send SIGHUP to reload the configuration without a restart.
Tilejson-compatible metadata from providers. Layers can pull metadata up from the provider tree (for example from PMTiles or crop).
Documentation overhaul. New homepage and template, quickstart, concepts, compatibility and layer pattern pages, a multi-tenant how-to, a set of example configurations (YAML and JSON), comparison tables for caches, auths and extensibility options, and a 1.0 deprecation and compatibility policy.
What's Changed
Features
- Add a
pmtilesprovider for serving tiles from a PMTiles archive by @Michad in #1037 - Allow tilejson-compatible metadata to be pulled up from providers by @Michad in #1037
- Add MLT support, including
compositemltandcropmltproviders by @Michad in #1079 - Add protections against dangerous tiles in the MLT decoder by @Michad in #1079
- Add
bearerauthentication backed by a datastore lookup by @Michad in #1105 - Add
passthroughauthentication by @Michad in #1106 - Make error handling with passthrough user and tenant IDs more consistent by @Michad in #1106
- Support reloading configuration on SIGHUP by @Michad in #1040
- Support conventional chmod-style numerals for the disk cache
filemodeby @Michad in #1089 - Add warning logs for deprecated configuration by @Michad in #1052
- Minimize the public
pkgAPI by @Michad in #1056 - Add an example extension project covering every entity kind by @Michad in #1056
Fixes
- Anchor
paramvalidatorregular expressions correctly so patterns with|work by @Michad in #1110 - Explicitly set the default blend mode so it defaults as documented by @Michad in #1111
- Avoid connection errors leaking URLs into user-facing errors and logs by @Michad in #1103
- Fail
transformtiles when the script panics instead of returning and caching a partially transformed tile by @Michad in #1057 - Add missing validation checks to
config checkso it no longer reports valid for configs thatserverejects by @Michad in #1086 - Improve error handling in the
testcommand, which crashed on a provider or cache panic or a nil image by @Michad in #1083 - Improve error handling in
config createinstead of panicking on ordinary I/O errors by @Michad in #1082 - Fix a config parsing ordering bug by @Michad in #1056
- Remove an artificial restriction on tile type for
pmtilesby @Michad in #1037
Internal
- Avoid detecting cache capabilities by internal struct field names and use interface membership instead by @Michad in #1092
- Add an owning type for reloads so they are serialized and the callback is synchronized by @Michad in #1091
- Align constructor naming and error conventions across entity kinds by @Michad in #1090
- Consolidate reload and health lifecycle state into owning types by @Michad in #1087
- Use a shared auth cache by @Michad in #1106
- Fix gosec findings and clean up comments by @Michad in #1093 and #1094
- Fix a few sources of false alerts in tests by @Michad in #1081
- Add a CI check that
README.adocis up to date withREADME_source.adocby @Michad in #1088 - Dedupe vulncheck findings and filter empty stacks from SARIF results by @Michad in #1107
- Remove
go.modandgo.sumfrom the extension example so dependabot doesn't conflict by @Michad in #1104
Documentation
- Add a 1.0 deprecation and compatibility policy by @Michad in #1052
- Clean up future-facing language by @Michad in #1051
- Add a homepage, quickstart, concepts, compatibility and layer pattern pages by @Michad in #1102, #1108 and #1112
- Add example configurations in YAML and JSON, and a multi-tenant how-to by @Michad in #1102
- Add comparison tables for caches, authentications and extensibility options by @Michad in #1112
- Update to the new docs template and Antora UI bundle by @Michad in #1112
Dependencies
- security(go): bump github.com/jackc/pgx/v5 from 5.10.0 to 5.11.0 by @dependabot[bot] in #1072
- security(go): bump github.com/aws/aws-sdk-go-v2 from 1.47.0 to 1.47.1 by @dependabot[bot] in #1071
- security(go): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.113.1 to 1.114.0 by @dependabot[bot] in #1077 and #1101
- security(go): bump github.com/aws/aws-sdk-go-v2/feature/s3/transfermanager from 0.4.7 to 0.4.13 by @dependabot[bot] in #1078 and #1098
- security(go): bump github.com/aws/aws-sdk-go-v2/service/secretsmanager from 1.44.7 to 1.50.1 by @dependabot[bot] in #1099
- security(go): bump go.etcd.io/etcd/client/v3 from 3.7.1 to 3.7.2 by @dependabot[bot] in #1100
- security(actions): bump github/codeql-action (init, autobuild, analyze, upload-sarif) to 4.38.2 by @dependabot[bot] in #1084
- security(actions): bump reviewdog/action-suggester from 1.26.0 to 1.26.1 by @dependabot[bot] in #1033
- security(actions): bump reviewdog/action-golangci-lint from 2.10.0 to 2.10.2 by @dependabot[bot] in #1097
- security(docker): bump alpine from
3cf95feto294b683by @dependabot[bot] in #1031 - security(docker): bump node from
996a99ctoc3c6e31by @dependabot[bot] in #1032 and #1069 - build(deps-dev): bump handlebars from 4.7.9 to 4.7.10 by @dependabot[bot] in #1109
Full Changelog: v0.12.0...v0.13.0