mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-06 16:08:05 +00:00
* perf(vfs): list directories off the main thread and reuse the repository lookup Opening a folder on a network share (\\wsl.localhost\<distro>\...) is slow because every listing ran on the main thread and walked up to the repository root and ran a repository discovery again. - fs_read_dir runs on the blocking pool. - GitignoreStack::cached keeps the repository root and the repo-level rules for a few seconds. An edit of .git/info/exclude is still seen at once (its mtime and size are checked) and every .gitignore / .ignore is read fresh. Refs #916 * feat(remote): open WSL projects through a WSL transport A folder of a WSL distro (\\wsl.localhost\<distro>\... or \\wsl$\...) now opens as a remote project whose openidea-server runs inside the distro, so the terminal, SDK discovery, run, language servers and git are native Linux. - RemoteTarget (ssh | wsl) replaces the SSH configuration id in the remote launch, connection, session and recents; old recents are read as SSH and a WSL target never inherits the legacy trust migration. - remote_wsl: probe the distro, stream the server into ~/.openidea/server and start it with `wsl.exe -d <distro> --exec <bin> --stdio`. Distro names are validated and every command goes through --exec with positional arguments. - wsl_distros / wsl_resolve commands; File > Open, the CLI and recents route WSL folders to the distro and focus the window that already has them. - Remote Development dialog: SSH/WSL choice with the detected distros; the status bar shows `WSL: <distro>` / `SSH: <host>`. - ide-jsonrpc: skip the NUL left at the start of a line by UTF-16 output of wsl.exe, which made the first message of the server disappear. Not run on Windows yet: only a stand-in for wsl.exe is tested. Refs #925, #327, #721 * fix(remote): satisfy clippy in WSL output decoding * style(run): format run types * fix: regenerate bindings and drop untranslated WSL catalog entry * test(i18n): list WSL as an untranslated product name * fix(run): pick build wrappers and shell quoting by the execution host A remote window runs commands on its Linux or macOS server, so a Windows desktop no longer selects gradlew.bat, mvnw.cmd or Windows quoting for it. * fix(welcome): open legacy WSL UNC recents and sessions through the distro Recents and the restored session called the local openProject for a \\wsl.localhost folder saved before WSL projects, which fails with OS error 123. They now resolve it like the other entry points. * fix(windows): keep WSL files out of remote project launches path_launch tested the WSL share before is_dir, so a first-instance CLI launch with a WSL file opened a remote project instead of LightEdit. * fix(remote): run-command OS comes from the remote host, not an assumption The server's OS was dropped after connect, so a restored session had none and isWindows() assumed every remote host is Unix. Keep it on the connection and the session, and resolve it through hostOs(). --------- Co-authored-by: NguyenBang <nguyenbang@NTBANG.local> Co-authored-by: NguyenBang <nguyenbang@Mac.lan> Co-authored-by: l0ng-ai <24760907+l0ng-ai@users.noreply.github.com>
102 lines
3.3 KiB
TOML
102 lines
3.3 KiB
TOML
[package]
|
|
name = "openidea"
|
|
description = "OpenIDEA desktop shell: an open-source IDE inspired by IntelliJ IDEA"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
|
|
[lib]
|
|
name = "openidea_lib"
|
|
crate-type = ["staticlib", "cdylib", "rlib"]
|
|
|
|
[build-dependencies]
|
|
tauri-build = { version = "2", features = [] }
|
|
dunce.workspace = true
|
|
|
|
[dependencies]
|
|
tauri = { version = "2", features = [] }
|
|
tauri-plugin-opener = "2"
|
|
tauri-plugin-dialog = { version = "2", default-features = false, features = ["xdg-portal"] }
|
|
tauri-plugin-mcp-bridge = "0.13"
|
|
tauri-plugin-window-state = "2"
|
|
tauri-plugin-single-instance = "2"
|
|
tauri-plugin-updater = "2"
|
|
tracing-appender = "0.2"
|
|
tauri-specta = { version = "=2.0.0-rc.25", features = ["derive", "typescript"] }
|
|
specta-typescript.workspace = true
|
|
specta.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
base64.workspace = true
|
|
percent-encoding = "2"
|
|
tokio.workspace = true
|
|
parking_lot.workspace = true
|
|
blake3.workspace = true
|
|
tracing.workspace = true
|
|
tracing-subscriber.workspace = true
|
|
dirs.workspace = true
|
|
|
|
ide-core.workspace = true
|
|
dunce.workspace = true
|
|
ide-clipboard.workspace = true
|
|
ide-fonts.workspace = true
|
|
ide-text.workspace = true
|
|
ide-vfs.workspace = true
|
|
ide-workspace.workspace = true
|
|
ide-language.workspace = true
|
|
ide-index.workspace = true
|
|
ide-syntax.workspace = true
|
|
ide-search.workspace = true
|
|
ide-lsp.workspace = true
|
|
ide-dap.workspace = true
|
|
ide-vcs.workspace = true
|
|
ide-terminal.workspace = true
|
|
ide-run.workspace = true
|
|
ide-sdk.workspace = true
|
|
ide-build.workspace = true
|
|
ide-analysis.workspace = true
|
|
ide-coverage.workspace = true
|
|
ide-profiler.workspace = true
|
|
ide-http.workspace = true
|
|
ide-agent.workspace = true
|
|
ide-db.workspace = true
|
|
ide-web.workspace = true
|
|
ide-spell.workspace = true
|
|
ide-ssh.workspace = true
|
|
ide-remote.workspace = true
|
|
ide-host.workspace = true
|
|
ide-notebook.workspace = true
|
|
ide-jsonrpc.workspace = true
|
|
ide-tools = { path = "../crates/ide-tools" }
|
|
ide-plugin = { path = "../crates/ide-plugin" }
|
|
ide-extension = { path = "../crates/ide-extension" }
|
|
ide-docker = { path = "../crates/ide-docker" }
|
|
ide-android = { path = "../crates/ide-android" }
|
|
ide-github = { path = "../crates/ide-github" }
|
|
|
|
[dev-dependencies]
|
|
tempfile.workspace = true
|
|
|
|
[target.'cfg(target_os = "macos")'.dependencies]
|
|
block2 = "0.6"
|
|
# Plugin secrets in the login keychain.
|
|
security-framework = "3.7"
|
|
objc2 = "0.6"
|
|
objc2-app-kit = { version = "0.3", default-features = false, features = ["std", "NSApplication", "NSButton", "NSEvent", "NSResponder", "NSScreen", "NSView", "NSWindow"] }
|
|
objc2-core-foundation = { version = "0.3", default-features = false, features = ["std", "block2", "CFRunLoop"] }
|
|
objc2-foundation = { version = "0.3", default-features = false, features = ["std", "block2", "NSNotification", "NSOperation", "NSString"] }
|
|
# Used only by the debug font-restriction override; Cargo dependency cfg cannot test debug_assertions.
|
|
objc2-web-kit = { version = "0.3", default-features = false, features = ["std", "WKWebViewConfiguration", "WKPreferences"] }
|
|
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
# Wayland detection and the client size without GTK's CSD shadow (linux_window_state.rs).
|
|
gtk = "0.18"
|
|
|
|
[target.'cfg(windows)'.dependencies]
|
|
windows-sys = { version = "0.61", features = [
|
|
"Win32_Foundation",
|
|
"Win32_Graphics_Gdi",
|
|
"Win32_UI_Shell",
|
|
"Win32_UI_WindowsAndMessaging",
|
|
] }
|