summaryrefslogtreecommitdiffstats
path: root/docs/MESHBAY_DESIGN.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/MESHBAY_DESIGN.md')
-rw-r--r--docs/MESHBAY_DESIGN.md12
1 files changed, 12 insertions, 0 deletions
diff --git a/docs/MESHBAY_DESIGN.md b/docs/MESHBAY_DESIGN.md
index 6b48300..2b6d1ac 100644
--- a/docs/MESHBAY_DESIGN.md
+++ b/docs/MESHBAY_DESIGN.md
@@ -1318,6 +1318,18 @@ whether to draw the Upload button and the chat paperclip, and changes are broadc
to everyone connected. None of that is the control: a member on an old tab, or one
speaking MNP directly, is refused by the node.
+**Files can be dropped onto the Files tab**, files and folders alike, under the
+Upload button's rule (a folder on screen, in a writable root, in a group — not in
+Search). A drop is decided whole before anything is sent: **a name already in the
+folder refuses it**, compared without case, because the node's no-overwrite rule
+would otherwise store a colliding file under a free name nobody asked for and
+refuse a colliding folder half-way through; and a name outside the filename
+allowlist refuses it too, from a client copy of the rule that a test holds to the
+node's answers. A folder is rebuilt one `dir_create` at a time, parents first, and
+its files are fed to the transfer store a few at a time so the member's queue
+(§5.5) never reaches its cap. None of this is a control — the node still enforces
+every rule above; it is what keeps a drop from ending in a partial copy.
+
In a group with **no** writable root the interface says so plainly rather than
picking one — a fallback that chooses whatever comes first only moves the failure
to send time, where the person has already chosen the file.