Clamp CLI SQL output after execution so user-provided LIMIT clauses cannot bypass the requested row cap. Add a deterministic message id tie-breaker for response-time statistics.
Pass the active selectedKey into the 3D scene builder so focused relationship views use the selected-contact topology and layout. Add a regression check for the canvas scene wiring.
* fix(semantic-index): stabilize embedding warmup
Improve warmup job reliability and prevent raw API response body from
reaching app.log. Status code alone is sufficient for diagnosing failures;
stripping the response detail eliminates the risk of chat content being
written to the log via OpenAI-compatible services that echo submitted input.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(semantic-index): clear preload error after warmup retry
When local model preload fails, a later warmup can successfully recreate the extractor through embedDocuments but leave modelPreloadStatus stuck on error.
Mark the local model ready after a completed warmup writes chunks, and cover the retry path with a regression test.
* fix(semantic-index): guard warmup model status updates
Capture the model configuration used by a warmup job before it starts, and only clear local preload errors when the current local model still matches that job.
Add a regression test for switching local models while an older warmup is still completing.
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Wait for initial contact rows before scrolling to groupmates so tab navigation does not land on temporary rows. Avoid writing contacts session facts or latest facts when a session DB fingerprint changes during computation.
Replace friend rows after manual friend promotion so response-layer overrides are reflected even when the contacts snapshot signature is unchanged. Keep preserving the groupmate rows after local removal to avoid scroll jumps.