## Changes in 1.5.0

This is the largest update yet and comes with loads of improvements and changes, some of which might require you to update some connection configurations. There might be some rough edges, but these will be quickly ironed out. So please report any issues you can find!

### 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 when 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.

### SSH Configs

In 1.5, you're also now able to automatically import all hosts stored in your ssh config files.
It is also then possible to refresh and update these detected connections at any time in case you make external changes to your config files.

### 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:

- You can list all available connections and their ids to use with `xpipe list`
- Using the command `xpipe launch <id>`, you are able to log into a remote shell connection in your existing terminal session 
- Using the command `xpipe drain <id> <remote file path>`, you are able to forward the file contents to the stdout 
- Using the command `xpipe sink <id> <remote file path>`, 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 <filter> | 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 `<xpipe dir>/cli/bin/xpipe`.

### 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.

### 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
- Fix various checks in file browser not being applied properly and leading to wrong error messages
- Add alternative ways of resolving path in case realpath was not available
- Rework threading in navigation bar in browser to improve responsiveness
- Recheck if prepared update is still the latest one prior to installing it
- Keep connection configuration when refreshing parent
- Properly use shell script file extension for external editor when creating shell environments
- 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
- Improve app detection on macOS
