Repository navigation
Releases: LittleFishStars/FileSpace
Releases · LittleFishStars/FileSpace
Release list
0.5.1
0.5.1 更新内容
✨ 新功能
- 远程文件夹后台同步:新增
-s/--sync <远程ip>:<文件夹id> [本地路径],把远程节点共享的某个文件夹单向镜像到本地(远程为事实源,本地改动会被覆盖/清理)- 后台常驻,每约 30 秒对账一次:增量下载变动文件(大小+修改时间命中即跳过)、清理本地多余条目
- 对账失败指数退避重试(10s 起步 ×2、5 分钟封顶、不放弃),远端文件夹消失视为永久错误停止任务
- 局域网节点共享文件夹卡片新增同步按钮:选本地目录即可添加后台同步任务;已有后端运行时
-s自动交接(POST /api/sync/add) - 文件夹设置访问密码时用
-P/--passwd提供密码
- 同步断点续传:大文件下载中断(网络波动/超时)自动保留断点现场(
.sync-tmp+ 版本元数据),下次对账从断点续传而非整包重下;远端版本中断期间变更时自动从头下载,杜绝新旧内容拼接
🎨 界面优化
- Web 同步进度条:右下角新增浮动圆形进度条,圆中显示下载速度,按阶段换色(等待灰/获取列表蓝/下载绿);覆盖「获取文件列表」与「下载」两阶段,文件夹总大小可用时显示百分比
- 共享文件夹名称旁显示文件夹 ID(浅色小字),支持点击复制
🧹 整理优化
- 复用现成包去重自研实现:
pathutil收敛 share/sync 越界校验、目录选择器统一ncruces/zenity、sync 失败重试改用 cenkalti/backoff 指数退避 - 修复开放文件夹同步误报密码错误(认证按目标文件夹是否设密码判断,而非节点整体)
- 修复同步大目录报
use of closed network connection(get/post 不再提前 cancel 请求 context) - 同步断点续传代码整理(整包/续传写入逻辑分支化等)
- 升级版本号至 0.5.1 并同步 README/AGENTS 文档
v0.5.0
0.5.0 更新内容
✨ 新功能
- 本机管理页支持修改主机名:新增
POST /api/node/hostname接口(仅本机回环调用),本机节点卡片主机名旁新增修改按钮与弹窗- 修改后立即生效:本机卡片即时刷新,经 mDNS TXT 宣告同步到局域网其他节点列表(无需重启)
- 写回配置文件:重启后仍保留;清空输入可恢复系统主机名(与
--hostname ""语义一致) - 名称长度上限 64 个 UTF-8 字符(符合 mDNS TXT 记录 255 字节协议限制)
🎨 界面优化
- 节点卡片布局优化:局域网节点列表改为横向滚动、优先收缩卡片宽度;节点信息改用容器查询按卡片宽度分行;多节点时卡片保持更宽、单节点仍撑满整行;主机名过长时截断显示(悬停显示完整名称),修改按钮仅保留图标去除文字
🧹 整理优化
- 构建产物目录统一命名为「系统-架构」(如
build/linux-amd64/),--clean兼容清理旧命名目录 - 升级版本号至 0.5.0 并同步 README/AGENTS 文档
v0.4.3
0.4.3 更新内容
🎨 修复
- 修复 tun0/VPN 等点对点接口上的节点发现:此前的 mDNS 接口选择只认「UP + MULTICAST」标志的网卡,tun0(
UP + POINTOPOINT,无 MULTICAST)被完全排除——其 IP 不出现在 mDNS 注册信息里,其他节点经 VPN 网络搜不到本节点。现在把所有已启用的非回环接口(含点对点隧道)纳入 mDNS 注册与发现,JoinGroup 在不支持组播的接口上优雅跳过,不影响其他网卡 - 节点 IP 显示实际连接地址:此前节点卡片展示的是对方上报的默认网卡 IP,跨网络组网(经 tun0 互联)时该地址不可达。现在发现端逐个尝试 mDNS 条目中的候选 IP,用第一个连通成功的地址覆盖展示与后续访问(心跳、目录、下载)使用的地址——显示的就是你实际连上的 IP
- 本机上报警告修复:
localIP优先选启用且支持组播/广播的真实局域网接口(以太网/Wi-Fi),不再因 docker0 / tun0 等虚拟接口排前而把内网虚拟地址误报为本机入口
🧹 整理优化
- discovery HTTP 客户端收敛:抓取节点详情、心跳探测、退出通知三处统一为带连接池与超时的包级客户端,消除每次请求新建连接与「无超时
http.DefaultClient可能挂起」的隐患 Watch签名不再透传超时参数(统一由客户端与请求 context 控制),接口更清晰
行为保持不变。
v0.4.2
0.4.2 更新内容
✨ 新增
--hostname自定义节点名称:指定本节点在局域网主机列表里显示的名称(默认用系统主机名;也可写入配置顶层hostname:,配合--save一键持久化,--hostname ''恢复系统主机名)。改名只影响展示与上报,节点 ID 仍按系统主机名生成,其他节点不会把它当成新节点--save持久化命令行设置:把本次-d/--dir共享目录(追加去重)、-P/--passwd默认访问密码、-p/--port监听端口、--hostname节点名称一并追加保存到当前配置文件,下次无参数启动即按新配置生效- 无家目录环境兜底:
$XDG_CONFIG_HOME与$HOME均未定义时(如精简容器、无人值守设备)不再报错退出——配置文件config.yaml与运行锁lock直接存放在可执行文件所在目录,无需-c即可便携运行 - 新增 Linux ARM64(linux-aarch64)交叉编译平台:
make build-linux-aarch64
🧹 整理优化
- 抽取
requireLoopback/decodeJSONBody响应助手,消除本机专属端点与 JSON 请求端点里重复的「回环校验 + 请求体解析 + 错误响应」样板(增删共享、改密、打开文件、目录选择、认证、退出通知等 6 处收敛) - 修复配置写回并发竞态:本机管理页增删共享/改密(HTTP 请求 goroutine)与退出前写回可能并发触发
persistConfig,其中cfg.Shared的读-比较-写现由互斥锁串行化,避免数据竞争与交错写盘 - 批量追加共享目录中途失败时先写回已成功添加的部分,避免进程被强杀时新增共享丢失
行为保持不变。
v0.4.1
0.4.1 更新内容
🎨 修复
- 修复主题往返切换时卡片背景不跟随(selectorSignature 解析未跳过声明块导致旧主题样式残留覆盖)
🧹 整理优化
- 抽取
desktop包统一「系统默认应用打开」:xdg-open/open/cmd start的平台分发收敛为一处,打开共享文件(本机「打开」操作)与--web打开浏览器共用,消除两处几乎相同的平台命令 switch Manager.Resolve不再返回内部切片元素指针(改为返回拷贝),消除锁外持内部数据与并发增删目录时的悬垂引用隐患- 合并
runServer/runServerWithWeb重复启动流程;精简state层冗余函数包装 - 抽取
authorizedFolderID复用树/下载接口的「取 id + 鉴权」样板;静态 404 回退页补 Content-Type - 前端请求层统一:GET/POST 一致解析后端 error 消息(401 等中文详情不再丢失);新增
errMsg统一错误文案提取、storage安全封装 localStorage(隐私模式等异常场景不再崩溃) - 卡片层复用后端
ApiFolderInfo数据模型,删除重复的精简接口与手工字段映射
行为保持不变。
v0.4.0
✨ 亮点
- 共享配置改为配置文件驱动:无参数运行
filespace时读取(不存在则自动创建带注释模板)用户配置目录下的默认配置文件filespace/config.yaml,按其shared_folders共享,不再默认共享当前目录;-d/--dir改为临时追加共享目录并做存在性校验(替代原位置参数)。本机管理页的添加/移除共享、设置/修改/移除密码均立即写回当前生效的配置文件(仅存密码 sha256 哈希,不存明文),移除了原「上次共享列表」恢复机制 - 修复切换主题后弹窗不可见、整页点不动:cssinjs 将弹窗等组件的
@keyframes与同名 token 的组件样式注入在同一个prependQueue节点中,主题切换按「选择器签名」分组清理旧节点时会让动画名引用悬空 → Modal 卡在ant-zoom-enter(opacity: 0)不可见,而 mask 铺满全屏拦截点击(表现为「切主题后弹窗没反应 / 页面点不动」)。修复后签名解析整体跳过 at-rule 定义块,且含定义块的节点直接豁免,不参与分组删除 - 架构整理:拆分上帝文件(
api按资源分文件、share按职责分文件)、抽出internal/auth作为「密码哈希 + 访问令牌」的单一契约包(share与api共同依赖,消除散落的 sha256 与 hex↔bytes 来回转换)、前端抽出use_nodes_data共享 hook 与nodes.ts派生层,消除 dashboard 与 nodes 面板的重复数据获取 - 清理兼容性遗留代码并整体优化:移除向后兼容的旧持久化格式读取、零引用导出与过时注释;
handoff两处重复的「POST + 错误解析」抽为postAPI助手;运行锁文件写入的Close错误不再被忽略;antd 6.6 废弃的Alert message属性更正为title,文件夹卡片时间统一本地化显示;全链路(gofmt / go vet / go mod tidy / tsc / eslint / next build / 四平台交叉编译)验证通过 - 添加共享的密码弹窗增加「跳过」:不想设密码时可直接以开放共享添加,无需再留空提交
📦 构建
- 版本:v0.4.0
- 产物:linux x86_64 / windows x86_64 / macOS arm64 / macOS x86_64(
--web参数启动内置前端界面) - 首次运行会创建默认配置文件:Linux
~/.config/filespace/config.yaml、macOS~/Library/Application Support/filespace/config.yaml、Windows%AppData%\filespace\config.yaml
⚠️ macOS 二进制为交叉编译产物,未经真实 Mac 验证,如遇问题请提交 Issue。
v0.3.6
✨ 亮点
- 修复启动后 mDNS 组播风暴导致的持续满带宽上传:
grandcat/zeroconf的Browse()为异步启动(内部起 goroutine 执行监听与周期查询后立即返回),此前runBrowse误以为它会同步阻塞到会话到期,导致browseLoop陷入无间隔紧循环反复重建解析器——每次重建都重新 join IPv4/IPv6 组播组、发送 PTR 查询并堆积 goroutine/socket,多网卡(如 wlan0 + docker0 + tun0 并存)环境下放大为每秒数万包的 mDNS 组播风暴(进程 CPU 100%,系统监视器表现为启动后持续最大带宽上传,且会挤占局域网带宽)。修复后 Browse 成功启动即阻塞等待会话到期(约 30s 一个周期),mDNS 流量恢复正常水平(实测 3 秒 2 包 vs 原 19.9 万包),节点发现仍由 mDNS Browse + HTTP 心跳双路径兜底 - 代码整理与健壮性优化:梳理注释、统一文档;构建与编译全链路(gofmt / go vet / tsc / eslint / go mod tidy)验证通过
📦 构建
- 版本:v0.3.6
- 产物:linux x86_64 / windows x86_64 / macOS arm64 / macOS x86_64(
--web参数启动内置前端界面)
v0.3.5
✨ 亮点
- 共享文件夹统计改为文件系统事件驱动:新增 fsnotify 递归监听共享目录树(watcher.go),磁盘上任意文件/目录变化——含原地改写内容与任意深度增删改——经防抖合并后触发后台重扫,替代上一版的目录 mtime 指纹轮询校验;新建子目录自动补挂监听,事件队列溢出时全量重扫兜底,目录整体删除后由 List 检测重建并恢复监听;退出时释放监听资源
- 访问密码管理全面完善:共享文件夹密码支持运行中设置 / 修改 / 移除(本机管理页新增「添加密码」「修改密码」「移除密码」入口,弹窗式操作),移除密码后恢复开放,修改密码后旧访问令牌自动失效;CLI 检测到已有后端时可用
-P配合目录参数修改该目录密码(-P ''移除) - 密码持久化与哈希存储:访问密码随上次共享记录落盘(
last-shared.yaml升级为路径+密码记录,兼容旧版纯路径列表),修复设置密码后重启丢失;内部与持久化统一存 sha256 十六进制哈希,明文仅在输入入口出现并立即转哈希,兼容读取旧版明文记录
📦 构建
- 版本:v0.3.5
- 产物:linux x86_64 / windows x86_64 / macOS arm64 / macOS x86_64(
--web参数启动内置前端界面)
v0.3.4
✨ 亮点
- 共享文件夹统计大幅提速:文件数 / 总大小 / 最近更新改为「缓存 + 后台异步扫描」——启动时后台预热、缓存过期后自动后台重扫,列表接口始终立即返回缓存值,不再同步递归遍历大目录导致列表 / 节点轮询卡顿;统计未就绪时前端自动延迟补拉一次,目录较大时首次显示可能稍有延迟
- 本机管理页点击行直达浏览:移除「操作」列的浏览按钮,点击文件夹任意一行即进入文件浏览页(与局域网节点文件夹卡片行为一致),删除按钮阻止冒泡避免误触跳转,文件夹名 hover 高亮提示可点击
- 节点信息排布对齐:局域网节点折叠信息改为一行四项 / 两行两项 / 一列四项的响应式网格,中屏不再出现 3+1 排布错位
🧪 质量
- 新增 share 包缓存行为测试(全量统计 / 过期重扫 / 不阻塞 / 移除清理,含 -race),并完成 gofmt + go vet + go test + tsc + eslint 全量校验
📦 构建
- 版本:v0.3.4
v0.3.3
✨ 亮点
- 远程访问视图统一:从其他设备访问本机 Web 页面时不再显示「本机节点」管理入口,本机节点作为普通局域网节点展示(含其共享文件夹),可直接浏览 / 下载;本机访问行为保持不变
- 节点在线状态即时感知:页面定时轮询 + 切回前台时立即刷新,节点上线 / 退出自动更新在线列表,无需手动刷新页面
- 前端性能优化:统一访问来源上下文(AccessContext)避免重复请求、局域网节点轮询只刷新节点列表、节点列表转换逻辑提取为共享纯函数
🐛 修复
- 修复从其他设备访问时本机文件夹误显示「打开」操作(该操作仅限本机回环)导致失败的问题,统一按远程文件夹提供下载 / 预览
- 修复远程下载文件名异常:下载接口显式设置 Content-Disposition,文件名不再回退为 unresolved-filename,二进制文件也不再被命名为 .bin;中文等非 ASCII 文件名通过 RFC 5987(filename*)正确传输
📦 构建
- 版本:v0.3.3(合并本次下载修复后的重新构建产物)