fix: 修复 FactoryReset 误删用户文件并将应用数据迁移至 Application Support

- 修复 macOS/Windows/Linux 非沙盒下 FactoryReset 递归删除 ~/Documents 导致用户项目源代码丢失的严重 bug,改为仅删除已知应用专属文件/子目录并增加路径安全校验

- 数据库文件从 getApplicationDocumentsDirectory() 迁移到 getApplicationSupportDirectory()(应用专属),含自动迁移逻辑

- 启用 macOS Debug 模式沙盒,使开发环境与生产环境路径行为一致

- 统一迁移 13 处应用数据存储位置(Hive、聊天附件、字体、稍后读同步等)到 Application Support,应用启动时执行一次性迁移

- backup_service.dart 备份文件迁移至 Application Support,getBackupList() 兼容扫描新旧两个路径并去重

- clearCache() 同样修复危险递归清空逻辑

详见 CHANGELOG.md v6.136.0 ~ v6.138.0
This commit is contained in:
Developer
2026-06-26 08:46:23 +08:00
parent 0c9faf30b7
commit 81ea0f60dc
20 changed files with 817 additions and 124 deletions

View File

@@ -2,8 +2,14 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!-- 启用沙盒:让 Debug 模式与 Release 模式路径行为一致,避免开发环境差异
导致的 bug如 getApplicationDocumentsDirectory() 在非沙盒下返回用户公共
~/Documents 目录,曾导致 FactoryReset 误删项目源代码)。
代价Debug 模式下旧版数据库(位于 ~/Documents/xianyan.db 或
~/Library/Application Support/apps.xy.xianyan/xianyan.db无法迁移到
沙盒内,开发者需重新登录/创建数据。 -->
<key>com.apple.security.app-sandbox</key>
<false/>
<true/>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.network.client</key>
@@ -21,7 +27,7 @@
<!-- 麦克风:语音录制 / 转文字AVCaptureDevice via PermissionManager.swift -->
<key>com.apple.security.device.microphone</key>
<true/>
<!-- 定位permission_handler 依赖链引用 CoreLocation 符号,沙盒需此 entitlement -->
<!-- 定位permission_handler 依赖链引用 CoreLocation沙盒需此 entitlement -->
<key>com.apple.security.personal-information.location</key>
<true/>
</dict>