更新日志
tailscale-manager 脚本的所有重要变更记录于此。版本号以 tailscale-manager.sh 中的 VERSION 字段为准。
v4.6.2 (2026-06-29)
- LuCI 改为可选安装,新增
tailscale-manager luci install|remove|status与install --yes --luci 1 - 统一 install、reinstall、self-update 流程中的 LuCI 状态处理
v4.6.1 (2026-06-09)
- 为
logs和diagnostics增加--maskinfo,用于隐藏自定义敏感字符串
v4.6.0 (2026-06-08)
- 修复贪婪
sed解析 JSON 的 bug:在 GitHub API 返回单行 JSON 时只提取最旧版本而非最新版本;受影响函数包括list-small-versions、get-small-latest-version、get-official-latest-version及tailscale-update;改用grep -oE+sed -E两阶段提取 (#33) - 新增 API 冒烟测试 (
tests/bats/smoke/),对真实上游端点做可达性与解析验证;CI 单独运行,已从make test中排除
v4.5.0 (2026-06-07)
- 新增
tailscale-manager diagnostics(别名doctor):一键生成完整排查报告(版本、设备/系统信息、安装与运行状态、依赖与 HTTPS 连通性检查、UCI 配置、最近日志),与 issue 模板字段一一对应,提交 issue 时可直接粘贴 - 新增
tailscale-manager logs [n]:一次性查看管理器 / 服务 / 自动更新 / 系统(logread)日志的最近 n 行(默认 200),不必再逐个记忆路径 - 交互菜单新增「Collect Diagnostics」,并把诊断报告同时保存到
/tmp/tailscale-diagnostics.txt - 完善日志覆盖:回滚、卸载、内存模式下载(download-only)、库文件引导等关键节点补齐日志;状态变更类命令(install/update/uninstall/…)在管理器日志中留下调用记录
LOG_FILE现支持环境变量覆盖,可把管理器日志放到持久化目录,避免/var/log(tmpfs)重启清空导致排查无据- issue 模板与故障排查文档改为推荐
diagnostics/logs命令
v4.4.0 (2026-06-07)
- 明确区分「更新 Tailscale 二进制」(
update、auto-update)与「更新 管理器本身」(self-update);help现按作用对象分组,两者不再混淆 - 规范命令命名(破坏性变更):
install-quiet→install --yes、setup-firewall→setup-subnet-routing、list-versions→list-small-versions - 非交互参数统一为
--yes(update --yes、self-update --yes);auto-update推荐使用enable/disable/status(仍兼容旧的on/off/1/0) - UCI 配置保持不变,仅重命名了上述 CLI 命令
v4.3.0 (2026-06-07)
- 大幅简化自更新:
self-update现在一步重装整个管理层(脚本、库、LuCI 界面),并保留 UCI 配置、节点状态和已装二进制;重复执行总是安全,也能修复损坏文件 - 移除冗余的
sync-scripts命令及内部的“托管文件同步/版本对账”逻辑,不再有反复出现的同步告警 - 普通命令不再每次联网检查更新;可更新提醒改为只在交互式菜单和 LuCI 维护页出现,菜单新增“更新管理脚本”入口
- 二进制自动更新(定时任务)保持不变
v4.2.0 (2026-06-07)
- 新增
tailscale-manager --version(-v)直接查看版本;help与--version等只读命令不再联网检查更新 (#26) - LuCI 现在能识别手动安装在
/opt/tailscale等位置的 Tailscale,不再只认本脚本安装的版本 (#26) - 托管文件同步失败时给出可操作的提示(如何重试、检查磁盘与网络),不再只是一句模糊告警 (#26)
- 未知命令直接报错退出,不再先联网检查更新(此前任意未知输入都会触发更新检查,容易让人误以为命令有效)(#26)
v4.1.3 (2026-06-04)
- 修复
extra_env日志中键名重复打印的问题(如GOMIPS=GOMIPS=softfloat应为GOMIPS=softfloat);实际 procd 注入无误,仅日志显示受影响 (#14)
v4.1.2 (2026-06-04)
- init 脚本启动注入
extra_env/extra_args时输出日志,便于在/var/log/tailscale.log和 syslog 中确认自定义调优(如GOMIPS、GOMEMLIMIT、GODEBUG)已生效 (#14)
v4.1.1 (2026-06-04)
- 新增 UCI
list extra_env与list extra_args,用于注入自定义 procd 环境变量与tailscaled启动参数,并在管理脚本升级时保留(#14) - 重装时不再覆盖用户改过的
port/net_mode/proxy_listen/update_cron/log_stdout/log_stderr;仅刷新安装期间用户主动选择的storage_mode/bin_dir/download_source/auto_update - 当
extra_args中已提供--socks5-server或--outbound-http-proxy-listen时,userspace 模式不再追加同名默认参数,避免出现重复 listener - 详细用法见配置参考
v4.1.0 (2026-06-03)
- 版本号晋升为 minor,归并 v4.0.12–v4.0.15 期间的修复(MIPS 大端检测、小体积源校验在紧凑 JSON 下的解析、BusyBox awk 兼容、自更新自动 re-exec),除
VERSION字段外无代码改动
v4.0.15 (2026-06-03)
- 自更新成功后自动
exec进新版本管理脚本,避免当前会话继续使用内存里的旧代码(用户在 issue #14 反馈:"Y 升级到 v4.0.13 但仍显示 v4.0.12,重新启动才生效") - 通过
TAILSCALE_MANAGER_REEXEC环境变量标记重入,防止异常情况下的循环 exec,并跳过新版本启动时的版本检查回环 - 新版本的二进制不可执行或
exec失败时回退到内存中的旧代码,并打印警告,保留旧的可观测行为
v4.0.14 (2026-06-03)
- 修复 v4.0.13 在 BusyBox awk 上
get_small_checksum()直接报错并跳过校验的问题:BusyBox awk 把*{视为{n,m}区间量词起始,原正则},[[:space:]]*{触发 "Invalid contents of {}" / "Unmatched {";改用字符类[}],[[:space:]]*[{]规避
v4.0.13 (2026-06-03)
- 修复使用小体积下载源时,当 GitHub API 响应被压成紧凑单行 JSON 时(部分网络/客户端会出现),除字母序末尾架构(当前为
mipsle)以外的架构 SHA-256 校验必然失败的问题 (#14) - 根因:
get_small_checksum()假设 API 返回多行 pretty-printed JSON,sed 范围匹配在紧凑单行下退化后,贪婪.*捕获到的是整行最后一个 sha256,即字母序末尾 asset 的 digest - 解析前先按
},{边界拆分,使每个 asset 独占一行,确保抓到的就是目标文件的 digest - 新增针对真实紧凑 JSON 形态的回归测试,覆盖首/中/末/缺失等情况
v4.0.12 (2026-06-01)
- 修复 MIPS 大端路由器(如 Atheros/QCA)被误判为小端导致下载错误二进制、启动崩溃的问题 (#14)
- 新增
mipsel/mips64el的uname -m分支(Linux 内核已区分字节序) - 引入
get_openwrt_arch()辅助函数,优先读取/etc/openwrt_release的DISTRIB_ARCH(覆盖所有 OpenWrt 版本及衍生版),其次回退至/etc/apk/arch和/etc/opkg.conf - 移除不可靠的
hexdump -o字节序检测,所有检测方法均失败时默认大端 - 新增 MIPS 字节序检测与 OpenWrt 架构源优先级的测试
v4.0.11 (2026-05-30)
- 移除管理脚本与 LuCI 的自动更新(cron)功能,脚本和界面更新改为仅手动触发;Tailscale 二进制自动更新保留
- 升级时自动清理遗留的脚本自动更新定时任务与
/usr/bin/tailscale-script-update
v4.0.10 (2026-05-26)
- init 脚本启动时轮询等待 tailscaled 二进制最多 30 秒,适配持久化模式下外部存储延迟挂载的场景
- 等待超时后提示用户检查挂载配置
v4.0.9 (2026-05-25)
- 新增可配置的持久化二进制目录(
--bin-dir),支持将二进制安装到外部存储(如 USB),适用于内置闪存有限的设备 - 安装时新增交互式 bin-dir 选择提示
- 校验 bin_dir 必须为绝对路径且位于持久化文件系统,卸载时正确清理自定义目录下的文件
- JSON 状态查询回退时正确使用 UCI 配置的 bin_dir
- 修复非交互式安装时 auto_update 默认值未正确设置为关闭的问题
v4.0.8 (2026-04-19)
- 将脚本更新切换为管理包
v4.0.7 (2026-04-19)
- 新增下载校验和验证,确保二进制文件完整性
- 新增更新回滚机制:下载失败或服务启动异常时自动恢复原有版本,并支持手动回滚命令
- 重构 rpcd 桥接脚本,解耦对入口脚本的依赖,统一各下载源路径解析逻辑
- 提取 JSON 辅助函数为共享模块,减少重复代码
- 拆分测试套件为独立模块,支持按模块运行测试
- 修正 small 二进制体积描述(约 8-10MB)
v4.0.6 (2026-04-12)
- 重命名
tun-mode为net-mode,更准确反映网络模式选择(TUN / userspace),UCI 配置自动迁移 - 新增项目路线图文档
v4.0.5 (2026-04-11)
- 修正官方二进制体积引用
- 修正文档站点 Logo 路径
v4.0.4 (2026-04-10)
- 修复官方二进制体积显示不正确的问题
- 修复多架构环境下未正确选择最新版本的问题
- 修复脚本自更新后路径丢失的问题
- 托管文件同步失败时不再错误地标记为已完成
v4.0.3 (2026-04-10)
- LuCI 维护页面全面重构,更新操作独立分区,操作更清晰
- 新增日志查看标签页
- 依赖检查改为非阻塞方式,逐包安装,避免整体卡住
v4.0.2 (2026-04-10)
- 整理运行时目录结构,统一 TUN 相关术语和路径
v4.0.1 (2026-04-09)
- 精简 LuCI 管理页面,修复托管文件在操作后被覆盖的问题
v4.0.0 (2026-04-09)
- LuCI 后端迁移至 rpcd exec 桥接方式,不再依赖 controller 直接调用
- 核心脚本模块化重构,运行时库拆分为独立文件
- 修复 LuCI 版本显示和管理页面的多个问题
v3.1.0 (2026-04-09)
- 新增 LuCI 图形管理界面,支持状态查看、启停控制、安装卸载等操作
- 新增 shell CI 检查
- 修复托管脚本同步问题
v3.0.2 (2026-03-11)
- userspace 网络模式下支持配置代理监听范围(仅本地 / 全局)
v3.0.1 (2026-03-11)
- 新增 SOCKS5 和 HTTP 代理监听,适用于 userspace 网络模式
v3.0.0 (2026-03-11)
- 新增 userspace 网络模式支持,适用于无内核 TUN 的环境
- 改进服务启动检测和状态输出
- 重构托管脚本同步逻辑
v2.3.2 (2026-03-11)
- 新增脚本自更新功能,支持手动检查和强制更新
v2.3.0 (2026-03-08)
- 内部版本调整,无面向用户的变更
v2.2.1 (2026-01-28)
- 新增 Tailscale 自动更新配置管理
- 修复更新检查可能导致脚本挂起的问题
v2.2.0 (2026-01-20)
- 新增子网路由配置和移除功能,自动管理网络接口和防火墙规则
- 新增菜单中的重启选项
- MIPS 架构默认使用 softfloat,并支持版本降级
- 改进 MIPS 字节序检测和 BusyBox 环境下的 wget 兼容性
v2.1.0 (2025-12-31)
- 内部版本调整,无面向用户的变更
v2.0.0 (2025-12-24)
- 首次发布