chore: release v1.7.119-alpha

This commit is contained in:
archipelago 2026-07-31 13:13:53 -04:00
parent af1af8266c
commit baaa4e8ea1
5 changed files with 46 additions and 44 deletions

View File

@ -1,6 +1,6 @@
[package] [package]
name = "archipelago" name = "archipelago"
version = "1.7.118-alpha" version = "1.7.119-alpha"
edition = "2021" edition = "2021"
description = "Archipelago Bitcoin Node OS - Native backend" description = "Archipelago Bitcoin Node OS - Native backend"
authors = ["Archipelago Team"] authors = ["Archipelago Team"]

View File

@ -1,12 +1,12 @@
{ {
"name": "neode-ui", "name": "neode-ui",
"version": "1.7.118-alpha", "version": "1.7.119-alpha",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "neode-ui", "name": "neode-ui",
"version": "1.7.118-alpha", "version": "1.7.119-alpha",
"dependencies": { "dependencies": {
"@scure/bip39": "^2.2.0", "@scure/bip39": "^2.2.0",
"@types/dompurify": "^3.0.5", "@types/dompurify": "^3.0.5",

View File

@ -1,7 +1,7 @@
{ {
"name": "neode-ui", "name": "neode-ui",
"private": true, "private": true,
"version": "1.7.118-alpha", "version": "1.7.119-alpha",
"type": "module", "type": "module",
"scripts": { "scripts": {
"start": "./start-dev.sh", "start": "./start-dev.sh",

View File

@ -1,30 +1,31 @@
{ {
"version": "1.7.119-alpha",
"release_date": "2026-07-31",
"changelog": [ "changelog": [
"Fixes mesh radios dropping off on nodes that took the v1.7.117 update. Updates only ever replaced the main program, never the packaged radio helpers — so updated nodes were left running an older radio daemon that didn't understand a new option and quietly gave up, showing \"device not connected\" with a Connect button that did nothing. The node now checks what its radio daemon supports before using new options, and updates finally carry the radio helpers themselves, so every node gets current radio support with the update instead of only from a fresh install.", "Wallet payments now work on nodes whose channels are private/unannounced. Every invoice-creation call site \u2014 the wallet's own Receive flow, and the seller-side paid-content/peer-files flow \u2014 only ever sent LND the amount and memo, so LND defaulted private to false and returned invoices with no route hints. Any node whose only usable channel is private or unannounced (the common shape for a channel someone opened to you) was silently unpayable through the wallet, and unpayable through paid file/content sales too. Both call sites now set LND's private flag correctly; this was broken in the field and is the main reason for this release.",
"The in-app \"Flash LoRa\" flow works on updated nodes. The RNode flashing tool was only ever included on freshly installed nodes; everywhere else flashing failed with a cryptic \"No such file or directory\". The tool now ships with updates and is included on new install images, and if it's somehow still missing the error says exactly what to do instead.", "Tor and the mesh's Tor fallback are reliable again. The node's background \"doctor\" health-checker was fighting Tor over the permission bits on its own hidden-service directory: it compared the directory's mode against the literal string \"700\", but Tor's own setgid hidden-service mode is 2700 \u2014 a value the doctor's check never recognized as correct. Every ~5 minutes it \"corrected\" the mode back to 700 and restarted Tor to apply it, and Tor immediately reasserted 2700 \u2014 a permanent restart loop that meant Tor could never hold onto its consensus/HSDir cache long enough to be useful, breaking the mesh's Tor fallback path entirely. The check now compares only the owner/group/other bits that actually matter (both 700 and 2700 pass; genuinely wrong modes like 750 or 2755 are still corrected and restart Tor), plus a 30-minute restart backoff so no future condition can reproduce the storm.",
"Message notification badges finally remember what you've read. Unread counts were only kept in memory, so every visit re-counted old messages as new — including a phantom badge for chats with nothing new in them. Read-state is now saved on the device, opening a chat marks all its linked conversations read, and history no longer re-badges after a reload.", "Wallet balances and your node's own FIPS identity key (npub) are no longer written to the browser's sessionStorage \u2014 caught by an audit of the page-caching work below. Every cache call site in the app now makes an explicit, reviewed decision about whether its data is allowed to persist across a reload, and a one-time migration purges any legacy, unaudited snapshot left behind by an older build.",
"Every mesh message now has a visible \"⋯\" button that opens the route view: watch the path your message took animate — sender and receiver appear, a pulse travels the link, and each relay hop lights up in order — with signal quality for radio links and delivery status. (Tapping the transport pill still works too.)" "Server, Home, Mesh, Chat/AI chat, and the secondary screens (app details, marketplace, cloud, federation, monitoring, router/OpenWrt) now load instantly from cache when you revisit them and refresh quietly in the background, instead of blanking and re-fetching everything on every tab switch \u2014 this closes out the page-performance work started back in v1.7.116/117.",
"App updates (including this one) now apply automatically in the background instead of waiting on a tap-to-update prompt, matching how kiosk/TV installs already behaved \u2014 the reload still waits for any in-progress splash/dashboard animation to finish first, so it won't land mid-motion. This was a direct, explicit decision made with the mid-payment-reload risk spelled out in advance; reverting to a confirmation prompt for beta is a one-line change if wanted later.",
"### Known gap \u2014 production lifecycle gate not run for this release",
"tests/lifecycle/run-gate.sh \u2014 the 5x install/UI/stop/start/restart/reinstall/reboot-survive/archipelago-restart-survive/uninstall gate that CLAUDE.md defines as this project's condition for a release tag \u2014 was NOT run for v1.7.119-alpha. Its target node (.228) was unreachable at release time, and running it here would have required rebooting the build machine, killing live dev servers and another active work session on the same box. This was a deliberate call to ship the two field-breaking fixes above rather than block on an unreachable node. Run the full 5x lifecycle gate on .228 as soon as it's reachable again, and treat this release as pending that verification until it's done."
], ],
"components": [ "components": [
{ {
"current_version": "1.7.118-alpha",
"download_url": "http://146.59.87.168:3000/lfg2025/archy/releases/download/v1.7.118-alpha/archipelago",
"name": "archipelago", "name": "archipelago",
"new_version": "1.7.118-alpha", "current_version": "1.7.119-alpha",
"sha256": "c1a68f72ae832ba2e8668aae4582d4beaf561463a49d19a87881d46a2fb724d0", "new_version": "1.7.119-alpha",
"size_bytes": 53336720 "download_url": "http://146.59.87.168:3000/lfg2025/archy/releases/download/v1.7.119-alpha/archipelago",
"sha256": "1732f0979750df465105252ad95c7bf00f3d5a69a409cf5f704ce81c3c1f4c84",
"size_bytes": 53640320
}, },
{ {
"current_version": "1.7.118-alpha", "name": "archipelago-frontend-1.7.119-alpha.tar.gz",
"download_url": "http://146.59.87.168:3000/lfg2025/archy/releases/download/v1.7.118-alpha/archipelago-frontend-1.7.118-alpha.tar.gz", "current_version": "1.7.119-alpha",
"name": "archipelago-frontend-1.7.118-alpha.tar.gz", "new_version": "1.7.119-alpha",
"new_version": "1.7.118-alpha", "download_url": "http://146.59.87.168:3000/lfg2025/archy/releases/download/v1.7.119-alpha/archipelago-frontend-1.7.119-alpha.tar.gz",
"sha256": "12bb73af26ebd6bdd314e1c8502c414605cde883b9e91a3792cb235b8faf4f25", "sha256": "c08d9779c2584711e34845174d15cd5b2797d6f0b1750fdf780a7f7af5f59626",
"size_bytes": 210502532 "size_bytes": 210507153
} }
], ]
"release_date": "2026-07-29",
"signature": "ed18686682ff56613dc7c75ab137b53729d24dfcf7d7298cb4c5f06005c4b57c298b822c8692483aa847496bf09ecdd476f34f30c684cc5b76192ff357ee9609",
"signed_by": "did:key:z6MkkidEnEpo6qHMCNSZoNKWtvQvxq3whnaME9wGgEFhq7ur",
"version": "1.7.118-alpha"
} }

View File

@ -1,30 +1,31 @@
{ {
"version": "1.7.119-alpha",
"release_date": "2026-07-31",
"changelog": [ "changelog": [
"Fixes mesh radios dropping off on nodes that took the v1.7.117 update. Updates only ever replaced the main program, never the packaged radio helpers — so updated nodes were left running an older radio daemon that didn't understand a new option and quietly gave up, showing \"device not connected\" with a Connect button that did nothing. The node now checks what its radio daemon supports before using new options, and updates finally carry the radio helpers themselves, so every node gets current radio support with the update instead of only from a fresh install.", "Wallet payments now work on nodes whose channels are private/unannounced. Every invoice-creation call site \u2014 the wallet's own Receive flow, and the seller-side paid-content/peer-files flow \u2014 only ever sent LND the amount and memo, so LND defaulted private to false and returned invoices with no route hints. Any node whose only usable channel is private or unannounced (the common shape for a channel someone opened to you) was silently unpayable through the wallet, and unpayable through paid file/content sales too. Both call sites now set LND's private flag correctly; this was broken in the field and is the main reason for this release.",
"The in-app \"Flash LoRa\" flow works on updated nodes. The RNode flashing tool was only ever included on freshly installed nodes; everywhere else flashing failed with a cryptic \"No such file or directory\". The tool now ships with updates and is included on new install images, and if it's somehow still missing the error says exactly what to do instead.", "Tor and the mesh's Tor fallback are reliable again. The node's background \"doctor\" health-checker was fighting Tor over the permission bits on its own hidden-service directory: it compared the directory's mode against the literal string \"700\", but Tor's own setgid hidden-service mode is 2700 \u2014 a value the doctor's check never recognized as correct. Every ~5 minutes it \"corrected\" the mode back to 700 and restarted Tor to apply it, and Tor immediately reasserted 2700 \u2014 a permanent restart loop that meant Tor could never hold onto its consensus/HSDir cache long enough to be useful, breaking the mesh's Tor fallback path entirely. The check now compares only the owner/group/other bits that actually matter (both 700 and 2700 pass; genuinely wrong modes like 750 or 2755 are still corrected and restart Tor), plus a 30-minute restart backoff so no future condition can reproduce the storm.",
"Message notification badges finally remember what you've read. Unread counts were only kept in memory, so every visit re-counted old messages as new — including a phantom badge for chats with nothing new in them. Read-state is now saved on the device, opening a chat marks all its linked conversations read, and history no longer re-badges after a reload.", "Wallet balances and your node's own FIPS identity key (npub) are no longer written to the browser's sessionStorage \u2014 caught by an audit of the page-caching work below. Every cache call site in the app now makes an explicit, reviewed decision about whether its data is allowed to persist across a reload, and a one-time migration purges any legacy, unaudited snapshot left behind by an older build.",
"Every mesh message now has a visible \"⋯\" button that opens the route view: watch the path your message took animate — sender and receiver appear, a pulse travels the link, and each relay hop lights up in order — with signal quality for radio links and delivery status. (Tapping the transport pill still works too.)" "Server, Home, Mesh, Chat/AI chat, and the secondary screens (app details, marketplace, cloud, federation, monitoring, router/OpenWrt) now load instantly from cache when you revisit them and refresh quietly in the background, instead of blanking and re-fetching everything on every tab switch \u2014 this closes out the page-performance work started back in v1.7.116/117.",
"App updates (including this one) now apply automatically in the background instead of waiting on a tap-to-update prompt, matching how kiosk/TV installs already behaved \u2014 the reload still waits for any in-progress splash/dashboard animation to finish first, so it won't land mid-motion. This was a direct, explicit decision made with the mid-payment-reload risk spelled out in advance; reverting to a confirmation prompt for beta is a one-line change if wanted later.",
"### Known gap \u2014 production lifecycle gate not run for this release",
"tests/lifecycle/run-gate.sh \u2014 the 5x install/UI/stop/start/restart/reinstall/reboot-survive/archipelago-restart-survive/uninstall gate that CLAUDE.md defines as this project's condition for a release tag \u2014 was NOT run for v1.7.119-alpha. Its target node (.228) was unreachable at release time, and running it here would have required rebooting the build machine, killing live dev servers and another active work session on the same box. This was a deliberate call to ship the two field-breaking fixes above rather than block on an unreachable node. Run the full 5x lifecycle gate on .228 as soon as it's reachable again, and treat this release as pending that verification until it's done."
], ],
"components": [ "components": [
{ {
"current_version": "1.7.118-alpha",
"download_url": "http://146.59.87.168:3000/lfg2025/archy/releases/download/v1.7.118-alpha/archipelago",
"name": "archipelago", "name": "archipelago",
"new_version": "1.7.118-alpha", "current_version": "1.7.119-alpha",
"sha256": "c1a68f72ae832ba2e8668aae4582d4beaf561463a49d19a87881d46a2fb724d0", "new_version": "1.7.119-alpha",
"size_bytes": 53336720 "download_url": "http://146.59.87.168:3000/lfg2025/archy/releases/download/v1.7.119-alpha/archipelago",
"sha256": "1732f0979750df465105252ad95c7bf00f3d5a69a409cf5f704ce81c3c1f4c84",
"size_bytes": 53640320
}, },
{ {
"current_version": "1.7.118-alpha", "name": "archipelago-frontend-1.7.119-alpha.tar.gz",
"download_url": "http://146.59.87.168:3000/lfg2025/archy/releases/download/v1.7.118-alpha/archipelago-frontend-1.7.118-alpha.tar.gz", "current_version": "1.7.119-alpha",
"name": "archipelago-frontend-1.7.118-alpha.tar.gz", "new_version": "1.7.119-alpha",
"new_version": "1.7.118-alpha", "download_url": "http://146.59.87.168:3000/lfg2025/archy/releases/download/v1.7.119-alpha/archipelago-frontend-1.7.119-alpha.tar.gz",
"sha256": "12bb73af26ebd6bdd314e1c8502c414605cde883b9e91a3792cb235b8faf4f25", "sha256": "c08d9779c2584711e34845174d15cd5b2797d6f0b1750fdf780a7f7af5f59626",
"size_bytes": 210502532 "size_bytes": 210507153
} }
], ]
"release_date": "2026-07-29",
"signature": "ed18686682ff56613dc7c75ab137b53729d24dfcf7d7298cb4c5f06005c4b57c298b822c8692483aa847496bf09ecdd476f34f30c684cc5b76192ff357ee9609",
"signed_by": "did:key:z6MkkidEnEpo6qHMCNSZoNKWtvQvxq3whnaME9wGgEFhq7ur",
"version": "1.7.118-alpha"
} }