Skip to content

Latest commit

 

History

History
81 lines (57 loc) · 6.87 KB

File metadata and controls

81 lines (57 loc) · 6.87 KB

📋 All Versions English | 简体中文

Chats 1.10.2 Release Notes

Release Date: 2026-03-10 (47 commits since main)

1.10.2 is an observability-focused release centered on Request Trace. It introduces inbound and outbound HTTP request tracing, a new admin request trace workspace, and configurable sampling, filtering, redaction, and retention policies, together with export, compare, bulk delete, and scheduled cleanup support. It also includes a small set of admin dashboard, message UX, and Anthropic compatibility improvements.

🎯 Core Features

1) Request Trace: end-to-end inbound and outbound HTTP tracing

  • 🔍 Two-way capture: adds InboundRequestTraceMiddleware and OutboundRequestTraceHandler to trace both inbound user requests and outbound service-to-service HTTP calls.
  • 🧭 Trace metadata: records TraceId, user, source, HTTP method, full URL, status code, error type, and key timestamps for request start, request body completion, response header completion, and response body completion.
  • 📦 Body and raw payload capture: stores request/response headers, text bodies, raw binary payloads, and body length statistics for troubleshooting encoding, compression, and gateway passthrough issues.
  • 🔗 Broader backend coverage: request tracing is wired into multiple outbound HTTP call paths, making it easier to correlate upstream requests with downstream dependency behavior.

2) New admin request trace workspace

  • 🧑‍💼 Dedicated admin page: adds /admin/request-trace to the admin navigation for centralized trace inspection.
  • 🔎 Advanced filtering: supports filtering by time range, URL, TraceId, username, and direction, with query state preserved in the URL for refresh and sharing.
  • 🧱 24 selectable columns: allows per-scenario column selection and persists visible columns in URL query parameters.
  • 👀 Details and downloads: each trace supports full request/response header and body inspection, .dump export, and raw request/response binary downloads, with explicit guidance when the response body is binary-only.
  • 🆚 Two-trace compare: supports side-by-side comparison for two selected traces, with an option to hide identical fields.
  • 📤 Export and cleanup: supports Excel export for the current filter set (up to 10000 rows) and bulk deletion by current filters.

3) Configurable capture rules, redaction, and retention

  • ⚙️ Independent inbound/outbound config: inbound and outbound tracing can be enabled and tuned separately for sample rate, minimum duration, header/body capture, and retention days.
  • 🎯 Include/exclude filters: supports include and exclude rules by source, URL patterns, HTTP methods, and status codes, with quick presets for common gateway scenarios.
  • 🕶️ Redaction improvements: adds configurable URL parameter redaction and improves default redaction ordering to reduce the risk of sensitive values being stored.
  • ♻️ Hot refresh: trace configuration is stored in the database config table and refreshed by a background service without requiring a restart.

🏗️ Architecture & Engineering

1) Persistence and lifecycle management

  • 🗄️ Two-table storage model: adds RequestTrace and RequestTracePayload, separating metadata from large payload content and keeping them consistent through cascading delete.
  • 📇 Indexes and scheduled cleanup: adds indexes on StartedAt, UserId, TraceId, and ScheduledDeleteAt; scheduled cleanup runs every 30 minutes to remove expired traces.
  • 🚦 Queue protection: adds RequestTraceQueue:Capacity and uses a bounded in-memory queue with DropWrite behavior to protect the main request path under pressure.
  • 🧵 Async persistence: tracing persistence is queue-based and asynchronous, reducing synchronous I/O pressure while keeping multi-stage timing and exception capture intact.

2) Stability refinements for the tracing pipeline

  • 🧪 Edge-case test coverage: adds unit tests for CaptureStreams, ObservedHttpContent, RequestTraceHelper, RequestTracePersistService, and RequestTraceQueue.
  • 🛡️ Stability fixes: fixes missing 401 inbound traces, empty-pattern matching, details dialog overflow, redundant payload deletion, and binary/JSON presentation issues.
  • 🧰 Config capacity: expands Config.Value to NVARCHAR(MAX) so larger JSON trace configs can be stored safely.

🎨 Other Improvements

Admin dashboard and message UX

  • 📊 Dashboard summary cards: admin summary cards now compute chat count and active users based on the currently selected time range.
  • ✂️ User message collapse: long user messages can now collapse inside the message bubble with an approximately 5.5-line preview.
  • 🧠 Thinking display refinement: removes the fixed max-height cap from ThinkingMessage expansion so long reasoning content behaves more naturally.

Protocol compatibility and dependency updates

  • 🔧 Anthropic compatibility fixes: fixes lost tool results during Anthropic message conversion (#122) and improves thinking signature compatibility for the DeepSeek Anthropic protocol path.
  • 🔤 Readable MCP JSON: preserves readable Unicode when fetching MCP tool input schemas instead of over-escaping JSON.
  • ⬆️ Frontend dependency update: upgrades the frontend to Next.js 16.1.6 and aligns related browser compatibility dependencies.

🐛 Stability Fixes

  • Fixes Request Trace default redaction ordering and field ordering issues.
  • Fixes request/response capture timing so traces can start earlier and body capture becomes more complete.
  • Fixes scrolling and overflow behavior in the Request Trace details dialog for long headers and long bodies.
  • Simplifies the include/exclude rule organization in the trace config dialog to reduce configuration friction.

⬆️ Upgrade Notes

  • Run DB migration: src/scripts/db-migration/1.10/1.10.2.sql
    • Adds the RequestTrace main table and the RequestTracePayload payload table
    • Adds indexes for StartedAt, UserId, TraceId, and ScheduledDeleteAt
    • Expands Config.Value to NVARCHAR(MAX) to support larger JSON configuration payloads
  • New config keys:
    • RequestTraceQueue:Capacity: controls the in-memory request trace queue capacity, default 1000
    • RequestTraceCleanup:Enabled: controls scheduled auto-cleanup, default true
  • Upgrading does not automatically enable Request Trace for all traffic; the actual capture scope still depends on the inbound/outbound tracing rules, sample rate, and retention policy configured by the admin.
  • If you plan to enable request tracing in a high-concurrency environment, set sample rate, URL filters, and retention days first to avoid unnecessary database write and storage pressure.