Synchronize local directories with Tahoe-LAFS storage grids

Related tags

Storagegridsync
Overview

Gridsync

Gridsync aims to provide a cross-platform, graphical user interface for Tahoe-LAFS, the Least Authority File Store. It is intended to simplify the Tahoe-LAFS installation and configuration process and ultimately provide user-friendly mechanisms for common use-cases like backing up local files, synchronizing directories between devices, and sharing files and folders with other users across all major desktop platforms (GNU/Linux, macOS, and Windows). More broadly, Gridsync aims to duplicate most of the core functionality provided by other, proprietary "cloud" backup and synchronization services and utilities (such as Dropbox and BitTorrent Sync) but without demanding any sacrifice of the user's privacy or freedom -- and without requiring usage or knowledge of the command line. Accordingly, Gridsync is developed with the goal in mind of making secure cloud storage freely available to everyone, without exception, without added barriers, and regardless of one's operating system choice.

Why Gridsync?

Tahoe-LAFS already provides a number of highly desirable properties for secure file-storage: in addition to offering client-side encryption, it is decentralized, robust, free (as in both beer and speech), stable and mature, and written by a group of very talented developers. Unfortunately -- and despite all of its technical merits -- Tahoe-LAFS has a number of persistent usability issues which steepen its learning curve: its installation requires manual compilation from source on Windows and macOS, its configuration consists in hand-editing text files, its primary interface requires heavy command line usage, and many of its fundamental concepts (e.g., "dircap", "shares", "servers-of-happiness") are opaque to new users or otherwise demand additional reading of the project's extensive documentation. Accordingly, Tahoe-LAFS' userbase consists primarily in seasoned developers and system administrators; non-technical users are naturally excluded from enjoying Tahoe-LAFS's aforementioned advantages.

The Gridsync project intends to overcome some of Tahoe-LAFS's usability barriers by means of following features:

  • "Batteries included" packaging -- Gridsync bundles will include Tahoe-LAFS and all required dependencies for a frictionless installation experience; no python installation or manual compilation is required.
  • A graphical user interface for managing primary Tahoe-LAFS functionality (e.g., starting, stopping, configuring gateways) -- the user will never have to edit a text file by hand or touch the command line.
  • "Native" look and feel -- Gridsync uses the Qt application framework, emulating native widgets on all target platforms; the user can expect Gridsync to behave like any other desktop application.
  • Automated bi-directional file synchronization -- Gridsync will monitor local and remote directories, seamlessly storing or retrieving new versions of files as they appear (using Tahoe-LAFS' "Magic Folder" feature [*] ).
  • Status indicators -- the user will know, at a glance, the number of connected storage nodes, folder sizes and modification times, when folders are synchronizing, recently updated files, etc.
  • Desktop integration -- Gridsync can (optionally) start automatically on login and provide desktop notifications when certain operations have completed.
  • Easy sharing -- Gridsync uses the magic-wormhole library to provide human-pronounceable "invite codes" for joining storage grids and sharing folders with other users.
  • Simple recovery -- Gridsync's "Recovery Key" subsystem allows connections and folders to be easily restored from a single file in the event of a disaster.
  • Tor support (experimental) -- Gridsync can tunnel outgoing connections through the Tor anonymity network, concealing users' network location from storage service providers and each other.
[*] Tahoe-LAFS' "Magic Folder" functionality is not (yet) fully supported on macOS or other BSD-based operating systems and is presently marked as experimental.

Screenshots (latest release; running macOS 10.14 with dark mode enabled):

https://raw.githubusercontent.com/gridsync/gridsync/master/images/screenshots/latest/02-drag-and-drop.png

https://raw.githubusercontent.com/gridsync/gridsync/master/images/screenshots/latest/03-syncing.png

https://raw.githubusercontent.com/gridsync/gridsync/master/images/screenshots/latest/04-history.png

https://raw.githubusercontent.com/gridsync/gridsync/master/images/screenshots/latest/05-invite.png

Screenshots (previous releases; running GNU/Linux with Xfce 4):

https://raw.githubusercontent.com/gridsync/gridsync/master/images/screenshots/old/welcome.png

https://raw.githubusercontent.com/gridsync/gridsync/master/images/screenshots/old/connecting.png

https://raw.githubusercontent.com/gridsync/gridsync/master/images/screenshots/old/dropzone.png

https://raw.githubusercontent.com/gridsync/gridsync/master/images/screenshots/old/passphrase.gif

https://raw.githubusercontent.com/gridsync/gridsync/master/images/screenshots/old/menu.png

https://raw.githubusercontent.com/gridsync/gridsync/master/images/screenshots/old/share.png

https://raw.githubusercontent.com/gridsync/gridsync/master/images/screenshots/old/notify.gif

https://raw.githubusercontent.com/gridsync/gridsync/master/images/screenshots/old/history.png

Installation and running:

Stable releases:

Downloads for "stable" releases of Gridsync can be found on the project's GitHub Releases page and include pre-built/binary distrubitions for all three major desktop platforms that have been compiled inside dedicated virtual machines on dedicated hardware. Users wishing to install these packages are strongly urged to verify their signatures before running or, alternatively, to build/install Gridsync manually from source (see below).

To install and run Gridsync on GNU/Linux (64-bit only; supporting glibc 2.17 and above -- including Debian 9+, Ubuntu 16.04 LTS+, CentOS 7+, and Fedora 28+):

  1. Download Gridsync-Linux.AppImage (and verify its signature)
  2. Make the AppImage executable (chmod +x Gridsync-Linux.AppImage)
  3. Run Gridsync-Linux.AppImage

To install and run Gridsync on macOS (64-bit only; supporting macOS 10.13 "High Sierra" and above):

  1. Download Gridsync-macOS.dmg (and verify its signature)
  2. Drag the enclosed "Gridsync.app" bundle anywhere (e.g., ~/Applications)
  3. Double-click Gridsync.app

To install and run Gridsync on Windows (64-bit only; supporting Windows Server 2012R2, Windows 7 SP1, Windows 8.1, and Windows 10):

  1. Download Gridsync-Windows-setup.exe (and verify its signature)
  2. Run the executable installer and follow/complete the setup wizard
  3. Select "Launch Gridsync" when installation is finished

Alternatively, Windows users who do not wish to use the executable installer can download and verify Gridsync-Windows.zip, extract the enclosed "Gridsync" folder anywhere, and run Gridsync.exe.

From source:

Because Tahoe-LAFS has not yet been ported to python3, and because some GNU/Linux distributions might contain especially old versions of some dependencies, it is recommended to install and run Tahoe-LAFS and Gridsync inside their own virtual environments using updated dependencies from PyPI (ideally with hashes verified).

The following series of steps (run from the top level of the Gridsync source tree) should work on most Debian-based GNU/Linux distributions:

sudo apt-get install build-essential libffi-dev libssl-dev python python-dev python3 python3-dev virtualenv
virtualenv --python=python2 ./venv2
./venv2/bin/python -m pip install --upgrade setuptools pip
./venv2/bin/python -m pip install tahoe-lafs
virtualenv --python=python3 ./venv3
./venv3/bin/python -m pip install --upgrade setuptools pip
./venv3/bin/python -m pip install -r requirements/requirements-hashes.txt
./venv3/bin/python -m pip install .
PATH=$PATH:./venv2/bin ./venv3/bin/gridsync

Users of other distributions and operating systems should modify the above steps as required (for example, by installing Xcode on macOS in addition to python -- or the dependencies listed at the top of make.bat in the case of Windows).

Alternatively, users can use PyInstaller to generate a more "portable" binary distribution of Gridsync and Tahoe-LAFS (suitable for running on other machines of the same platform) by installing the required dependencies and typing make in the top-level of the source tree. This will create a standalone executable distribution of Gridsync and all of its dependencies (including a "frozen" python interpreter and Tahoe-LAFS), placing the resultant files/installers in the dist/ subdirectory.

Note, however, that PyInstaller-generated binaries are typically not backward-compatible; a PyInstaller executable that was built on a newer GNU/Linux distribution, for example (i.e., with a more recent version of glibc) will not run on older distributions. Accordingly, if you intend to distribute Gridsync binaries for use on a wide range operating system versions, it is recommended that you build the application on as old of a system as is reasonable for a given platform (i.e., one which can build and run Gridsync but which still receives security updates). Presently, CentOS 7, macOS "Mojave" (10.14), and Windows Server 2012 R2 arguably constitute the most suitable candidates for GNU/Linux, macOS, and Windows build systems respectively (insofar as binaries generated on these systems will be forward-compatible with all others in that platform-category that are still supported upstream).

To help facilitate the testing, building, and distribution of forward-compatible binaries -- as well as to enable a crude form of "cross-compilation" -- a custom Vagrantfile has been provided inside the Gridsync source tree; users or developers with Vagrant and VirtualBox installed [†] can automatically provision a complete Gridsync build environment that produces forward-compatible binaries via the following commands:

make vagrant-build-linux
make vagrant-build-macos
make vagrant-build-windows

These will download and configure a suitable virtual machine for the target platform (from the public Vagrant Boxes catalog), provision it with all required dependencies (such compilers/SDKs, python interpreters, X11 libraries, etc.), copy the Gridsync source code into the target VM, run the Gridsync test suite, and compile a final PyInstaller-generated binary package suitable for distribution (the result of which can be found in the ~/gridsync/dist directory of the guest VM).

[†] Note that in order to get Vagrant/VirtualBox working properly, users of GNU/Linux may need to add the current user's name to the local "vboxusers" group, while users experiencing issues with Windows guests may need to install some combination of the winrm, winrm-fs, or winrm-elevated Vagrant plugins (via the vagrant plugin install winrm winrm-fs winrm-elevated command). For further assistance with installing, configuring, or using Vagrant and/or VirtualBox on your system, please consult the appropriate upstream documentation and/or help forums. In addition, please note that Gridsync project can make no guarantees about the security or safety of public Vagrant "Boxes"; please exercise appropriate caution when relying upon third-party software.

Alternatively, users with docker installed can use the CentOS 7-based gridsync-builder image to build equivalent backward-compatible binaries without the addded overhead of Vagrant and VirtualBox:

make in-container

Development builds:

Unsigned binary distributions (currently tracking the master branch) are also available from the project buildbot's "artifacts" directory. These packages, however, should not be considered trustworthy or reliable in any way and are made available only for testing purposes by developers. Please excercise appropriate caution when using these files (ideally by downloading and running them inside a disposable virtual machine).

Known issues and limitations:

While Gridsync ultimately aims to provide an easy-to-use frontend for users of Tahoe-LAFS, at present, its interface only supports a very limited subset of Tahoe-LAFS's underlying features and potential use-cases (namely, it provides simplified means for joining storage grids, creating and sharing "magic-folders," and receiving status updates and notifications pertaining to those processes). Accordingly, users should not (yet) expect Gridsync to provide a complete backup solution or to serve as a stand-in replacement for other tools with robust sharing and collaboration capabilities.

In addition, it should be noted that Tahoe-LAFS's "magic-folder" functionality itself is currently considered "experimental" and has a number of known issues and limitations and open development tickets.

Contributing:

Contributions of any sort (e.g., suggestions, criticisms, bug reports, pull requests) are welcome. Any persons interested in aiding the development of Gridsync are encouraged to do so by opening a GitHub Issue or by contacting its primary developer: [email protected]

License:

Copyright (C) 2015-2021 Christopher R. Wood

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

Sponsors:

The ongoing development of this project has been made possible by the generous sponsorships and grants provided by Least Authority (2016-), Internews/UXFund (2017), and Open Technology Fund (2019-2020).

Comments
  • PyQt5 5.13.2 breaks macOS window textures/content if dark mode is enabled

    PyQt5 5.13.2 breaks macOS window textures/content if dark mode is enabled

    PyQt 5.13.2 breaks window textures and content in Gridsync, causing windows to appear blank or transparent. The following error messages were observed (which may point to two separate issues):

    2019-11-22 17:20:58.416 Gridsync[24524:2438424] *** WARNING: Textured window <QNSPanel: 0x7faf33598830; contentView=NSObject(0x0)> is getting an implicitly transparent titlebar. This will break when linking against newer SDKs. Use NSWindow's -titlebarAppearsTransparent=YES instead.
    2019-11-22 17:20:58.471 Gridsync[24524:2438424] It does not make sense to draw an image when [NSGraphicsContext currentContext] is nil.  This is a programming error. Break on void _NSWarnForDrawingImageWithNoCurrentContext(void) to debug.  This will be logged only once.  This may break in the future.
    

    I could not reproduce the issue on macOS Sierra (10.12) or High Sierra (10.13) but, on Mojave, downgrading/pinning PyQt5 to version 5.13.1 seemingly corrects the issue, resulting in window textures rendering correctly. As a result, Gridsync builds should temporarily(?) downgrade/pin the PyQt5 package until the code paths that cause the above two errors can be identified and fixed.

    macOS 
    opened by crwood 17
  • Consume Eliot logs from Tahoe-LAFS

    Consume Eliot logs from Tahoe-LAFS

    Tahoe-LAFS recently gained some amount of structured logging using the Eliot logging library. Such logs are not written anywhere by default but can be written to a file with a command line argument. Development is currently in progress to expose these logs via a WebSocket-based interface served the the Tahoe-LAFS node, allowing the logs to be consumed without ever committing them to disk.

    GridSync could consume this WebSocket API to receive these Eliot log events from the Tahoe-LAFS node. This would be useful if information is being collected to diagnose a Tahoe-LAFS misbehavior (either by the user or to create a report to send upstream).

    opened by exarkun 9
  • Add Nix-based development shell and related CI

    Add Nix-based development shell and related CI

    This makes nix develop work with a recent-enough version of Nix (with flakes enabled). The resulting environment contains enough stuff for tox -e py39,integration,lint to succeed.

    Also included is a new GitHub Actions job to do these things on CI, mostly to ensure they keep working (and so remain useful for development work on GridSync on NixOS or with Nix tools on other OS).

    opened by exarkun 7
  • AppImage crashes with error: undefined symbol: pango_coverage_get_type

    AppImage crashes with error: undefined symbol: pango_coverage_get_type

    Hello, I'm trying out gridsync with the public test grid, and getting some crashes before I can begin uploading any files. I'm running the latest (0.5.0) AppImage on Arch Linux.

    Here are the logs, obtained just by running ./Gridsync-Linux.AppImage in the terminal:

    /usr/lib/gvfs/libgvfscommon.so: undefined symbol: g_task_set_name
    Failed to load module: /usr/lib64/gio/modules/libgvfsdbus.so
    libpng warning: iCCP: profile 'icc': 0h: PCS illuminant is not D50
    libpng warning: iCCP: profile 'icc': 0h: PCS illuminant is not D50
    Fontconfig warning: "/usr/share/fontconfig/conf.avail/05-reset-dirs-sample.conf", line 6: unknown element "reset-dirs"
    libpng warning: iCCP: profile 'icc': 0h: PCS illuminant is not D50
    libpng warning: iCCP: profile 'icc': 0h: PCS illuminant is not D50
    libpng warning: iCCP: profile 'icc': 0h: PCS illuminant is not D50
    libpng warning: iCCP: profile 'icc': 0h: PCS illuminant is not D50
    libpng warning: iCCP: profile 'icc': 0h: PCS illuminant is not D50
    libpng warning: iCCP: profile 'icc': 0h: PCS illuminant is not D50
    qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 1345, resource id: 13028294, major code: 40 (TranslateCoords), minor code: 0
    /usr/lib/gvfs/libgvfscommon.so: undefined symbol: g_task_set_name
    Failed to load module: /usr/lib64/gio/modules/libgioremote-volume-monitor.so
    /usr/lib/gvfs/libgvfscommon.so: undefined symbol: g_task_set_name
    Failed to load module: /usr/lib64/gio/modules/libgvfsdbus.so
    /usr/lib/gvfs/libgvfscommon.so: undefined symbol: g_task_set_name
    Failed to load module: /usr/lib64/gio/modules/libgioremote-volume-monitor.so
    
    (gridsync:28223): Gtk-WARNING **: 13:28:04.046: Could not load a pixbuf from icon theme.
    This may indicate that pixbuf loaders or the mime database could not be found.
    **
    Gtk:ERROR:gtkiconhelper.c:494:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/breeze-dark/status/16/image-missing.svg: Unable to load image-loading module: /usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.so: /usr/lib/librsvg-2.so.2: undefined symbol: pango_coverage_get_type (gdk-pixbuf-error-quark, 5)
    [1]    28215 IOT instruction (core dumped)  ./Gridsync-Linux.AppImage
    

    I assume it's only that last log line that is relevant to the crash:

    Gtk:ERROR:gtkiconhelper.c:494:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/breeze-dark/status/16/image-missing.svg: Unable to load image-loading module: /usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.so: /usr/lib/librsvg-2.so.2: undefined symbol: pango_coverage_get_type (gdk-pixbuf-error-quark, 5)
    

    To me this seems like some sort of software library versioning issue. I'm running fully updated Arch Linux, which has very recent software. Maybe the AppImage is trying to use some system library that is newer that it is expecting, causing the missing symbol? I would've thought AppImage packaging would bundle all these libraries, but maybe that's not how it works.

    My gdk-pixbuf version is 2.42.8, if that helps. Let me know if there's any other info I can provide.

    opened by makeworld-the-better-one 7
  • Exit handling subprocess pidfiles

    Exit handling subprocess pidfiles

    There is an appropriate magic-folder release (22.10.0) but not yet for Tahoe-LAFS (using https://github.com/tahoe-lafs/tahoe-lafs/pull/1221 would work).

    opened by meejah 6
  • Tor proxy bypass

    Tor proxy bypass

    Using gridsync 0.4.1 with a paid s4 account on GNU/Linux (BuildID[sha1]=28ba79c778f7402713aec6af319ee0fbaf3a8014). Tor is enabled and there are direct connections from the gridsync application to Amazon ec2 to the host ec2-52-6-180-137.compute-1.amazonaws.com.. The host name wormhole.leastauthority.com resolves to 52.6.180.137 and resources/config.txt defines relay = ws://wormhole.tahoe-lafs.org:4000/v1 as the wormhole server. This IP and port match the Tor proxy bypass on my system:

    gridsync  18326 user   72u  IPv4 698349      0t0  TCP 10.0.0.6:50130->52.6.180.137:4000 (ESTABLISHED)
    gridsync  18326 user   79u  IPv4 700071      0t0  TCP 10.0.0.6:50132->52.6.180.137:4000 (ESTABLISHED)
    gridsync  18326 user   81u  IPv4 699385      0t0  TCP 10.0.0.6:50108->52.6.180.137:4000 (ESTABLISHED)
    

    I understand that Tor support is experimental and wanted to warn others that the rendezvous process, as well as Gridsync, does not appear to be protected by Tor at this time. This is persistent even when magic-wormhole isn't in active use. It appears after the use of magic-wormhole and it persists until restarting gridsync.

    High Security 
    opened by abmoka 6
  • Change to appid used by Tahoe-LAFS invite feature

    Change to appid used by Tahoe-LAFS invite feature

    Fixes #49

    I wasn't sure if it made more sense to make this PR against master or dev. Let me know if you want me to re-do it against dev. Or to do a follow-up duplicating it against dev?

    opened by exarkun 5
  • Put a Python environment containing magic-folder into GridSync's runtime env

    Put a Python environment containing magic-folder into GridSync's runtime env

    This gives the Nix-packaged GridSync a magic-folder to use.

    This won't work until https://github.com/LeastAuthority/magic-folder/pull/527 and the nixpkgs version used in GridSync's Nix packaging is bumped to include a magic-folder with that change.

    Note that in one commit message I wrote "virtualenv" but of course this uses a Nix Python environment, not a virtualenv. They are vaguely similar in outcome but one is not based on the other and the internals are not even particularly similar.

    opened by exarkun 4
  • Upgrade to Qt 5.13

    Upgrade to Qt 5.13

    (Py)Qt 5.13 was recently released and contains some improvements pertaining to Wayland support that will probably be beneficial to users of newer Linux distros and desktop environments that make use of it. Gridsync should upgrade from Qt 5.12 -- so long as doing so doesn't cause any regressions.

    EDIT: It looks like I misread; while Qt 5.13 is indeed now available, the PyQt bindings have not yet been updated for 5.13 (they did, however, just put out a 5.12.3 release). I'll leave this open, nonetheless, as a reminder to upgrade once the PyQt bindings become available...

    opened by crwood 4
  • Size overflow?

    Size overflow?

    I'm using v0.3.1. I've started Gridsync (in debug mode) and after a while size has become negative:

    screenshot_2018-04-09_06-09-43

    Unfortunately, when that happened, there has been nothing out of the ordinary in the logs (only another add_updated_file entry), but I can send GPG-encrypted logs on demand.

    opened by yanalunaterra 4
  • `python-challenge-bypass-ristretto` has dropped support for macOS 10.14

    `python-challenge-bypass-ristretto` has dropped support for macOS 10.14

    The latest PyPI release of the python-challenge-bypass-ristretto library has dropped support for macOS 10.14. The Gridsync project, however, currently maintains and depends on a macOS 10.14 buildbot-worker in order to maintain forward-compatibility for PyInstaller builds.

    Accordingly, the Gridsync project should either update the macOS 10.14 buildbot-worker/CI configuration to (reproducibly) build the rust-based python-challenge-bypass-ristretto library or explicitly drop support for macOS 10.14 (i.e., update builders to target macOS 10.15 and higher) -- preferably the latter...

    opened by crwood 3
  • Python 3.11

    Python 3.11

    Python 3.11 has recently been released, bringing numerous performance-related improvements (among other things).

    Gridsync should add support for Python 3.11 and default to using/shipping a Python 3.11 interpreter once it is supported by our dependencies and any/all regressions are resolved, etc.

    opened by crwood 0
  • GridSync crashes when clicking

    GridSync crashes when clicking "Add New..." and not yet connected or invited.

    I'm using NixOS and Python 3.10 and ran nix develop , then python -m tox to run the tests and build the program.

    I then run the program with ./tox/py310/bin/gridsync

    I don't have an invite code, so I clicked "Add new..." in the ComboBox at the top ( https://github.com/gridsync/gridsync/blob/main/gridsync/gui/toolbar.py#L39 ? ) and the application crashes with

    Traceback (most recent call last):
      File "/home/shae/build/gridsync/gridsync/gui/toolbar.py", line 49, in on_activated
        logging.debug("Selected %s", gateway.name)
    AttributeError: 'NoneType' object has no attribute 'name'
    Aborted (core dumped)
    
    opened by shapr 0
  • HTML-ized Tahoe-LAFS WAPI errors are unwieldy

    HTML-ized Tahoe-LAFS WAPI errors are unwieldy

    By default, the Tahoe-LAFS web API wraps response bodies for HTTP 500 errors in HTML/CSS, making it more difficult for applications like Gridsync to parse and/or display such content to humans in text form. As it turns out, there's a way to disable this behavior and have such stack traces returned in plain text. From the Tahoe-LAFS WAPI docs:

    Unusual exceptions may result in a 500 Internal Server Error as a catch-all, with a default response body containing a Nevow-generated HTML-ized representation of the Python exception stack trace that caused the problem. CLI programs which want to copy the response body to stderr should provide an “Accept: text/plain” header to their requests to get a plain text stack trace instead.

    Gridsync's interactions with the Tahoe-LAFS web API should include this header where possible in order to facilitating the handling of such errors.

    See also https://github.com/LeastAuthority/magic-folder/issues/679

    enhancement Usability 
    opened by crwood 0
  • The (PGP) release signing key has expired

    The (PGP) release signing key has expired

    The Gridsync release signing key has recently expired.

    Although PGP expiry dates are somewhat arbitrary or policy-driven and do not strictly restrict the continued usage of a given key, it would be a good idea to issue a new signing keypair. Given the multitude of problems with PGP, however, it may be an even better idea to explore other non-PGP alternatives for future release-signing...

    opened by crwood 0
  • Draft: GUI tests using pytest-qt (WIP)

    Draft: GUI tests using pytest-qt (WIP)

    In this WIP PR I try to provide some good first "click & press buttons" (in contrast to lower level stuff like sending signals) GUI tests using pytest-qt.

    Note to self: Run a single test by issuing a command line like: py -m tox -epy310 -- tests/gui/test_charter.py::test_recover_from_key

    @elric-wamugu please have a look & try this out on your machine - maybe you would like to work on this together for a session or two?

    opened by hacklschorsch 0
Releases(v0.6.1)
  • v0.6.1(Oct 15, 2022)

    Changelog

    0.6.1 - 2022-10-14

    Added

    • Added support for parsing/handling new Tahoe-LAFS and Magic-Folder "pidfiles" -- thanks @meejah! (PR #569)

    Changed

    • Logs for Gridsync, Tahoe-LAFS, and Magic-Folder will now persist on disk instead of being buffered into memory (Issue #564; PR #570)
    • PyInstaller has been updated to version 5.5 (Issue #561; PR #575)
    • Gridsync will now apply new connection-related settings for grids that were previously joined via a "cheat code" (e.g., 0-hro-cloud) during start-up, making it possible for some out-of-date grid-configurations (i.e., Least Authority's "HRO Cloud", as per #576) to be updated in conjunction with Gridsync itself (Issue #504; PR #578)

    Fixed

    • The grid-configuration for Least Authority's "HRO Cloud" has been updated in response to a failing storage node, allowing users of the service to re-connect once again (PR #576) -- thanks @jehadbaeth!
    Source code(tar.gz)
    Source code(zip)
    Gridsync-Linux.AppImage(88.18 MB)
    Gridsync-Linux.AppImage.asc(833 bytes)
    Gridsync-macOS.dmg(50.71 MB)
    Gridsync-macOS.dmg.asc(833 bytes)
    Gridsync-Windows-setup.exe(41.76 MB)
    Gridsync-Windows-setup.exe.asc(833 bytes)
  • v0.6.0(Sep 16, 2022)

    Changelog

    0.6.0 - 2022-09-16

    Added

    • Added support for the new/standalone "Magic-Folder" application (Issue #290; PR #389)
    • Errors contained in Magic-Folder "status" messages will now be surfaced to the user (Issue #390; PR #392)
    • Added support for Tahoe-LAFS 1.16.0 (Issue #397; PR #398)
    • Added "progress" indicators for Magic-Folder upload operations, displaying the number of completed vs. pending upload operations as a percentage (Issue #391; PR #399)
    • Added tooling to facilitate updating/pinning ZKAPAuthorizer and Magic-Folder dependencies from non-release git revisions (PR #400) -- thanks @tomprince
    • Added support for configuring the ZKAPAuthorizer lease crawler via grid JSON/settings (Issue #417; PR #418) -- thanks @exarkun!
    • Configuration values declared by config.txt can now be overridden via environment variables (Issue #465; PR #466)
    • Added preliminary support for alternative Qt APIs/libraries (by setting the QT_API environment variable to one of pyqt5, pyqt6, pyside2, or pyside6 at build-time) (PR #467)
    • Added support for Ubuntu 22.04 (PR #475)
    • Added support for backing up and restoring the ZKAPAuthorizer database state via "v2" ZKAPAuthorizer endpoints (Issue #388; PRs #476, #478, #499) -- thanks @meejah!
    • Added support for Python 3.10 (PR #495)
    • Added a Nix-based development shell and related CI (PR #517) -- thanks @exarkun!
    • Added some additional documentation for contributors (CONTRIBUTING.rst) (PR #547) -- thanks @meejah!

    Changed

    • Binary distributions of Gridsync will now ship with Tahoe-LAFS version 1.17.1 and Magic-Folder 22.8.0 (PR #519)
    • Added proper PyInstaller hooks for twisted.plugins, preventing the need to patch allmydata.storage_client at buildtime (PR #403) -- thanks @tomprince
    • The Magic-Folder API port will now be determined by reading the newly-added api_client_endpoint file instead of parsing stdout (Issue #412; PR #416)
    • Updated Recovery Key creation behavior/UX slightly (Issue #405; PR #420):
      • Users of ZKAPAuthorizer-enabled grids will now be prompted to create a Recovery Key immediately after successfully redeeming a batch of ZKAPs and creating a rootcap
      • Users who have not previously created a Recovery Key will now be prompted to do so (once per session)
      • Confirmation buttons ("Cancel", "Save...") have been added to the password dialog
      • Labels pertaining to Recovery Key-related actions have been updated throughout the UI:
        • "Export Recovery Key" has been updated/renamed to "Create Recovery Key"
        • "Import Recovery" has been updated/renamed to "Restore from Recovery Key"
    • During start up, a "Loading..." label will now be shown under the Storage-Time view instead of temporarily displaying a storage-time balance of 0 (Issue #423; PR #424) -- thanks @exarkun!
    • Bundled tahoe and magic-folder executables will now be prepended with the application name (e.g., "Gridsync-tahoe.exe" instead of "tahoe.exe") in order to more clearly distinguish process names managed by Gridsync (Issue #422; PR #426)
    • The Storage-Time view now explicitly states (via a text label) that folders can be added while a voucher is being redeemed (Issue #427; PR #436)
    • On Windows and macOS, the certifi package will now be used for TLS verification (Issues #441, #459; PRs #442, #460)
    • The Tahoe-LAFS and Magic-Folder binaries included with Gridsync are now python3-only and utilize PyInstaller's "multipackage bundles" feature, drastically reducing the overall filesize of the Gridsync application bundle (Issue #432; PR #433)
    • Users of ZKAPAuthorizer-enabled storage-grids will now receive a warning/confirmation dialog about lease-renewal upon exiting the application (PR #445)
    • Debug log messages are now timezone-aware (Issue #447; PR #450)
    • A warning/confirmation dialog will now be displayed describing the risks of sharing the same Recovery Key across multiple devices when restoring from a Recovery Key (Issue #448; PR #451)
    • Gridsync will now automatically relaunch tahoe and magic-folder that were terminated by external factors (Issue #455; PR #470)
    • It is now possible to add Magic-Folders for empty directories (PR #473)
    • Updated the project Vagrantfile, adding virtual environments for newly-supported OS versions and removing unsupported ones (PR #485, #514, #515, #525, #533, #546)
    • Refactored some code-paths relating to Recovery Key creation (PR #477) -- thanks @exarkun!
    • Gridsync will now check processes names when making determinations about the staleness of existing processes/pidfiles (PR #492)
    • Added type-annotations throughout the codebase (PR #468, #469, #477, #502)
    • Updated the embedded grid-configuration for Least Authority's "HRO Cloud" (Issue #536; PRs #494, #537) -- thanks @jehadbaeth!
    • Replaced usage of inlineCallbacks/yield with async/await syntax in several modules (Issues #520, #522, #523, #527; PRs #521, #524, #526, #529) -- thanks @exarkun!
    • The Recovery Key subsystem has been changed in order to safeguard against simultaneous writers (Issue #449; PR #544):
      • Recovery Keys will now contain the read-only form of the rootcap capability (rather than the read-write capability)
      • Restoring from a Recovery Key will now always create a new (read-write) rootcap, copying the contents of the old/imported rootcap into it
      • Note: This change -- along with PR #499 -- breaks compatibility with older Recovery Keys; users updating from an older version will need to re-create a Recovery Key
    • Websocket messages from the Magic-Folder "status" API will no longer be captured by the Gridsync debug log (Issue #549; PR #552)
    • An error message will now be displayed when attempting to start Tahoe-LAFS with nodedir that contains incompatible/out-of-date configuration (PR #559)

    Fixed

    • Fixed an uncaught AttributeError in filter.py (Issue #393; PR #394)
    • Fixed an bug in which ZKAPAuthorizer's "allowed-public-keys" were being written to servers.yaml instead of tahoe.cfg (Issue #406; PR #407)
    • Reduced CPU usage consumed by polling for storage server connections (Issue #414; PR #415) -- thanks @exarkun!
    • Removing a folder will now update both the UI/FoldersView and underlying data-model(s) immediately, preventing the situation in which an error would occur when upon attempting to remove the same folder twice in rapid succession (Issue #437; PR #439)
    • Additional checks are now performed at build-time to identify and prevent dependency-conflicts between Gridsync, Tahoe-LAFS, and Magic-Folder (Issue #434; PR #435)
    • Several UI elements in the Storage-time view have been adjusted to prevent the labels in the chart legend from being truncated (Issue #453; PR #454)
    • Improved error-handling when listing empty or unavailble Tahoe-LAFS directories (PR #464)
    • Improved the efficiency and accuracy of updates to the "Status" column in the Folders view (Issue #461; PR #463)
    • Fixed a crash caused by sending DBus desktop notifications on GNU/Linux systems that lack DBus (PR #474)
    • Fixed an intermittently-failing test for gridsync.Supervisor's restart behavior on Windows (PR #481)
    • Fixed an uncaught TypeError caused by a missing positional argument (Issue #489; PR #490) -- thanks @makeworld-the-better-one!
    • Fixed a crash caused by conflicting/incompatible pango libraries on ArchLinux (Issue #487; PR #488) -- thanks @makeworld-the-better-one!
    • Added mitigations for a CPython/importlib bug triggered by ResourceWarnings on Windows (Issue #479; PRs #484, #498) -- thanks @exarkun!
    • Fixed an uncaught TypeError caused by a regression introduced by PyQt5 version 5.15.7 (Issue #496; PR #497)
    • Unencrypted Recovery Keys will no longer default to using a ".encrypted" filename suffix (Issue #509; PR #511)
    • Fixed a crash caused by attempting to disable autostart on Windows when the autostart shortcut/file has already been removed (Issue #512; PR #516)
    • Fixed a race condition with a Supervisor restart test (PR #530) -- thanks @exarkun!
    • Fixed an OverflowError caused by mixing/converting between Qt's C++ integers and python's ints when calculating "days remaining" (Issue #532; PRs #535, #540)

    Removed

    • Removed support for the "magic-folder" Tahoe-LAFS feature removed in Tahoe-LAFS 1.15 (Issue #408; PR #411)
    • Removed Nix expressions for packaging Gridsync with Nix (PR #413)
    • Removed support for macOS 10.15/"Catalina" (Issue #510; PR #518)
    • Removed support for Ubuntu 18.04/"Bionic Beaver" (Issue #538; PR #539)
    Source code(tar.gz)
    Source code(zip)
    Gridsync-Linux.AppImage(85.19 MB)
    Gridsync-Linux.AppImage.asc(833 bytes)
    Gridsync-macOS.dmg(48.67 MB)
    Gridsync-macOS.dmg.asc(833 bytes)
    Gridsync-Windows-setup.exe(39.68 MB)
    Gridsync-Windows-setup.exe.asc(833 bytes)
  • v0.6.0rc1(Sep 15, 2022)

    Changelog

    0.6.0rc1 - 2022-09-14

    Added

    • Added support for the new/standalone "Magic-Folder" application (Issue #290; PR #389)
    • Errors contained in Magic-Folder "status" messages will now be surfaced to the user (Issue #390; PR #392)
    • Added support for Tahoe-LAFS 1.16.0 (Issue #397; PR #398)
    • Added "progress" indicators for Magic-Folder upload operations, displaying the number of completed vs. pending upload operations as a percentage (Issue #391; PR #399)
    • Added tooling to facilitate updating/pinning ZKAPAuthorizer and Magic-Folder dependencies from non-release git revisions (PR #400) -- thanks @tomprince
    • Added support for configuring the ZKAPAuthorizer lease crawler via grid JSON/settings (Issue #417; PR #418) -- thanks @exarkun!
    • Configuration values declared by config.txt can now be overridden via environment variables (Issue #465; PR #466)
    • Added preliminary support for alternative Qt APIs/libraries (by setting the QT_API environment variable to one of pyqt5, pyqt6, pyside2, or pyside6 at build-time) (PR #467)
    • Added support for Ubuntu 22.04 (PR #475)
    • Added support for backing up and restoring the ZKAPAuthorizer database state via "v2" ZKAPAuthorizer endpoints (Issue #388; PRs #476, #478, #499) -- thanks @meejah!
    • Added support for Python 3.10 (PR #495)
    • Added a Nix-based development shell and related CI (PR #517) -- thanks @exarkun!
    • Added some additional documentation for contributors (CONTRIBUTING.rst) (PR #547) -- thanks @meejah!

    Changed

    • Binary distributions of Gridsync will now ship with Tahoe-LAFS version 1.17.1 and Magic-Folder 22.8.0 (PR #519)
    • Added proper PyInstaller hooks for twisted.plugins, preventing the need to patch allmydata.storage_client at buildtime (PR #403) -- thanks @tomprince
    • The Magic-Folder API port will now be determined by reading the newly-added api_client_endpoint file instead of parsing stdout (Issue #412; PR #416)
    • Updated Recovery Key creation behavior/UX slightly (Issue #405; PR #420):
      • Users of ZKAPAuthorizer-enabled grids will now be prompted to create a Recovery Key immediately after successfully redeeming a batch of ZKAPs and creating a rootcap
      • Users who have not previously created a Recovery Key will now be prompted to do so (once per session)
      • Confirmation buttons ("Cancel", "Save...") have been added to the password dialog
      • Labels pertaining to Recovery Key-related actions have been updated throughout the UI:
        • "Export Recovery Key" has been updated/renamed to "Create Recovery Key"
        • "Import Recovery" has been updated/renamed to "Restore from Recovery Key"
    • During start up, a "Loading..." label will now be shown under the Storage-Time view instead of temporarily displaying a storage-time balance of 0 (Issue #423; PR #424) -- thanks @exarkun!
    • Bundled tahoe and magic-folder executables will now be prepended with the application name (e.g., "Gridsync-tahoe.exe" instead of "tahoe.exe") in order to more clearly distinguish process names managed by Gridsync (Issue #422; PR #426)
    • The Storage-Time view now explicitly states (via a text label) that folders can be added while a voucher is being redeemed (Issue #427; PR #436)
    • On Windows and macOS, the certifi package will now be used for TLS verification (Issues #441, #459; PRs #442, #460)
    • The Tahoe-LAFS and Magic-Folder binaries included with Gridsync are now python3-only and utilize PyInstaller's "multipackage bundles" feature, drastically reducing the overall filesize of the Gridsync application bundle (Issue #432; PR #433)
    • Users of ZKAPAuthorizer-enabled storage-grids will now receive a warning/confirmation dialog about lease-renewal upon exiting the application (PR #445)
    • Debug log messages are now timezone-aware (Issue #447; PR #450)
    • A warning/confirmation dialog will now be displayed describing the risks of sharing the same Recovery Key across multiple devices when restoring from a Recovery Key (Issue #448; PR #451)
    • Gridsync will now automatically relaunch tahoe and magic-folder that were terminated by external factors (Issue #455; PR #470)
    • It is now possible to add Magic-Folders for empty directories (PR #473)
    • Updated the project Vagrantfile, adding virtual environments for newly-supported OS versions and removing unsupported ones (PR #485, #514, #515, #525, #533, #546)
    • Refactored some code-paths relating to Recovery Key creation (PR #477) -- thanks @exarkun!
    • Gridsync will now check processes names when making determinations about the staleness of existing processes/pidfiles (PR #492)
    • Added type-annotations throughout the codebase (PR #468, #469, #477, #502)
    • Updated the embedded grid-configuration for Least Authority's "HRO Cloud" (Issue #536; PRs #494, #537) -- thanks @jehadbaeth!
    • Replaced usage of inlineCallbacks/yield with async/await syntax in several modules (Issues #520, #522, #523, #527; PRs #521, #524, #526, #529) -- thanks @exarkun!
    • The Recovery Key subsystem has been changed in order to safeguard against simultaneous writers (Issue #449; PR #544):
      • Recovery Keys will now contain the read-only form of the rootcap capability (rather than the read-write capability)
      • Restoring from a Recovery Key will now always create a new (read-write) rootcap, copying the contents of the old/imported rootcap into it
      • Note: This change -- along with PR #499 -- breaks compatibility with older Recovery Keys; users updating from an older version will need to re-create a Recovery Key
    • Websocket messages from the Magic-Folder "status" API will no longer be captured by the Gridsync debug log (Issue #549; PR #552)
    • An error message will now be displayed when attempting to start Tahoe-LAFS with nodedir that contains incompatible/out-of-date configuration (PR #559)

    Fixed

    • Fixed an uncaught AttributeError in filter.py (Issue #393; PR #394)
    • Fixed an bug in which ZKAPAuthorizer's "allowed-public-keys" were being written to servers.yaml instead of tahoe.cfg (Issue #406; PR #407)
    • Reduced CPU usage consumed by polling for storage server connections (Issue #414; PR #415) -- thanks @exarkun!
    • Removing a folder will now update both the UI/FoldersView and underlying data-model(s) immediately, preventing the situation in which an error would occur when upon attempting to remove the same folder twice in rapid succession (Issue #437; PR #439)
    • Additional checks are now performed at build-time to identify and prevent dependency-conflicts between Gridsync, Tahoe-LAFS, and Magic-Folder (Issue #434; PR #435)
    • Several UI elements in the Storage-time view have been adjusted to prevent the labels in the chart legend from being truncated (Issue #453; PR #454)
    • Improved error-handling when listing empty or unavailble Tahoe-LAFS directories (PR #464)
    • Improved the efficiency and accuracy of updates to the "Status" column in the Folders view (Issue #461; PR #463)
    • Fixed a crash caused by sending DBus desktop notifications on GNU/Linux systems that lack DBus (PR #474)
    • Fixed an intermittently-failing test for gridsync.Supervisor's restart behavior on Windows (PR #481)
    • Fixed an uncaught TypeError caused by a missing positional argument (Issue #489; PR #490) -- thanks @makeworld-the-better-one!
    • Fixed a crash caused by conflicting/incompatible pango libraries on ArchLinux (Issue #487; PR #488) -- thanks @makeworld-the-better-one!
    • Added mitigations for a CPython/importlib bug triggered by ResourceWarnings on Windows (Issue #479; PRs #484, #498) -- thanks @exarkun!
    • Fixed an uncaught TypeError caused by a regression introduced by PyQt5 version 5.15.7 (Issue #496; PR #497)
    • Unencrypted Recovery Keys will no longer default to using a ".encrypted" filename suffix (Issue #509; PR #511)
    • Fixed a crash caused by attempting to disable autostart on Windows when the autostart shortcut/file has already been removed (Issue #512; PR #516)
    • Fixed a race condition with a Supervisor restart test (PR #530) -- thanks @exarkun!
    • Fixed an OverflowError caused by mixing/converting between Qt's C++ integers and python's ints when calculating "days remaining" (Issue #532; PRs #535, #540)

    Removed

    • Removed support for the "magic-folder" Tahoe-LAFS feature removed in Tahoe-LAFS 1.15 (Issue #408; PR #411)
    • Removed Nix expressions for packaging Gridsync with Nix (PR #413)
    • Removed support for macOS 10.15/"Catalina" (Issue #510; PR #518)
    • Removed support for Ubuntu 18.04/"Bionic Beaver" (Issue #538; PR #539)
    Source code(tar.gz)
    Source code(zip)
    Gridsync-Linux.AppImage(85.19 MB)
    Gridsync-Linux.AppImage.asc(833 bytes)
    Gridsync-macOS.dmg(48.67 MB)
    Gridsync-macOS.dmg.asc(833 bytes)
    Gridsync-Windows-setup.exe(39.67 MB)
    Gridsync-Windows-setup.exe.asc(833 bytes)
  • v0.5.0(Oct 11, 2021)

    Changelog

    0.5.0 - 2021-10-11

    Added

    • Added support for Python 3.8 (Issues #264, #269; PRs #270, #315)
    • Added support for Python 3.9 (Issue #316; PR #336)
    • Added support for macOS 11.0 ("Big Sur") (Issue #319; PR #320)
    • Added support for building Gridsync on "Apple Silicon" (arm64) macs under the "Rosetta" translation environment (Issue #322; PR #323)
    • Added support for building backward-compatible AppImages inside a CentOS 7-based container via make in-container (Issue #328; PR #329)
    • Gridsync AppImages can now be built reproducibly across many common host environments (including Debian 10, Fedora 32, Ubuntu 20.04 LTS, and Ubuntu 20.10) using make in-container (Issue #330; PR #335)
    • Gridsync binaries created with PyInstaller now build reproducibly on macOS and Windows (Issue #331, #332; PR #337)
    • Added preliminary support for ZKAPAuthorizer-enabled storage grids (Issue #238; PR #338)
    • Added a 0-hro-cloud "cheat code" for Least Authority's "HRO Cloud" (Issue #339; PR #340)
    • Added support for preserving/restoring the Tahoe-LAFS convergence secret via the Recovery Key (Issue #347; PR #356)
    • Added/enabled support for fractional scaling of UI elements (Issue #357; PR #358)
    • Added basic scripts to facilitate GPG and Authenticode signing (PR #380)
    • Added a 0-test-grid "cheat code" for the Tahoe-LAFS "Public Test Grid" (Issue #386; PR #387)

    Changed

    • Binary distributions of Gridsync will now ship with Python version 3.9 (Issue #316; PR #336)
    • The MainWindow's toolbar buttons/actions have been modified to facilitate the addition of ZKAPAuthorizer support (Issue #238; PR #338)
    • Updated Windows packaging to dynamically generate InnoSetup configuration file at build-time (Issue #348; PR #349)
    • Updated Nix packaging -- thanks @exarkun! (PR #365)

    Removed

    • Python 3.6 is no longer supported (Issue #324; PR #325)
    • macOS 10.13 ("High Sierra") is no longer supported (Issue #333; PR #334)
    • The Gridsync project no longer depends on AppVeyor or Travis-CI for continuous integration and now uses GitHub Actions (Issues #326, #317, #304; PR #327, #318, #305)

    Fixed

    • An issue preventing multiple Vagrant/VirtualBox environments from launching via make vagrant-desktop-* and/or make vagrant-build-* has been fixed (Issue #333; PR #334)
    • Fixed an issue with "Create Invite Code" button launching an incorrect dialog (Issue #345; PR #346)
    • Fixed make.bat to properly propagate linter errors on Windows CI (Issue #350; PR #351)
    • Improved error-handling when importing invalid Recovery Keys (Issue #359; PR #361)
    • Fixed crash caused by entering non-ASCII voucher codes (Issue #360; PR #362)
    • Disabled Preferences options for features disabled via config.txt (Issue #382; PR #383)
    • Fixed/improved error-handling for failures pertaining to generating/adding ZKAPAuthorizer vouchers (Issue #381; PR #385)

    Deprecated

    • This will be the final release of Gridsync that supports the tahoe magic-folder feature/subcommand. Magic-Folder was removed from Tahoe-LAFS in version 1.15 and split off into a standalone project. Future releases of Gridsync will ship and use the standalone Magic-Folder application for Tahoe-LAFS-based file-synchronization.
    Source code(tar.gz)
    Source code(zip)
    Gridsync-Linux.AppImage(84.88 MB)
    Gridsync-Linux.AppImage.asc(833 bytes)
    Gridsync-macOS.dmg(45.73 MB)
    Gridsync-macOS.dmg.asc(833 bytes)
    Gridsync-Windows-setup.exe(47.14 MB)
    Gridsync-Windows-setup.exe.asc(833 bytes)
  • v0.5.0rc2(Oct 8, 2021)

    Changelog

    0.5.0rc2 - 2021-10-08

    Added

    • Added support for preserving/restoring the Tahoe-LAFS convergence secret via the Recovery Key (Issue #347; PR #356)
    • Added/enabled support for fractional scaling of UI elements (Issue #357; PR #358)
    • Added basic scripts to facilitate GPG and Authenticode signing (PR #380)
    • Added a 0-test-grid "cheat code" for the Tahoe-LAFS "Public Test Grid" (Issue #386; PR #387)

    Changed

    • Updated Windows packaging to dynamically generate InnoSetup configuration file at build-time (Issue #348; PR #349)
    • Updated Nix packaging -- thanks @exarkun! (PR #365)

    Fixed

    • Fixed an issue with "Create Invite Code" button launching an incorrect dialog (Issue #345; PR #346)
    • Fixed make.bat to properly propagate linter errors on Windows CI (Issue #350; PR #351)
    • Improved error-handling when importing invalid Recovery Keys (Issue #359; PR #361)
    • Fixed crash caused by entering non-ASCII voucher codes (Issue #360; PR #362)
    • Disabled Preferences options for features disabled via config.txt (Issue #382; PR #383)
    • Fixed/improved error-handling for failures pertaining to generating/adding ZKAPAuthorizer vouchers (Issue #381; PR #385)

    Deprecated

    • This will be the final release of Gridsync that supports the tahoe magic-folder feature/subcommand. Magic-Folder was removed from Tahoe-LAFS in version 1.15 and split off into a standalone project. Future releases of Gridsync will ship and use the standalone Magic-Folder application for Tahoe-LAFS-based file-synchronization.
    Source code(tar.gz)
    Source code(zip)
    Gridsync-Linux.AppImage(84.88 MB)
    Gridsync-Linux.AppImage.asc(833 bytes)
    Gridsync-macOS.dmg(45.72 MB)
    Gridsync-macOS.dmg.asc(833 bytes)
    Gridsync-Windows-setup.exe(47.14 MB)
    Gridsync-Windows-setup.exe.asc(833 bytes)
  • v0.5.0rc1(Mar 26, 2021)

    Changelog

    0.5.0rc1 - 2021-03-25

    Added

    • Added support for Python 3.8 (Issues #264, #269; PRs #270, #315)
    • Added support for Python 3.9 (Issue #316; PR #336)
    • Added support for macOS 11.0 ("Big Sur") (Issue #319; PR #320)
    • Added support for building Gridsync on "Apple Silicon" (arm64) macs under the "Rosetta" translation environment (Issue #322; PR #323)
    • Added support for building backward-compatible AppImages inside a CentOS 7-based container via make in-container (Issue #328; PR #329)
    • Gridsync AppImages can now be built reproducibly across many common host environments (including Debian 10, Fedora 32, Ubuntu 20.04 LTS, and Ubuntu 20.10) using make in-container (Issue #330; PR #335)
    • Gridsync binaries created with PyInstaller now build reproducibly on macOS and Windows (Issue #331, #332; PR #337)
    • Added preliminary support for ZKAPAuthorizer-enabled storage grids (Issue #238; PR #338)
    • Added a 0-hro-cloud "cheat code" for Least Authority's "HRO Cloud" (Issue #339; PR #340)

    Changed

    • Binary distributions of Gridsync will now ship with Python version 3.9 (Issue #316; PR #336)
    • The MainWindow's toolbar buttons/actions have been modified to facilitate the addition of ZKAPAuthorizer support (Issue #238; PR #338)

    Removed

    • Python 3.6 is no longer supported (Issue #324; PR #325)
    • macOS 10.13 ("High Sierra") is no longer supported (Issue #333; PR #334)
    • The Gridsync project no longer depends on AppVeyor or Travis-CI for continuous integration and now uses GitHub Actions (Issues #326, #317, #304; PR #327, #318, #305)

    Fixed

    • An issue preventing multiple Vagrant/VirtualBox environments from launching via make vagrant-desktop-* and/or make vagrant-build-* has been fixed (Issue #333; PR #334)
    Source code(tar.gz)
    Source code(zip)
    Gridsync-Linux.AppImage(84.14 MB)
    Gridsync-Linux.AppImage.asc(833 bytes)
    Gridsync-macOS.dmg(45.21 MB)
    Gridsync-macOS.dmg.asc(833 bytes)
    Gridsync-Windows-setup.exe(48.18 MB)
    Gridsync-Windows-setup.exe.asc(833 bytes)
  • v0.4.3(Jul 24, 2020)

    Changelog

    0.4.3 - 2020-07-24

    Added

    • Basic support for fetching and displaying "newscap" messages; see docs/proposed/newscaps.md (Issue #184; PR #192, #211)
    • Notification "badges" will now be displayed over the system tray icon to indicate unread newscap messages (Issue #226, PR #227)
    • The application menu -- normally accessible by right-clicking the system tray icon -- is now also always accessible via a button in the status panel (Issue #201, PR #202)
    • Clicking a desktop notification on Windows will now activate the main window (Issue #209; PR #210)
    • macOS Mojave's "dark mode" is now supported (Issue #213, PR #217; Issue #267, PR #287)
    • Added support for "cross-compiling" Gridsync binaries via Vagrant/VirtualBox; see README.rst (Issue #230, PR #231)
    • Gridsync AppImages are now available for GNU/Linux (Issue #245, PR #246, #248, #253)
    • macOS builds have been notarized (Issue #261, PR #278)
    • An optional "default" grid-connection/configuration can now be specified via config.txt, facilitating custom deployments that omit "invite code"-based configuration (PR #292)
    • It is now possible to disable some features at runtime by modifying config.txt (PR #293)

    Changed

    • Binary distributions of Gridsync will now ship with Python version 3.7 (Issue #175; PR #187)
    • The "remove" folder action and subsequent confirmation dialog have been re-framed/updated to "stop syncing" instead. In addition, removing/stopping a folder will now unlink it from the user's rootcap/Recovery Key by default (i.e., unless the user checks the accompanying checkbox to "keep a backup copy of this folder on $GridName") (Issue #183, PR #190)
    • Various scripts, configurations, and operations relating to the Gridsync CI/testing/build process have been updated and improved, slightly reducing at least one developer's growing frustrations with Travis-CI and buildbot (PR #188)
    • Twisted's reactor.spawnProcess will now be used for running tahoe subprocesses on Windows, instead of threaded subprocess.Popen calls (Issue #176, PR #195)
    • GNU/Linux and Windows binary distributions will now use and ship with (Py)Qt version 5.15 (while macOS will use and ship 5.14, due to outstanding upstream bugs) (Issues #276, #267, #298; PRs #277, #287, #299)
    • Due to ending upstream support and binary incompatibily with Qt 5.12, Debian 8 ("Jessie") and Ubuntu 14.04 ("Trusty Tahr") are no longer supported. Users running Debian 8 or Ubuntu 14.04 will need to upgrade their operating systems or build/install Gridsync from source (via make) (PR #196)
    • High-DPI scaling (via Qt5's AA_EnableHighDpiScaling attribute) has been enabled on all platforms/environments (except for Qubes-OS and MATE -- see #204). In addition, font- and pixmap-scaling has been improved (Issue #193, #198, #232; PR #199, #203, #204, #233)
    • The "Open Gridsync" menu action will now also un-minimize and re-focus the window in the event that it is already open (Issue #205; PR #206)
    • Desktop notifications for connection/disconnection events are now disabled by default (Issue #218, PR #219)
    • Binary distributions of Gridsync will now ship with Tahoe-LAFS version 1.14.0
    • Python 3.5 support has been dropped; Gridsync now requires Python version 3.6 or higher (Issue #243, PR #244)
    • Users are no longer required to scroll to the bottom of a debug log in order to export it (Issue #258, PR #259)
    • Versioneer will now be used to manage version strings (PR #283; Issue #288, PR #289)
    • On macOS, Gridsync will no longer run as an background-only/"agent" app; the application will again be visible in both the Dock and CMD+Tab window-list (Issue #284, PR #285)
    • The grid-name will now be displayed in the status panel when "connected" instead of the number of connected/known storage nodes (Issue #296, PR #297)
    • The number of connected/known storage nodes and total storage space remaining will now always be displayed in the status panel label's tooltip, instead of the (now-removed) "globe" icon/button (Issues #296, #300; PR #301)

    Removed

    • Due to changes in minimum system requirements for numerous dependencies, macOS "Legacy" builds (targeting macOS 10.9 or higher) will no longer be provided (Issue #256, PR #266); Gridsync now requires a minimum macOS version of 10.13 or higher.

    Fixed

    • "Cheat codes" that correspond to non-existent configuration files are now rejected as invalid (Issue #185; PR #186)
    • libstdc++ has been excluded from Linux PyInstaller bundles, preventing a crash that coincided with opening a native file-chooser dialog on ArchLinux (Issue #189, PR #191)
    • The "syncing" system tray icon animation will no longer continue to animate endlessly if a folder is removed/stopped before it finishes syncing (Issue #197, PR #200)
    • Gridsync will now use atomic writes for all local configuration file updates (Issue #212, PR #214)
    • The default Qt MainWindow toolbar context menu has been disabled, preventing the situation in which a user might accidentally hide the toolbar with no way of re-showing it until the application re-launches (Issue #215, PR #216)
    • SetupRunner.ensure_recovery will now only be called when joining new grids, preventing an unnecessary upload from occurring -- and sometimes failing, due to a race-condition -- when trying to join a grid that was already joined (Issue #220, PR #221)
    • The unused "?"/"What's This" QDialog button (enabled by Qt on Windows by default) has been removed (Issue #222, PR #223)
    • Double-clicking a newly-joined folder to open it before the tahoe daemon has finished (re)starting will no longer result in a crash (Issue #224, PR #225, #229)
    • Modifying the application name via config.txt will no longer cause the config_dir tests to fail erroneously (Issue #234, PR #235)
    • The "drop zone" border (visually indicating, by means of a dotted line, the area capable of adding new folders via drag-and-drop) is now rendered programmatically according to the dimensions of the enclosing window, thus preventing the border from appearing disproportionately thick when the MainWindow is enlarged or maximized (Issue #75, PR #240)
    • The poorly-supported-by-Qt macOS "fullscreen" mode has been disabled for the MainWindow (and replaced with a more traditional "maximize" functionality), preventing the situation in which the application window could become stuck in fullscreen mode (Issue #241, PR #242)
    • Left-clicking the "Action" button corresponding to a specific folder will now correctly deselect and exclude any other folders from the subsequent user-selected action (Issue #254, PR #255)
    • Folders joined while connecting to a new grid will now appear immediately in the MainWindow folders view after the setup process completes (Issue #256, PR #257)
    • On Windows, Gridsync will attempt to remove any stale magic-folder sqlite databases on exit/restart, preventing an issue in which previously-joined folders could not be re-downloaded (Issue #294, PR #295)
    • Folders will no longer be erroneously shown as being "Up to date" if their corresponding tahoe client is not connected to the storage grid or has not completed a remote scan (Issue #300, PR #301).
    • The "Scanning" folder status/phase has been combined with the "Syncing" phase and will no longer be displayed separately (PR #301).
    Source code(tar.gz)
    Source code(zip)
    Gridsync-Linux.AppImage(89.13 MB)
    Gridsync-Linux.AppImage.asc(833 bytes)
    Gridsync-macOS.dmg(42.42 MB)
    Gridsync-macOS.dmg.asc(833 bytes)
    Gridsync-Windows-setup.exe(48.25 MB)
    Gridsync-Windows-setup.exe.asc(833 bytes)
  • v0.4.2(Apr 6, 2019)

    Changelog

    0.4.2 - 2019-04-06

    Added

    • An interface for viewing and exporting debugging information/logs for Gridsync and its underlying Tahoe-LAFS processes has been added (accessible via the system tray menu under "Help" -> "Export Debug Information...") (Issue #173, #168; PR #174, #179) -- thanks to @exarkun for providing the Tahoe-side functionality to make this happen! :)

    Changed

    • "Sharing"-related actions have been reframed considerably throughout the interface in order to more precisely convey the underlying functionality of the application -- i.e., that "sharing" entails the creating or entering invite codes and that these invite codes are created/entered on devices (rather than "shared" with "persons") (Issue #139, PR #166). In particular:
      • The "Enter Code" button on the MainWindow toolbar has been replaced with an "Invites" button (offering "Enter Invite Code" and "Create Invite Code" sub-actions), while the vague/ambiguous "Share" button has been removed completely
      • The top-level "Share" action in the right-click/context menu has been replaced with a more accurate "Sync with Device" -> "Create Invite Code" menu/action hierarchy
      • The "person" overlay/emblem (which appeared over icons for "shared" folders) has been replaced with a "laptop" overlay/emblem instead
      • The tooltip for "shared" folders has removed references to "persons"
    • The "Export Recovery Key" action in the systray menu has been removed (since it is already available on the MainWindow toolbar) (PR #166)
    • The "Preferences" action/button on the MainWindow toolbar has been moved to the system tray menu (PR #166)
    • The History View toggle has been moved to the right-hand side of the grid pulldown/combobox (PR #166)
    • Binary distributions of Gridsync will now include a much newer build/version of Tahoe-LAFS that includes upstream support for magic-folders on macOS (Tahoe ticket 1432) and other bug-fixes (Tahoe tickets 2965, 2997, 3006, 3017) -- thanks (again) @exarkun! :)
    • Numerous logging messages have been updated to remove or redact potentially sensitive information such as folder names, file/directory paths, Tahoe-LAFS storage fURLs, and capabilities (Issue #61; PR #179, #181)

    Fixed

    • Gridsync will now perform an additional check to ensure that enough storage servers are available before attempting to make a directory, link/unlink a capability, or upload/download a file (effectively "pausing" or delaying these operations until a sufficient number of connections have been established) in order to reduce the likelihood of connection-related errors/failures when initially joining a storage grid
    • Gridsync should no longer open a connection to the wormhole relay/rendezvous server when first initializing a Wormhole object, preventing the situation in which a second "clearnet" connection would idly persist (but remain unused) after adding a new connection via magic-wormhole over Tor -- big thanks to @abmoka (82b13dff1b5fee62eaaff6d483da66bb792a73cd @ Akomba Labs) for reporting this issue! (Issue #169, PR #171)
    • When running under a PyInstaller/frozen python interpreter, Gridsync/xdg-open should now correctly launch the user's browser when clicking links to URLs within the application (Issue #177, PR #180)
    • On desktop environments that do not support a system tray, the system tray menu will be accessible instead from the bottom-right corner of the status panel (Issue #178; PR #182)
    Source code(tar.gz)
    Source code(zip)
    Gridsync-Linux.tar.gz(89.32 MB)
    Gridsync-Linux.tar.gz.asc(833 bytes)
    Gridsync-macOS-Legacy.dmg(35.20 MB)
    Gridsync-macOS-Legacy.dmg.asc(833 bytes)
    Gridsync-macOS.dmg(39.84 MB)
    Gridsync-macOS.dmg.asc(833 bytes)
    Gridsync-Windows-setup.exe(45.89 MB)
    Gridsync-Windows-setup.exe.asc(833 bytes)
    Gridsync-Windows.zip(62.62 MB)
    Gridsync-Windows.zip.asc(833 bytes)
  • v0.4.1(Mar 13, 2019)

    Changelog

    0.4.1 - 2019-03-12

    Added

    • A rudimentary, text-based progress-indicator has been implemented, displaying the overall percentage of transferred/remaining bytes during folder-syncing operations (shown under the "Status" column of the folder-manager) (Issue #132, PR #142)
    • config.txt now accepts a logo_icon application setting, allowing whitelabel/rebranded distributions to display a larger logo on the initial welcome screen (in place of the default application icon + description combination) (PR #150)
    • config.txt now also accepts an optional [message] section with title, text, and (icon) type settings, allowing whitelabel/rebranded distributions to display a custom message to users upon starting the application (PR #161, #162)

    Changed

    • The Gridsync project no longer depends on Travis-CI or AppVeyor for build-deployment and will now instead use dedicated virtual machines running on dedicated hardware for releases (PR #165). Currently, the following operating system versions should be considered supported (64-bit only):
      • For GNU/Linux: glibc 2.17 and above -- including Debian 8+, Ubuntu 14.04+, CentOS 7+, and Fedora 29+
      • For macOS: macOS 10.12 "Sierra" and above
      • For Windows: Windows Server 2012R2, Windows 7 SP1, Windows 8.1, and Windows 10
    • The interprocess mutex (used to prevent multiple instances of Gridsync from running at the same time) has been changed from a listening TCP port to a filesystem lock (using fcntl on UNIX-based systems), preventing false "Gridsync is already running" errors under some macOS 10.14 environments (Issue #138, PR #141)
    • The Windows executable installer will now prompt the user whether install the application "for me only" or "for all users"; it is now possible to install Gridsync without requiring an administrator password (Issue #152, PR #153)
    • The unnecessary Tcl/Tk dependency inserted by PyInstaller has been removed from Tahoe-LAFS bundles on Windows, reducing the resultant application filesize by about 10 MB (PR #154)
    • The "Open Gridsync" system tray menu action is now always enabled but now will show/raise the "welcome" window in the event that no storage grids have been joined (Issue #147, PR #155)
    • PyInstaller/binary bundles will now always use the Tahoe-LAFS executable included inside the application directory (as opposed to selecting a tahoe executable from the user's PATH) (PR #158)
    • Gridsync will now use the Tahoe-LAFS web API directly when adding/creating new folders (instead of shelling out to the tahoe python CLI), resulting in significantly faster initial magic-folder creates and facilitating better error-handling (Issue #145, PR #160)
    • If a magic-folder fails to get added/created for any reason, Gridsync will automatically retry that operation after a 3 second delay. It will only re-try once, however (and will display an error message in the event of a second failure) (Issue #145, PR #160)
    • A warning/confirmation message-box will be displayed to the user in the event that they try to exit the application while a newly-added folder is still in the process of being created or if any existing folders are currently syncing (Issue #145, PR #160)
    • The [help] section of config.txt is now optional; the "Browse Documentation" and "Report Issue" actions in the systray help submenu will now only appear if docs_url and issues_url respectively have been set (PR #164)

    Fixed

    • Gridsync will now display an error message -- rather than crash -- in the (rare) event that a user tries to restore a folder without actually possessing the correct capabilities to do so (Issue #143, PR #144)
    • The desktop environment-specific file-manager should now properly launch when opening a folder under a PyInstaller build on Linux (Issue #146, PR #148)
    • The environment-specified font should now correctly load when running a PyInstaller build on Linux (Issue #84)
    • Gridsync will now refrain from trying to restart a tahoe client if that client is already in the proccess of stopping or starting, preventing needless tahoe restarts when adding new folders in quick succession (Issue #149, PR #151)
    • On Windows, the application icon should no longer persist in the system tray after the application has exited (Issue #156, PR #157)
    • The logic surrounding tahoe daemon restarts after adding folders has been improved; Gridsync will now wait until all known/queued linking events have completed before proceeding with a tahoe stop and will not attempt to restart unless at least one folder has been added/created successfully (Issue #145, PR #160)
    • In the event that a magic-folder cannot be added/created, it will be removed immediately from the folder view/model in the UI (after displaying an error message); failed folders should no longer linger or appear stuck in a "Loading..." state and/or need to be removed manually (PR #160)
    • A rare Qt-related crash (caused by Gridsync trying to update the mtime or size for a folder that has recently been removed) has been fixed (PR #160)
    • In hopes of fighting off any "Zombie Dragons", Gridsync will now restart the tahoe daemon after successfully leaving a magic-folder (PR #163)
    • When permanently removing one or more magic-folders, Gridsync will now wait until all unlink operations have completed before rescanning the rootcap, preventing the situation in which a folder might re-appear in the UI as "Remotely stored" despite having just been removed (PR #163)
    Source code(tar.gz)
    Source code(zip)
    Gridsync-Linux.tar.gz(89.08 MB)
    Gridsync-Linux.tar.gz.asc(833 bytes)
    Gridsync-macOS-Legacy.dmg(35.01 MB)
    Gridsync-macOS-Legacy.dmg.asc(833 bytes)
    Gridsync-macOS.dmg(39.66 MB)
    Gridsync-macOS.dmg.asc(833 bytes)
    Gridsync-Windows-setup.exe(45.68 MB)
    Gridsync-Windows-setup.exe.asc(833 bytes)
    Gridsync-Windows.zip(62.41 MB)
    Gridsync-Windows.zip.asc(833 bytes)
  • v0.4.0(Jan 12, 2019)

    Changelog

    0.4.0 - 2019-01-11

    Added

    • Tor integration (EXPERIMENTAL)
      • Gridsync can now optionally tunnel outgoing connections through the Tor anonymity network; see docs/tor-integration.md (Issue #64, Issue #99, PR #82, PR #127, PR #129)
    • Application preferences are now also accessible from the initial welcome screen
    • A "Restore from Recovery Key" link/option is now available directly from the initial welcome screen (Issue #60)
    • An Inno Setup Windows executable installer ("Gridsync-setup.exe") is now provided (Issue #35)
    • Backspace/Delete key-presses can now be used to remove folders
    • An "action" button/column has been added for each folder/row, making folder-specific actions accessible via left-click (Issue #89)
    • A (very) basic "About"/version dialog has been added, accessible via the systray menu
    • A "history" view has been added, displaying a chronological record of recent changes made to magic-folders and enabling per-file actions (Issue #92, PR #116, PR #124)
    • Support for high-DPI "retina" displays has been enabled for macOS ".app" bundles (PR #116)
    • In-app "help" buttons/dialogs have been added to invite-code widgets, providing additional information about "invite codes" and "Tor" (PR #129)
    • macOS binary releases are now certified by Apple (signed by "Developer ID Application: Christopher Wood (6X3QVDWX28)"); users should no longer receive "unidentified developer" warnings from Gatekeeper when launching Gridsync (Issue #20)

    Changed

    • Due to upstream changes/deprecations with the Homebrew package manager and Qt5, the minimum "officially" supported version of macOS for Gridsync binary distributions has been increased from 10.10 ("Yosemite") to 10.11 ("El Capitan"). For users who have not yet upgraded or who are still using older hardware, however, a "legacy" distribution of Gridsync has been provided (based off Qt 5.8 and tested to run on 2009-era hardware with versions of macOS as old as 10.9) (Issue #110)
    • The version of Tahoe-LAFS included in Windows and Linux binary distrubutions has been upgraded to 1.13.0 (PR #108)
    • macOS binary distributions will now include a more recent (but still unreleased) version of Tahoe-LAFS with numerous magic-folder-related bug-fixes and improvements -- thanks @vu3rdd!
    • Gridsync will now run as an "agent" application on macOS, accessible from the menu bar but no longer appearing in the Dock (Issue #86, PR #112, PR #114)
    • A "person" overlay/embled will now be displayed over the icons of shared folders (PR #129, PR #133)
    • Failure to decrypt a recovery key no longer requires re-importing the file to try again (Issue #60)
    • Font sizes have been increased on macOS to match the equivalent weights on most Linux and Windows environments
    • The dynamic action button inside invite code fields will now also update on window-enter cursor events (allowing, e.g., the "paste" button to become conveniently activated after copying an invite code to the clipboard from another window)
    • The main/status window's title will now include the name of the currently-active grid
    • The Preferences pane has been detached into a floating Preferences window with per-section "tabs" (Issue #117, PR #119)
    • The MainWindow toolbar has been updated; text labels have been added beneath buttons and some actions have been re-organized (Issue #106, PR #120)
    • The MainWindow status bar has been replaced with a "status panel", showing grid-related status information in a more compact manner (PR #116, PR #123)
    • Various misc. UI elements (widgets, margins, fonts, etc.) have been adjusted on macOS and Windows to better match the underlying desktop environment (PR #125, PR #129)

    Removed

    • The "default" provider section of config.txt has been removed; organizations wishing to deploy a modified Gridsync client with pre-configured settings are encouraged to use a "cheat code" instead
    • The "Import from Recovery Key" option has been removed from the manual configuration screen (since this functionality is now available from the welcome screen)
    • The "green lock" folder icon overlay has been removed (Issue #121, PR #122)

    Fixed

    • tahoe.select_executable() will now use an empty nodedir when checking tahoe instances for multi-magic-folder support (preventing potential inaccuracies caused, e.g., by a pre-existing/misconfigured $HOME/.tahoe nodedir)
    • Tahoe subclients created from older versions of Tahoe-LAFS that only support "legacy" magic-folders will now correctly inherit the parent client's servers.yaml settings upon creation.
    • The "Open Gridsync" systray menu action will correctly remain disabled until at least one grid has been succesfully joined
    • Users will no longer be prompted to export a Recovery Key after restoring a connection from one
    • Empty folders will no longer appear stuck in a "Loading" state (Issue #73)
    • Gridsync will now shutdown more gracefully, avoiding qt5reactor-related hangs when exiting
    • Subdirectory objects are now ignored when parsing magic-folders (avoiding Tahoe-LAFS bug #2924) (PR #115)
    • Newly joined grids will become available/selected immediately from the main window comboxbox (PR #126, PR #129)
    Source code(tar.gz)
    Source code(zip)
    Gridsync-Linux.tar.gz(75.15 MB)
    Gridsync-Linux.tar.gz.asc(833 bytes)
    Gridsync-Mac-Legacy.dmg(34.68 MB)
    Gridsync-Mac-Legacy.dmg.asc(833 bytes)
    Gridsync-Mac.dmg(40.03 MB)
    Gridsync-Mac.dmg.asc(833 bytes)
    Gridsync-setup.exe(39.58 MB)
    Gridsync-setup.exe.asc(833 bytes)
    Gridsync-Windows.zip(55.22 MB)
    Gridsync-Windows.zip.asc(833 bytes)
  • v0.3.2(Apr 17, 2018)

    Changelog

    0.3.2 - 2018-04-17

    Added

    • Support for introducerless connections; Gridsync can now write storage fURLs received through invite messages directly to $nodedir/private/servers.yaml, bypassing the need to connect to an introducer node (Issue #65)
    • Preliminary support for "cheat codes", allowing future users to enter a pre-given invite code to join a grid without the need to complete a full magic-wormhole exchange (Issue #54); see docs/cheat-codes.md

    Changed

    • Magic-folder invites now use the Tahoe web API directly to create member subdirectories (as opposed to shelling out to tahoe magic-folde invite) and will do so concurrently in the event of "batched" invites, resulting in significantly faster overall invite code creation when sharing folders (Issue #57)
    • Gridsync will now prompt users for a grid name in the event that one is not provided inside an invite message

    Fixed

    • Rare crashes caused by the successive emitting of certain pyqtSignals
    • Overflow in "size" column caused by PyQt's C++ types (Issue #78) -- thanks @yegortimoshenko!
    Source code(tar.gz)
    Source code(zip)
    Gridsync-Linux.tar.gz(73.59 MB)
    Gridsync-Linux.tar.gz.asc(833 bytes)
    Gridsync-Mac.dmg(33.26 MB)
    Gridsync-Mac.dmg.asc(833 bytes)
    Gridsync-Windows.zip(41.98 MB)
    Gridsync-Windows.zip.asc(833 bytes)
  • v0.3.1(Mar 29, 2018)

    Changelog

    0.3.1 - 2018-03-29

    Added

    • "Start minimized" option to Preferences pane
    • "Start automatically on login" option to Preferences pane (Issue #66)
    • Error message when trying to join an already-existing grid (Issue #68)

    Changed

    • The application will no longer start in a "minimized" state by default (Issue #69)
    • Updated qt5reactor to wake up less often, reducing idle CPU consumption -- thanks @exarkun!

    Fixed

    • "Last modified" time will no longer update until after the first remote scan has completed, thereby preventing misleading mtimes (e.g., "48 years ago") from being displayed briefly on start (Issue #63).
    • Invites received through the "Add Folder" button will no longer appear to "hang" when receiving an invite that does not contain a magic-folder join-code (Issue #67)
    • Setup will now only prompt for a grid-rename if the introducer fURL received through the invite actually differs from that of the conflicting target nodedir (Issue #68)
    • Setup will now actually try to fetch icon URLs provided inside invite messages
    Source code(tar.gz)
    Source code(zip)
    Gridsync-Linux.tar.gz(73.53 MB)
    Gridsync-Linux.tar.gz.asc(833 bytes)
    Gridsync-Mac.dmg(33.23 MB)
    Gridsync-Mac.dmg.asc(833 bytes)
    Gridsync-Windows.zip(41.92 MB)
    Gridsync-Windows.zip.asc(833 bytes)
  • v0.3.0(Mar 10, 2018)

    Changelog

    0.3.0 - 2018-03-10

    Added

    • New "Recovery Key" system
      • Users can now export (and optionally encrypt) a "Recovery Key" -- a small file (containing grid connection settings and a "rootcap") sufficient for restoring access to previously added/joined folders (see docs/recovery-keys.md).
    • Folder-sharing
      • Users can now share/sync added folders among other users and devices using invite codes. Newly joined folders will automatically synchronize between users/devices when updated, using Tahoe-LAFS' magic-folder feature.
    • Multi-magic-folder support
      • Gridsync will now take advantage of Tahoe-LAFS' forthcoming "multi-magic-folder" feature (of adding/joining multiple magic-folders through a single tahoe client instance) resulting in significant resource savings. When running with a compatible tahoe client (now included in Linux and Windows binary distributions), Gridsync will automatically migrate its own "legacy" multi-nodedir configuration format to use the new single-nodedir format.
    • Numerous new misc. UI elements
      • Including additional toolbar icons/actions (for, e.g., adding new folders, exporting a Recovery Key), expanded status information (showing, e.g., number of connected storage nodes, amount of space remaining, "last modified" times, whether folders are "stored remotely" vs. active locally, etc.), and error messages (when trying to, e.g.,add individual files, overwrite already-existing folders, etc.).

    Changed

    • The magic-wormhole/"invite code" appid has been changed (from tahoe-lafs.org/tahoe-lafs/v1 to tahoe-lafs.org/invite) in order to be compatible with Tahoe-LAFS' forthcoming tahoe invite feature; Gridsync 0.2 users will need to upgrade to version 0.3 in order to send/receive grid invites to/from version 0.3 users.
    • Updated various UI elements (icons, text labels, etc.) to be more clear
    • Upgraded bundled Qt libraries to version 5.10.1
    • Upgraded bundled Python interpreter to version 3.6
    • Upgraded bundled Tahoe-LAFS binary to 1.12.1.post198 for various magic-folder fixes (Linux and Windows only)
    • Dropped Python 2 support

    Fixed

    • Removed potentially-conflicting bundled libraries from Linux binary distributions (Issues #43, #47)
    • Numerous other minor UI-related bugs, performance issues, misc. bugs, etc.
    Source code(tar.gz)
    Source code(zip)
    Gridsync-Linux.tar.gz(73.55 MB)
    Gridsync-Linux.tar.gz.asc(833 bytes)
    Gridsync-Mac.dmg(33.27 MB)
    Gridsync-Mac.dmg.asc(833 bytes)
    Gridsync-Windows.zip(41.92 MB)
    Gridsync-Windows.zip.asc(833 bytes)
  • v0.2.0(Aug 11, 2017)

    Version 0.2.0

    Changelog:

    • Added support for device-pairing/grid-sharing via magic-wormhole/invite codes
    • Added "Preferences" pane with user-configurable desktop notifications
    • Updated drag-and-drop UI with new graphics/labels and accessibility improvements
    • Numerous minor tweaks and fixes
    Source code(tar.gz)
    Source code(zip)
    Gridsync-Linux.tar.gz(66.25 MB)
    Gridsync-Linux.tar.gz.asc(833 bytes)
    Gridsync-Mac.dmg(31.31 MB)
    Gridsync-Mac.dmg.asc(833 bytes)
    Gridsync-Windows.zip(40.84 MB)
    Gridsync-Windows.zip.asc(833 bytes)
  • v0.1.0(Jul 14, 2017)

    Version 0.1.0

    Changelog:

    • Updated magic-wormhole/invite protocol to be compatible with forthcoming(?) tahoe invite command
    • Added support for icon_url key in invite JSON response and pre-bundled image files (currently, "Least Authority S4" only)
    • Fixed display/update of "Last sync" value in status window for in-progress magic-folder sync operations
    • Numerous documentation updates and additions (README; verifying-signatures, invite-codes)
    • Other misc. cleanups and bug fixes
    Source code(tar.gz)
    Source code(zip)
    Gridsync-Linux.tar.gz(63.01 MB)
    Gridsync-Linux.tar.gz.asc(833 bytes)
    Gridsync-Mac.dmg(32.33 MB)
    Gridsync-Mac.dmg.asc(833 bytes)
    Gridsync-Windows.zip(40.24 MB)
    Gridsync-Windows.zip.asc(833 bytes)
The Tahoe-LAFS decentralized secure filesystem.

Free and Open decentralized data store Tahoe-LAFS (Tahoe Least-Authority File Store) is the first free software / open-source storage technology that

Tahoe-LAFS 1.2k Jan 01, 2023
A Terminal Client for MySQL with AutoCompletion and Syntax Highlighting.

mycli A command line client for MySQL that can do auto-completion and syntax highlighting. HomePage: http://mycli.net Documentation: http://mycli.net/

dbcli 10.7k Jan 07, 2023
An open source multi-tool for exploring and publishing data

Datasette An open source multi-tool for exploring and publishing data Datasette is a tool for exploring and publishing data. It helps people take data

Simon Willison 6.8k Jan 01, 2023
A generic JSON document store with sharing and synchronisation capabilities.

Kinto Kinto is a minimalist JSON storage service with synchronisation and sharing abilities. Online documentation Tutorial Issue tracker Contributing

Kinto 4.2k Dec 26, 2022
Postgres CLI with autocompletion and syntax highlighting

A REPL for Postgres This is a postgres client that does auto-completion and syntax highlighting. Home Page: http://pgcli.com MySQL Equivalent: http://

dbcli 10.8k Dec 30, 2022
TrueNAS CORE/Enterprise/SCALE Middleware Git Repository

TrueNAS CORE/Enterprise/SCALE main source repo Want to contribute or collaborate? Join our Slack instance. IMPORTANT NOTE: This is the master branch o

TrueNAS 2k Jan 07, 2023
Synchronize local directories with Tahoe-LAFS storage grids

Gridsync Gridsync aims to provide a cross-platform, graphical user interface for Tahoe-LAFS, the Least Authority File Store. It is intended to simplif

171 Dec 16, 2022
a full featured file system for online data storage

S3QL S3QL is a file system that stores all its data online using storage services like Google Storage, Amazon S3, or OpenStack. S3QL effectively provi

917 Dec 25, 2022
The command-line tool that gives easy access to all of the capabilities of B2 Cloud Storage

B2 Command Line Tool The command-line tool that gives easy access to all of the capabilities of B2 Cloud Storage. This program provides command-line a

Backblaze 467 Dec 08, 2022
ZFS, in Python, without reading the original C.

ZFSp What? ZFS, in Python, without reading the original C. What?! That's right. How? Many hours spent staring at hexdumps, and asking friends to searc

Colin Valliant 569 Oct 28, 2022
Continuous Archiving for Postgres

WAL-E Continuous archiving for Postgres WAL-E is a program designed to perform continuous archiving of PostgreSQL WAL files and base backups. To corre

3.4k Dec 30, 2022
ZODB Client-Server framework

ZEO - Single-server client-server database server for ZODB ZEO is a client-server storage for ZODB for sharing a single storage among many clients. Wh

Zope 40 Nov 04, 2022
Automatic SQL injection and database takeover tool

sqlmap sqlmap is an open source penetration testing tool that automates the process of detecting and exploiting SQL injection flaws and taking over of

sqlmapproject 25.7k Jan 02, 2023
Barman - Backup and Recovery Manager for PostgreSQL

Barman, Backup and Recovery Manager for PostgreSQL Barman (Backup and Recovery Manager) is an open-source administration tool for disaster recovery of

EDB 1.5k Dec 30, 2022
The web end of seafile server.

Introduction Seahub is the web frontend for Seafile. Preparation Build and deploy Seafile server from source. See http://manual.seafile.com/build_seaf

476 Dec 29, 2022
The next generation relational database.

What is EdgeDB? EdgeDB is an open-source object-relational database built on top of PostgreSQL. The goal of EdgeDB is to empower its users to build sa

EdgeDB 9.9k Dec 31, 2022
Nerd-Storage is a simple web server for sharing files on the local network.

Nerd-Storage is a simple web server for sharing files on the local network. It supports the download of files and directories, the upload of multiple files at once, making a directory, updates and de

ハル 68 Jun 07, 2022
Cross-platform desktop synchronization client for the Nuxeo platform.

Nuxeo Drive Desktop Synchronization Client for Nuxeo This is an ongoing development project for desktop synchronization of local folders with remote N

Nuxeo 63 Dec 16, 2022