diff --git a/app/src/main/java/io/xpipe/app/storage/StandardStorage.java b/app/src/main/java/io/xpipe/app/storage/StandardStorage.java index 5e851c146..e41e0c41d 100644 --- a/app/src/main/java/io/xpipe/app/storage/StandardStorage.java +++ b/app/src/main/java/io/xpipe/app/storage/StandardStorage.java @@ -100,11 +100,11 @@ public class StandardStorage extends DataStorage { storeEntries.forEach(dataStoreEntry -> dataStoreEntry.simpleRefresh()); // Remove even incomplete stores when in production - if (!AppPrefs.get().isDevelopmentEnvironment()) { - storeEntries.removeIf(entry -> { - return !entry.getState().isUsable(); - }); - } +// if (!AppPrefs.get().isDevelopmentEnvironment()) { +// storeEntries.removeIf(entry -> { +// return !entry.getState().isUsable(); +// }); +// } } } catch (IOException ex) { ErrorEvent.fromThrowable(ex).terminal(true).build().handle(); diff --git a/core/src/main/java/io/xpipe/core/process/ShellControl.java b/core/src/main/java/io/xpipe/core/process/ShellControl.java index d740be1b0..2979c6f8b 100644 --- a/core/src/main/java/io/xpipe/core/process/ShellControl.java +++ b/core/src/main/java/io/xpipe/core/process/ShellControl.java @@ -1,5 +1,6 @@ package io.xpipe.core.process; +import io.xpipe.core.dialog.Dialog; import io.xpipe.core.util.FailableFunction; import io.xpipe.core.util.SecretValue; import io.xpipe.core.util.XPipeSystemId; @@ -95,7 +96,10 @@ public interface ShellControl extends ProcessControl { ShellControl elevated(String message, FailableFunction elevationFunction); - ShellControl elevationPassword(SecretValue value); + default ShellControl elevationPassword(SecretValue value) { + return elevationPassword(() -> value); + } + ShellControl elevationPassword(Dialog.FailableSupplier value); ShellControl initWith(String cmds); @@ -103,7 +107,7 @@ public interface ShellControl extends ProcessControl { ShellControl startTimeout(int ms); - SecretValue getElevationPassword(); + Dialog.FailableSupplier getElevationPassword(); default ShellControl subShell(@NonNull ShellDialect type) { return subShell(p -> type.getOpenCommand(), new TerminalOpenFunction() { diff --git a/dist/changelogs/1.5.0.md b/dist/changelogs/1.5.0.md new file mode 100644 index 000000000..6b9480636 --- /dev/null +++ b/dist/changelogs/1.5.0.md @@ -0,0 +1,69 @@ +## Changes in 1.5.0 + +This is the largest update yet and comes with loads of improvements and changes. +As a side effect, it will also break some existing connections, so be prepared for that. + +#### Passwords & Password managers + +This update comes with a first attempt of supporting the retrieval of passwords from external sources. +Due to the variety of available password managers and formats, I went with the most straightforward approach here which is essentially delegating that task to the CLI of your password manager. + +Essentially, you're able to specify a command template to retrieve your passwords. +For example, by specifying the command template `mypasswordmgr get $KEY`, you can then choose the password went creating connections by just supplying the key argument. +XPipe will call the command, read the password, and supply it from there. + +There's also support to specify an arbitrary command or to dynamically prompt the password on each login. + +#### Antivirus adjustments + +As it turns out, several antivirus programs do not like XPipe and what it is doing with shells. +As a result, some of them quarantine XPipe and even the system shells itself as they get confused of who is making the calls. + +This update aims to reduce any unexpected issues caused by antivirus programs by automatically detecting whether a problematic antivirus is installed and giving the user the chance to prepare for any upcoming issues. + +#### Fish + +This update brings support for fish as another possible shell type. + +Note that there are several limitations with this implementation as fish does +not support an interactive mode in headless environments, +resulting in XPipe having to use a fallback shell for certain operations. + +#### CLI + +This update lays the foundation for future advancements in the command-line interface of XPipe. +To start off, it comes with a few new commands to read and write files on remote systems directly from your terminal. + +The workflow is designed as follows: + +1. You can list all available connections and their ids to use with `xpipe list` +2. Using the command `xpipe drain `, you are able to forward the file contents to the stdout +3. Using the command `xpipe sink `, you are able to forward content from your stdin to the remote file + +The id system is flexible, allowing you to only specify as much of the id as is necessary. + +An easy example would be the following: Assume that you have a Windows server with an id of `ssh-windows` and want to filter a file there, but you are missing `grep`. +Then you can execute on your local machine: `xpipe drain ssh-windows "C:\myfile.txt" | grep | xpipe sink ssh-windows "C:\myfile_filtered.txt"`. + +The XPipe CLI should be put automatically in your path upon installation, you can test that with `xpipe --help`. +Otherwise, you will find it in `/cli/bin/xpipe`. + +#### Cygwin and MSYS2 + +XPipe can now automatically detect Cygwin and MSYS2 environments on your machine. +This also comes with full support of the feature set for these environments + +#### Misc + +- For every system, XPipe will now also display the appropriate OS/distro logo (if recognized) +- Rework SSH key-based authentication to properly interact with agents, now also including pageant +- Add ability to test out terminals and editors directly in the settings menu +- Implement a new internal API to better assemble complex commands +- Rework os detection logic for passthrough environments like Cygwin and MSYS2 +- Fix desktop directory not being determined correctly on Windows when it was moved from the default location +- Rework threading in navigation bar in browser to improve responsiveness +- Recheck if prepared update is still the latest one prior to installing it +- Built-in documentation popups now honour the dark mode setting +- Properly detect applications such as editors and terminals when they are present in the path on Windows +- Rework operation mode handling to properly honor the startup mode setting +- Many other small miscellaneous fixes and improvements diff --git a/dist/debug/debug_arguments.txt b/dist/debug/debug_arguments.txt index b2f9f299c..6fa7a642f 100644 --- a/dist/debug/debug_arguments.txt +++ b/dist/debug/debug_arguments.txt @@ -1,5 +1,5 @@ -Dio.xpipe.app.writeSysOut=true --Dio.xpipe.app.writeLogs=true +-Dio.xpipe.app.writeLogs=false -Dio.xpipe.app.logLevel=trace -Dio.xpipe.app.developerMode=true -Dio.xpipe.beacon.debugOutput=true \ No newline at end of file