Releases: pickrui/oixcloud-external-proxy-program
Releases · pickrui/oixcloud-external-proxy-program
Release list
v0.0.9
- 修复「每过一段时间节点全部离线、需要重新导入 Surge 才恢复」:节点连接参数现在每 10 分钟自动刷新(菜单栏与多端口映射模式),不再依赖每日一次的配置刷新
- 更快自愈:网络切换、睡眠唤醒后立即刷新;连续拨号失败自动强制刷新;服务器更换 ECH 配置时自动使用其提供的新配置重连
- 登录失效(令牌过期/被下线)不再静默失败:菜单与图标提示「登录已失效」,可一键重新登录;手动「更新节点」失败时保留现有列表并说明原因
- 菜单栏图标随状态变化:正常 / 面板不可达或节点离线 / 登录失效 / 未登录
- 新增「诊断…」:一键检查面板连通、节点连通、端口监听与 Surge 状态,结果可拷贝
- 新增应用内更新:检测到新版本时菜单出现「更新到 vX.Y…」,自动下载、校验签名并原子替换后重启
- 新增「允许局域网访问」:同一网络的设备可使用本机代理与配置(单端口配置也会按请求来源填充地址)
- 「自动选择」加入切换阈值:新节点需快 50 ms 以上才切换,避免来回横跳
- Fixes "every node goes offline after a while until the profile is re-imported": node connection parameters now refresh automatically every 10 minutes in tray and multi-port mapping modes, instead of relying on the daily managed-config fetch
- Faster self-healing: immediate refresh on network change and wake; repeated dial failures force a refresh; when the server rotates its ECH config, the client retries with the server-offered config automatically
- Expired/revoked logins no longer fail silently: the menu and icon show "login expired" with one-click re-login; a failed manual refresh keeps the current node list and explains why
- The menu bar icon now reflects state: ok / panel unreachable or nodes offline / login expired / logged out
- New "Diagnostics…": one-click check of panel reachability, node connectivity, port listeners and Surge status, with a copyable report
- New in-app updater: when a new release is available the menu shows "Update to vX.Y…" — downloads, verifies the signature and swaps atomically, then restarts the tray
- New "Allow LAN Access": devices on the same network can use this Mac's proxy and config (the single-port profile now fills in the requesting host)
- Auto-select now uses a switching threshold: it only changes node when the best one is ≥50 ms faster, eliminating flip-flopping
v0.0.8
- 修复 Surge 频繁提示「该客户端已终止」的多个成因:安装/更新改为原子替换(不再打断正在运行的进程);节点进程先监听端口再拉取配置(避免启动慢被 Surge 判死反复重启);端口短暂被占自动重试;配置与缓存改为原子写入,杜绝切换瞬间读到半截文件
- 同一时间只允许一个客户端(菜单栏或
--serve)运行,后启动的自动退出并在日志说明;Surge 按节点拉起的进程不受限 - 完整性校验改为系统 API 进程内完成,不再周期性唤起子进程;「无法校验」不再误杀正常进程
- 日志每行带时间戳,统一存放
~/Library/Logs/oixcloud/;--version显示正式版本号(报障请附带)
- Fixes several causes of Surge repeatedly reporting the external client terminated: installs/updates now replace the binary atomically (running processes are no longer killed mid-update); per-node processes bind their port before the first config fetch (no more kill/restart churn on slow starts); transient port conflicts are retried; config and cache writes are atomic
- Only one client (tray or
--serve) may run at a time — a second one exits and says so in the log; per-node processes spawned by Surge are exempt - Integrity check now runs in-process via the system API (no periodic child process); "unable to verify" no longer kills a healthy process
- Timestamped logs unified under
~/Library/Logs/oixcloud/;--versionnow reports the release version (please include it in bug reports)
v0.0.7
- 新增可配置监听地址:
--listen [host:]port、--bind <host>、配置项listenAddress,可让托管配置与各代理被同网络其他设备访问(默认仍仅127.0.0.1) - 生成的配置按请求来源地址填充节点 server:设备从
http://<本机IP>:6171/拉取时,Surge/Clash 里的节点自动指向<本机IP>而非127.0.0.1 ⚠️ 监听0.0.0.0的端口无鉴权,请仅在可信网络中使用- 内部:合并重复逻辑,无行为变化
- New configurable listen address:
--listen [host:]port,--bind <host>, andlistenAddressin config — reach the managed config and the proxies from other devices on your network (still127.0.0.1by default) - Generated config fills each node's server from the request's address: a device fetching from
http://<this-Mac-IP>:6171/gets nodes pointed at<this-Mac-IP>instead of127.0.0.1 ⚠️ A port bound to0.0.0.0has no authentication — use it only on trusted networks- Internals: deduplicated shared logic, no behavior change
v0.0.6
- 本地端口默认改为 mixed:同一端口同时支持 SOCKS5 与 HTTP
- 新增声明式
listeners:把指定节点绑定到固定本地端口(不随节点增删漂移),类型支持 socks5 / http / mixed - 内部:accept 多路复用(空闲监听端口不再各占线程)+ 修复拨号超时竞态等资源泄漏
- Local ports now default to mixed: SOCKS5 and HTTP on the same port
- New declarative
listeners: bind a named node to a fixed local port (no drift as nodes are added/removed), types socks5 / http / mixed - Internals: multiplexed accept (idle listeners no longer each hold a thread) + dial-timeout race / leak fixes