✨ 新功能
✨ NEW FEATURES
- 支持同步协议流水线化(滑动窗口模式),提升高延迟网络下的同步效率。
- Support synchronization protocol pipeline (sliding window mode) to improve synchronization efficiency under high-latency networks.
- 新增飞牛 fnOS 原生应用打包支持,并实现 GitHub workflows 自动化包构建。
- Added Feiniu fnOS native application packaging support, and implemented GitHub workflows automated package construction.
- 分享链接支持设置过期时间,并在访问时强制校验是否过期。
- Sharing links support setting the expiration time, and mandatory verification of expiration when accessing.
🛠 修复
🛠 Fix
- 修复 WebUI OIDC 登录时提示
user_oidc_identity表不存在导致登录失败的问题。 - Fixed the issue where WebUI OIDC prompts that the
user_oidc_identitytable does not exist when logging in, causing login failure. - 修复并发保存笔记或文件时因并发锁误用导致部分数据丢失的严重问题。
- Fixed a serious issue where some data was lost due to misuse of concurrency locks when saving notes or files concurrently.
- 修复文件保存或更新时,若重命名失败仍静默声称保存成功的问题。
- Fixed an issue where when a file is saved or updated, if the rename fails, it still silently claims that the save was successful.
- 修复备份暂存文件永久堆积导致占用大量磁盘空间的问题,并修正备份保留天数默认值为 10 天。
- Fixed the problem of permanent accumulation of backup temporary files, resulting in occupying a large amount of disk space, and corrected the default value of backup retention days to 10 days.
- 修复附件上传过程中若对文件重命名会引发的冲突报错。
- Fixed the conflict error caused by renaming the file during attachment uploading.
- 修复慢速设备接收广播消息慢导致同账号下其他设备被拖慢或卡死的问题。
- Fixed the issue where slow devices receive broadcast messages slowly, causing other devices under the same account to be slowed down or stuck.
- 修复 MCP 模块由于接口参数顺序定义错误引起的程序崩溃。
- Fixed program crash in MCP module caused by incorrect definition of interface parameter order.
- 修复因升级全文检索库 bleve 依赖引发的编译和运行异常。
- Fixed compilation and running exceptions caused by upgrading the full-text search library bleve dependency.
- 修复后台并发任务异常崩溃(panic)时会导致整个服务退出停止的问题。
- Fixed the issue where the entire service will exit and stop when a background concurrent task crashes unexpectedly (panic).
- 修复 WebSocket 写入缺少超时控制,可能导致僵尸连接占满服务器资源的问题。
- Fixed the problem that WebSocket writing lacks timeout control, which may cause zombie connections to occupy server resources.
- 修复回滚安全阀由于默认值覆盖,导致明确配置为 0 值时失效的问题。
- Fixed the issue where the rollback safety valve failed when explicitly configured to a value of 0 due to overwriting of the default value.
- 修复同步分页协议第 0 页由于 protobuf 零值定义歧义导致的传输异常。
- Fixed transmission exception caused by ambiguity of protobuf zero value definition on page 0 of synchronous paging protocol.
- 修复高并发下 WebSocket 客户端信息并发读写导致的竞态冲突报错。
- Fix the race conflict error caused by concurrent reading and writing of WebSocket client information under high concurrency.
- 修复同步丢包(确认页不匹配)时可能导致客户端卡死等待的问题。
- Fixed an issue that may cause the client to get stuck waiting during synchronization packet loss (confirmation page mismatch).
- 修复分批上传协议未去重,导致客户端重传时文件内容重复拼接的问题。
- Fixed the problem that the batch upload protocol did not deduplicate, resulting in repeated splicing of file content when the client retransmitted.
⚡️ 优化与改进
⚡️ Optimization and improvement
- 优化同步机制,仅在分页时读取正文,大幅降低大笔记库同步时的内存占用。
- Optimize the synchronization mechanism and only read the text during paging, which greatly reduces the memory usage when synchronizing large note libraries.
- 提高同步分块默认大小(从 50 提升至 200),减少同步确认的往返次数。
- Increase the default size of synchronization chunks (from 50 to 200) to reduce the number of round trips for synchronization confirmation.
- 优化目录树的文件夹统计,多条独立查询合并为单次聚合查询,消除性能瓶颈。
- Optimize the folder statistics of the directory tree and merge multiple independent queries into a single aggregate query to eliminate performance bottlenecks.
- 大笔记对比(diff)引入自适应行级预处理,加速长文本对比。
- Large note comparison (diff) introduces adaptive line-level preprocessing to speed up long text comparison.
- 优化数据库写入队列,支持批量合并处理,并将全文索引更新改为异步批量写入。
- Optimize the database write queue, support batch merge processing, and change full-text index updates to asynchronous batch writes.
- 优化同步日志写入,改为有界通道缓冲与后台单线程异步批量写入。
- Optimize synchronous log writing and change to bounded channel buffering and background single-thread asynchronous batch writing.
- 数据库连接池增加最短空闲保护,防止误关闭正在使用的连接。
- The database connection pool adds minimum idle protection to prevent accidentally closing the connection in use.
- 批量删除笔记或文件时的广播通知改为异步发送,避免同步阻塞降低处理速度。
- The broadcast notification when deleting notes or files in batches is changed to be sent asynchronously to avoid synchronization blocking and slow down the processing speed.
- 为笔记数据库表增加复合索引,提升目录及路径的查询速度。
- Add a composite index to the note database table to improve the query speed of directories and paths.
- 软删除保留期默认值从 7 天提升至 90 天,缓解离线设备超期未同步后已删文件复活的问题。
- The default soft deletion retention period is increased from 7 days to 90 days to alleviate the problem of reviving deleted files after the offline device expires and is not synchronized.
- 增加未启用 Git 同步库的内存缓存,避免重复查询数据库。
- Add memory cache for Git synchronization libraries that are not enabled to avoid repeated database queries.
- 合并笔记修改链路的重复查询,减少数据库读取压力。
- Merge repeated queries of note modification links to reduce database reading pressure.