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_charsbounded 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.embednow catches that specific 500 and retries with the input halved down to a floor;upsert_vectordegrades 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
/statuspoll cadence is now adaptive (~3s while the queue is working, 30s idle); direct edits push the newdata_versionimmediately. - 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_tasksites 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_CHARSdefault lowered 8000 → 4000 (the shrink-retry handles anything denser).ConvertPanel's pollers use asetTimeoutchain (no overlap, I7).
Upgrade¶
No Alembic migrations. Pull new images.