Features
- OpenTelemetry export preserves original trace and span IDs - a custom
IdGeneratormaps TraceWeft UUIDs onto OTel 128/64-bit IDs and rebuilds parent context, so exported spans keep their place in the trace tree - Postgres query endpoints - list traces, get trace by id, and list evals now serve Postgres as well as SQLite through shared dialect-agnostic mappers
- API-key authentication with per-project multi-tenancy - SHA-256 hashed keys, constant-time comparison, project-scoped queries, and server-side project stamping so tenants only see their own traces
- Robust OTLP ingest on
opentelemetry-prototypes - original trace/span/parent IDs are preserved instead of regenerated - Desktop app lifecycle - the Tauri shell embeds the server, exposes
server_info/server_start/server_stopIPC commands, and drains the server gracefully on exit
Security
- The local API is no longer readable from arbitrary browser origins - permissive CORS is replaced by an origin allowlist (loopback + Tauri webview), blocking cross-origin reads and preflighted CSRF
- HITL approval endpoints now require authentication
start_serverdefaults to secure auth (reject unless keys or dev mode are configured);trace-weft devand the desktop opt into local-first- Vite updated to 8.0.16 and the Babel advisory patched -
npm auditis clean at high severity
Fixes
- MCP
traceparentspan-id reduction aligned with the OTel exporter (low 8 bytes), so a span maps to the same 64-bit id on every wire - OTLP ingest returns
400for malformed payloads instead of silently minting new UUIDs - Query handlers surface corrupt JSON as
500instead of masking it as{} - MSRV metadata corrected - every crate inherits
rust-version = 1.94.1
Other
- 100+ unit and integration tests across propagation, MCP, SQLite/Postgres parity, tenant isolation, ingest, and graceful shutdown
- All publishable crates carry crates.io metadata (description, license, repository) with versioned path dependencies;
cargo package --workspacepasses - Web API base centralized via
VITE_API_BASEso the dev proxy and the desktop bundle both work - README screenshots and badges; all manifests aligned to 0.2.0
Full Changelog: https://github.com/kidoz/trace-weft/commits/v0.2.0