Desenvolvido por @veeso
-Versão atual: 0.18.0 10/06/2025
+Versão atual: 0.19.0 10/06/2025
由 @veeso 开发
-当前版本: 0.18.0 10/06/2025
+当前版本: 0.19.0 10/06/2025
Consider that Chocolatey moderation can take up to a few weeks
since last release, so if the latest version is not available yet,
you can install it downloading the ZIP file from
- Github
and then, from the ZIP directory, install it via
@@ -74,7 +74,7 @@
On Debian based distros, you can install termscp using the Deb
package via:
- wget -O termscp.deb https://github.com/veeso/termscp/releases/latest/download/termscp_0.18.0_amd64.deb
+ wget -O termscp.deb https://github.com/veeso/termscp/releases/latest/download/termscp_0.19.0_amd64.deb
sudo dpkg -i termscp.deb
diff --git a/site/html/home.html b/site/html/home.html
index 90ec757..e01f928 100644
--- a/site/html/home.html
+++ b/site/html/home.html
@@ -12,7 +12,7 @@
- termscp 0.18.0 is NOW out! Download it from
+ termscp 0.19.0 is NOW out! Download it from
here!
diff --git a/site/lang/en.json b/site/lang/en.json
index d02566f..6661ec5 100644
--- a/site/lang/en.json
+++ b/site/lang/en.json
@@ -12,7 +12,7 @@
"intro": {
"caption": "A feature rich terminal UI file transfer and explorer with support for SCP/SFTP/FTP/Kube/S3/WebDAV",
"getStarted": "Get started →",
- "versionAlert": "termscp 0.18.0 is NOW out! Download it from",
+ "versionAlert": "termscp 0.19.0 is NOW out! Download it from",
"here": "here",
"features": {
"handy": {
@@ -112,4 +112,4 @@
"then": "Once started, you will be prompted whether to install or not the update. Confirm the installation and ta-dah, the new version of termscp should now be available on your machine"
}
}
-}
\ No newline at end of file
+}
diff --git a/site/lang/es.json b/site/lang/es.json
index 48154b3..ea6c605 100644
--- a/site/lang/es.json
+++ b/site/lang/es.json
@@ -12,7 +12,7 @@
"intro": {
"caption": "Un explorador y transferencia de archivos de terminal rico en funciones, con apoyo para SCP/SFTP/FTP/Kube/S3/WebDAV",
"getStarted": "Para iniciar →",
- "versionAlert": "termscp 0.18.0 ya está disponible! Descárgalo desde",
+ "versionAlert": "termscp 0.19.0 ya está disponible! Descárgalo desde",
"here": "aquì",
"features": {
"handy": {
@@ -112,4 +112,4 @@
"then": "Una vez iniciado, se le preguntará si desea instalar o no la actualización. Confirme la instalación y ta-dah, la nueva versión de termscp ahora debería estar disponible en su máquina"
}
}
-}
\ No newline at end of file
+}
diff --git a/site/lang/fr.json b/site/lang/fr.json
index a6a9462..79e2dae 100644
--- a/site/lang/fr.json
+++ b/site/lang/fr.json
@@ -12,7 +12,7 @@
"intro": {
"caption": "Un file transfer et navigateur de terminal riche en fonctionnalités avec support pour SCP/SFTP/FTP/Kube/S3/WebDAV",
"getStarted": "Pour commencer →",
- "versionAlert": "termscp 0.18.0 est maintenant sorti! Télécharge-le depuis",
+ "versionAlert": "termscp 0.19.0 est maintenant sorti! Télécharge-le depuis",
"here": "ici",
"features": {
"handy": {
@@ -112,4 +112,4 @@
"then": "Une fois démarré, vous serez invité à installer ou non la mise à jour. Confirmez l'installation et ta-dah, la nouvelle version de termscp devrait maintenant être disponible sur votre machine"
}
}
-}
\ No newline at end of file
+}
diff --git a/site/lang/it.json b/site/lang/it.json
index f444677..ec66c83 100644
--- a/site/lang/it.json
+++ b/site/lang/it.json
@@ -12,7 +12,7 @@
"intro": {
"caption": "Un file transfer ed explorer ricco di funzionalità con supporto per SFTP/SCP/FTP/S3",
"getStarted": "Installa termscp →",
- "versionAlert": "termscp 0.18.0 è ORA disponbile! Scaricalo da",
+ "versionAlert": "termscp 0.19.0 è ORA disponbile! Scaricalo da",
"here": "qui",
"features": {
"handy": {
@@ -112,4 +112,4 @@
"then": "Una volta lanciato, se c'è un aggiornamento disponibile ti chiederà se procedere. Conferma e a questo punto dovrebbe installarlo. Se tutto è andato a buon fine, riavviando termscp dovrebbe essere l'ultima versione."
}
}
-}
\ No newline at end of file
+}
diff --git a/site/lang/zh-CN.json b/site/lang/zh-CN.json
index 15efff5..0d38421 100644
--- a/site/lang/zh-CN.json
+++ b/site/lang/zh-CN.json
@@ -12,7 +12,7 @@
"intro": {
"caption": "功能丰富的终端 UI 文件传输和浏览器,支持 SCP/SFTP/FTP/Kube/S3/WebDAV",
"getStarted": "开始 →",
- "versionAlert": "termscp 0.18.0 现已发布! 从下载",
+ "versionAlert": "termscp 0.19.0 现已发布! 从下载",
"here": "这里",
"features": {
"handy": {
@@ -112,4 +112,4 @@
"then": "启动后,系统将提示您是否安装更新。 确认安装和 ta-dah,新版本的termscp 现在应该可以在你的机器上使用了"
}
}
-}
\ No newline at end of file
+}
diff --git a/src/filetransfer/remotefs_builder.rs b/src/filetransfer/remotefs_builder.rs
index 53cf17c..3d9edd0 100644
--- a/src/filetransfer/remotefs_builder.rs
+++ b/src/filetransfer/remotefs_builder.rs
@@ -13,7 +13,7 @@ use remotefs_kube::KubeMultiPodFs as KubeFs;
use remotefs_smb::SmbOptions;
#[cfg(smb)]
use remotefs_smb::{SmbCredentials, SmbFs};
-use remotefs_ssh::{ScpFs, SftpFs, SshAgentIdentity, SshConfigParseRule, SshOpts};
+use remotefs_ssh::{LibSsh2Session, ScpFs, SftpFs, SshAgentIdentity, SshConfigParseRule, SshOpts};
use remotefs_webdav::WebDAVFs;
#[cfg(not(smb))]
@@ -138,12 +138,18 @@ impl RemoteFsBuilder {
}
/// Build scp client
- fn scp_client(params: GenericProtocolParams, config_client: &ConfigClient) -> ScpFs {
+ fn scp_client(
+ params: GenericProtocolParams,
+ config_client: &ConfigClient,
+ ) -> ScpFs {
Self::build_ssh_opts(params, config_client).into()
}
/// Build sftp client
- fn sftp_client(params: GenericProtocolParams, config_client: &ConfigClient) -> SftpFs {
+ fn sftp_client(
+ params: GenericProtocolParams,
+ config_client: &ConfigClient,
+ ) -> SftpFs {
Self::build_ssh_opts(params, config_client).into()
}
From 86660a0cc9e8fc44b82320efc70ec3b5d458a23e Mon Sep 17 00:00:00 2001
From: veeso
Date: Sat, 20 Sep 2025 18:07:26 +0200
Subject: [PATCH 02/14] fix: SMB support for MacOS with vendored build of
libsmbclient.
closes #334
---
.github/workflows/build-artifacts.yml | 39 ++++++++++++++++++++++++++-
.github/workflows/macos.yml | 7 +++++
CHANGELOG.md | 8 ++++++
Cargo.toml | 4 +--
build.rs | 4 +--
5 files changed, 56 insertions(+), 6 deletions(-)
diff --git a/.github/workflows/build-artifacts.yml b/.github/workflows/build-artifacts.yml
index fcc49a3..f1146f1 100644
--- a/.github/workflows/build-artifacts.yml
+++ b/.github/workflows/build-artifacts.yml
@@ -29,8 +29,45 @@ jobs:
with:
toolchain: stable
targets: ${{ matrix.platform.target }}
+ - name: Install dependencies
+ run: |
+ brew update
+ brew install \
+ bison \
+ cpanminus \
+ cups \
+ flex \
+ gettext \
+ gmp \
+ gnutls \
+ icu4c \
+ jansson \
+ libarchive \
+ libbsd \
+ libunistring \
+ libgit2 \
+ libtirpc \
+ openldap \
+ pkg-config \
+ zlib
+ brew link --force bison
+ brew link --force cups
+ brew link --force flex
+ brew link --force gettext
+ brew link --force gmp
+ brew link --force gnutls
+ brew link --force icu4c
+ brew link --force jansson
+ brew link --force libarchive
+ brew link --force libbsd
+ brew link --force libgit2
+ brew link --force libtirpc
+ brew link --force libunistring
+ brew link --force openldap
+ brew link --force zlib
+ cpanm Parse::Yapp::Driver
- name: Build release
- run: cargo build --release --target ${{ matrix.platform.target }}
+ run: cargo build --release --features smb-vendored --target ${{ matrix.platform.target }}
- name: Prepare artifact files
run: |
mkdir -p .artifact
diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml
index 7ca11b4..3922f76 100644
--- a/.github/workflows/macos.yml
+++ b/.github/workflows/macos.yml
@@ -22,6 +22,13 @@ jobs:
with:
toolchain: stable
components: rustfmt, clippy
+ - name: Install dependencies
+ run: |
+ brew update
+ brew install \
+ pkg-config \
+ samba
+ brew link --force samba
- name: Build
run: cargo build
- name: Run tests
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 74119a7..014616f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,7 @@
# Changelog
- [Changelog](#changelog)
+ - [0.19.0](#0190)
- [0.18.0](#0180)
- [0.17.0](#0170)
- [0.16.1](#0161)
@@ -41,6 +42,13 @@
---
+## 0.19.0
+
+Released on 20/09/2025
+
+- [Issue 356](https://github.com/veeso/termscp/issues/356): Fixed SSH auth issue not trying with the password if any RSA key was found.
+- [Issue 334](https://github.com/veeso/termscp/issues/334): SMB support for MacOS with vendored build of libsmbclient.
+
## 0.18.0
Released on 10/06/2025
diff --git a/Cargo.toml b/Cargo.toml
index 15da9c8..2930fa5 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -60,6 +60,7 @@ regex = "^1"
remotefs = "^0.3"
remotefs-aws-s3 = "0.4"
remotefs-kube = "0.4"
+remotefs-smb = { version = "^0.3", optional = true }
remotefs-webdav = "^0.2"
rpassword = "^7"
self_update = { version = "^0.42", default-features = false, features = [
@@ -84,9 +85,6 @@ version-compare = "^0.2"
whoami = "^1.6"
wildmatch = "^2"
-[target."cfg(not(target_os = \"macos\"))".dependencies]
-remotefs-smb = { version = "^0.3", optional = true }
-
[target."cfg(target_family = \"unix\")".dependencies]
remotefs-ftp = { version = "^0.3", features = [
"native-tls-vendored",
diff --git a/build.rs b/build.rs
index d6b0acc..d05b0b3 100644
--- a/build.rs
+++ b/build.rs
@@ -10,8 +10,8 @@ fn main() -> Result<(), Box> {
posix: { target_family = "unix" },
win: { target_family = "windows" },
// exclusive features
- smb: { all(feature = "smb", not( macos )) },
- smb_unix: { all(unix, feature = "smb", not(macos)) },
+ smb: { feature = "smb" },
+ smb_unix: { all(unix, feature = "smb") },
smb_windows: { all(windows, feature = "smb") }
}
From 205d2813ad0407a23999ea8f212c6d7ef25a7ad3 Mon Sep 17 00:00:00 2001
From: veeso
Date: Sat, 20 Sep 2025 18:13:20 +0200
Subject: [PATCH 03/14] perf: Migrated to libssh.org on Linux and MacOS for
better ssh agent support.
closes #337
---
CHANGELOG.md | 1 +
Cargo.lock | 26 ++++++++++++++++++++++++++
Cargo.toml | 5 ++++-
src/filetransfer/remotefs_builder.rs | 10 +++++++---
4 files changed, 38 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 014616f..a7ab1ce 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -48,6 +48,7 @@ Released on 20/09/2025
- [Issue 356](https://github.com/veeso/termscp/issues/356): Fixed SSH auth issue not trying with the password if any RSA key was found.
- [Issue 334](https://github.com/veeso/termscp/issues/334): SMB support for MacOS with vendored build of libsmbclient.
+- [Issue 337](https://github.com/veeso/termscp/issues/337): Migrated to libssh.org on Linux and MacOS for better ssh agent support.
## 0.18.0
diff --git a/Cargo.lock b/Cargo.lock
index 6ebfc98..0d06111 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2574,6 +2574,31 @@ dependencies = [
"redox_syscall",
]
+[[package]]
+name = "libssh-rs"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3066e110d6bb95a5addbd9c2ee595efdaeecaddd4793f3803dfee2968a74c685"
+dependencies = [
+ "bitflags 1.3.2",
+ "libc",
+ "libssh-rs-sys",
+ "openssl-sys",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "libssh-rs-sys"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01d528ea9ac190fa364ff12193da82222dfc645e7ab28666ae91493bd288a1a0"
+dependencies = [
+ "cc",
+ "libz-sys",
+ "openssl-sys",
+ "pkg-config",
+]
+
[[package]]
name = "libssh2-sys"
version = "0.3.1"
@@ -3608,6 +3633,7 @@ checksum = "d29de4702886ae0e4433904d4f6f9b2ed2961d31d76a7e7bef58305097238eb6"
dependencies = [
"chrono",
"lazy-regex",
+ "libssh-rs",
"log",
"path-slash",
"remotefs",
diff --git a/Cargo.toml b/Cargo.toml
index 2930fa5..e66b940 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -90,7 +90,10 @@ remotefs-ftp = { version = "^0.3", features = [
"native-tls-vendored",
"native-tls",
] }
-remotefs-ssh = { version = "^0.7", features = ["libssh2-vendored"] }
+remotefs-ssh = { version = "^0.7", default-features = false, features = [
+ "find",
+ "libssh-vendored",
+] }
uzers = "0.12"
[target."cfg(target_family = \"windows\")".dependencies]
diff --git a/src/filetransfer/remotefs_builder.rs b/src/filetransfer/remotefs_builder.rs
index 3d9edd0..b52fb7c 100644
--- a/src/filetransfer/remotefs_builder.rs
+++ b/src/filetransfer/remotefs_builder.rs
@@ -13,7 +13,11 @@ use remotefs_kube::KubeMultiPodFs as KubeFs;
use remotefs_smb::SmbOptions;
#[cfg(smb)]
use remotefs_smb::{SmbCredentials, SmbFs};
-use remotefs_ssh::{LibSsh2Session, ScpFs, SftpFs, SshAgentIdentity, SshConfigParseRule, SshOpts};
+#[cfg(windows)]
+use remotefs_ssh::LibSsh2Session as SshSession;
+#[cfg(unix)]
+use remotefs_ssh::LibSshSession as SshSession;
+use remotefs_ssh::{ScpFs, SftpFs, SshAgentIdentity, SshConfigParseRule, SshOpts};
use remotefs_webdav::WebDAVFs;
#[cfg(not(smb))]
@@ -141,7 +145,7 @@ impl RemoteFsBuilder {
fn scp_client(
params: GenericProtocolParams,
config_client: &ConfigClient,
- ) -> ScpFs {
+ ) -> ScpFs {
Self::build_ssh_opts(params, config_client).into()
}
@@ -149,7 +153,7 @@ impl RemoteFsBuilder {
fn sftp_client(
params: GenericProtocolParams,
config_client: &ConfigClient,
- ) -> SftpFs {
+ ) -> SftpFs {
Self::build_ssh_opts(params, config_client).into()
}
From 05c8613279e6ca63b483df10ea4ffcf208228936 Mon Sep 17 00:00:00 2001
From: Christian Visintin
Date: Thu, 2 Oct 2025 20:58:26 +0200
Subject: [PATCH 04/14] fix: Report a message while calculating total size of
files to transfer. (#362)
* fix: Report a message while calculating total size of files to transfer.
Currently, in case of huge transfers the app may look frozen while calculating the transfer size. We should at least report to the user we are actually doing something.
closes #361
* ci: windows runner
---
.github/workflows/windows.yml | 2 +-
CHANGELOG.md | 1 +
src/ui/activities/filetransfer/session.rs | 21 +++++++++++++++++----
3 files changed, 19 insertions(+), 5 deletions(-)
diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml
index 1f4235c..cc45cc1 100644
--- a/.github/workflows/windows.yml
+++ b/.github/workflows/windows.yml
@@ -15,7 +15,7 @@ env:
jobs:
build:
- runs-on: windows-2019
+ runs-on: windows-latest
steps:
- uses: actions/checkout@v2
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a7ab1ce..d0f40c9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -49,6 +49,7 @@ Released on 20/09/2025
- [Issue 356](https://github.com/veeso/termscp/issues/356): Fixed SSH auth issue not trying with the password if any RSA key was found.
- [Issue 334](https://github.com/veeso/termscp/issues/334): SMB support for MacOS with vendored build of libsmbclient.
- [Issue 337](https://github.com/veeso/termscp/issues/337): Migrated to libssh.org on Linux and MacOS for better ssh agent support.
+- [Issue 361](https://github.com/veeso/termscp/issues/361): Report a message while calculating total size of files to transfer.
## 0.18.0
diff --git a/src/ui/activities/filetransfer/session.rs b/src/ui/activities/filetransfer/session.rs
index f2e34e0..d58ac8d 100644
--- a/src/ui/activities/filetransfer/session.rs
+++ b/src/ui/activities/filetransfer/session.rs
@@ -1260,7 +1260,10 @@ impl FileTransferActivity {
/// Get total size of transfer for host_bridgehost
fn get_total_transfer_size_host(&mut self, entry: &File) -> usize {
- if entry.is_dir() {
+ // mount message to tell we are calculating size
+ self.mount_blocking_wait("Calculating transfer size…");
+
+ let sz = if entry.is_dir() {
// List dir
match self.host_bridge.list_dir(entry.path()) {
Ok(files) => files
@@ -1281,12 +1284,18 @@ impl FileTransferActivity {
}
} else {
entry.metadata.size as usize
- }
+ };
+ self.umount_wait();
+
+ sz
}
/// Get total size of transfer for remote host
fn get_total_transfer_size_remote(&mut self, entry: &File) -> usize {
- if entry.is_dir() {
+ // mount message to tell we are calculating size
+ self.mount_blocking_wait("Calculating transfer size…");
+
+ let sz = if entry.is_dir() {
// List directory
match self.client.list_dir(entry.path()) {
Ok(files) => files
@@ -1307,7 +1316,11 @@ impl FileTransferActivity {
}
} else {
entry.metadata.size as usize
- }
+ };
+
+ self.umount_wait();
+
+ sz
}
// file changed
From 4bebec369f1dd705f23680414914a523e8a0fd0a Mon Sep 17 00:00:00 2001
From: Christian Visintin
Date: Thu, 2 Oct 2025 21:27:51 +0200
Subject: [PATCH 05/14] fix: Issues with update checks (#363)
Removed error popup message if failed to check for updates.
Prevent long timeouts when checking for updates if the network is down or the DNS is not working.
closes #354
---
CHANGELOG.md | 3 +++
src/system/auto_update.rs | 31 +++++++++++++++++++++++++++++++
src/ui/activities/auth/misc.rs | 5 +----
3 files changed, 35 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d0f40c9..d2ca7c7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -50,6 +50,9 @@ Released on 20/09/2025
- [Issue 334](https://github.com/veeso/termscp/issues/334): SMB support for MacOS with vendored build of libsmbclient.
- [Issue 337](https://github.com/veeso/termscp/issues/337): Migrated to libssh.org on Linux and MacOS for better ssh agent support.
- [Issue 361](https://github.com/veeso/termscp/issues/361): Report a message while calculating total size of files to transfer.
+- [Issue 354](https://github.com/veeso/termscp/issues/354):
+ - Removed error popup message if failed to check for updates.
+ - Prevent long timeouts when checking for updates if the network is down or the DNS is not working.
## 0.18.0
diff --git a/src/system/auto_update.rs b/src/system/auto_update.rs
index f66e9ff..a0b618e 100644
--- a/src/system/auto_update.rs
+++ b/src/system/auto_update.rs
@@ -2,6 +2,8 @@
//!
//! Automatic update module. This module is used to upgrade the current version of termscp to the latest available on Github
+use std::net::ToSocketAddrs as _;
+
use self_update::backends::github::Update as GithubUpdater;
pub use self_update::errors::Error as UpdateError;
use self_update::update::Release as UpdRelease;
@@ -67,6 +69,9 @@ impl Update {
/// otherwise if no version is available, return None
/// In case of error returns Error with the error description
pub fn is_new_version_available() -> Result