Skip to content

Releases: SeverusZh/BluetoothTransfer

BluetoothTransfer v1.4.0

Choose a tag to compare

@SeverusZh SeverusZh released this 13 Aug 17:48

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 通道共用 OppProtectionLevelencrypt 启用链路加密
  • 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

Choose a tag to compare

@SeverusZh SeverusZh released this 07 Aug 07:37

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 主机互传

  1. 双方运行完整 GUI(或一方用 btrecv
  2. 接收方在「接收助手」面板点「开始监听」(默认保存到 下载\BluetoothReceive
  3. 发送方扫描/收藏到对方设备后直接发送——自动走接收助手通道(断点续传 + SHA-256 校验)

引导一台未装任何软件的目标机

  1. 发送端先用 OPP 推送 btrecv-cli-only.zip
  2. 对端解压运行 btrecv run(无需安装 .NET)
  3. 发送端重新扫描,设备出现「助手」徽标即探测成功,之后自动走私有通道

⚠️ 已知限制

  • 私有通道 v1 为明文,无应用层加密(需要时可使用 Windows 链路层配置)
  • iPhone 不支持 OPP 接收;Android 走 OPP(无续传、单任务)
  • 接收端同一时刻只处理一个传输,忙时回 BUSY
  • 同一台机器上完整 GUI 与 btrecv 二选一运行(同一服务 UUID)

v1.2.0

Choose a tag to compare

@SeverusZh SeverusZh released this 01 Aug 10:38

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