Repository navigation
Releases: syncmeta/PendingNet
Release list
PendingNet 0.3.38
更新内容
- 修复 macOS 切换 VPS 偶尔不生效的问题,并清理旧版本遗留的本地代理进程。
- 修复快速关闭、打开或切换时操作堆积、响应迟缓以及连续报错的问题。
- 后台启停现在会串行执行且可安全重复调用,避免重复重建正常运行的 TUN。
使用说明
- 支持 macOS 14 及以上系统,同时支持 Apple Silicon 与 Intel Mac。
- 使用前需要一台已部署
pendingnet-server的 VPS;客户端已内置 sing-box。 - 首次使用 TUN 或系统代理模式时,需要在系统设置中允许 PendingNet 后台项目。
PendingNet 0.3.37
PendingNet 是配合自有 VPS 使用的 macOS 网络客户端。安装包已内置 sing-box,无需 Homebrew。
使用前请先在 VPS 部署 PendingNet 服务端:
curl -fsSL https://raw.githubusercontent.com/syncmeta/PendingNet/main/deploy/vps-install.sh | sudo bash0.3.37 更新
- 修复 TUN / 系统代理接管下流量统计停止更新的问题。
- 切换到后台接管时会先清理残留的“仅端口”引擎和统计器,避免 7777 端口被错误占用。
- 后台服务首次尚未响应时会继续重试,不再永久停留在错误接管状态。
系统要求:macOS 14 或更高版本。首次使用 TUN 或系统代理时,需要按系统提示允许 PendingNet 后台项目;仅端口模式不需要该授权。
本 Release 同时包含 Linux amd64/arm64 服务端二进制及 SHA-256 校验文件。
PendingNet 0.3.36
PendingNet 是配合自有 VPS 使用的 macOS 网络客户端。安装包已内置 sing-box,无需 Homebrew。
使用前请先在 VPS 部署 PendingNet 服务端:
curl -fsSL https://raw.githubusercontent.com/syncmeta/PendingNet/main/deploy/vps-install.sh | sudo bash0.3.36 更新
- 修复延迟测试不可用。
- 增加日志页面;大日志改为后台分页式尾部读取,避免界面卡死。
- 统一菜单栏单色图标,在浅色与深色菜单栏下均保持可见。
- 节点导入统一为“导入”:支持标准分享链接和一行一个的批量导入。
系统要求:macOS 14 或更高版本。首次使用 TUN 或系统代理时,需要按系统提示允许 PendingNet 后台项目;仅端口模式不需要该授权。
本 Release 同时包含 Linux amd64/arm64 服务端二进制及 SHA-256 校验文件。
PendingNet 0.3.35
更新内容
- macOS 客户端改为 Universal 构建,支持 Apple Silicon 与 Intel Mac。
- 修复白名单模式下国内域名 DNS 解析失败;升级后会迁移旧 root 配置。
- 新增“开机自启”设置,并按上次退出前的连接状态恢复。
- 修复菜单栏当前服务器不显示勾选状态。
- 菜单栏图标统一为白色模板图标。
- macOS 主窗口新增日志页,可查看 sing-box、统计服务与后台服务日志。
- 改进停止引擎后的状态与错误提示。
macOS 包已内置 sing-box 1.13.13。
PendingNet 0.3.34
PendingNet 是与自有 VPS 配合使用的 macOS / iOS 客户端。本版 macOS 安装包已内置 sing-box,首次安装后可直接使用,不再要求先通过 Homebrew 安装引擎。
0.3.34
- 从 sing-box v1.13.13 源码构建并把引擎嵌入 macOS App。
- App 与特权助手统一优先使用包内引擎,Homebrew 版本仅作为兼容回退。
- 首次使用 TUN 或系统代理时,由特权助手幂等安装 root 配置与 LaunchDaemon,不再依赖旧的手工安装脚本。
- 内置引擎、特权助手和统计采集器一并签名;缺少包内引擎会在 Release 构建时直接失败。
使用前提
- macOS 14 或更高版本。
- 需要一台已经安装
pendingnet-server并生成.pdn配对文件的 VPS。 - 首次使用 TUN / 系统代理时,请在「系统设置 → 通用 → 登录项与扩展」允许 PendingNet 后台项目;「仅端口」不需要这项授权。
VPS 一键安装:
curl -fsSL https://raw.githubusercontent.com/syncmeta/PendingNet/main/deploy/vps-install.sh | sudo bashPendingNet 0.3.33
自建代理的一套自用客户端。你需要一台自己的 VPS——这个仓库不托管任何服务端。
这一版:TUN 和系统代理下也有统计了
0.3.32 把统计做成了 App 自带、不再需要手工配,但只有「仅端口」这一种接管方式真的能看到数据;TUN 和系统代理下界面上只写了一句「暂时没有统计」。而按应用看流量,恰恰是 TUN 下才最有意义。
原因是这两种接管方式的 sing-box 由特权助手以 root 另起,它的 Clash API 密钥按设计不交给 App,采集器因此连不上去。这一版照既有的路由模式切换那条先例解决:采集器改由特权助手管——助手起引擎时把它一并拉起、停引擎时一并停掉、换配置时重来一遍,密钥全程留在助手一侧,既不出现在命令行上也不落进日志。App 那边照旧只从统计端口读,不需要知道自己处在哪种接管方式。
配套的几条:
- 三种接管方式同一时刻只有一个采集器,切换时两侧都先无条件停掉自己那份,不会两个抢同一个端口。
- 三种方式写同一个数据库,切换接管方式不会让历史统计清零。
- 助手以 root 拉起采集器时会先降到登录用户身份,数据库及其 -wal/-shm 不会变成 root 所有。
- 统计页那句没有下一步的话删掉了,现在分「还没连接」「这段时间没流量」「采集器起不来(带原因和怎么查)」「助手还是旧版(怎么办)」。
助手 XPC 接口升到版本 5,旧助手由既有的版本握手自动退场,不需要重新授权。
docs/stats-service.md 记了这套东西归谁管、密钥怎么流、以及装上之后逐条验什么。
VPS 一键部署
curl -fsSL https://raw.githubusercontent.com/syncmeta/PendingNet/main/deploy/vps-install.sh | sudo bash跑完直接给一条 pendingnet:// 配对链接,在装了 PendingNet 的 Mac / iPhone 上点一下就完成导入。
系统要求和硬性前提
- macOS 14 或更高。安装包经 Developer ID 签名并通过 Apple 公证。
- 装完要去「系统设置 → 通用 → 登录项与扩展」打开 PendingNet 的后台项目——不打开,TUN 和系统代理两种模式都用不了。
- 要连上必须有一台自己的 VPS,用上面那条命令装好并生成配对链接。
已知边界
arm64 的服务端二进制只是交叉编译出来的,没在真 arm64 机器上跑过。iOS 版只能走 App Store / TestFlight。
PendingNet 0.3.32
自建代理的一套自用客户端。你需要一台自己的 VPS——这个仓库不托管任何服务端。
这一版的重点:统计不再需要手工配
以前 macOS 客户端的「实时 / 应用 / 域名」三个页面,对绝大多数人是永远打不开的:统计数据由一个独立的采集器提供,而 App 从来不安装、也不启动它,界面上也没有任何地方能启用——只有当年手工做过 deploy/install.sh 的机器才碰巧有。现在改成:
- 采集器随 App 走(打进安装包并纳入签名),不再依赖机器上装没装过什么。
- 它跟代理引擎同生命周期:引擎起来它就起,引擎停掉它就停。换 VPS、换端口、改分流都会让引擎就地重启,这些路径走的是同一个入口,不会漏。
- 访问引擎的密钥每次现读,引擎重新生成密钥之后统计会自己恢复,不再静默失灵。
- 默认端口被占时会说清是谁占的、怎么查,必要时自动改用另一个端口;旧机器上遗留的采集器会被干净接管,历史数据不丢。
- 统计页那句没有下一步的「统计服务尚未启用」删掉了,换成四种能看出该做什么的说法:还没连接 / 这段时间没流量 / 采集器起不来(带原因)/ 在跑但这次没读到。
同时修掉采集端一个真 bug:监听端口被占用时它把错误吞掉了,进程活着但一个字节都不服务。
VPS 一键部署(0.3.31 引入,这一版继续改进)
curl -fsSL https://raw.githubusercontent.com/syncmeta/PendingNet/main/deploy/vps-install.sh | sudo bash跑完屏幕上直接给一条 pendingnet:// 配对链接,在装了 PendingNet 的 Mac / iPhone 上点一下就完成导入。这一版脚本的改动:
- 每次跑都会把机器上的服务端对齐到该用的版本。此前在装过旧版的机器上重跑,会沿用旧二进制、吐出老格式的
.pdnJSON 而不是链接。 - 生成后加了兜底检查:拿到的不是
pendingnet://链接就不算成功,直接说清原因。 - 新增
pendingnet-server version,一句话查清机器上装的是哪一版。 - 输出砍到只剩进度和链接;详细日志落到
/tmp/pendingnet-install.log,说明性内容进--help和 README。
系统要求和硬性前提
- macOS 14 或更高。安装包经 Developer ID 签名并通过 Apple 公证。
- 装完要去「系统设置 → 通用 → 登录项与扩展」打开 PendingNet 的后台项目——不打开,TUN 和系统代理两种模式都用不了。
- 要连上必须有一台自己的 VPS,用上面那条命令装好并生成配对链接。
已知边界
arm64 的服务端二进制只是交叉编译出来的,没在真 arm64 机器上跑过。iOS 版只能走 App Store / TestFlight。
PendingNet 0.3.31
自建代理的一套自用客户端。你需要一台自己的 VPS——这个仓库不托管任何服务端,下载了 app 也连不上任何现成节点。
这一版的重点:VPS 那头变成一条命令
在一台全新的 Debian VPS 上以 root 执行:
curl -fsSL https://raw.githubusercontent.com/syncmeta/PendingNet/main/deploy/vps-install.sh | sudo bash脚本自己探公网 IP、下载并校验服务端二进制(下不到就现场装 Go 编译)、装好并启动服务,最后在屏幕上打印一条 pendingnet:// 配对链接。在装了 PendingNet 的 Mac / iPhone 上点一下那条链接就完成导入,链接被聊天软件吞掉时也可以整条复制、粘进 App 连接页的「粘贴链接导入」框。
再要一条链接就跑 sudo pendingnet-server pair create。凭据规则没变:默认十分钟过期、只能用一次、一台设备一份——它等同于密码,别往公开地方贴。
脚本不会替你改防火墙,跑完会把需要放行的三个入口(443/tcp、443/udp、7443/tcp)列出来,你自己在云厂商安全组里开。第二次在同一台机器上跑只补一条新链接,不动在跑的服务;要重做部署得显式加 --force-provision(已配对的客户端会立刻失效)。
其他改动
- 配对文件多了一种形态:一条
pendingnet://链接。macOS 和 iOS 都注册了这个 scheme,点一下直接唤起配对。原来的.pdn文件一个字没删(pair create --format json --out xx.pdn)。 provision加了--force,允许重做自己装过的机器;中途失败会把停掉的服务原样拉回来。- 发布产物新增 Linux 服务端二进制(amd64 / arm64)和
SHA256SUMS,一键脚本据此秒装。
系统要求和硬性前提
- macOS 14 或更高。安装包经 Developer ID 签名并通过 Apple 公证。
- 装完要去「系统设置 → 通用 → 登录项与扩展」把 PendingNet 的后台项目打开——不打开,TUN 和系统代理两种模式都用不了。
- 要连上必须有一台自己的 VPS,按上面那条命令装好
pendingnet-server并生成一条配对链接。
已知边界
arm64 的服务端二进制只是交叉编译出来了,从没在真的 arm64 机器上跑过。一键脚本在容器里跑通了全套场景,但公网入站(云厂商安全组这类)只能在真机上验。iOS 版不能从这里分发,只能走 App Store / TestFlight。
PendingNet 0.3.30
修一个 0.3.29 没修对的问题。
这一版改了什么
- 菜单栏图标把整条菜单栏占满了。 0.3.29 试过在界面代码里给图标加尺寸限制,装上去毫无变化——
MenuBarExtra的 label 只取原样的Image,加在上面的.resizable()/.frame()会被丢掉。实测已装的 0.3.29 里NSImage.size仍是 756×630 点(菜单栏总共才 22 点高)。真正的原因是图标资源本身就是一张 756 点的大图,从来没按菜单栏尺寸出过。现在按 22×18 点出 @1x/@2x/@3x 三档,编译后的Assets.car里是 22×18 @1x / 44×36 @2x。
0.3.29 的其余内容(DNS 缓存冲刷、换网卡自愈收窄、引擎优雅重启)见 0.3.29 的发布说明。
用之前要知道的
- 需要一台你自己的 VPS,上面装好
pendingnet-server并生成一份配对凭据(.pdn文件或配对链接)。这个 App 本身不提供任何节点。 - macOS 14 或更高。安装包经过 Developer ID 签名和 Apple 公证。
- 装完要去「系统设置 → 通用 → 登录项与扩展」把 PendingNet 的后台项目打开,否则 TUN 和系统代理两种接管方式都用不了。
完整提交记录:v0.3.29...v0.3.30
PendingNet 0.3.29
PendingNet 是一个 macOS / iOS 客户端,把 sing-box 的流量按「哪个 App」拆开统计,并管理你自己那台 VPS 上的节点。项目说明见 README。
这是本仓库的第一个 GitHub Release。 已经装了 App 的人一直从内置的自动更新通道收更新,这条通道是给第一次来的人下载用的。
用之前要知道的
- 需要一台你自己的 VPS,上面装好
pendingnet-server并生成一份配对凭据(.pdn文件或配对链接)。这个 App 本身不提供任何节点——没有服务端,下载下来打开也连不上。 - macOS 14 或更高。安装包经过 Developer ID 签名和 Apple 公证,Gatekeeper 直接放行。
- 装完要去「系统设置 → 通用 → 登录项与扩展」把 PendingNet 的后台项目打开。 不打开的话,TUN 和系统代理两种接管方式都用不了。
怎么装
下载 PendingNet-0.3.29.zip,解压后把 PendingNet.app 拖进「应用程序」。
这一版改了什么
修复
- 菜单栏图标把整条菜单栏占满了。 图标只被限定了高度、宽度没约束,系统就按图片原始尺寸(756pt)给它腾地方。现在宽高一起钉死。
- 被污染的 DNS 记录会一直缓存着,只有重启电脑才能恢复上网。 开机那几秒代理还没起来,系统去问上游 DNS 拿回一条投毒应答,之后就一直用这条假记录——重启引擎、换代理软件都救不回来。现在引擎启动、切换接管方式、应用配置、换网卡自愈、停止引擎这五个时刻各冲一次系统 DNS 缓存。
- 换网卡自愈会白重启引擎。 过去只要默认网关变了就判定「换网卡了」,于是兜一圈回到同一条链路也会把引擎踢一遍。现在只有网卡或地址真的变了才重启。
- 重启引擎不再 SIGKILL 硬杀。 先请 sing-box 自己退(拆掉 TUN、还原系统网络),确认进程真的没了再拉新的,5 秒不退才补刀。原来的硬杀加立刻重拉会让新进程绑不到网卡——起来了却没网。重启后还会自检一次,没绑上就再来一次。
改进
- 菜单栏换成 PendingNet 自己的图标(明暗两套),面板里不再重复放品牌头。
- 错误提示改成浮层弹一下自动消失,不再作为一条常驻文字挂在卡片里。
- 后台服务的日志加了轮转,不会无限长下去。
- iOS 的路由档位和 macOS 对齐成 全局 / 白名单 / 黑名单 三档。
完整提交记录:v0.3.28...v0.3.29