]> git.codecow.com Git - libnemo.git/commitdiff
Reformat changelog.
authorChris Duncan <chris@zoso.dev>
Sun, 26 Apr 2026 21:32:52 +0000 (14:32 -0700)
committerChris Duncan <chris@zoso.dev>
Sun, 26 Apr 2026 21:32:52 +0000 (14:32 -0700)
CHANGELOG.md

index 9a01c40fbe9940c8a9d660639961895bcacadd98..2ea210a7847a6c300e2cfd2b8062670b70e15dda 100644 (file)
@@ -7,15 +7,11 @@ SPDX-License-Identifier: GPL-3.0-or-later
 
 ## v0.12.1
 
-### Notable Changes
-
-Fixed signing blocks from an Exodus wallet.
+- Fixed signing blocks from an Exodus wallet.
 
 ## v0.12.0
 
-### Notable Changes
-
-#### Sign arbitrary data directly
+### Sign arbitrary data directly
 
 Previously, the process that `libnemo` followed in order to sign arbitrary data,
 represented as one or more strings, was to first hash them all using BLAKE2b and
@@ -27,7 +23,7 @@ Now, the input data is treated as UTF-8 strings and encoded to bytes using the
 browser built-in `TextEncoder` class, and then it is passed directly to
 `nano25519` for signing without hashing.
 
-#### Refactored Account class
+### Refactored Account class
 
 Now that public keys can be derived extremely quickly using `nano25519`, there
 is no need to require async loading to Account objects. The constructor is now
@@ -53,7 +49,7 @@ The `index` property has been removed from the `Account` class because it is
 intrinsic to wallets, not accounts. `Wallet` objects still keep track of their
 accounts by index as before.
 
-#### Generate PoW when transmitting Block
+### Generate PoW when transmitting Block
 
 The transmission of a block to the Nano network implies that the block is fully
 populated with the necessary data to be processed. One common stumbling block
@@ -67,16 +63,14 @@ already a step that is subject to lag from network conditions, ensuring that the
 block is not rejected for missing `work` should hopefully improve the dev
 experience.
 
-### Other Changes
+### Other changes in v0.12.0
 
-Fixed key byte argument being zeroed by `Tools.sign()`, leaving the key handling
-to the responsibility of the consumer.
+- Fixed key byte argument being zeroed by `Tools.sign()`, leaving the key
+  handling to the responsibility of the consumer.
 
 ## v0.11.0
 
-### Notable Changes
-
-#### NEW! Exodus wallet support
+### NEW! Exodus wallet support
 
 Exodus wallet uses a non-standard derivation path for Nano accounts, and the
 derivation path in their documentation is not entirely accurate which has led to
@@ -88,7 +82,7 @@ supports a new Wallet type of "Exodus". Since this is a feature that is
 difficult to test against, issues could occur and should be reported to
 <bug-libnemo@codecow.com>.
 
-#### Improved vault worker
+### Improved vault worker
 
 The previous version of the Web Worker for wallet vaults was constructed using
 complex stringification of worker code as well as dependencies. This limited
@@ -98,45 +92,33 @@ using esbuild. Consequently, bespoke implementations of Ed25519 andd secp256k1
 have been deprecated in favor of packages `nano25519` and `@noble/secp256k1`
 respectively.
 
-### Other Changes
-
-Nonces of 16 bytes can now be signed by Ledger devices.
+### Other changes in v.0.11.0
 
-Vault worker and host now exchange domain and ID info to prevent cross-talk with
-other active workers.
-
-Build targets dropped back to ES2022 and Node 22 to improve compatibility.
-
-IIFE build removed.
-
-Dependencies and distribution file names updated.
+- Nonces of 16 bytes can now be signed by Ledger devices.
+- Vault worker and host now exchange domain and ID info to prevent cross-talk
+  with other active workers.
+- Build targets dropped back to ES2022 and Node 22 to improve compatibility.
+- IIFE build removed.
+- Dependencies and distribution file names updated.
 
 ## v0.10.5
 
-### Notable Changes
-
-Update domain name.
+- Update domain name.
 
 ## v0.10.4
 
-### Notable Changes
-
-Deprecate NamedData type which is redundant with the built-in Record type.
-
-Insert Ledger wallets to database with zero-length buffers for encryption data
-instead of `undefined`.
-
-Improve performance by eliminating some object property lookups.
+- Deprecate NamedData type which is redundant with the built-in Record type.
+- Insert Ledger wallets to database with zero-length buffers for encryption data
+  instead of `undefined`.
+- Improve performance by eliminating some object property lookups.
 
 ## v0.10.3
 
-### Notable Changes
-
-Updated dependencies.
+- Updated dependencies.
 
 ## v0.10.2
 
-### Notable Changes
+### Ledger status events
 
 An event detailing the current Ledger status is now emitted when the status is
 changed.
@@ -162,17 +144,12 @@ myWallet.addEventListener("unlocked", () => {
 
 ## v0.10.1
 
-### Notable Changes
-
-Fixed restore of Ledger wallet from IndexedDB.
-
-Updated dependencies.
+- Fixed restore of Ledger wallet from IndexedDB.
+- Updated dependencies.
 
 ## v0.10.0
 
-### Notable Changes
-
-#### Ledger libraries now required dependency
+### Ledger libraries now required dependency
 
 Reliable access to Ledger hardware wallets is becoming more of a critical issue
 for nano holders, so the Ledger tools are now baked into `libnemo` instead of
@@ -180,32 +157,22 @@ hovering around as optional dependencies. The `Ledger` class itself is also now
 exported for consumer usage, although the majority of functions can and should
 be executed via a `Wallet`.
 
-### Other Changes
+### Other changes in v.0.10.0
 
-Remove self-references from various classes so `esbuild` does not need to rename
-them when bundling.
-
-Pinned `esbuild` targets to specific ES versions.
-
-Copy all emitted `types` instead of consolidating into one massive file.
-
-Fix `buffer` polyfill injection.
-
-Add and fix JSDoc documentation.
-
-Remove `Vault` static instance tracker.
-
-Fixed calls to `Account` map methods.
-
-`Tools` is its own class instead of a collection of functions.
-
-Updated tests.
+- Remove self-references from various classes so `esbuild` does not need to
+  rename them when bundling.
+- Pinned `esbuild` targets to specific ES versions.
+- Copy all emitted `types` instead of consolidating into one massive file.
+- Fix `buffer` polyfill injection.
+- Add and fix JSDoc documentation.
+- Remove `Vault` static instance tracker.
+- Fixed calls to `Account` map methods.
+- `Tools` is its own class instead of a collection of functions.
+- Updated tests.
 
 ## v0.9.0
 
-### Notable Changes
-
-#### Ledger connection configuration
+### Ledger connection configuration
 
 Ledger hardware wallets can connect over HID or USB transport protocols; the
 former is generally recommended by the company themselves, especially now
@@ -217,30 +184,23 @@ explicitly. For example:
 
 ```javascript
 const myLedger = await Wallet.create("Ledger");
-await myLedger.config({ connection: "ble" }); // other options are 'hid' or 'usb'
+await myLedger.config({ connection: "ble" }); // other options: 'hid', 'usb'
 ```
 
-### Other Changes
-
-Build process file hierarchy reorganized.
-
-Fixed test of verify method for Ledger wallets.
+### Other changes in v0.9.0
 
-Fixed missing constants when building unminified bundle.
-
-Fixed test not cleaning up wallet workers properly.
+- Build process file hierarchy reorganized.
+- Fixed test of verify method for Ledger wallets.
+- Fixed missing constants when building unminified bundle.
+- Fixed test not cleaning up wallet workers properly.
 
 ## v0.8.1
 
-### Notable Changes
-
-Fix restored wallets with undefined type.
+- Fix restored wallets with undefined type.
 
 ## v0.8.0
 
-### Notable Changes
-
-#### Configure wallet timeout
+### Configure wallet timeout
 
 Previously, the default timeout period before a wallet autolocked itself was set
 to two minutes. Now, a new method `wallet.config()` accepts a configuration
@@ -248,30 +208,25 @@ object consisting of currently one property `timeout` indicating the timeout
 period in seconds between 10 and 600 (10 minutes). If left unconfigured, the
 default is still two minutes.
 
-#### Check for lock status
+### Check for lock status
 
 A new property `wallet.isLocked` indicates if the wallet's Vault is in a locked
 state.
 
-### Other Changes
+### Other changes in v0.8.0
 
-Vault timer includes a simple interval ticker to keep the worker from sleeping.
-
-Developer build now includes sourcemaps for easier debugging.
-
-Some new tests have been added and some existing ones fixed.
+- Vault timer includes a simple interval ticker to keep the worker from
+  sleeping.
+- Developer build now includes sourcemaps for easier debugging.
+- Some new tests have been added and some existing ones fixed.
 
 ## v0.7.1
 
-### Notable Changes
-
-Fix restored wallets with undefined type.
+- Fix restored wallets with undefined type.
 
 ## v0.7.0
 
-### Notable Changes
-
-#### Wallet accounts use Map
+### Wallet accounts use Map
 
 Since `libnemo` allows any arbitrary account index within the valid index range
 to be derived from a wallet, iterating arrays can be catastrophically slow. A
@@ -279,26 +234,20 @@ custom class with a custom iterator implementation was used previously, but to
 take advantage of engine performance optimizations geared towards built-ins, it
 now uses the Map class instead.
 
-### Other Changes
+### Other changes in v0.7.0
 
-Accounts implement toJSON() method to stringify all relevant properties.
-
-Tests are type checked, and the custom assert implementation in tests uses type
-guards to inform subsequent code.
-
-README and package description updated.
+- Accounts implement toJSON() method to stringify all relevant properties.
+- Tests are type checked, and the custom assert implementation in tests uses
+  type guards to inform subsequent code.
+- README and package description updated.
 
 ## v0.6.1
 
-### Notable Changes
-
-Fix restored wallets with undefined type.
+- Fix restored wallets with undefined type.
 
 ## v0.6.0
 
-### Notable Changes
-
-#### Minification support
+### Minification support
 
 Due to how the `Vault` worker was constructed, the build system could not take
 advantage of all minification features without breaking how variable names and
@@ -309,34 +258,24 @@ frameworks like Angular to bundle `libnemo` without further breakage.
 
 ## v0.5.4
 
-### Notable Changes
-
-Fix restored wallets with undefined type.
+- Fix restored wallets with undefined type.
 
 ## v0.5.3
 
-### Notable Changes
-
-Fix type comparison to undefined when restoring Wallets from database.
+- Fix type comparison to undefined when restoring Wallets from database.
 
 ## v0.5.2
 
-### Notable Changes
-
-Remove async-await from new Vault functionality in favor of Promise chaining
-(see [v0.4.0](#v040) for details).
+- Remove async-await from new Vault functionality in favor of Promise chaining
+  (see [v0.4.0](#v040) for details).
 
 ## v0.5.1
 
-### Notable Changes
-
-Fix type definitions for unit denomination `convert()` function overloads.
+- Fix type definitions for unit denomination `convert()` function overloads.
 
 ## v0.5.0
 
-### Notable Changes
-
-#### Sign arbitrary data with Wallet
+### Sign arbitrary data with Wallet
 
 The ability to "log in with Nano" is gaining traction, and while the `sign()`
 function from `Tools` allows signing arbitrary string data using a private key,
@@ -349,49 +288,38 @@ future update could enable signing full-length messages without hashing them.
 Also note that the Nano app for Ledger wallets still have a bug which prevents
 them from signing nonces.
 
-#### Implement missing password update method
+### Implement missing password update method
 
 The `Vault` class for wallet secrets supports an `update` action to re-encrypt
 them using a new password if the wallet is unlocked. However, the `Wallet` class
 itself did not have a method to make this request to its vault. This has now
 been implemented.
 
-### Other Changes
-
-The `convert()` tool now supports denomination output as a float in addition to
-string and bigint.
-
-Some functions extracted to separate files to improve organization.
+### Other changes in v0.5.0
 
-Type definitions updated.
-
-Tests added or updated to accomodate new features.
+- The `convert()` tool now supports denomination output as a float in addition
+  to string and bigint.
+- Some functions extracted to separate files to improve organization.
+- Type definitions updated.
+- Tests added or updated to accomodate new features.
 
 ## v0.4.3
 
-### Notable Changes
-
-Fix restored wallets with undefined type.
+- Fix restored wallets with undefined type.
 
 ## v0.4.2
 
-### Notable Changes
-
-Fix type comparison to undefined when restoring Wallets from database.
+- Fix type comparison to undefined when restoring Wallets from database.
 
 ## v0.4.1
 
-### Notable Changes
-
-Redefine Vault worker class members as instance properties instead of static
-properties and initialize the worker with `new` instead of an `init()` method
-which allows it to privatize its properties again.
+- Redefine Vault worker class members as instance properties instead of static
+  properties and initialize the worker with `new` instead of an `init()` method
+  which allows it to privatize its properties again.
 
 ## v0.4.0
 
-### Notable Changes
-
-#### Vault abandons async-await
+### Vault abandons async-await
 
 Bundlers try to optimize code based on features supported by the target browser
 environment as well as work around shortcomings or bugs. Sometimes this results
@@ -404,44 +332,34 @@ private members that were being hoisted outside the class scope (and thus being
 lost when loading the worker) are now initialized in a static method so that
 they keep their place in the class as designed.
 
-#### BLAKE2b outputs bytes only
+### BLAKE2b outputs bytes only
 
 This change is intended purely to simplify the structure of the BLAKE2b hashing
 implementation. The `digest()` method no longer accepts any parameters and will
 always output bytes; hex string is no longer an output option, and the bytes
 should be converted if necessary.
 
-### Other Changes
+### Other changes in v0.4.0
 
-Fixed some erroneous JSdoc comment documentation.
+Fixed some erroneous JSdoc comment documentation.
 
 ## v0.3.3
 
-### Notable Changes
-
-Fix restored wallets with undefined type.
+- Fix restored wallets with undefined type.
 
 ## v0.3.2
 
-### Notable Changes
-
-Fix type comparison to undefined when restoring Wallets from database.
+- Fix type comparison to undefined when restoring Wallets from database.
 
 ## v0.3.1
 
-### Notable Changes
-
-Include IIFE build in distribution.
-
-Remove an unused CryptoKey usage type.
-
-Adjust how Vault is stringified and loaded into web worker.
+- Include IIFE build in distribution.
+- Remove an unused CryptoKey usage type.
+- Adjust how Vault is stringified and loaded into web worker.
 
 ## v0.3.0
 
-### Notable Changes
-
-#### Reorganization
+### Reorganization
 
 It is easy to get lost when scrolling through code in monolithic long files, and
 it is also equally easy to get lost in too many layers of project file
@@ -449,12 +367,12 @@ hierarchy. This update aims to find a balance between the two and has separated
 key behavior into smaller modules while resisting a deeply-nested directory
 structure. Basically, this update moved files around.
 
-#### `import` methods are now `load` methods
+### `import` methods are now `load` methods
 
 To avoid confusion with the `import` JavaScript keyword, `import()` methods like
 `Wallet.import()` and `Account.import()` have been renamed to `load()`.
 
-#### Expanded account info
+### Expanded account info
 
 The `wallet.refresh()` method now uses batch endpoints to fetch basic account
 data like balance, frontier, and representative. The `account.refresh()` method
@@ -464,7 +382,7 @@ viewing multiple accounts and basic data should be presented to the end user,
 and the account method should be called when viewing an individual account or
 creating and processing transactions.
 
-#### Ledger aligned with other wallet types
+### Ledger aligned with other wallet types
 
 The various functions of the Ledger wallet have been abstracted away under the
 hood of the overarching `Wallet` class. Account derivation, secret verification,
@@ -473,15 +391,11 @@ wallet is `libnemo` as its 'BIP-44' and 'BLAKE2b' counterparts.
 
 ## v0.2.1
 
-### Notable Changes
-
-Fixes issue with wallet Safe blocking `update` requests.
+- Fixes issue with wallet Safe blocking `update` requests.
 
 ## v0.2.0
 
-### Notable Changes
-
-#### Wallet merge
+### Wallet merge
 
 Wallets have been merged into a single class for simplicity's sake. Now, the
 `create()` and `import()` static methods have a `type` parameter to indicate the
@@ -490,7 +404,7 @@ Ledger wallets are still supported and extend the base Wallet class for its
 additional implementation details, but the API is largely shared between the
 two.
 
-#### Wallet security
+### Wallet security
 
 Security has been improved by removing wallet secrets from the main thread
 entirely. All sensitive actions - seed generation, account derivation, signing -
@@ -501,22 +415,20 @@ self-destructs and can only be accessed by the wallet itself and its isolated
 worker environment. The wallet is unlocked with a password as usual and will now
 automatically relock after 5 minutes.
 
-#### Account handling
+### Account handling
 
 Accounts can still be imported via private keys, but only the public keys are
 retained. Signing should happen using a Wallet or by passing a key directly to a
 block.
 
-### Other Changes
+### Other changes in v0.2.0
 
-Pretty much every other component has been refactored or improved to accomodate the new
-wallet system.
+- Pretty much every other component has been refactored or improved to
+  accomodate the new wallet system.
 
 ## v0.1.0
 
-### Notable Changes
-
-#### Secure by default
+### 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
@@ -528,7 +440,7 @@ 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
+### 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
@@ -536,19 +448,19 @@ and frees up `libnemo` to focus on wallet, account, and block interactions. More
 information on `nano-pow` can be found at its
 [npm package page](https://npmjs.com/nano-pow).
 
-#### Persistent rolodex
+### 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
+### 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
+### 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
@@ -556,6 +468,6 @@ 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
+### Testing, testing
 
 Even more tests have been implemented to rigorously check functionality.