Setup fe59105d2e99a41b7000caeb86601a8e1675846d193e92204034669f5b368d60
Portable 1b6eda55b53894cf9889548116c7b6100888fb160edc84cc1592bb79f9d95b53
The update flow no longer asks the user to click Download. When
checkForUpdate detects a newer version, autoDownloadUpdate() kicks off
session.defaultSession.downloadURL against the setup URL immediately.
will-download recognises the update URL and routes the file to a
fixed %TEMP% path (bypassing the visible downloads panel entirely),
streams updateDownloadReceived/Total into the chip via
emitUpdateAvailable, and flips updateDownloadState to "ready" when
the transfer finishes.
Chip states:
idle first render before the fetch starts — clickable to
trigger the manual download (kept as a fallback).
downloading "↓ 42% — 0.3.2" — no click, just progress.
ready "✓ Install 0.3.2 & restart" — one click.
failed fall back to the pre-0.3.1 explicit-download click.
install-update-now IPC: spawns the cached setup with /S (detached,
stdio ignored), then app.quit() 400ms later so the installer can
overwrite the running exe. Our nsis/installer.nsh detects an existing
Ariadne install via the HKLM registry and skips its Ariadne prompt on
upgrades, so the /S run is fully unattended.
The one-click flow eliminates two long-standing sources of confusion:
- "Download opens a different browser" — Theseus's default session
fetches the installer itself, not a URL handoff to shell.
- "Update requires multiple wizard clicks" — /S skips them.
Extensions aren't touched by this. The framework lives in
addons-host.js + sidebar-preload.js; add-ons themselves live in
%APPDATA%\Theseus Navigator\addons\<id>\ and are a separate layer.
New extensions ship by drop-a-folder, no browser release required.
Deployed: scp + sia-upload, verified 200 + 0.3.1 in the manifest.
127 lines
3.1 KiB
JSON
127 lines
3.1 KiB
JSON
{
|
|
"name": "theseus-navigator",
|
|
"version": "0.3.1",
|
|
"description": "Theseus Navigator — a browser that follows the thread. By Silent Mode, a Deviant project.",
|
|
"author": "Silent Mode",
|
|
"main": "main.js",
|
|
"type": "commonjs",
|
|
"scripts": {
|
|
"start": "electron .",
|
|
"resolve-test": "node resolve-test.mjs",
|
|
"dist": "electron-builder --win nsis portable"
|
|
},
|
|
"dependencies": {
|
|
"fetch-socks": "^1.3.3",
|
|
"nostr-tools": "^2.10.4",
|
|
"psl": "^1.15.0",
|
|
"socks-proxy-agent": "^10.1.0",
|
|
"ws": "^8.18.0"
|
|
},
|
|
"devDependencies": {
|
|
"electron": "^33.0.0",
|
|
"electron-builder": "^25.1.8"
|
|
},
|
|
"build": {
|
|
"appId": "st.silentmode.theseus",
|
|
"productName": "Theseus Navigator",
|
|
"artifactName": "TheseusNavigator-${version}-${arch}.${ext}",
|
|
"directories": {
|
|
"output": "dist-public"
|
|
},
|
|
"asar": true,
|
|
"files": [
|
|
"main.js",
|
|
"preload.js",
|
|
"chrome.html",
|
|
"home.html",
|
|
"settings.html",
|
|
"settings-preload.js",
|
|
"popover.html",
|
|
"popover-preload.js",
|
|
"engine-picker.html",
|
|
"engine-picker-preload.js",
|
|
"downloads.html",
|
|
"downloads-preload.js",
|
|
"address-picker.html",
|
|
"address-picker-preload.js",
|
|
"pw-fill.html",
|
|
"pw-fill-preload.js",
|
|
"home-preload.js",
|
|
"error.html",
|
|
"error-preload.js",
|
|
"sidebar-preload.js",
|
|
"addons-host.js",
|
|
"link-status.html",
|
|
"link-status-preload.js",
|
|
"collision.html",
|
|
"collision-preload.js",
|
|
"messages.html",
|
|
"messages-preload.js",
|
|
"bcnr-preload.js",
|
|
"bcnr-origin.js",
|
|
"lib/**/*",
|
|
"package.json",
|
|
"node_modules/**/*",
|
|
"!**/*.md",
|
|
"!**/*.map",
|
|
"!tor${/*}",
|
|
"!dist-public${/*}",
|
|
"!resolve-test.mjs",
|
|
"!*PROMPT.md"
|
|
],
|
|
"extraResources": [
|
|
{
|
|
"from": "tor",
|
|
"to": "tor"
|
|
},
|
|
{
|
|
"from": "../Argus/src/lib/resolver-web.js",
|
|
"to": "resolver-web.mjs"
|
|
},
|
|
{
|
|
"from": "../Argus/src/lib/password-vault.js",
|
|
"to": "password-vault.mjs"
|
|
},
|
|
{
|
|
"from": "lib/hermes.js",
|
|
"to": "lib/hermes.mjs"
|
|
},
|
|
{
|
|
"from": "snapshots/bns-name-snapshot.json",
|
|
"to": "bns-name-snapshot.json"
|
|
},
|
|
{
|
|
"from": "build/AriadneResolver-Setup-0.1.0.exe",
|
|
"to": "AriadneResolver-Setup-0.1.0.exe"
|
|
},
|
|
{
|
|
"from": "bundled-addons",
|
|
"to": "bundled-addons"
|
|
},
|
|
{
|
|
"from": "build/icon.ico",
|
|
"to": "icon.ico"
|
|
}
|
|
],
|
|
"win": {
|
|
"icon": "build/icon.ico",
|
|
"target": [
|
|
"nsis",
|
|
"portable"
|
|
]
|
|
},
|
|
"nsis": {
|
|
"oneClick": false,
|
|
"perMachine": false,
|
|
"allowToChangeInstallationDirectory": true,
|
|
"artifactName": "TheseusNavigator-Setup-${version}.${ext}",
|
|
"include": "nsis/installer.nsh",
|
|
"installerIcon": "build/icon.ico",
|
|
"uninstallerIcon": "build/icon.ico",
|
|
"installerHeaderIcon": "build/icon.ico"
|
|
},
|
|
"portable": {
|
|
"artifactName": "TheseusNavigator-${version}-portable.${ext}"
|
|
}
|
|
}
|
|
}
|