theseus/package.json

80 lines
2.3 KiB
JSON
Raw Normal View History

{
"name": "theseus-navigator",
Theseus 0.0.7: multi-source BNS with continuous delta refresh The first .bch page now opens with zero user-visible latency and stays fresh for as long as the browser runs. Four sources conspire in parallel — none of them can block a navigation: 1. Warm start from disk (sync) warmFromSnapshot loads the user-cache snapshot first, then falls back to the copy bundled with the build. sharedIndex is set BEFORE the first navigation can even fire. 2. Continuous background delta refresh (every 30 s) startBnsPolling opens one electrum connection, fetches the beacon history (a single call), and only pulls verbose tx bodies for txids we don't already have — mergeFreshHistory-style. Merges into memory, rebuilds the index locally, persists the enlarged snapshot to disk. Turns a ~60 s full walk into ~1 s per new event. 3. Sia snapshot pull on boot (one-shot, wins the NEXT boot) refreshSnapshotFromSia downloads the operator's published snapshot from s3.silentmode.st for the next launch. After a long idle period the browser resumes from that fresher snapshot instead of walking days of events. 4. ensureIndex full-walk fallback Still runs on boot for the case where there's no bundled snapshot AND the poll hasn't landed yet — very first launch, offline install, etc. resolveHost now prefers sharedIndex (which the poll keeps live) and, on a miss with a stale index, triggers pollAndMerge (delta fetch) instead of ensureIndex (full walk). The old full-walk fallback is only taken if the delta primitives aren't available (running against an older resolver-web). Argus/src/lib/resolver-web.js exports connectElectrum so the Theseus poll can drive its own ad-hoc queries against the pool without duplicating the Electrum wrapper. Bundled starter snapshot refreshed: 73 beacon txs, root c37b859682…54e414ba. Artifacts: dist-public/TheseusNavigator-Setup-0.0.7.exe (95.4 MB) sha256 1b0dabcd2b13067aa1fd89c3271708b35ba22dfc7a620e248b35e0487b7a104f dist-public/TheseusNavigator-0.0.7-portable.exe (92.7 MB) sha256 706dc01b21a88d3c2fbc3eeced0cab6ace873630bf3edc2d40915ca5be5c8cae
2026-08-30 15:57:01 +02:00
"version": "0.0.7",
"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",
"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",
Theseus UX batch: tabs, address history, password autofill MVP, home cards Six user-visible improvements + supporting infra, all uncommitted from the earlier session-in-progress state. Ships together in one release. Chrome / tabs - Same-size tabs: flex 1 1 0 with max 200px, min 60px. Container gets overflow: hidden so many tabs shrink evenly instead of scrolling out. - Drag-and-drop tab reordering. HTML5 drag events on each .tab; drop side chosen by pointer x within target (Chrome UX). New move-tab IPC splices the tabs array + re-emits. Address bar - Persistent history at userData/history.json capped at 500 LRU. Ranked by host-prefix > url-prefix > contains > title-contains > recency. - Floating suggestions dropdown (addressPicker WebContentsView) anchored under the URL bar. Debounced 80ms input; ArrowUp/Down forward to the picker via address-cursor IPC; Enter fires goURL; blur closes after 160ms so click-through registers. New files address-picker.html + address-picker-preload.js. Cleared by existing clearHistoryOnQuit. Password autofill (A.2 MVP) - Green key chip in the address bar appears when the vault is UNLOCKED and the active tab's host has matching credentials (exact hostname match for phase 1; eTLD+1 upgrade queued as A.2.5). - Click chip → floating picker of usernames. Click a match → main.js runs a small script in the active tab: finds first visible input[type=password]:not([disabled]), walks the same form for a visible text/email/tel/url/search input whose name/id/autocomplete matches /username|user|email|login|account|id/, fills both via the native value setter + dispatches input/change so React/Vue-controlled inputs update. New files pw-fill.html + pw-fill-preload.js. - emitPwAvailability fires from pushNav + vault setup/unlock/lock so the chip's visibility + count stays accurate. Bookmarks bar - Right-click context menu on the favorites bar. On empty area: "Add current page" (or "Remove current page" if already saved). On a specific bookmark: "Open", "Edit title…" (prompt), "Remove", plus the add/remove-current entry. Uses a shared .ctxmenu style mirroring the settings ctxmenu (dark/light aware). - Empty-state text updated to mention right-click. Home page - Larger responsive card grid: auto-fill minmax(260-280px, 1fr) with breakpoints at 600/900/1200. Cards have a subtitle line, a colored badge (on-chain / Sia / server / custom), and edit affordances that reveal only in Edit mode. - User-editable set: Edit toggle reveals per-card ✎/✕ + a dashed "+ Add card" tile. Modal for add/edit with title / URL / subtitle / badge. Reset-to-defaults button. - Persisted at userData/home-cards.json. New home-preload.js exposes window.home = { getCards, setCards, resetCards, navigate }. IPC handlers in main.js validate sender.getURL() matches our own home.html — third-party pages see the API shape via the preload but can't act on the user's local cards. - Fallback set of 2 cards renders when window.home is unavailable (e.g. opening home.html directly outside Electron for preview) so the grid is never blank. Docs - TheseusNavigator/ROADMAP-identity-wallet.md — the phased plan for the two independent strands (password manager A.2/3, browser wallet B.1-6). Committed earlier this session; re-listed here for context. - TheseusNavigator/SESSION-PROMPT-identity-wallet.md — pastable kickoff for the next session picking up either strand. Files added to build.files: address-picker.html, address-picker-preload.js, pw-fill.html, pw-fill-preload.js, home-preload.js.
2026-08-17 02:17:12 +02:00
"address-picker.html",
"address-picker-preload.js",
"pw-fill.html",
"pw-fill-preload.js",
"home-preload.js",
"link-status.html",
"link-status-preload.js",
"collision.html",
"collision-preload.js",
"messages.html",
"messages-preload.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" },
BNS: Sia+Nostr snapshot mirror, Theseus warm-start, VPS playbook, electrum.bch Four independent pieces of one story — make cold-start .bch resolution fast, survive individual electrum outages, and turn adding a Silent Mode BNS server into a checklist run. * Argus/src/lib/snapshot-name.js — pure, interpretation-free snapshot format for the name beacon (raw history + verbose tx cache + deterministic root). * Argus/src/publish-name-mirror.mjs — mirror the snapshot to Sia S3 (floating + content-addressed) and Nostr NIP-33 (kind 30078, d-tag bns-name-list). Same pattern as publish-tld-mirror.mjs. * Argus/src/snapshot-name-to-file.mjs — dump the snapshot to a file for bundling. Writes to TheseusNavigator/snapshots/bns-name-snapshot.json. * Argus/src/lib/resolver-web.js — new export buildIndexFromSnapshot() runs the same REG/UPD reduction as buildIndex() but from a pre-fetched snapshot, no electrum required. Warm-start path in Theseus depends on this. * TheseusNavigator/main.js — warmFromSnapshot() and refreshSnapshotFromSia() wired into app.whenReady(). First .bch navigation returns from a warm index instead of waiting on a full electrum walk. * TheseusNavigator/package.json — bundles the starter snapshot as an extraResource so packaged builds ship with a floor. * TheseusNavigator/snapshots/bns-name-snapshot.json — first starter snapshot (70 beacon txs, root 8cc859aa…). * VPS/BNS-SERVER-PLAYBOOK.md — turn-key checklist for spinning up a second or third Silent Mode BNS server, distilled from what actually worked on the silentmode box (BCHN 29 [chip]-not-[chipnet], multi-beacon indexer, wss:// nginx, on-chain publish via electrum.bch, common gotchas table). * Argus/src/register-electrum-list.mjs — publish the current chipnet server pool as `el` on electrum.bch. Fits inside the 200-byte OP_RETURN cap by sizing the record (drops fallback IP pins in favour of URL-only tokens until they fit). NAME was chosen deliberately: two-part `electrum.bch` normalises to the bare distinct name `electrum`, whereas the earlier candidate `electrum.silentmode.bch` collapsed to silentmode.bch and would have inherited/overwritten that name's records. * Argus/src/revert-silentmode-bch.mjs — one-off recovery from the earlier register-electrum-list revision that hit exactly that subdomain-collapse bug (broadcast an UPD to silentmode.bch and clobbered its s3 record). Records recovered from the local snapshot cache; safe to leave in the tree as documentation of what happened.
2026-08-30 09:59:01 +02:00
{ "from": "lib/hermes.js", "to": "lib/hermes.mjs" },
{ "from": "snapshots/bns-name-snapshot.json", "to": "bns-name-snapshot.json" }
],
"win": { "target": ["nsis", "portable"] },
"nsis": {
"oneClick": false,
"perMachine": false,
"allowToChangeInstallationDirectory": true,
"artifactName": "TheseusNavigator-Setup-${version}.${ext}"
},
"portable": { "artifactName": "TheseusNavigator-${version}-portable.${ext}" }
}
}