feat: desktop connect-to-server over SSH tunnel (issue #26, phase 5)

This commit is contained in:
2026-07-15 18:39:04 +02:00
parent a3ca44640c
commit df2bdc2041
18 changed files with 1094 additions and 479 deletions

View File

@@ -108,7 +108,9 @@ defmodule BDS.Desktop.ShellLive do
:quit,
:view_on_github,
:report_issue,
:about
:about,
:connect_server,
:disconnect_server
])
@runtime_menu_actions MapSet.new([
:undo,
@@ -1091,6 +1093,34 @@ defmodule BDS.Desktop.ShellLive do
socket
end
defp handle_socket_menu_action(socket, :connect_server) do
prompt = dgettext("ui", "Server address (user@host or user@host:port), public-key auth:")
with {:ok, target} <- BDS.Desktop.Dialogs.prompt_text(prompt, "user@host"),
{:ok, url} <- BDS.Desktop.RemoteConnection.connect(target) do
Desktop.Window.show(BDS.Desktop.MainWindow.window_id(), url)
socket
else
:cancel ->
socket
{:error, reason} ->
append_output_entry(
socket,
dgettext("ui", "Connect to Server"),
BDS.Desktop.RemoteConnection.format_reason(reason),
nil,
"error"
)
end
end
defp handle_socket_menu_action(socket, :disconnect_server) do
:ok = BDS.Desktop.RemoteConnection.disconnect()
Desktop.Window.show(BDS.Desktop.MainWindow.window_id(), BDS.Desktop.url())
socket
end
defp handle_socket_menu_action(socket, :about) do
append_output_entry(
socket,