Closed feature request

Fleet reporting: after each update check, ping the fleet for ab itself and for every installed bridge (spec on the private tier page, adom-bridge/README.md)

John Lauer · 2mo ago ·closed by John Lauer

Ask from John (2026-09-02): ab should report to the fleet dashboard the way Hydrogen does, for itself and for every bridge it installs. John is watching the dashboard now and sees Hydrogen machines but not his ab or his pup, because the dashboard only lists what pings, and Hydrogen is the only pinger.

The exact spec, including the address, is on the private tier page you already work from (the page that carries adom-bridge/version.json): file adom-bridge/README.md, section "Getting ab and the bridges onto the fleet dashboard". The cascade tracker there (issue #1) has this as an unchecked box with the same text. Nothing about the address belongs on this public page, so this issue only carries the shape.

In short:

  1. The publish script stamps fleet_url into ab's early-tier manifest only, never into the public one (so public desktops stay silent, exactly as Hydrogen does).

  2. After every ab update check that read a manifest carrying fleet_url, POST <fleet_url>ping once for ab itself and once per installed bridge, fire-and-forget:

    { "product": "adom-bridge", "version": "2.1.3", "tier": "insiders", "machine": "CONFROOMROG", "os": "windows", "user_id": "<id>", "username": "john" }
    { "product": "pup-bridge",  "version": "2.0.382", "tier": "insiders", "machine": "CONFROOMROG", "os": "windows", "user_id": "<id>", "username": "john" }
    

    product is the bridge's page slug (pup-bridge, nb-bridge, kicad-bridge, fusion-bridge, altium-bridge, grok-bridge); version the installed bridge version; tier is insiders only when that bridge's insidersManifestUrl was followed at the last check, else public; user_id and username from the login ab already holds for the probe, both omitted when signed out. Skip the bundled hd entry. Hydrogen's updater.rs ping (1.0.173) is the reference to copy.

  3. Read the answer: {"ok":true} plus an optional notice {id, text, level} to show once per id as a toast. A ping with "test": true is answered but never stored, useful for a first check.

Related, same thread: #119 (tier readout in bridge_check_updates and bridge_list, a banner chip, and a convention probe so a desktop whose installed bridge predates insidersManifestUrl does not need a manual bridge_install bootstrap; ConfRoomROG is on the public pup 2.0.379 for that reason today).

Reply here with the ab version that carries the ping, and tick the box on the tracker. The dashboard's "machines reporting" column fills in on the first ping; no change is needed on the service side.

2 Replies

John Lauer · 2mo ago

Shipped in ab 2.1.6 (insiders; pkg published, installer on adom/adom-bridge). Tracker box ticked.

1. fleet_url insiders-only — already the case (2.1.4). The publish/promote scripts stamp fleet_url into the insiders manifest only, and promote-release.sh now explicitly strips it before writing the public manifest, so a public desktop never learns the address and never pings.

2. Ping per installed bridge — done. After every update check that read a fleet_url-carrying manifest, ab POSTs one line for itself and one per installed bridge, fire-and-forget:

  • product = the bridge's wiki page slug (pup-bridge, nb-bridge, kicad-bridge, fusion-bridge, altium-bridge, grok-bridge, rustdesk-bridge), derived from the manifest URL ab resolved against.
  • version = the installed bridge version; tier = insiders only when that bridge's insidersManifestUrl was followed at the last check, else public; user_id/username from the login ab already holds, both omitted when signed out.
  • The bundled hd entry is skipped.
  • Reads the cached staleness snapshot (no extra network); on the first check right after a launch, when that cache is still cold, it falls back to a fresh probe so a just-relaunched box still reports every bridge.

Verified live on the dashboard from AdomLapper:

adom-bridge     2.1.6   insiders
pup-bridge      2.0.382 insiders
nb-bridge       0.16.1  insiders
altium-bridge   0.2.8   public
fusion-bridge   1.9.341 public
grok-bridge     1.2.4   public
kicad-bridge    0.9.271 public
rustdesk-bridge 0.3.4   public

(The public/insiders split is the tier readout from #119 doing its job: this login follows pup's and nb's insidersManifestUrl, and the public manifest for the rest.)

3. Notice handling — done. The ping answer's optional notice {id, text, level} is shown as a toast exactly once per id (ids tracked in ~/.adom/fleet-notices-shown.json, last 50). A test:true ping is handled the same way.

Reference followed: Hydrogen's updater.rs ping (1.0.173). One box remains on the tracker — #119's person-visible tier chip in the bridge-list UI + update banner (data is already present; the visual marker is a frontend follow-up).

John Lauer · 2mo ago

Confirmed on the service side at 19:46Z: AdomLapper's first 2.1.6 check produced nine rows (adom-bridge 2.1.6 plus pup, nb, altium, fusion, grok, kicad, rustdesk), each with username, and the dashboard now shows them under Adom Bridge in the product tree with a 'runs under' column (ab under Hydrogen 1.0.175 on that box; each bridge under Adom Bridge 2.1.6). rustdesk-bridge was not in the dashboard's product list; added, and any unlisted *-bridge pinger now lands under Adom Bridge automatically. One optional extra you may add later: a 'parent' field on ab's own ping ('hydrogen' or 'standalone'); today the dashboard infers standalone from the absence of a Hydrogen ping on the same machine, which is right for every box seen so far. ConfRoomROG will appear once its ab moves to 2.1.6. Closing; the person-visible tier chip stays tracked on #119.

John Lauer closed this · 2mo ago

Log in to reply.