Add typed SSH remote URLs and optional Cargo feature wiring #113
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Extend the storage-owned remote model from HTTPS-only URLs to a typed HTTPS-or-SSH contract without weakening rejection of local, helper, or executable transports.
Scope
url::Urlwith a typed remote endpoint owned bycrates/storage.ssh://[user@]host[:port]/path[user@]host:path, including the requestedgit@host:pathformssh://path beginning with/is absolute, an scp-like path without/is relative to the remote account, and the documented~userform remains distinguishable.ssh://, usernames, and non-empty repository paths into validated fields. Never recover transport state from display text.ext::,git://,file://, local paths, and every helper transport before connection work.sshfeature incrates/storagecontaining only the Rust SSH/runtime dependencies. The endpoint model must remain available without that feature so an unavailable build returns a typed unsupported-transport error instead of misparsing the config.russhand its async runtime behind the optional feature. Select a current patched Apache-2.0-compatible release and one deliberate crypto backend; do not enable legacy/insecure algorithms accidentally.Tests and verification
sshcontains norusshdependency and reports SSH as unsupported before DNS, socket, credential, or repository mutation work.Acceptance criteria
crates/storageremains the only owner of remote parsing and transport selection.References: https://git-scm.com/docs/git-clone#_git_urls and https://docs.rs/russh/latest/russh/
Implemented in commit
f636f3b.Verification: cargo fmt --all -- --check; warnings-as-errors workspace check; Clippy with warnings denied; full workspace tests; feature-enabled storage check and focused tests; feature-tree inspection; and release desktop bundle build all passed. Computer Use on the exact target/release/IronStorage.app opened Git Status successfully and confirmed the existing HTTPS origin remained clean at 0 ahead / 0 behind. No Apple source changed, so iPhone Simulator/device validation was not applicable.
Installed cargo-audit 0.22.2 and audited the final lockfile. The audit found and this commit fixes h2 RUSTSEC-2026-0258 by updating 0.4.15 to 0.4.16. The only remaining vulnerability is pre-existing rsa 0.9.10 RUSTSEC-2023-0071 through pgp/apple-codesign; RustSec currently lists no fixed release. The new SSH feature does not enable Russh RSA.