Skip to content

Synapse v1.8.1 — "ingest robustness, real-time UI & accessibility"

Bug-fix release hardening the ingest pipeline against token-dense (regulatory/tabular) documents, making the dashboard and graph update in real time, and closing a batch of accessibility gaps.

Fixed

  • Token-dense documents crashed embedding and aborted the whole ingest. embed_max_chars bounded characters, but bge-m3's limit is tokens: dense content packed >1 token/char, so a payload well under the cap still made Ollama return HTTP 500. EmbeddingClient.embed now catches that specific 500 and retries with the input halved down to a floor; upsert_vector degrades an unrecoverable embedding failure to a vector-less page instead of aborting the run.
  • "PAGINE CREATE 0" even when pages were written. The counter keyed off the provider capability instead of the resolved route, and the failure path hard-coded 0. All three paths now report the pages actually persisted.
  • CLI provider failures were opaque and fatal. An empty/rate-limited completion raised one generic error. The provider now classifies the terminal result (rate-limit / overloaded / execution error), the block loop retries transients with bounded exponential backoff, and per-call cost/tokens are recorded even when the SDK raises mid-stream (I7).
  • Dashboard KPIs and the knowledge graph did not update in real time. The /status poll cadence is now adaptive (~3s while the queue is working, 30s idle); direct edits push the new data_version immediately.
  • Ingest run list froze / stopped polling for runs beyond the first page during bulk imports.
  • Background jobs could be garbage-collected mid-run. Eight asyncio.create_task sites did not retain a strong reference. All now hold a strong reference.
  • Accessibility: the ⌘K search affordance is now a real button; keyboard focus rings on the graph/search inputs are restored (WCAG 2.4.7); toast auto-dismiss pauses on hover/focus (WCAG 2.2.1); amber warning text meets 4.5:1 contrast; the nav rail moves focus to the active item under arrow keys.

Added

  • A subtle "Updating…" affordance on the dashboard and graph while a live refresh is in flight.

Changed

  • EMBED_MAX_CHARS default lowered 8000 → 4000 (the shrink-retry handles anything denser).
  • ConvertPanel's pollers use a setTimeout chain (no overlap, I7).

Upgrade

No Alembic migrations. Pull new images.