Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prompt to open a folder after connecting to a SSH host #511

Closed
Chuxel opened this issue May 29, 2019 · 45 comments
Closed

Prompt to open a folder after connecting to a SSH host #511

Chuxel opened this issue May 29, 2019 · 45 comments
Labels
feature-request Request for new features or functionality *out-of-scope Posted issue is not in scope of VS Code ssh Issue in vscode-remote SSH

Comments

@Chuxel
Copy link
Member

Chuxel commented May 29, 2019

Currently when you connect to a SSH host, you land in an empty window. From here you can then open a folder or open a workspace on the remote host.

While this makes sense in principal, in talking with @chrisdias and seeing a few people do it for the first time, it's not immediately obvious what to do next. This creates a rough on-boarding experience for new users.

I'd propose we instead:

  1. Connect as we do now
  2. Once the connection is complete, trigger "Open Folder" on the remote host
  3. If developers do not want to open a folder, they can then hit "ESC" and do something else instead.

Once you've initially opened a folder or workspace, you can access it again via the SSH explorer, so optimizing for the first time experience seems to make sense here.

//cc: @chrisdias @roblourens @kieferrm

@Chuxel Chuxel added ssh Issue in vscode-remote SSH feature-request Request for new features or functionality labels May 29, 2019
@roblourens
Copy link
Member

We talked about this initially but currently we don't have a way to pass some parameters through to the new window. It could be encoded in the remote authority but I don't think that's the right place for it.

@aeschli
Copy link
Contributor

aeschli commented May 29, 2019

If developers do not want to open a folder, they can then hit "ESC" and do something else instead.

The ESC is a problem, it will confuse. I guess we could have a dialog that lets you select files, folders or workspaces.

@Chuxel
Copy link
Member Author

Chuxel commented May 30, 2019

@roblourens, Given the effort, @aeschli brought up a good point here that we could consider as a starting point to help orient people.

The empty window first also solves some issues for us. One issue is that we have 3 different artifacts you can open: files/folders and workspaces, with 3 (MacOs: 2) different commands and keyboard shortcuts.
I suggest we make the empty window experience better, e.g. by showing a welcome page with prominent open buttons.

This welcome page could also include other features people may not be aware of like port forwarding in the SSH case given we can hyperlink commands. So it isn't annoying, we would show the welcome page the first time you get a new window for a given connection type - any SSH host or WSL, but in the SSH case we probably wouldn't need to do it for every time you connected to a new host.

We could potentially do this for containers as well, but you end up opening a folder to get the config, so it is probably less critical there. You very much open with intent in that case -- even in the remote docker case. There's also a proposed Open Workspace in Container command to address that gap (#387).

@kieferrm
Copy link
Member

Extensions don't have a way to contribute to the welcome page today we either need to open this up or we open a custom welcome page the same way other extensions have done. If open folder is the key problem, we can for example always show the file explorer on first connect to a remote host with an empty window. There we have a big Open Folder button.

@Chuxel
Copy link
Member Author

Chuxel commented May 31, 2019

@kieferrm Hmmm. That might help -- but I think the main problem is it looks like your local empty window, so it's not obvious that the connection actually worked unless you know where to look. Pointing to what should be done next would resolve that... we could fall back on a one time notification, but we know that UX is getting to be overused. A one time custom page might be more useful.

@isidorn
Copy link

isidorn commented Jun 6, 2019

+1 on @Chuxel first post. I basically wrote this in another issue:

This empty VSCode window does provide any useful functionality and we want to get the user as soon as possible out of this. The only thing that the user can get out of this is that he is happily connected to remote.

I propose that once the connection is made that we automatically show a quick open dialog and offer the user to choose a remote folder to open.
I understand this is not the pattern that we commonly use, however we already have some multi step quick open actions for remote, the only difference here is that one of the steps is opening a new window.

This opening of a dialog should only be done after the user invoked the "Connect to a Host" action, not every time he is in an empty window on remote.

The alternative would be to make sure the explorer is opened, and we could tune the empty explorer text. To change the wording that it is clear the the user is opening a folder on the remote.

I simply prefer the first approach since I believe it is more straight forward to the user and we skip this state where the user can no do anything useful.

@isidorn
Copy link

isidorn commented Jun 6, 2019

To @aeschli point since we use a custom dialog we could support that the user can select anything just like on the mac.
As for the techinical difficualty of opening this remote dialog on a new window. We could support some new parameters or there might be something we could already use @bpasero

@bpasero
Copy link
Member

bpasero commented Jun 6, 2019

There is currently no parameter to my knowledge that opens a new window and then opens a remote file dialog.

@kieferrm
Copy link
Member

kieferrm commented Jun 7, 2019

The challenge we have in Remote is the same we had in the local case and we mitigated/solved by introducing the welcome page. In the Remote case we also supports editing individual files or opening folders. Therefore, opening a modal dialog on top of a new window to hint the user at what they could do next is not a great idea. We could

  • show prominently in the welcome page that this window is connected to a remote context (but it's unclear what to do with sections like Recent as those are all local when you use Remote for the first time
  • open the file explorer by default (with a clear indication about the remote context).

@isidorn
Copy link

isidorn commented Jun 12, 2019

@kieferrm I can look into opening the explorer by default and polishing the message there if you think that is best?

@isidorn
Copy link

isidorn commented Jun 21, 2019

@kieferrm @roblourens I tried the SSH, and have a couple of questisons / feedback

  1. SSH: connect to host does not remember my previous folder, it always enters a no folder vscode. Is it possible that this action remembers the last active folder in that SSH connection? This way the user would not end up in the empty folder experience this often
  2. If we decide that showing explorer is the best way is it possible for the ssh extension to simply execute the following command once the connection is established workbench.view.explorer
  3. I could polish the empty explorer text for this case from 'You have not yet opened a folder' -> 'You are connected to an SSH remote, please open a folder'. Suggestions on wording welcome

Unrelated to that I am still not convinced that automatically opening quick open is not the best way to go here. As for Kai's argument that users can still edit individual files and open folders -> for both those activites they need the quick open first. As far as I understand the quick open supports opening both. I am simply not aware of any action a user can do that does not require first to use quick open.

Let me know what you think

@kieferrm
Copy link
Member

@isidorn

About 1) This is an interesting idea. We'd then miss an action to open a new empty window on a SSH box since "New Window" opens a local window. So, we can't simply change the behavior here without impacting other areas.

About 2) Sounds good. Need to find a good trigger for calling the action.

About 3) How about: "Connected to ${host} via SSH". The "Open Folder" button would still be right below, so I think we can omit the call to open a folder in the text.

@isidorn
Copy link

isidorn commented Jun 24, 2019

  1. I think changing the behavior of that action is fine. We are changing it for the better imho and I do not see a use case we would break. The user can still exectue that action and Close Folder to get into the empty. You can also introduce a new action which would only be in the command palette and not in any prominent place. I would call it Connect to Host with Empty Workspace.... Also I would introduce this action only if we see users complaining
  2. Cool. Let me know if you would like me to provide a PR
  3. Sounds good, I can change this today since it is a good change unrelated to 1) and 2). The only questionable part of the message is via SSH, since that is specific for only 1 extension. I think a cleaner way would be to have something in common for all remote extensions. I'll check this in the afternoon

@kieferrm
Copy link
Member

I made the following experimental change in the SSH extension: If the workbench is empty and no welcome page is shown then reveal the explorer and open the terminal.

@isidorn
Copy link

isidorn commented Jun 24, 2019

I have pushed the changes to the empty view in the explorer.
So let's see how this behaves. The text has no "ssh" hacks, it simply says Connected to ${host label}, the same host label which is shown in the status bar. This solution is nice since it works for all remote cases. In case the remote is not yet connected it simply says "Connecting..."

I would also suggest changing 1), though leaving that up to @kieferrm
Let me know if I can help more.

hello

@egamma
Copy link
Member

egamma commented Jun 24, 2019

About 3) How about: "Connected to ${host} via SSH".

👍 but let's keep in mind that the message should also be tuned for the other authorities WSL, Containers, but also consider contributed ones (e.g. Cloud Envs).

@isidorn
Copy link

isidorn commented Jun 24, 2019

@egamma yes, my solution covers all those cases.

@Chuxel
Copy link
Member Author

Chuxel commented Jun 24, 2019

Yeah the early results from the interviews with full-time SSH users @bowdenk7 has been driving have indicated a 50/50 split between whether they were confused at first when they hit this or not. It was never considered a big problem, however, as they all figured it out - but each were very experienced SSH users. They also all were opening a folder when they first tried out the SSH extension (not a file or VS Code work space). The unprompted suggestion was usually to go right to open folder as a result. On the containers side, we need more data, but the open folder behavior it has seemed to meet with expectations.

That said, we can get a bit more insight from part-time users to understand how confusing/painful this actually is for them. Pain was low for full-timers. What is described here seems like a good first step to me -- we can compare the full-time feedback to part-time users as we talk with more of them formally this week and decide if we need to do more.

kiku-jw added a commit to kiku-jw/vscode that referenced this issue Jun 26, 2019
* beautify macos keyboard layout label

* Open folders and workspaces in new windows

* Basic file opening via Open File command

* Update auto detect layout info.

* Respect openFoldersInNewWindow setting for folders/workspaces

* Make openWindow function resolve at right time

* keyboard layout status bar item tooltip

* Move workspace menu and action to fileActions.contribution

* Add clarifying comment on instance service request events

* Fullscreen change event.

* Remove unneeded margin on settings editor scrollbar
Fix microsoft#75724

* fix: microsoft#72626

* Remove extra register of automatic tasks

Fixes microsoft#75758

* remove trailing '/' from repo url for baseFolderName

* handle style-attribute modifications, cache requests in addition to results, microsoft#75061

* fix microsoft#75818

* fix bad tree guide indentation

* remove TODO

* update eslint

* update distro

fixes microsoft#73872

* Revert "Revert "Merge pull request microsoft#75695 from orange4glace/master""

This reverts commit a05e05c.

* Revert "Revert "explorero: file actions disablment no longer needed""

This reverts commit b634152.

* more code insets API tweaks, microsoft#66418

* Alpine build

* Update distro hash

* Remove duplicate cp

* shellscript: Add folding markers

* fixes microsoft#75829

* show setting on windows only

* add ExtensionKind and remoteName propsed APIs, microsoft#74188

* debt - use file service based configuration file service

* fix tests

* debt create configuration file service inside configuration service

* First cut of file service based user data service

* Use user data service for reading settings

* Update distro hash

* add diagnostic tool for git file event issues

* 💄

* Update distro hash

* introduce VSCODE_STEP_ON_IT

* remove env scripts

fixes microsoft#74792

* Update xterm.css

Fixes microsoft#75827

* check if file exists

* remove alert, aria-live will read the content even with no focus

fixes microsoft#41356

* win code.sh fix

* 🧀 Fix microsoft#75831

* Add proposed api check for shell API

Part of microsoft#75091

* launch ext host window internally

* EH debugging: support multiple files and folders

* Update distro

* xterm@3.15.0-beta50

Diff: xtermjs/xterm.js@846a189...96eafd3

Changes:

- Publish improvements
- Layering/strict updates

* Fire onDidChangeMaximumDimension when dimensions are set

Fixes microsoft#73496

* Fix potential race

* Delete cached service worker entries after a short timeout

* Fix webview developer command not being registered

* Re-queue canceled geterr requests before remaining buffers

We should give higher priority to files that have previously had geterr triggered on them but did not have their request completed

* Remove log uploader

Fixes microsoft#75748

* Use localized name for macOS keyboard layout

* fixes microsoft#75856

* User keyboard layout

* simplify common keymap layer

* load user keyboard layout after initialization

* US Standard keyboard info

* better score for layout

* fast return keyboard layout if 48-keymap matches

* a single keyboard event can be a keymap

* switch to user selected keyboard layout

* Have `.get` return promise directly

* Make sure we wait until service worker is ready before creating content

* Add version check to service worker

Try to make sure our page is talking to the expected version of the service worker

* Don't use clone as much

* Move host javascript to own file

* Update distro

* Remove icon explorations before shipping stable

* Move listener to window service.

* Minimap: Render find match decorations, fixes microsoft#75216

* Fix `navigator.serviceWorker.ready` is a Promise, not a function

* Use update instead of manually tring to re-register

* Extract ITypeScript server interface

* extract server error to own file

* Extract server spanwer to own file

* Renames

* Move getQueueingType into class

* Add experimental dual TS server

Fixes microsoft#75866

* Enable "typescript.experimental.useSeparateSyntaxServer" for VS Code workspace

* Remove trailing comma

* Include server id in TS server errors

* Make execute command a configuration object

* Also include format in the syntax commands

* Fix method name

* Renames

* Better encapsulate logic of spawning different server kinds

* some fixes for mac web

* New test runner API for microsoft#74555

* update doc, microsoft#74188

* build: release only iff all builds succeed, introduce VSCODE_RELEASE env

* first version of vscode.workspace.fs

* 💄

* Tasks registration + the local ext host now has an autority

Part of microsoft/vscode-remote-release#757

* Add platform override to getDefaultShellAndArgs in terminal

Part of microsoft/vscode-remote-release#757

* Ensure no trailing path separtor on URIs from file picker

Part of microsoft#75847

* data tree view state should store scrollTop, microsoft#74410

* fix microsoft#75564

* Change promise structure of creating terminal in tasks

Potential fix for microsoft#75774

* do not allow additionalProperties

microsoft#75887

* explorer: roots forget children on new file system provider registration

microsoft#75720

* Update max tokenization limit without reload

* Use interfaces for keyboard layout registration

* Separate keyboard layout loading logic for testing

* Test browser keymapper

* unused standard keyboard event.

* Make sure we dismiss the zoom status bar entry when switching editors

* Reduce state

* Added strictly typed telemetry function (microsoft#75915)

* Added strictly typed telemetry function

* cleanup publicLog2 signature

* Extract port mapping helper function

* Re-use extractLocalHostUriMetaDataForPortMapping for openUri

* Also map 127.0.0.1 in webviews and forward it for openExternal

Fixes microsoft/vscode-remote-release#108

* use empty model when content is empty

* 💄

* Update keyboard layout file comments

* Delete breadcrumbs.filterOnType unused setting. Fixes microsoft#75969

* Add quick open/input color registrations (fixes microsoft#65153)

* Update API

* implements ExtHostEditorInsetsShape

* use divs for tree indent guides

fixes microsoft#75779

* comment out more (for microsoft#74898)

* Quick Open > Quick Input (microsoft#65153)

* build - enable language server tests again (for microsoft#74898)

* use polish for wsl1

* move extension kind to Extension-interface

* init log level of remote log service

* Open/Save local commands should not show in the command palette

Fixes microsoft#75737

* chockidar: use polling

* fix build conditions

* xterm fixes for cglicenses

* oss 1.36.0

* workaround for microsoft#75830

* update distro commit

* electron - still call setBounds() as workaround for first window

* fixes microsoft#75753

* node-debug@1.35.3

* remove user data service

* use posix.join

* update doc

* Add -1 tab index to status bar entries

This keeps them out of the tab order, but allows them to be read with a screen reader

Fixes microsoft#41406

* empty view polish labels for remote case

microsoft/vscode-remote-release#511

* send remote watcher error to file service (fixes microsoft/vscode-remote-release#329)

* update distro

* better error handling in case of loader error in tests

* fix win 32 bits unit tests

* electron@4.2.5 (microsoft#76020)

* Code-insiders started from WSL doesn't return to console/ doesn't connect. Fixes microsoft/vscode-remote-release#780

* Group decorations by line before rendering

* disable support for simple fullscreen (microsoft#75054)

* telemetry - add window.nativeFullScreen

* move API to stable,  microsoft#74188

* build - add and use --disable-inspect for integration tests (microsoft#74898)

* 💄

* bump distro

* Report workspace stats in shared process

* Make return undefined explicit

* Add missing return

* Use explicit window.createWebviewManager

* gdpr comments

* webkit fullscreen detection

* Fix file name spelling

* update distro

* add logging

* disabling installing extension from gallery when not enabled

* status.workbench.keyboardLayout

* Move Inspect Keyboard Layout JSON to workbench

* return local extension after install

* install deps and packs while installing from gallery

* Fix default shell selector outside of Windows

Fixes microsoft#76040

* Add explicit win32 gheck for using user specific temp folder

* Always use settings UI when querying online services, fixes microsoft#75542

* Disable conpty in terminal when accessibility mode is on

Fixes microsoft#76043

* Move the webviewResourceRoot property to be set on each webview instead of as a global property

For microsoft#72155

This allows  us to potentially change the resource root per webview

* Make RelativeWorkspacePathResolver  a static class

* Use openExternal

* Auto restart when changing  typescript.experimental.useSeparateSyntaxServer

* Fix regular expression for rewriting iframe webview html replacing quotes

* Telemetry Command (microsoft#76029)

* Added telemetry command

* Initial Build support

* Added build logic for telemetry

* Linux Builds

* Windows builds sort of work

* Remove arm telemetry extraction

* Remove alpine telemetry extraction

* Remove accidental s

* More try catch

* Use full resource uri for transforming webview resources

This ensures we still work even if there is no base uri set

* Use outerHtml to make sure we write `<html>` element from extensions too

* Use a regexp that works across browsers

* Implement reload on iframe based webview Elements

* fix various nls issues

* 💄

* add debug output (microsoft#76024)

* Fix tasks platform for quoting

Fixes microsoft#75774

* fix hockeyapp symbols and report errors (fix microsoft#76024)

* update distro

* fix bad watch

* update distro

* Fix drive letter casing on typescript tasks

Occurs when opening by double clicking on workspace file. Fixes microsoft#75084

* update distro

* update distro

* Test remoteName and extensionKind (for microsoft#76028)

* MainThreadFileSystem does not await

* Fix microsoft#76096

* Rename runInBackground to hideFromUser

See microsoft#75278

* Update distro

* Fix minimap decoration rendering on horizontal scroll, fixes microsoft#76128

* Handle windows paths correctly when loading webvie resources

* Fix standard link handler for iframe based webviews

* Mark extensions.all as readonly

This iteration, we marked a few other arrays as readonly. We should do the same for extensions.all

* Fix microsoft#75927.

* Register mouse down on container dom node.

* Make sure we never cancel a request to just one of the ts servers

Fixes microsoft#76143

* Show document link tooltip first and put click instructions in parens

Fixes microsoft#76077

This change also update our standard link hovers to follow this format

* reset listener once users choose a dedicated keyboard layout

* switch to a new layout only when the score is higher.

* Fix kb unit test

* fix microsoft#76149

* web - document some API

* 💄 workbench API

* disable arm and alpine for stable

fixes microsoft#76159

* Fix extra auto complete on fast delete (microsoft#74675)

Fixes #vscode-remote-release/4

* use yarn --frozen-lockfile for builds

* remove `update.enableWindowsBackgroundUpdates` from online settings

* fix microsoft#76076

* revert the change

* prevent product.json containing gallery

* fix microsoft#76074

* fixes microsoft#54084

* Fix microsoft#76105

* fix microsoft#75904

* workaround for  microsoft#74934
@gordonrust
Copy link

gordonrust commented May 31, 2020

  • SSH: connect to host does not remember my previous folder, it always enters a no folder vscode. Is it possible that this action remembers the last active folder in that SSH connection? This way the user would not end up in the empty folder experience this often
  • If we decide that showing explorer is the best way is it possible for the ssh extension to simply execute the following command once the connection is established workbench.view.explorer

Is there any progress on the suggestions 1 and/or 2 of @isidorn in the comment dated June 21, 2019?
Specifically, my usecase is to land into the previous opened folder once I ssh into a server.
Note : The present setting is such that if I ssh into server A , open folder A_f and close vscode, I would land into A_f the next time I ssh into A only if I had not sshed into another server B .

@altimmons
Copy link

+1 on this. Id like to be able to save a workspace. So that it loads my config. Doing the work I am doing requires freq. restarting of the host, which disconnects me.

In the remote hosts tab- sometimes it shows file targets. But not always. I cant figure out how to add it manually. Further its a very large number of files, I need it to read the ignore list before it loads everything, because that means I have to reload the directory a 3rd time.

Preferred behaviour might be to click a target in the Remote Explorer activity bar, and have it open in the current window.. Is there a way to make it the default behavior- opening in the current window? I see that you can in the dropdown.
But anyway- in the remote explorer under the Hostname, should be a list of files (that can be modified!) and also include workspaces. I dont see the difficulty of running the remote host, and then opening the workspace or folder selected. Not opening to a NULL directory.

@ravensorb
Copy link

Agree on the save workspace idea. It would also be nice if we could set a default folder to start with in the config file

@r0oland
Copy link

r0oland commented Jan 18, 2022

+1 from me, would be great if the remote session either restores the previous folder or opens up a default folder based on the config, etc home folder.

@direnc
Copy link

direnc commented Apr 19, 2022

+1 for saving workspace.
I also wonder if it is not possible to add some commands to the config file in order to run in the remote server when the connection is established. Like always opening the same folder after connection.

@Thaina
Copy link

Thaina commented Sep 30, 2022

I wish I could also specified first folder in the config

Something like

Host MyLanRemoteLastProj
  HostName 192.168.1.55
  User me
  DefaultPath ~/Projects/MyLastProj

And it will open that folder immediately

@cpagravel
Copy link

+1 to auto-loading the workspace.
+1 to saving a default directory.

First off, this functionality is amazing and invaluable for someone who does any work on servers. This feature is amazing!!

That said, in my experience using VSCode's remote editor functionality, I use VSCode on upwards of 15 different servers. Every time I open the server, I need to click to open a folder to get my workspace back. It would be great to reduce that extra step.

@shijiezhou1
Copy link

I wish I could also specified first folder in the config

Something like

Host MyLanRemoteLastProj
  HostName 192.168.1.55
  User me
  DefaultPath ~/Projects/MyLastProj

And it will open that folder immediately

We would like to see this feature so far no one help on it

@Thaina
Copy link

Thaina commented Nov 25, 2022

There are suggestions to use RemoteCommand variable to cd and so on. Are there any command to focus vscode to target directory from command line though?

https://serverfault.com/a/1045158

Host websites-my-host
    HostName <realhostname>
    IdentityFile ~/.ssh/keyfile
    User webmaster
    RequestTTY force # check if this is necessary
    RemoteCommand cd /var/www/websites && bash -l

@Thaina
Copy link

Thaina commented Nov 25, 2022

It seem there is similar request for RemoteCommand in #6215

@roblourens roblourens added the *out-of-scope Posted issue is not in scope of VS Code label Dec 16, 2022
@vscodenpa
Copy link

This issue is being closed to keep the number of issues in our inbox on a manageable level, we are closing issues that are not going to be addressed in the foreseeable future: We look at the number of votes the issue has received and the number of duplicate issues filed. More details here. If you disagree and feel that this issue is crucial: We are happy to listen and to reconsider.

If you wonder what we are up to, please see our roadmap and issue reporting guidelines.

Thanks for your understanding and happy coding!

@roblourens
Copy link
Member

This hasn't come up in awhile, and I think the Getting Started page with the Open Folder option helps. I think that putting up an Open Folder dialog wouldn't help.

@zs-dima
Copy link

zs-dima commented Dec 17, 2022

RemoteCommand option looks even better.
Open folder dialog could confuse if you want just execute some commands in console

@masteradhoc
Copy link

+1

@yenk4
Copy link

yenk4 commented Mar 5, 2024

still needed

@spfrommer
Copy link

+1

7 similar comments
@youpsla
Copy link

youpsla commented Mar 28, 2024

+1

@smeisegeier
Copy link

+1

@MoreTore
Copy link

MoreTore commented May 3, 2024

+1

@QFlachaire
Copy link

+1

@UNiXMIT
Copy link

UNiXMIT commented Jun 28, 2024

+1

@0xphilipp
Copy link

+1

@Ilyua
Copy link

Ilyua commented Oct 23, 2024

+1

@hendra-jti
Copy link

Image

this folder is created automatically right ? but when i access another server, those folder are not created

@jacasch
Copy link

jacasch commented Nov 20, 2024

+1

It would be super great if we could add a "DefaultDirectory" in the config like this

Host <my_name>
IdentityFile <my_public_key>
HostName <my_host_name>
User <user_name>
DefaultDirectory /home

@altimmons
Copy link

Agree with above. Awkward implementation to land nowhere.

If you cant do the above- Default Directory key, or open folder dialog box, then at least hard code the remote client with a sensible starting place '/' or '.../home/

@akiyamasho
Copy link

+1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature-request Request for new features or functionality *out-of-scope Posted issue is not in scope of VS Code ssh Issue in vscode-remote SSH
Projects
None yet
Development

No branches or pull requests