Releases: SeverusZh/BluetoothTransfer
Releases · SeverusZh/BluetoothTransfer
Release list
BluetoothTransfer v1.4.0
BluetoothTransfer v1.4.0 🎉
稳定性与安全全面加固版:断点续传修复、协议输入硬化、默认安全基线、可测试性改造。
相比 v1.3.0:29 个提交 · 184 项自动化测试(+54)· 构建 0 警告 / 0 错误
🛠️ 核心修复
断点续传(本次最重要修复)
- 修复「断线即删半成品」:v1.3 中连接中断会删除
.btpart半成品,重连后只能从头重传,断点续传名存实亡;现已保留半成品,真正实现「中断后从已确认偏移继续」 - 接收端协议输入硬化:拒绝空/非法 SHA-256、负或超限 FileSize、整数溢出边界绕过、写入累计上限断言
- 客户端校验 ACK 偏移:防御异常对端导致的死循环重发与误判成功
队列与并发
- 修复暂停/继续竞态导致任务丢失(暂停后立即继续的任务可能被误标取消并移出队列)
- 修复发送队列跨线程改写绑定集合(WPF CollectionView 崩溃隐患)
- 队列启动失败不再静默:异常现在明确上报日志
安全加固
- 接收端默认每次接收前询问(GUI 内置接收 +
btrecv,btrecv 新增--no-ask),防止已配对设备未经确认直接落盘 - 助手通道链路加密可配置:与 OPP 通道共用
OppProtectionLevel,encrypt启用链路加密 - CSV 导出防公式注入;配对 PIN 真正传入系统(此前
--pin被静默丢弃);配置读写失败不再静默
使用体验
- 修复扫描完成后按钮「卡灰」:命令使能即时刷新
- 记录/队列/日志/接收列表新增空状态提示;键盘焦点视觉与可访问性标注;颜色资源统一
--mode auto真正回退 OPP;CLI 参数缺值/未知选项报错、REPL 引号分词;指数退避与文档对齐(3/6/12s)- 版本号单一来源;Size 人性化显示;导出/清空记录后台化不再卡 UI
🏗️ 工程与质量
- 测试:130 → 184 项(新增断线续传、暂停竞态、协议硬化、重试/超时/取消路径、CSV 注入、控制器并发守卫等回归测试)
- 架构:新增
BluetoothTransfer.AppServices独立类库(根除链接编译);OppViewModel组合式拆分(设备域/记录域控制器);手工依赖注入(零新增依赖)使 UI 逻辑可单测 - 构建基线:0 警告 / 0 错误
📦 产物
| 产物 | 说明 |
|---|---|
btrecv-cli-only.zip(约 6MB) |
接收助手纯 CLI 自包含,OBEX 引导首选 |
btrecv-selfcontained.zip / btrecv-frameworkdependent.zip |
接收助手完整 GUI(含 / 不含运行时) |
BluetoothTransfer-selfcontained.zip / BluetoothTransfer-frameworkdependent.zip |
完整发送端 GUI(含 / 不含运行时) |
📝 说明
- 发送端:Windows 10 2004+ / Windows 11;接收端(如 Android 手机)无需安装任何软件
- iPhone(iOS)不支持蓝牙文件接收协议,无法通过 OPP 推送
- 完整变更与代码审查记录见仓库
CODE_REVIEW.md(如不可见则为本地维护文件,见提交历史)
v1.3.0
v1.3.0 — 接收助手与断点续传(Windows 双向互传)
✨ 主要特性
- 接收助手通道(Windows ↔ Windows):私有分片协议(自定义 RFCOMM UUID),支持断点续传(从已确认偏移继续,接收端保留
.btpart半成品,重连自动续传)与 SHA-256 校验(不匹配自动清空重传);明文 v1,无应用层加密 - 发送端 SDP 自动探测:对端运行助手时自动走私有通道,离线自动回退 OPP 通用推送;GUI / CLI 均可强制通道(
auto/assistant/opp) - 完整 GUI 内置接收助手:开始/停止监听、实时进度、本会话完成列表、保存目录、每次接收前询问——两台主机运行完整 GUI 即可互传(或一方用完整 GUI、一方用
btrecv) - 真正的传输队列:任务暂停 / 继续 / 移除 / 重试;接收端忙时指数退避;队列显示通道列(OPP / 助手)
- btrecv 最小接收端:CLI 内核 + 极简 GUI 壳;纯 CLI 自包含裁剪形态约 6MB,可先用 OPP 引导推给目标机,解压即用
- 收藏夹:收藏设备本地持久化、启动自动加载、收藏置顶;修复「从未发送的设备也可收藏、发送成功不再清空收藏」
- GUI 体验:列表悬停滚轮、日志自动跟随、设备「助手」徽标、接收记录含对端蓝牙地址与名称
- CLI 新增:
btcli detect(探测助手)、--mode(通道选择)、package-receiver(一键发布)、--verbose
📦 下载
| 产物 | 说明 | 运行时 |
|---|---|---|
BluetoothTransfer-selfcontained.zip |
完整发送端 GUI(内置接收助手) | 含 .NET 8 运行时,免安装 |
BluetoothTransfer-frameworkdependent.zip |
完整发送端 GUI | 不含运行时,需 .NET 8 桌面运行时 |
btrecv-selfcontained.zip |
接收助手完整 GUI | 含 .NET 8 运行时,免安装 |
btrecv-frameworkdependent.zip |
接收助手完整 GUI | 不含运行时 |
btrecv-cli-only.zip |
接收助手纯 CLI(引导首选) | 含运行时(裁剪) |
btrecv-cli-frameworkdependent.zip |
接收助手纯 CLI | 不含运行时 |
🚀 快速开始
两台 Windows 主机互传
- 双方运行完整 GUI(或一方用
btrecv) - 接收方在「接收助手」面板点「开始监听」(默认保存到
下载\BluetoothReceive) - 发送方扫描/收藏到对方设备后直接发送——自动走接收助手通道(断点续传 + SHA-256 校验)
引导一台未装任何软件的目标机
- 发送端先用 OPP 推送
btrecv-cli-only.zip - 对端解压运行
btrecv run(无需安装 .NET) - 发送端重新扫描,设备出现「助手」徽标即探测成功,之后自动走私有通道
⚠️ 已知限制
- 私有通道 v1 为明文,无应用层加密(需要时可使用 Windows 链路层配置)
- iPhone 不支持 OPP 接收;Android 走 OPP(无续传、单任务)
- 接收端同一时刻只处理一个传输,忙时回 BUSY
- 同一台机器上完整 GUI 与 btrecv 二选一运行(同一服务 UUID)
v1.2.0
BluetoothTransfer 1.2.0 — 通用蓝牙推送
仅发送端安装本应用,即可通过标准蓝牙 OBEX OPP 向任意支持“蓝牙文件接收”的设备(Android 手机/平板、Windows 电脑、功能机等)推送文件,接收端无需安装任何软件。
功能亮点
- 文件 / 文本 / 文件夹推送(文件夹自动打包 zip,单文件可选 --zip)
- 自动重试:连接失败、超时、对端忙等临时错误按指数退避自动重试
- 发送队列:多文件顺序推送、取消全部、失败单点重发
- 设备收藏 / 别名 / 最近连接排序
- 拖放与剪贴板发送(文本 / 图片)
- 实时进度、速率(KB/s)与剩余时间
- 传输记录:查询、导出 CSV/JSON、一键清空
下载
| 文件 | 说明 |
|---|---|
| BluetoothTransfer.exe | 图形界面(win-x64,自包含单文件,免装 .NET 运行时) |
| btcli.exe | 命令行工具(win-x64,自包含单文件) |
系统要求
- Windows 10 2004+ / Windows 11,内置或外置 USB 蓝牙适配器
- 接收端需支持蓝牙文件接收(OPP)并已与本机配对;iPhone(iOS)不支持
说明
- 1.2 起聚焦通用推送单模式,已移除 1.0 双端互联
- OPP 为明文传输且无断点续传(由自动重试缓解);详细说明见仓库 README