• v1.6.2-dev 0d766b7507

    FTMahringer released this 2026-05-09 14:47:54 +02:00 | 233 commits to main since this release

    Plugin Lifecycle APIs

    Full install/enable/disable/uninstall REST API with manifest validation and event logging.

    Features:

    • PluginLifecycleService — install() validates manifest first, enable(), disable(), uninstall()
    • Every lifecycle action writes structured system log + fires SynapseEvent
    • PluginController — POST /api/plugins/install, POST /{id}/enable, POST /{id}/disable, DELETE /{id}, GET list/detail
    • Install rejects invalid manifests with 400 + error list

    Next: v1.6.3-dev Store registry sync from store/registry.yml

    Downloads
  • v1.6.1-dev 9c13c523b4

    FTMahringer released this 2026-05-09 14:46:55 +02:00 | 234 commits to main since this release

    Plugin Manifest Parser and Validator

    Parses and validates plugin manifests before install.

    Features:

    • PluginManifest record — fromMap() factory, typed fields: id, name, type, version, author, license, description, minSynapse, tags, raw
    • ValidationResult record — valid flag + error list, ok()/fail() factories
    • ManifestValidator — checks: id (required, lowercase-hyphen, max 64), name (required), type (required, must be CHANNEL/MODEL/SKILL/MCP), version (required, semver), author (required), description (max 500 chars)

    Next: v1.6.2-dev Plugin install/enable/disable/uninstall APIs

    Downloads
  • v1.5.9-hotfix 8fa2450537

    FTMahringer released this 2026-05-09 14:41:45 +02:00 | 235 commits to main since this release

    @EnableAsync JDK Proxy Conflict Fix

    Backend failed to start after WebSocket and async were combined.

    Error:

    • ConversationWebSocketHandler injected as concrete class in WebSocketConfig
    • @EnableAsync created JDK dynamic proxy — type mismatch at injection
    • APPLICATION FAILED TO START

    Fix:

    • Changed @EnableAsync to @EnableAsync(proxyTargetClass = true)
    • Forces CGLIB proxies — concrete class injection works correctly

    Followup to v1.5.4-dev.

    Downloads
  • v1.6.0 8fa2450537

    FTMahringer released this 2026-05-09 14:41:45 +02:00 | 235 commits to main since this release

    SYNAPSE v1.6.0 — Realtime Runtime

    Event bus, Redis Streams fanout, SSE live logs, WebSocket conversation stream, and reconnect behavior.


    Changelog

    v1.5.1-dev — Internal Event Publisher Abstraction

    • SynapseEvent record + SynapseEventType enum (10 event types)
    • EventPublisher interface + InMemoryEventPublisher via Spring ApplicationEventPublisher
    • EventSubscriber interface with accepts() filter
    • SystemLogService fires LOG_WRITTEN event on every write

    v1.5.2-dev — Redis Streams Log Fanout

    • spring-boot-starter-data-redis added
    • RedisStreamPublisher fans out to synapse:events and synapse:logs streams
    • REDIS_HOST/REDIS_PORT env vars, docker-compose wired
    • @EnableAsync added to SynapseApplication

    v1.5.3-dev — SSE Endpoint for Live Logs

    • SseLogBroadcaster with CopyOnWriteArrayList emitter management
    • GET /api/logs/stream (text/event-stream)
    • Self-cleaning on timeout/error/complete

    v1.5.4-dev — WebSocket Endpoint for Conversation Events

    • spring-boot-starter-websocket added
    • ConversationWebSocketHandler broadcasts MESSAGE_SENT/RECEIVED, CONVERSATION_STARTED/ENDED
    • WebSocketConfig at /ws/conversations

    v1.5.5-dev — Dashboard Live Log Panel

    • connectLogStream() with named "log" SSE events
    • Live Stream panel with CONNECTED/DISCONNECTED badge
    • Up to 100 events, newest first

    v1.5.6-dev — Dashboard Streaming Conversation Updates

    • connectConversationStream() WebSocket client
    • Conversation Stream panel with LIVE/OFFLINE badge on Overview tab

    v1.5.7-dev — Reconnect, Backoff, Polling Fallback

    • reconnect.ts: connectWithBackoff() for SSE, connectWsWithBackoff() for WebSocket
    • Exponential backoff 1s→30s, max 10 retries
    • Clean stop() functions, unmount cleanup

    v1.5.8-hotfix — Redis Streams API Fix

    • Fixed MapRecord/ObjectRecord type mismatch in RedisStreamPublisher

    v1.5.9-hotfix — @EnableAsync Proxy Fix

    • Fixed JDK proxy conflict: @EnableAsync(proxyTargetClass = true)

    Exit Criteria Met

    • Logs stream live to dashboard via SSE
    • Conversation events stream via WebSocket
    • Transport failures handled with backoff — no ECHO fallback triggered

    Next milestone: v1.7.0 — Plugin and Store Runtime

    Downloads
  • v1.5.8-hotfix 8898772450

    FTMahringer released this 2026-05-09 14:39:29 +02:00 | 236 commits to main since this release

    Redis Streams API Fix

    Compilation error from wrong Spring Data Redis Stream API usage.

    Error:

    • RedisStreamPublisher lines 52+58: StreamRecords.newRecord().ofMap() returns MapRecord, not ObjectRecord
    • Type variable K,V mismatch — Maven compilation failed

    Fix:

    • Replaced ObjectRecord construction with redisTemplate.opsForStream().add(streamKey, map) directly
    • Removed unused ObjectRecord and StreamRecords imports

    Followup to v1.5.2-dev.

    Downloads
  • v1.5.7-dev b99425c2ae

    FTMahringer released this 2026-05-09 14:38:02 +02:00 | 237 commits to main since this release

    Reconnect, Backoff, and Polling Fallback

    SSE and WebSocket connections now survive disconnects with exponential backoff.

    Features:

    • reconnect.ts — connectWithBackoff() for SSE: exponential delay 1s→30s, max 10 retries, onFallback callback
    • reconnect.ts — connectWsWithBackoff() for WebSocket: same backoff strategy
    • App.vue updated to use reconnect helpers instead of raw EventSource/WebSocket
    • liveConnected badge reflects fallback state after max retries
    • wsConnected badge reflects WS open/close events
    • Both streams cleaned up cleanly on unmount via stop() functions

    Next: Docker Compose test, then v1.6.0 release

    Downloads
  • v1.5.6-dev c72403dedd

    FTMahringer released this 2026-05-09 14:36:44 +02:00 | 238 commits to main since this release

    Dashboard Streaming Conversation Updates

    WebSocket-backed conversation event panel on the Overview tab.

    Features:

    • connectConversationStream() in api.ts — opens WebSocket to /ws/conversations
    • ConversationStreamEvent interface for typed WS payloads
    • Conversation Stream panel on Overview tab with LIVE/OFFLINE badge
    • Stores up to 50 newest events, newest first
    • WS connection opened on mount, closed on unmount
    • wsConnected state tracks open/close callbacks

    Next: v1.5.7-dev Reconnect, backoff, polling fallback

    Downloads
  • v1.5.5-dev 69225c9ab5

    FTMahringer released this 2026-05-09 14:35:37 +02:00 | 239 commits to main since this release

    Dashboard Live Log Panel

    Logs tab now streams events live via SSE alongside historic log list.

    Features:

    • connectLogStream() in api.ts — opens EventSource to /api/logs/stream, parses "log" named events
    • LiveLogEvent interface for typed SSE payloads
    • Live Stream panel: shows up to 100 newest events, auto-trimmed, newest first
    • Connection badge: CONNECTED (green) / DISCONNECTED (red)
    • Historic panel: existing fetched logs remain below live stream
    • EventSource closed on component unmount

    Next: v1.5.6-dev Dashboard streaming conversation updates

    Downloads
  • v1.5.4-dev 482543c7b3

    FTMahringer released this 2026-05-09 14:34:23 +02:00 | 240 commits to main since this release

    WebSocket Endpoint for Conversation Events

    WebSocket stream pushes conversation events to dashboard clients in real time.

    Features:

    • spring-boot-starter-websocket added to pom.xml
    • ConversationWebSocketHandler — TextWebSocketHandler with ConcurrentHashMap session set
    • Broadcasts: MESSAGE_SENT, MESSAGE_RECEIVED, CONVERSATION_STARTED, CONVERSATION_ENDED
    • Self-cleaning: closed sessions removed on send failure
    • WebSocketConfig — registers /ws/conversations with wildcard origin
    • @Async @EventListener wired to SynapseSpringEvent bus

    Next: v1.5.5-dev Dashboard live log panel

    Downloads
  • v1.5.3-dev 3a8aaa79dd

    FTMahringer released this 2026-05-09 14:33:34 +02:00 | 241 commits to main since this release

    SSE Endpoint for Live Logs

    Server-Sent Events stream pushes log events to dashboard clients in real time.

    Features:

    • SseLogBroadcaster — CopyOnWriteArrayList of SseEmitter, self-cleaning on timeout/error/complete
    • Listens to LOG_WRITTEN SynapseSpringEvents via @Async @EventListener
    • LogSseController — GET /api/logs/stream (text/event-stream)
    • Events sent as named SSE event type "log" with JSON payload
    • Non-fatal: failed sends remove emitter silently

    Next: v1.5.4-dev WebSocket endpoint for conversation events

    Downloads