## 2.0.3 ***(June 2, 2026)***

### Fixed
- Bug preventing telemetry files from being included in the plugin deployment.

## 2.0.1 ***(May 20, 2026)***

### Security

This is a security hotfix to address several Bandit-reported issues in the codebase. The following changes were made:

- Replaced `xml.etree.ElementTree.fromstring` with `lxml.etree.fromstring` for parsing remote WMS capabilities XML. `lxml` disables external entity resolution by default, preventing XXE injection attacks. Resolves Bandit B314.
- Added `timeout=30` to `requests.get` call in `DataExchangeAPI` file download. Resolves Bandit B113.
- Added `timeout=60` to streaming `requests.get` call in `Downloader`. Resolves Bandit B113.
- Added URL scheme validation in `Telemetry` before calling `urlopen` — only `http` and `https` schemes are permitted, preventing use of `file://` or custom schemes. Resolves Bandit B310.
- `hashlib.md5()` in file integrity / ETag calculation now passes `usedforsecurity=False` to explicitly indicate non-cryptographic use and satisfy FIPS-mode Python environments. Resolves Bandit B324.

## 2.0.0 ***(May 20, 2026)***

The major feature of 2.0 is support for QGIS 4.0 which runs on Qt6 and Python 3.12. In addition to the necessary changes for QGIS 4.0, this release also includes a number of new features and bug fixes to improve the overall user experience.

### Added
- Recent Projects Menu with separate local and remote entries #199
- Add Project Bounds to Map #233
- Downloader now fetches `project.rs.xml` first for faster project availability #236
- Placeholder empty node for projects that failed to load #48
- Icons in Recent Projects menu to distinguish local vs. remote projects
- Dark mode capable software feature icons
- `Desktop.ini` ignored by uploader by default #241

### Fixed
- Five Windows-specific bugs from issue #245:
  - Broken/missing project path dialog now deferred so it no longer blocks QGIS project load
  - Expand/Collapse All now scopes correctly to the selected project instead of all projects
  - Metadata URLs are now clickable (replaced `QTextEdit` with `QTextBrowser`)
  - Telemetry opt-out checkbox no longer resets to checked on every open
  - Remote projects no longer appear as blank entries in the Recent Projects menu
- `RemoteProject` missing `has_bounds_layer` / `bounds_path` attributes causing right-click crash #246
- Port conflict check added to fix startup issue #235
- Upload dialog refreshes correctly after a failure #230
- Floating error button on project upload failure
- Better error message when a remote project cannot be found
- Context menu on broken/invalid project nodes
- Bug when closing an invalid project
- Remote recent project failing to reopen
- Expanding NAIP plus basemap crashes QGIS #105
- Repeater not respecting `collapsed` attribute #188
- Layer addition bug after project reload
- Remote layers now distinguished with a suffix #219
- Pagination of files updated to match DEX API changes

### Changed
- Telemetry improvements and more robust event tracking
- Code cleanup and upgraded linting across the codebase
- Various compatibility fixes from cross-platform testing

## 1.1.1 ***(January 23, 2026)***

### Added
- Tile layers now zoom to extent and new context menu option for projects #209
- Adding more explicit zooming logic on project load #215

### Fixed
- Putting the upload controls into a scrollable window fixes #210
- Fixed metadata persistence #212
- Reworked the tree parsing to avoid duplicate items and infinite loops #211
- Better metadata type handling #213
- Added better Mapbox styling. Colours still wrong for point layers #214

## 1.1.0 ***(January 12, 2026)***

### Added
- **Remote Project Support**: Browse and interact with projects directly from the Riverscapes Data Exchange without local files.
- **Improved Download Workflow**: Selective file downloads, etag-based update detection, and a new progress-tracked multi-step UI.
- **WebTiles & Vector Tiles**: Full support for remote tile services including Mapbox GL symbology for vector layers.
- **Authentication Persistence**: Remembered Riverscapes login to minimize browser popups.
- **UI State Persistence**: Dock height and visibility are now preserved across sessions.

### Changed
- **Redesigned Project Upload**: Updated multi-step workflow for better usability and consistency.
- **Enhanced Threading**: Implemented thread locking to prevent collisions on asynchronous calls.
- **Cleaner Dock Lifecycle**: Improved dock window management to prevent duplicates during plugin reloads.
- **Dependency Update**: Updated `rsxml` to `2.2.1` for improved etag support #121.

## 1.0.6 ***(December 17, 2025)***

### Added
- Allow user to fix broken or moved rs project reference when opening qgz #182
- Add user setting for dock widget (Project Explorer and Metadata Panels) location #185, #49
- Add Layer description to Metadata dock widget #174
- Add Local folder for Business Logic Search #191

### Fixed
- Fixed bug in rendering BL transparency
- Expanding NAIP plus basemap crashes QGIS #105
- Metadata popup for hyperlinks ignores user input #170
- Metadata panel should clear when unload projects #192
- QGiS crashes on Project Close #140

### Changed
- Icons Updated
- Rename MetaData as Metadata in context menus
- Include a Try/Catch within Close All #184
- QViewer About Dialog changes #195


## 1.0.5 ***(October 3, 2025)***

### Changed
- Single drop down toolbar menu for viewer #186


## 1.0.4 ***(September 4, 2025)***

### Fixed
- Fix for context menu crashes #163
- Safely handle Topo TIN data types #137

### Added
- Project Bounds XML Generator #138
- Add Browse Data Exchange Projects in this Area #180


## 1.0.3 ***(April 04, 2025)***

### Fixed
- Fixed netsync issue casuing QGiS crash #162
- Restructured how plugin tracks loaded projects to fix QGiS crash #135

## 1.0.2 ***(March 20, 2025)***

### Changed
- Sync QRiS protocol library xml files in resources
- Changed outdated reference to Rave in metadata #159

## 1.0.1 ***(February 24, 2025)***

### Fixed
- Fixing QGIS crash issue. #141


## 1.0.0 ***(October 11, 2024)***

### Changed
- Remove Experimental Tag


## 0.9.5 ***(October 11, 2024)***

### Fixed
- Project uploader using wrong organization ownership #132


## 0.9.4 ***(September 9, 2024)***

### Added
- License agreement for the plugin

### Changed
- RSXML Module updated to version 2.0.6
- Warehouse renamed to Data Exchange #129

## 0.9.3 ***(June 19, 2024)***

### Added
- Include QRiS metric definitions in the resources sync.


## 0.9.2 ***(April 26, 2024)***

### Added
- Project Data Exchange Uploader

### Fixed
- Close All Projects Throws Error #107
- Better Business logic handling
- Message bar was not showing up #123
- GraphQL files not being included in the deploy #117

### Changed
- Removed additional "QRAVE" references

## 0.9.1 ***(March 27, 2024)***

### Fixed
- Bug with "Show Basemaps in Project Tree" checkbox throwing error
- Bug when adding Basemaps to versions of QGIS < 3.28
- View in Warehouse button menu item now working properly with new Riverscapes Projects version

### Changed
- removed lingering references to QRAVE
- Updated urls to riverscapes.net
- Update Settings window title

## 0.9.0 ***(December 15, 2023)***

* Refresh QRAVE as Riverscapes Viewer
* logo and icon changes

## 0.8.1 ***(March 24, 2023)***

* Add framework for QRiS integration
* Support for relative paths in project XML

## 0.5.1 ***(June 1, 2021)***

* Hotfix patch to allow for some new Riverscapes functionality

## 0.5.0 ***(June 1, 2021)***

### New Features

* [Update to support more basemap Types (XYZ and TMS)](https://github.com/Riverscapes/QRAVEPlugin/issues/21)
* [Adding the ability to opt-out of automatic updates](https://github.com/Riverscapes/QRAVEPlugin/issues/23)

### Bug Fixes

* [Failing gracefully when the project XML doesn't conform to the latest version](https://github.com/Riverscapes/QRAVEPlugin/issues/28)
* [Empty tree branches don't cause crashes anymore](https://github.com/Riverscapes/QRAVEPlugin/issues/15)
* [Raster transparencies now work correctly](https://github.com/Riverscapes/QRAVEPlugin/issues/22)
* [...lots of little annoying bugs](https://github.com/Riverscapes/QRAVEPlugin/issues/18)


## 0.4.0 ***(May 13, 2021)***

* [Fixed a blocking bug that prevented working on QGIS Versions less than 3.18](https://github.com/Riverscapes/QRAVEPlugin/issues/16)
* [Fixed an issue where layers with the same name in different projects cannot be added to the map](https://github.com/Riverscapes/QRAVEPlugin/issues/14)
* [Fixed: Project-level "Add all to map" broken #13](https://github.com/Riverscapes/QRAVEPlugin/issues/13)
* [Regression: Transparency issue fixed and Vectors now supported](https://github.com/Riverscapes/QRAVEPlugin/issues/2)
* Misc problems and code cleanups.

## 0.3.0 ***(May 10, 2021)***

* [Fixed the about screen regression issue](https://github.com/Riverscapes/QRAVEPlugin/issues/11)
* Optimization of unnecessarily large graphics to reduce overall plugin size. (7Mb --> 542Kb)
* Fixed several small OSX-only bugs and provided a development environment that is usable on that OS.


## 0.2.0 ***(May 4, 2021)***

### Bug Fixes

* [Respect the "collapsed" attribute in the business logic](https://github.com/Riverscapes/QRAVEPlugin/issues/8)
* [Metadata.txt version not updating on plugin build.](https://github.com/Riverscapes/QRAVEPlugin/issues/7)
* [Acknowledgements Not Updating](https://github.com/Riverscapes/QRAVEPlugin/issues/6)
* [Toolbar Icons Disabled upon first install](https://github.com/Riverscapes/QRAVEPlugin/issues/5)
* [Symbology qml not loading correctly](https://github.com/Riverscapes/QRAVEPlugin/issues/4)
* [Multiple projects open at once](https://github.com/Riverscapes/QRAVEPlugin/issues/3)
* [Support transparency attribute](https://github.com/Riverscapes/QRAVEPlugin/issues/2)


## 0.0.1

First version. Everything is new.
