Skip to content

OConnector v1.3.1

Choose a tag to compare

@fangzx2001 fangzx2001 released this 21 May 18:03
· 22 commits to main since this release

What's New in v1.3.1

Added

  • SSE connection generation — atomic generation counter ensures stale events from previous connections are filtered out at both EventBus and ViewModel layers. Prevents ghost messages when switching servers or reconnecting.
  • Network recovery monitoring — automatic SSE restart when network connectivity recovers after a disconnect.

Fixed

  • Startup crash when server unreachable — the SSE foreground service was started before testConnection() confirmed the server was reachable. When the server was down, the service entered a retry loop that raced with disconnect(). Now connect() only configures the HTTP/SSE clients, and startSseService() is called only after the connection test succeeds.
  • DTO deserialization crash — all non-null DTO fields now have default values, and coerceInputValues = true is enabled on the Json instance. Server responses with missing or null fields no longer cause MissingFieldException or IllegalArgumentException.
  • Recovery bubble false positive — the recovery heuristic no longer triggers when AI is actively working via TUI.
  • Agent picker missing custom agents — agents with hidden: null (instead of false) are no longer filtered out.
  • Main thread Keystore I/O — getPassword() now runs on Dispatchers.IO instead of the main thread, preventing ANR during EncryptedSharedPreferences initialization.
  • SSE client thread safety — sseClient marked @Volatile, sseChannel uses AtomicReference to prevent data races.
  • Foreground service crash — SseForegroundService.start() and restart() now catch ForegroundServiceStartNotAllowedException.
  • NetworkMonitor SecurityException — registerNetworkCallback() wrapped in try-catch for permission-denied edge cases.
  • Null intent service restart — onStartCommand with null intent (system restart) now calls stopSelf() and returns START_NOT_STICKY to avoid stale generation state.

Full Changelog: v1.3.0...v1.3.1