Pixiv

OpenBaiduPan

用 Zig + Native SDK 构建的百度网盘原生桌面客户端 —— 声明式 markup 视图 + Elm 架构核心,无浏览器、无 WebView。

ZigNative SDK

OpenBaiduPan 是一个用 Zig 0.16 与 Native SDK 构建的百度网盘原生桌面客户端:声明式 Native markup 视图 + Elm 架构(Model / Msg / update)Zig 核心,无浏览器、无 WebView。API 行为对齐官方 baidu-drive-sdk-go。

功能特性

登录

  • 支持直接粘贴 access_token,或 OAuth 设备码流程(需自备 App Key / Secret Key)
  • 凭据存 Windows 凭据管理器,重启免登录

网盘浏览与文件管理

  • 面包屑导航、分页(100/页)、名称 / 时间 / 大小排序、容量与会员信息
  • 新建文件夹、重命名、复制、移动、删除(进回收站)

下载

  • filemetas 取 dlink 后用 curl 断点续传(curl -C -),实时进度与速度
  • 600ms statFile 轮询进度,失败时显示退出码;保留下载记录(打开文件 / 目录、删除)
  • 服务器不支持断点续传时自动整档重试

上传

  • 4 MiB 分片 MD5 → precreate(支持秒传)→ curl 分片上传 → create 合并
  • 拖入窗口即传,上限 4 GiB

界面

  • 参考 PanDownload 风格,页签导航、品牌蓝 #06A7FF、亮 / 暗双主题、全中文界面(Noto Sans SC)

架构设计

  • Elm 架构:update 函数为纯函数,Model / Msg 单向数据流
  • 效果通道:HTTP、curl 子进程、文件流、凭据、定时器全部经有界 effects 通道,结果以 Msg 回流
  • 上传管线:两遍读取 —— 流式计算分片 MD5,再经 256 KiB 锁步管道写临时文件(ping-pong 双缓冲)
  • 有界性约束:fx.fetch 请求体上限 64 KiB,故上传走 curl 子进程;模型数据固定缓冲,scratch arena 每条消息重置

构建与运行

native dev     # Debug 运行(markup 热重载)
native build   # ReleaseFast → zig-out/bin/OpenBaiduPan.exe
native test    # 单元测试(41 个)
native check   # manifest + markup 校验

需 Zig 0.16.0、native CLI(npm i -g @native-sdk/cli)、Windows 10+(依赖系统自带 curl)。

0%