Files
xianyan/CHANGELOG.md
Developer 72f64f9ca9 feat: 新增文件传输助手功能及相关组件
新增文件传输助手功能,包含设备发现、配对、传输等核心模块。主要变更包括:
1. 新增局域网、蓝牙、NFC等多种设备发现方式
2. 实现基于WebRTC、TCP、USB等多种传输协议
3. 添加相关权限管理及状态监控
4. 完善UI界面及交互流程
5. 更新依赖库及版本号至4.19.0

同时优化部分现有功能:
1. 聊天会话增加隐藏功能
2. 完善本地通知权限处理
3. 修复部分已知问题
2026-05-10 02:48:52 +08:00

40 KiB
Raw Blame History

Changelog

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


[4.26.0] - 2026-05-09

新功能 — 文件传输助手

  1. 文件传输助手核心架构 — 多文件:

    • 枚举 transfer_enums.dart: 配对方式(PairingMethod)/传输方式(TransportType)/任务状态(TransferTaskStatus)/设备类型(DeviceType)/传输方向(TransferDirection)/USB版本(UsbVersion)
    • 模型 transfer_device.dart: TransferDevice 设备模型支持fromJson/toJson/copyWith/fromAnnounce
    • 模型 transfer_task.dart: TransferTask 传输任务模型,含进度/速度/状态/校验逻辑
    • 模型 transfer_message.dart: TransferMessage 消息模型 + PairingInfo 配对信息
  2. 数据库层transfer_tables.dart + transfer_database.dart:

    • Drift表: TransferDevices/TransferRecords/PairingRecords/TransferMessages
    • 完整CRUD: 设备/记录/配对/消息的增删改查
    • 进度更新/状态更新/旧记录清理
  3. 传输协议服务 — 多文件:

    • localsend_service.dart: LocalSend Protocol v2.1实现shelf HTTP服务器+UDP多播发现+dio客户端
    • tcp_socket_service.dart: TCP直连大文件传输(>100MB)
    • webrtc_service.dart: WebRTC P2P传输flutter_webrtc DataChannel双通道(文件+消息)
    • usb_transport_service.dart: USB有线传输
    • transport_router.dart: 智能路由选择(USB>LAN>TCP>WebRTC>热点>蓝牙>NFC)
  4. 设备发现服务 — 多文件:

    • lan_discovery_service.dart: 局域网UDP多播发现
    • bluetooth_pairing_service.dart: BLE蓝牙配对(flutter_blue_plus)
    • nfc_pairing_service.dart: NFC碰一碰配对(nfc_manager)
    • qr_pairing_service.dart: QR码配对
    • usb_discovery_service.dart: USB设备发现
    • hotspot_service.dart: WiFi热点管理
  5. 信令服务signaling_service.dart:

    • WebSocket信令服务器连接(web_socket_channel)
    • 心跳保活/自动重连/设备发现/SDP交换/ICE候选交换
  6. 配对服务pairing_service.dart:

    • 统一配对入口支持7种配对方式
    • 设备合并/配对记录持久化
  7. 缓存管理cache_manager_service.dart:

    • 缩略图/临时文件/传输记录/接收文件分类管理
    • 缓存大小统计/分类清理/旧记录自动清理
  8. Provider状态管理 — 多文件:

    • transfer_provider.dart: TransferNotifier+TransferState传输任务/消息/配对/进度管理
    • device_discovery_provider.dart: DeviceDiscoveryNotifier+DeviceDiscoveryState设备发现/平台能力检测
    • providers.dart: 统一Provider定义(transferProvider/deviceDiscoveryProvider/衍生Provider)
  9. UI页面 — 多文件:

    • file_transfer_page.dart: 主页面(发现/传输/记录三Tab),含调试面板
    • transfer_chat_page.dart: 传输聊天页面(消息气泡/文件传输/进度显示)
    • device_pairing_page.dart: 配对页面(IP/QR/蓝牙/其他四Tab)
    • transfer_task_card.dart: 传输任务卡片组件
    • device_card.dart: 设备卡片组件
  10. 路由集成app_router.dart:

    • 新增 /file-transfer /transfer-chat /device-pairing 路由
    • 灵感页面会话列表新增文件传输助手条目
  11. 依赖更新pubspec.yaml:

    • shelf/shelf_router: HTTP服务器
    • flutter_webrtc: WebRTC P2P
    • web_socket_channel: 信令WebSocket
    • flutter_blue_plus: 蓝牙BLE
    • nfc_manager: NFC
    • network_info_plus: 网络信息
    • mime: MIME类型检测
    • mobile_scanner: QR扫码

[4.25.0] - 2026-05-09

新功能 — 隐藏会话 + 动态主题

  1. 隐藏会话功能 — 多文件:

    • 数据库 app_database.dart: 新增 isHidden 字段schemaVersion 10→11添加迁移
    • 模型 chat_session.dart: ChatSession 新增 isHidden 字段及 copyWith 支持
    • Provider chat_session_provider.dart: 新增 hiddenSessions getter、toggleHidden 方法,pinnedSessions/unpinnedSessions 自动过滤隐藏会话
    • Service chat_conversation_service.dart: 新增 toggleHidden 方法
    • 右滑操作 session_row.dart: 新增「隐藏」按钮(👁️‍🗨️/👁️ 切换)
    • 长按菜单 session_popup_menu.dart: 新增「隐藏」和「⚙️ 隐藏设置」选项
    • 灵感页面 inspiration_page.dart: 传递 onHide/onHiddenSettings 回调
  2. 隐藏会话管理页面hidden_sessions_page.dart:

    • 新增 iOS 风格管理页面,展示所有隐藏的会话
    • 支持右滑「取消隐藏」或点击取消隐藏
    • 空状态提示(👁️‍🗨️ 图标 + 文案)
    • 路由 app_router.dart: 新增 /hidden-sessions 路由
  3. 会话流动态主题chat_flow_page.dart + chat_settings_page.dart:

    • 会话流页面读取 settingsJson 中的 accentColor 配置
    • _buildDynamicTheme 方法将会话级强调色覆盖全局主题
    • 聊天设置页面新增「🎨 主题色」选项,提供 8 种预设色
    • 当前选中色显示 ✓ 标记,支持恢复默认

[4.24.0] - 2026-05-09

功能优化 — 聊天交互体验全面提升

  1. 修复媒体气泡区域无法滑动chat_bubble.dart:

    • 根因GestureDetector 的 onLongPress 与 ListView 滚动手势冲突
    • 将 ChatBubble 从 StatelessWidget 改为 StatefulWidget
    • 替换 GestureDetector 为 Listener + Timer 实现长按检测
    • 移动超过 3px 时自动取消长按计时器,确保滑动不被拦截
  2. 输入法不自动弹出chat_flow_page.dart:

    • initStateaddPostFrameCallback 中同时调用 FocusScope.of(context).unfocus()_focusNode.unfocus()
    • 确保页面切换时键盘不会自动弹出,仅用户主动点击输入框时才弹出
  3. 点击视频支持播放chat_video_bubble.dart:

    • 添加 video_player 依赖pubspec.yaml
    • 新增 _VideoPlayerPage 全屏播放页面
    • 支持本地文件和网络视频播放
    • 点击暂停/播放,带播放按钮覆盖层和进度条
    • 支持横竖屏切换,退出时恢复竖屏
    • 错误处理:视频无法播放时显示友好提示
  4. 点击空白区域收起键盘chat_flow_page.dart:

    • 在 SafeArea 外层添加 GestureDetectoronTap 调用 FocusScope.of(context).unfocus()
    • 使用 HitTestBehavior.translucent 确保空白区域也能响应点击
  5. 底部分类选择状态 + 发送后气泡显示分类chat_flow_page.dart:

    • 新增 _selectedQuickCategory 状态变量
    • 点击分类标签切换选中/取消选中,不再直接发送
    • 选中时显示主题色背景 + 边框 + 加粗文字,使用 AnimatedContainer 过渡动画
    • 发送消息时自动带上选中的分类
    • 气泡下方显示分类小字(已在 v4.23.0 实现)
  6. 消息发送声音 + iOS 风格提示chat_flow_page.dart:

    • 发送消息时播放 assets/sounds/send.mp3 音效(备选系统点击音)
    • 新增 _SendToastWidget:毛玻璃风格浮动提示
    • 提示内容:无分类时显示 "✈️ 已发送",有分类时显示 "🔥 已发送至 hot" 等
    • 滑入+淡入动画1.4 秒后自动滑出消失
    • 使用 OverlayEntry 实现,不影响页面布局

[4.23.0] - 2026-05-09

功能优化 — 会话流交互体验提升

  1. 去掉发送消息后自动回复chat_provider.dart:

    • 移除 sendMessage() 末尾的 _generateAIResponse(text.trim()) 调用
    • 删除 _generateAIResponse 方法(含关键词匹配+延迟回复逻辑)
    • 用户发送消息后不再自动生成AI回复
  2. 图片视频在气泡中显示预览chat_bubble.dart + chat_flow_page.dart:

    • 修复 _buildSingleAttachmentImage.asset 错误使用,改为 FutureBuilder + Image.file + ChatFileService.getAbsolutePath()
    • 修复待发送附件预览 _buildPendingAttachmentItemImage.asset 错误,新增 _buildPendingImagePreview 方法
    • 添加 dart:ioChatFileService import
  3. 分类标签在气泡下方单独显示chat_bubble.dart:

    • _buildMetaInfo 中移除分类显示(之前混在时间/IP等元信息中
    • 新增 _buildCategoryLabel 方法,在气泡下方独立显示分类小字标签
    • 标签样式:带半透明背景小圆角容器 + emoji + 分类名10px 小字
    • 用户气泡和AI气泡均支持
  4. 输入法不自动弹出chat_flow_page.dart:

    • initStateaddPostFrameCallback 中添加 _focusNode.unfocus(),确保页面加载后键盘不弹出
    • 仅在用户主动点击输入框时才弹出键盘
  5. 聊天背景图显示chat_flow_page.dart + chat_settings_page.dart:

    • 修复 _setBackground 方法:选择图片后调用 updateBgImage 保存路径到数据库;恢复默认时传 null 清除
    • chat_flow_page.dartbuild 方法中读取 conv.bgImagePath
    • 使用 Stack 布局:底层显示背景图(Positioned.fill + Image.file),上层显示聊天内容
    • 背景图不遮挡气泡消息
  6. 弹性滚动效果chat_flow_page.dart:

    • 消息列表 ListView.builder 添加 physics: BouncingScrollPhysics()
    • 上下滑动到顶部/底部时有 iOS 风格弹性回弹效果

[4.22.1] - 2026-05-09

🐛 Bug修复 — 灵感页面会话流卡死问题

  1. 富文本编辑器空指针崩溃修复default_styles.dart L482:

    • baseStyle.color!.withValues(alpha: 0.6) 改为 (baseStyle.color ?? Colors.grey).withValues(alpha: 0.6)
    • 根因:DefaultTextStyle.of(context).style.color 在 BottomSheet 上下文中可能为 null
    • 同时补全 RichTextEditorSheetcustomStylesquote/code/lists/link/placeHolder避免回退到默认样式
  2. 聊天设置页面卡死修复chat_settings_page.dart:

    • _showToast 方法:添加 dismissed 标记跟踪 dialog 状态,防止用户手动关闭后 Future.delayed 再次 pop 错误路由
    • 替换 ListTileMaterial组件_buildCupertinoListTileCupertino兼容修复在 showCupertinoModalPopup 中缺少 Material 祖先导致的断言错误
  3. 附件路径 PathNotFoundException 修复 — 4个气泡组件:

    • 根因:ChatFileService.saveImage() 返回相对路径(如 chat_attachments/default/xxx.jpg),但气泡组件直接用 File(path) 读取,缺少应用文档目录前缀
    • ChatImageBubble:改为 StatefulWidgetinitState 中调用 ChatFileService.getAbsolutePath() 转换路径
    • ChatFileBubble_openFile 中对非绝对路径调用 getAbsolutePath()
    • ChatVideoBubble_resolvePaths() 中统一转换视频路径和缩略图路径
    • ChatAudioBubble_togglePlay 中对非绝对路径调用 getAbsolutePath()
  4. 图片/视频发送后不显示修复chat_provider.dart + chat_flow_page.dart:

    • 根因1sendPendingAttachments() 完成后未通知 ChatNotifier 刷新消息列表,新消息不出现
    • 根因2sendImageMessage/sendVideoMessage/sendAudio/sendFileMessageChatMessage.fromDrift(record) 不带附件,导致 message.attachments 为空
    • 修复:_sendAll() 中附件发送后调用 chatNotifier.reloadMessages();各 send 方法增加附件加载
    • 新增 ChatNotifier.reloadMessages() 轻量刷新方法
  5. 子分类无法点击"全部"修复chat_provider.dart:

    • 根因:ChatState.copyWithselectedCategory: selectedCategory ?? this.selectedCategory,当传入 null?? 运算符使用旧值,导致无法重置为 null
    • 修复:使用 _unset sentinel 值区分"未传参"和"传了 null"selectCategory(null) 现在能正确重置分类

[4.22.0] - 2026-05-09

新功能 — 聊天多媒体+视觉增强+交互增强 (Phase 7~8)

  1. 数据库Schema升级 (v9→v10)chat_msg_records 新增4字段

    • reply_to_id TEXT — 回复消息ID
    • rich_content TEXT — 富文本Delta JSON
    • ip_text TEXT — IP归属地简短文本
    • ip_detail_json TEXT — IP详情JSON
  2. ChatMessage模型扩展 — 新增消息类型+字段:

    • 🎵 audio 录音消息 / 🎬 video 视频消息 / ✏️ richText 富文本消息
    • replyToId / richContent / ipText / ipDetailJson 字段
    • hasIpInfo / isRichText / hasReplyTo 便捷getter
  3. ChatMessageService扩展 — 新增4个发送方法

    • sendVideo() / sendAudio() / sendRichText() / updateIpInfo()
  4. ChatAudioService录音播放服务 — 完整录音+播放:

    • 🎙️ startRecording() / stopRecording() — AAC格式录音
    • ▶️ play() / stopPlayback() — 录音播放+位置/时长监听
    • ⏱️ formatDuration() — 时长格式化
  5. IpQueryService扩展 — 新增格式化字段:

    • ipText getter — 简短归属地文本
    • ipDetailJson getter — 完整IP详情JSON
  6. 8宫格附件面板 (AttachmentGridSheet) — 替换ActionSheet

    • 🖼️ 相册 / 📷 拍照 / 🎬 视频 / 🎙️ 录音
    • 📄 文件 / 📍 位置 / 🔗 链接 / ✏️ 富文本
    • 渐变图标背景 + 动态主题适配
  7. 录音Sheet (RecordAudioSheet) — 录音界面:

    • 🎙️ 实时波形可视化 + 时长计时
    • ⏹️ 停止/发送 + 取消按钮
    • 自动保存到沙箱
  8. 多媒体气泡组件 — 4个专用子组件

    • 🖼️ ChatImageBubble — 缩略图+分辨率角标+全屏预览(photo_view)
    • 🎬 ChatVideoBubble — 缩略图+播放按钮+时长+分辨率
    • 🎙️ ChatAudioBubble — 播放按钮+波形可视化+时长
    • 📄 ChatFileBubble — 文件图标+文件名+大小+类型
  9. ChatBubble重构 — 子组件分发+视觉增强:

    • 🫧 毛玻璃效果 (BackdropFilter blur 20px)
    • 🎯 3D倾斜 (flutter_tilt ±3°)
    • 💫 光晕阴影 (双层box-shadow)
    • 📍 IP小字显示 (message.ipText)
    • 🔄 子组件分发 (isImage→ChatImageBubble, isAudio→ChatAudioBubble...)
  10. IP详情弹窗 (IpDetailSheet) — 毛玻璃弹窗:

    • 📍 IP地址 / 省份 / 城市 / 完整地址
    • 毛玻璃背景 + 动态主题适配
  11. 新建对话 — 导航栏入口+弹窗:

    • ✏️ 导航栏新建按钮
    • Emoji选择器 + 名称输入
    • 创建后自动跳转到新对话
  12. Provider扩展

    • ChatAttachmentProvider.pickVideo() — 视频选择
    • ChatProvider.sendAudio() / sendVideoMessage() — 录音/视频消息发送

📁 新增文件

  • lib/features/inspiration/presentation/widgets/attachment_grid_sheet.dart — 8宫格附件面板
  • lib/features/inspiration/presentation/widgets/record_audio_sheet.dart — 录音Sheet
  • lib/features/inspiration/presentation/widgets/chat_image_bubble.dart — 图片气泡
  • lib/features/inspiration/presentation/widgets/chat_video_bubble.dart — 视频气泡
  • lib/features/inspiration/presentation/widgets/chat_audio_bubble.dart — 录音气泡
  • lib/features/inspiration/presentation/widgets/chat_file_bubble.dart — 文件气泡
  • lib/features/inspiration/presentation/widgets/ip_detail_sheet.dart — IP详情弹窗

📁 修改文件

  • lib/core/storage/database/app_database.dart — Schema 9→10, 新增4字段
  • lib/features/inspiration/models/chat_message.dart — 新增3枚举+4字段+4getter
  • lib/features/inspiration/services/chat_message_service.dart — 新增4方法
  • lib/features/inspiration/services/ip_query_service.dart — 新增ipText/ipDetailJson
  • lib/features/inspiration/presentation/widgets/chat_bubble.dart — 重构+毛玻璃+3D倾斜+IP小字
  • lib/features/inspiration/presentation/chat_flow_page.dart — 8宫格面板+新建对话+录音集成
  • lib/features/inspiration/providers/chat_provider.dart — 新增sendAudio/sendVideoMessage
  • lib/features/inspiration/providers/chat_attachment_provider.dart — 新增pickVideo

[4.21.0] - 2026-05-08

新功能 — 聊天会话流 Provider层 + UI层 + 缓存管理集成 + 动画效果

  1. Provider层 (Phase 3) — 6个Provider完成

    • 💬 ChatConversationProvider — 会话CRUD+置顶+搜索+加载状态
    • 📝 ChatProvider 重构 — Hive→Drift读写消息CRUD+已阅+软删除+回收站
    • 📎 ChatAttachmentProvider — 附件选择/预览/发送/沙箱存储/缩略图
    • 🔄 ChatSessionProvider 迁移 — 硬编码会话→Drift读取
    • 🔄 ChatMigrationService — Hive→Drift批量迁移+旧键清除+迁移标记
    • 🧪 编译验证通过无error/warning
  2. UI层 (Phase 4) — 完整聊天界面+设置页+动画效果:

    • 🎨 ChatFlowPage 重构 — 多会话切换+草稿保存+附件预览+分类栏+发送按钮双色
    • 💬 ChatBubble 重构 — 图片/文件/音频/视频渲染+元信息+已阅+编辑+长按菜单
    • ⚙️ ChatSettingsPage🎨外观 📦数据 📝备注 ☁️同步 🏷️分类 🗑️回收站
    • 📎 ChatAttachmentPreview — 输入栏附件预览条
    • 动画效果增强 — 消息fadeIn+slideY, 空状态呼吸动画, 发送按钮scale, 气泡shimmer
    • 🛤️ 路由配置 — chatSettings路由+iOS滑入转场
  3. 缓存管理集成 (Phase 5) — 聊天数据统计+清理:

    • 📊 CacheStats 扩展6个聊天字段会话数/消息数/附件数/附件大小/回收站数/回收站大小)
    • 🧹 CacheService 新增3个清理方法cleanChatTrash/cleanChatThumbnails/clearAllChatData
    • 🖥️ 缓存管理页面新增3行聊天统计+4个清理按钮含二次确认弹窗

📁 新增文件

  • lib/features/inspiration/providers/chat_conversation_provider.dart — 会话Provider
  • lib/features/inspiration/providers/chat_attachment_provider.dart — 附件Provider
  • lib/features/inspiration/services/chat_migration_service.dart — 迁移服务
  • lib/features/inspiration/presentation/chat_settings_page.dart — 聊天设置页
  • lib/features/inspiration/presentation/widgets/chat_attachment_preview.dart — 附件预览组件

📁 修改文件

  • lib/features/inspiration/providers/chat_provider.dart — 重构为Drift读写
  • lib/features/inspiration/providers/chat_session_provider.dart — 迁移到Drift
  • lib/features/inspiration/models/chat_message.dart — 新增附件类型+fileIcon+readCount
  • lib/features/inspiration/presentation/chat_flow_page.dart — 重构+动画效果
  • lib/features/inspiration/presentation/widgets/chat_bubble.dart — 重构+动画效果
  • lib/features/home/services/cache_service.dart — 新增聊天统计+清理方法
  • lib/features/home/presentation/cache_management_page.dart — 新增聊天统计+清理UI
  • lib/core/router/app_router.dart — 新增chatSettings路由

[4.20.0] - 2026-05-08

新功能 — 聊天会话流数据库层 + Service层 + IP查询服务

  1. 数据库层 (Phase 1) — 新增4张Drift表schemaVersion 8→9
    • 📊 ChatConversations — 聊天会话表emoji/名称/分类/设置/置顶/同步模式)
    • 📊 ChatMsgRecords — 消息记录表(类型/角色/内容/已阅/软删除/元信息JSON
    • 📊 ChatAttachments — 附件表(文件路径/缩略图/尺寸/云端同步状态)
    • 📊 IpLocationCaches — IP地址缓存表ip主键/城市/完整地址)
    • 🔗 4个索引消息按会话+时间/已删除,附件按消息/会话)
    • 🔄 完整迁移策略from<9 创建4张表+索引)
    • 🏗️ build_runner 代码生成通过注意Drift表列名不能为text,与text()方法冲突)
  2. Service层 (Phase 2) — 5个服务类
    • 📁 ChatFileService — 文件存储(保存/缩略图生成/目录管理/大小计算/清理)
    • 📁 ChatConversationService — 会话CRUD创建/置顶/分类管理/背景图/设置JSON
    • 📁 ChatMessageService — 消息CRUD发送/编辑/已阅/软删除/回收站/过期清理)
    • 📁 ChatAttachmentService — 附件CRUD创建/删除/云端同步状态)
    • 🌐 IpQueryService — IP查询本地Drift缓存优先+远程POST查询+格式验证)
  3. IP查询API验证 — 确认使用POST方法响应字段为city(完整地址字符串)
  4. 关键发现 — Drift表定义中列名texttext()方法冲突,改用content替代

📁 新增文件

  • lib/features/inspiration/services/chat_file_service.dart — 文件存储服务
  • lib/features/inspiration/services/chat_conversation_service.dart — 会话服务
  • lib/features/inspiration/services/chat_message_service.dart — 消息服务
  • lib/features/inspiration/services/chat_attachment_service.dart — 附件服务
  • lib/features/inspiration/services/ip_query_service.dart — IP查询服务

📁 修改文件

  • lib/core/storage/database/app_database.dart — 新增4张表+CRUD方法+迁移v9
  • lib/core/storage/database/app_database.g.dart — Drift代码生成更新

🚧 进行中

  • Phase 3: Provider层Riverpod状态管理
  • Phase 4: UI层聊天页面/消息气泡/输入框/设置页)
  • Phase 5: 缓存管理集成

[4.19.0] - 2026-05-08

新功能 — 通用设置系统全面增强 + 更多设置页面

  1. 通知权限申请时机修复 — 不再首次启动就申请通知权限,改为在通知设置页开启时才请求
  2. 通知状态统一数据源 — 通用设置页通知状态改为从 NotificationScheduler (Hive) 实时读取,解决"已关闭"显示不同步问题
  3. 页面加载方式 — 替换原"滑动返回"开关,支持两种模式:
    • 🧭 标准导航 (navigate):支持滑动返回 + 预测返回动画
    • 📋 底部面板 (sheet):适合宽屏设备,右上角 ✕ 关闭
  4. 启动页选项精简 — 移除"发现"选项,保留首页/灵感/我的
  5. 更多设置页面 (MoreSettingsPage) — 新建独立页面,承接低频/高级设置:
    • 📖 内容与搜索搜索引擎、自动播放、仅WiFi自动播放、搜索历史
    • 🔧 开发者:开发者模式、兼容模式、调试信息、网络代理(地址+端口)、API环境(生产/预发布/自定义)
    • 🔋 电池与性能:电池优化、后台刷新
    • 辅助功能:高对比度、色弱适配(无/红绿/蓝黄)、文字加粗
    • 📁 存储管理:自动清理缓存(从不/1周/1月/3月)
  6. 通用设置页新增设置项
    • 📐 内容密度(紧凑/标准/舒适)— 调整列表和卡片间距
    • 🖼️ 图片质量(原图/高清/省流)— 控制图片加载质量
    • 📦 缓存策略(智能/仅WiFi/始终)— 控制内容缓存行为
    • 📋 剪贴板读取 — 允许/禁止读取剪贴板内容
  7. GeneralSettingsState 扩展字段
    • imageQualityId / cacheStrategyId / autoClearCacheId / contentDensityId
    • clipboardReadEnabled / autoPlayWifiOnly / searchHistoryEnabled
    • developerModeEnabled / apiEnvironmentId / apiCustomHost
    • backgroundRefreshEnabled / highContrastEnabled / colorWeakTypeId / boldTextEnabled
  8. 新增枚举/选项类
    • ImageQuality(原图/高清/省流)
    • CacheStrategy(智能/仅WiFi/始终)
    • AutoClearCacheOption(从不/1周/1月/3月
    • ContentDensity(紧凑/标准/舒适)
    • ApiEnvironment(生产/预发布/自定义)
    • ColorWeakType(无/红绿色弱/蓝黄色弱)
  9. 路由配置app_router.dart 新增 /more-settings 路由

🔧 修复

  1. 通知状态不同步 — 通用设置页通知项始终显示"已关闭",改为从 NotificationScheduler 实时读取
  2. CupertinoIcons 不存在wand_and_stars/bold 替换为 paintbrush_fill/textformat_abc
  3. 未使用代码清理 — 删除已废弃的 _showFontScalePicker 方法(字体大小已重定向至主题页)
  4. 页面加载方式迁移 — 旧 swipeBackEnabled 自动迁移为 pageTransitionModeId

📁 修改文件

  • lib/features/settings/presentation/general_settings_page.dart — 通知状态统一+页面加载方式+新增设置项+移除已迁移项
  • lib/features/settings/presentation/more_settings_page.dart — 新建:更多设置页面
  • lib/features/settings/providers/general_settings_provider.dart — 新增字段/枚举/方法+存储持久化+迁移逻辑
  • lib/core/router/app_router.dart — 新增 more-settings 路由
  • lib/core/services/local_notification_service.dart — 移除自动权限申请
  • pubspec.yaml — 版本号更新
  • CHANGELOG.md — 版本日志

[4.18.0] - 2026-05-08

新功能 — 登录/注册页面重设计 + 认证逻辑修复

  1. 登录页面重设计 — iOS风格4种登录方式
    • 🔐 密码登录(用户名/邮箱+密码)
    • 📧 验证码登录(邮箱+验证码,回执登录)
    • 🔑 Token登录Token令牌多设备同步
    • 👤 老用户登录(点击弹出"暂未开放"对话框)
    • 头部图标+标题水平排列,左对齐
    • 第三方登录入口Apple/微信/QQ开发中提示
    • 全部使用 CupertinoIcons 替代 emoji
  2. 注册页面重设计 — 分步式3步注册
    • Step1: 基本信息(用户名+邮箱)
    • Step2: 验证邮箱(验证码输入+重发)
    • Step3: 设置密码(密码+确认密码)
    • 注册成功后自动登录,无需重启
  3. 用户协议和隐私政策 — 登录/注册页面底部显示勾选框+链接
  4. 动态主题适配 — 全部使用AppThemeExtension令牌支持日间/夜间/AMOLED

🔧 修复

  1. 验证邮箱后实时登录 — 注册成功后立即标记为已登录状态
  2. 冷启动闪烁修复 — AuthNotifier初始化改为缓存优先+后台Token检测
    • 读取缓存用户→立即显示(无闪烁)
    • 后台静默调用checkToken检测有效性
    • 仅在Token失效时才清除登录状态
    • 不再每次冷启动都重新调用tokenLogin API

📁 修改文件

  • lib/features/auth/presentation/login_page.dart — 重写登录/注册页面
  • lib/features/auth/providers/auth_provider.dart — 初始化逻辑修复
  • lib/features/auth/services/auth_service.dart — 新增validateLocalToken
  • pubspec.yaml — 版本号更新
  • CHANGELOG.md — 版本日志

[4.17.1] - 2026-05-08

🔧 修复 — Web端WASM数据库崩溃 + Windows/Web端LiquidGlass警告消除

  1. Web端 drift WASM localtime 导入错误修复(致命级) — Web端启动时数据库崩溃
    • 原因:drift_worker.js 是旧版本编译产物,缺少 localtime WASM导入函数
    • 错误:LinkError: WebAssembly.instantiate(): Import #0 "dart" "localtime"
    • 修复:新建 web/drift_worker.dart 入口文件,使用 WasmDatabase.workerMainForOpen() 重新编译
    • 编译命令:dart compile js -O2 -o web/drift_worker.js web/drift_worker.dart
    • 效果Web端数据库正常加载不再出现 WASM LinkError
  2. LiquidGlassLayer Impeller 警告消除 — Windows/Web端每次导航都输出重复警告
    • 原因:LiquidGlassLayer 在非 Impeller 平台Windows/Web/Skia每次 build 都输出 WARNING
    • 修复1liquid_glass_layer.dart 将 WARNING 降级为 FINE且仅输出一次
    • 修复2adaptive_liquid_glass_layer.dart 在非 Impeller 平台跳过 LiquidGlassLayer,改用 BackdropFilter 回退
    • 效果:控制台不再刷屏 WARNING毛玻璃效果通过 BackdropFilter 回退实现

📁 修改文件

  • web/drift_worker.dart — 新建 Web Worker 入口文件
  • web/drift_worker.js — 重新编译,包含 localtime WASM 导入
  • packages/liquid_glass_widgets/lib/src/renderer/rendering/liquid_glass_layer.dart — 警告降级+去重
  • packages/liquid_glass_widgets/lib/widgets/shared/adaptive_liquid_glass_layer.dart — 非 Impeller 平台 BackdropFilter 回退

[4.13.0] - 2026-05-07

新功能 — 服务层增强:从空壳到真实实现

  1. ScreenWakeService 增强 — 初始化从KV存储读取并应用
    • 新增 init() 方法,启动时自动恢复用户设置
    • main.dart 中初始化调用
  2. SoundService 增强 — 集成 audioplayers 替换 SystemSound
    • 使用 AudioPlayer 播放 assets/sounds/ 下的真实音效文件
    • 3种音效风格标准/清脆/柔和
    • 音量控制 + KV存储持久化
    • 7种操作音效click/toggle/success/error/alert/delete/send
    • main.dart 中初始化调用
  3. 启动页设置 — GoRouter 读取 startupPageId 设置初始路由:
    • _resolveInitialLocation() 根据存储值返回首页/发现/灵感/我的
    • 支持应用重启后保持用户选择
  4. AppLockService 增强 — 集成 local_auth 替换 MethodChannel
    • 使用 LocalAuthentication API 实现生物识别
    • isDeviceSupported() / canCheckBiometrics() / getAvailableBiometrics()
    • 错误码处理notAvailable/notEnrolled
    • App 层 WidgetsBindingObserver 生命周期监听
    • XianyanApp 从 ConsumerWidget 升级为 ConsumerStatefulWidget
  5. BatteryOptimizationService 增强 — 集成 battery_plus 实时监听:
    • 实时电量 + 充电状态监听
    • isLowBattery / isCharging / shouldReduceQuality() 便捷属性
    • main.dart 中初始化调用
  6. SettingsExportService 修复 — 修复 import 逻辑 bug + 集成 file_picker
    • 修复原 import 逻辑跳过 general_ 前缀条目的 bug
    • 新增 pickImportFile() 使用 FilePicker 选择 JSON 文件
    • 新增 pickAndImport() 一键选择并导入
  7. NetworkProxyService 新建 — 网络代理配置服务:
    • 支持 HTTP/SOCKS5 代理类型
    • createProxiedClient() 创建代理 HttpClient
    • testConnection() 代理连接测试
    • configure() / reset() 统一配置
  8. Logger 增强 — 日志导出功能:
    • filterByLevel() 按级别过滤
    • exportToJson() / exportToText() 导出为 JSON/纯文本
    • exportToFile() 导出到文件
    • shareLogs() 分享日志文件
  9. DataExportService 增强 — 接入 AppDatabase 真实数据查询:
    • 收藏数据:_db.getFavoriteSentences()
    • 阅读历史:_db.getHistorySentencesWithTime(limit: 500)
    • 设置数据KV存储批量读取
  10. GeneralSettingsProvider 同步 — Provider 与服务双向绑定:
    • setAppLockEnabled() → AppLockService.setEnabled()
    • setBatteryOptimizationEnabled() → BatteryOptimizationService.setEnabled()
    • setProxyEnabled/Host/Port() → NetworkProxyService
    • resetAll() 同步重置所有服务

📦 新增三方库

  • audioplayers: ^6.1.0 — 音效播放
  • local_auth: ^2.3.0 — 生物识别应用锁
  • battery_plus: ^6.1.0 — 电池状态监听

📁 修改文件

  • lib/core/services/screen_wake_service.dart — 增强init() + KV存储读取
  • lib/core/services/sound_service.dart — 重写audioplayers 替换 SystemSound
  • lib/core/services/app_lock_service.dart — 重写local_auth 替换 MethodChannel
  • lib/core/services/battery_optimization_service.dart — 重写battery_plus 实时监听
  • lib/core/services/settings_export_service.dart — 修复import bug + file_picker
  • lib/core/services/network_proxy_service.dart — 新建:网络代理服务
  • lib/core/services/data_export_service.dart — 增强AppDatabase 真实查询
  • lib/core/utils/logger.dart — 增强:日志导出+过滤+分享
  • lib/core/router/app_router.dart — 修改:启动页初始路由 + KV存储导入
  • lib/app/app.dart — 重构ConsumerStatefulWidget + WidgetsBindingObserver
  • lib/main.dart — 修改新增3个服务初始化
  • lib/features/settings/providers/general_settings_provider.dart — 修改:服务双向绑定
  • pubspec.yaml — 修改:新增 audioplayers/local_auth/battery_plus + assets/sounds/
  • assets/sounds/ — 新建:音效资源目录

[4.12.0] - 2026-05-07

新功能 — 通用设置扩展(P2+P3) + 新服务

  1. ScreenWakeService 屏幕常亮服务 — 新增独立屏幕常亮管理服务:
    • 支持6种超时策略跟随系统/30秒/1分钟/2分钟/5分钟/常亮
    • 集成 wakelock_plus 实现屏幕常亮
    • 临时常亮模式(阅读场景)
    • 通用设置页屏幕常亮时间选择器自动同步
  2. SoundService 音效服务 — 新增轻量版音效服务:
    • 使用系统音效(SystemSound)实现,无需额外三方库
    • 3种音效风格标准/清脆/柔和
    • 统一 APIplayClick() / playToggle() / playSuccess() / playError()
    • 通用设置页声音开关+音效风格自动同步
  3. 通用设置P2新增 — 体验增强设置项:
    • 启动页选择(首页/发现/灵感/我的)
    • 字体大小缩放特小0.8x/小0.9x/标准1.0x/大1.15x/特大1.3x
    • 滑动返回开关
    • 长按预览开关
    • 自动播放GIF/视频开关
    • 搜索引擎选择(内置/百度/必应/谷歌)
  4. 通用设置P3新增 — 锦上添花设置项:
    • 导出/导入设置JSON格式迁移
    • 应用锁(生物识别解锁)
    • 电池优化(低电量自动省流)
    • 网络代理(调试模式专用)
    • 日志管理(日志查看器+导出)
    • 隐私政策查看
    • 数据导出个人数据JSON导出
  5. GeneralSettingsState 扩展 — 新增字段:
    • reduceAnimations / darkModeId / autoPlayEnabled / fontScaleId
    • startupPageId / swipeBackEnabled / longPressPreviewEnabled / searchEngineId
    • 新增 DarkModeType 枚举(跟随系统/浅色/深色)
    • 新增 FontScaleOption / StartupPageOption / SearchEngineOption 选项常量
  6. AppRadius 扩展 — 新增 xs / xsBorder 极小圆角令牌

📁 修改文件

  • lib/core/services/screen_wake_service.dart — 新建:屏幕常亮服务
  • lib/core/services/sound_service.dart — 新建:音效播放服务
  • lib/core/services/settings_export_service.dart — 新建:设置导出/导入服务
  • lib/core/services/app_lock_service.dart — 新建:应用锁服务
  • lib/core/services/battery_optimization_service.dart — 新建:电池优化服务
  • lib/core/services/data_export_service.dart — 新建:数据导出服务
  • lib/core/utils/logger.dart — 重构:新增 LogLevel/LogEntry + 内存缓冲
  • lib/core/theme/app_radius.dart — 修改:新增 xs/xsBorder
  • lib/features/settings/providers/general_settings_provider.dart — 重构新增P2+P3字段+服务集成
  • lib/features/settings/presentation/general_settings_page.dart — 修改新增P2+P3设置项UI
  • lib/features/settings/presentation/log_viewer_page.dart — 新建:日志查看器页面
  • lib/features/settings/presentation/privacy_policy_page.dart — 新建:隐私政策页面
  • lib/core/router/app_router.dart — 修改:新增隐私政策+日志查看器路由

[4.11.0] - 2026-05-07

新功能 — 通用设置重构 + 权限管理

  1. HapticService 触觉反馈服务 — 新增独立触觉反馈服务支持4档位震动控制
    • 关闭(off) / 轻柔(light) / 标准(medium) / 强烈(heavy)
    • 统一 APIimpact() / selection() / toggleSwitch() / notification()
    • 全局级别管理,所有交互自动适配当前档位
  2. GeneralSettingsState 重构 — 震动从布尔值升级为4档位系统
    • vibrationEnabled: boolvibrationLevelId: Stringoff/light/medium/heavy
    • 新增 soundEffectTypeId(默认/清脆/柔和)
    • 新增 immersiveStatusBarautoCheckUpdatedataSaverModelanguageId 字段
    • 兼容旧数据迁移:vibration: boolvibration_level: String
    • 缓存大小真实计算(遍历 temp/documents/support 目录)
    • 缓存清除真实执行(删除临时目录文件)
  3. PermissionService 扩展 — 权限管理服务增强:
    • 新增位置权限(AppPermission.location
    • 新增批量状态查询 checkAllStatus()
    • 每个权限带图标、颜色、说明描述
    • iOS 风格权限请求对话框
  4. 权限管理页面PermissionManagementPage — 新增独立权限管理页面:
    • 展示所有权限状态(已授权/未授权/已拒绝/未请求/受限)
    • 支持请求权限 / 跳转系统设置
    • 下拉刷新权限状态
    • 权限说明头部卡片
  5. 通用设置页面UI重构 — 整体重写iOS 26 风格:
    • 所有 emoji 替换为 CupertinoIcons带圆角背景色容器
    • 6大分组交互/通知/显示/性能/隐私与权限/高级
    • 震动4档位 CupertinoPicker 选择器
    • 音效风格/屏幕常亮时间/语言选择器
    • 搜索栏快速过滤设置项
    • 底部"你可能在找"推荐区域(主题个性化/字体管理/数据管理)
    • 底部极简版本号+版权信息
    • 清除缓存/重置设置确认对话框
  6. 路由注册AppRoutes.permissionManagement 路由常量 + GoRoute 定义

📁 修改文件

  • lib/core/services/haptic_service.dart — 新建触觉反馈服务4档位
  • lib/core/services/permission_service.dart — 重构:新增位置权限+批量查询+权限说明
  • lib/features/settings/providers/general_settings_provider.dart — 重构震动4档位+新字段+缓存计算
  • lib/features/settings/presentation/general_settings_page.dart — 重写iOS风格UI+分组+搜索+底部视图
  • lib/features/settings/presentation/permission_management_page.dart — 新建:权限管理页面
  • lib/core/router/app_router.dart — 新增 permissionManagement 路由

已归档版本

4.10.0(关于页面+图标统一+tz.local崩溃修复) / 3.9.9(画布样式编辑面板+叠层效果+虚线边框) / 3.9.8(拖拽描边偏移/文本回写/壁纸无限加载/工具抽屉/画布圆角动态调整) / 3.9.7(画布圆角显示+导出修复+401修复) / 3.9.6(画布圆角/文字按钮卡死/描述线条偏移) / 3.9.5(Bug回归修复:壁纸卡死/文字按钮/画布圆角/壁纸源加载/编辑器闭合) / 3.9.4(Bug回归修复:本地化/HTTP明文/画布圆角) / 3.9.3(Bug回归修复:画布圆角/壁纸卡死/文字按钮) / 3.9.2(Bug修复:画布圆角/文字按钮/壁纸/描边) / 3.9.1(Bug修复:历史卡死/同步丢失/画布圆角/emoji替换) / 3.9.0(编辑器增强:拖拽描边+富文本+画布圆角) / 3.8.0 / 2.58.0(六大Bug修复+键盘适配公共类) / 2.57.0(Phase35开发计划5大方向36项功能) / 2.56.0(README全面更新功能梳理+可扩展方向) / 2.55.1(全局代码质量清理188→0issues) / 1.55.0(灵感页面重构联系人列表+长按菜单+搜索+足迹整合) / 1.54.0(修复个人中心+签到Bug+调试信息页) / 1.53.0(修复分类列表不更新+句子空白+骨架屏体验优化) / 1.52.0(修复句子卡片数据永不更新根因修复) / 1.51.0(修复句子卡片循环重复+Slidable切换分类) / 1.50.0(修复频道同步延迟+滑动冲突+卡片重复) / 1.49.0(修复刷新无响应+分类同步+卡片重复+广场空白+滑动冲突) / 1.48.0(修复句子广场无限循环+分类过滤+空白句子+作者显示) / 1.47.0(修复API类型转换崩溃+频道开关同步+句子广场加载) / 1.46.0(句子来源页面改造+混合信息流5种模式+首页卡片来源配置) / 1.45.0(笔记自动保存+字数统计+保存状态+上限提示) / 1.44.2(笔记模块五大Bug修复:时间戳/布局切换/菜单拦截/空标题/删除刷新) / 1.44.1(笔记删除后仍显示-ThinkPHP5查询构建器Bug) / 1.44.0(API集成补全+互动收藏笔记增强+笔记页重新设计) / 1.40.0(用户安全接口升级-回执验证替代邮箱验证码) / 1.39.0(卡片震动/Slidable冲突修复/分类切换优化/API功能全面接入阶段三六) / 1.31.0(API功能全面接入:学习中心/签到增强/国学经典/健康生活/推荐偏好/Feed互动/数据可视化/游戏中心) / 1.30.0(中国传统色页面增强重构) / 1.23.0(Phase A偷工减料修复+Phase B缺失功能补全) / 1.22.0(句子广场交互增强:间距优化/循环滚动/边缘光晕) / 1.21.0(Bug修复:数据管理卡死/Tab抖动/密码页/详情Sheet/字体管理) / 1.20.0 / 1.19.0 / 1.18.0 / 1.17.0 / 1.16.0 / 1.15.0 / 1.14.0 / 1.13.0 / 1.10.0 / 1.7.16 / 1.7.15 / 1.7.14 / 1.7.13 / 1.7.12 / 1.7.11 / 1.7.10 / 1.7.9 / 1.7.8 / 1.7.7 / 1.7.6 / 1.7.5 / 1.7.4 / 1.7.3 / 1.7.2 / 1.7.1 / 1.7.0 / 1.6.4 / 1.6.3 / 1.6.2 / 1.6.1 / 1.6.0 / 1.5.2 / 1.5.1 / 1.5.0 / 1.4.1 / 1.4.0 / 1.3.0 / 1.2.0 / 0.28.x / 0.27.0 / 0.26.0 — 详见 git history