Fleet tools: 8s probe cap + post-update refresh retries (updates now reflect)
After 'claude update' replaces the binary, the daemon's re-probe ran the fresh binary which macOS Gatekeeper re-verifies (>2s) — the 2s probe cap missed the new version, so the UI didn't refresh (update worked but looked stale). Bump the cap to 8s; frontend polls the tools endpoint a few times post-update to catch the re-probe. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
ed339c2121
commit
b82a71d4ea
@@ -249,7 +249,10 @@ fn tool_version(bin: &std::path::Path) -> Option<String> {
|
|||||||
});
|
});
|
||||||
let _ = tx.send(text);
|
let _ = tx.send(text);
|
||||||
});
|
});
|
||||||
let text = rx.recv_timeout(Duration::from_secs(2)).ok().flatten()?;
|
// 8s, not 2s: right after an update the binary is freshly replaced, and macOS
|
||||||
|
// Gatekeeper re-verifies an unsigned binary on first exec (several seconds) — a
|
||||||
|
// tight cap would miss the new version on the post-update re-probe.
|
||||||
|
let text = rx.recv_timeout(Duration::from_secs(8)).ok().flatten()?;
|
||||||
extract_semver(&text)
|
extract_semver(&text)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -139,8 +139,9 @@ function NodeTools({ nodeId, online }: { nodeId: string; online: boolean }) {
|
|||||||
.then((r) => r.json())
|
.then((r) => r.json())
|
||||||
.then((d: { ok?: boolean; output?: string }) => {
|
.then((d: { ok?: boolean; output?: string }) => {
|
||||||
if (!d.ok) alert(`${t.name} update failed:\n\n${(d.output ?? "unknown error").slice(0, 800)}`);
|
if (!d.ok) alert(`${t.name} update failed:\n\n${(d.output ?? "unknown error").slice(0, 800)}`);
|
||||||
refresh();
|
// The daemon re-probes after updating; a freshly-replaced binary can take a
|
||||||
setTimeout(refresh, 3500); // let the daemon's post-update re-probe land
|
// few seconds to report (macOS Gatekeeper re-verify), so poll a few times.
|
||||||
|
[0, 4000, 9000, 15000].forEach((ms) => setTimeout(refresh, ms));
|
||||||
})
|
})
|
||||||
.catch((e: Error) => alert(`${t.name} update error: ${e.message}`))
|
.catch((e: Error) => alert(`${t.name} update error: ${e.message}`))
|
||||||
.finally(() => setBusy(null));
|
.finally(() => setBusy(null));
|
||||||
|
|||||||
Reference in New Issue
Block a user