aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/tests/harness
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-09-19 17:13:17 +0200
committerChristophe Besson <cbesson@gmail.com>2026-09-19 17:13:17 +0200
commit2eaf6887295614509f8d0bc24a9b77ccd915ef88 (patch)
treec713fec411770da9250a44f9b1e08c4165c8d439 /packages/meshbay-hub/tests/harness
parentd2495a2c4b89fbbfc18cefec83ae96cabdd745e2 (diff)
downloadmeshbay-2eaf6887295614509f8d0bc24a9b77ccd915ef88.tar.gz
fix(hub): a reconnect re-reads the index, not just the handshake
_reconnectLoop re-did the handshake and nothing else, so a page kept whatever it last saw until someone reloaded it. That is invisible until the node restarts: it rebuilds its index from index_cache.db, which holds no enrichment, and Music is the one app whose enrichment is persisted nowhere โ€” for the length of the re-read pass it serves tracks with no artist, and the album grid drew nothing. onReconnected was one slot the video player took on open and cleared on close; it is a listener set now, and carries the fresh ack. docs/MESHBAY_DESIGN.md ยง15.3 records the two defects found alongside and not fixed here. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-hub/tests/harness')
-rw-r--r--packages/meshbay-hub/tests/harness/group_tab_probe.py4
-rw-r--r--packages/meshbay-hub/tests/harness/music_grid_probe.py3
-rwxr-xr-xpackages/meshbay-hub/tests/harness/music_queue_probe.py3
-rw-r--r--packages/meshbay-hub/tests/harness/playlist_ui_probe.py3
-rwxr-xr-xpackages/meshbay-hub/tests/harness/sticky_header_probe.py3
5 files changed, 16 insertions, 0 deletions
diff --git a/packages/meshbay-hub/tests/harness/group_tab_probe.py b/packages/meshbay-hub/tests/harness/group_tab_probe.py
index 473bcdc..730ba99 100644
--- a/packages/meshbay-hub/tests/harness/group_tab_probe.py
+++ b/packages/meshbay-hub/tests/harness/group_tab_probe.py
@@ -69,6 +69,10 @@ window.MeshBayTransport = class {
async fetchIndex() { return { entries: [], dirs: [], roots: [] }; }
async fetchChatHistory() { return { messages: [], hasMore: false }; }
async fetchLinkPreview() { return { ok: false }; }
+ // GroupPage subscribes to reconnects and drops the subscription on
+ // unmount; a stub without this throws inside connect() and the page
+ // renders its error state instead of a tab bar.
+ addReconnectListener() { return () => {}; }
close() {}
};
</script>
diff --git a/packages/meshbay-hub/tests/harness/music_grid_probe.py b/packages/meshbay-hub/tests/harness/music_grid_probe.py
index 365e028..da73b1f 100644
--- a/packages/meshbay-hub/tests/harness/music_grid_probe.py
+++ b/packages/meshbay-hub/tests/harness/music_grid_probe.py
@@ -78,6 +78,9 @@ window.MeshBayTransport = function () {
},
async fetchChatHistory() { return { messages: [], hasMore: false }; },
async fetchLinkPreview() { return { ok: false }; },
+ // Real, not left to the Proxy below: that would hand back a promise
+ // where an unsubscribe belongs, and the page calls it on unmount.
+ addReconnectListener() { return () => {}; },
close() {},
};
return new Proxy(self, {
diff --git a/packages/meshbay-hub/tests/harness/music_queue_probe.py b/packages/meshbay-hub/tests/harness/music_queue_probe.py
index a9146ce..483c093 100755
--- a/packages/meshbay-hub/tests/harness/music_queue_probe.py
+++ b/packages/meshbay-hub/tests/harness/music_queue_probe.py
@@ -77,6 +77,9 @@ window.MeshBayTransport = function () {
},
async fetchChatHistory() { return { messages: [], hasMore: false }; },
async fetchLinkPreview() { return { ok: false }; },
+ // Real, not left to the Proxy below: that would hand back a promise
+ // where an unsubscribe belongs, and the page calls it on unmount.
+ addReconnectListener() { return () => {}; },
close() {},
};
return new Proxy(self, {
diff --git a/packages/meshbay-hub/tests/harness/playlist_ui_probe.py b/packages/meshbay-hub/tests/harness/playlist_ui_probe.py
index f0fc9c3..2defed9 100644
--- a/packages/meshbay-hub/tests/harness/playlist_ui_probe.py
+++ b/packages/meshbay-hub/tests/harness/playlist_ui_probe.py
@@ -73,6 +73,9 @@ window.MeshBayTransport = function () {
},
async fetchChatHistory() { return { messages: [], hasMore: false }; },
async fetchLinkPreview() { return { ok: false }; },
+ // Real, not left to the Proxy below: that would hand back a promise
+ // where an unsubscribe belongs, and the page calls it on unmount.
+ addReconnectListener() { return () => {}; },
close() {},
};
return new Proxy(self, {
diff --git a/packages/meshbay-hub/tests/harness/sticky_header_probe.py b/packages/meshbay-hub/tests/harness/sticky_header_probe.py
index ee1e61b..6f084d6 100755
--- a/packages/meshbay-hub/tests/harness/sticky_header_probe.py
+++ b/packages/meshbay-hub/tests/harness/sticky_header_probe.py
@@ -238,6 +238,9 @@ window.MeshBayTransport = function () {
},
async fetchChatHistory() { return { messages: [], hasMore: false }; },
async fetchLinkPreview() { return { ok: false }; },
+ // Real, not left to the Proxy below: that would hand back a promise
+ // where an unsubscribe belongs, and the page calls it on unmount.
+ addReconnectListener() { return () => {}; },
close() {},
};
return new Proxy(self, {