Poll contact preparation only while the contact picker is active and refresh the current query when returning from group search. Guard conversation loading with per-session generations so stale async completions cannot replace the latest selection.
Align contact selection with the all-history snapshot used by entity resolution. Stop async page initialization and route synchronization after navigation away.
Keep full entity resolution details available to the application while bounding the model-visible payload with the runtime tokenizer. Preserve coverage and truncation metadata, prioritize usable scopes fairly, and cap ambiguity hints to avoid duplicate unbounded source lists.
Count complete tool payloads with the runtime tokenizer so Chinese evidence respects the configured model context budget.\n\nResolve contact sources incrementally with cancellation checks and targeted member lookups to keep long cross-chat investigations responsive.
Make unscoped candidate preparation honor cancellation and wall-time limits before message scanning. Enumerate database files lazily, retain only the newest eligible sessions, and resolve owners without loading full member statistics.
Use the all-history contacts snapshot when translating stable contact references into cross-chat scopes, so older source sessions are not silently excluded from historical analysis.
Replace message content and structured user entity references in one database statement. Treat omitted references as an explicit clear so edited prompts cannot replay stale identities.
Prevent generic assistant or summary writes from persisting structured entity references. Keep compressed-summary references on the dedicated internal path and ignore malformed assistant references during replay and compression.
The shared loading placeholder hid the dots from assistive tech and
left the status region empty. Add the existing common loading label
as visually hidden text.
Circular clipping is deduped across ranking charts, but completion
used to bump only the instance that started the job. Other mounted
charts kept showing initials until an unrelated rerender.
Render circular member avatars on ranking lists, person-based charts,
hot-repeat originators, and catchphrase rows. Look up avatars from the
member table instead of bloating ranking queries, and clip ECharts
photos so they match the HTML lists.
Completed error segments stay expanded with a failed label, and the 16px reading size applies only to full-size chat answers so compact markdown previews keep their own sizing.
Keep the shared runtime in tool_running until every concurrent call finishes. Route renderer progress and completion by toolCallId so one result cannot hide another active tool.