site/releases-manifest.json

51 lines
2.5 KiB
JSON
Raw Normal View History

{
"schema": "silentmode-releases/2",
Ship Theseus 0.3.6 e2a30a3b (gap-fix root cause + bookmark favicons + smarter error page) Setup e2a30a3b280448f8eb6e08efd21e208022b2a37cef14a72076b3f32b7a2fc529 Portable eca7cf3347a958307b8e2ba4f6266c81f8ec691b0c98ed6e24fdd70e65723b1e Bundled fixes since 0.3.5: d3c3298 - Chrome-view gap root cause: body no longer inherits the chrome view's height, so document.body.scrollHeight now measures actual content and syncHeight can shrink chrome back after a menu close. The growing blank strip above the page is gone (was previously ratcheting to the 260px clamp on every menu open). 1b4a3c3 - Bookmarks: favicons on every row (backfilled on revisit for older entries) + Edit title actually works via an in-page modal (Electron BrowserViews disable window.prompt, which is why the previous menu item silently did nothing). 952bf5f - Tab tooltip on hover shows title + URL, the way Chrome/Firefox do it. Uses the url field already present in the per-tab payload. f591475 - Error page gets a first-class "You appear to be offline" kind that fires when navigator.onLine is false — no more false "not registered" verdicts when you're just disconnected. Plus a "did you mean" row that suggests near-match BCNR names (Levenshtein ≤ 2, same TLD) from the warm shared index — no network required, works offline. Click a suggestion to retry with the original path preserved. b9d70e4 - 750ms self-heal on chrome-view height as belt-and-suspenders for any future overlay path that bypasses closeAllMenus. Deployed: scp + sia-upload of both trees. Verified LIVE 0.3.6.
2026-09-06 02:16:42 +02:00
"updated": "2026-09-06",
"mirrors": [
"https://dl.silentmode.st/"
],
"releases": [
{
"id": "ariadne-resolver",
"product": "Ariadne Resolver (Windows)",
"version": "0.1.0",
"date": "2026-08-01",
"platform": "win-x64",
"signed": false,
"signingAuthority": null,
"files": {
Ariadne 9ab725be: default installer to -Mode nrpt (surgical) Change the Inno [Run] entry from install.ps1 -Mode full -> install.ps1 -Mode nrpt Rationale (observed today on the operator's machine): Full mode repoints adapter DNS at 127.0.0.1, so every DNS query goes through the daemon's forwarder. bnsd.js's raw-dgram forwarder has a known EDNS/AAAA bug -- strict clients using getaddrinfo (Chrome, Yandex, Firefox, Node) reject some forwarded replies with "non-recoverable error". Concretely today, github.com / duckduckgo.com / www.coinex.com all failed in Yandex while silentmode.bch loaded fine. Surgical (NRPT) mode routes only activated BCNR TLDs to the daemon (fetched from tlds.bch at install time -- currently bch, p2p, deviant, nav, sia, dgb, nt, sm, lm). Everything else stays on the adapter's DHCP DNS, sidestepping the forwarder bug entirely. Users still get the "resolves any BCNR TLD in every browser" promise for the entire on-chain activated set. Full mode remains available for anyone who explicitly opts in by running install.ps1 -Mode full themselves. Default flips back once the forwarder bug is repaired (memory: silentmode-build-state.md). - SHA-256: 9ab725bec5567625e5857a49b112c4fbc0f59dbdd623abd7110429306f5d0ddb - Deployed to dl.silentmode.st, site pages + manifest updated, Sia mirror re-uploaded. Coordinates with a parallel-session build that briefly landed cb9e8ea0 in the site references without a matching binary; resolved to my build since only its bytes exist locally.
2026-08-14 23:33:29 +02:00
"AriadneResolver-Setup-0.1.0.exe": "9ab725bec5567625e5857a49b112c4fbc0f59dbdd623abd7110429306f5d0ddb"
}
},
{
"id": "ariadne-android",
"product": "Ariadne for Android",
Ship Ariadne 0.11: Sia CDN pull + gitignore _prev/ Mobile parity with Theseus 0.0.7's multi-source model, one source at a time. Ships: * Bns.pullSiaIndex() — fetches dl.silentmode.st/bns-name-index.json (the operator's latest published interpreted BNS snapshot) on a background thread. Installs the result as the current index + persists to disk cache when we don't already have something fresher. Best-effort: silent on failure, on-device electrum still runs. * MainActivity fires the pull once per applyResolverSettings(), racing the bundled starter + on-device electrum. The bundled starter wins the very first navigation (already in memory); the Sia pull wins any subsequent cold start after an operator publish; electrum wins steady-state via the existing INDEX_TTL_MS refresh. * publish-name-mirror.mjs now uploads three shapes to Sia (raw snapshot, raw immutable, mobile-shape floating, mobile-shape immutable) AND scps the mobile-shape floating pointer to the CDN so anonymous clients can actually GET it. The s3.silentmode.st bucket rejects anon reads today; the CDN copy is the workaround, same bytes. * Cannot use Sia direct for now: s3d bucket policy blocks anon reads. Documented in Bns.SIA_INDEX_URL — swap URL when the policy changes. Version bump: 0.10 → 0.11 (versionCode 11, versionName 0.11). Also: .gitignore TheseusNavigator/_prev/ — the ~372 MB local rollback dir that kept appearing as untracked in every git status. ariadne-v0.11.apk 124 KB 03c95832c16cc4763acaadbf328caa7d4bd05fc7c2994f6997a79cc6890bca44
2026-08-31 01:05:20 +02:00
"version": "0.11",
"date": "2026-08-30",
"platform": "android",
"minSdk": 21,
"signed": true,
"signingAuthority": null,
"signingCertSha256": "46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c",
Ship Ariadne 0.11: Sia CDN pull + gitignore _prev/ Mobile parity with Theseus 0.0.7's multi-source model, one source at a time. Ships: * Bns.pullSiaIndex() — fetches dl.silentmode.st/bns-name-index.json (the operator's latest published interpreted BNS snapshot) on a background thread. Installs the result as the current index + persists to disk cache when we don't already have something fresher. Best-effort: silent on failure, on-device electrum still runs. * MainActivity fires the pull once per applyResolverSettings(), racing the bundled starter + on-device electrum. The bundled starter wins the very first navigation (already in memory); the Sia pull wins any subsequent cold start after an operator publish; electrum wins steady-state via the existing INDEX_TTL_MS refresh. * publish-name-mirror.mjs now uploads three shapes to Sia (raw snapshot, raw immutable, mobile-shape floating, mobile-shape immutable) AND scps the mobile-shape floating pointer to the CDN so anonymous clients can actually GET it. The s3.silentmode.st bucket rejects anon reads today; the CDN copy is the workaround, same bytes. * Cannot use Sia direct for now: s3d bucket policy blocks anon reads. Documented in Bns.SIA_INDEX_URL — swap URL when the policy changes. Version bump: 0.10 → 0.11 (versionCode 11, versionName 0.11). Also: .gitignore TheseusNavigator/_prev/ — the ~372 MB local rollback dir that kept appearing as untracked in every git status. ariadne-v0.11.apk 124 KB 03c95832c16cc4763acaadbf328caa7d4bd05fc7c2994f6997a79cc6890bca44
2026-08-31 01:05:20 +02:00
"changes": "Adds a Sia-mirror pull path alongside the APK-bundled starter (0.10). On boot the app fires a background HTTP GET for dl.silentmode.st/bns-name-index.json — the operator's latest published BNS snapshot in the interpreted-index format Bns.saveDisk reads. On any subsequent cold start after a release, the browser converges on the current chain state with one HTTP call instead of a full electrum walk. Multi-source: bundled + CDN + on-device electrum + optional Argus indexer, all racing in parallel; whichever gives a fresh answer first wins.",
"files": {
Ship Ariadne 0.11: Sia CDN pull + gitignore _prev/ Mobile parity with Theseus 0.0.7's multi-source model, one source at a time. Ships: * Bns.pullSiaIndex() — fetches dl.silentmode.st/bns-name-index.json (the operator's latest published interpreted BNS snapshot) on a background thread. Installs the result as the current index + persists to disk cache when we don't already have something fresher. Best-effort: silent on failure, on-device electrum still runs. * MainActivity fires the pull once per applyResolverSettings(), racing the bundled starter + on-device electrum. The bundled starter wins the very first navigation (already in memory); the Sia pull wins any subsequent cold start after an operator publish; electrum wins steady-state via the existing INDEX_TTL_MS refresh. * publish-name-mirror.mjs now uploads three shapes to Sia (raw snapshot, raw immutable, mobile-shape floating, mobile-shape immutable) AND scps the mobile-shape floating pointer to the CDN so anonymous clients can actually GET it. The s3.silentmode.st bucket rejects anon reads today; the CDN copy is the workaround, same bytes. * Cannot use Sia direct for now: s3d bucket policy blocks anon reads. Documented in Bns.SIA_INDEX_URL — swap URL when the policy changes. Version bump: 0.10 → 0.11 (versionCode 11, versionName 0.11). Also: .gitignore TheseusNavigator/_prev/ — the ~372 MB local rollback dir that kept appearing as untracked in every git status. ariadne-v0.11.apk 124 KB 03c95832c16cc4763acaadbf328caa7d4bd05fc7c2994f6997a79cc6890bca44
2026-08-31 01:05:20 +02:00
"ariadne-v0.11.apk": "03c95832c16cc4763acaadbf328caa7d4bd05fc7c2994f6997a79cc6890bca44"
}
},
{
"id": "theseus-navigator",
"product": "Theseus Navigator",
Ship Theseus 0.3.19 4830da01 (signed add-on update endpoint now live) Setup 4830da019914019c5d3575420b490a278bc3ba63606680f84c30d58de5ff9500 Portable 1ef76b5b0fae9ac5a201956f6f3da55b1f1ceec8a035cc0d498147a210491b5f One theseus change since 0.3.18: 7672ce0 - Signed add-on update endpoint activates. The Silent Mode operator Ed25519 pubkey (generated 2026-09-07, 732b1263a236b0030383a2376597cfa43c3624b3ca2912a46134f8f2a06e6012) is baked into addon-update-pubkeys.js, so on every boot Theseus polls each installed add-on's updateURL 30 s in, verifies the signed updates.json against the pubkey, and stages any newer signed version under <userData>/addons-updates-staged/ for promotion on the next launch. Verification, backup, and promotion mechanics unchanged from 0.3.18. The screenshot add-on already advertises https://addons.silentmode.st/screenshot/updates.json; publishing a signed entry there is what activates real updates. No entry is published yet, so this build's boot-time fetch fails silently until the operator lands the first signed payload via scripts/sign-addon-update.mjs. 3be152a - Also in this ship: package-lock.json resynced with package.json. The 0.3.18 ship inadvertently committed WIP dependency additions (bitcoinjs-lib, bip32, bip39, ecpair, @bitcoinerlab/secp256k1) via git commit -o's file-scoped semantics without a matching lock update. Fresh clones now build cleanly with npm ci. Deps are unused by shipped code at this time but ride along in node_modules — installer size grew ~400 KB. Deployed. Verified LIVE 0.3.19.
2026-09-08 00:09:09 +02:00
"version": "0.3.19",
Ship Theseus 0.3.18 b751b5de (add-on updates land + signed endpoint + tab-flash + screenshot fix + Ariadne installer) Setup b751b5deea997bb7e0e894104dcb7411358728987196cb610f316edacaf9be54 Portable 8a258f29c62a03b745e93ea0265285e6d5df38d4f25cdbdadc20b4d2a54b97d7 Five theseus fixes since 0.3.16: e90062a - Bundled add-on updates now actually land. seedBundledAddons() previously copied a bundled add-on only when its target folder was missing, so the 0.3.14 screenshot editor never reached machines that already had an older screenshot/ folder from a previous run — Theseus quietly kept using the stale copy. The seeder now compares bundled and on-disk addon.json versions and reseeds with a timestamped backup under <userData>/addons-backups/<id>-<oldver>-<timestamp>/. ecfd481 + 6117429 - Signed add-on update endpoint, à la Firefox XPI. An add-on can now advertise an updateURL in its addon.json and be republished at any time without waiting for a Theseus release. The client fetches, verifies an Ed25519 signature over "silentmode.addon-update-v1|<id>|<version>|<tarball-sha256>", downloads the tarball, verifies the hash, and stages the new copy under <userData>/addons-updates-staged/ for promotion on next launch. Dormant in this build — the shipped addon-update-pubkeys.js is empty, so checkAndStageUpdates() short-circuits and makes no outbound requests; the feature activates when an operator ceremonies a key in and ships a follow-up release with the pubkey baked in. Operator tooling in scripts/generate-update-keypair.mjs and scripts/sign-addon-update.mjs; full brief in docs/ADDON-UPDATES.md. End-to-end verified against a local HTTP server: sign, serve, fetch, verify, download, extract, stage, promote, backup — plus signature tamper, wrong pubkey, sha256 tamper, and empty-pubkey short-circuit all rejected as expected. 15/15 checks pass. bfe5132 - Tab-switch flash is gone. Two independent causes: (a) tab views were created without an explicit background color, so the first frame after setVisible(true) showed whatever was underneath the view until the page painted; a solid theme-tracking ground fills the gap. (b) setActive iterated tabs in list order, so if the outgoing tab came before the incoming in the array, the loop hid the outgoing first and left one frame where no tab was visible; the incoming is now shown before any hides. a5a667d - Screenshot toolbar-menu captures no longer come out blank. The click handler dispatched capture synchronously while the native Menu.popup window was still on top, marking the tab view occluded and letting WebContents.capturePage() snapshot a stale/empty compositor frame at the correct dimensions (which the existing 0x0 retry couldn't detect). Dispatch now runs from the popup's close callback after a 120ms settle so the parent window is foreground and the compositor is live at capture time. a5a667d also - Ariadne — Install / Update / Uninstall alongside Turn on / off. The Ariadne toggle card in Settings > Registries grows three lifecycle actions. Install and Update run the bundled AriadneResolver-Setup-<ver>.exe silently and elevated (/VERYSILENT /SUPPRESSMSGBOXES /NORESTART — one UAC prompt, no wizard); Update is only visible when the bundled version is newer than what's installed. Uninstall reads Inno's QuietUninstallString from HKLM registry and runs it elevated. Status surfaces installed version + bundled version so the user can see what's on disk vs what would land next; buttons disable during work and refresh after both success and failure so the UI never lies. Deployed. Verified LIVE 0.3.18.
2026-09-07 23:50:52 +02:00
"date": "2026-09-07",
"platform": "win-x64",
"signed": false,
"signingAuthority": null,
Ship Theseus 0.3.19 4830da01 (signed add-on update endpoint now live) Setup 4830da019914019c5d3575420b490a278bc3ba63606680f84c30d58de5ff9500 Portable 1ef76b5b0fae9ac5a201956f6f3da55b1f1ceec8a035cc0d498147a210491b5f One theseus change since 0.3.18: 7672ce0 - Signed add-on update endpoint activates. The Silent Mode operator Ed25519 pubkey (generated 2026-09-07, 732b1263a236b0030383a2376597cfa43c3624b3ca2912a46134f8f2a06e6012) is baked into addon-update-pubkeys.js, so on every boot Theseus polls each installed add-on's updateURL 30 s in, verifies the signed updates.json against the pubkey, and stages any newer signed version under <userData>/addons-updates-staged/ for promotion on the next launch. Verification, backup, and promotion mechanics unchanged from 0.3.18. The screenshot add-on already advertises https://addons.silentmode.st/screenshot/updates.json; publishing a signed entry there is what activates real updates. No entry is published yet, so this build's boot-time fetch fails silently until the operator lands the first signed payload via scripts/sign-addon-update.mjs. 3be152a - Also in this ship: package-lock.json resynced with package.json. The 0.3.18 ship inadvertently committed WIP dependency additions (bitcoinjs-lib, bip32, bip39, ecpair, @bitcoinerlab/secp256k1) via git commit -o's file-scoped semantics without a matching lock update. Fresh clones now build cleanly with npm ci. Deps are unused by shipped code at this time but ride along in node_modules — installer size grew ~400 KB. Deployed. Verified LIVE 0.3.19.
2026-09-08 00:09:09 +02:00
"changes": "One theseus change since 0.3.18: the signed add-on update endpoint is now live — the Silent Mode operator Ed25519 pubkey is baked into this build, so Theseus polls each installed add-on's updateURL 30 s after boot, verifies the signed updates.json, and stages any newer signed version for promotion on the next launch. Verification, backup, and promotion mechanics unchanged from 0.3.18. No signed updates have been published yet, so this build's boot-time fetch will fail silently until the operator lands the first signed entry. Everything from 0.3.18 rides along.",
"files": {
Ship Theseus 0.3.19 4830da01 (signed add-on update endpoint now live) Setup 4830da019914019c5d3575420b490a278bc3ba63606680f84c30d58de5ff9500 Portable 1ef76b5b0fae9ac5a201956f6f3da55b1f1ceec8a035cc0d498147a210491b5f One theseus change since 0.3.18: 7672ce0 - Signed add-on update endpoint activates. The Silent Mode operator Ed25519 pubkey (generated 2026-09-07, 732b1263a236b0030383a2376597cfa43c3624b3ca2912a46134f8f2a06e6012) is baked into addon-update-pubkeys.js, so on every boot Theseus polls each installed add-on's updateURL 30 s in, verifies the signed updates.json against the pubkey, and stages any newer signed version under <userData>/addons-updates-staged/ for promotion on the next launch. Verification, backup, and promotion mechanics unchanged from 0.3.18. The screenshot add-on already advertises https://addons.silentmode.st/screenshot/updates.json; publishing a signed entry there is what activates real updates. No entry is published yet, so this build's boot-time fetch fails silently until the operator lands the first signed payload via scripts/sign-addon-update.mjs. 3be152a - Also in this ship: package-lock.json resynced with package.json. The 0.3.18 ship inadvertently committed WIP dependency additions (bitcoinjs-lib, bip32, bip39, ecpair, @bitcoinerlab/secp256k1) via git commit -o's file-scoped semantics without a matching lock update. Fresh clones now build cleanly with npm ci. Deps are unused by shipped code at this time but ride along in node_modules — installer size grew ~400 KB. Deployed. Verified LIVE 0.3.19.
2026-09-08 00:09:09 +02:00
"TheseusNavigator-Setup-0.3.19.exe": "4830da019914019c5d3575420b490a278bc3ba63606680f84c30d58de5ff9500",
"TheseusNavigator-0.3.19-portable.exe": "1ef76b5b0fae9ac5a201956f6f3da55b1f1ceec8a035cc0d498147a210491b5f"
}
}
]
}