Various fixes [stage]

This commit is contained in:
crschnick
2025-01-13 06:16:50 +00:00
parent 8ebceb6e6c
commit 2bfb6b3d7c
8 changed files with 63 additions and 56 deletions

View File

@@ -22,6 +22,7 @@ public class FsScriptExchangeImpl extends FsScriptExchange {
}
var file = ScriptHelper.getExecScriptFile(shell.getControl());
shell.getControl().view().writeScriptFile(file, data);
file = ScriptHelper.fixScriptPermissions(shell.getControl(), file);
return Response.builder().path(file).build();
}
}

View File

@@ -1,15 +1,19 @@
package io.xpipe.app.update;
import io.xpipe.app.comp.base.ModalButton;
import io.xpipe.app.core.AppCache;
import io.xpipe.app.core.AppProperties;
import io.xpipe.app.issue.ErrorEvent;
import io.xpipe.app.util.Hyperlinks;
import javafx.scene.layout.Region;
import org.kohsuke.github.GHRelease;
import java.nio.file.Files;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
public class GitHubUpdater extends UpdateHandler {
@@ -18,8 +22,24 @@ public class GitHubUpdater extends UpdateHandler {
}
@Override
public Region createInterface() {
return null;
public List<ModalButton> createActions() {
var list = new ArrayList<ModalButton>();
list.add(new ModalButton("ignore", null, true, false));
list.add(new ModalButton(
"checkOutUpdate",
() -> {
Hyperlinks.open(getPreparedUpdate().getValue().getReleaseUrl());
},
false,
false));
list.add(new ModalButton(
"install",
() -> {
executeUpdateAndClose();
},
false,
true));
return list;
}
public void prepareUpdateImpl() {

View File

@@ -1,6 +1,7 @@
package io.xpipe.app.update;
import io.xpipe.app.comp.base.ButtonComp;
import io.xpipe.app.comp.base.ModalButton;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.core.AppProperties;
import io.xpipe.app.util.Hyperlinks;
@@ -10,6 +11,8 @@ import javafx.scene.layout.Region;
import org.kohsuke.github.GHRelease;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
public class PortableUpdater extends UpdateHandler {
@@ -18,15 +21,17 @@ public class PortableUpdater extends UpdateHandler {
}
@Override
public Region createInterface() {
return new ButtonComp(AppI18n.observable("checkOutUpdate"), () -> {
Hyperlinks.open(XPipeDistributionType.get()
.getUpdateHandler()
.getPreparedUpdate()
.getValue()
.getReleaseUrl());
})
.createRegion();
public List<ModalButton> createActions() {
var list = new ArrayList<ModalButton>();
list.add(new ModalButton("ignore", null, true, false));
list.add(new ModalButton(
"checkOutUpdate",
() -> {
Hyperlinks.open(getPreparedUpdate().getValue().getReleaseUrl());
},
false,
true));
return list;
}
public synchronized AvailableRelease refreshUpdateCheckImpl(boolean first, boolean securityOnly) throws Exception {

View File

@@ -34,37 +34,12 @@ public class UpdateAvailableDialog {
var comp = Comp.of(() -> {
var markdown = new MarkdownComp(u.getBody() != null ? u.getBody() : "", s -> s, false).createRegion();
var updaterContent = uh.createInterface();
Region region;
if (updaterContent != null) {
var stack = new StackPane(updaterContent);
var box = new VBox(markdown, stack);
box.setFillWidth(true);
box.setPadding(Insets.EMPTY);
region = box;
} else {
region = markdown;
}
return region;
return markdown;
});
var modal = ModalOverlay.of("updateReadyAlertTitle", comp.prefWidth(600), null);
modal.addButton(new ModalButton("ignore", null, true, false));
modal.addButton(new ModalButton(
"checkOutUpdate",
() -> {
Hyperlinks.open(uh.getPreparedUpdate().getValue().getReleaseUrl());
},
false,
false));
modal.addButton(new ModalButton(
"install",
() -> {
uh.executeUpdateAndClose();
},
false,
true));
for (var action : uh.createActions()) {
modal.addButton(action);
}
AppDialog.show(modal);
}
}

View File

@@ -1,5 +1,6 @@
package io.xpipe.app.update;
import io.xpipe.app.comp.base.ModalButton;
import io.xpipe.app.core.AppCache;
import io.xpipe.app.core.AppProperties;
import io.xpipe.app.issue.ErrorEvent;
@@ -24,6 +25,7 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.time.Duration;
import java.time.Instant;
import java.util.List;
@SuppressWarnings("InfiniteLoopStatement")
@Getter
@@ -182,7 +184,7 @@ public abstract class UpdateHandler {
}
}
public abstract Region createInterface();
public abstract List<ModalButton> createActions();
public void prepareUpdateImpl() {
var changelogString =

View File

@@ -113,17 +113,21 @@ public class ScriptHelper {
.handle();
processControl.view().writeScriptFile(file, content);
file = fixScriptPermissions(processControl, file);
return file;
}
public static FilePath fixScriptPermissions(ShellControl processControl, FilePath file) throws Exception {
// Check if file system has disabled execution in temp
// This might happen in limited containers
if (processControl.getOsType() == OsType.LINUX && processControl.getShellDialect() == ShellDialects.SH &&
!processControl.command(CommandBuilder.of().add("test", "-x").addFile(file)).executeAndCheck()) {
var homeFile = processControl.view().userHome().join(file.getFileName());
processControl.getShellDialect().getFileMoveCommand(processControl,file.toString(),homeFile.toString()).execute();
file = homeFile;
return homeFile;
} else {
return file;
}
return file;
}
public static FilePath createRemoteAskpassScript(ShellControl parent, UUID requestId, String prefix)

View File

@@ -1,4 +1,4 @@
XPipe 14 has been the biggest rework so far and provides an improved user experience, better team features, performance and memory improvements, and fixes to many existing bugs and limitations. It will take some days until the initial rough edges are ironed out, but it will get there eventually. So please make sure to report any issues you find.
XPipe 14 has been the biggest rework so far and provides an improved user experience, better team features, performance and memory improvements, and fixes to many existing bugs and limitations. It will take some days until the initial rough edges are ironed out, but it will get there eventually. So please make sure to report any issues you find, even the small ones.
## Team vaults + Reusable identities
@@ -38,12 +38,10 @@ If you have previously used a custom vault passphrase to lock your vault, this w
- Improve RAM usage
- Implement performance improvements for local shells
- The Windows Terminal integration will now create and use its own profile
- The Windows Terminal integration will now create and use its own profile to prevent certain settings from breaking the terminal integration
- Future updates on Windows will be faster
- There is now the option to censor all displayed contents, allowing for a more simple screensharing workflow for XPipe
- Implement startup speed improvements
- Improve error message for libvirt when user was missing group permissions
- The Yubikey PIV and PKCS#11 SSH auth option have been made more resilient for any PATH issues
- The file browser selected file arguments for scripts are now passed in order of selection time, allowing for more advanced scripting
- Improve error messages when VMs could not be reached due to a custom firewall setup
- The XPipe [Python API](https://github.com/xpipe-io/xpipe-python-api) is now featured more prominently
@@ -51,24 +49,26 @@ If you have previously used a custom vault passphrase to lock your vault, this w
- Add support for Ghostty on Linux
- The webtop docker image is now also available for arm64 platforms
- The webtop is now also available for Kasm Workspaces at https://github.com/xpipe-io/kasm-registry
- The Yubikey PIV and PKCS#11 SSH auth option have been made more resilient for any PATH issues
- Add translations for Swedish, Polish, Indonesian
- Add more docs to the password manager settings
- Improve error message for libvirt when user was missing group permissions
## Fixes
- Fix Yubikey PIV and other PKCS#11 SSH libraries not asking for pin on macOS
- Fix password manager requests not being cached and requiring an unlock every time
- Fix connection icon being removed when the connection is edited
- Fix Windows updates breaking pinned shortcuts and some registry keys (This will only work in new updates from now on)
- Fix Windows updates breaking pinned shortcuts and some registry keys (This will only work in future updates from now on)
- Fix Yubikey PIV and other PKCS#11 SSH libraries not asking for pin on macOS
- Fix launched terminal not getting focus again after a password prompt
- Fix titlebar on Windows 11 being overlapped in fullscreen mode
- Fix built-in services like the Proxmox dashboard also counting for the service license limit
- Fix some files names that required escapes not being displayed in file browser
- Fix special Windows files like OneDrive links not being shown in file browser
- Fix some container shells not working do to some issues with /tmp
- Fix API not respecting category field when adding connections
- Fix fish shells launching as sh in the file browser terminal
- Fix zsh terminal not launching in the current working directory in file browser
- Fix unrecognized \r showing up in various error messages
- Fix sudo elevation not working properly in VMs
- Fix permission denied errors for script files in some containers
- Fix API not respecting category field when adding connections
- Fix some files names that required escapes not being displayed in file browser
- Fix special Windows files like OneDrive links not being shown in file browser
- Fix built-in services like the Proxmox dashboard also counting for the service license limit
- Fix titlebar on Windows 11 being overlapped in fullscreen mode

View File

@@ -1 +1 @@
14.0-67
14.0-68