1. 移除NFC和蓝牙相关依赖、权限及功能代码,精简传输链路 2. 重构设备在线统计逻辑,使用后端7天活跃字段替代本地计算 3. 更新应用名称、权限说明和协议文档 4. 新增消息转发、缓存管理、医疗免责提示功能 5. 优化运势模块和字体管理文案,修复构建日志问题
826 lines
54 KiB
Markdown
826 lines
54 KiB
Markdown
# Changelog
|
||
|
||
所有重要变更均记录于此文件。格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/)。
|
||
|
||
***
|
||
|
||
## [v6.20.2] - 2026-06-06
|
||
|
||
### 📱 鸿蒙端占位页面体验优化 — 友好提示 + 功能介绍
|
||
|
||
#### 优化
|
||
- **占位页面全面重构** — 将5个鸿蒙端占位页面(协作画布/屏幕共享/传输聊天/快速卡片/编辑器子页面)从简陋的"暂不支持"提示升级为完整的功能介绍页面
|
||
- **统一占位页面风格** — 提取 `_OhosFeaturePlaceholder` 通用组件,统一emoji图标 + 功能名称 + 适配状态徽章 + 功能介绍 + 特性列表 + 返回按钮的布局
|
||
- **适配状态徽章** — 使用黄色圆点 + "该功能正在适配中" 替代原来的"鸿蒙端暂不支持XXX",语气更友好
|
||
- **功能介绍文案** — 每个占位页面增加功能描述和3-4条特性说明,让用户了解该功能的用途
|
||
- **编辑器子页面差异化** — 图片预览/图片裁剪/图片画廊/3D模型预览各自显示不同的emoji和功能介绍
|
||
- **OhosNotFoundWidget 升级** — 404页面同步升级为统一设计风格
|
||
- **使用设计系统令牌** — 所有占位页面使用 AppTheme/AppSpacing/AppTypography/AppRadius 统一设计令牌,支持深色模式
|
||
|
||
#### 鸿蒙端功能可行性分析
|
||
- **协作画布** — 依赖 flutter_webrtc(不支持鸿蒙),CRDT纯Dart可运行但无传输通道,保留占位
|
||
- **屏幕共享** — 依赖 flutter_webrtc + InAppScreenCapture(均不支持鸿蒙),保留占位
|
||
- **传输聊天** — Socket/WebSocket理论上可用,但文件传输依赖 nearby_service/localsend 等原生库不支持鸿蒙,保留占位
|
||
- **快速卡片** — 核心为纯Flutter组件,理论上可运行,但TTS/屏幕常亮/相册保存需降级处理,当前保留占位待验证
|
||
- **编辑器子页面** — 图片预览(photo_view)/画廊可能可用,裁剪(extended_image)/3D(flutter_3d_controller)需验证,保留占位
|
||
|
||
#### 修改文件
|
||
- `lib/core/router/ohos_placeholders.dart` — 全面重构占位页面,提取通用组件,增加功能介绍
|
||
|
||
***
|
||
|
||
## [v6.20.1] - 2026-06-06
|
||
|
||
### 🔧 跨平台编译修复 — Web/iOS/macOS三端编译通过
|
||
|
||
#### 修复
|
||
- **quill_native_bridge_windows 与 win32 6.x 不兼容** — 添加 `dependency_overrides` 指向本地修补版 `packages/quill_native_bridge_windows`(已适配win32 6.x API),解决macOS编译失败
|
||
- **nearby_service_adapter 条件导出** — 拆分为 `nearby_service_adapter_io.dart`(原生平台)+ `nearby_service_adapter_web.dart`(Web桩实现),解决Web编译时 `nearby_connections` 和 `dart:io` 不可用问题
|
||
- **oauth_service.dart 平台抽象** — `Platform.isIOS`/`Platform.isMacOS` 替换为 `pu.isIOS`/`pu.isMacOS`(项目平台抽象层),解决Web编译时 `dart:io` 不可用问题
|
||
- **缺失4个依赖包** — 在 `pubspec.yaml`/`pubspec.macos.yaml`/`pubspec.ohos.yaml` 中补充 `nearby_connections`/`flutter_web_auth`/`google_sign_in`/`sign_in_with_apple`
|
||
|
||
#### 新增文件
|
||
- `lib/features/file_transfer/services/transport/nearby_service_adapter_io.dart` — 原生平台nearby_service适配器实现
|
||
- `lib/features/file_transfer/services/transport/nearby_service_adapter_web.dart` — Web平台桩实现(所有方法返回false/空)
|
||
- `lib/features/file_transfer/services/transport/nearby_connections_web.dart` — Web平台nearby_connections类型桩
|
||
- `lib/features/file_transfer/services/transport/dart_io_stub.dart` — Web平台dart:io桩(备用)
|
||
|
||
#### 编译结果
|
||
- ✅ Web: `build/web` 编译成功(341.5s)
|
||
- ✅ iOS: `build/ios/iphoneos/Runner.app` (100.5MB) 编译成功
|
||
- ✅ macOS: `build/macos/Build/Products/Release/xianyan.app` (200.2MB) 编译成功
|
||
|
||
#### 修改文件
|
||
- `pubspec.yaml` — 补充4个依赖 + quill_native_bridge_windows path override
|
||
- `pubspec.macos.yaml` — 同步补充4个依赖 + quill_native_bridge_windows path override
|
||
- `pubspec.ohos.yaml` — 同步补充4个依赖
|
||
- `lib/features/file_transfer/services/transport/nearby_service_adapter.dart` — 改为条件导出
|
||
- `lib/features/auth/services/oauth_service.dart` — dart:io → 平台抽象层
|
||
|
||
***
|
||
|
||
## [v6.20.0] - 2026-06-05
|
||
|
||
### 📱 文件传输 — 集成nearby_connections实现P2P近场传输
|
||
|
||
#### 新增
|
||
- **nearby_connections P2P传输引擎** — 在NearbyServiceAdapter中集成Google Nearby Connections库,实现蓝牙发现+Wi-Fi Direct传输双引擎
|
||
- **附近设备发现入口** — 设备配对页面"其他"标签新增"📱 附近设备"卡片(仅Android/iOS显示)
|
||
- **PairingMethod.nearbyP2p** — 新增配对方式枚举值,标识nearby_connections P2P连接
|
||
- **DegradationManager.nearbyP2p** — 新增平台能力检测,非Android/iOS平台自动降级提示
|
||
- **P2P传输进度流** — NearbyP2pTransferProgress类,实时跟踪文件传输进度
|
||
- **P2P设备发现流** — NearbyP2pDeviceInfo类,管理设备发现/连接/断开状态
|
||
- **14种语言翻译** — 新增nearbyDiscovery/nearbyDiscoveryDesc翻译键
|
||
|
||
#### 修复
|
||
- **NearbyConnections API调用修正** — `NearbyConnections()` → `Nearby()`(nearby_connections包的正确单例类名)
|
||
- **PayloadStatus枚举修正** — `PayloadTransferUpdateStatus` → `PayloadStatus`,`COMPLETED` → `SUCCESS`(匹配包实际API)
|
||
- **P2P权限请求修正** — 使用permission_handler替代不存在的Nearby权限方法,支持位置/蓝牙/附近Wi-Fi设备权限
|
||
- **startDiscovery参数修正** — 第一个参数为userNickName而非serviceId
|
||
- **OnEndpointLost回调修正** — endpointId参数类型为`String?`(可空)
|
||
- **requestConnection回调补全** — 添加必需的onConnectionInitiated/onConnectionResult/onDisconnected回调
|
||
- **Switch穷举补全** — device_discovery_provider/pairing_service中补充PairingMethod.nearbyP2p分支
|
||
|
||
#### 新增依赖
|
||
- `nearby_connections: ^4.1.1` — Google Nearby Connections(蓝牙发现+Wi-Fi Direct传输,仅Android/iOS)
|
||
|
||
#### 修改文件
|
||
- `lib/features/file_transfer/services/transport/nearby_service_adapter.dart` — 双引擎架构(nearby_service + nearby_connections)
|
||
- `lib/features/file_transfer/presentation/pages/device_pairing_page.dart` — 新增附近设备发现入口
|
||
- `lib/features/file_transfer/models/transfer_enums.dart` — 新增PairingMethod.nearbyP2p
|
||
- `lib/features/file_transfer/services/degradation_manager.dart` — 新增nearbyP2p平台能力
|
||
- `lib/features/file_transfer/providers/device_discovery_provider.dart` — 补充nearbyP2p switch分支
|
||
- `lib/features/file_transfer/services/pairing_service.dart` — 补充nearbyP2p switch分支
|
||
- `lib/l10n/types/t_profile.dart` — 新增nearbyDiscovery/nearbyDiscoveryDesc字段
|
||
- `lib/l10n/languages/*.dart` — 14种语言文件新增翻译
|
||
- `pubspec.yaml` — 新增nearby_connections依赖
|
||
|
||
***
|
||
|
||
## [v6.19.4] - 2026-06-05
|
||
|
||
### 🔧 App Store审核修复 — 移除NFC/蓝牙/Web登录,修复注册流程
|
||
|
||
#### 审核被拒问题修复
|
||
1. **Guideline 2.1 — NFC功能需演示视频** → 移除全部NFC功能代码、权限声明和依赖(flutter_nfc_kit、ndef)
|
||
2. **Guideline 4 — 登录跳转外部浏览器** → 移除"Web登录"按钮(原跳转 `https://tools.wktyl.com/web-login` 至系统浏览器)
|
||
3. **Guideline 2.1(a) — 注册收不到验证码** → 修复注册流程:点击"下一步"进入验证码步骤时自动发送邮件验证码并启动倒计时,无需手动点击"重新发送"
|
||
4. **蓝牙功能移除** → 蓝牙仅用于设备发现(非数据传输),已有6种替代配对方式,同步移除全部蓝牙代码、权限声明和依赖(flutter_blue_plus)
|
||
|
||
#### 新增
|
||
- 注册页面Header区域增加 ℹ️ 提示按钮,点击显示温馨提示对话框:
|
||
- 闲言保持开放性,即使不登录也能体验大部分功能
|
||
- 服务器偶尔异常可能导致注册流程失败
|
||
- 我们会在后续更新中完善注册验证流程
|
||
|
||
#### 移除功能
|
||
- **NFC句子分享**(NfcShareService)— 删除服务、Provider、UI按钮
|
||
- **NFC设备配对**(NfcPairingService)— 删除服务、配对入口
|
||
- **蓝牙BLE配对**(BluetoothPairingService)— 删除服务、配对入口
|
||
- **附近用户发现**(NearbyDiscoveryService + NearbyUsersSheet)— 删除服务、UI
|
||
- **Web登录**(跳转外部浏览器)— 删除登录页按钮和相关方法
|
||
|
||
#### 移除的权限声明
|
||
- iOS: NFCReaderUsageDescription、com.apple.developer.nfc.readersession.formats、NSBluetoothAlwaysUsageDescription
|
||
- Android: NFC权限/特性、全部蓝牙权限(BLUETOOTH/BLUETOOTH_ADMIN/BLUETOOTH_SCAN/BLUETOOTH_CONNECT/BLUETOOTH_ADVERTISE/bluetooth_le)
|
||
- HarmonyOS: ACCESS_BLUETOOTH权限、permission_nfc_reason、permission_bluetooth_reason
|
||
|
||
#### 移除的依赖
|
||
- flutter_nfc_kit ^3.6.0
|
||
- ndef
|
||
- flutter_blue_plus ^2.1.0
|
||
|
||
#### 修改文件(主要)
|
||
- `lib/features/auth/presentation/register_section.dart` — 自动发送验证码 + 提示对话框
|
||
- `lib/features/auth/presentation/login_page.dart` — 移除Web登录按钮
|
||
- `lib/features/file_transfer/` — 移除NFC/蓝牙配对服务和UI
|
||
- `lib/core/services/nfc/` — 整个目录删除
|
||
- `lib/core/services/bluetooth/` — 整个目录删除
|
||
- `lib/features/home/presentation/nearby_users_sheet.dart` — 删除
|
||
- iOS/Android/HarmonyOS 权限配置文件 — 移除NFC/蓝牙权限
|
||
- 14种语言文件 — 移除NFC/蓝牙翻译字符串
|
||
- 协议HTML文件 — 移除NFC/蓝牙权限说明(permission-usage V6.6、privacy-policy V6.7、app-introduction V6.6)
|
||
|
||
## [v6.19.3] - 2026-06-05
|
||
|
||
### 📝 文档更新 — 移除NFC和蓝牙相关协议引用
|
||
|
||
#### 变更说明
|
||
因NFC和蓝牙功能已从应用中移除,同步更新所有协议HTML文件中的相关引用:
|
||
|
||
1. **permission-usage.html** — 移除"蓝牙权限"章节(原第五节),重新编号后续章节(附近设备权限→第五节,网络权限→第六节,权限管理原则→第七节,权限变更→第八节,联系方式→第九节,法律适用→第十节),版本号 V6.5 → V6.6
|
||
2. **privacy-policy.html** — 业务功能映射表中"文件传输助手"的权限从"蓝牙/位置/附近设备权限"更新为"位置/附近设备权限",版本号 V6.6 → V6.7
|
||
3. **app-introduction.html** — 文件传输助手功能列表移除"蓝牙传输",新增"二维码配对传输",更新日期
|
||
|
||
#### 未修改文件(无NFC/蓝牙引用)
|
||
- beginner-guide.html、disclaimer.html、user-service-agreement.html、account-agreement.html、member-benefits.html、children-privacy.html、dev-team.html、index.html
|
||
|
||
## [v6.19.2] - 2026-06-05
|
||
|
||
### 🐛 Bug修复 — macOS 编译运行关键问题修复
|
||
|
||
#### 修复问题
|
||
1. **Hive 初始化失败导致 KvStorage 全部降级** — 根因:`HiveSafeAccess` 使用 `hive_flutter` 的 `Hive.initFlutter()` 初始化,但用 `hive_ce` 的 `Hive.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.entitlements` 中 `keychain-access-groups` 需要开发者证书签名:
|
||
- 设置 `CODE_SIGN_IDENTITY = "-"` (ad-hoc 签名)
|
||
- 移除 `keychain` 和 `keychain-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.dart` 中 `FlutterError.onError` 拦截 `overflowed` 错误,仅打印日志不弹窗
|
||
7. **platformVersionImpl 导出冲突** — `platform_io_stub.dart` 和 `platform_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_ce` → `hive_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}`,`data` 是 `Map` 而非 `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` 中初始化 AccessibilityService,build 时同步系统无障碍状态
|
||
|
||
#### 修改文件
|
||
- `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 → SafeChartWidget(learning_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`,同局域网优先推荐 P2P(confidence 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端精确识别浏览器
|
||
|
||
#### 通用修复
|
||
7. **1.5 句子详情外部搜索内容为空** — 使用_resolveDisplayText()获取最合适的搜索文本
|
||
8. **1.8 重新打开引导页没反应** — 先重置onboarding完成状态再导航
|
||
9. **1.10/1.12 RenderChartFadeTransition disposed错误** — DeferredBuilder添加disposed标志+图表页面mounted检查
|
||
10. **2 工具中心搜索类型不支持** — 更新搜索类型映射与API一致
|
||
11. **2.1 预置词搜索** — ToolListPage/ToolSearchPage/HanziToolPage添加热门搜索标签
|
||
12. **3 文章广场点击文章不显示内容** — 清除旧数据+完善错误状态展示
|
||
13. **4 RenderFlex overflow弹窗改为日志** — overflow错误仅记录Log.w不传递给原始处理器
|
||
14. **6 引导页完成按钮loading优化** — loading状态动态切换文字(正在准备/加载/初始化/即将完成)
|
||
15. **7 日签卡片保存分享按钮移到appbar** — 保存分享移到navigationBar trailing
|
||
16. **8 文件传输配对码页面缺少Appbar** — 替换为始终可见的返回按钮
|
||
17. **9 减少不必要的日志打印** — 缓冲区减半+Log.i节流5秒+路由日志降级
|
||
18. **10 排行榜隐私保护** — 所有排行类型<50人时显示隐私提示,序号用*代替
|
||
19. **11 离线模式/收藏页面重复图标** — 移除dialog重复icon+修复双emoji问题
|
||
|
||
#### Web端修复
|
||
20. **5.1 引导页协议链接不跳转** — 使用rootNavigator确保跨ShellRoute导航
|
||
21. **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-tool`、`calc-tool`、`tool-list` 三个关键路由缺少 `ohosBuilder`,导致 OhosNavBridge 无法匹配路由,显示"鸿蒙端暂不支持此页面"
|
||
2. **搜索类型不支持** — `SearchType.changshi` 的值为 `'cs'`(对应 searchall 接口),但 hanzi/search 接口实际支持 `changshi` 类型,导致搜索返回"不支持的搜索类型"
|
||
3. **缺少预置词搜索** — 工具中心页面无热门搜索词引导,用户需要手动输入关键词,体验不佳
|
||
|
||
#### 修复
|
||
- **鸿蒙端路由** — 为 `hanzi-tool`、`calc-tool`、`tool-list` 三个路由添加 `ohosBuilder`,新增 `/tool/nick` 路由
|
||
- **搜索类型映射** — `changshi` 从 `SearchApiType.searchAll`/`'cs'` 改为 `SearchApiType.hanziSearch`/`'changshi'`;新增 `cs` 枚举值保留 searchall 接口;新增 25 个 searchall 独有类型
|
||
- **预置词搜索** — `ToolNavConfig` 新增 `presetKeywords` 字段;所有工具配置预置词;`HanziToolConfig` 新增 `presetKeywords`;`ToolListPage`/`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.9] - 2026-06-05
|
||
|
||
### 🔧 Windows构建修复 — sqlite3预编译DLL + win32离线构建回退
|
||
|
||
#### 问题
|
||
1. **sqlite3_flutter_libs无法从sqlite.org下载** — CMake构建时尝试从sqlite.org下载SQLite源码,因网络不可达导致构建失败
|
||
2. **win32包无法从GitHub下载预编译DLL** — native assets构建钩子尝试从`github.com/halildurmus/win32`下载`win32_windows_x64.dll`,因网络限制导致`SocketException`,整个构建失败
|
||
|
||
#### 修复
|
||
- **sqlite3预编译DLL** — 修改`sqlite3_flutter_libs`的CMakeLists.txt,使用本地预编译的`sqlite3.dll`和`sqlite3.lib`(来自NuGet包`SQLite.Native`),跳过源码下载和编译
|
||
- **win32离线构建回退** — 修改`win32`包的`build.dart`钩子,在下载失败时自动回退到本地C编译构建,而非直接抛出异常
|
||
|
||
#### 举一反三
|
||
- 所有依赖外部网络下载的构建步骤都应有离线回退方案
|
||
- 预编译二进制文件应优先使用本地缓存或镜像源
|
||
- Flutter native assets构建钩子应处理网络异常,提供本地构建备选
|
||
|
||
**修改文件:**
|
||
- `packages/win32/hook/build.dart` — 添加try-catch回退到本地C构建
|
||
- `E:\cache\pub\hosted\pub.flutter-io.cn\sqlite3_flutter_libs-0.5.42\windows\CMakeLists.txt` — 使用预编译sqlite3.dll
|
||
|
||
***
|
||
|
||
## [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:io` 的 `Platform` 类不可用,多个文件直接使用 `Platform.isAndroid`/`Platform.isIOS` 等导致运行时 `Unsupported operation` 异常
|
||
2. **`path_provider` MissingPluginException** — Web端 `getApplicationSupportDirectory()`/`getTemporaryDirectory()` 等无原生实现,多个文件直接调用导致异常
|
||
3. **Catcher2 Zone mismatch** — `main()` 中 `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_provider` 和 `dart:io` API
|
||
- **Zone mismatch** — 移除 `main()` 中的外层 `runZonedGuarded`,由 Catcher2 内部统一管理 zone
|
||
- **Catcher2 navigatorKey** — 传入 `rootNavigatorKey`,修复对话框报告模式
|
||
- **platformVersion** — 新增 `pu.platformVersion` 抽象(`permission_service.dart` 需要)
|
||
|
||
#### 举一反三
|
||
- 所有 `Platform.xxx` 调用必须通过 `platform_utils.dart` 的 `pu.xxx` 抽象,禁止直接使用 `dart:io` 的 `Platform`
|
||
- 所有 `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.isAndroid` 在 `progress_share_card.dart` 中未通过 `pu` 封装使用
|
||
5. **桌面端兼容** — `QuickActionsService` 在桌面端调用移动端 API
|
||
6. **设备注册** — `AuthNotifier.login()` 中 `registerDeviceIfNeeded()` 未 await,异常无法捕获
|
||
|
||
#### 修复
|
||
- **FlutterSecureStorageWindows** — `write()` 中 `_backwardCompatible.delete()` 添加 await + try-catch
|
||
- **SecureStorage** — Windows 与 macOS 统一使用 SharedPreferences 降级方案(`_useSharedPreferences`)
|
||
- **AuthNotifier** — `registerDeviceIfNeeded()` 添加 await + try-catch(login 和 register 两处)
|
||
- **QuickActionsService** — 桌面端跳过初始化(`if (pu.isDesktop) return`)
|
||
- **progress_share_card.dart** — `Platform.isAndroid/IOS` → `pu.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:io` 的 `File`/`Directory` 和 `path_provider` 的 `getTemporaryDirectory()` 等API,
|
||
在Web平台运行时会抛出 `MissingPluginException` 或编译错误,导致应用崩溃。
|
||
|
||
#### 修复
|
||
为所有涉及文件系统操作的公共方法添加 `kIsWeb` / `pu.isWeb` 早期守卫:
|
||
|
||
- **logger.dart** — `exportToFile()` 添加 `if (kIsWeb) throw UnsupportedError(...)`;`shareLogs()` 添加 `if (kIsWeb) return;`
|
||
- **backup_service.dart** — `getBackupList()` 返回空列表;`performBackup()` 抛出 UnsupportedError;`deleteBackup()` 返回 false;`deleteAllBackups()` / `getTotalBackupSize()` 早期返回
|
||
- **settings_export_service.dart** — `shareSettings()` 添加 `if (kIsWeb) return;`;`_writeTempFile()` 抛出 UnsupportedError
|
||
- **image_cache_metadata_service.dart** — `indexFile()` / `indexFromCacheManager()` / `autoCleanExpired()` / `rebuildIndex()` 均添加 `if (kIsWeb) return;`
|
||
- **api_client.dart** — `createFormData()` 添加 `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小组件使用了不支持的API** — `bindContextMenu`、`MenuItem`、`Placement`、`onLongPress`、`vibrator` 在鸿蒙Form(卡片)环境中不可用
|
||
2. **缺少图标资源** — `ic_refresh`、`ic_copy`、`ic_open_app`、`ic_save`、`ic_share`、`ic_check`、`ic_open` 在 `ohos/entry/src/main/resources/base/media/` 中不存在
|
||
|
||
#### 修复
|
||
- **移除6个Form页面不兼容API** — SolarTermFormPage、CheckinFormPage、DailySentenceFormPage、ReadlaterFormPage、DailyCardFormPage、FortuneFormPage
|
||
- 移除 `@Builder MenuBuilder()` + `MenuItem`(Form不支持菜单组件)
|
||
- 移除 `.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.dart`(3处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.yaml,tools/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和OhosRouteEntry,ohos_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/actions),Riverpod 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
|
||
- 功能分级标准FeatureAccessLevel(localOnly/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 |