diff --git a/app/src/main/java/io/xpipe/app/core/AppProperties.java b/app/src/main/java/io/xpipe/app/core/AppProperties.java index aa378a1ea..fcec18b03 100644 --- a/app/src/main/java/io/xpipe/app/core/AppProperties.java +++ b/app/src/main/java/io/xpipe/app/core/AppProperties.java @@ -47,6 +47,7 @@ public class AppProperties { boolean autoAcceptEula; UUID uuid; boolean initialLaunch; + boolean restarted; /** * Unique identifier that resets on every XPipe restart. */ @@ -129,6 +130,9 @@ public class AppProperties { autoAcceptEula = Optional.ofNullable(System.getProperty("io.xpipe.app.acceptEula")) .map(Boolean::parseBoolean) .orElse(false); + restarted = Optional.ofNullable(System.getProperty("io.xpipe.app.restarted")) + .map(Boolean::parseBoolean) + .orElse(false); // We require the user dir from here AppUserDirectoryCheck.check(dataDir); diff --git a/app/src/main/java/io/xpipe/app/core/mode/OperationMode.java b/app/src/main/java/io/xpipe/app/core/mode/OperationMode.java index 57c7e3a26..0d1fb0fbd 100644 --- a/app/src/main/java/io/xpipe/app/core/mode/OperationMode.java +++ b/app/src/main/java/io/xpipe/app/core/mode/OperationMode.java @@ -256,7 +256,7 @@ public abstract class OperationMode { var exec = XPipeInstallation.createExternalAsyncLaunchCommand( loc, XPipeDaemonMode.GUI, - "\"-Dio.xpipe.app.acceptEula=true\" \"-Dio.xpipe.app.dataDir=" + dataDir + "\"", + "\"-Dio.xpipe.app.acceptEula=true\" \"-Dio.xpipe.app.dataDir=" + dataDir + "\" \"-Dio.xpipe.app.restarted=true\"", true); LocalShell.getShell().executeSimpleCommand(exec); } diff --git a/app/src/main/java/io/xpipe/app/prefs/UpdateCheckComp.java b/app/src/main/java/io/xpipe/app/prefs/UpdateCheckComp.java index 131ab8340..b5eb8515f 100644 --- a/app/src/main/java/io/xpipe/app/prefs/UpdateCheckComp.java +++ b/app/src/main/java/io/xpipe/app/prefs/UpdateCheckComp.java @@ -54,7 +54,7 @@ public class UpdateCheckComp extends SimpleComp { } if (updateReady.getValue()) { - var prefix = AppDistributionType.get() == AppDistributionType.PORTABLE + var prefix = !AppDistributionType.get().getUpdateHandler().supportsDirectInstallation() ? AppI18n.get("updateReadyPortable") : AppI18n.get("updateReady"); var version = "Version " diff --git a/app/src/main/java/io/xpipe/app/update/GitHubUpdater.java b/app/src/main/java/io/xpipe/app/update/GitHubUpdater.java index dde5c3c16..4abd6a89b 100644 --- a/app/src/main/java/io/xpipe/app/update/GitHubUpdater.java +++ b/app/src/main/java/io/xpipe/app/update/GitHubUpdater.java @@ -20,6 +20,11 @@ public class GitHubUpdater extends UpdateHandler { super(startBackgroundThread); } + @Override + public boolean supportsDirectInstallation() { + return true; + } + @Override public List createActions() { var list = new ArrayList(); diff --git a/app/src/main/java/io/xpipe/app/update/PortableUpdater.java b/app/src/main/java/io/xpipe/app/update/PortableUpdater.java index c0615521c..8aa900d9c 100644 --- a/app/src/main/java/io/xpipe/app/update/PortableUpdater.java +++ b/app/src/main/java/io/xpipe/app/update/PortableUpdater.java @@ -17,6 +17,11 @@ public class PortableUpdater extends UpdateHandler { super(thread); } + @Override + public boolean supportsDirectInstallation() { + return false; + } + @Override public List createActions() { var list = new ArrayList(); diff --git a/app/src/main/java/io/xpipe/app/update/UpdateHandler.java b/app/src/main/java/io/xpipe/app/update/UpdateHandler.java index dd6987436..a1743e46e 100644 --- a/app/src/main/java/io/xpipe/app/update/UpdateHandler.java +++ b/app/src/main/java/io/xpipe/app/update/UpdateHandler.java @@ -104,9 +104,10 @@ public abstract class UpdateHandler { var checked = false; ThreadHelper.sleep(Duration.ofMinutes(1).toMillis()); event("Starting background updater thread"); + var run = !AppProperties.get().isRestarted(); while (true) { - if (AppPrefs.get().automaticallyUpdate().get() - || AppPrefs.get().checkForSecurityUpdates().get()) { + if (run && (AppPrefs.get().automaticallyUpdate().get() + || AppPrefs.get().checkForSecurityUpdates().get())) { event("Performing background update"); refreshUpdateCheckSilent( !checked, @@ -116,6 +117,7 @@ public abstract class UpdateHandler { } ThreadHelper.sleep(Duration.ofHours(1).toMillis()); + run = true; } }) .start(); @@ -141,6 +143,8 @@ public abstract class UpdateHandler { return false; } + public abstract boolean supportsDirectInstallation(); + public final AvailableRelease refreshUpdateCheckSilent(boolean first, boolean securityOnly) { try { return refreshUpdateCheck(first, securityOnly); diff --git a/dist/changelogs/15.2_incremental.md b/dist/changelogs/15.2_incremental.md index 743805c1b..bb526815f 100644 --- a/dist/changelogs/15.2_incremental.md +++ b/dist/changelogs/15.2_incremental.md @@ -1,10 +1,11 @@ -- Add ability to launch connections from the command-line with the `xpipe launch` command. Assuming that the `xpipe` executable is in the PATH, you can run `xpipe launch ` to open a shell session in an existing terminal session +- Add ability to launch connections from the command-line with the `xpipe launch` command. With the `xpipe` CLI executable in the PATH, you can run `xpipe launch ` to open a shell session in an existing terminal session - Add support for cursor, windsurf, and trae editor -- Add support for cosmic-term in the new cosmic desktop environment +- Add support for cosmic-term of the new cosmic desktop environment - Fix terminal restart failing with a wrong secret message - Fix git sync test failing with no clear message when git wasn't installed - Fix podman container state being wrong on refresh - Fix some connection states not showing when first added - Fix vmware connections requiring setting VM encryption password that was hidden +- Fix update button having a misleading description - Fix recognition of Hetzner Storage Box systems - Fix tailscale translations diff --git a/version b/version index 5e9ca7266..7e1f96f48 100644 --- a/version +++ b/version @@ -1 +1 @@ -15.2-2 +15.2-3