Session-bound sidebar FS + UI chrome polish - #36
Merged
Merged
Conversation
Sidebar /ls /read /write /fs now take sessionId (or a mirror local path) and use the same mirror binding as rw_* tools, so two conversations on different hosts no longer share the active-machine pool. Picker requests without a session hint keep the current-machine pool. Also: SFTP range reads for oversized previews, higher sync caps with an explicit TRUNCATED signal, POSIX rg/grep search fallback, extract SshPool and FS routes out of index.js, and align README.zh / PUBLISH.md / tool counts. Co-authored-by: 兰州小红鸡 <flyphp@outlook.com>
flymysql
marked this pull request as ready for review
September 17, 2026 03:25
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.
Side-bar
/ls,/read,/write, and/fsused the active-machine SSH pool.rw_*tools were already session-bound (issue #25). Two Desktop/Web conversations on different hosts could therefore list/edit the wrong machine even when resource URLs were session-scoped.Session binding (0.8.19)
sessionId/local=through the same mirror binding asrw_*. Local (non-mirror) sessions get 403 instead of falling back.sessionIdand uses the current machine.sessionId; saves sendexpectedMtime./readuses SFTPreadPartial(no whole-filefastGetto a pid temp path).TRUNCATED. POSIXrw_searchtriesrgthengrep -R.lib/pool.js,lib/routes-fs.js,lib/remote-fs.js; document 20 tools in README.zh / package.json / PUBLISH.md.UI / operation polish (0.8.20)
Settings, workspace picker, remote explorer, and file tab:
.dsh-rw-*); primary CTAs for save / set-current / set-workspace.window.prompt); context menu follows light/dark.#e4e4e7); unsaved badge; Ctrl/⌘+S save, Esc cancel; 409 errors stay as a banner so the draft is not replaced.--dsw-alias-interactive-bg-hover: measured against a live harness, that token is a 6% tint that disappears on the settings surface. Primary-button hover usesopacity, because the harness's primary fill is near-black in light theme andbrightness()produces no visible change.Verification
npm test— 128 passing (session-fs, desktop-fs, remote-fs, i18n key parity), plusnode check.mjs.Installed the packed 0.8.20 tarball into a separate DSH web instance (isolated
DSH_HOME, port 7391) and exercised it in a browser: plugin routes answer 200 (/dsh-remote/machines,/status,/update-checkreportscurrent 0.8.20), the settings section renders with pills and collapsible panels, row hover is visible, and the picker's segmented tabs plus Enter/Esc/Ctrl+Enter behave. No console errors beyond the expected SSH failures (no reachable SSH host in the sandbox).Remote workspace settings with status pills and collapsible sections
Workspace picker with segmented Local/Remote tabs and keyboard hint
Official Desktop GUI remains experimental; the multi-machine backend blocker for sidebar file ops is fixed.
To show artifacts inline, enable in settings.