Ariadne 0.1.13: /api/status + per-source enable toggles in policy.json

Every subsystem is now individually switchable and reports its own state.

GET http://127.0.0.1/api/status returns:
- daemon: version, startedAt, uptimeSec, policy, permittedTlds, ports,
          upstream, gateway
- index:  size, nameCacheSize, warmStart {source, at, size}
- sources.snapshotHttps:  enabled, urls, lastAttempt/Success/Status/Error,
                          winnerUrl, notModified count, refreshes count, ETags
- sources.electrumWss:    enabled, lastAttempt/Success/Error, failStreak, refreshes
- sources.perQueryLookup: enabled, gateway, lastAttempt, hits/misses/errors
- sources.diskCache:      enabled, path, exists, size, mtime
- sources.localApi:       enabled, endpoints[]
- policyFile:             path, exists

policy.json schema extended with a sources.<name>.enabled block, hot-reloaded
by the existing loadPolicyOverride() on the same 5-second tick as the
collision policy. Each refresh/lookup path guards on its flag, so an operator
can isolate any subsystem without a restart:
  - snapshotHttps off  -> daemon skips dl.silentmode.st/Sia polling
  - electrumWss off    -> daemon skips chipnet WSS refresh
  - perQueryLookup off -> DNS handler misses fall straight through to forward
  - diskCache off      -> no write to and no read from bns-name-snapshot.json
  - localApi off       -> /api/* return 503 with a hint pointing at policy.json

Verified locally on port 18080: /api/status returned the full JSON with a
snapshot warm-start from dl.silentmode.st recorded in warmStart, ETag captured
in sources.snapshotHttps.etags, disk cache path/size/mtime populated.

Deployed dl.silentmode.st + Sia. sha256 a16d10759efede4412f4fdb52d59424bf56bbb258bb002ab930f4a5a5aef8a41.

The matching Theseus panel UI (source table with the toggles + a Copy-status
button that fetches /api/status) belongs in the Theseus release; not touched
here to avoid colliding with settings-preload.js work in flight from a
parallel session.
This commit is contained in:
Local Dev 2026-10-01 00:08:57 +02:00
parent 6f8b72080b
commit 91ed42cd04
2 changed files with 8 additions and 8 deletions

View file

@ -36,14 +36,14 @@
{
"id": "ariadne-resolver",
"product": "Ariadne Resolver (Windows)",
"version": "0.1.12",
"date": "2026-09-30",
"version": "0.1.13",
"date": "2026-10-01",
"platform": "win-x64",
"signed": false,
"signingAuthority": null,
"changes": "Two fixes on top of 0.1.11. (1) Upgrades no longer fail with \"DeleteFile failed; code 5 -- Access is denied\" on runtime\\node.exe. The pre-install hook now also kills any ORPHAN node.exe running from the Ariadne install dir (foreground diagnostic runs, crashed processes not cleaned up by the scheduled task), not just the scheduled task's own daemon. Path-scoped so it never touches node.exe from other apps. (2) Local BNS indexer surface -- every app on the machine can now query BNS at http://127.0.0.1/api/tlds, /api/name/<name>, /api/registry directly against the daemon's in-memory index, same URL shape as the operator gateway. No round-trip through navigate.st for local callers. CORS wide-open (same as the operator's public read API). Upgrades in place.",
"changes": "Every subsystem is now individually switchable and reports its own state. New endpoint http://127.0.0.1/api/status returns a full state report (daemon version + startup + policy + permitted TLDs + ports + upstream + gateway; index size + warm-start source; per-source enabled/lastAttempt/lastSuccess/lastError/counters for snapshotHttps + electrumWss + perQueryLookup + diskCache + localApi). C:\\ProgramData\\Ariadne\\policy.json extended with a `sources.<name>.enabled` block (hot-reloaded every 5 s alongside the collision policy) -- flip any source off to isolate a path or measure without it. Turning localApi off returns 503 with a hint pointing at the config file. Turning diskCache off skips writing bns-name-snapshot.json AND skips reading it at warm-start. Turning snapshotHttps off skips the HTTPS refresh; electrumWss off skips the WSS refresh; perQueryLookup off skips the per-query /api/name/ fallback. Includes 0.1.12 (orphan-safe upgrade + /api/tlds + /api/name/:n + /api/registry). Upgrades in place.",
"files": {
"AriadneResolver-Setup-0.1.12.exe": "b041652a330fefb4561da7ca14fa84ddf3b6085fda6eb62831cb08ea56ec602d"
"AriadneResolver-Setup-0.1.13.exe": "a16d10759efede4412f4fdb52d59424bf56bbb258bb002ab930f4a5a5aef8a41"
}
},
{

View file

@ -72,12 +72,12 @@
</div>
<div class="rel">
<h2>Ariadne Resolver — Windows <span style="color:var(--acid)">0.1.12</span></h2>
<div class="meta">Windows 64-bit · unsigned · bundled Node runtime · 2026-09-30 · <b>0.1.12 — orphan-safe upgrade + local BNS indexer API</b> — Two fixes on top of 0.1.11's indexer-first refresh. (1) Upgrades no longer die with <code style="display:inline">DeleteFile failed; code 5 -- Access is denied</code> on <code style="display:inline">runtime\node.exe</code>. The pre-install hook now also kills any <b>orphan</b> node.exe running from the Ariadne install dir (foreground diagnostic runs, crashed processes not cleaned up by the scheduled task), not just the scheduled task's own daemon. Path-scoped so it never touches other apps' node.exe. (2) Local BNS indexer API — every app on the machine can now query BNS at <code style="display:inline">http://127.0.0.1/api/tlds</code>, <code style="display:inline">/api/name/&lt;name&gt;</code>, <code style="display:inline">/api/registry</code> directly against the daemon's in-memory index. Same URL shape as the operator gateway, no round-trip through navigate.st for local callers. Upgrades in place.</div>
<h2>Ariadne Resolver — Windows <span style="color:var(--acid)">0.1.13</span></h2>
<div class="meta">Windows 64-bit · unsigned · bundled Node runtime · 2026-10-01 · <b>0.1.13 — every subsystem is switchable and reports its own state</b> — New endpoint <code style="display:inline">http://127.0.0.1/api/status</code> returns a full state report: daemon version + startup + policy + permitted TLDs + ports + upstream + gateway; index size + warm-start source; and per-source <code style="display:inline">enabled</code>/<code style="display:inline">lastAttempt</code>/<code style="display:inline">lastSuccess</code>/<code style="display:inline">lastError</code>/counters for <b>snapshotHttps</b>, <b>electrumWss</b>, <b>perQueryLookup</b>, <b>diskCache</b>, <b>localApi</b>. Same JSON drives a settings UI (once Theseus's Plug-ins panel picks it up) and is a support-ready "current state" dump. <code style="display:inline">C:\ProgramData\Ariadne\policy.json</code> extended with a <code style="display:inline">sources.&lt;name&gt;.enabled</code> block (hot-reloaded every 5 s alongside the collision policy) — flip any source off to isolate a path or measure without it. Includes 0.1.12 (orphan-safe upgrade + local BNS indexer API). Upgrades in place.</div>
<div class="file">
<div class="n"><a href="https://dl.silentmode.st/AriadneResolver-Setup-0.1.12.exe">AriadneResolver-Setup-0.1.12.exe</a> — ~24 MB</div>
<code>b041652a330fefb4561da7ca14fa84ddf3b6085fda6eb62831cb08ea56ec602d</code>
<div class="n"><a href="https://dl.silentmode.st/AriadneResolver-Setup-0.1.13.exe">AriadneResolver-Setup-0.1.13.exe</a> — ~24 MB</div>
<code>a16d10759efede4412f4fdb52d59424bf56bbb258bb002ab930f4a5a5aef8a41</code>
</div>
</div>