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](https://appimage.org/) are now available for GNU/Linux (Issue 245, PR 246, 248, 253)
- macOS builds have been [notarized](https://developer.apple.com/documentation/xcode/notarizing_macos_software_before_distribution) (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](https://github.com/warner/python-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).