本文件记录 ii 的重要变更。默认中文版本在这里,英文版本见 CHANGELOG.en.md。
- 修复
ii socks5的 CONNECT 半关闭连接回收:任一方向关闭后,另一方向最多 5 秒收尾,避免目标 keep-alive 或未回 FIN 的连接持续占用 socket 和连接槽位。
ii socks5的域名CONNECT现在会在同一 30 秒总时限内并发尝试 DNS 返回的全部地址;满额时新 TCP 连接留在监听队列等待容量释放,不再被应用层立即关闭。- 非回环监听的
ii socks5现在明确警告:SOCKS5 流量和 RFC 1929 用户名密码认证均为明文。公网裸 SOCKS5 可能被扫描或被网络路径干扰;需要加密公网代理时使用ii proxy --tls、VPN 或 SSH 隧道。
ii socks5新增--max、--handshake-timeout、--idle-timeout,默认限制 100 个活动连接、10 秒 SOCKS5 握手和 5 分钟无流量的 CONNECT 隧道,防止公网半开和永久空闲连接耗尽服务资源。
ii test仅在经代理读取到目标响应体数据后才将目标访问判为通过;仅有响应头的空响应现在会明确失败。
- 新增
ii test代理连通性诊断,支持 SOCKS5、HTTP 和 TLS 包裹 HTTP 代理;依次测试代理连接、经代理访问 HTTP(S) 目标及连接延迟,支持可选用户名密码认证。 ii proxy支持 HTTPS:--tls可生成临时自签证书,--domain、--cert、--key支持自定义域名和 PEM 证书。
- 新增
ii ftp [目录]FTP 服务端:默认共享当前目录、仅主动模式、匿名登录、100 个控制连接和完整文件操作权限;支持账号密码、共享总限速、连接上限、独立操作权限,以及显式--passive-ports后的主动加被动模式。 ii ftp --tls新增强制显式 FTPS;--implicit新增传统隐式 FTPS,默认端口990;两者支持临时自签证书或--cert、--keyPEM 证书。
- 新增
ii http只读目录站、ii paste文本分享、ii drop续传上传收集箱、ii pacPAC 托管与ii speed双向 HTTP chunked 测速;它们复用 LAN URL、二维码、token 和发现服务。 - 新增
ii proxyHTTP 正向代理、ii tcp/ii udp固定目标转发、ii pingTCP connect 延迟探测、ii port并发端口检查、ii healthHTTP(S)/TCP 健康检查和ii wakeWake-on-LAN。
ii recv --trace输出 Iroh 实际选中的 LAN、直连或 relay 路径及 RTT。ii send、ii watch、ii queue的--relay可重复指定;多个显式 relay 会按探测到的可达性和延迟择优,默认 n0 relay 行为不变。ii send --web与ii web --upload支持浏览器分块上传续传,断网或刷新后重新选择同一文件即可继续。- 新增
ii socks5普通 SOCKS5 代理,支持CONNECT、UDP ASSOCIATE、BIND、IPv4、IPv6、域名目标和可选用户名密码认证。
ii send和ii recv支持--checksum md5|sha256;校验和仅在本地计算和输出,不写入 ticket,也不自动比较。ii send <file> --preserve-metadata可用现有 tar 载荷保留单文件的 mtime、权限和只读属性;目录和多路径归档支持--symlinks follow|preserve|reject。- 新增进程内 FIFO
ii queue与轮询式ii watch,支持延迟、定时、稳定检测和现有发送后端。 ii send、ii recv、ii watch、ii queue支持--quic-port固定 P2P Iroh UDP 端口;ii doctor --nat输出短生命周期的 UDP、NAT 和 relay 探测结果。ii web --once在第一次完整普通文件下载后关闭;目录页、HEAD、Range、上传和失败请求不会触发关闭。
ii send --web默认在第一个完整下载完成后退出;加-t后才持续提供下载。访问页面、上传或失败下载不会结束服务。
ii dav支持 HTTP Basic Auth:--username与--password必须成对提供。ii dav支持 HTTPS:--tls可生成临时自签证书,--domain、--cert、--key支持自定义域名和 PEM 证书。
- 新增 Linux x86_64 和 Apple Silicon macOS 的
install.sh安装脚本,可下载最新 Release、校验 SHA-256 并安装到~/.local/bin或II_INSTALL_DIR。
- Release 产物新增
checksums.txt,并在 Linux CI 中验证安装脚本安装后的版本。
ii send --r2使用独立的 Cloudflare R2 profile;ii send --azure支持 Azure Block Blob 的 Shared Key 或 Container SAS。
ii send --s3现在只表示通用 S3 兼容对象存储,首次配置 endpoint、region、bucket、凭据和 path-style。- 旧
[storage.s3.<name>]的provider = "cloudflare-r2"不再迁移;改写为[storage.r2.<name>]并使用--r2。已生成的签名对象 URL ticket 仍可接收。
ii send支持多文件/目录混合发送、--include/--exclude筛选、--rate总带宽限制和--jsonJSON Lines 事件。- 新增
ii discover局域网发现,以及ii web、ii dav、ii send --web的--bindIPv4/IPv6 监听。 - 新增读写
ii dav局域网 WebDAV 服务,支持桌面客户端常用请求、Range、chunked PUT 和进程内锁。
ii send -t改为最多 16 个并发接收任务和最多 1000 个 FIFO 排队连接;单个接收端断线或超时不再阻塞其他空闲槽位的断点续传。
ii relay改为无参启动 HTTP relay,默认随机端口,支持--port固定端口;终端输出可访问 IPv4 URL 和other:网卡 URL。--tls改为可选自签 HTTPS 开关,--domain指定 TLS 域名,--cert和--key可替换自动证书;删除--public与-H。ii send --relay与ii tunnel -s --relay支持 HTTP 或 HTTPS URL;-k仅可用于 HTTPS relay。
ii send ... --web与ii web默认关闭网页上传;只有--upload才显示上传控件并开放上传接口,未配--upload的--path会被忽略。ii send ... --web、ii web与ii webrtc的裸--token自动生成并打印 32 字符路径访问令牌;--token <value>与--token=<value>保持可用。
ii send ... --web、ii web与ii webrtc支持--port <port>指定 HTTP 监听端口;未提供时仍随机选择。- 新增
ii help [command],可显示命令总览或指定命令的帮助。
- 修复 Unix 平台构建测试时缺少
PathBuf导入的问题。
- 将 CLI 内核按命令、服务、传输、后端、Web、ticket、存储和 relay 职责拆分为独立模块;命令行、GUI 门面、ticket 编码和网络协议保持兼容。
ii webrtc支持向当前选中设备发送文本消息;长文本按 UTF-8 字节以不超过 1 MiB 的分片传输,接收端重组为一条消息并提供复制按钮,不保存聊天记录。
- 新增
ii tunnel -s <target-host:port>与ii tunnel -c <ticket>,通过现有 Iroh 直连或 relay 临时转发 TCP;ticket 内含访问密钥和指定 relay 的 TLS 信任策略。
ii web的普通文件支持 HTTP 单区间 Range、HEAD、常见媒体/PDF/图片 MIME;浏览器可原生播放并断点续传下载。
- 新增
ii webrtc [--token <value>]:临时提供局域网浏览器间 WebRTC 文件直传房间,终端输出二维码和全部 IPv4 LAN URL;文件不经过ii进程,不使用公网 STUN/TURN。
- 修复
ii webrtc在移动浏览器之间因 mDNS host candidate 无法解析或 ICE gathering 不结束而无法建立 DataChannel 的问题;信令使用访问服务的客户端局域网 IPv4 并即时转发候选。 ii webrtc页面在加入房间前实际验证 ICE host candidate;浏览器禁用或阻止 WebRTC 时明确提示,避免只能发现设备但无法传输。
- 新增 webrtc.md,说明局域网范围、浏览器要求、内存限制、路径令牌和不支持的能力。
- 新增
ii web [目录]:临时提供局域网递归目录浏览、普通文件访问与多文件上传;支持--token和--path,终端输出二维码与全部 IPv4 LAN URL。 ii send ... --web --path <目录>可指定网页上传文件直接写入的目录;相对路径按启动目录解析,未指定时仍写入./ii/。
--web分享页支持多文件上传,文件流式写入启动目录下的./ii/;同名文件覆盖。- 新增
ii send ... --web --token <value>路径访问令牌;网页、下载、上传、终端 URL 与二维码均使用该路径,缺失或错误路径返回404。
- 更新中英文 README 和命令手册,说明网页上传和
--token的用法及限制。
- 新增
ii send <文件或文件夹> --web,临时提供局域网 HTTP 分享页;终端和网页均提供二维码,目录下载为.tar。 - 输出主局域网 URL 和其余物理、虚拟网卡 IPv4 URL,并为手机页面调整布局。
- 修正 Release 流水线的 UPX 平台处理:Windows 解压前清理残留目录,macOS 压缩 Mach-O 时传入
--force-macos。
- Release 流水线继续报告三端 CLI 的 UPX 压缩大小,但不再以大小限制阻断发布。
- Release 流水线仅构建和发布 CLI 三端产物;修正 Linux 与 macOS 使用 UPX 路径时误写入 UPX 保留环境变量的问题。
- 新增
ii send --ftp和ii send --sftp,支持 FTP 与 SFTP 中转发送文件、stdin 和目录。 - 新增 FTP/SFTP profile、便携 ticket、接收后删除远端对象和
ii doctor配置检查。 - 新增基于 Slint 的
ii-gui桌面客户端,提供发送、接收、S3/WebDAV/TLS relay profile 管理、传输队列和诊断界面。
- Release 流水线新增 Windows GUI 可执行文件、Linux AppImage 和 macOS
.app.zip产物。 - 裁剪 relay、S3、WebDAV、FTP 和日志依赖;保留现有 CLI、配置格式和传输协议兼容性,并在发布流水线中增加三端 CLI 的 UPX 完整性与 1 MiB 大小门禁。
- 新增 FTP 与 SFTP 中转说明,并同步中英文 README 和完整命令手册。
- 更新发布版本元数据。
ii relay --public <https-url>自动生成并持久化自签 HTTPS relay 证书。ii send --relay <https-url> -k接受自签 relay,并把该信任策略写入 ticket,接收端无需额外配置。
- 指定
--relay时发送和接收都强制 relay-only,不再尝试 UDP、局域网发现或点对点直连。 - 手工 TLS relay 继续使用系统证书验证;自签 relay 的首次连接仍可能遭遇中间人替换。
- 更新自签 relay、手工 TLS、端口、状态文件和安全边界说明。
ii relay新增--tls <domain> --cert <path> --key <path>,使用运维方提供的 PEM 证书和私钥启动 HTTPS relay。- TLS 模式不再开放公网 HTTP relay;证书和域名必须由运维方负责。
- 移除 ACME 自动证书、自动续期和 QUIC 地址发现,默认 relay 保持纯 HTTP。
ii doctor默认检查3340/tcp。
- 更新 HTTPS 手工证书和 relay 端口说明。
ii relay默认启动无需域名或证书的 HTTP relay,监听3340/tcp。
- TLS、QUIC 地址发现和 metrics 改为通过 relay 配置显式启用,默认不启动。
- 移除默认 DNS peer discovery 和未使用的 CLI 依赖,缩小发布依赖树。
- 更新 relay 的默认启动、HTTPS/QUIC 配置和反向代理说明。
- 修复 Windows 配置路径单元测试在 Linux/macOS runner 上解析反斜杠路径失败的问题。
- Release 构建启用 LTO、strip、
opt-level = "z"和panic = "abort",进一步压缩二进制体积。 ii doctor在未启用relay-metricsfeature 时明确显示 metrics 未启用。
- 修正 S3/WebDAV 默认 profile 选择逻辑,避免被
[storage].profile的旧共享字段互相干扰。 - 保留旧
[storage.s3.cloudflare]配置的兼容迁移,默认 S3 profile 统一为default。
- README 进阶用法补充
ii send --s3的 S3/R2 中转示例。
- 新增
ii send --webdav,支持通过 WebDAV 中转发送文件、stdin 和目录。 - 新增
ii send --webdav -p,生成包含 WebDAV URL、用户名和密码的便携 ticket,方便接收端无配置接收。 ii send --webdav -d支持接收成功后由接收端尝试删除 WebDAV 远端对象。- 新增
ii send --profile <name>,用于选择 S3 或 WebDAV 后端 profile。 ii doctor增加 WebDAV 配置检查。
- Windows Release 压缩改为使用仓库内置的 UPX 5.1.0,不再在 GitHub Actions 中临时下载 UPX。
ii recv在交互式终端中实时显示传输进度和传输速率。- 新增
ii send -c,显式把ii recv ...接收命令复制到剪贴板。 - 新增
ii send -o <path>,把ii recv ...接收命令写入指定文件。 ii recv传输完成时显示总耗时和平均速度。
- 加入正式
iilogo 资源。 - README 顶部加入 logo 展示。
- Windows 构建时把
logo.ico嵌入ii.exe。
- GitHub Actions Release 产物改为直接发布原始二进制文件,不再打包成 zip 或 tar.gz。
- Windows Release 可执行文件保留 UPX 压缩。
- README 加入同事临时传文件场景截图。
- 新增
iiCLI,包含send、recv、relay、doctor、version。 - 支持文件、文件夹和 stdin 传输。
ii send默认一次性发送;使用-t可以保持发送端继续运行,允许多个接收端接收。ii recv默认支持断点续传、覆盖同名不同内容文件、跳过同名同内容文件。- 新增
ii relay,支持 relay 配置生成和端口覆盖。 - 新增
ii recv --trace,用于输出连接和传输耗时诊断。
- 目录接收结果改为只生成一层顶级目录,避免出现重复嵌套目录。
- 接收端连接策略改为先短时间尝试完整地址集,失败后回退到 relay-only,避免不可达地址拖慢建连。
- 修复传输完成后连接关闭等待不完整导致的不完整传输问题。
- 修复发送端在成功接收后仍可能输出超时错误的问题。
- 移除
ii send --once;一次性发送现在是默认行为。 - 新增
ii send -t用于原来的保持运行行为。