mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-12 10:12:11 +03:00
Every agentic chat request now gets a conversation id (X-ConversationId response header), and OmniRoute detects when a follow-up request continues the same conversation via fingerprint + bounded prefix-hash matching, with a strict-growth invariant to prevent false merges between independent single-shot requests. Dashboard changes: - /dashboard/logs: toggleable Conversation column - /dashboard/logs/timeline: same-conversation requests share a timeline lane, connected by an arrow, with a configurable lane-reuse window - Request detail panel: new "Full Conversation" transcript above the raw SSE event stream, with Markdown rendering, per-turn timestamps, turn-relative view (only turns up to the one you opened, with a jump-to-next link), click-any-turn-to-open-its-log navigation, and live auto-refresh (with an auto-follow toggle, matching the event stream's autoscroll pattern) that rebuilds the transcript in real time from the in-flight SSE chunk buffer while a request is still streaming - New /dashboard/conversations page listing only conversations with 2+ turns - Configurable auto-refresh intervals on both the timeline and conversations list pages Also fixes a pre-existing bug where the timeline view never showed SSE/ stream-chunk events or respected email-masking, because RequestTimeline.tsx hardcoded debugEnabled/emailsVisible instead of reading the same server-side/store state RequestLoggerV2.tsx already used, and makes the request detail panel and conversations list responsive on mobile.