aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/src/meshbay_hub/static/group-page.js
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-10-12 00:17:32 +0200
committerChristophe Besson <cbesson@gmail.com>2026-10-12 00:17:32 +0200
commit14911aae21ec4975f7a805b91e3c4867cb41974b (patch)
tree8c00230a88053905fd77938f3a9539efeb4c3094 /packages/meshbay-hub/src/meshbay_hub/static/group-page.js
parentf6f107e02c7a4aa7326c9a82310a239327d81ed6 (diff)
downloadmeshbay-14911aae21ec4975f7a805b91e3c4867cb41974b.tar.gz
feat: let the operator pause and resume a root's indexing (MNP 6.2)
A whole-root walk now checks its root before every file: removed or ejected, it stops instead of reading the drive to the end; paused, it finishes from the hash cache alone. A paused root is not watched, not swept by reconcile and survives a restart (roster), its indexed files stay served. Resume runs the reconcile sweep over the root, so entries and their enrichment are kept. Signed root_pause / root_resume over MNP, loopback routes, CLI `root pause|resume`, a pause button on the indexing dock and pause/resume in the roots table of Group settings. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/group-page.js')
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/group-page.js8
1 files changed, 6 insertions, 2 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/group-page.js b/packages/meshbay-hub/src/meshbay_hub/static/group-page.js
index 48b1c80..3e3b483 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/group-page.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/group-page.js
@@ -510,6 +510,9 @@ function GroupPage({ groupId, group, token, username, userId, userPrefs,
setNodeRoots(msg.roots);
}
};
+ // The dock's pause button, for a node that is not on this machine.
+ const pauseFromDock = (rootName) =>
+ transport.pauseRoot(groupId, rootName, transport.signFn);
// The node's own scan (a root added while we were already connected,
// or reconcile catching one back up) — never the entries, just
// enough to animate the sidebar dot. Guaranteed a final push at the
@@ -526,7 +529,7 @@ function GroupPage({ groupId, group, token, username, userId, userPrefs,
// The operator's indexing dock. The push names no root, so the
// page that opened the roots table names it.
if (transport.memberRole === 'operator') {
- reportIndexPush(groupId, status, nodeRootsRef.current);
+ reportIndexPush(groupId, status, nodeRootsRef.current, pauseFromDock);
}
};
setOperatorPaired(transport.memberRole === 'operator');
@@ -637,7 +640,8 @@ function GroupPage({ groupId, group, token, username, userId, userPrefs,
}
}
if (transport.memberRole === 'operator' && ack.indexing) {
- reportIndexPush(groupId, ack.indexing, indexMsg.roots || nodeRootsRef.current);
+ reportIndexPush(groupId, ack.indexing, indexMsg.roots || nodeRootsRef.current,
+ pauseFromDock);
}
} catch (err) {
if (cancelled) return;