SPDX-License-Identifier: GPL-3.0-or-later
-->
+## v5.0.0
+
+### Notable Changes
+
+#### API option
+
+**This is a potentially breaking change.** It is no longer necessary to call a
+different function based which API should be used if a particular one is needed.
+The `options` parameter now accepts an `api` property which can be "webgpu",
+"webgl", "wasm", or "cpu". If not specified, NanoPow will select the best API
+automatically based on availability. The old API-specific functions have been
+deprecated as part of this release. Version 4 will be updated in a separate
+minor release to support the `api` property and provide a bridge between
+versions.
+
+#### WASM and CPU implementations
+
+While the WebGPU API is the fastest available in NanoPow and the WebGL API is a
+close second, both of them are lightyears ahead of non-GPU-based implementations
+in terms of speed. However, they also suffer from varying levels of browser
+support and can be difficult to recover if there is a device error. In order to
+provide the ultimate chain of fallback mechanisms, NanoPow now includes a WASM
+module written in AssemblyScript and a CPU module written in plain TypeScript.
+The WASM module has been optimized as much as possible, and benchmarks show that
+it compares favorably to native speeds. The CPU module is provided as a final
+fallback option, but it should only be used for testing very low difficulties.
+However, CPU is now used for all validation since it is fast enough to check a
+single hash and easier to maintain in one place.
+
+#### Sample systemd service unit file for NanoPow Server
+
+The `docs/` directory now includes a sample service unit file that can be used
+to run the NanoPow work server in the background at login. It includes
+instructions on usage in the header.
+
+### Other Changes
+
+New `Logger` and `Queue` classes improve logging and request handling.
+
+Fixed bug in IPC implementation which communicates between CLI and server.
+
+Server requests that throw an error will now return an error object to the user.
+
+Fixed issue with server puppeteer launching NanoPow before GPU was ready.
+
+Shaders now generated with scripts for more robust algorithm implementations.
+
+Improved configuration checks with NanoPowConfig class.
+
+Defer loading of APIs until requested.
+
+Improved type checking and removed unnecessary type exports.
+
+Reorganized project structure.
+
+
+
## v4.1.7
### Notable Changes