Skip to content

Releases: LittleFishStars/FileSpace

0.5.1

Choose a tag to compare

@LittleFishStars LittleFishStars released this 09 Sep 15:23

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

Choose a tag to compare

@LittleFishStars LittleFishStars released this 07 Sep 05:58

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

Choose a tag to compare

@LittleFishStars LittleFishStars released this 06 Sep 16:25

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

Choose a tag to compare

@LittleFishStars LittleFishStars released this 06 Sep 11:40

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

Choose a tag to compare

@LittleFishStars LittleFishStars released this 04 Sep 14:36

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

Choose a tag to compare

@LittleFishStars LittleFishStars released this 04 Sep 13:31

✨ 亮点

  • 共享配置改为配置文件驱动:无参数运行 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

Choose a tag to compare

@LittleFishStars LittleFishStars released this 03 Sep 07:33

✨ 亮点

  • 修复启动后 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

Choose a tag to compare

@LittleFishStars LittleFishStars released this 02 Sep 15:34

✨ 亮点

  • 共享文件夹统计改为文件系统事件驱动:新增 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

Choose a tag to compare

@LittleFishStars LittleFishStars released this 02 Sep 05:20

✨ 亮点

  • 共享文件夹统计大幅提速:文件数 / 总大小 / 最近更新改为「缓存 + 后台异步扫描」——启动时后台预热、缓存过期后自动后台重扫,列表接口始终立即返回缓存值,不再同步递归遍历大目录导致列表 / 节点轮询卡顿;统计未就绪时前端自动延迟补拉一次,目录较大时首次显示可能稍有延迟
  • 本机管理页点击行直达浏览:移除「操作」列的浏览按钮,点击文件夹任意一行即进入文件浏览页(与局域网节点文件夹卡片行为一致),删除按钮阻止冒泡避免误触跳转,文件夹名 hover 高亮提示可点击
  • 节点信息排布对齐:局域网节点折叠信息改为一行四项 / 两行两项 / 一列四项的响应式网格,中屏不再出现 3+1 排布错位

🧪 质量

  • 新增 share 包缓存行为测试(全量统计 / 过期重扫 / 不阻塞 / 移除清理,含 -race),并完成 gofmt + go vet + go test + tsc + eslint 全量校验

📦 构建

  • 版本:v0.3.4

v0.3.3

Choose a tag to compare

@LittleFishStars LittleFishStars released this 02 Sep 03:23

✨ 亮点

  • 远程访问视图统一:从其他设备访问本机 Web 页面时不再显示「本机节点」管理入口,本机节点作为普通局域网节点展示(含其共享文件夹),可直接浏览 / 下载;本机访问行为保持不变
  • 节点在线状态即时感知:页面定时轮询 + 切回前台时立即刷新,节点上线 / 退出自动更新在线列表,无需手动刷新页面
  • 前端性能优化:统一访问来源上下文(AccessContext)避免重复请求、局域网节点轮询只刷新节点列表、节点列表转换逻辑提取为共享纯函数

🐛 修复

  • 修复从其他设备访问时本机文件夹误显示「打开」操作(该操作仅限本机回环)导致失败的问题,统一按远程文件夹提供下载 / 预览
  • 修复远程下载文件名异常:下载接口显式设置 Content-Disposition,文件名不再回退为 unresolved-filename,二进制文件也不再被命名为 .bin;中文等非 ASCII 文件名通过 RFC 5987(filename*)正确传输

📦 构建

  • 版本:v0.3.3(合并本次下载修复后的重新构建产物)