Synapse 1.3.0 — «Foundations» 🏗️¶
Lo sprint che paga il debito strutturale prima del multi-vault (v1.4 → 2.0): rifattorizzazione, correttezza, sicurezza e mobile. Nessuna feature AI nuova — di proposito. Prima release tagliata da
mainsecondo la nuova policy di CONTRIBUTING.
🧱 Fondamenta¶
main.pydecomposto: da 9.311 a ~1.400 righe, 13 router per dominio (app/routers/*) — contratto API congelato e provato: OpenAPI byte-identico prima/dopo- Lineage di release riallineata: v1.2.4–1.2.6 mergiate in
main; regola «i tag si tagliano solo da main» in CONTRIBUTING
🐛 Correttezza (2 P1 + 18 P2 dal code review della 1.2.6)¶
- Il ricalcolo del grafo non congela più il server: igraph/FA2/Louvain girano in un thread executor — richieste, stream e watcher restano fluidi anche su vault da migliaia di pagine
- La risposta della chat non finisce più nella conversazione sbagliata: abort dello stream al cambio conversazione/unmount + binding della risposta alla conversazione d'origine
- Dialog «Continua a modificare» senza più loop infinito; scrittura atomica di
index.md; stream provider chiusi su timeout/errore; wikilink con confini di parola ([[Cat|cat]]egoryaddio); editing concorrente → 409 invece di perdita silenziosa; e altri 10 fix con test di regressione
🔒 Sicurezza¶
- Guardia SSRF sui fetch del deep-research: solo http/https, blocco IP privati/metadata su ogni hop, max 3 redirect
- Auth esente per metodo oltre che per path; Postgres non più esposto sull'host; credenziali via
.env; rate limit per-IP sugli avvii di chat/ingest/research
📱 iPhone e iPad (ADR-0057)¶
- 3 tier di viewport (mobile ≤767 / tablet 768–1023 / desktop ≥1024): drawer per albero, dettagli e conversazioni su mobile; safe-area per notch/home indicator;
100dvhper Safari - Touch reattivo: eliminato il ritardo di ~350ms sul tap, target ≥44px reali, feedback al tocco istantaneo, azioni conversazione sempre visibili su touch
⚙️ CI/CD¶
- Job E2E Playwright in CI con stack Docker + seed automatico; immagini multi-arch (amd64+arm64) — Synapse gira anche su Raspberry Pi/ARM;
make bumpper il version bump atomico a 4 file; workflowrelease-cutper tagliare release da Actions
Artefatti¶
Synapse_1.3.0_aarch64.dmg · _x64-setup.exe · synapse-clipper-1.3.0.zip · latest.json firmato · immagini GHCR backend/frontend/marker v1.3.0+latest (amd64+arm64)
Qualità: 1820 test backend + 1750 frontend; mypy strict 0 errori; OpenAPI zero-drift; 2 nuovi ADR (0056 indicizzato, 0057 responsive); invarianti I1–I9 verificate.