Skip to content

Windows floor and ssh bundle fix - #29

Closed
denusklo wants to merge 2 commits into
zenbu-labs:mainfrom
denusklo:windows-port
Closed

denusklo wants to merge 2 commits into
zenbu-labs:mainfrom
denusklo:windows-port

Conversation

@denusklo

@denusklo denusklo commented Sep 4, 2026 •

Copy link
Copy Markdown

This is the tode/terminal-code half of Windows support, paired with terminal-browser#96.

Same reason as the other PR. I'm on Windows and wanted tode working here instead of through WSL.

Same big thing to agree on. The daemon can't reach your terminal on Windows, so this spawns the browser directly in the foreground instead of through the generated shell launcher. Windows can't run shell scripts, and node won't spawn .cmd files without shell:true anymore. Unix keeps using the same launcher script as before, unchanged.

I watched tode --ssh <host> actually connect and draw a remote workbench in a native Windows console. That's the thing this PR makes possible, paired with the browser PR.

What doesn't work is full local tode <path> on Windows, because coder doesn't publish a Windows code-server build and I haven't built one myself. This PR only gets the --ssh path working.

Two commits. Same openness to splitting this up as I said on the browser PR.

denusklo and others added 2 commits September 4, 2026 07:37
None of this makes tode run there yet — opening anything still needs a
code-server, and none is published for windows. What it does is stop the
pieces underneath from being wrong.

Nothing on windows can spawn a shell script, so rather than writing one the
browser is started directly and told through its environment what the script
would have exported. Everything that starts the browser now goes through one
helper, which is also the only place that knows this.

There is no windows build of terminal-browser to download, so instead of
asking for one and unpacking whatever comes back, it says so and names the
setting that points at a build you already have. A tree that is already
here still works.

The rest is right everywhere, not only there: copying a tree is something
node does without borrowing cp, a home directory is something it can find
without reading HOME, and a uri path is separated by forward slashes even
when the file it names was not.

Building the pages set an environment variable the way one shell spells it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PWTMgPSikQHHeSjT6wqxqT
The two scripts that start a session on the far side call a third to make
sure tode is installed there. They called it by name, which asks for an
executable bit that a bundle written on windows cannot have. Asking sh to
read it needs no bit and reads the same everywhere.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PWTMgPSikQHHeSjT6wqxqT
@vercel

vercel Bot commented Sep 4, 2026

Copy link
Copy Markdown

@denusklo is attempting to deploy a commit to the zenbu-labs Team on Vercel.

A member of the Team first needs to authorize it.

@denusklo

denusklo commented Sep 4, 2026 •

Copy link
Copy Markdown
Author

Live validation: the ssh path in this PR ran end to end from native Windows against a real sshd. The runtime resolved through the override, the browser spawned foreground sharing the console, and the sh ./ensure change here is what made the bundle work on the far side. ensure arrives on the remote without an exec bit, since Windows cannot set one, and ran correctly through sh, while start and setup got their bits from the terminal-browser half (zenbu-labs/terminal-browser#96). The workbench rendered in the terminal.

Evidence and the full write-up are in that PR's thread.

@denusklo

denusklo commented Sep 4, 2026

Copy link
Copy Markdown
Author

Superseded by #30, which contains both of these commits plus local code-server mode — one PR for the whole windows story.

@denusklo denusklo closed this Sep 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant