Fields and other reply data the client was silently dropping, and the commands, output formats, options and search areas it did not speak yet. Every addition was verified against the tile38/tile38:edge digest pinned in .version.
Breaking changes
Permitted pre-1.0, and deliberate. Most code keeps compiling:
SearchObject.Fieldsis now the named typeFields(stillmap[string]stringunderneath), shared withNearbyResult.FieldsandFenceEvent.Fields. It stays assignable in both directions, so passing it to amap[string]stringparameter still works — butreflect.DeepEqualagainst a plain map now returns false, and a type switch or assertion on it breaks.NearbyResultgainedZandFields, andFenceEventgainedMeta,FieldsandDistance. Unkeyed struct literals of either type no longer compile; keyed literals are unaffected.
Fixes
- Object fields are decoded on
Points(),PointsWithDistance()and geofence events.Objects()already did; the other paths read past the fields array the server sends, so every field a caller asked for was discarded. - The z ordinate is kept on
POINTSoutput andGET … POINT. Tile38 appends it only when non-zero, so both coordinate lengths arrive in one reply. Nearby()on a hook or channel could not emit a command the server accepts:NEARBYreadsPOINT lat lon metersand rejectsCIRCLE, and onlyBounds/Circle/Object/Getwere exposed. Both now takePoint+Radius.HOOKS/CHANSkeep theMETAdescriptor, which a listing needs to tell two hooks on the same key apart.
Added
- Reading fields in one round trip:
Get(...).WithFields()plusFields(), on every output format. - Output formats:
Rects(BOUNDS),Hashes,A5Cellson all four search verbs. - Options:
Buffer,Asc/Desc,WhereEval/WhereEvalSha, andDistanceon fences, surfaced asFenceEvent.Distance. - Search areas:
Sector,Hash,QuadKey. - Commands:
Search,Test,FExists,Stats,ConfigGet/ConfigSet/ConfigRewrite,GC,Healthz,AOFShrink,ReadOnly,Follow/FollowNone,Timeout. - Writing a third ordinate:
SetCmd.PointZ/PipelineSetCmd.PointZ.
Known upstream issue
NEARBY key BUFFER n … POINT … panics the Tile38 server — cmdNearby asserts the area to *geojson.Circle and BUFFER yields a GeometryCollection (internal/server/search.go:569). Buffer is therefore exposed on WithinCmd and IntersectsCmd only, and deliberately not on NearbyCmd.
What's Changed
- docs: add badges to the README by @XanderD99 in #2
- ci: note that Codecov is not enabled for now by @XanderD99 in #3
- chore(deps): bump github.com/testcontainers/testcontainers-go from 0.43.0 to 0.44.0 in the testcontainers group by @dependabot[bot] in #1
- chore(claude): add licence and workflow guards, release skill, API compat agent, gopls MCP by @XanderD99 in #4
- fix: return the reply data the client was dropping by @XanderD99 in #5
- feat: close the remaining Tile38 capability gaps by @XanderD99 in #7
- ci: pin the golangci-lint version instead of tracking latest by @XanderD99 in #8
New Contributors
- @XanderD99 made their first contribution in #2
- @dependabot[bot] made their first contribution in #1
Full Changelog: v0.1.0...v0.2.0