Files
xianyan/CHANGELOG.md
Developer 733f77ac63 refactor: 完成v15.0.0版本迭代更新
主要变更:
1. 新增鸿蒙端桌面快捷操作、无障碍服务支持
2. 替换Hive依赖为hive_flutter,统一存储实现
3. 新增多语言ohos设备识别异常提示
4. 重构图表组件生命周期,新增SafeChartWidget统一管理
5. 优化日志分类与高频日志屏蔽,减少性能开销
6. 新增WebSocket P2P传输方式与相关组件
7. 修复路由返回、文章缓存等已知问题
8. 新增PlatformCapabilities统一平台能力抽象
9. 调整macOS端编译配置与依赖库
2026-06-05 06:31:18 +08:00

43 KiB
Raw Blame History

Changelog

所有重要变更均记录于此文件。格式基于 Keep a Changelog


[v6.19.2] - 2026-06-05

🐛 Bug修复 — macOS 编译运行关键问题修复

修复问题

  1. Hive 初始化失败导致 KvStorage 全部降级 — 根因:HiveSafeAccess 使用 hive_flutterHive.initFlutter() 初始化,但用 hive_ceHive.openBox() 打开 Box两个包的 Hive 单例不同,导致所有 Box 打开失败:
    • 统一所有代码使用 hive_flutter 包,替换全部 hive_ce 引用
    • 涉及 8 个文件的 import 替换
  2. KvStorage 未初始化警告GeneralSettingsNotifier.build() 同步调用约 48 次 KvStorage.getBool/getString/getInt,当 Hive 初始化失败时产生大量警告:
    • 改为延迟加载模式(与 ThemeSettingsNotifier 一致),先返回默认值,再通过 Future.microtask 从存储加载
  3. macOS Release 构建签名失败Release.entitlementskeychain-access-groups 需要开发者证书签名:
    • 设置 CODE_SIGN_IDENTITY = "-" (ad-hoc 签名)
    • 移除 keychainkeychain-access-groups entitlements
  4. macOS Impeller 未启用LiquidGlassLayer 需要 Impeller 渲染引擎macOS 默认使用 Skia
    • Info.plist 中添加 FLTEnableImpeller = true 启用 Impeller
  5. MissingPluginException: checkPendingManageStorage — 数据管理 MethodChannel 仅鸿蒙平台实现:
    • _initDataManagementChannel() 添加 !pu.isOhos 判断,非鸿蒙平台跳过
  6. RenderFlex overflow 弹窗 — 布局溢出错误在 debug 模式下显示红色溢出指示器:
    • main.dartFlutterError.onError 拦截 overflowed 错误,仅打印日志不弹窗
  7. platformVersionImpl 导出冲突platform_io_stub.dartplatform_io_native.dart 都导出了 platformVersionImpl
    • utils.dart 的 export hide 列表中添加 platformVersionImpl

修改文件

  • lib/core/storage/hive_safe_access.dart — 统一使用 hive_flutter,移除 hive_ce 引用
  • lib/core/services/data/backup_service.dart — import 替换 hive_cehive_flutter
  • lib/features/discover/services/rss_service.dart — import 替换
  • lib/core/services/error/crash_monitor.dart — import 替换
  • lib/features/tool_center/leisure/providers/leisure_bookmark_provider.dart — import 替换
  • lib/features/mine/settings/presentation/data_management_export_mixin.dart — import 替换
  • lib/features/mine/settings/presentation/data_management_backup_mixin.dart — import 替换
  • lib/features/discover/services/exchange_rate_service.dart — import 替换
  • lib/core/storage/database/app_database.dart — import 替换
  • lib/features/mine/settings/providers/general_settings_provider.dart — 延迟加载模式
  • lib/main.dart — FlutterError.onError 拦截 overflow 错误
  • lib/app/app.dart — 数据管理通道添加平台判断
  • lib/core/utils/utils.dart — 修复 platformVersionImpl 导出冲突
  • macos/Runner.xcodeproj/project.pbxproj — CODE_SIGN_IDENTITY 设置 ad-hoc
  • macos/Runner/Release.entitlements — 移除 keychain 权限
  • macos/Runner/Info.plist — 启用 Impeller

[v6.19.1] - 2026-06-05

🐛 Bug修复 — FontSyncService API返回数据类型解析错误

修复问题

  1. FontSyncService 类型转换崩溃fetchOnlineFonts()result['data'] as List<dynamic>? 抛出异常:
    • API /api/font_sync/list 返回 data: {"fonts": [...], "count": N}dataMap 而非 List
    • 修复为兼容 Map 和 List 两种格式,优先从 data.fonts 取字体列表
    • 修复前iPad运行时抛出 type '_Map<String, dynamic>' is not a subtype of type 'List<dynamic>?' in type cast,导致字体同步失败回退到本地数据

修改文件

  • lib/features/mine/settings/services/font_sync_service.dart — 修复 data 字段类型解析逻辑

[v6.19.0] - 2026-06-05

📋 结构化日志 — LogCategory 按模块控制日志级别

新增功能

  1. LogCategory 枚举 — 在 logger.dart 中新增 LogCategory 枚举,支持 17 个模块分类:
    • UI、网络、路由、存储、设备、认证、传输、搜索、图表、触觉、状态、服务、同步、离线、引导、推送、通用
    • 每个分类有独立的默认日志级别(如 chart/haptic 默认 warning 减少噪音)
  2. 分类级别控制 — 支持动态调整每个分类的日志级别:
    • LogCategory.setLevel() 设置单个分类级别
    • LogCategory.setAllLevels() 批量设置所有分类级别
    • LogCategory.resetLevels() 重置为默认级别
    • LogCategory.exportCustomLevels() / importCustomLevels() 支持持久化
  3. Log 方法扩展Log.d/i/w/e/f 方法新增可选 LogCategory? category 参数:
    • 向后兼容:不传 category 默认为 LogCategory.general
    • 日志输出自动添加分类标签(如 [网络], [路由]
    • 分类级别过滤:低于分类当前级别的日志不输出到控制台(仍记录到内存缓冲区)
  4. LogEntry 扩展LogEntry 新增 category 字段,支持按分类筛选
  5. 日志查看器分类筛选 — 日志查看器页面新增分类过滤栏,支持按模块筛选日志
  6. 日志级别设置页面 — 在通用设置"开发者"分组中新增"日志级别"入口:
    • 展示所有分类及其当前级别
    • 点击分类弹出级别选择器
    • 提供"全部Debug"和"重置默认"快捷操作
    • 自定义级别标记"自定义"标签

修改文件

  • lib/core/utils/logger.dart — 添加 LogCategory 枚举、修改 Log 方法签名、LogEntry 添加 category
  • lib/core/router/app_router.dart — Log 调用添加 LogCategory.router
  • lib/core/router/ohos_nav_bridge.dart — Log 调用添加 LogCategory.router
  • lib/core/router/ohos_route_types.dart — Log 调用添加 LogCategory.router/auth
  • lib/core/services/device/haptic_service.dart — Log 调用添加 LogCategory.haptic
  • lib/core/services/device/device_info_service.dart — Log 调用添加 LogCategory.device/network
  • lib/features/home/providers/home_provider.dart — Log 调用添加 LogCategory.provider
  • lib/features/file_transfer/providers/transfer_notifier.dart — Log 调用添加 LogCategory.transfer
  • lib/main.dart — Log 调用添加对应分类general/storage/haptic/ui/device/router/service/network/onboarding
  • lib/features/mine/settings/presentation/general/general_settings_sections.dart — 添加"开发者"分组
  • lib/features/mine/settings/presentation/general/general_settings_page.dart — 添加 log_level 导航处理
  • lib/features/mine/settings/presentation/general/log_level_settings_page.dart — 新建,日志级别设置页面
  • lib/features/mine/settings/presentation/privacy/log_viewer_page.dart — 添加分类过滤栏和分类标签显示

[v6.18.0] - 2026-06-05

无障碍适配 — VoiceOver/TalkBack 支持

新增功能

  1. 无障碍服务 — 创建 AccessibilityService 单例,管理系统无障碍状态检测、语义调试开关、语义标注辅助方法
  2. 通用设置-无障碍分组 — 在通用设置页面"显示"分组后新增" 无障碍"分组,包含:
    • 语义调试开关(开发者选项,可手动切换)
    • 高对比度指示(跟随系统,只读)
    • 减少动画指示(跟随系统,只读)
    • 粗体文本指示(跟随系统,只读)
  3. 关键页面Semantics标注 — 为以下组件添加 Semantics(label/hint/value) 标注,支持 iOS VoiceOver 和鸿蒙 TalkBack
    • 首页句子卡片(SentenceCard)— 朗读句子内容、作者、互动状态
    • 排行榜项卡片(RankItemCard)— 朗读排名、用户名、等级、数值
    • 日签卡片页面(DailyCardPage)— 朗读日签内容,保存/分享按钮标注
  4. App初始化集成app.dart 中初始化 AccessibilityServicebuild 时同步系统无障碍状态

修改文件

  • lib/core/services/accessibility/accessibility_service.dart — 新建,无障碍服务
  • lib/core/services/accessibility/accessibility_export.dart — 新建,导出文件
  • lib/features/mine/settings/providers/default_settings.dart — 添加 semanticsDebugEnabled 默认值
  • lib/features/mine/settings/providers/sub/general_fields_provider.dart — 添加 semanticsDebugEnabled 字段及持久化
  • lib/features/mine/settings/providers/general_settings_provider.dart — 添加 getter/setter
  • lib/features/mine/settings/presentation/general/general_settings_sections.dart — 添加无障碍分组
  • lib/features/mine/settings/presentation/general/general_settings_page.dart — 处理语义调试开关事件
  • lib/features/home/presentation/home_sentence_card.dart — 添加 Semantics 标注
  • lib/shared/widgets/cards/rank_item_card.dart — 添加 Semantics 标注
  • lib/features/daily_card/presentation/daily_card_page.dart — 添加 Semantics 标注
  • lib/app/app.dart — 初始化 AccessibilityService + build 时同步状态

[v6.18.0] - 2026-06-05

🏗️ 架构增强 — 5项核心重构

1. PlatformCapability 接口抽象

  • 新增 lib/core/utils/platform/platform_capability.dart — 平台能力注册表
  • 定义 19 项能力键localAuth/flutterVibrate/nfcShare/quickActions/homeWidget/backdropFilter/liquidGlass/heavyAnimation/pushNotification/filesystem/usbTransfer/bluetoothDiscovery/shareSheet/fileExport/gpu3d/gallerySave/webView3d/localNotification/calendar
  • PlatformCapabilities.init() 在 app 启动时根据平台注册能力
  • supports(key) 查询 + fallbackDescription(key) 降级说明
  • 重构 11 个文件my_devices_page/haptic_service/nfc_share_service/quick_actions_service/local_notification_service/notification_init_stub/glass_container/account_insights_sheet/home_widget_service/widget_provider/plugin_update_service

2. LogCategory 结构化日志

  • 新增 LogCategory 枚举17 个模块分类ui/network/router/storage/device/auth/transfer/search/chart/haptic/provider/service/sync/offline/onboarding/push/general
  • 每个分类独立日志级别chart/haptic 默认 warning 减少噪音
  • Log.d/i/w/e/f 新增可选 category 参数,完全向后兼容
  • 日志输出自动添加分类标签(如 [网络][路由]
  • 新增 lib/features/mine/settings/presentation/log_level_settings_page.dart — 日志级别配置页面
  • 通用设置"开发者"分组新增"日志级别"入口
  • 日志查看器新增分类筛选栏

3. SafeChartWidget 封装

  • 新增 lib/shared/widgets/charts/safe_chart_widget.dart — 安全图表包装组件
  • _disposed + _ready 双标志位保护 + RepaintBoundary 隔离重绘
  • 替换 10 个图表页面的 DeferredBuilder → SafeChartWidgetlearning_center/coin_log/learning_progress/transfer_stats/statistics/history/favorite/trend_chart/transfer_speed_chart/learning_charts

4. WebSocket P2P 文件传输

  • 新增 lib/features/file_transfer/services/transport/ws_p2p_service.dart — WebSocket P2P 直连服务
  • 服务端/客户端双模式、分块传输、心跳保活、自动重连
  • TransportType 新增 wsP2p,同局域网优先推荐 P2Pconfidence 0.93
  • 配对码页面新增 P2P 状态指示区域

5. 无障碍适配

  • 新增 lib/core/services/accessibility/accessibility_service.dart — 无障碍服务
  • 通用设置新增" 无障碍"分组(语义调试开关 + 系统状态指示)
  • 关键组件添加 Semantics 标注:句子卡片/排行榜项/日签卡片
  • App 初始化时恢复语义调试状态

[v6.17.0] - 2026-06-05

🔧 多平台问题批量修复 — 鸿蒙端 + Web端 + 通用问题

鸿蒙端修复

  1. 1.1 工具中心部分页面显示"不支持此页面" — 为缺少ohosBuilder的路由添加鸿蒙端页面构建器
  2. 1.2 长按桌面图标无快捷按钮 — module.json5添加shortcuts配置主题个性化+通用设置)
  3. 1.3 我的设备下线/移除报错"验证未通过" — 鸿蒙端跳过LocalAuthentication生物识别直接弹确认对话框
  4. 1.7 账户洞察鸿蒙端设备识别异常提示 — 鸿蒙端显示"部分设备可能会出现识别异常"蓝色提示条
  5. 1.9 HapticService降级警告 — 鸿蒙端直接跳过flutter_vibrate检测日志降级为debug级别
  6. 1.11 鸿蒙端设备显示"未知设备" — 增加manufacturer/hardware/device字段回退链Web端精确识别浏览器

通用修复

  1. 1.5 句子详情外部搜索内容为空 — 使用_resolveDisplayText()获取最合适的搜索文本
  2. 1.8 重新打开引导页没反应 — 先重置onboarding完成状态再导航
  3. 1.10/1.12 RenderChartFadeTransition disposed错误 — DeferredBuilder添加disposed标志+图表页面mounted检查
  4. 2 工具中心搜索类型不支持 — 更新搜索类型映射与API一致
  5. 2.1 预置词搜索 — ToolListPage/ToolSearchPage/HanziToolPage添加热门搜索标签
  6. 3 文章广场点击文章不显示内容 — 清除旧数据+完善错误状态展示
  7. 4 RenderFlex overflow弹窗改为日志 — overflow错误仅记录Log.w不传递给原始处理器
  8. 6 引导页完成按钮loading优化 — loading状态动态切换文字正在准备/加载/初始化/即将完成)
  9. 7 日签卡片保存分享按钮移到appbar — 保存分享移到navigationBar trailing
  10. 8 文件传输配对码页面缺少Appbar — 替换为始终可见的返回按钮
  11. 9 减少不必要的日志打印 — 缓冲区减半+Log.i节流5秒+路由日志降级
  12. 10 排行榜隐私保护 — 所有排行类型<50人时显示隐私提示序号用*代替
  13. 11 离线模式/收藏页面重复图标 — 移除dialog重复icon+修复双emoji问题

Web端修复

  1. 5.1 引导页协议链接不跳转 — 使用rootNavigator确保跨ShellRoute导航
  2. 5.2 Web端浏览器精确识别 — 基于WebBrowserInfo识别Chrome/Edge/Safari/QQ浏览器等

修改文件

  • ohos/entry/src/main/module.json5 — shortcuts配置
  • lib/core/services/device/device_info_service.dart — 鸿蒙设备回退+Web浏览器识别
  • lib/core/services/device/haptic_service.dart — 鸿蒙端跳过flutter_vibrate
  • lib/core/services/error/global_error_handler.dart — overflow静默处理
  • lib/core/utils/logger.dart — 缓冲区减半+节流机制
  • lib/core/layout/app_shell.dart — 移除高频日志
  • lib/core/router/app_router.dart — 日志降级
  • lib/core/router/route_registry.dart — ohosBuilder+预置词传递
  • lib/core/router/ohos_placeholders.dart — 预置词传递
  • lib/features/mine/user_center/presentation/my_devices_page.dart — 鸿蒙端跳过生物识别
  • lib/features/mine/user_center/presentation/widgets/account_insights_sheet.dart — 鸿蒙端提示
  • lib/features/mine/settings/presentation/general/general_settings_page.dart — 引导页重开修复
  • lib/features/home/presentation/providers/sentence_detail_sheet.dart — 外部搜索修复
  • lib/features/home/presentation/providers/offline_page.dart — 移除重复icon
  • lib/features/home/presentation/favorite_page.dart — 修复双emoji+disposed保护
  • lib/features/onboarding/presentation/pages/welcome_page.dart — Web端协议链接修复
  • lib/features/onboarding/presentation/pages/personalization_page.dart — loading动态文字
  • lib/features/daily_card/presentation/daily_card_page.dart — 保存分享移到appbar
  • lib/features/file_transfer/presentation/pages/device_pairing_page.dart — 返回按钮修复
  • lib/features/article/presentation/article_detail_page.dart — 文章内容显示修复
  • lib/features/article/providers/article_provider.dart — 清除旧数据
  • lib/features/rank/presentation/rank_page.dart — 隐私保护逻辑
  • lib/shared/widgets/containers/deferred_builder.dart — disposed保护
  • lib/l10n/types/t_account_insights.dart + 14个语言文件 — 鸿蒙端提示翻译

[v6.16.9] - 2026-06-05

🔧 工具中心三合一修复 — 鸿蒙端路由 + 搜索类型 + 预置词搜索

问题

  1. 鸿蒙端工具中心部分页面显示"不支持此页面"hanzi-toolcalc-tooltool-list 三个关键路由缺少 ohosBuilder,导致 OhosNavBridge 无法匹配路由,显示"鸿蒙端暂不支持此页面"
  2. 搜索类型不支持SearchType.changshi 的值为 'cs'(对应 searchall 接口),但 hanzi/search 接口实际支持 changshi 类型,导致搜索返回"不支持的搜索类型"
  3. 缺少预置词搜索 — 工具中心页面无热门搜索词引导,用户需要手动输入关键词,体验不佳

修复

  • 鸿蒙端路由 — 为 hanzi-toolcalc-tooltool-list 三个路由添加 ohosBuilder,新增 /tool/nick 路由
  • 搜索类型映射changshiSearchApiType.searchAll/'cs' 改为 SearchApiType.hanziSearch/'changshi';新增 cs 枚举值保留 searchall 接口;新增 25 个 searchall 独有类型
  • 预置词搜索ToolNavConfig 新增 presetKeywords 字段;所有工具配置预置词;HanziToolConfig 新增 presetKeywordsToolListPage/ToolSearchPage/HanziToolPage 添加热门搜索标签UI

修改文件

  • lib/core/router/route_registry.dart — tool-list builder 传递 presetKeywords
  • lib/core/router/ohos_placeholders.dart — buildToolListOhosWidget/buildNickToolOhosWidget 传递 presetKeywords
  • lib/core/router/app_routes.dart — 新增 nickTool 路由常量
  • lib/features/discover/models/search_type.dart — changshi 改用 hanziSearch新增 searchall 独有类型
  • lib/features/discover/models/tool_item.dart — ToolNavConfig 新增 presetKeywords所有工具配置预置词
  • lib/features/discover/presentation/pages/tool_list_page.dart — 新增 presetKeywords 属性和热门搜索标签UI
  • lib/features/discover/presentation/pages/tool_search_page.dart — 新增 presetKeywords 属性和热门搜索标签UI
  • lib/features/discover/presentation/pages/tool/hanzi_tool_page.dart — HanziToolConfig 新增 presetKeywords_buildQuickActions 使用配置预置词
  • lib/features/discover/presentation/widgets/tool/tool_navigation_helper.dart — 传递 presetKeywords 给 HanziToolConfig 和 listExtra

[v6.16.8] - 2026-06-05

🛡️ main()初始化异常捕获修复

问题

  • _appMain()未捕获异常_appMain()是返回Future<void>的异步函数,在main()中直接调用未await也未捕获异常。若初始化过程中发生未处理的异步异常如windowManager初始化失败、Catcher2配置异常等会导致顶层未处理的Future异常整个应用崩溃且无日志记录。

修复

  • catchError兜底 — 在main()中为_appMain()调用添加.catchError(),捕获所有未处理的异步异常并记录日志,防止静默崩溃

举一反三

  • 所有异步入口函数调用必须处理Future异常catchError或try-catch
  • 即使内部各步骤已有try-catch顶层仍需兜底保护防止遗漏

修改文件: lib/main.dart


[v6.16.7] - 2026-06-05

🌐 Web端编译+运行修复 — Platform兼容+Zone mismatch+path_provider保护

问题

  1. Platform._operatingSystem 不支持 — Web端 dart:ioPlatform 类不可用,多个文件直接使用 Platform.isAndroid/Platform.isIOS 等导致运行时 Unsupported operation 异常
  2. path_provider MissingPluginException — Web端 getApplicationSupportDirectory()/getTemporaryDirectory() 等无原生实现,多个文件直接调用导致异常
  3. Catcher2 Zone mismatchmain()runZonedGuarded 与 Catcher2 内部 runZonedGuarded 嵌套导致 Zone 不一致警告
  4. Catcher2 navigator key 缺失Catcher2 构造时未传入 navigatorKey,导致对话框报告模式无法使用

修复

  • Platform.xxx → pu.xxx — 将30+个文件中的 Platform.isAndroid/isIOS/isMacOS/isWindows/isLinux/pathSeparator/operatingSystem 替换为 pu.isAndroid/isIOS/... 抽象Web端自动使用 stub 实现
  • kIsWeb 保护 — 为20+个文件添加 if (kIsWeb) return/throw 保护,防止 Web 端调用 path_providerdart:io API
  • Zone mismatch — 移除 main() 中的外层 runZonedGuarded,由 Catcher2 内部统一管理 zone
  • Catcher2 navigatorKey — 传入 rootNavigatorKey,修复对话框报告模式
  • platformVersion — 新增 pu.platformVersion 抽象(permission_service.dart 需要)

举一反三

  • 所有 Platform.xxx 调用必须通过 platform_utils.dartpu.xxx 抽象,禁止直接使用 dart:ioPlatform
  • 所有 path_provider 调用必须添加 kIsWeb 保护
  • Platform.pathSeparator 统一替换为 '/'Dart 在所有平台都支持正斜杠)
  • Catcher2 与 runZonedGuarded 不可嵌套使用

修改文件30+

  • lib/main.dart — 移除外层 runZonedGuarded
  • lib/core/services/catcher2_config_service.dart — 添加 navigatorKey
  • lib/core/services/device/device_info_service.dart — Platform → pu
  • lib/core/utils/platform/ohos_compatibility_helper.dart — kIsWeb 保护
  • lib/core/utils/platform/platform_io_native.dart — 新增 platformVersionImpl
  • lib/core/utils/platform/platform_io_stub.dart — 新增 platformVersionImpl
  • lib/core/utils/platform/platform_utils.dart — 新增 platformVersion
  • lib/core/services/crash_log_service.dart — kIsWeb 保护
  • lib/core/storage/hive_safe_access.dart — kIsWeb 保护
  • lib/core/utils/logger.dart — kIsWeb 保护
  • lib/core/services/data/backup_service.dart — kIsWeb 保护
  • lib/core/services/data/settings_export_service.dart — kIsWeb 保护
  • lib/core/services/data/image_cache_metadata_service.dart — kIsWeb 保护
  • lib/core/network/api_client.dart — kIsWeb 保护
  • lib/shared/widgets/display/appbar_date_display.dart — Platform → pu
  • lib/features/home/presentation/date_config_sheet.dart — Platform → pu
  • lib/core/services/notification/notification_service.dart — Platform → pu
  • lib/core/services/notification/local_notification_service.dart — Platform → pu
  • lib/features/home/presentation/home_sentence_card.dart — kIsWeb 保护
  • lib/features/onboarding/presentation/widgets/mesh_gradient_background.dart — Platform → pu
  • lib/core/services/auth/permission_service.dart — Platform → pu
  • lib/shared/widgets/media/safe_cached_image.dart — kIsWeb 保护
  • lib/features/home/services/cache_service.dart — pathSeparator → '/'
  • lib/shared/widgets/feedback/share_sheet.dart — Platform → pu
  • lib/features/tool_center/leisure/presentation/widgets/leisure_share_sheet.dart — Platform → pu
  • lib/features/mine/settings/presentation/image_cache_grid.dart — pathSeparator → '/'
  • lib/features/mine/settings/presentation/image_cache_detail_page.dart — pathSeparator → '/'
  • lib/features/mine/settings/services/font_download_service.dart — pathSeparator → '/'
  • lib/features/mine/settings/presentation/font_management_notifier.dart — pathSeparator → '/'
  • lib/core/services/readlater/sharing_receiver_service.dart — pathSeparator → '/'
  • 以及其他10+个文件的 kIsWeb 保护

[v6.16.6] - 2026-06-05

🖥️ Windows端编译+运行修复 — 登录闪退+编译错误+平台兼容

问题

  1. 登录闪退 — Windows端输入账户密码后点击登录应用崩溃闪退
    • 根因:FlutterSecureStorageWindows.write()_backwardCompatible.delete() 未 await在 Windows 上 MethodChannelFlutterSecureStorage 未注册原生实现,抛出 MissingPluginException 成为未处理异步异常
    • 次因:SecureStorage 缺少 Windows 降级方案macOS 有 SharedPreferences 替代Windows 没有)
  2. 编译错误 — 多个文件使用 kIsWeb 但未导入 package:flutter/foundation.dart
  3. 语法错误more_settings_page.dart 工厂重置方法中多余 } 导致 try-catch 结构破坏
  4. 平台兼容Platform.isAndroidprogress_share_card.dart 中未通过 pu 封装使用
  5. 桌面端兼容QuickActionsService 在桌面端调用移动端 API
  6. 设备注册AuthNotifier.login()registerDeviceIfNeeded() 未 await异常无法捕获

修复

  • FlutterSecureStorageWindowswrite()_backwardCompatible.delete() 添加 await + try-catch
  • SecureStorage — Windows 与 macOS 统一使用 SharedPreferences 降级方案(_useSharedPreferences
  • AuthNotifierregisterDeviceIfNeeded() 添加 await + try-catchlogin 和 register 两处)
  • QuickActionsService — 桌面端跳过初始化(if (pu.isDesktop) return
  • progress_share_card.dartPlatform.isAndroid/IOSpu.isAndroid/isIOS
  • more_settings_page.dart — 修复多余 } 导致的 try-catch 结构错误
  • 6个文件 — 添加 import 'package:flutter/foundation.dart' 修复 kIsWeb 未定义:
    • general_settings_provider.dart
    • general_fields_provider.dart
    • chat_file_service.dart
    • data_export_service.dart
    • chat_audio_service.dart
    • readlater_device_sync_service.dart

修改文件:

  • packages/flutter_secure_storage_windows/lib/src/flutter_secure_storage_windows_ffi.dart
  • lib/core/storage/secure_storage.dart
  • lib/features/auth/providers/auth_provider.dart
  • lib/core/services/device/quick_actions_service.dart
  • lib/features/progress/presentation/progress_share_card.dart
  • lib/features/mine/settings/presentation/more_settings_page.dart
  • lib/features/mine/settings/providers/general_settings_provider.dart
  • lib/features/mine/settings/providers/sub/general_fields_provider.dart
  • lib/features/discover/services/chat_file_service.dart
  • lib/core/services/data/data_export_service.dart
  • lib/features/discover/services/chat_audio_service.dart
  • lib/core/services/readlater/readlater_device_sync_service.dart

[v6.16.5] - 2026-06-05

🌐 Web平台兼容性修复 — kIsWeb守卫保护文件系统操作

问题

多个服务文件直接使用 dart:ioFile/Directorypath_providergetTemporaryDirectory() 等API 在Web平台运行时会抛出 MissingPluginException 或编译错误,导致应用崩溃。

修复

为所有涉及文件系统操作的公共方法添加 kIsWeb / pu.isWeb 早期守卫:

  • logger.dartexportToFile() 添加 if (kIsWeb) throw UnsupportedError(...)shareLogs() 添加 if (kIsWeb) return;
  • backup_service.dartgetBackupList() 返回空列表;performBackup() 抛出 UnsupportedErrordeleteBackup() 返回 falsedeleteAllBackups() / getTotalBackupSize() 早期返回
  • settings_export_service.dartshareSettings() 添加 if (kIsWeb) return;_writeTempFile() 抛出 UnsupportedError
  • image_cache_metadata_service.dartindexFile() / indexFromCacheManager() / autoCleanExpired() / rebuildIndex() 均添加 if (kIsWeb) return;
  • api_client.dartcreateFormData() 添加 if (kIsWeb) throw UnsupportedError(...)

修复原则

  • 所有 getTemporaryDirectory()getApplicationDocumentsDirectory()getApplicationSupportDirectory()getLibraryDirectory() 调用前,均需 if (kIsWeb) 保护
  • 保留 import 'dart:io'; 因为非Web端仍需要
  • 添加 import 'package:flutter/foundation.dart' show kIsWeb;

修改文件:

  • lib/core/utils/logger.dart
  • lib/core/services/data/backup_service.dart
  • lib/core/services/data/settings_export_service.dart
  • lib/core/services/data/image_cache_metadata_service.dart
  • lib/core/network/api_client.dart

[v6.16.4] - 2026-06-04

🐛 鸿蒙端编译修复 — Form小组件不兼容API清理

问题

鸿蒙端 flutter build hap 编译失败81个错误根因

  1. Form小组件使用了不支持的APIbindContextMenuMenuItemPlacementonLongPressvibrator 在鸿蒙Form(卡片)环境中不可用
  2. 缺少图标资源ic_refreshic_copyic_open_appic_saveic_shareic_checkic_openohos/entry/src/main/resources/base/media/ 中不存在

修复

  • 移除6个Form页面不兼容API — SolarTermFormPage、CheckinFormPage、DailySentenceFormPage、ReadlaterFormPage、DailyCardFormPage、FortuneFormPage
    • 移除 @Builder MenuBuilder() + MenuItemForm不支持菜单组件
    • 移除 .bindContextMenu()Form不支持上下文菜单
    • 移除 .onLongPress() + vibrator.vibrate()Form不支持长按和震动
    • 移除 pasteboard.setData() / promptAction.showToast()Form不支持剪贴板和Toast
    • 保留 .onClick() + postCardAction() 跳转主APP功能
  • 添加7个占位图标资源 — 复制 icon.png 作为占位,避免资源引用缺失错误

举一反三

  • 鸿蒙Form(卡片)有严格API限制仅支持基础UI组件和 postCardAction 交互
  • 任何需要复杂交互(菜单、长按、震动、剪贴板)的操作应通过 postCardAction 跳转到主APP执行
  • Form页面的功能操作应通过 router / call / message 三种 postCardAction 类型实现

修改文件:

  • ohos/entry/src/main/ets/formability/pages/SolarTermFormPage.ets
  • ohos/entry/src/main/ets/formability/pages/CheckinFormPage.ets
  • ohos/entry/src/main/ets/formability/pages/DailySentenceFormPage.ets
  • ohos/entry/src/main/ets/formability/pages/ReadlaterFormPage.ets
  • ohos/entry/src/main/ets/formability/pages/DailyCardFormPage.ets
  • ohos/entry/src/main/ets/formability/pages/FortuneFormPage.ets
  • ohos/entry/src/main/resources/base/media/ (7个图标资源)

[v6.16.3] - 2026-06-04

🛡️ 系统性稳定性加固与审计修复v6.16.0 ~ v6.16.3 合并)

审计修复 — 5类系统性风险26处加固

基于验收审计发现的87个潜在问题优先修复26处高危问题

  • gal插件ArgumentError捕获5处— iOS模拟器objective_c库异常时降级为友好提示
  • path_provider异常降级8处— 失败时降级使用Directory.systemTemp
  • Hive.openBox ArgumentError捕获2处— 降级打开fallback box
  • addPostFrameCallback mounted检查6处— 回调开头添加mounted保护
  • 页面级pop canPop()保护5处— 不可pop时降级导航到首页

Hive系统级联崩溃根因修复v6.16.2 + v6.16.3

  • 根因: Hive.initFlutter()在iOS模拟器因objective_c库问题失败后导致整个Hive系统瘫痪
  • 影响范围: KvStorage、WallpaperFavoriteService、WallpaperHealthService、SettingsChangeLogger等全部初始化失败
  • 修复: HiveSafeAccess.ensureInitialized() — 失败时降级使用Hive.init()+手动路径获取;各服务添加全异常捕获优雅降级

引导页 & 小部件修复v6.16.1

  • 引导页重复显示 — 将判断从initialLocation移到redirect回调,改用isOnboardingCompleted
  • 桌面小部件framework断言 — CupertinoSliverNavigationBar补充largeTitle参数

修改文件:

  • hive_safe_access.dart, kv_storage.dart, wallpaper_favorite_service.dart, wallpaper_health_service.dart, settings_change_logger.dart
  • share_sheet.dart, leisure_share_sheet.dart, progress_share_card.dart, chat_video_bubble.dart, china_colors_page.dart
  • export_io_native.dart, font_download_service.dart, logger.dart, sentence_detail_actions.dart, account_export_info_sheet.dart, voice_recorder_sheet.dart, ohos_compatibility_helper.dart, general_fields_provider.dart
  • progress_beautify_page.dart, signin_page.dart, app_lock_pattern_setup.dart, image_cache_page.dart, chat_flow_page.dart, weather_settings_page.dart
  • hot_search_page.dart, security_question_page.dart, change_password_page.dart, sentence_detail_sheet.dart
  • app_router.dart, widget_management_page.dart

[v6.15.0] - 2026-06-04

🐛 10项Bug修复 + 验收审计举一反三

# 问题 根因 修改文件
1 了解我们页面微信搜索无法单独操作 标签合并导致 learn_us_widgets.dart
2 权限管理摇一摇开关关闭无反应 refresh()销毁开关组件 permission_management_page.dart, permission_service.dart
3 日签卡片一直转圈loading API请求无超时保护 daily_card_provider.dart, daily_card_service.dart
4 进度保存图片失败 objective_c库gal抛ArgumentError export_io_native.dart, progress_beautify_page.dart
5 数据管理页文档目录异常 safeAppDirPath null无降级 backup_service.dart, data_management_page.dart
6 缓存管理AppBar标题多余"图片" 翻译文案问题 zh_cn.dart, zh_tw.dart
7 个人中心Hive缓存报错 HiveCacheStore打开Box异常 cache_config.dart
8 iOS长按App icon无返回按钮 QuickActions用go()替换路由 app.dart3处go→push
9 清理后台重开显示引导页 路由判断用isFirstLaunch误判 app_router.dart, onboarding_provider.dart
10 桌面小部件framework断言 initState异步访问ref widget_management_page.dart

🔍 验收审计 - 举一反三分析

风险类别 高危 中危 低危 合计
异步生命周期(mounted保护) 11 20 9 42
Hive/Path/Gal缺少ArgumentError捕获 9 10 4 29
路由导航(go应改push) 4 4 2 10
KvStorage关键标志位默认值 4 2 0 6

v6.16.0已修复上述审计建议的高危问题


[v6.14.0] - 2026-06-04

🎴 日签卡片 AR 3D 展示效果 (Issue #9)

采用伪AR方案 — Flutter 3D变换 + 设备传感器模拟AR体验

  • 3D卡片渲染 — Matrix4透视投影变换设备感应倾斜偏移sensors_plus
  • 景深效果 — RadialGradient深空背景 + 动态星空粒子 + ShaderMask暗角
  • 光影动画 — 4秒周期LinearGradient光影流动覆盖层
  • 截图分享 — RepaintBoundary截取PNG → share_plus系统分享
  • 6套AR主题 — 宇宙深空🌌 / 极光幻境🌈 / 落日余晖🌅 / 森林秘境🌿 / 深海探幽🌊 / 水晶殿堂💎
  • 手势控制 — 拖拽旋转 / 双击重置(触觉反馈) / 捏合缩放(0.6x-2.0x)
  • Cupertino风格控制面板 — GlassContainer底部面板截图/主题切换/自动旋转/重置)

新增文件: lib/features/daily_card/presentation/daily_card_ar_view.dart

修改文件: daily_card_page.dart, app_routes.dart, route_registry.dart


[v6.13.0] - 2026-06-04

🔧 鸿蒙原生层修复 + iOS Widget深度定制 + 基础设施

A. 鸿蒙原生层修复 (Issue #2)

  • 所有FormPage添加.bindContextMenu()长按上下文菜单6个卡片页面各自定制操作菜单
  • 日签卡片保存按钮OHOS兼容 — gal不支持OHOS降级为系统分享方案

B. iOS Widget深度定制 — AppIntent交互式按钮 (Issue #8)

  • 新增7种AppIntent定义刷新/点赞/分享/切换/签到/打开页面/保存卡片)
  • 6个Widget View添加iOS 17+ Button(intent:)交互式按钮iOS 14-16降级为Link方式
  • Flutter端更新home_widget_service.dart处理新Intent类型

C. 基础设施 (Issue #3, #4)

  • Hive安全访问单例 — 新建hive_safe_access.dart统一lazy-init守卫、Box缓存、并发锁、重试机制KvStorage/CrashMonitor/CacheConfig/RssService全部接入
  • 设备发现去重增强 — deviceId+IP组合键去重 + 30秒心跳超时清理定时器

新增文件: hive_safe_access.dart, XianyanWidgetIntents.swift 修改文件: 6个FormPage.ets, XianyanWidget.swift, home_widget_service.dart, export_io_native.dart, ohos_compatibility_helper.dart, kv_storage.dart, lan_discovery_service.dart, device_discovery_provider.dart


[v6.11.0] - 2026-06-04

📷 集成真实扫码SDK + 鸿蒙端全面修复

扫码功能完善

  • 创建通用扫码页面qrcode_scanner_page.dart,集成mobile_scanner: ^7.1.4
  • 完整流程:相机权限 → 动画扫描线 → URL/文本/Email/电话/WiFi/vCard分类处理 → 智能结果处理
  • 闪光灯开关、相册识别辅助功能Cupertino风格界面支持动态主题

鸿蒙端兼容性修复9项

  • 相机权限缺失 → AndroidManifest.xml添加CAMERA
  • ⚠️ 文件传输设备列表重复 → 已有去重逻辑建议增加IP组合键
  • ⚠️ 长按桌面图标无按钮列表 → 鸿蒙原生限制需改.ets代码
  • HiveError Box not found → OhosCompatibilityHelper.safeOpenBox()
  • ⚠️ 日签保存无反应 → gal不支持OHOS降级为分享
  • 输入框不弹输入法 → requestKeyboardFocus()增强方法
  • 数据管理显示0B → safeGetDirectorySize()安全读取
  • 设备信息unknown → getEnhancedPlatform()/getEnhancedDeviceModel()
  • OhosCompatibleState Mixin快速集成

新增文件: qrcode_scanner_page.dart, ohos_compatibility_helper.dart 修改文件: profile_page.dart, app_routes.dart, route_registry.dart, AndroidManifest.xml


[v6.10.5] - 2026-06-02

🏗️ 架构优化 + 多语言全覆盖 + 构建修复v6.10.0 ~ v6.10.5 合并)

架构优化 (v6.10.0)

  • MacosPlatformService统一 — 分散MethodChannel统一为新服务Swift端扩展为10个方法处理器
  • 二维码WebSocket长连接 — QrcodeWsService双通道架构WS优先+HTTP轮询降级+ 中继服务器
  • RSS全文阅读 — Readability算法提取全文 + 图片画廊阅读模式
  • 灵动岛倒计时聚焦模式 — startCountdownActivity/update/endCountdownActivity
  • 自定义Lint规则 — double_angle_brackets / hardcoded_color / hardcoded_chinese
  • 应用图标和名称 — 全平台图标更新iOS/macOS名称改为中文「闲言」

多语言全覆盖 (v6.10.3 + v6.10.4)

  • 6页面全量i18n — 账户设置(18key)、数据管理(33key)、来源(40key)、收藏(68key)、离线(67key)
  • 翻译字段补全 — roleNative + 7个分发渠道字段12种语言补全
  • 覆盖14种语言 — zh_cn/en/ja/zh_tw/ko/de/it/es/ar/bn/hi/pt/ru/fr

构建修复 (v6.10.1 + v6.10.2 + v6.10.5)

  • Syncfusion Chart崩溃 — DeferredBuilder包裹35处图表延迟渲染21个文件
  • 扫码登录自动跳转 — HTTP轮询(3s) + WebSocket双通道监听 + 自动tokenLogin
  • pubspec.yaml双模板 — 拆分pubspec.ohos.yaml/pubspec.macos.yamltools/setup_pubspec.ps1自动生成
  • AppBar标题/返回按钮修复 — 7个页面统一CupertinoNavigationBar风格

涉及文件: macos平台服务、路由注册、扫码登录、多语言系统(5新模块+14语言)、图表组件、pubspec模板、7个页面导航栏


[v6.9.28] - 2026-06-01

🏗️ 路由架构重构 + 基础设施建设v6.9.19 ~ v6.9.51 合并)

路由架构重构 (v6.9.28) — Single Source of Truth

  • 新增统一路由注册表route_registry.dart~1000行消除6-8个文件手动同步鸿蒙配置
  • 自动生成GoRoute和OhosRouteEntryohos_nav_bridge从1188行缩减至245行
  • 新增5个核心文件route_def/route_registry/route_builders/ohos_route_types/ohos_placeholders

数据同步架构 (v6.9.23) — DataSyncEventBus

  • 统一事件总线替代分散StreamController零破坏性迁移compat兼容层
  • 支持readlater/favorite两种事件类型source追踪便于调试

Supabase SDK移除 (v6.9.41) — 全面切换自建API

  • 移除supabase_flutter依赖5个服务重写为ApiClient调用
  • PHP后端新增22个接口Readlater 15 + FontSync 2 + PluginUpdate 5
  • Admin管理后台新增5组CRUD模块FastAdmin

句子详情面板重构 (v6.9.47 + v6.9.48)

  • 1252行拆分为3个文件panel/content/actionsRiverpod Notifier消除prop drilling
  • TTS关闭按钮、相关推荐、卡片分享图片、AnimatedSwitcher过渡动画

主题系统 & UI修复 (v6.9.22 + v6.9.36)

  • context.isDark/context.ext便捷扩展Sheet/Dialog硬编码颜色全面修复7个文件
  • 21项批量UI修复emoji清理、按钮溢出、协作画布绘制bug、Android快捷方式、16KB页面支持

多语言 & 功能 (v6.9.27 + v6.9.33 + v6.9.34 + v6.9.37 + v6.9.49)

  • 登录/注册95key i18n(TAuth)、会话流100key i18n(TChatFlow)、备案信息i18n
  • 功能分级标准FeatureAccessLevellocalOnly/cloudWithCloudSync/cloudRequired
  • 贡献者头像墙首字占位、阅读报告本地化、内容纠错邮箱验证码

鸿蒙适配 & 开发工具 (v6.9.20 + v6.9.24 + v6.9.38 + v6.9.40 + v6.9.42 + v6.9.51)

  • module.json5权限审计移除9个system级权限、schema校验修复、receive_sharing_intent配置
  • bitsdojo_window→window_manager迁移、win32 6.x API迁移、Swift条件编译修复
  • Android配置一致性检查脚本、翻译覆盖率检测Python脚本1304键基准、CanvasProvider单元测试42用例

🏷️ 软件特性功能 (v6.9.18及更早版本已完成的特性)

  • 🏠 主页 — 每日拾句/句子广场/下拉刷新动画/精灵角色互动/摇一摇换句
  • 🔍 发现 — 会话流AI聊天/稍后读/闲情逸致/灵感/日签卡片/壁纸模板/进度追踪/工具中心
  • 👤 我的 — 个人中心/收藏/历史/设备管理/内容纠错/文件传输
  • ⚙️ 设置 — 主题个性化/通用设置/权限管理/插件系统/实验性功能
  • 🎨 设计系统 — 动态主题(亮/暗/AMOLED)/动态圆角/GlassContainer毛玻璃/统一设计令牌
  • 🔒 隐私合规 — 协议同意后初始化权限/AndroidManifest自启动防护/外部跳转确认弹窗
  • 📱 平台适配 — Android/iOS/鸿蒙/响应式布局/NFC文件传输
  • 🔄 路由架构 — 统一路由注册表(Single Source of Truth)/GoRoute+OhosRouteEntry自动生成/中间件架构

已归档版本 v6.9.18(了解我们弹窗) / v6.9.17(语言选择动态翻译) / v6.9.16(阅读报告本地降级) / v6.9.15(安卓快捷方式修复) / v6.9.14(主题系统增强) / v6.9.13(数据同步架构) / v6.9.12(协作画布修复) / v6.9.11(概览仪表盘) / v6.9.10(阅读报告服务) / v6.9.9(翻译插件) / v6.9.8(闲情逸致) / v6.9.7(诗词设置) / v6.9.6(工具中心) / v6.9.5(文件传输) / v6.9.4(搜索映射) / v6.9.3(灵感暗色渐变) / v6.9.2(隐私政策) / v6.9.1(FeatureFlag) / v6.9.0(稍后读修复) / v6.8.9(收藏同步) / v6.8.8(图片缓存) / v6.8.7(纠错布局) / v6.8.6(闲情热力图) / v6.8.5(外部跳转) / v6.8.4(工具面板重构) / v6.8.3(导航配置) / v6.8.1(引导页多语言) / v6.8.0(实验功能) / v6.7.9-v6.7.0(多项迭代) / v6.6.172-v6.6.168(插件+翻译+OHOS) / v6.6.167-v6.6.163(汇率+异常保护+API降级) / v6.6.162-v6.6.135(多项功能迭代) / v6.6.133-v6.5.45(综合审计+隐私+热力图+工具面板) / v16.36.0-v16.36.3(插件+翻译+OHOS) / v16.35.0(性能优化8项) / 6.25.0-6.25.1(鸿蒙小组件) / 6.24.0(诗词设置) / 14.0.0-14.23.0(传输+翻译+画布+WebRTC) / 13.2.0-13.9.0(信令+本地化+主题+设置) / 6.4.1-6.4.5(鸿蒙数据库) / 5.10.0-5.13.0(鸿蒙SDK+auth) / 1.21.0-1.48.0(早期功能迭代) — 更早版本详见 git history