aboutsummaryrefslogtreecommitdiffstats
path: root/docs/MESHBAY_NODE_PROTOCOL.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/MESHBAY_NODE_PROTOCOL.md')
-rw-r--r--docs/MESHBAY_NODE_PROTOCOL.md21
1 files changed, 15 insertions, 6 deletions
diff --git a/docs/MESHBAY_NODE_PROTOCOL.md b/docs/MESHBAY_NODE_PROTOCOL.md
index 994c908..207d640 100644
--- a/docs/MESHBAY_NODE_PROTOCOL.md
+++ b/docs/MESHBAY_NODE_PROTOCOL.md
@@ -1168,6 +1168,7 @@ broadcast, every connected peer in the group learns the change without reconnect
| `musicbrainz_enabled` | `enabled` | operator | `musicbrainz_enabled_ack{enabled}` | yes |
| `root_remove` | the root name | operator | `root_remove_ack` | no |
| `root_eject`, `root_plug` | the root name | operator | `root_eject_ack` / `root_plug_ack` | yes |
+| `root_pause`, `root_resume` | the root name | operator | `root_pause_ack` / `root_resume_ack` | yes |
| `app_directories` | `<app>:<dir>,<dir>,...` | operator | `app_directories_ack{app, dirs}` | yes |
| `chat_directory` | the path | operator | `chat_directory_ack{path}` | yes |
| `chat_link_preview` | `on\|off` | operator | `chat_link_preview_ack{enabled}` | yes |
@@ -1189,7 +1190,8 @@ proves that the operator's key signed, not that the operator meant it: in a brow
that key is driven by code the hub serves (T3), and in the desktop application by a
renderer that parses content from nodes. Either could have shared any folder on the
operator's machine, writable, from anywhere. What is left here narrows (`root_remove`,
-`root_eject`) or restores what the operator already shared (`root_plug`). The
+`root_eject`, `root_pause`) or restores what the operator already shared (`root_plug`,
+`root_resume`). The
operator still sees the table from any browser: it rides in `index_sync` and
`index_delta`, which is also how a change made on the node's machine reaches every
open page.
@@ -1327,11 +1329,13 @@ folder just created, or one emptied, does not exist as far as the UI is concerne
a member cannot tell "the drive is unplugged" from "it is all still there" — an
unavailable root is listed, with its content frozen rather than hidden.
-Each root is described as `{name, kind, available, writable, removable, ejected}` — and
-never a path: a member is told what exists and whether it is readable, never where on
-the operator's disk it lives. `roots` rides on `index_delta` as well as `index_sync`,
+Each root is described as `{name, kind, available, writable, removable, ejected,
+paused}` — and never a path: a member is told what exists and whether it is readable,
+never where on the operator's disk it lives. `paused` is the operator having stopped
+the root's indexing: its files are served as before, and nothing new is indexed until
+it is resumed. `roots` rides on `index_delta` as well as `index_sync`,
because a full index is only ever sent on request: without it, a root added, removed,
-ejected or plugged would leave every connected client's directory table stale until
+ejected, plugged or paused would leave every connected client's directory table stale until
somebody reloaded the page, and the delta that tells them something changed would be the
one message unable to say what.
@@ -2138,6 +2142,7 @@ it back (§3.5).
| `chat_link_preview` / `_ack` | C→N / N⇒C | signed | whether the node unfurls posted links |
| `search_listed` / `_ack` | C→N / N⇒C | signed | whether members' cross-group Search lists this group |
| `root_eject` / `_ack`, `root_plug` / `_ack` | C→N / N⇒C | signed | take a removable root offline, put it back |
+| `root_pause` / `_ack`, `root_resume` / `_ack` | C→N / N⇒C | signed | stop a root's indexing, start it again from where it stopped (6.2) |
| `apps_enabled` / `_ack` | C→N / N⇒C | signed | which group apps are shown |
| `set_scan_settings` / `_ack` | C→N / N⇒C | signed | reconcile interval and debounce |
| `tmdb_config` / `_ack` | C→N / N⇒C | signed | node-wide TMDB token and language |
@@ -2182,7 +2187,7 @@ message:
## 13. Versioning and compatibility
-MNP versions independently of the package version. Current: **`6.1`**; oldest peer
+MNP versions independently of the package version. Current: **`6.2`**; oldest peer
accepted: **`4.0`**.
4.0 is the floor: a member presents a short-lived node-audience token bound to one node
@@ -2208,6 +2213,10 @@ script in its page either.
6.1 adds the signed `chat_purge` (§10.4), additively: a 6.0 node gives no
answer, as for any unknown type, and nothing else changes.
+6.2 adds the signed `root_pause` and `root_resume` (§10.4) and `paused` on each root of
+the roots table, additively: a 6.1 node gives no answer to either message, and a client
+that ignores `paused` shows a paused root as an ordinary one.
+
The two numbers are separate on purpose. `MNP_VERSION` says what this build speaks;
`MNP_MIN_SUPPORTED` says what it will talk to, and moving the second is a decision about
whether an older peer can still do anything useful: