when webusb version of T1 is wiped, the usb device changes serial
immediately (unlike TT, which changes it after reconnect).
That confuses libusb on linux, and next time the device is reset, it
will insist on re-enumeration.
To solve this, we leave some explanatory comments, and trigger the
device reset through opening the device right after a wipe.
The client instance is unusable after that, but not much we can do about
it, and on next run trezorctl will behave as if nothing bad happened.
This also moves DebugLinkMixin to debuglink.py and converts the mixin to
a subclass of TrezorClient (which is finally becoming a
reasonable-looking class). This takes advantage of the new UI protocol
and is ready for further improvements, namely, queuing input for tests
that require swipes.
The ui.py module contains a Click-based implementation of the UI
protocol. Use of callback_* methods has been limited and will probably
be cleaned up further (The contract has changed so we'll try to make
third party code fail noisily. It is unclear whether a backwards
compatible approach will be possible).
Furthermore, device.recovery() now takes a callback as an argument. This
way we can get rid of WordRequest callbacks, which are only used in the
recovery flow.
This clarifies the intent: the project is licenced under terms
of LGPL version 3 only, but the standard headers cover only "3 or later",
so we had to rewrite them.
In the same step, we removed author information from individual files
in favor of "SatoshiLabs and contributors", and include an AUTHORS
file that lists the contributors.
Apologies to those whose names are missing; please contact us if you wish
to add your info to the AUTHORS file.