summaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node/src/meshbay_node/transport
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-09-14 11:08:12 +0200
committerChristophe Besson <cbesson@gmail.com>2026-09-14 11:08:12 +0200
commita294c1d338ba4c20d66873d593d1c101e69c5a40 (patch)
tree7a2f78348f469a46b7df236230f13387e583639c /packages/meshbay-node/src/meshbay_node/transport
parentd5b4d728b05f68f713fa09edf47c253b869e0f88 (diff)
downloadmeshbay-a294c1d338ba4c20d66873d593d1c101e69c5a40.tar.gz
feat(node): progress names the root under way and the roots waiting
`IndexProgress` said "scanning, this many bytes of that many" and nothing more. A group's roots are walked one after another, so a second directory added during a large scan showed as the bar jumping back to 0 %. It now also carries the root being walked and its position in the roots table, the kind of walk (scan, rescan, reconcile, watch), file counts, and the roots waiting for the scan lock in order: queued by the initial scan, by a retarget, and by a plug; dropped when a root is removed. `GET /api/index-status` answers for every group at once, including a group still in its initial scan, so a client can show indexing on any page. It names roots: loopback only, like `current_dir`. `index_progress` and the handshake ack gain the same counters, still naming nothing (decision D3): the root is a position in the roots table the member already opened from the sealed index, and the queue is a count. The pusher keeps speaking while a root only waits for the lock. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T6jPTeocXA1BePekdsgPya
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/transport')
-rw-r--r--packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py18
1 files changed, 12 insertions, 6 deletions
diff --git a/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py b/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py
index eff40f1..79a97cc 100644
--- a/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py
+++ b/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py
@@ -3268,19 +3268,25 @@ class WebRTCPeerSession:
def _indexing_status(self) -> dict:
"""
- {"scanning": bool, "scanned_bytes": int, "total_bytes": int} for the
- handshake ack and INDEX_PROGRESS pushes — never a path or filename,
- that stays local to the operator's own admin UI. Absent "progress"
- (context not loaded, or a group with no indexer at all) reads as
- idle rather than erroring.
+ The counters of `_push_index_progress` (daemon.py), for the handshake
+ ack — never a path, a filename or a root name, which stay local to the
+ operator's own admin UI. Absent "progress" (context not loaded, or a
+ group with no indexer at all) reads as idle rather than erroring.
"""
progress = self._group_ctx().get("progress")
if progress is None:
- return {"scanning": False, "scanned_bytes": 0, "total_bytes": 0}
+ return {"scanning": False, "scanned_bytes": 0, "total_bytes": 0,
+ "files_done": 0, "files_total": 0, "kind": "",
+ "root_pos": -1, "queued": 0}
return {
"scanning": progress.scanning,
"scanned_bytes": progress.scanned_bytes,
"total_bytes": progress.total_bytes,
+ "files_done": progress.files_done,
+ "files_total": progress.files_total,
+ "kind": progress.kind,
+ "root_pos": progress.root_pos,
+ "queued": len(progress.queued),
}
# ── Transfer slots ───────────────────────────────────────────────────────