Tahoe-lafs

Latest version: v1.20.0

Safety actively analyzes 715128 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 6

1.15.1

Not secure
''''''''''''''

Misc/Other
----------

- `3469 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3469>`_, `#3608 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3608>`_

1.15.0

'''''''''''''''''''''''''''

Features
--------

- PyPy is now a supported platform. (`1792 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1792>`_)
- allmydata.testing.web, a new module, now offers a supported Python API for testing Tahoe-LAFS web API clients. (`3317 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3317>`_)


Bug Fixes
---------

- Make directory page links work. (`3312 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3312>`_)
- Use last known revision of Chutney that is known to work with Python 2 for Tor integration tests. (`3348 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3348>`_)
- Mutable files now use RSA exponent 65537 (`3349 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3349>`_)


Dependency/Installation Changes
-------------------------------

- Tahoe-LAFS now supports CentOS 8 and no longer supports CentOS 7. (`3296 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3296>`_)
- Tahoe-LAFS now supports Ubuntu 20.04. (`3328 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3328>`_)


Removed Features
----------------

- The Magic Folder frontend has been split out into a stand-alone project. The functionality is no longer part of Tahoe-LAFS itself. Learn more at <https://github.com/LeastAuthority/magic-folder>. (`#3284 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3284>`_)
- Slackware 14.2 is no longer a Tahoe-LAFS supported platform. (`3323 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3323>`_)


Other Changes
-------------

- The Tahoe-LAFS project has adopted a formal code of conduct. (`2755 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2755>`_)
- (`3263 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3263>`_, `#3324 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3324>`_)
- The "coverage" tox environment has been replaced by the "py27-coverage" and "py36-coverage" environments. (`3355 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3355>`_)


Misc/Other
----------

- `3247 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3247>`_, `#3254 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3254>`_, `#3277 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3277>`_, `#3278 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3278>`_, `#3287 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3287>`_, `#3288 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3288>`_, `#3289 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3289>`_, `#3290 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3290>`_, `#3291 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3291>`_, `#3292 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3292>`_, `#3293 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3293>`_, `#3294 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3294>`_, `#3297 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3297>`_, `#3298 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3298>`_, `#3299 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3299>`_, `#3300 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3300>`_, `#3302 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3302>`_, `#3303 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3303>`_, `#3304 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3304>`_, `#3305 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3305>`_, `#3306 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3306>`_, `#3308 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3308>`_, `#3309 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3309>`_, `#3313 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3313>`_, `#3315 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3315>`_, `#3316 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3316>`_, `#3320 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3320>`_, `#3325 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3325>`_, `#3326 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3326>`_, `#3329 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3329>`_, `#3330 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3330>`_, `#3331 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3331>`_, `#3332 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3332>`_, `#3333 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3333>`_, `#3334 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3334>`_, `#3335 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3335>`_, `#3336 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3336>`_, `#3338 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3338>`_, `#3339 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3339>`_, `#3340 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3340>`_, `#3341 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3341>`_, `#3342 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3342>`_, `#3343 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3343>`_, `#3344 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3344>`_, `#3346 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3346>`_, `#3351 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3351>`_, `#3353 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3353>`_, `#3354 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3354>`_, `#3356 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3356>`_, `#3357 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3357>`_, `#3358 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3358>`_, `#3359 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3359>`_, `#3361 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3361>`_, `#3364 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3364>`_, `#3365 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3365>`_, `#3366 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3366>`_, `#3367 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3367>`_, `#3368 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3368>`_, `#3370 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3370>`_, `#3372 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3372>`_, `#3373 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3373>`_, `#3374 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3374>`_, `#3375 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3375>`_, `#3376 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3376>`_, `#3377 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3377>`_, `#3378 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3378>`_, `#3380 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3380>`_, `#3381 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3381>`_, `#3382 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3382>`_, `#3383 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3383>`_, `#3386 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3386>`_, `#3387 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3387>`_, `#3388 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3388>`_, `#3389 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3389>`_, `#3391 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3391>`_, `#3392 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3392>`_, `#3393 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3393>`_, `#3394 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3394>`_, `#3395 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3395>`_, `#3396 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3396>`_, `#3397 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3397>`_, `#3398 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3398>`_, `#3401 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3401>`_, `#3403 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3403>`_, `#3406 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3406>`_, `#3408 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3408>`_, `#3409 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3409>`_, `#3411 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3411>`_, `#3415 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3415>`_, `#3416 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3416>`_, `#3417 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3417>`_, `#3421 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3421>`_, `#3422 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3422>`_, `#3423 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3423>`_, `#3424 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3424>`_, `#3425 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3425>`_, `#3426 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3426>`_, `#3427 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3427>`_, `#3429 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3429>`_, `#3430 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3430>`_, `#3431 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3431>`_, `#3436 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3436>`_, `#3437 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3437>`_, `#3438 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3438>`_, `#3439 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3439>`_, `#3440 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3440>`_, `#3442 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3442>`_, `#3443 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3443>`_, `#3446 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3446>`_, `#3448 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3448>`_, `#3449 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3449>`_, `#3450 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3450>`_, `#3451 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3451>`_, `#3452 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3452>`_, `#3453 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3453>`_, `#3455 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3455>`_, `#3456 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3456>`_, `#3458 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3458>`_, `#3462 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3462>`_, `#3463 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3463>`_, `#3464 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3464>`_

1.14.0

Not secure
'''''''''''''''''''''''''''

Features
--------

- Magic-Folders are now supported on macOS. (`1432 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1432>`_)
- Add a "tox -e draftnews" which runs towncrier in draft mode (`2942 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2942>`_)
- Fedora 29 is now tested as part of the project's continuous integration system. (`2955 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2955>`_)
- The Magic-Folder frontend now emits structured, causal logs. This makes it easier for developers to make sense of its behavior and for users to submit useful debugging information alongside problem reports. (`2972 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2972>`_)
- The `tahoe` CLI now accepts arguments for configuring structured logging messages which Tahoe-LAFS is being converted to emit. This change does not introduce any new defaults for on-filesystem logging. (`2975 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2975>`_)
- The web API now publishes streaming Eliot logs via a token-protected WebSocket at /private/logs/v1. (`3006 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3006>`_)
- End-to-end in-memory tests for websocket features (`3041 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3041>`_)
- allmydata.interfaces.IFoolscapStoragePlugin has been introduced, an extension point for customizing the storage protocol. (`3049 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3049>`_)
- Static storage server "announcements" in ``private/servers.yaml`` are now individually logged and ignored if they cannot be interpreted. (`3051 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3051>`_)
- Storage servers can now be configured to load plugins for allmydata.interfaces.IFoolscapStoragePlugin and offer them to clients. (`3053 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3053>`_)
- Storage clients can now be configured to load plugins for allmydata.interfaces.IFoolscapStoragePlugin and use them to negotiate with servers. (`3054 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3054>`_)
- The [storage] configuration section now accepts a boolean *anonymous* item to enable or disable anonymous storage access. The default behavior remains unchanged. (`3184 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3184>`_)
- Enable the helper when creating a node with `tahoe create-node --helper` (`3235 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3235>`_)


Bug Fixes
---------

- refactor initialization code to be more async-friendly (`2870 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2870>`_)
- Configuration-checking code wasn't being called due to indenting (`2935 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2935>`_)
- refactor configuration handling out of Node into _Config (`2936 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2936>`_)
- "tox -e codechecks" no longer dirties the working tree. (`2941 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2941>`_)
- Updated the Tor release key, used by the integration tests. (`2944 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2944>`_)
- `tahoe backup` no longer fails with an unhandled exception when it encounters a special file (device, fifo) in the backup source. (`2950 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2950>`_)
- Magic-Folders now creates spurious conflict files in fewer cases. In particular, if files are added to the folder while a client is offline, that client will not create conflict files for all those new files when it starts up. (`2965 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2965>`_)
- The confusing and misplaced sub-command group headings in `tahoe --help` output have been removed. (`2976 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2976>`_)
- The Magic-Folder frontend is now more responsive to subtree changes on Windows. (`2997 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2997>`_)
- remove ancient bundled jquery and d3, and the "dowload timeline" feature they support (`3228 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3228>`_)


Dependency/Installation Changes
-------------------------------

- Tahoe-LAFS no longer makes start-up time assertions about the versions of its dependencies. It is the responsibility of the administrator of the installation to ensure the correct version of dependencies are supplied. (`2749 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2749>`_)
- Tahoe-LAFS now depends on Twisted 16.6 or newer. (`2957 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2957>`_)


Removed Features
----------------

- "tahoe rm", an old alias for "tahoe unlink", has been removed. (`1827 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1827>`_)
- The direct dependencies on pyutil and zbase32 have been removed. (`2098 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2098>`_)
- Untested and unmaintained code for running Tahoe-LAFS as a Windows service has been removed. (`2239 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2239>`_)
- The redundant "pypywin32" dependency has been removed. (`2392 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2392>`_)
- Fedora 27 is no longer tested as part of the project's continuous integration system. (`2955 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2955>`_)
- "tahoe start", "tahoe daemonize", "tahoe restart", and "tahoe stop" are now deprecated in favor of using "tahoe run", possibly with a third-party process manager. (`3273 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3273>`_)


Other Changes
-------------

- Tahoe-LAFS now tests for PyPy compatibility on CI. (`2479 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2479>`_)
- Tahoe-LAFS now requires Twisted 18.4.0 or newer. (`2771 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2771>`_)
- Tahoe-LAFS now uses towncrier to maintain the NEWS file. (`2908 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2908>`_)
- The release process document has been updated. (`2920 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2920>`_)
- allmydata.test.test_system.SystemTest is now more reliable with respect to bound address collisions. (`2933 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2933>`_)
- The Tox configuration has been fixed to work around a problem on Windows CI. (`2956 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2956>`_)
- The PyInstaller CI job now works around a pip/pyinstaller incompatibility. (`2958 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2958>`_)
- Some CI jobs for integration tests have been moved from TravisCI to CircleCI. (`2959 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2959>`_)
- Several warnings from a new release of pyflakes have been fixed. (`2960 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2960>`_)
- Some Slackware 14.2 continuous integration problems have been resolved. (`2961 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2961>`_)
- Some macOS continuous integration failures have been fixed. (`2962 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2962>`_)
- The NoNetworkGrid implementation has been somewhat improved. (`2966 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2966>`_)
- A bug in the test suite for the create-alias command has been fixed. (`2967 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2967>`_)
- The integration test suite has been updated to use pytest-twisted instead of deprecated pytest APIs. (`2968 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2968>`_)
- The magic-folder integration test suite now performs more aggressive cleanup of the processes it launches. (`2969 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2969>`_)
- The integration tests now correctly document the `--keep-tempdir` option. (`2970 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2970>`_)
- A misuse of super() in the integration tests has been fixed. (`2971 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2971>`_)
- Several utilities to facilitate the use of the Eliot causal logging library have been introduced. (`2973 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2973>`_)
- The Windows CI configuration has been tweaked. (`2974 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2974>`_)
- The Magic-Folder frontend has had additional logging improvements. (`2977 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2977>`_)
- (`2981 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2981>`_, `#2982 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2982>`_)
- Added a simple sytax checker so that once a file has reached python3 compatibility, it will not regress. (`3001 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3001>`_)
- Converted all uses of the print statement to the print function in the ./misc/ directory. (`3002 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3002>`_)
- The contributor guidelines are now linked from the GitHub pull request creation page. (`3003 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3003>`_)
- Updated the testing code to use the print function instead of the print statement. (`3008 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3008>`_)
- Replaced print statement with print fuction for all tahoe_* scripts. (`3009 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3009>`_)
- Replaced all remaining instances of the print statement with the print function. (`3010 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3010>`_)
- Replace StringIO imports with six.moves. (`3011 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3011>`_)
- Updated all Python files to use PEP-3110 exception syntax for Python3 compatibility. (`3013 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3013>`_)
- Update raise syntax for Python3 compatibility. (`3014 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3014>`_)
- Updated instances of octal literals to use the format 0o123 for Python3 compatibility. (`3015 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3015>`_)
- allmydata.test.no_network, allmydata.test.test_system, and allmydata.test.web.test_introducer are now more reliable with respect to bound address collisions. (`3016 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3016>`_)
- Removed tuple unpacking from function and lambda definitions for Python3 compatibility. (`3019 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3019>`_)
- Updated Python2 long numeric literals for Python3 compatibility. (`3020 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3020>`_)
- CircleCI jobs are now faster as a result of pre-building configured Docker images for the CI jobs. (`3024 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3024>`_)
- Removed used of backticks for "repr" for Python3 compatibility. (`3027 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3027>`_)
- Updated string literal syntax for Python3 compatibility. (`3028 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3028>`_)
- Updated CI to enforce Python3 syntax for entire repo. (`3030 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3030>`_)
- Replaced pycryptopp with cryptography. (`3031 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3031>`_)
- All old-style classes ported to new-style. (`3042 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3042>`_)
- Whitelisted "/bin/mv" as command for codechecks performed by tox. This fixes a current warning and prevents future errors (for tox 4). (`3043 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3043>`_)
- Progress towards Python 3 compatibility is now visible at <https://tahoe-lafs.github.io/tahoe-depgraph/>. (`#3152 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3152>`_)
- Collect coverage information from integration tests (`3234 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3234>`_)
- NixOS is now a supported Tahoe-LAFS platform. (`3266 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3266>`_)


Misc/Other
----------

- `1893 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1893>`_, `#2266 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2266>`_, `#2283 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2283>`_, `#2766 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2766>`_, `#2980 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2980>`_, `#2985 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2985>`_, `#2986 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2986>`_, `#2987 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2987>`_, `#2988 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2988>`_, `#2989 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2989>`_, `#2990 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2990>`_, `#2991 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2991>`_, `#2992 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2992>`_, `#2995 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2995>`_, `#3000 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3000>`_, `#3004 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3004>`_, `#3005 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3005>`_, `#3007 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3007>`_, `#3012 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3012>`_, `#3017 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3017>`_, `#3021 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3021>`_, `#3023 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3023>`_, `#3025 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3025>`_, `#3026 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3026>`_, `#3029 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3029>`_, `#3036 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3036>`_, `#3038 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3038>`_, `#3048 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3048>`_, `#3086 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3086>`_, `#3097 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3097>`_, `#3111 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3111>`_, `#3118 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3118>`_, `#3119 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3119>`_, `#3227 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3227>`_, `#3229 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3229>`_, `#3232 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3232>`_, `#3233 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3233>`_, `#3237 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3237>`_, `#3238 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3238>`_, `#3239 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3239>`_, `#3240 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3240>`_, `#3242 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3242>`_, `#3243 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3243>`_, `#3245 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3245>`_, `#3246 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3246>`_, `#3248 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3248>`_, `#3250 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3250>`_, `#3252 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3252>`_, `#3255 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3255>`_, `#3256 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3256>`_, `#3259 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3259>`_, `#3261 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3261>`_, `#3262 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3262>`_, `#3263 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3263>`_, `#3264 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3264>`_, `#3265 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3265>`_, `#3267 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3267>`_, `#3268 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3268>`_, `#3271 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3271>`_, `#3272 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3272>`_, `#3274 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3274>`_, `#3275 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3275>`_, `#3276 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3276>`_, `#3279 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3279>`_, `#3281 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3281>`_, `#3282 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3282>`_, `#3285 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3285>`_

1.13.0

Not secure
'''''''''''''''''''''''''''''''

New Features
------------

The ``tahoe list-aliases`` command gained the ``--readonly-uri``
option in `PR400`_, which lists read-only capabilities (the default
shows read/write capabilities if available). This command also gained
a ``--json`` option in `PR452`_, providing machine-readable output.

A new command ``tahoe status`` is added, showing some statistics and
currently active operations (similar to the ``/status`` page in the
Web UI). See also `PR502`_.

Immutable uploads now use the "servers of happiness" algorithm for
uploading shares. This means better placement of shares on available
servers. See `PR416`_.

To join a new client to a grid, the command ``tahoe invite`` was
added. This uses `magic wormhole`_ to connect two computers and
exchange the required information to start the client. The "client
side" of this command is the also new option ``tahoe
create-client --join=``. Together, this provides a way to provision a
new client without having to securely transmit the fURL and other
details. `PR418`_

``tahoe backup`` now reports progress. `PR474`_

The ``tub.port=`` option can now accept ``listen:i2p`` or
``listen:tor`` options to use popular anonymity networks with storage
servers. See `PR437`_

The place where storage servers put shares (the "storage path") is now
configurable (`PR472`_).

A PyInstaller-based build is now available (`PR421`_). A "Docker
compose" setup for development purposes is now available (`PR445`_).

There is now a recommended workflow for Zcash-based donations to support
storage server operators (`PR506`_).

Bug Fixes in Core
-----------------

Some bugs with pidfile handling were fixed (`PR440`_ and `PR450`_)
meaning invalid pidfiles are now deleted. Error-messages related to
``tahoe.cfg`` now include the full path to the file. `PR501`_ fixes
"address already in use" test failures. `PR502`_ fixes ticket 2926
("tahoe status" failures). `PR487`_ fixes ticket 1455 (setting
``X-Frame-Options: DENY``)


Web UI Changes
--------------

We set the "Referrer-Policy: no-referrer" header on all requests. The
Welcome page now understands the JSON option (`PR430`_) and OPTIONS
requests are handled (`PR447`_).


Magic Folder Changes
--------------------

Multiple magic-folders in a single Tahoe client are now
supported. Bugs with ``.backup`` files have been fixed, meaning
spurious ``.backup`` files will be produced less often (`PR448`_,
`PR475`_). Handling of default umask on new magic-folder files is
fixed in `PR458`_. The user mtime value is now correctly preserved
(`PR457`_).

A bug in ``tahoe magic-folder status`` causing active operations to
sometimes not show up is fixed (`PR461`_). If a directory is missing,
it is created (`PR492`_).


Raw Pull Requests
-----------------

In total, 50 Pull Requests were merged for this release, including
contributions of code or review from 15 different GitHub users. Thanks
everyone! A complete list of these PRs and contributions:

`PR380`_: `daira`_
`PR400`_: `meejah`_ (with `warner`_)
`PR403`_: `meejah`_
`PR405`_: `meejah`_ (with `warner`_)
`PR406`_: `meejah`_ (with `warner`_)
`PR407`_: `david415`_ (with `meejah`_, `warner`_)
`PR409`_: `str4d`_ (with `warner`_)
`PR410`_: `tpltnt`_ (with `warner`_)
`PR411`_: `tpltnt`_ (with `warner`_, `meejah`_)
`PR412`_: `tpltnt`_ (with `warner`_)
`PR414`_: `tpltnt`_ (with `meejah`_, `warner`_)
`PR416`_: `david415`_, `meejah`_, `markberger`_, `warner`_
`PR417`_: `meejah`_ (with `pataquets`_, `warner`_)
`PR418`_: `meejah`_ (with `crwood`_, `exarkun`_, `warner`_)
`PR419`_: `tpltnt`_ (with `warner`_)
`PR420`_: `ValdikSS`_ (with `warner`_)
`PR421`_: `crwood`_ (with `meejah`_, `warner`_)
`PR423`_: `warner`_
`PR428`_: `warner`_
`PR429`_: `exarkun`_ (with `warner`_)
`PR430`_: `david415`_, `exarkun`_ (with `warner`_)
`PR432`_: `exarkun`_ (with `meejah`_)
`PR433`_: `exarkun`_ (with `warner`_)
`PR434`_: `exarkun`_ (with `warner`_)
`PR437`_: `warner`_
`PR438`_: `warner`_ (with `meejah`_)
`PR440`_: `exarkun`_, `lpirl`_ (with `meejah`_)
`PR444`_: `AnBuKu`_ (with `warner`_)
`PR445`_: `bookchin`_ (with `warner`_)
`PR447`_: `meejah`_ (with `tpltnt`_, `meejah`_)
`PR448`_: `meejah`_ (with `warner`_)
`PR450`_: `exarkun`_, `meejah`_, `lpirl`_
`PR452`_: `meejah`_ (with `tpltnt`_)
`PR453`_: `meejah`_
`PR454`_: `meejah`_ (with `tpltnt`_, `meejah`_, `warner`_)
`PR455`_: `tpltnt`_ (with `meejah`_)
`PR456`_: `meejah`_ (with `meejah`_)
`PR457`_: `meejah`_ (with `crwood`_, `tpltnt`_)
`PR458`_: `meejah`_ (with `tpltnt`_)
`PR460`_: `tpltnt`_ (with `exarkun`_, `meejah`_)
`PR462`_: `meejah`_ (with `crwood`_)
`PR464`_: `meejah`_
`PR470`_: `meejah`_ (with `exarkun`_, `tpltnt`_, `warner`_)
`PR472`_: `exarkun`_, `meskio`_
`PR474`_: `exarkun`_
`PR475`_: `meejah`_ (with `exarkun`_)
`PR482`_: `crwood`_ (with `warner`_)
`PR485`_: `warner`_
`PR486`_: `exarkun`_ (with `warner`_)
`PR487`_: `exarkun`_ (with `tpltnt`_)
`PR489`_: `exarkun`_
`PR490`_: `exarkun`_
`PR491`_: `exarkun`_ (with `meejah`_)
`PR492`_: `exarkun`_ (with `meejah`_, `tpltnt`_)
`PR493`_: `exarkun`_ (with `meejah`_)
`PR494`_: `exarkun`_ (with `meejah`_)
`PR497`_: `meejah`_ (with `multikatt`_, `exarkun`_)
`PR499`_: `exarkun`_ (with `meejah`_)
`PR501`_: `exarkun`_ (with `meejah`_)
`PR502`_: `exarkun`_ (with `meejah`_)
`PR506`_: `exarkun`_ (with `crwood`_, `nejucomo`_)


Developer and Internal Changes
------------------------------

People hacking on Tahoe-LAFS code will be interested in some internal
improvements which shouldn't have any user-visible effects:

* internal: skip some unicode tests on non-unicode platforms 2912
* internal: tox: pre-install Incremental to workaround setuptools bug 2913
* internal: fix PyInstaller builds `PR482`_
* internal: use implementer instead of implements `PR406`_
* internal: improve happiness integration test 2895 `PR432`_
* web internal: refactor response-format (?t=) logic 2893 `PR429`_
* internal: fix pyflakes issues 2898 `PR434`_
* internal: setup.py use find_packages 2897 `PR433`_
* internal: ValueOrderedDict fixes 2891
* internal: remove unnused NumDict 2891 `PR438`_
* internal: setup.py use python_requires= so tox3 works 2876
* internal: rewrite tahoe stop/start/daemonize refs 1148 275 1121 1377 2149 719 `PR417`_
* internal: add docs links to RFCs/etc `PR456`_
* internal: magic-folder test improvement `PR453`_
* internal: pytest changes `PR462`_
* internal: upload appveyor generated wheels as artifacts 2903
* internal: fix tox-vs-setuptools-upgrade 2910
* deps: require txi2p>=0.3.2 to work around TLS who-is-client issue 2861 `PR409`_
* deps: now need libyaml-dev from system before build `PR420`_
* deps: twisted>=16.4.0 for "python -m twisted.trial" `PR454`_
* deps: pin pypiwin32 to 219 until upstream bug resolved `PR464`_
* deps: setuptools >=28.8.0 for something `PR470`_
* deps: use stdlib "json" instead of external "simplejson" 2766 `PR405`_
* complain more loudly in setup.py under py3 `PR414`_
* rename "filesystem" to "file store" 2345 `PR380`_
* replace deprecated twisted.web.client with treq 2857 `PR428`_
* improve/stablize some test coverage 2891
* TODO: can we remove this now? pypiwin32 is now at 223
* use secure mkstemp() `PR460`_
* test "tahoe list-aliases --readonly-uri" 2863 `PR403`_
* 455: remove outdated comment
* `PR407`_ fix stopService calls
* `PR410`_ explicit python2.7 virtualenv
* `PR419`_ fix list of supported OSes
* `PR423`_ switch travis to a supported Ubuntu
* deps: no longer declare a PyCrypto dependency (actual use vanished long ago) `PR514`_



.. _PR380: https://github.com/tahoe-lafs/tahoe-lafs/pull/380
.. _PR400: https://github.com/tahoe-lafs/tahoe-lafs/pull/400
.. _PR403: https://github.com/tahoe-lafs/tahoe-lafs/pull/403
.. _PR405: https://github.com/tahoe-lafs/tahoe-lafs/pull/405
.. _PR406: https://github.com/tahoe-lafs/tahoe-lafs/pull/406
.. _PR407: https://github.com/tahoe-lafs/tahoe-lafs/pull/407
.. _PR409: https://github.com/tahoe-lafs/tahoe-lafs/pull/409
.. _PR410: https://github.com/tahoe-lafs/tahoe-lafs/pull/410
.. _PR412: https://github.com/tahoe-lafs/tahoe-lafs/pull/412
.. _PR414: https://github.com/tahoe-lafs/tahoe-lafs/pull/414
.. _PR416: https://github.com/tahoe-lafs/tahoe-lafs/pull/416
.. _PR417: https://github.com/tahoe-lafs/tahoe-lafs/pull/417
.. _PR418: https://github.com/tahoe-lafs/tahoe-lafs/pull/418
.. _PR419: https://github.com/tahoe-lafs/tahoe-lafs/pull/419
.. _PR420: https://github.com/tahoe-lafs/tahoe-lafs/pull/420
.. _PR421: https://github.com/tahoe-lafs/tahoe-lafs/pull/421
.. _PR423: https://github.com/tahoe-lafs/tahoe-lafs/pull/423
.. _PR428: https://github.com/tahoe-lafs/tahoe-lafs/pull/428
.. _PR429: https://github.com/tahoe-lafs/tahoe-lafs/pull/429
.. _PR430: https://github.com/tahoe-lafs/tahoe-lafs/pull/430
.. _PR432: https://github.com/tahoe-lafs/tahoe-lafs/pull/432
.. _PR433: https://github.com/tahoe-lafs/tahoe-lafs/pull/433
.. _PR434: https://github.com/tahoe-lafs/tahoe-lafs/pull/434
.. _PR437: https://github.com/tahoe-lafs/tahoe-lafs/pull/437
.. _PR438: https://github.com/tahoe-lafs/tahoe-lafs/pull/438
.. _PR440: https://github.com/tahoe-lafs/tahoe-lafs/pull/440
.. _PR444: https://github.com/tahoe-lafs/tahoe-lafs/pull/444
.. _PR445: https://github.com/tahoe-lafs/tahoe-lafs/pull/445
.. _PR447: https://github.com/tahoe-lafs/tahoe-lafs/pull/447
.. _PR448: https://github.com/tahoe-lafs/tahoe-lafs/pull/448
.. _PR450: https://github.com/tahoe-lafs/tahoe-lafs/pull/450
.. _PR452: https://github.com/tahoe-lafs/tahoe-lafs/pull/452
.. _PR453: https://github.com/tahoe-lafs/tahoe-lafs/pull/453
.. _PR454: https://github.com/tahoe-lafs/tahoe-lafs/pull/454
.. _PR456: https://github.com/tahoe-lafs/tahoe-lafs/pull/456
.. _PR457: https://github.com/tahoe-lafs/tahoe-lafs/pull/457
.. _PR458: https://github.com/tahoe-lafs/tahoe-lafs/pull/458
.. _PR460: https://github.com/tahoe-lafs/tahoe-lafs/pull/460
.. _PR462: https://github.com/tahoe-lafs/tahoe-lafs/pull/462
.. _PR464: https://github.com/tahoe-lafs/tahoe-lafs/pull/464
.. _PR470: https://github.com/tahoe-lafs/tahoe-lafs/pull/470
.. _PR472: https://github.com/tahoe-lafs/tahoe-lafs/pull/472
.. _PR474: https://github.com/tahoe-lafs/tahoe-lafs/pull/474
.. _PR482: https://github.com/tahoe-lafs/tahoe-lafs/pull/482
.. _PR502: https://github.com/tahoe-lafs/tahoe-lafs/pull/502
.. _PR506: https://github.com/tahoe-lafs/tahoe-lafs/pull/506
.. _PR514: https://github.com/tahoe-lafs/tahoe-lafs/pull/514
.. _AnBuKu: https://github.com/AnBuKu
.. _ValdikSS: https://github.com/ValdikSS
.. _bookchin: https://github.com/bookchin
.. _crwood: https://github.com/crwood
.. _nejucomo: https://github.com/nejucomo
.. _daira: https://github.com/daira
.. _david415: https://github.com/david415
.. _exarkun: https://github.com/exarkun
.. _lpirl: https://github.com/lpirl
.. _markberger: https://github.com/markberger
.. _meejah: https://github.com/meejah
.. _meskio: https://github.com/meskio
.. _multikatt: https://github.com/multikatt
.. _pataquets: https://github.com/pataquets
.. _str4d: https://github.com/str4d
.. _tpltnt: https://github.com/tpltnt
.. _warner: https://github.com/warner

1.12.1

Not secure
''''''''''''''''''''''''''''

This fixes a few small problems discovered just after 1.12.0 was released.

* ``introducers.yaml`` was entirely broken (due to a unicode-vs-ascii
problem), and the documentation recommended an invalid syntax. Both have
been fixed. (2862)
* Creating a node with ``--hide-ip`` shouldn't set ``tcp = tor`` if txtorcon
is unavailable. I2P-only systems should get ``tcp = disabled``. (2860)
* As a result, we now require foolscap-0.12.6 .
* setup.py now creates identical wheels on win32 and unix. Previously wheels
created on windows got an unconditional dependency upon ``pypiwin32``,
making them uninstallable on unix. Now that dependency is marked as
``sys_platform=win32`` only. (2763)

Some other small changes include:

* The deep-stats t=json response now includes an "api-version" field,
currently set to 1. (567)
* WUI Directory listings use ``rel=noreferrer`` to avoid leaking the dircap
to the JS contents of the target file. (151, 378)
* Remove the dependency on ``shutilwhich`` (2856)

1.12.0

Not secure
''''''''''''''''''''''''''''

New Features
------------

This release features improved Tor/I2P integration. It is now easy to::

* use Tor to hide your IP address during external network activity
* connect to Tor/I2P-based storage servers
* run an Introducer or a storage node as a Tor "onion service"

See docs/anonymity-configuration.rst for instructions and new node-creation
arguments (--hide-ip, --listen=tor), which include ways to use SOCKS servers
for outbound connections. Tor/I2P/Socks support requires extra python
libraries to be installed (e.g. 'pip install tahoe-lafs[tor]'), as well as
matching (non-python) daemons available on the host system. (tickets 517,
2490, 2838)

Nodes can use multiple introducers by adding entries to a new
``private/introducers.yaml`` file, or stop using introduction entirely by
omitting the ``introducer.furl`` key from tahoe.cfg (introducerless clients
will need static servers configured to connect anywhere). Server
announcements are sent to all connected Introducers, and clients merge all
announcements they see, which can improve grid reliability. (68)

In addition, nodes now cache the announcements they receive in a YAML file,
and use their cached information at startup until the Introducer connection
is re-established. This makes nodes more tolerant of Introducers that are
temporarily offline. Nodes admins can copy text from the cache into a new
``private/servers.yaml`` file to add "static servers", which augment/override
what the Introducer offers. This can modify aspects of the server, or use
servers that were never announced in the first place. (2788)

Nodes now use a separate Foolscap "Tub" for each server connection, so
``servers.yaml`` can override the connection rules (Tor vs direct-TCP) for
each one independently. This offers a slight privacy improvement, but slows
down connections slightly (perhaps 75ms per server), and breaks an obscure
NAT-bypass trick which enabled storage servers to run behind NAT boxes (but
only when all the *clients* of the storage server had public IP addresses,
and were also configured as servers). (2759, 517)

"Magic Folders" is an experimental two-way directory synchronization tool,
contributed by Least Authority Enterprises, which replaces the previous
experimental (one-way) "drop-upload" feature. This allows multiple users to
keep a single directory in-sync, using Tahoe as the backing store. See
docs/frontends/magic-folder.rst for details and configuration instructions.

Compatibility Issues
--------------------

The old version-1 Introducer protocol has been removed. Tahoe has used the
version-2 protocol since 1.10 (released in 2013), but all nodes (clients,
servers, and the Introducer itself) provided backwards-compatibility
translations when encountering older peers. These translations were finally
removed, so Tahoe nodes at 1.12 or later will not be able to interact with
nodes at 1.9 or older. (2784)

The versions of Tahoe (1.11.0) and Foolscap (0.6.5) that shipped in
Debian/Jesse (the most recent stable release, as of December 2016) are
regrettably not forwards-compatible with this new version. Nodes running
Jesse will not be able to connect to servers or introducers created with this
release because they cannot parse the new ``tcp:HOST:PORT`` hint syntax (this
syntax has been around for a while, but this is the first Tahoe release to
automatically generate such hints). If you need to work around this, then
after creating your new node, edit the tahoe.cfg of your new
server/introducer: in ``[node] tub.location``, make each connection hint look
like ``HOST:PORT`` instead of ``tcp:HOST:PORT``. If your grid only has nodes
with Foolscap-0.7.0 or later, you will not need this workaround. (2831)

Nodes now use an Ed25519 public key as a serverid, instead of a Foolscap "tub
id", so status displays will report a different serverid after upgrade. For
the most part this should be self-consistent, however if you have an old

Page 2 of 6

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.