MyTerm v0.38
Fixes connections being dropped on a timer while in active use, and terminals that never finished attaching afterwards.
Connections no longer expire while you are using them
The relay closed each connection when the access token it was opened with ran out, so a busy session was dropped roughly every 15 minutes however much was flowing through it, and a connection opened late in a token's life could last seconds. A connection now renews itself in place: the peer presents a refreshed token before the current one lapses and the relay extends the connection after revalidating it. A device that can no longer obtain a valid token still stops at its last validated expiry, so revocation is unchanged.
A burst of terminal output could also overflow the relay's send queue and cost the reader its connection. The queue is deeper and briefly-full queues now slow the sender instead of disconnecting the receiver.
This half only takes effect once your relay is redeployed. The apps negotiate the capability, so they are safe to update first.
Terminals re-attach after a reconnect
On a narrow screen the companion could sit on "Attaching terminal" indefinitely after reconnecting, and only leaving the workspace and returning would load it. Three separate causes are fixed: the attach was never retried once a connection came back, a failed attach left nothing behind to retry, and the lock guarding attachment could be left holding a permit that was never released.
Diagnosability
The relay now records why a connection ended, including slow receivers and rejected renewals, which it did not before. protocol.md documents the renewal exchange.
Install
brew install --cask gordonbeeming/tap/mytermApple silicon only.