User-visible changes in "magic-wormhole":

Release 0.12.0 (04-Apr-2020)

This release also includes an incomplete implementation of the new "Dilation" API (see ticket #312 for details). In the future this will enable restarting interrupted transfers, tolerating changes in network address, bidirectional transfers in a long-running GUI/daemon process, and more. The protocol is not finalized, nor is it backward compatible with the old "Transit" protocol yet, so there is no CLI access so far. The code is present and tested to make sure it doesn't regress and for ease of development, but intrepid folks who want to try it out will need to write a client first (and be aware that the protocol may change out from under them). A future release will add compatibility negotiation with old clients and start using the new protocol.

PRs and tickets addressed in this release: #144 #312 #318 #321 #323 #327 #330 #331 #332 #339 #349 #361 #365 #368 #367 #378 #379.

Thanks to the many contributors of bugs, patches, and other help with this release:

Release 0.11.2 (13-Nov-2018)

Rerelease to fix the long description on PyPI. Thanks to Marius Gedminas for tracking down the problem and providing the fix. (#316)

Release 0.11.1 (13-Nov-2018)

Thanks to Marius Gedminas, FreddieHo, and Jakub Wilk for patches and bug reports in this release.

Release 0.11.0 (16-Oct-2018)

Packaging changes:

Thanks to Andreas Baeumla Bäuml, Marius mgedmin Gedminas, Ofek ofek Lev, Thomas ThomasWaldmann Waldmann, and Vasudev copyninja Kamath for patches and bug reports in this release.

Release 0.10.5 (14-Feb-2018)

Release 0.10.4 (28-Jan-2018)

Minor client changes:

We also moved the docs to readthedocs (https://magic-wormhole.readthedocs.io/), rather than pointing folks at the GitHub rendered markdown files. This should encourage us to write more instructional text in the future.

Finally, we removed the Transit Relay server code from the magic-wormhole package and repository. It now lives in a separate repository named magic-wormhole-transit-relay, and we only import it for tests. If you'd like to run a transit relay, you'll want to use pip install magic-wormhole-transit-relay.

Thanks to meejah, Jonathan "jml" Lange, Alex Gaynor, David "dharrigan" Harrigan, and Jaye "jtdoepke" Doepke, for patches and bug reports in this release.

Release 0.10.3 (12-Sep-2017)

Minor client changes:

Server changes:

In addition, the snapcraft packaging was updated (#202), and setup.py now properly marks the dependency on attrs (#248).

Thanks to cclauss, Buckaroo9, JP Calderone, Pablo Oliveira, Leo Arias, Johan Lindskogen, lanzelot1989, CottonEaster, Chandan Rai, Jaakko Luttinen, Alex Gaynor, and Quentin Hibon for patches and bug reports fixed in this release.

Release 0.10.2 (26-Jun-2017)

WebSocket connection errors are now reported properly. Previous versions crashed with an unhelpful automat._core.NoTransition exception when the TCP connection was established but WebSocket negotiation could not complete (e.g. the URL path was incorrect and the server reported a 404, or we connected to an SMTP or other non-HTTP server). (#180)

The unit test suite should now pass: a CLI-version advertisement issue caused the 0.10.1 release tests to fail.

Thanks to Fabien "fdev31" Devaux for bug reports addressed in this release.

Release 0.10.1 (26-Jun-2017)

Server-only: the rendezvous server no longer advertises a CLI version unless specifically requested (by passing --advertise-version= to wormhole-server start). The public server no longer does this, so e.g. 0.10.0 clients will not emit a warning about the server recommending the 0.9.2 release. This feature was useful when the only way to use magic-wormhole was to install the CLI tool with pip, however now that 0.9.1 is in debian Stretch (and we hope to maintain compatibility with it), the nag-you-to-upgrade messages probably do more harm than good. (#179)

No user-visible client-side changes.

Thanks to ilovezfs and JP Calderone for bug reports addressed in this release.

Release 0.10.0 (24-Jun-2017)

The client-side code was completely rewritten, with proper Automat state machines. The only immediately user-visible consequence is that restarting the rendezvous server no longer terminates all waiting clients, so server upgrades won't be quite so traumatic. In the future, this will also support "Journaled Mode" (see docs/journal.md for details). (#42, #68)

The programmatic API has changed (see docs/api.md). Stability is not promised until we reach 1.0, but this should be close, at least for the non-Transit portions.

wormhole send DIRECTORY can now handle larger (>2GB) directories. However the entire zipfile is built in-RAM before transmission, so the maximum size is still limited by available memory (follow #58 for progress on fixing this). (#138)

wormhole rx --output-file= for a pre-existing file will now overwrite the file (noisily), instead of terminating with an error. (#73)

We now test on py3.6. Support for py3.3 was dropped. Magic-wormhole should now work on NetBSD. (#158)

Added a Dockerfile to build a rendezvous/transit-relay server. (#149)

wormhole-server --disallow-list instructs the rendezvous server to not honor "list nameplates" requests, effectively disabling tab-completion of the initial numeric portion of the wormhole code, but also making DoS attacks slightly easier to detect. (#53, #150)

wormhole send --ignore-unsendable-files will skip things that cannot be sent (mostly dangling symlinks and files for which you do not have read permission, but possibly also unix-domain sockets, device nodes, and pipes). (#112, #161)

txtorcon is now required by default, so the magic-wormhole[tor] "extra" was removed, and a simple pip install magic-wormhole should provide tor-based transport as long as Tor itself is available. Also, Tor works on py3 now. (#136, #174)

python -m wormhole is an alternative way to run the CLI tool. (#159)

wormhole send might handle non-ascii (unicode) filenames better now. (#157)

Thanks to Alex Gaynor, Atul Varma, dkg, JP Calderone, Kenneth Reitz, Kurt Rose, maxalbert, meejah, midnightmagic, Robert Foss, Shannon Mulloy, and Shirley Kotian, for patches and bug reports in this release cycle. A special thanks to Glyph, Mark Williams, and the whole #twisted crew at PyCon for help with the transition to Automat.

Release 0.9.2 (16-Jan-2017)

Tor support was rewritten. wormhole send, wormhole receive, wormhole ssh invite, and wormhole ssh accept all now accept three Tor-related arguments:

If Tor is already running on your system (either as an OS-installed package, or because the TorBrowser application is running), simply adding --tor should be sufficient. If Tor is installed but not running, you may need to use both, e.g. wormhole send --tor --launch-tor. See docs/tor.md for more details. Note that Tor support must be requested at install time (with pip install magic-wormhole[tor]), and only works on python2.7 (not py3). (#64, #97)

The relay and transit URLs were changed to point at the project's official domain name (magic-wormhole.io). The servers themselves are identical (only the domain name changed, not the IP address), so this release is fully compatible with previous releases.

A packaging file for "snapcraft.io" is now included. (#131)

wormhole receive now reminds you that tab-completion is available, if you didn't use the Tab key while entering the code. (#15)

wormhole receive should work on cygwin now (a problem with the readline-completion library caused a failure on previous releases). (#111)

Thanks to Atul Varma, Leo Arias, Daniel Kahn Gillmor, Christopher Wood, Kostin Anagnostopoulos, Martin Falatic, and Joey Hess for patches and bug reports in this cycle.

Release 0.9.1 (01-Jan-2017)

The wormhole client's --transit-helper= argument can now include a "relay priority" via a numerical priority= field, e.g. --transit-helper tcp:example.org:12345:priority=2.5. Clients exchange transit relay suggestions, then try to use the highest-priority relay first, falling back to others after a few seconds if necessary. Direct connections are always preferred to a relay. Clients running 0.9.0 or earlier will ignore priorities, and unmarked relay arguments have an implicit priority of 0. (#103)

Other changes:

Thanks to xloem, kneufeld, and meejah for their help this cycle.

Release 0.9.0 (24-Dec-2016)

This release fixes an important "Transit Relay" bug that would have prevented future versions from using non-default relay servers. It is now easier to run wormhole as a subprocess beneath some other program (the long term goal is to provide a nice API, but even with one, there will be programs written in languages without Wormhole bindings that may find it most convenient to use a subprocess).

Many thanks to patch submitters for this release: Joey Hess, Jared Anderson, Antoine Beaupré, and to everyone testing and filing issues on Github.

Release 0.8.2 (08-Dec-2016)

Thanks to everyone who submitted patches in this release cycle: anarcat, Ofekmeister, Tom Lowenthal, meejah, dreid, and dkg. And thanks to the many bug reporters on Github!

Release 0.8.1 (27-Jul-2016)

This release contains mostly minor changes.

The most noticeable is that long-lived wormholes should be more reliable now. Previously, if you run wormhole send but your peer doesn't run their receive for several hours, a NAT/firewall box on either side could stop forwarding traffic for the idle connection (without sending a FIN or RST to properly close the socket), causing both sides to hang forever and never actually connect. Now both sides send periodic keep-alive messages to prevent this.

In addition, by switching to "Click" for argument parsing, we now have short command aliases: wormhole tx does the same thing as wormhole send, and wormhole rx is an easier-to-spell equivalent of wormhole receive.

Other changes:

Many thanks to the folks who contributed to this release, during the PyCon sprints and afterwards: higs4281, laharah, Chris Wolfe, meejah, wsanchez, Kurt Neufeld, and Francois Marier.

Release 0.8.0 (28-May-2016)

This release is completely incompatible with the previous 0.7.6 release. Clients using 0.7.6 or earlier will not even notice clients using 0.8.0 or later.

Release 0.7.6 (08-May-2016)

Compatibility: this remains compatible with 0.7.x, and 0.8.x is still expected to break compatibility.

Release 0.7.5 (20-Apr-2016)

Compatibility:

Packaging:

Release 0.7.0 (28-Mar-2016)

Release 0.6.3 (29-Feb-2016)

Mostly internal changes:

Release 0.6.2 (12-Jan-2016)

Release 0.6.1 (03-Dec-2015)

Release 0.6.0 (23-Nov-2015)

Release 0.5.0 (07-Oct-2015)

Release 0.4.0 (22-Sep-2015)

This changes the protocol (to a symmetric form), breaking compatibility with 0.3.0 peers. Now both blocking-style and Twisted-style use a symmetric protocol, and the two sides do not need to figure out (ahead of time) which one goes first. The internal layout was rearranged, so applications that import wormhole must be updated.

Release 0.3.0 (24-Jun-2015)

Add preliminary Twisted support, only for symmetric endpoints (no initator/receiver distinction). Lacks code-entry tab-completion. May still leave timers lingering. Add test suite (only for Twisted, so far).

Use a sqlite database for Relay server state, to survive reboots with less data loss. Add "--advertise-version=" to "wormhole relay start", to override the version we recommend to clients.

Release 0.2.0 (10-Apr-2015)

Initial release: supports blocking/synchronous asymmetric endpoints (Initiator on one side, Receiver on the other). Codes can be generated by Initiator, or created externally and passed into both (as long as they start with digits: NNN-anything).