]> git.codecow.com Git - libnemo.git/commitdiff
v0.1.0 releases/v0.1
authorChris Duncan <chris@zoso.dev>
Thu, 24 Jul 2025 21:42:52 +0000 (14:42 -0700)
committerChris Duncan <chris@zoso.dev>
Thu, 24 Jul 2025 21:42:52 +0000 (14:42 -0700)
CHANGELOG.md [new file with mode: 0644]
package-lock.json
package.json

diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644 (file)
index 0000000..bd24914
--- /dev/null
@@ -0,0 +1,51 @@
+<!--
+SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
+SPDX-License-Identifier: GPL-3.0-or-later
+-->
+
+## v0.1.0
+
+### Notable Changes
+
+#### Secure by default
+
+Previously, `libnemo` wallets and accounts had their own lock/unlock mechanisms
+which were unwieldy and could get out of sync. Now, the private keys of accounts
+derived from wallets are encrypted immediately and stored in an IndexedDB
+database instead of session storage, enabling secure persistent access. Accounts
+can now sign blocks directly as long as their wallet is unlocked so that the
+private key is inaccessible under normal conditions. A new optional `export`
+method allows the private key to be backed up if the implementing application
+decides to utilize it. Encryption, decryption, and signing all executes in Web
+Workers, further isolating the keys from the main thread and any remote access.
+
+#### PoW built in
+
+Proof-of-work required to publish blocks is now provided by the `nano-pow`
+package. This enables fast PoW using the best available browser GPU technology
+and frees up `libnemo` to focus on wallet, account, and block interactions. More
+information on `nano-pow` can be found [here](https://npmjs.com/nano-pow).
+
+#### Persistent rolodex
+
+Known contacts and their addresses are stored in a Rolodex object in `libnemo`.
+Now, that same functionality is stored in IndexedDB instead of simple object
+variables, enabling contact management across browser sessions.
+
+#### BLAKE2b included
+
+The dependency on the `blake2b` package has been forked, converted to
+TypeScript, updated to use 64-bit integers natively, refactored for legibility,
+and integrated directly into `libnemo`.
+
+#### Develop with NodeJS
+
+Some browser APIs used by `libnemo` are not available in NodeJS, specifically
+Web Workers and IndexedDB. Leveraging `esbuild` features, a simple polyfill now
+enables Node worker threads in place of Web Workers. A new dev dependency on
+`fake-indexeddb` enables the IndexedDB features required for data storage in the
+Node environment. The Node-specific output is distributed as a separate bundle.
+
+#### Testing, testing
+
+Even more tests have been implemented to rigorously check functionality.
index 062e907abea6abdd2b3dbdd058fd22219c832680..bbe2428e017b6d8a8bec91b8bdcd1281e3f93a51 100644 (file)
@@ -1,15 +1,14 @@
 {
        "name": "libnemo",
-       "version": "0.0.21",
+       "version": "0.1.0",
        "lockfileVersion": 3,
        "requires": true,
        "packages": {
                "": {
                        "name": "libnemo",
-                       "version": "0.0.21",
+                       "version": "0.1.0",
                        "license": "(GPL-3.0-or-later AND MIT AND ISC)",
                        "dependencies": {
-                               "buffer": "6.0.3",
                                "nano-pow": "^5.1.4"
                        },
                        "devDependencies": {
index a721c839d7fb43f3c76735b350483efab523166b..ddc841b7f56dcb136337e5aa4fbbdfa81bdfc1e2 100644 (file)
@@ -1,6 +1,6 @@
 {
        "name": "libnemo",
-       "version": "0.0.21",
+       "version": "0.1.0",
        "description": "Asynchronous, non-blocking Nano cryptocurrency integration toolkit.",
        "keywords": [
                "nemo",