diff --git a/app/src/main/java/io/xpipe/app/process/ShellScript.java b/app/src/main/java/io/xpipe/app/process/ShellScript.java index 45139e46d..d53efe9c3 100644 --- a/app/src/main/java/io/xpipe/app/process/ShellScript.java +++ b/app/src/main/java/io/xpipe/app/process/ShellScript.java @@ -12,7 +12,7 @@ public class ShellScript { String value; public static ShellScript lines(String... lines) { - return new ShellScript(Arrays.stream(lines).collect(Collectors.joining("\n"))); + return new ShellScript(Arrays.stream(lines).filter(s -> s != null).collect(Collectors.joining("\n"))); } public static ShellScript lines(List lines) { diff --git a/app/src/main/java/io/xpipe/app/pwman/BitwardenPasswordManager.java b/app/src/main/java/io/xpipe/app/pwman/BitwardenPasswordManager.java index 506e0268c..e05319bb8 100644 --- a/app/src/main/java/io/xpipe/app/pwman/BitwardenPasswordManager.java +++ b/app/src/main/java/io/xpipe/app/pwman/BitwardenPasswordManager.java @@ -26,8 +26,7 @@ public class BitwardenPasswordManager implements PasswordManager { SHELL = ProcessControlProvider.get().createLocalProcessControl(true); SHELL.start(); - var path = SHELL.view().findProgram("bw"); - if (OsType.getLocal() != OsType.LINUX || path.isEmpty() || !path.get().toString().contains("snap")) { + if (moveAppDir()) { SHELL.view().unsetEnvironmentVariable("BW_SESSION"); SHELL.view().setEnvironmentVariable("BITWARDENCLI_APPDATA_DIR", AppCache.getBasePath().toString()); } @@ -36,6 +35,11 @@ public class BitwardenPasswordManager implements PasswordManager { return SHELL; } + private static boolean moveAppDir() throws Exception { + var path = SHELL.view().findProgram("bw"); + return OsType.getLocal() != OsType.LINUX || path.isEmpty() || !path.get().toString().contains("snap"); + } + @Override public CredentialResult retrieveCredentials(String key) { try { @@ -54,10 +58,10 @@ public class BitwardenPasswordManager implements PasswordManager { // Check for data file as bw seemingly breaks if it doesn't exist yet if (r[1].contains("You are not logged in")) { var script = ShellScript.lines( - LocalShell.getDialect() + moveAppDir() ? LocalShell.getDialect() .getSetEnvironmentVariableCommand( "BITWARDENCLI_APPDATA_DIR", - AppCache.getBasePath().toString()), + AppCache.getBasePath().toString()) : null, sc.getShellDialect().getEchoCommand("Log in into your Bitwarden account from the CLI:", false), "bw login --quiet", sc.getShellDialect() diff --git a/dist/changelog/18.0.md b/dist/changelog/18.0.md index 19db24701..c3abda98c 100644 --- a/dist/changelog/18.0.md +++ b/dist/changelog/18.0.md @@ -42,42 +42,43 @@ You can now configure multiple addresses for a host. This allows you to quickly - Fix SSH agent public key setting not working on Linux and macOS due to permissions issue - Fix SSH gateways not working on systems where username contained a dot - Fix some terminal connections asking for passwords even if it was entered before if the connection was edited +- The custom SSH agent setting now works differently. To use the agent socket specified in the settings menu, + you will now have to select the custom SSH agent for a connection. The default OpenSSH agent will no longer use this option - Fix custom SSH agent socket location setting not applying correctly -- Disable SSH host key checking for local network devices - Add support to launch VsCode Insiders and Trae as well in the VsCode SSH launch menu -- The custom SSH agent setting now works differently. To use the agent socket specified in the settings menu, you will now have to select the custom SSH agent for a connection. The default OpenSSH agent will no longer use this option ## File browser -- Files with trailing or leading spaces are now included in the file list - The initial transfer size calculation for large directories is now dynamically updated and shown -- Fix execute action on Windows not being limited to certain file types -- Fix refresh of single files failing on Windows systems -- Fix execute action not showing confirmation dialog if enabled -- Fix not supporting dollar signs in directory names -- Fix conflict dialog being cut off -- Fix file listing not working on Solaris systems -- Fix renames not working in cmd - Fix script arguments not being passed with file selection +- Fix file listing not working on Solaris systems +- Fix refresh of single file selections failing on Windows systems +- Fix conflict dialog being cut off +- Fix renames not working in cmd +- Fix not supporting dollar signs in directory names +- Files with trailing or leading spaces are now included in the file list +- Fix execute action on Windows not being limited to certain file types +- Fix execute action not showing confirmation dialog if enabled ## Other - The fonts on macOS have been updated with the goal of better readability. If you don't like the new font style, you can still select the old one in the appearance settings menu - Tailscale connections are now a top-level entry and can be synced via git -- Proxmox entries are now ordered by their vmid - Add ability to specify gateways for direct RDP and VNC connections - Add two new connection colors with cyan and purple - Add new option to prefer available monochrome icons instead of colored variants - Add vietnamese translations +- Improve local shell fallback handling and docs - Add more documentation links to the settings menu +- Proxmox entries are now ordered by their vmid - Kitty and WezTerm now also support the tabs or windows settings option for terminals - Any small changes such as a change in color other connection are now synced instantly - XPipe will now clean any temp files more often -- Improve local shell fallback handling and docs ## Fixes +- Fix application freeze when having password manager identities while password manager was not running - Fix apt and rpm package manager installs failing due to two download redirects causing a wrong checksum - Fix automatic tunnel restart sometimes resulting in an invalid tunnel state - Fix performance issue when opening connection chooser dropdown @@ -85,6 +86,7 @@ You can now configure multiple addresses for a host. This allows you to quickly - Fix Bitwarden integration in some cases requiring the master password every time - Fix restart button not working on Linux - Fix license check becoming invalid if xpipe was left running for more than a week -- Fix application freeze when having password manager identities while password manager was not running - Fix git vaultversion conflict not being solved automatically - Fix BSD and Solaris systems not being recognized correctly + +There are also many other small changes that are not listed explicitly here. diff --git a/lang/strings/translations_da.properties b/lang/strings/translations_da.properties index 350ab5aa6..a19d01381 100644 --- a/lang/strings/translations_da.properties +++ b/lang/strings/translations_da.properties @@ -1595,3 +1595,4 @@ localShellDialectDescription=Den shell, der bruges til lokale operationer. Hvis agentSocketNotFound=Der blev ikke fundet nogen aktiv agent-socket agentSocket=Socket-placering agentSocketNotConfigured=Der er ikke konfigureret nogen brugerdefineret socket endnu +downloadInProgress=$NAME$ download i gang diff --git a/lang/strings/translations_de.properties b/lang/strings/translations_de.properties index 8276160d4..f375b37cd 100644 --- a/lang/strings/translations_de.properties +++ b/lang/strings/translations_de.properties @@ -1585,3 +1585,4 @@ localShellDialectDescription=Die Shell, die für lokale Operationen verwendet wi agentSocketNotFound=Es wurde kein aktiver Agentensocket gefunden agentSocket=Standort der Steckdose agentSocketNotConfigured=Es wurde noch kein benutzerdefinierter Socket konfiguriert +downloadInProgress=$NAME$ download in Bearbeitung diff --git a/lang/strings/translations_en.properties b/lang/strings/translations_en.properties index 7ac0729bb..dbcf576fb 100644 --- a/lang/strings/translations_en.properties +++ b/lang/strings/translations_en.properties @@ -1624,3 +1624,4 @@ localShellDialectDescription=The shell that is used for local operations. In cas agentSocketNotFound=No active agent socket was found agentSocket=Socket location agentSocketNotConfigured=No custom socket has been configured yet +downloadInProgress=$NAME$ download in progress diff --git a/lang/strings/translations_es.properties b/lang/strings/translations_es.properties index c138aa749..2b26b2710 100644 --- a/lang/strings/translations_es.properties +++ b/lang/strings/translations_es.properties @@ -1551,3 +1551,4 @@ localShellDialectDescription=El shell que se utiliza para las operaciones locale agentSocketNotFound=No se ha encontrado ningún socket de agente activo agentSocket=Ubicación del zócalo agentSocketNotConfigured=Aún no se ha configurado ningún socket personalizado +downloadInProgress=$NAME$ descarga en curso diff --git a/lang/strings/translations_fr.properties b/lang/strings/translations_fr.properties index 5df6475f3..139e2c3a6 100644 --- a/lang/strings/translations_fr.properties +++ b/lang/strings/translations_fr.properties @@ -1594,3 +1594,4 @@ localShellDialectDescription=L'interprète de commandes utilisé pour les opéra agentSocketNotFound=Aucune prise d'agent actif n'a été trouvée agentSocket=Emplacement de la prise agentSocketNotConfigured=Aucune prise personnalisée n'a encore été configurée +downloadInProgress=$NAME$ téléchargement en cours diff --git a/lang/strings/translations_id.properties b/lang/strings/translations_id.properties index 3beab3b75..0035725e2 100644 --- a/lang/strings/translations_id.properties +++ b/lang/strings/translations_id.properties @@ -1551,3 +1551,4 @@ localShellDialectDescription=Cangkang yang digunakan untuk operasi lokal. Jika s agentSocketNotFound=Tidak ditemukan soket agen aktif agentSocket=Lokasi soket agentSocketNotConfigured=Belum ada soket khusus yang dikonfigurasi +downloadInProgress=$NAME$ pengunduhan sedang berlangsung diff --git a/lang/strings/translations_it.properties b/lang/strings/translations_it.properties index d911a8e03..f2dd5ecab 100644 --- a/lang/strings/translations_it.properties +++ b/lang/strings/translations_it.properties @@ -1551,3 +1551,4 @@ localShellDialectDescription=La shell utilizzata per le operazioni locali. Nel c agentSocketNotFound=Non è stato trovato alcun socket attivo per l'agente agentSocket=Posizione del socket agentSocketNotConfigured=Non è stato ancora configurato alcun socket personalizzato +downloadInProgress=$NAME$ download in corso diff --git a/lang/strings/translations_ja.properties b/lang/strings/translations_ja.properties index cf81411cc..cf875fd76 100644 --- a/lang/strings/translations_ja.properties +++ b/lang/strings/translations_ja.properties @@ -1551,3 +1551,4 @@ localShellDialectDescription=ローカル操作に使用するシェル。通常 agentSocketNotFound=アクティブなエージェントソケットが見つからなかった agentSocket=ソケットの位置 agentSocketNotConfigured=カスタムソケットはまだ設定されていない +downloadInProgress=$NAME$ ダウンロード中 diff --git a/lang/strings/translations_ko.properties b/lang/strings/translations_ko.properties index 6fcd94f81..1fcee9166 100644 --- a/lang/strings/translations_ko.properties +++ b/lang/strings/translations_ko.properties @@ -1551,3 +1551,4 @@ localShellDialectDescription=로컬 작업에 사용되는 셸입니다. 일반 agentSocketNotFound=활성 에이전트 소켓을 찾을 수 없습니다 agentSocket=소켓 위치 agentSocketNotConfigured=아직 사용자 지정 소켓이 구성되지 않았습니다 +downloadInProgress=$NAME$ 다운로드 진행 중 diff --git a/lang/strings/translations_nl.properties b/lang/strings/translations_nl.properties index 6bdf6a9bb..082a27e57 100644 --- a/lang/strings/translations_nl.properties +++ b/lang/strings/translations_nl.properties @@ -1551,3 +1551,4 @@ localShellDialectDescription=De shell die wordt gebruikt voor lokale operaties. agentSocketNotFound=Er is geen actieve agent socket gevonden agentSocket=Locatie van een socket agentSocketNotConfigured=Er is nog geen aangepaste socket geconfigureerd +downloadInProgress=$NAME$ download bezig diff --git a/lang/strings/translations_pl.properties b/lang/strings/translations_pl.properties index 98ef64eb4..135fbef84 100644 --- a/lang/strings/translations_pl.properties +++ b/lang/strings/translations_pl.properties @@ -1552,3 +1552,4 @@ localShellDialectDescription=Powłoka używana do operacji lokalnych. W przypadk agentSocketNotFound=Nie znaleziono aktywnego gniazda agenta agentSocket=Lokalizacja gniazda agentSocketNotConfigured=Nie skonfigurowano jeszcze niestandardowego gniazda +downloadInProgress=$NAME$ pobieranie w toku diff --git a/lang/strings/translations_pt.properties b/lang/strings/translations_pt.properties index 5a1877601..70353c606 100644 --- a/lang/strings/translations_pt.properties +++ b/lang/strings/translations_pt.properties @@ -1551,3 +1551,4 @@ localShellDialectDescription=A shell que é usada para operações locais. No ca agentSocketNotFound=Não foi encontrada nenhuma tomada de agente ativa agentSocket=Localização de sockets agentSocketNotConfigured=Ainda não foi configurado nenhum socket personalizado +downloadInProgress=$NAME$ transferência em curso diff --git a/lang/strings/translations_ru.properties b/lang/strings/translations_ru.properties index 12e8a3300..818463125 100644 --- a/lang/strings/translations_ru.properties +++ b/lang/strings/translations_ru.properties @@ -1665,3 +1665,4 @@ localShellDialectDescription=Оболочка, которая используе agentSocketNotFound=Не найдено ни одного активного сокета агента agentSocket=Расположение сокета agentSocketNotConfigured=Пользовательский сокет еще не настроен +downloadInProgress=$NAME$ загрузка в процессе diff --git a/lang/strings/translations_sv.properties b/lang/strings/translations_sv.properties index dbd7a4661..4c05d3159 100644 --- a/lang/strings/translations_sv.properties +++ b/lang/strings/translations_sv.properties @@ -1551,3 +1551,4 @@ localShellDialectDescription=Det skal som används för lokala operationer. Om d agentSocketNotFound=Inget aktivt agentuttag hittades agentSocket=Plats för uttag agentSocketNotConfigured=Inget anpassat uttag har konfigurerats ännu +downloadInProgress=$NAME$ nedladdning pågår diff --git a/lang/strings/translations_tr.properties b/lang/strings/translations_tr.properties index 842e466f7..eabea08ae 100644 --- a/lang/strings/translations_tr.properties +++ b/lang/strings/translations_tr.properties @@ -1551,3 +1551,4 @@ localShellDialectDescription=Yerel işlemler için kullanılan kabuk. Normal yer agentSocketNotFound=Etkin ajan soketi bulunamadı agentSocket=Soket konumu agentSocketNotConfigured=Henüz özel bir soket yapılandırılmadı +downloadInProgress=$NAME$ indirme işlemi devam ediyor diff --git a/lang/strings/translations_vi.properties b/lang/strings/translations_vi.properties index 495606a2f..b42673e8e 100644 --- a/lang/strings/translations_vi.properties +++ b/lang/strings/translations_vi.properties @@ -1551,3 +1551,4 @@ localShellDialectDescription=Vỏ lệnh được sử dụng cho các thao tác agentSocketNotFound=Không tìm thấy socket đại lý hoạt động agentSocket=Vị trí socket agentSocketNotConfigured=Chưa có socket tùy chỉnh nào được cấu hình +downloadInProgress=$NAME$ đang tải xuống diff --git a/lang/strings/translations_zh.properties b/lang/strings/translations_zh.properties index 687a6e080..9e6c4e784 100644 --- a/lang/strings/translations_zh.properties +++ b/lang/strings/translations_zh.properties @@ -1771,3 +1771,4 @@ localShellDialectDescription=用于本地操作的 shell。如果正常的本地 agentSocketNotFound=未找到活动代理插口 agentSocket=插座位置 agentSocketNotConfigured=尚未配置自定义套接字 +downloadInProgress=$NAME$ 下载中 diff --git a/version b/version index 7457fe3c8..9bb7cd384 100644 --- a/version +++ b/version @@ -1 +1 @@ -18.0-34 +18.0-35