Hey brewaa ?
Thank you for the kind words, it gives me motivation !
Well to be honest I couldn't made the disconnection process as good as I hoped. There's an onDisconnect event handler in the Transport library that never trigger at all, and the transport.disconnect() method doesn't cut the ledger device from displaying a transaction proposal.
However it somehow prevent some glitch that may happen when you don't do the things cleanly, like opening several transport and stuff. The disconnect method also stop the connection loop for looking for a device connection.
About timeout, well. The hid protocol for the node Transport implementation doesn't handle it, while the web version handle it quite randomly as far as I can tell. So maybe a solution would be having a routine checking for the device every x second. It depends on what you would like to achieve. Trigger an event when user disconnect it?