fix: correct connect/disconnect button state on connection lifecycle

- Enable disconnect button immediately when connect is clicked, so the
  user can cancel without waiting for the StateConnecting IPC event.
- Disable disconnect button on all error paths in the connect goroutine
  to restore the default disconnected button state.
- Capture ipcClient once at eventLoop start instead of re-reading every
  iteration, preventing a second onConnect call from making the old
  event loop jump to the new client and consume events concurrently.
- In eventLoop recv error recovery, only reset button states if the
  current ipcClient still matches the captured one, so a stale
  disconnection does not clobber the state of a newer session.
- Disable connect button in StateReconnecting case (was missing).
- Remove WriteOK from daemon startSession: the StateConnecting event
  already serves as the implicit acknowledgment; the OK response was
  being read by eventLoop as a no-op event, adding unnecessary noise.
This commit is contained in:
2026-07-06 19:34:29 +08:00
parent b0aa386ee2
commit 04d2e6e429
2 changed files with 24 additions and 14 deletions
-1
View File
@@ -155,7 +155,6 @@ func (d *daemon) startSession(conn net.Conn, req ipc.Request) {
d.session = nil
return
}
_ = ipc.WriteOK(conn)
}
func (d *daemon) stopSession() {