diff --git a/CHANGELOG.md b/CHANGELOG.md index aa544b46a734..260b1d07c4e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,52 +10,44 @@ This release is named by TBD. ### Added + - Protocol: we now pad all peer messages to make them the same length (excluding LND < v21 and current Eclair). ([#8893]) - JSON-RPC: `bkpr-report` allows flexible summaries of bookkeeper income. ([#8937]) - - Config: `bkpr-currency` option to record conversion rate at each event. ([#8937]) - - JSON-RPC: `currencyrate` API for getting the current median BTC conversion to a given fiat currency. ([#8937]) - - JSON-RPC: `listcurrencyrates` API for examining the current values from the `currencyconvert` plugin's sources. ([#8937]) - - New command `spliceout` for easily splicing out of channels ([#8857]) - - New command `splicein` allows for convenient splicing funds into a channel ([#8856]) - - Added support for multi (ie 3+) channel splices, dynamic wallet funding, and dynamic fee calculating. ([#8450]) - - new plugin currencyrate to provide `currencyconvert` API ([#8842]) - - `listpeerchannels` now accepts a `channel_id` filter, ([#8766]) + - Config: `bkpr-currency` option to record conversion rate at each bookkeeper event. ([#8937]) + - JSON-RPC: `currencyconvert` and `currencyrate` via the new plugin `cln-currencyrate` ([#8842], [#8937]) + - JSON-RPC: `spliceout` and `splicein` for easily splicing in and out of channels ([#8857], [#8856]) - JSON-RPC: `offer` now has a `fronting_nodes` option to specify neighbors for payer to use to fetch invoices and make payments. ([#8490]) - Config: `payment-fronting-node` option to specify neighbor node(s) to use for all bolt11 invoices, bolt12 offers, invoices and invoice_requests. ([#8490]) - - libplugin: support for options which accumulate if specified more than once ("multi": true). ([#8490]) + - JSON-RPC: `getroutes` now operates in parallel: config `askrene-max-threads` controls how many (default 4). ([#8723]) + - JSON-RPC: `getroutes` has a new layer `auto.include_fees` that makes fees be deducted from the payment amount making in effect the receiver pay for routing fees. ([#8824]) + - JSON-RPC `clnrest-register-path` method to register dynamic paths for `clnrest` plugin ([#7529]) + - JSON-RPC: `offer` and `listoffer` exposes the offer description field. ([#8782]) + - JSON-RPC: `listcurrencyrates` API for examining the current values from the `currencyconvert` plugin's sources. ([#8937]) + - JSON-RPC: `xpay` supports a `payer-note` field ([#8784]) + - Docker: Added a new `version-vls` tag which includes VLS's `remote_hsmd_socket` binary with the Core Lightning image. ([#8712]) + - JSON-RPC: `feerate` now supports `splice` as a rate name, and splice code uses it intelligently. ([#8450]) + - JSON-RPC: `listpeerchannels` now accepts a `channel_id` filter, ([#8766]) - Database: STRICT tables and security pragmas in developer mode ([#8559]) - - Config: `askrene-max-threads` to control how many CPUs we use for routing (default 4). ([#8723]) - - Protocol: we now pad all peer messages to make them the same length. ([#8893]) - - `gossipd` now uses a `lightning_gossip_compactd` helper to compact the gossip_store on demand, keeping it under about 210MB. ([#8903]) - - askrene: add a new layer auto.include_fees that makes fees be deducted from the payment amount making in effect the receiver pay for routing fees. ([#8824]) - - clnrest: add clnrest-register-path rpc method to register dynamic paths ([#7529]) - - Expose decoded offer description in `offer` and `listoffers` RPC responses. ([#8782]) - - Add 'payer-note' field to the 'xpay' RPC call. ([#8784]) - - Added a new `version-vls` tag which includes VLS's `remote_hsmd_socket` binary with the Core Lightning image. ([#8712]) + - libplugin: support for options which accumulate if specified more than once ("multi": true). ([#8490]) ### Changed - - cln-rpc and cln-grpc now expose notification bindings for balance_snapshot, coin_movement, deprecated_oneshot, disconnect, forward_event, invoice_creation, invoice_payment, log, onionmessage_forward_fail, openchannel_peer_sigs, plugin_started, plugin_stopped, sendpay_failure, sendpay_success, shutdown, and warning. ([#8938]) - - cln-rpc and cln-grpc now expose xpay notification bindings for `pay_part_start` and `pay_part_end`. ([#8938]) + - Protocol: Splicing is enabled by default + - `gossipd` no longer compacts gossip_store on startup (improving start times significantly). ([#8903]) + - cln-rpc and cln-grpc now expose notification bindings for balance_snapshot, coin_movement, deprecated_oneshot, disconnect, forward_event, invoice_creation, invoice_payment, log, onionmessage_forward_fail, openchannel_peer_sigs, plugin_started, plugin_stopped, sendpay_failure, sendpay_success, shutdown, warning, and xpay's `pay_part_start` and `pay_part_end`. ([#8938]) - lightningd: we don't allow new incoming channels if we cannot estimate fees (rather than assuming minfee). ([#8864]) - Plugins: `sql` plugin tables "htlcs", "forwards", "invoices", "sendpays" and "networkevents" are now updated more efficiently. ([#8914]) - - uniform message padding is now opt-in via the --dev-uniform-padding flag. ([#8997]) - - forward_event notification now has preimage set if status is settled. ([#8943]) - - Plugins: `askrene` now runs routing in parallel. ([#8723]) - - bcli plugin now uses synchronous execution, simplifying bitcoin backend communication and improving error handling reliability. ([#8820]) - - `gossipd` no longer compacts gossip_store on startup (improving start times significantly). ([#8903]) + - Plugins: `forward_event` notification now has preimage set if status is settled. ([#8943]) + - Plugins: `bcli` now uses synchronous execution, simplifying bitcoin backend communication and improving error handling reliability. ([#8820]) - Build: most binaries are now about 20% smaller. ([#8658]) - lightningd: logging is now more efficient internally (no more pruning, simple ringbuffer). ([#8770]) - - JSON-RPC: `recover` takes a 12-word mnemonic for nodes created by v25.12 or later. ([#8830]) - - `lightning-hsmtool`: `getsecret` replaces `getcodexsecret` for modern nodes (gives mnemonic). ([#8830]) ### Deprecated Note: You should always set `allow-deprecated-apis=false` to test for changes. - - `lightning-hsmtool`: `getcodexsecret`. Use `getsecret`. ([#8830]) - + - Config: `experimental-splicing`. Enabled by default. ([#9021]) ### Removed @@ -68,10 +60,13 @@ Note: You should always set `allow-deprecated-apis=false` to test for changes. ### Fixed + - gossipd: now uses `lightning_gossip_compactd` helper to compact the gossip_store file on demand, keeping it under about 210MB. ([#8903]) - connectd: throttle incoming peers to give fairer peer handling under stress. ([#8983]) - lightningd no longer crashes when replaying stored blinded HTLCs during startup. ([#8974]) + - JSON-RPC: `decode` is now more informative with malformed strings (won't claim everything is a malformed rune!). ([#8814]) + - Build: Core lightning builds for Fedora on all systems are deterministic. ([#8846]) - lightningd: unreserve UTXOs from withheld funding PSBT ([#8943]) - - withheld channel now fails back incoming inflight HTLC ([#8943]) + - lightningd: withheld channel now fails back incoming inflight HTLC ([#8943]) - JSON-RPC: reckless command no longer hangs if reckless executable is not found in PATH. ([#8894]) - lightning-cli: fix invalid json requests when input includes a numeric string with leading zeroes ([#8934]) - xpay: handle payment redirected from "pay" even if we don't recognize some arguments. ([#8939]) @@ -80,28 +75,16 @@ Note: You should always set `allow-deprecated-apis=false` to test for changes. - fuzz: fix build with newer clang. ([#8717]) - Plugins: `bkpr_listbalances` no longer crashes if we lost our db, then do emergencyrecover and close a channel. ([#8890]) - lightningd: possible crash when peers disconnected if there was more than one plugin servicing the `peer_connected` hook. ([#8889]) - - JSON-RPC: `decode` is now more informative with malformed strings (won't claim everything is a malformed rune!). ([#8814]) - reckless search now returns partial matches instead of requiring exact plugin names. ([#8762]) - - enableoffer: Adding an error when trying to activate an used single use offer (don't crash!) ([#8813]) - - askrene: fixed a class of corner cases that cause askrene main loop to timeout instead of quickly failing, thus wasting runtime. ([#8866]) + - JSON-RPC: `enableoffer` returns an error when trying to activate an used single use offer (don't crash!) ([#8813]) + - JSON_RPC: `getroutes` fixed a class of corner cases that cause askrene main loop to timeout instead of quickly failing, thus wasting runtime. ([#8866]) - Testing infrastructure no longer fails when logging output capture is disabled. ([#8843]) - - Core lightning builds for Fedora on all systems are deterministic. ([#8846]) - - lightningd: we now correctly sign for non-taproot addresses given by nodes created by v25.12 or newer. ([#8831]) - - `lightning-hsmtool`: handle mnemonic hsm_secret files (nodes created >= v25.12). ([#8831]) - - plugins: `pay` can crash on errors returned from deep inside routehints. ([#8829]) - - plugins: `askrene` can crash on a corner case in increase_flows. ([#8829]) - - askrene: fix a plugin crash triggered during single path payments when a channel fees doesn't fit u32. ([#8832]) - - JSON-RPC: malformed filters no longer crash lightningd. ([#8780]) - - pay: `maxdelay` parameter now enforced for direct channel payments ([#8740]) - Ensure documentation renders correctly when adding/updating new RPCs by detecting non-MDX-compatible pages. ([#8792]) - - gossipd: we would occasionally not show a node announcement in listnodes(). ([#8769]) - - Replacing sed by $(SED) in Makefile ([#8786]) - - lightningd: potential crash on startup if bitcoind isn't up-to-date. ([#8779]) ### EXPERIMENTAL - - fixed crash with dual funding if we cannot estimate fees. ([#8864]) + - Dual-funding: fixed crash with dual funding if we cannot estimate fees. ([#8864]) - Protocol: avoid an occasional hang when splicing with a pending closing HTLC. ([#8911]) @@ -113,27 +96,18 @@ Note: You should always set `allow-deprecated-apis=false` to test for changes. [#8712]: https://github.com/ElementsProject/lightning/pull/8712 [#8717]: https://github.com/ElementsProject/lightning/pull/8717 [#8723]: https://github.com/ElementsProject/lightning/pull/8723 -[#8740]: https://github.com/ElementsProject/lightning/pull/8740 [#8762]: https://github.com/ElementsProject/lightning/pull/8762 [#8766]: https://github.com/ElementsProject/lightning/pull/8766 -[#8769]: https://github.com/ElementsProject/lightning/pull/8769 [#8770]: https://github.com/ElementsProject/lightning/pull/8770 [#8772]: https://github.com/ElementsProject/lightning/pull/8772 -[#8779]: https://github.com/ElementsProject/lightning/pull/8779 -[#8780]: https://github.com/ElementsProject/lightning/pull/8780 [#8782]: https://github.com/ElementsProject/lightning/pull/8782 [#8784]: https://github.com/ElementsProject/lightning/pull/8784 -[#8786]: https://github.com/ElementsProject/lightning/pull/8786 [#8792]: https://github.com/ElementsProject/lightning/pull/8792 [#8798]: https://github.com/ElementsProject/lightning/pull/8798 [#8813]: https://github.com/ElementsProject/lightning/pull/8813 [#8814]: https://github.com/ElementsProject/lightning/pull/8814 [#8820]: https://github.com/ElementsProject/lightning/pull/8820 [#8824]: https://github.com/ElementsProject/lightning/pull/8824 -[#8829]: https://github.com/ElementsProject/lightning/pull/8829 -[#8830]: https://github.com/ElementsProject/lightning/pull/8830 -[#8831]: https://github.com/ElementsProject/lightning/pull/8831 -[#8832]: https://github.com/ElementsProject/lightning/pull/8832 [#8842]: https://github.com/ElementsProject/lightning/pull/8842 [#8843]: https://github.com/ElementsProject/lightning/pull/8843 [#8846]: https://github.com/ElementsProject/lightning/pull/8846 @@ -157,9 +131,49 @@ Note: You should always set `allow-deprecated-apis=false` to test for changes. [#8974]: https://github.com/ElementsProject/lightning/pull/8974 [#8983]: https://github.com/ElementsProject/lightning/pull/8983 [#8997]: https://github.com/ElementsProject/lightning/pull/8997 +[#9021]: https://github.com/ElementsProject/lightning/pull/9021 [v26.04rc2]: https://github.com/ElementsProject/lightning/releases/tag/v26.04rc2 +## [25.12.1] - 2026-1-14: "Boltz's Seamless Upgrade Experience II" + +This is a recommended release, particularly for those creating new nodes. + +### Changed + + - JSON-RPC: `recover` takes a 12-word mnemonic for nodes created by v25.12 or later. ([#8830]) + - `lightning-hsmtool`: `getsecret` replaces `getcodexsecret` for modern nodes (gives mnemonic). ([#8830]) + +### Deprecated + +Note: You should always set `allow-deprecated-apis=false` to test for changes. + + - `lightning-hsmtool`: `getcodexsecret`. Use `getsecret`. ([#8830]) + +### Fixed + + - lightningd: we now correctly sign for non-taproot addresses given by nodes created by v25.12 or newer. ([#8831]) + - `lightning-hsmtool`: handle mnemonic hsm_secret files (nodes created >= v25.12). ([#8831]) + - plugins: `pay` can crash on errors returned from deep inside routehints. ([#8829]) + - plugins: `askrene` can crash on a corner case in increase_flows. ([#8829]) + - askrene: fix a plugin crash triggered during single path payments when a channel fees doesn't fit u32. ([#8832]) + - JSON-RPC: malformed filters no longer crash lightningd. ([#8780]) + - pay: `maxdelay` parameter now enforced for direct channel payments ([#8740]) + - gossipd: we would occasionally not show a node announcement in listnodes(). ([#8769]) + - lightningd: potential crash on startup if bitcoind isn't up-to-date. ([#8779]) + + +[#8832]: https://github.com/ElementsProject/lightning/pull/8832 +[#8780]: https://github.com/ElementsProject/lightning/pull/8780 +[#8831]: https://github.com/ElementsProject/lightning/pull/8831 +[#8740]: https://github.com/ElementsProject/lightning/pull/8740 +[#8769]: https://github.com/ElementsProject/lightning/pull/8769 +[#8829]: https://github.com/ElementsProject/lightning/pull/8829 +[#8779]: https://github.com/ElementsProject/lightning/pull/8779 +[#8830]: https://github.com/ElementsProject/lightning/pull/8830 +[25.12.1]: https://github.com/ElementsProject/lightning/releases/tag/v25.12.1 + + ## [25.12] - 2025-12-04: "Boltz's Seamless Upgrade Experience" This release is named by @sangbida diff --git a/doc/contribute-to-core-lightning/release-checklist.md b/doc/contribute-to-core-lightning/release-checklist.md index 24456d146fde..89abf4067acf 100644 --- a/doc/contribute-to-core-lightning/release-checklist.md +++ b/doc/contribute-to-core-lightning/release-checklist.md @@ -18,11 +18,13 @@ Here's a checklist for the release process. ## Preparing for -rc1 -1. Check that `CHANGELOG.md` is well formatted, ordered in areas, covers all signficant changes, and sub-ordered approximately by user impact & coolness. +1. Make sure any `CHANGELOG.md` changes from point releases have been imported. 2. Use `devtools/changelog.py` to collect the changelog entries from pull request commit messages and merge them into the manually maintained `CHANGELOG.md`. This does API queries to GitHub, which are severely ratelimited unless you use an API token: set the `GH_TOKEN` environment variable to a Personal Access Token from https://github.com/settings/tokens -3. Create a new CHANGELOG.md heading to `vrc1`, and create a link at the bottom. Note that you should exactly copy the date and name format from a previous release, as the `build-release.sh` script relies on this. -4. Update the package versions: `uv run make update-versions NEW_VERSION=vrc1` -5. Create a PR with the above. +3. Check that `CHANGELOG.md` is well formatted, ordered in areas, covers all signficant changes, and sub-ordered approximately by user impact & coolness. +4. Manually remove any entries which were mentioned for in the previous point releases (they will be duplicates!) +5. Create a new CHANGELOG.md heading to `vrc1`, and create a link at the bottom. Note that you should exactly copy the date and name format from a previous release, as the `build-release.sh` script relies on this. +6. Update the package versions: `uv run make update-versions NEW_VERSION=vrc1` +7. Create a PR with the above. ## Releasing -rc1