This release fixes issues for SREs watching stability and regressions.
✓ No known CVEs patched in this version
Topics
+9 more
Summary
AI summaryFixes deadlock, duplicate proposals, dropped‑event recovery, and adds observability for the AI approval flow.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Bugfix | Medium |
Resumes re-issue a fresh, approvable proposal instead of pointing at cancelled one. Resumes re-issue a fresh, approvable proposal instead of pointing at cancelled one. Source: llm_adapter@2026-06-10 Confidence: high |
— |
| Bugfix | Medium |
`createProposal()` becomes idempotent, collapsing duplicate proposals on retry. `createProposal()` becomes idempotent, collapsing duplicate proposals on retry. Source: llm_adapter@2026-06-10 Confidence: high |
— |
| Bugfix | Medium |
Assistant messages self‑heal missing approve/reject CTAs and truncated bubbles after lost events. Assistant messages self‑heal missing approve/reject CTAs and truncated bubbles after lost events. Source: llm_adapter@2026-06-10 Confidence: high |
— |
| Bugfix | Low |
Adds `redis:chat` metric to Horizon `waits` for backlog alerts. Adds `redis:chat` metric to Horizon `waits` for backlog alerts. Source: llm_adapter@2026-06-10 Confidence: low |
— |
Full changelog
Fixes
Chat: Harden the multi-step AI approval flow against lost state, retries, and dropped websocket events (#322)
- Resume deadlock: typing "resume"/"continue" superseded the in-flight proposal, then the assistant told the user to approve the now-gone card — a dead end. On resume/continue the assistant now re-issues a fresh, approvable proposal instead of pointing at the cancelled one.
- Duplicate proposals on retry: a transient provider 429/529/503 retried the continuation job from the top and re-created the proposal, producing up to 5 duplicate cards.
createProposal()is now idempotent across retries — an identical still-pending proposal is collapsed instead of duplicated. - Dropped-event recovery: a lost
.tool_resultleft the approve/reject CTA missing and a loststream_endleft a truncated bubble until a full reload. The latest assistant message now self-heals — still-pending cards are re-merged on bothstream_endand the 60s watchdog (additive, a no-op on the happy path). - Observability: add
redis:chatto Horizonwaitsso backlog on the most latency-sensitive queue raises aLongWaitDetectedalert.
Full Changelog: https://github.com/relaticle/relaticle/compare/v3.3.4...v3.3.5
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About relaticle
Open-source CRM with native AI agent support. 30 MCP tools, REST API, self-hosted. Built with Laravel & Filament
Related context
Beta — feedback welcome: [email protected]