site/releases-manifest.json
Local Dev 2320c33d0a 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

50 lines
3.9 KiB
JSON

{
"schema": "silentmode-releases/2",
"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": {
"AriadneResolver-Setup-0.1.0.exe": "9ab725bec5567625e5857a49b112c4fbc0f59dbdd623abd7110429306f5d0ddb"
}
},
{
"id": "ariadne-android",
"product": "Ariadne for Android",
"version": "0.11",
"date": "2026-08-30",
"platform": "android",
"minSdk": 21,
"signed": true,
"signingAuthority": null,
"signingCertSha256": "46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c",
"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": {
"ariadne-v0.11.apk": "03c95832c16cc4763acaadbf328caa7d4bd05fc7c2994f6997a79cc6890bca44"
}
},
{
"id": "theseus-navigator",
"product": "Theseus Navigator",
"version": "0.3.18",
"date": "2026-09-07",
"platform": "win-x64",
"signed": false,
"signingAuthority": null,
"changes": "Five theseus fixes since 0.3.16. (1) 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. It now compares bundled and on-disk addon.json versions and reseeds with a timestamped backup under <userData>/addons-backups/. (2) Signed add-on update endpoint: an add-on can advertise an updateURL and be republished at any time without waiting for a Theseus release. The client fetches, verifies an Ed25519 signature over id|version|sha256, downloads the tarball, and stages the new copy under <userData>/addons-updates-staged/ for promotion on next launch. Dormant in this build (no operator pubkey ceremonied in yet) but the mechanism ships ready. (3) Tab-switch flash gone: switching tabs (and opening Settings) no longer flashes a bare compositor frame — tab views now carry an explicit theme-tracking background color, and setActive shows the incoming tab before hiding the outgoing so at least one view is always up. (4) Screenshot toolbar-menu captures no longer come out blank: the click handler was dispatching capture synchronously while the native menu popup was still on top, marking the tab view occluded and letting capturePage snapshot a stale/empty compositor frame. It now dispatches from the popup's close callback after a short settling delay, so the parent window is foreground and the compositor is live at capture time. (5) 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 installer silently elevated (one UAC prompt, no wizard); Uninstall reads Inno's registered uninstaller and runs it elevated. Install/Update visibility tracks the installed vs bundled version so the user sees what's on disk and what would land next.",
"files": {
"TheseusNavigator-Setup-0.3.18.exe": "b751b5deea997bb7e0e894104dcb7411358728987196cb610f316edacaf9be54",
"TheseusNavigator-0.3.18-portable.exe": "8a258f29c62a03b745e93ea0265285e6d5df38d4f25cdbdadc20b4d2a54b97d7"
}
}
]
}