From 0b231b7666572aeaf080caa729619408dcff830f Mon Sep 17 00:00:00 2001 From: crschnick Date: Tue, 6 Oct 2026 14:12:39 +0000 Subject: [PATCH] Various small fixes --- .../java/io/xpipe/app/action/ActionUrls.java | 2 +- .../java/io/xpipe/app/fs/WrapperFileSystem.java | 4 ---- .../app/hub/creation/StoreChoicePopover.java | 1 + .../io/xpipe/app/issue/ErrorEventFactory.java | 16 ++++++++++++++++ .../app/terminal/TerminalLauncherManager.java | 2 +- app/src/main/java/io/xpipe/app/util/IniFile.java | 8 -------- .../java/io/xpipe/app/util/SshLocalBridge.java | 1 + .../io/xpipe/app/vnc/RemoteViewerVncClient.java | 2 +- 8 files changed, 21 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/io/xpipe/app/action/ActionUrls.java b/app/src/main/java/io/xpipe/app/action/ActionUrls.java index 7215b313d..4fdc0cce5 100644 --- a/app/src/main/java/io/xpipe/app/action/ActionUrls.java +++ b/app/src/main/java/io/xpipe/app/action/ActionUrls.java @@ -69,7 +69,7 @@ public class ActionUrls { var query = splitQuery(queryString); var id = query.get("id"); - if (id == null || id.size() != 1) { + if (id == null || id.size() != 1 || id.getFirst() == null) { return Optional.empty(); } diff --git a/app/src/main/java/io/xpipe/app/fs/WrapperFileSystem.java b/app/src/main/java/io/xpipe/app/fs/WrapperFileSystem.java index f5b2af886..5c84ded9d 100644 --- a/app/src/main/java/io/xpipe/app/fs/WrapperFileSystem.java +++ b/app/src/main/java/io/xpipe/app/fs/WrapperFileSystem.java @@ -172,10 +172,6 @@ public class WrapperFileSystem implements FileSystem { @Override public boolean requiresReinit() { - if (!runningCheck.get()) { - return false; - } - return fs.requiresReinit(); } diff --git a/app/src/main/java/io/xpipe/app/hub/creation/StoreChoicePopover.java b/app/src/main/java/io/xpipe/app/hub/creation/StoreChoicePopover.java index 7699737b0..cf433cfda 100644 --- a/app/src/main/java/io/xpipe/app/hub/creation/StoreChoicePopover.java +++ b/app/src/main/java/io/xpipe/app/hub/creation/StoreChoicePopover.java @@ -217,6 +217,7 @@ public class StoreChoicePopover { var r = listStack.build(); var content = new VBox(top, r); + content.setSpacing(6); content.setFillWidth(true); content.getStyleClass().add("choice-comp-content"); content.setPrefWidth(480); diff --git a/app/src/main/java/io/xpipe/app/issue/ErrorEventFactory.java b/app/src/main/java/io/xpipe/app/issue/ErrorEventFactory.java index 0b1afeb93..63fbba5b9 100644 --- a/app/src/main/java/io/xpipe/app/issue/ErrorEventFactory.java +++ b/app/src/main/java/io/xpipe/app/issue/ErrorEventFactory.java @@ -84,6 +84,22 @@ public class ErrorEventFactory { return formatThrowableMessage(ite.getCause()); } + if (t instanceof ExceptionInInitializerError eiie && eiie.getCause() != null && eiie.getCause() != t) { + return "Failed to initialize class: " + formatThrowableMessage(eiie.getCause()); + } + + if (t instanceof ClassNotFoundException && t.getMessage() != null) { + return "Class not found: " + t.getMessage(); + } + + if (t instanceof NoClassDefFoundError && t.getMessage() != null) { + if (t.getMessage().startsWith("Could not initialize class")) { + return t.getMessage(); + } + + return "Class definition not found: " + t.getMessage().replace('/', '.'); + } + if (t.getMessage() == null) { return AppI18n.get("errorTypeOccurred", t.getClass().getSimpleName()); } diff --git a/app/src/main/java/io/xpipe/app/terminal/TerminalLauncherManager.java b/app/src/main/java/io/xpipe/app/terminal/TerminalLauncherManager.java index 07f8f5515..a5014ebac 100644 --- a/app/src/main/java/io/xpipe/app/terminal/TerminalLauncherManager.java +++ b/app/src/main/java/io/xpipe/app/terminal/TerminalLauncherManager.java @@ -95,7 +95,7 @@ public class TerminalLauncherManager { req = entries.get(request); } - if (req != null && req.getShellPid() != -1) { + if (req != null && req.getShellPid() != -1 && req.getShellPid() != 0) { ProcessHandle current = ProcessHandle.of(pid).orElseThrow(() -> new BeaconClientException("Unknown process " + pid)); while ((current = current.parent().orElse(null)) != null) { if (current.pid() == req.getShellPid()) { diff --git a/app/src/main/java/io/xpipe/app/util/IniFile.java b/app/src/main/java/io/xpipe/app/util/IniFile.java index 556350f80..b612c5cf0 100644 --- a/app/src/main/java/io/xpipe/app/util/IniFile.java +++ b/app/src/main/java/io/xpipe/app/util/IniFile.java @@ -49,12 +49,4 @@ public class IniFile { } return kv.get(key); } - - public String getOrDefault(String section, String key, String defaultvalue) { - Map kv = entries.get(section); - if (kv == null) { - return defaultvalue; - } - return kv.get(key); - } } diff --git a/app/src/main/java/io/xpipe/app/util/SshLocalBridge.java b/app/src/main/java/io/xpipe/app/util/SshLocalBridge.java index dcca3f24f..6c7b9c675 100644 --- a/app/src/main/java/io/xpipe/app/util/SshLocalBridge.java +++ b/app/src/main/java/io/xpipe/app/util/SshLocalBridge.java @@ -211,6 +211,7 @@ public class SshLocalBridge { var file = AppSystemInfo.ofCurrent().getUserHome().resolve(".ssh", "config"); if (!Files.exists(file)) { + Files.createDirectories(file.getParent()); Files.writeString(file, hostEntry); return; } diff --git a/app/src/main/java/io/xpipe/app/vnc/RemoteViewerVncClient.java b/app/src/main/java/io/xpipe/app/vnc/RemoteViewerVncClient.java index be6fffb26..da61b5ce3 100644 --- a/app/src/main/java/io/xpipe/app/vnc/RemoteViewerVncClient.java +++ b/app/src/main/java/io/xpipe/app/vnc/RemoteViewerVncClient.java @@ -61,7 +61,7 @@ public abstract class RemoteViewerVncClient implements ExternalVncClient { } var name = OsFileSystem.ofLocal().makeFileSystemCompatible(configuration.getTitle()); - var file = AppLocalTemp.getLocalTempDataDirectory("vnc").resolve(name + ".vv"); + var file = AppLocalTemp.getLocalTempDataDirectory("spice").resolve(name + ".vv"); Files.writeString(file, vv.toString()); return file; }