дзеркало
https://github.com/l0ng-ai/openidea.git
синхронізовано 2026-11-09 19:25:54 +02:00
feat(remote): reopen a local project in its dev container (#1843)
Refs #1083 (step B). A local project with a devcontainer.json can be reopened in its dev container (File › Reopen in Container, Find Action): the Dev Containers CLI brings the container up and the window connects to openidea-server inside it, as for WSL, so terminal, language servers, run, debug and git work in the container. The project's identity stays the local folder, so reopening from Recent Projects finds the same container. Missing CLI gives install guidance; trust of the local project carries over. Pure CLI output parsing lives in ide-remote; a failed connection no longer closes the current backend early, saved locations keep the container configuration, and Docker context precedence follows the CLI. Co-authored-by: andreabasile <[email protected]>
Цей коміт міститься в:
1 джерело
7479b7ad9d
коміт
60d7dcdca0
29 files changed
+908
-69
No files matched your search
+16
-6
@@ -1328,8 +1328,9 @@ export const commands = {
|
||||
/** Browse before connecting, using the desktop's SSH configuration even in a remote window. */
|
||||
remoteBootstrapList: (ssh: string, path: string) => typedError<RemoteEntry[], IdeError>(__TAURI_INVOKE("remote_bootstrap_list", { ssh, path })),
|
||||
/**
|
||||
* File › Remote Development: opens `path` on `target` (an SSH host or a WSL distribution)
|
||||
* in this window (installs / starts the server as needed).
|
||||
* File › Remote Development: opens `path` on `target` (an SSH host, a WSL distribution, or a
|
||||
* dev container, whose project folder is the container's own) in this window (installs /
|
||||
* starts the server as needed).
|
||||
*/
|
||||
remoteConnect: (target: RemoteTarget, path: string, onProgress: Channel<RemoteProgress>) => typedError<RemoteProject_Serialize, IdeError>(__TAURI_INVOKE("remote_connect", { target, path, onProgress })),
|
||||
/** The remote session of this window (a settings window: its parent's), if any. */
|
||||
@@ -6663,7 +6664,7 @@ export type RemoteEntry = {
|
||||
permissions: string,
|
||||
};
|
||||
|
||||
/** A project folder on an SSH host or in a WSL distribution. */
|
||||
/** A project folder on an SSH host, in a WSL distribution or in a dev container. */
|
||||
export type RemoteLaunch = {
|
||||
target: RemoteTarget,
|
||||
path: string,
|
||||
@@ -6738,14 +6739,21 @@ export type RemoteSession = {
|
||||
};
|
||||
|
||||
/** Where [`remote_connect`] is (`fraction`: 0..1 of a download / upload). */
|
||||
export type RemoteStage = "connecting" | "checking" | "downloading" | "uploading" | "starting" | "opening";
|
||||
export type RemoteStage = "connecting" |
|
||||
/** `devcontainer up`: building or starting the container. */
|
||||
"container" | "checking" | "downloading" | "uploading" | "starting" | "opening";
|
||||
|
||||
/** Where a remote project lives and how the server there is reached. */
|
||||
export type RemoteTarget =
|
||||
/** The host of SSH configuration `config`. */
|
||||
{ kind: "ssh"; config: string } |
|
||||
/** A WSL distribution on this machine. */
|
||||
{ kind: "wsl"; distro: string };
|
||||
{ kind: "wsl"; distro: string } |
|
||||
/**
|
||||
* The dev container of local folder `folder`, built and started with the Dev Containers CLI;
|
||||
* `config` is its `devcontainer.json`, relative to the folder (empty = the default one).
|
||||
*/
|
||||
{ kind: "devContainer"; folder: string; config: string };
|
||||
|
||||
export type Renamed = {
|
||||
edit: WorkspaceEdit,
|
||||
@@ -7947,7 +7955,9 @@ export type ToolInfo = {
|
||||
|
||||
export type ToolKind = "languageServer" | "debugger" |
|
||||
/** Loaded into another tool's process, e.g. a jdtls agent. */
|
||||
"plugin" | "formatter";
|
||||
"plugin" | "formatter" |
|
||||
/** A command the IDE itself runs, e.g. the Dev Containers CLI. */
|
||||
"cli";
|
||||
|
||||
export type ToolSettings = {
|
||||
/** Executable to launch instead of the managed / `PATH` one; empty = auto-detect. */
|
||||
|
||||
Reference in new issue
Заблокувати користувача