site/releases-manifest.json

51 lines
2.3 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",
"version": "0.3.21",
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,
"changes": "Settings tidy-up: the Toolbar dropdowns in Settings > General are gone (the drag handles on the address bar and search box replace them), and the Registries section is folded into General as a subheading (collision policy + Ariadne install/turn on/off/uninstall/update, all in one place). Sidebar entry 'Registries' removed. Everything from 0.3.20 rides along.",
"files": {
"TheseusNavigator-Setup-0.3.21.exe": "a2e25a80ad2300e79cf5e7de1337bbc986b48e6bda9c13f497caf5b66c90edb9",
"TheseusNavigator-0.3.21-portable.exe": "173d376aa23e6cb28f8a353206a15144f8a04d9817f531902b4ba93039101742"
}
}
]
}