Changes since v2.3.0 (in v2.4.0)
Changes since v2.3.0 included in v2.4.0 β OpenTelemetry instrumentation, pREST Studio dependency bump, and pgvector nearest-neighbor / distance-filter support.
Last updated
Changes since v2.3.0 included in v2.4.0 β OpenTelemetry instrumentation, pREST Studio dependency bump, and pgvector nearest-neighbor / distance-filter support.
Released as v2.4.0. The commits below were merged after v2.3.0 and are included in the v2.4.0 release. Compare: v2.3.0...v2.4.0.
496f893
Opt-in OpenTelemetry (push) instrumentation β traces, metrics, slogβOTel log bridge β plus a local SigNoz dev stack
e0cd7bd
pgvector nearest-neighbor ordering (_korder) and distance-threshold filtering (:vecdist)
Adds opt-in OTLP/gRPC push telemetry: HTTP, Postgres, and MCP traces; http.server.* / db.client.operation.duration / db.sql.connection.* metrics; and a slog β OTel logs bridge that still writes to stdout. No new HTTP route is added (no /metrics scrape endpoint), so the attack surface is unchanged.
New [otel] config section (PREST_OTEL_* env overrides):
enabled
false
Master switch β zero overhead and no outbound connections when off
service_name
prestd
Resource service.name
endpoint
(unset)
OTLP gRPC collector host:port
protocol
grpc
Only grpc for now
sample_ratio
1.0
Trace head sampling, clamped 0.0β1.0
metrics_interval
15s
Metric export period
insecure
false
Disable TLS to collector (local/dev)
db_statement
false
Record SQL text on DB spans (trusted envs only)
Setup fails closed: if the exporter can't be built at startup, pREST logs a warning and keeps serving with telemetry disabled. The PR also adds graceful shutdown (SIGINT/SIGTERM draining via signal.NotifyContext) as a prerequisite for flushing telemetry on exit. A self-contained SigNoz stack lives under dev/signoz/ (make signoz-up / make signoz-down) for local viewing.
Routine dependency bump for the embedded Studio UI. Fixes the auth dialog not reflecting saved credentials / "remember me" state on reopen, and avoids building incomplete MCP tool-call requests when argument construction fails. No config or API changes.
Adds two query-parameter forms for vector-typed columns (requires the pgvector extension), both restricted to a fixed metric whitelist (l2/euclidean, cosine/cos, ip/inner/dot, l1/manhattan) and validated end-to-end β column via identifier validation, vector literal by round-tripping through ParseFloat/FormatFloat, threshold as a bound parameter:
_korder
<column>:<metric>:<vector>
_korder=embedding:l2:[1,0,0]
Orders by nearest-neighbor distance (KNN); composes with _order as an additional sort term
<column>:vecdist
<metric>:<comparison>:<vector>:<threshold>
embedding:vecdist=l2:lt:[1,0,0]:0.5
Filters rows by distance threshold; comparison is restricted to =, !=, <, <=, >, >=
Malformed metrics, non-numeric vector elements, oversized vectors (>16000 dims, pgvector's own limit), non-scalar comparisons (e.g. like), and dimension mismatches all return 400 rather than reaching the database unsafely.
Last updated