Repository navigation
Switch computers in place and keep work running - #593
Merged
Merged
Conversation
Add ADR-0069: an App Shell installs, starts, and keeps the App Server on a Linux computer over SSH, holds its token, and forwards its loopback endpoint through the SSH connection. Covers version cases with confirmed updates, a keeper client for lifetime, system ssh on Desktop and an embedded client on Android. Add the SSH Computer term to CONTEXT.md.
ADR 0070 records the computer switcher: a compact control at the end of the Settings row once a computer is paired, one row per App Server, connect before switching, a prompt before discarding unsent input, and returning to the last place on each computer. Leaving a computer never stops its work, both App Shells notify for this device's Tasks, and the Desktop switches by reloading its WebView instead of restarting. ADR 0063 points its restart and no-App-Server choices at ADR 0070.
Records the findings behind ADR 0070 and the slices: the shared switcher with one computers capability, the in-place Desktop switch that keeps this computer's App Server, connect-first with place restore, and notifications for this device's Tasks.
Add a compact computer switcher at the end of the sidebar's Settings row (ADR-0070). It appears only once another computer is paired, names the computer in use with a dot for a healthy link, and lists this device first, then computers in the order added. Ctrl/Cmd+Shift+S and macOS File > Switch Computer… open it; 1 to 9 pick a row. Both App Shells now expose one `computers` capability, which Settings, Remote also reads. The Mobile App sends its computer list to every page and accepts switching from any route; every other connection command stays on Settings. The Desktop title-bar computer header is removed. The Desktop still applies a switch by restarting until slice 2.
… Server The Desktop now connects the chosen computer first and reloads the window onto it with a new client instance, instead of restarting. It always starts and holds this computer's App Server, so switching to a paired computer never stops work here. A failed or cancelled attempt leaves the window where it was. A remote gateway can now be stopped, freeing its port and leaving the App Server. The Frontend shares one switch store between the computer switcher and Settings. While a paired computer is in use, a Desktop Update stops this computer's App Server through the native client.
…t place Switching on Android now connects the chosen computer while the one in use stays live, and changes nothing when the connection fails or is cancelled. The phone answers the page before replacing it. The switcher and Settings offer Cancel while a switch is connecting. Before connecting, the Frontend asks when the page holds an unsent draft, a selected attachment, or an upload in progress. Once another computer is paired, each computer's last Task or New Task Project is remembered on the device and reopened when the page opens at the start page. A switch's diagnostics close on the reloaded page under the same operation id.
… in use Desktop: a native watcher holds taskAttention/wait on this computer's App Server as a shell-hold client while a paired computer is in use, and hands each changed list to the window. A second notification manager with its own receipts and notification ids applies the usual rules; a click switches back through the shared switch and the reloaded page opens the Task. Android: the background service also reads the phone's App Server while a paired computer is in use, without starting it, keeps the phone awake only for the phone's working Tasks, and notifies under a separate tag. A tap switches to the phone and opens the Task. Forgetting the computer in use now goes through the connect-first switch and forgets only once switched. Also: the native hold now unwraps the App Server's response envelope, so the local update prepare sees a blocked answer; leaving this computer retries the window detach once; the plan records the draft persistence follow-up.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements ADR-0070 in the four slices of
docs/plans/computer-switcher.md.Changes
taskAttention/waiton this computer's App Server while a paired computer is in use, and a second notification manager with its own receipts shows those Tasks. A click switches back and opens the Task.Verification
feed_endpoint_is_version_and_channel_specific, which already fails on Linux on main).taskAttention/waitheld about 25 s.ready, then commit succeeded.Not verified