Files
xianyan/CHANGELOG.md
Developer 355191aaf6 feat(leisure): 新增闲情逸致模块与多项功能优化
本次提交完成多项核心更新:
1. 新增闲情逸致功能模块,包含时间线、收藏标注、季节主题等基础框架
2. 替换hive为社区维护的hive_ce包,修复依赖兼容问题
3. 统一替换"开发中"提示为"当前设备不支持",优化用户提示文案
4. 新增多项功能开关与特性标志,统一管理不可用功能提示
5. 完善用户账户洞察系统,新增头像审核中状态检测
6. 优化TTS语音朗读服务,修复Android端引擎初始化问题
7. 重构知识图谱缩放手势逻辑,解决缩放不跟手问题
8. 新增精灵头像组件,替换默认聊天头像样式
9. 新增外部链接跳转确认弹窗,提升使用安全性
10. 升级后端API接口,新增签到配置获取与补签积分规则动态读取
11. 完善多语言翻译覆盖率限制,非中文语言仅显示最高50%进度
12. 新增HTTP缓存拦截器,优化网络请求性能
13. 新增恢复出厂设置选项,完善数据管理功能

同时修复了多处代码细节问题:简化字符串拼接、优化布局代码、移除多余代码等。
2026-05-27 08:06:54 +08:00

45 KiB
Raw Blame History

Changelog

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


[v6.5.67] - 2026-05-27

闲情逸致模块Phase E — Hive存储+FlChart图表+滑动操作+地图标记+社交占位5项

  • 🗄️ 任务1: Hive Box直接存储替代KvStorage JSON序列化 (优先级5)

    • kv_storage.dart: HiveBoxNames新增 leisure box命名空间加入 all 列表自动初始化
    • leisure_bookmark_provider.dart: 移除 dart:convertKvStorage 依赖,改用 hive_ce/hive.dart 直接读写
    • _loadFromStorage()_loadFromHive(): 从 Hive.box('leisure') 读取 Map 结构数据,逐条反序列化为 LeisureBookmark
    • _saveToStorage()_saveToHive(): 将 bookmarks Map 序列化后直接 box.put() 存储,无需 JSON 中转
    • 优势Hive Box 原生存储比 JSON 序列化更高效,支持增量更新,减少序列化/反序列化开销
  • 📊 任务2: FlChart统计图表 (优先级4)

    • leisure_settings_page.dart: 新增 fl_chart import统计卡片下方新增两个图表
    • _buildBookmarkTrend(): 7日收藏趋势折线图LineChart曲线+渐变填充+主题色
    • _buildMonthDistribution(): 季节卡片分布饼图PieChart春夏秋冬四色+图例标签
    • _legendItem(): 饼图图例组件(圆点+emoji标签+计数)
  • 👆 任务3: 卡片左滑收藏、右滑分享 (优先级5)

    • leisure_card.dart: 导入 AppSlidable,整个卡片用 AppSlidable 包裹
    • 左滑操作: SlideActionType.bookmark → toggleBookmark
    • 右滑操作: SlideActionType.share → LeisureShareSheet.show
    • borderRadius: AppRadius.lgBorder 保持圆角一致
  • 🗺️ 任务4: 卡片详情Sheet查看地图按钮 (优先级4)

    • leisure_card_detail_sheet.dart: _buildInfoGrid 下方新增 _buildMapButton
    • 点击跳转高德地图搜索: https://uri.amap.com/search?keyword=省份+地点
    • 使用 url_launcher LaunchMode.externalApplication 打开外部地图
  • 📮 任务5: 社交互动占位模块优化 (优先级3)

    • leisure_settings_page.dart: "提交收录"弹窗内容优化
    • 标题增加 📮 emoji内容改为更详细说明发现好的花期/美食/景点?提交后经审核可加入时间线。此功能需要登录后使用,后续开发。)

[v6.5.66] - 2026-05-27

闲情逸致模块Phase D — 天气集成+粘性月份头+懒加载+日历视图4项

  • 🌤️ 任务1: 天气API集成 (优先级5)

    • leisure_node.dart: LeisureNode freezed模型新增3个可选字段 weatherIcon/weatherTemp/weatherDesc,同步更新 toJson()fromJson()
    • leisure_timeline_provider.dart: 新增 _fetchWeatherBrief() 方法,初始化完成后异步获取天气信息并更新今日节点
    • leisure_timeline_provider.dart: 新增 ensureMonthLoaded() 方法供懒加载调用
    • leisure_date_node.dart: 季节标签下方新增天气图标+温度显示(weatherIcon weatherTemp°
  • 📌 任务2: 粘性月份头部 (优先级5)

    • leisure_timeline_page.dart: 重构 _buildTimeline() 方法,按月份分组显示节点
    • 新增 _buildMonthHeader() 方法:季节色标签 + 月份名称 + 节点计数
    • 月份头部使用 LeisureSeasonColors 季节色 + AppRadius.lgBorder 圆角标签样式
  • 🔍 任务3: 懒加载 — VisibilityDetector (优先级5)

    • leisure_timeline_page.dart: 月份头部包裹 VisibilityDetector,可见比例>10%时触发 ensureMonthLoaded()
    • leisure_timeline_provider.dart: ensureMonthLoaded() 检查 loadedMonths 避免重复加载
  • 📅 任务4: 月视图日历模式切换 (优先级4)

    • 新建 leisure_calendar_view.dart: 月视图日历组件,显示当月日期网格
    • 有卡片数据的日期高亮(季节色半透明背景),今日使用主题色圆形标记
    • leisure_timeline_page.dart: AppBar新增日历切换按钮CupertinoIcons.calendar/CupertinoIcons.list_bullet
    • 新增 _showCalendar 状态控制日历视图展开/收起

[v6.5.65] - 2026-05-27

闲情逸致模块Phase C — 骨架屏+液态玻璃+图标替换4项

  • 🦴 任务1: 骨架屏替换 ActivityIndicator (优先级5)

    • leisure_timeline_page.dart: 将加载状态的 CupertinoActivityIndicator() 替换为自定义骨架屏 _buildSkeleton()
    • 骨架屏模拟时间线布局:日期节点 + 左吃右玩双列卡片占位,两组骨架
    • 使用 Shimmer.fromColors 实现闪烁动画,深色/浅色模式自动适配颜色
  • 🪟 任务2: 液态玻璃效果增强 (优先级5)

    • leisure_card_detail_sheet.dart: Sheet容器外层包裹 ClipRect + BackdropFilter(blur: 25),背景色改为 ext.bgCard.withOpacity(0.85) 半透明
    • leisure_bottom_filter.dart: 底部筛选栏添加 ClipRect + BackdropFilter(blur: 20) 毛玻璃效果
    • leisure_timeline_page.dart: AppBar区域添加 ClipRect + BackdropFilter(blur: 20) 半透明导航栏效果类似iOS导航栏
  • 🎨 任务3: SVG图标替换emoji — LeisureIcons图标映射 (优先级4)

    • 新建 leisure_icons.dart: 统一图标映射类优先使用CupertinoIcons
      • 卡片类型: food(star_fill)/play(compass)
      • 操作按钮: bookmark/bookmarkOutline/share/search/note
      • 信息图标: location/altitude/sunrise/sunset/price/risk/weather/calendar
      • 季节emoji保留: 🌿☀️🍂❄️CupertinoIcons无对应
      • 价格类型: free(gift)/paid(money_dollar_circle)/commercial(storefront)
    • leisure_card.dart: _buildHeader🍜吃/🎯玩→Icon+文字,_buildActions🔖收藏/📤分享→Icon+文字
    • leisure_card_detail_sheet.dart: _buildInfoGrid📍🏔️🌅🌇→CupertinoIcons_buildActionButtons🔖📤🔍📝→CupertinoIcons
  • 任务4: 错误状态UI和空状态UI确认 (优先级5)

    • Phase Av6.5.63)已实现 _buildErrorState_buildEmptyState,确认无需额外修改

[v6.5.64] - 2026-05-27

闲情逸致模块分享卡片Sheet — 3种样式预览+生成图片+系统分享+保存相册

  • 📤 新增 LeisureShareSheet 分享卡片Sheet (优先级4)

    • leisure_share_sheet.dart: 新建文件底部Sheet弹出3种分享卡片样式预览
      • 渐变头图(gradient): 季节色渐变背景 + emoji + 标题 + 日期 + 描述
      • 图片卡片(photo): 白色卡片 + emoji + 标题 + 地点 + 标签
      • 极简诗意(minimal): 大字诗句风格 + 描述 + 日期 + 署名
    • 使用 RepaintBoundary + toImage() 生成图片(复用项目已有模式)
    • share_plus 系统分享 + gal 保存到相册
    • 样式切换选择器 + 分享/保存/关闭操作按钮
    • 处理中状态防重复点击 + 权限请求
  • 🔗 连接分享入口

    • leisure_card_detail_sheet.dart: 分享按钮调用 LeisureShareSheet.show()
    • leisure_card.dart: 分享按钮调用 LeisureShareSheet.show()node暂传null

[v6.5.63] - 2026-05-27

闲情逸致模块Phase A — 设置生效+设计令牌+freezed改造+季节色覆盖+错误/空状态6项

  • 🔧 任务1: 设置在组件中生效 (优先级5)

    • leisure_card.dart: 读取 LeisureSettingscardRadius/cardSize/cardStyle 设置并应用
      • cardRadius → 动态 BorderRadius.circular(settings.cardRadius)
      • cardSize → compact(间距减半)/standard(默认)/spacious(间距加倍) 三档padding切换
      • cardStyle → exquisite(圆角+阴影+左边框)/flat(无阴影+简单分割线)/photo(预留) 三种风格切换
    • leisure_card_row.dart: 根据 activeFilters 过滤卡片(美食/花期/高海拔/风险/免费/付费/日出/观海),新增 node 参数用于日出筛选
    • leisure_timeline_page.dart: LeisureCardRow 调用传入 node 参数
  • 🎨 任务2: 设计令牌替换硬编码值 (优先级5)

    • 6个文件全面替换硬编码间距/圆角/字号为 AppSpacing/AppRadius/AppTypography 令牌
    • leisure_card.dart: BorderRadius→AppRadius、SizedBox→AppSpacing、fontSize删除使用AppTypography默认字号
    • leisure_card_row.dart: SizedBox/EdgeInsets→AppSpacing令牌
    • leisure_date_node.dart: BorderRadius→AppRadius、SizedBox→AppSpacing、EdgeInsets→AppSpacing
    • leisure_bottom_filter.dart: BorderRadius→AppRadius、spacing/runSpacing→AppSpacing、EdgeInsets→AppSpacing
    • leisure_card_detail_sheet.dart: Radius→AppRadius、SizedBox→AppSpacing、EdgeInsets→AppSpacing
    • leisure_timeline_page.dart: SizedBox→AppSpacing、EdgeInsets→AppSpacing、BorderRadius→AppRadius
    • leisure_settings_page.dart: SizedBox→AppSpacing、BorderRadius→AppRadius、EdgeInsets→AppSpacing
  • 🏗️ 任务3: 状态管理统一 — freezed改造 (优先级5)

    • leisure_timeline_provider.dart: LeisureTimelineState 改为 @freezed 模型,保留计算属性 todayNode/todayIndex/recentNodes 在私有构造函数中
    • leisure_bookmark_provider.dart: LeisureBookmarkState 改为 @freezed 模型,保留计算属性 getBookmark/isBookmarked/getCheckedItems/allBookmarked
  • ⚙️ 任务4: 设置页新增infoDensity/riskLevel/updateFrequency UI (优先级4)

    • leisure_settings_page.dart: "显示设置"分组新增 📊信息密度(紧凑/标准/详细)、🛡️风险等级(全部/高海拔/边境/无) 选择器
    • "数据管理"分组新增 ⏱️更新频率(实时/每日/每周) 选择器
  • 🌈 任务5: LeisureSeason.colorHex与index.json.seasonColors打通 (优先级5)

    • leisure_node.dart: 新增 LeisureSeasonColors 运行时季节色覆盖类(applyFromIndex/getColor/clear
    • leisure_date_node.dart: LeisureSeason.parseColor(season.colorHex)LeisureSeasonColors.getColor(season)
    • leisure_card_detail_sheet.dart: 同上替换
    • leisure_timeline_provider.dart: _init() 加载索引后调用 LeisureSeasonColors.applyFromIndex(index.seasonColors)
  • 🛡️ 任务6: 错误状态UI + 空状态UI (优先级5)

    • leisure_timeline_page.dart: 新增 _buildErrorState😵+错误信息+重试按钮)和 _buildEmptyState🌸+暂无数据+刷新按钮)
    • _buildBody 方法按优先级判断:错误→空→加载中→正常

[v6.5.62] - 2026-05-27

闲情逸致模块:完整功能开发 + 审计修复Phase 1-4 全部完成)

  • 🆕 新增闲情逸致(leisure)完整功能模块 (优先级5)

    • 数据层: 6个freezed模型(LeisureCard/Node/Settings/Bookmark/Index/Patch) + 数据服务(LeisureDataService) + 按月JSON数据(12个月67个节点) + 增量补丁 + 服务器推送示例
    • 状态层: 3个Riverpod Provider(Timeline/Settings/Bookmark) + KvStorage持久化
    • UI层: 时间线主页面(中轴线+左吃右玩+今日分割线+自动定位) + 设置页面(统计/显示/数据管理) + 卡片详情Sheet(可拖拽+信息网格+操作按钮+标注+外部搜索) + 日期节点/今日分割线/卡片组件/卡片行/底部筛选栏
    • 路由: /leisure + /leisure/settings 子路由注册,灵感页入口会话连接
    • HTML原型: 4个页面原型(timeline/settings/share_card/card_detail)
    • 设计文档: 设计文档 + 开发文档(归档清单/验收标准/开发日志)
    • pubspec.yaml: 新增 assets/data/leisure/ 资源注册
  • 🔧 审计修复 (优先级5)

    • 修复Critical: onCardTap回调连接LeisureCardDetailSheet、pubspec.yaml注册leisure assets、JSON解析异常保护(int.tryParse+类型安全遍历)、删除重复SwapButton组件
    • 修复Major: 硬编码颜色统一到LeisureSeason.parseColor()、copyWith error字段逻辑修复(clearError参数)、deprecated activeColor→activeTrackColor、类型推断警告修复(showCupertinoModalPopup/showCupertinoDialog)
    • LeisureSeason新增parseColor()静态方法季节色从枚举colorHex统一解析消除3处重复定义

[v6.5.61] - 2026-05-27

闲情逸致模块数据模型层创建6项

  • 🆕 新增闲情逸致(leisure)模块数据模型 (优先级4)
    • leisure_card.dart: 时间线卡片模型 — LeisureCard吃/玩卡片)+ LeisurePriceType枚举free/paid/commercial/unknownextension提供hasRisk/isHighAltitude/priceLabel/toJson/fromJson
    • leisure_node.dart: 时间线每日节点模型 — LeisureNode日期+吃/玩卡片)+ LeisureSeason枚举spring/summer/autumn/winter含颜色hex+ LeisureCards容器extension提供allCards/hasCards/displayDate/hasRiskCards/toJson/fromJson
    • leisure_settings.dart: 时间线显示设置模型 — LeisureSettings卡片大小/圆角/样式/季节标签/日出日落/风险警告/筛选/分享样式/信息密度/风险等级/更新频率)
    • leisure_bookmark.dart: 收藏标注模型 — LeisureBookmark卡片ID/收藏状态/勾选项/笔记关联)
    • leisure_index.dart: 数据索引模型 — LeisureIndex可用年月/季节颜色/风险等级/价格类型)+ LeisureServerSync服务器同步配置
    • leisure_patch.dart: 增量补丁模型 — LeisurePatch版本/来源/操作列表)+ LeisurePatchOperationadd/update操作+ LeisurePatchOp枚举
    • build.yaml: 新增 lib/features/tool_center/leisure/**/*.dart 到 freezed generate_for 范围
    • 所有模型遵循 sealed class + @freezed + const factory 规范,手动实现 toJson/fromJson不使用 json_serializable

[v6.5.60] - 2026-05-27

翻译助手持久化迁移Hive KV → Drift SQLite1项

  • 🏗️ 翻译助手会话消息持久化从 Hive KV 迁移到 Drift SQLite (优先级5)
    • app_database.dart: 新增 TranslateSessionMessages 表和 TranslateFavoritesschemaVersion 15→16
    • app_database.dart: 新增 CRUD 方法insertSessionMessage, insertSessionMessageBatch, getSessionMessages, updateSessionMessage, clearSessionMessages, insertFavorite, getFavoriteMessageIds, isFavorite, removeFavorite, clearFavorites, getTranslateFavoriteCount
    • translate_provider.dart: 移除所有 KvStorage/HiveBoxNames.translateHistory 调用,改用 AppDatabase.instance 的 Drift 方法
    • translate_provider.dart: _readHistorySync()/_readSessionMessagesSync() 改为异步 _loadHistoryFromDrift()/_loadSessionFromDrift(),通过 Future.microtaskbuild() 中初始化
    • translate_provider.dart: _saveHistory()/_saveSessionMessages() 改为 Drift 全量替换策略
    • translate_provider.dart: toggleFavorite() 改为 Drift 增量操作
    • translate_provider.dart: clearHistory()/clearMessages() 改为 Drift 删除
    • kv_storage.dart: 从 HiveBoxNames.all 列表移除 translateHistory(保留常量定义以防旧数据迁移)
    • 统一双存储体系:翻译助手会话消息+收藏 → Drift SQLite翻译简略记录 → Drift SQLite已有 TranslateRecords 表)

[v6.5.59] - 2026-05-27

架构改进:补签积分动态化 + FeatureFlag统一管理2项

  • 🔧 改进1: 补签消耗积分从coin_rule读取 (优先级5)

    • UserCenter.php: $makeupCost = 10 硬编码改为从 coin_rulesignin_makeup 规则动态读取fallback默认值10
    • UserCenter.php: 新增 signin_config() API接口返回 makeup_cost 配置
    • user_center_service.dart: 新增 getSigninConfig() 静态方法,signinMakeup() 返回值改为 Map<String, dynamic>
    • signin_provider.dart: SigninState 新增 makeupCost 字段默认10SigninNotifier 新增 loadSigninConfig() 方法在 build() 时自动加载
    • signin_page.dart: 替换所有硬编码 10ref.read(signinProvider).makeupCost消耗积分显示、积分不足判断、提示文案等6处
  • 🚩 改进2: 创建 FeatureFlag 服务统一管理功能可用性 (优先级5)

    • 新增 feature_flag_service.dart: 定义15个 FeatureFlag 枚举nearbyDiscovery/shaderBackground/exportTranslate/ttsRead/importChat/downloadWallpaper/editWithApp/privateMessage/tagDelete/shareSentence/forwardMessage/handwritingFont/qrScan/quickTransfer/payment
    • 每个 FeatureFlag 包含 id/title/unsupportedMessage/isEnabled 属性
    • 提供 FeatureFlagService.check(context, flag) 静态方法:未启用时弹出 CupertinoAlertDialog
    • 提供 featureFlagProvider Riverpod Provider
    • general_settings_page.dart: isPlaceholder 逻辑改为使用 FeatureFlagService.fromSettingId() + FeatureFlagService.isPlaceholder(),弹窗文案使用 FeatureFlag.unsupportedMessage
    • 10个页面的"设备不支持"硬编码替换为 FeatureFlag.unsupportedMessage
      • profile_page.dart: 通用扫码/面对面快传/收付款
      • public_profile_page.dart: 私信
      • tag_cloud_page.dart: 标签删除
      • nearby_users_sheet.dart: 分享句子
      • transfer_chat_page.dart: 转发消息
      • translate_settings_page.dart: 导出翻译
      • translate_page.dart: 朗读功能
      • chat_settings_page.dart: 导入会话
      • wallpaper_preview_sheet.dart: 下载壁纸/编辑器应用
      • font_online_widgets.dart: 手写字体
      • tool_panel.dart: 分享工具

[v6.5.58] - 2026-05-27

Shimmer骨架屏占位 + Dio HTTP缓存拦截器2项

  • 改进1: Shimmer骨架屏配合CachedNetworkImage做加载占位 (优先级4)

    • shimmer_placeholder.dart: 新增统一Shimmer占位组件提供4种工厂构造
      • ShimmerPlaceholder.image() — 图片占位(圆角矩形)
      • ShimmerPlaceholder.card() — 卡片占位(标题+内容行)
      • ShimmerPlaceholder.avatar() — 头像占位(圆形)
      • ShimmerPlaceholder.listItem() — 列表项占位(头像+标题+副标题)
    • 使用AppTheme主题色iOS风格Cupertino颜色体系
    • 深色/浅色模式自动适配baseColor和highlightColor
    • safe_cached_image.dart: 集成ShimmerPlaceholder
      • CachedNetworkImage的placeholder默认使用ShimmerPlaceholder.image()
      • progressIndicatorBuilder中叠加Shimmer占位+进度指示器
      • errorWidget降级路径也使用Shimmer占位替代空白/SizedBox.shrink
      • Image.network降级路径同样使用Shimmer占位
  • 🗄️ 改进2: dio_cache_interceptor配合Dio做接口缓存 (优先级4)

    • pubspec.yaml: 新增dio_cache_interceptor ^3.5.0 + dio_cache_interceptor_file_store ^1.2.3
    • cache_config.dart: 新增HTTP缓存配置
      • GET请求默认缓存5分钟特定接口自定义时长句子10分钟/分类30分钟/天气15分钟等
      • 排除需要实时数据的接口(登录/注册/签到/上传等9个路径
      • 使用文件系统存储缓存FileCacheStore
      • 提供clearAll/cleanExpired/forceRefreshOptions方法
    • api_client.dart: 集成缓存拦截器
      • 新增initCache()异步初始化方法App启动时调用
      • GET方法新增useCache/forceRefresh参数控制缓存行为
      • _buildCacheOptions根据路径自动判断缓存策略
      • 保留原有LogInterceptor和ApiInterceptor
    • app.dart: 在initState中调用ApiClient.instance.initCache()

[v6.5.57] - 2026-05-27

深度链接统一架构 + 工具中心权限异常处理2项

  • 🔗 改进1: 使用 app_links 统一深度链接处理架构 (优先级4)

    • app_router.dart: 将 _resolveDeepLinkPath 私有方法提取为 AppRouter 公共静态类
    • 新增 AppRouter.resolveDeepLinkUri(Uri) 统一入口,支持 xianyan:// scheme 和 https:// 通用链接
    • 合并 deep_link_service.dart 中独立的路径映射逻辑(_resolveCustomScheme/_resolveHttps/_resolveToolPath/_resolveSettingsPath)到 AppRouter 类中
    • 消除两套不一致的路径映射:原来 deep_link_service.dartapp_router.dart 各有独立映射,容易遗漏和不同步
    • deep_link_service.dart: 重构为使用 AppRouter.resolveDeepLinkUri() 单一数据源,删除所有重复的 _resolve* 方法
    • 新增 _getInitialLinkSafely() 安全获取初始链接,捕获 PlatformException
    • 新增 _pendingLink + _schedulePendingNavigation() 延迟导航机制,解决冷启动时 Context 不可用问题
    • 新增 dispose() 资源释放方法,正确取消 StreamSubscription
    • _handleDeepLinkRedirect 简化为调用 AppRouter.resolveDeepLinkUri(),逻辑统一
  • 🛡️ 改进2: 工具中心 connectivity_plus 权限异常处理 (优先级4)

    • tool_center_provider.dart: _initConnectivity() 添加 PlatformException 捕获
    • Android 12+ 附近设备权限未授予时,connectivity_plus 会抛出 PlatformException,原来会被通用 catch 吞掉
    • 新增 needsPermissionCheck 状态标志,权限异常时设为 true供 UI 层显示提示
    • 新增 clearPermissionCheck() 方法,用户处理权限后调用可重新初始化网络检测
    • 网络状态监听流也添加 PlatformException 保护,避免监听注册时崩溃
    • 举一反三:ConnectivityService.init() 同样存在此风险,但该服务在 main.dart 中已有 try-catch 保护

[v6.5.56] - 2026-05-27

句子详情Sheet修复2项

  • 🔍 修复1: "创作"按钮改为"外部搜索"按钮 (优先级4)

    • sentence_detail_sheet.dart: 将"🎨 创作"按钮改为"🔍 外部搜索"按钮
    • 点击逻辑内置搜索时关闭Sheet并跳转搜索页外部搜索时调用 SearchEngineService.instance.search() 打开浏览器
    • 搜索失败时弹出错误提示
  • 🎯 修复2: Sheet弹出时下层页面缩放效果不生效 (优先级5)

    • page_transitions.dart: 修复 _ScaledGlassSheetRoute.delegatedTransition 核心bug
    • 根因: delegatedTransition 回调中错误使用 animation 参数前一路由已完成值恒为1.0),应使用 secondaryAnimation表示前一路由被新路由覆盖的程度0.0→1.0
    • AnimatedBuilder 监听对象从 animation 改为 secondaryAnimation
    • 缩放因子从 0.05 增大到 iOS 实测值 0.0835kSheetScaleFactor),还原原生 iOS Sheet 压制效果
    • 参考 CopiedCupertinoSheetTransitions.secondarySlideDownTransition 的正确实现模式

[v6.5.56] - 2026-05-27

闲情逸致时间线数据扩展 + HTML原型决策选项2项

  • 📊 任务1: leisure_timeline.json 数据扩展 (优先级4)

    • leisure_timeline.json: 节点从26个扩展到67个覆盖全年每月4-7个节点
    • 版本号从 1.0.0 升级到 1.1.0
    • 新增41个节点1月(2)、2月(3)、3月(3)、4月(3)、5月(3)、6月(3)、7月(4)、8月(3)、9月(4)、10月(4)、11月(4)、12月(4)
    • 每个节点包含 food/play 双卡片完整字段date/month/day/weekday/isWeekend/season/sunrise/sunset/cards
    • 风险提示规则严格执行:西藏/新疆/青海海拔>3000m标注"极高海拔"+"高原反应"、云南海拔>2000m标注"高原紫外线强"、边境地区标注"边境地区"、黑龙江冬季标注"极寒-XX℃"、野生菌标注"野生菌中毒风险"
    • 新增景点:长白山天池、武大樱花、平坝樱花、伊犁杏花、紫藤花、海棠花、格桑花、稻城野花、九顶山野花、阿里观星、篁岭皇菊、塔川红叶、本溪红叶、峨眉山赏月、腾冲银杏、海螺沟冰川、长白山滑雪等
    • 新增美食:春笋、菠萝、樱桃、杨梅酒、向日葵、榴莲、六月黄、桂花、砂糖橘、沃柑等
  • 🎨 任务2: HTML原型决策选项更新 (优先级4)

    • leisure_timeline.html: 新增决策选项区域swap按钮下方
      • 卡片样式切换:精致卡片 / 扁平简约 / 图文卡片CSS类切换
      • 布局方向切换:中轴对称 / 左线右卡CSS类切换
      • 季节色主题:春🌿☀️🍂❄️CSS变量切换
      • 暗色模式切换:🌙 toggle按钮body.dark-mode类切换
      • 搜索按钮:弹出搜索选项面板(百度/高德/大众点评/小红书/抖音)
      • 设置按钮:跳转 leisure_settings.html
    • leisure_settings.html: 新增决策选项区域
      • 分享卡片样式:渐变头图 / 图片卡片 / 极简诗意(带预览缩略图)
      • 默认打开位置:今日 / 最近有数据 / 上次浏览位置
      • 卡片信息密度:紧凑 / 标准 / 宽松
      • 风险提示级别:仅高危 / 全部 / 关闭
      • 数据更新频率:每次打开 / 每日 / 手动
      • 返回按钮跳转 leisure_timeline.html
    • leisure_share_card.html: 返回按钮跳转 leisure_timeline.html

[v6.5.55] - 2026-05-27

签到补签积分不足提醒 + 注册赠送积分金币2项

  • 🐛 修复1: 签到补签积分不足提醒增强 (优先级5)

    • signin_page.dart: 补签对话框新增"当前积分"行积分≥10显示绿色、<10显示红色
    • signin_page.dart: 确认补签前前置检查积分,不足时弹出"积分不足"警告对话框,提示"补签需要10积分当前积分: X"
    • signin_page.dart: 补签失败时弹出错误对话框,显示具体错误信息(如"该日期已签到"等)
    • signin_provider.dart: signinMakeup() 增加 isLoading 状态管理,防止重复点击
    • signin_provider.dart: 补签成功后调用 refreshUser() 刷新用户积分数据
    • 举一反三:后端 signin_makeup 已有积分不足校验,前端增加前置检查减少无效请求,双重保障
  • 🎁 修复2: 用户注册自动赠送50积分和50金币 (优先级4)

    • UserSecurity.php: register() 方法注册成功后赠送50积分+50金币写入 coin_log 日志
    • auth_provider.dart: 注册成功后调用 refreshUser() 刷新用户信息,确保前端显示最新积分/金币
    • 赠送逻辑在后端处理,前端仅负责刷新展示,保证数据一致性

[v6.5.54] - 2026-05-27

账户设置页面修复2项

  • 🐛 修复1: 个性签名行无法点击编辑 (优先级4)

    • account_settings_page.dart: 将"个性签名"从纯展示组件 _InfoRow 改为可交互组件 _ActionRow
    • 添加 onTap 回调,点击后弹出 EditFieldBottomSheet(field: 'bio') 编辑弹窗
    • 新增 _showEditBioSheet() 方法,使用 showCupertinoModalPopup 展示编辑弹窗
    • trailing 显示当前签名内容,未填写时显示"未填写"
  • 🐛 修复2: 去掉手机号待验证标识 (优先级3)

    • account_settings_page.dart: 移除手机号行的 _buildVerifyBadge 验证徽章
    • 简化 trailing 从 Row(徽章+文本) 改为纯 Text 组件,仅显示手机号或"未绑定"
    • 邮箱验证徽章保留不变

[v6.5.53] - 2026-05-27

日签卡片"换一句"移入卡片 + 语言覆盖率显示上限2项

  • 🔄 修改1: 日签卡片"换一句"按钮移入卡片内部,改为刷新同类型内容 (优先级4)

    • daily_card_page.dart: 将"换一句"按钮从导航栏trailing移到卡片右上角叠加层Stack+Positioned按钮位于RepaintBoundary外部不影响导出图片
    • daily_card_provider.dart: 新增 refreshCurrentType() 方法,点击"换一句"时从服务端获取同类型新内容(如当前是诗词则获取新诗词),不再循环切换类型
    • 新增 _fetchByType() 辅助方法,根据 DailyContentType 调用 DailyCardService 对应的 fetch 方法
    • 保留 nextContent() 方法供内容类型选择器使用
    • 按钮样式:毛玻璃半透明背景 + 循环箭头图标 + 主题色文字
  • 📊 修改2: 语言选择页面非中文语言覆盖率显示不超过50% (优先级3)

    • language_settings_page.dart: _buildCoverageRow 方法中对非中文语言zh_CN/zh_TW以外的语言的显示百分比做 clamp(0, 50) 上限处理
    • 中文语言(简体/繁体)保持原始百分比显示不变
    • 仅影响UI显示层不修改底层 _progressOverride 数据

[v6.5.53] - 2026-05-27

主页下拉面板交互优化3项

  • 🐛 修复1: 下拉阈值太低容易误触 (优先级4)

    • home_refresh_indicator.dart: 将 _triggerThreshold 从 40.0 增加到 80.0,需要更长的下拉距离
    • 将触发条件从 newProgress >= 0.3 改为 newProgress >= 0.7,需要拉得更远才触发面板
    • 触发面板打开时添加 HapticService.medium() 震动反馈
    • 同步更新表情阈值love(≥0.7)、idle(<0.2)、surprise(<0.4)、think(其他)
    • 防止重复触发:添加 !_hasReachedThreshold 条件判断
  • 🐛 修复2: 面板弹出后上下滑无法收起 (优先级4)

    • home_tool_center.dart: 在 _FloatingPanel 面板组件中添加垂直滑动手势检测
    • 新增 _verticalDragDelta 累计垂直滑动距离,_dismissDragThreshold = 50.0 为收起阈值
    • 用户在面板上向上或向下滑动超过 50px 时,自动调用 _dismiss() 收起面板
    • 收起时添加 HapticService.light() 轻震动反馈

[v6.5.52] - 2026-05-27

知识图谱缩放跟手修复 + 个人中心LV标签对齐2项

  • 🐛 修复1: 知识图谱缩放不跟手,速度过快 (优先级5)

    • knowledge_graph_page.dart: 修复缩放手势处理,使用增量缩放替代直接乘法
    • knowledge_graph_canvas.dart: 同步修复缩放手势处理
    • 根因:details.scale 是从手势开始累积的缩放值,直接用 _scale * details.scale 会导致每帧在累积基础上再次乘以累积值,产生指数级增长
    • 修复方案:引入 _previousScale 记录上一帧的 scale 值,每帧只应用增量 delta = details.scale / _previousScale,缩放变为线性跟手
    • 举一反三:所有使用 onScaleUpdate + details.scale 做缩放的场景,都应使用增量方式而非直接乘法
  • 🎨 修复2: 个人中心LV等级标签靠右与编辑按钮上下对齐 (优先级3)

    • profile_header_row.dart: 将LV等级标签从用户名行中移出放到右侧与编辑按钮上下对齐
    • 新增 _buildRightColumn 方法将LV标签和编辑按钮组合为右侧垂直列
    • _buildUserInfo 简化为仅显示用户名和签名移除LV标签
    • 布局效果:[头像] [用户名+签名] [LV标签 / 编辑按钮] 右侧上下对齐

[v6.5.51] - 2026-05-27

翻译助手聊天记录重启后丢失修复1项

  • 🐛 修复: 翻译助手聊天记录重启后丢失 (优先级5)
    • translate_provider.dart: 修复 build() 方法中异步加载被空返回值覆盖的Bug
    • 根因:_loadHistory()_loadSessionMessages() 虽在 build() 中被调用,但它们是 async 方法且内部无 await,同步执行后通过 state = state.copyWith(...) 更新状态,随后 build() 返回 const TranslateState() 将已加载的数据覆盖为空
    • 修复方案:将加载逻辑改为同步方法 _readHistorySync()_readSessionMessagesSync(),直接在 build() 中调用并返回包含已加载数据的初始状态
    • 删除旧的 _loadHistory()_loadSessionMessages() 异步方法(逻辑已被同步方法替代)
    • 举一反三:检查 transfer_notifier.dartsearch_provider.dart,它们使用 Future.microtask(_init) 模式,不存在此问题

[v6.5.50] - 2026-05-27

灵感页面标题修正 + Android TTS引擎初始化修复2项

  • ✏️ 修改1: 灵感页面标题从'工作流'改回'灵感' (优先级3)
    • inspiration_page.dart: 页面标题从'工作流'改为'灵感',文件头注释同步更新
    • discover_page.dart: 页面标题从'工作流'改为'灵感',文件头注释同步更新
    • translate_page.dart: previousPageTitle从'工作流'改为'灵感'
    • chat_flow_page.dart: previousPageTitle中'工作流'改为'灵感'(稍后读场景返回页标题)
  • 🔊 修改2: 修复Android端系统TTS用不了的问题 (优先级5)
    • tts_service.dart: Android平台_initPlatformSpecific()原来只打印日志,无实际初始化操作
    • 添加 await _flutterTts!.awaitSpeakCompletion(true) 确保speak()方法正确等待朗读完成
    • 添加 getEngines 调用作为同步点等待Android TTS引擎初始化完成后再设置语言/语速等参数
    • 添加引擎可用性检查engines为空时记录警告日志
    • 根因Android上FlutterTts构造函数异步初始化TextToSpeech引擎原代码未等待引擎就绪就调用setLanguage等设置方法导致设置静默失败speak()也无法正常工作

[v6.5.49] - 2026-05-27

情景诗词天气详情布局修复1项

  • 🐛 天气详情项布局优化 (优先级3)
    • weather_page.dart: 修复 _buildWeatherDetailItem 布局溢出问题
    • emoji 和 label 从垂直排列改为水平排列Rowvalue 独占下一行
    • 布局效果:💧 湿度 / 72.0(而非 💧 / 湿度 / 72.0 的三行排列)
    • emoji 字号从 16 调整为 14与 label 视觉对齐
    • Column 添加 mainAxisSize: MainAxisSize.min 防止多余空间
    • Row 添加 mainAxisSize: MainAxisSize.min + MainAxisAlignment.center 居中且不溢出
    • value 的 Text 添加 maxLines: 1overflow: TextOverflow.ellipsis 防止长文本溢出
    • 确保 360px 宽度手机上 4 列布局不会溢出

[v6.5.48] - 2026-05-26

数据管理入口优化 + Android系统设置"管理空间"按钮 + 分享接收空安全修复3项

  • 💾 任务1: 设置页面数据管理入口改造 (优先级3)
    • more_settings_page.dart: 将"重置与清理"分组的"清空软件数据"按钮改为"闲言数据管理"
    • 修改按钮图标为文件夹图标(CupertinoIcons.folder_fill),颜色改为橙色(0xFFFF9500)
    • 修改标题为"闲言数据管理",副标题为"管理存储空间、缓存和数据"
    • 点击行为从弹出工厂重置对话框改为跳转到数据管理页面(AppRoutes.dataManagement)
    • 用户可通过数据管理页面进行细粒度的数据管理:分类查看统计、单独清除某类数据、导出导入备份等
    • 提升用户体验,避免误操作导致全部数据丢失,同时保留完整的数据管理能力
  • 📱 任务2: Android系统设置"管理空间"按钮 (优先级5)
    • AndroidManifest.xml: 在application标签添加android:manageSpaceActivity=".MainActivity"属性
    • 此属性使安卓系统设置→应用信息→存储页面中,"清除数据"按钮变为"管理空间"按钮
    • 点击"管理空间"直接启动MainActivitysingleTop复用已有实例通过onNewIntent接收MANAGE_STORAGE意图
    • 删除activity-alias方案activity-alias会创建新Activity实例不同组件名导致双Flutter引擎闪退
    • 关键修复: 移除android:taskAffinity=""该属性导致FLAG_ACTIVITY_NEW_TASK无法找到已有任务栈每次都创建新实例
    • MainActivity.kt: onNewIntent中setIntent+检测MANAGE_STORAGE通过MethodChannel通知Flutter导航
    • MainActivity.kt: notifyFlutterOpenDataManagement添加null安全检查MethodChannel未就绪时标记pending重试
    • 完整链路系统设置→管理空间→MainActivity(singleTop复用)→onNewIntent→MethodChannel→Flutter数据管理页面
  • 🛡️ 任务3: 分享接收空安全中间件 (优先级5)
    • 新增safe_sharing_receiver.dart: 安全分享接收中间件不修改本地包receive_sharing_intent
    • SafeSharedMediaFile: 安全解析Map数据path为null时跳过type为null时默认file所有字段null安全
    • SafeSharingReceiver: 包装getInitialMedia/getMediaStream添加try-catch异常保护
    • sharing_receiver_service.dart: 使用SafeSharingReceiver替代直接调用ReceiveSharingIntent.instance
    • 修复从系统设置"管理空间"入口启动时SharedMediaFile.fromMap空指针崩溃(_TypeError)

[v6.5.47] - 2026-05-26

架构改进:硬编码常量化 + 鸿蒙路由同步 + 缓存统一 + 空壳标记 + 异步保护5项

  • 🔧 任务1: Provider硬编码常量化 (优先级5)
    • chat_provider.dart: 新增 ChatNotifier.defaultConversationId = 'default' 常量,替换硬编码 'default'
    • chat_session_provider.dart: 新增17个 kSession* 常量readlater/discover/footprint/daily_card等替换 _buildSessions() 中所有硬编码会话ID
    • translate_provider.dart: 新增 TranslateNotifier.defaultSessionId = 'default' 常量,替换硬编码 'default'
    • 消除魔法字符串,提高可维护性和可搜索性
  • 📱 任务2: 鸿蒙路由同步 (优先级4)
    • ohos_nav_bridge.dart: 对比 app_routes/content_routes/settings_routes/tool_routes/user_routes/editor_router/feature_routes 共7个路由文件
    • 修复 /readlater-chat 路由缺失 sessionType: ChatSessionType.readlater 参数
    • 新增5条缺失路由/quick-card/editor/preview/editor/crop/editor/gallery/editor/3d-preview
    • 新增 QuickCardPlaceholderEditorSubPlaceholder 占位组件
  • 🗄️ 任务3: 统一缓存管理器入口 (优先级4)
    • wallpaper_preload_service.dart: 将 DefaultCacheManager().downloadFile() 替换为 CustomCacheManager.instance.downloadFile()
    • 全项目确认无其他 DefaultCacheManager 残留,统一使用 CustomCacheManager.instance
  • 🔒 任务4: 空壳功能标记 (优先级3)
    • setting_models.dart: SettingItem 新增 isPlaceholder 字段默认false
    • general_settings_sections.dart: 标记 nearby_discovery(近场发现)和 shader_background(特效背景)为 isPlaceholder: true
    • general_settings_page.dart: 新增 _buildPlaceholderContent() 方法—锁图标🔒+灰色文字+禁用开关+0.6透明度+点击弹窗"该功能正在开发中,敬请期待 🚧"
  • 🛡️ 任务5: Fire-and-forget异步调用保护 (优先级5)
    • 全项目扫描所有 Future.microtask()Future.delayed() 调用100+处)
    • 为所有未保护的 fire-and-forget 调用添加 .catchError() 保护
    • 涉及文件40+个):
      • Core: crash_monitor, connectivity_provider(2个), connectivity_service, weather_info_provider, notification_provider
      • Home: home_provider, offline_provider, cache_provider, character_mood_provider, character_tips_provider, daily_card_style_provider, wallpaper_provider, home_interaction_mixin
      • Tool Center: chat_provider, chat_session_provider, chat_attachment_provider, chat_conversation_provider, custom_api_provider, translate_settings_provider, tool_center_provider, inspiration_provider
      • Features: daily_card_provider, weather_provider, poetry_provider, countdown_provider, auth_provider, search_provider, progress_provider, source_provider, reading_report_provider, discover_provider, study_plan_provider, reading_goal_provider, pomodoro_provider, hitokoto_service
      • Settings: general_settings_provider, general_fields_provider, theme_settings_provider, translate_record_provider, font_management_notifier, transfer_settings_provider, notification_settings_page, permission_management_page
      • File Transfer: transfer_notifier, transfer_signaling_handler, transfer_pairing_handler, transfer_file_handler, device_discovery_provider, cloud_cache_provider, canvas_provider, clipboard_provider
      • App: app.dart, offline_manager
      • UI Pages: onboarding_page, login_page, qrcode_login_page, home_page, favorite_page, chat_flow_page, chat_settings_page, discover_page, poetry_page, screen_share_page, pro_editor_page, log_viewer_page, app_lock_overlay, app_lock_pin_setup, tool_panel, chat_animations, chat_flow_send_toast, appbar_character_sprite, canvas_page, study_plan_page, note_edit_page, share_history_page, plugin_page, tts_plugin_page, translate_plugin_page, hanzi_tool_page

[v6.5.46] - 2026-05-26

运势卡片分享 + AirDrop发现 + 权限统计 + 日志导出分析 + 应用锁双认证5项

  • 🍀 任务1: 每日运势-社交分享运势卡片 (优先级4)
    • daily_fortune_page.dart: 使用RepaintBoundary+GlobalKey截取运势卡片为PNG图片通过share_plus分享到社交平台
    • 添加_onShareFallback()文本分享降级方案,截图失败时回退到纯文本分享
    • 分享按钮添加AnimatedScale+AnimatedOpacity动画反馈防止重复点击
  • 📡 任务2: 文件传输-AirDrop风格发现 (优先级3)
    • 新增 airdrop_discovery_view.dart: AirDrop风格雷达扫描动画+圆形设备节点布局
    • _RadarSweepPainter自定义Painter绘制雷达扫描线_AirDropDeviceNode圆形设备头像
    • file_transfer_discovery_tab.dart: 添加雷达/列表视图切换开关,双视图模式
  • 📊 任务3: 权限管理-权限使用统计 (优先级4)
    • permission_service.dart: 新增recordUsage/getUsageStats/getPermissionUsage/getFrequencyLabel等方法
    • 新增PermissionUsageStat数据类(count/lastUsed/firstUsed/frequencyLabel/relativeLastUsed)
    • permission_management_page.dart: 添加fl_chart PieChart使用频率饼图每个权限卡片显示使用统计
    • 授权时自动记录使用次数和时间,频率标签(低/中/高)颜色编码
  • 📝 任务4: 日志查看器-日志导出+分析 (优先级4)
    • logger.dart: 新增filterByTimeRange/searchByKeyword/filter/countByLevel/exportToCsv方法
    • log_viewer_page.dart: 全面重构—添加分析摘要卡片(错误/警告/信息/调试计数)
    • 添加关键词搜索栏,导出弹窗支持.log/.csv/.json三种格式
    • 使用Log.filter()综合过滤SharePlus分享导出文件
  • 🔐 任务5: 应用锁-指纹+面容双认证 (优先级5)
    • app_storage.dart: LockStorage新增biometricEnabled存储键和读写方法
    • app_lock_service.dart: AppLockState新增biometricEnabled字段和isDualAuth计算属性
    • AppLockNotifier新增setBiometricEnabled()方法setMethod()兼容生物识别模式
    • app_lock_settings_page.dart: 生物识别从互斥选项改为独立开关,支持密码+生物识别双认证
    • 动态识别设备生物识别类型(面容/指纹/虹膜),显示对应图标和名称
    • 双认证模式状态卡片(绿色边框),显示当前认证组合
    • app_lock_overlay.dart: 双认证模式优先尝试生物识别,失败后降级到密码/手势
    • 生物识别图标呼吸动画(AnimationController+scale tween),发光阴影效果
    • 降级按钮"使用密码解锁"/"使用生物识别解锁"双向切换

已归档版本

v6.5.45(设置导出+高对比度+色弱) / v6.5.44(BottomSheet+离线预加载+知识图谱+手写字体) / v6.5.43(搜索引擎+搜索历史+TTS语言) / v6.5.42(安卓数据管理+鸿蒙应用锁) / v6.5.41(壁纸模板+数据管理修复) / v6.5.40(消息持久化+会话排序) / v6.5.39(离线预加载+引导页) / v6.5.38(翻译emoji+TTS sheet+AI助手头像) / v6.5.37(备份说明+字体勾选+翻译进度) / v6.5.36(引导页+编辑器) / v6.5.35(权限管理+日志滑动) / v6.5.34(UI文本变更) / v6.5.33(鸿蒙TTS适配) / v6.5.32(7项Bug修复) / v6.5.31(StreamProvider修复) / v6.5.30(EdgeTTS 403+Provider修复) / v6.5.29(小组件+Provider+壁纸+TTS) / v6.5.28(插件增强12修复+11功能) / v6.5.27(翻译+朗读插件) / v16.36.3(插件列表) / v16.36.2(翻译弹窗) / v16.36.1(OHOS崩溃修复) / v16.36.0(7项功能修复) / v16.35.0(性能优化8项) / 6.25.1(鸿蒙小组件跳转修复) / 6.25.0(鸿蒙端数据库+存储迭代修复) / 6.24.0(诗词设置页面) / 14.23.0(翻译助手) / 14.22.0(画布样式) / 14.20.0(屏幕共享WebRTC) / 14.19.0(画布协作) / 14.18.0(离线队列) / 14.17.0(USB传输) / 14.16.0(云端暂存) / 14.15.0(送达回执) / 14.14.0(断点续传) / 14.13.0(文件分流) / 14.12.0(信令服务器) / 14.11.0(配对码机制) / 14.10.0(雷达扫描) / 14.9.0(屏幕共享信令) / 14.8.0(画布同步) / 14.7.0(全流程E2E) / 14.6.0(翻译服务) / 14.5.0(诗词页面) / 14.4.0(天气诗词) / 14.3.0(编辑器增强) / 14.2.0(画布圆角) / 14.1.0(编辑器样式) / 14.0.0(传输架构重构) / 13.9.0(多语言) / 13.8.0(主题系统) / 13.7.0(设置重构) / 13.6.1(数据库修复) / 13.6.0(存储优化) / 13.4.0(本地化) / 13.3.0(HTTP明文) / 13.2.0(信令协议) / 6.4.1-6.4.5(鸿蒙端数据库+存储迭代修复) / 5.13.0(local_auth_ohos合并) / 5.10.0(SDK升级oh-3.41.9) / 12.4.0(Tab栏个性交互) / 12.3.0(搜索三大问题修复) / 12.2.0(收藏双向同步) / 12.1.1(快捷按钮导航) / 12.1.0(USB OTG传输) / 6.3.2(登录加载闪烁修复) / 6.3.1(TextPainter异常修复) / 6.2.0(协作画布) / 6.2.1(剪贴板同步) / 11.2.0(云端暂存) / 5.33.0(智能推荐+标签云+智能模式) / 5.32.0(离线浏览缓存) / 5.31.0(通知设置) / 5.30.0(二维码登录) / 5.29.0(表单校验+本地通知) / 5.28.0(文件传输助手+我的设备) / 5.27.0(用户中心接口同步) / 5.26.0(文件传输核心架构) / 5.22.0(聊天多媒体+视觉增强) / 4.21.0(聊天会话流) / 5.11.0(通用设置重构) / 5.10.0(关于页面+图标统一) / 3.9.9(画布样式编辑) / 3.9.8(拖拽描边/文本回写/壁纸无限加载) / 3.9.7(画布圆角+导出修复) / 3.9.6(画布圆角/文字按钮卡死) / 3.9.5(Bug回归修复) / 3.9.4(本地化/HTTP明文) / 3.9.3(画布圆角/壁纸卡死) / 3.9.2(画布圆角/文字按钮/壁纸) / 3.9.1(历史卡死/同步丢失) / 3.9.0(编辑器增强) / 3.8.0 / 2.58.0(六大Bug修复) / 2.57.0(开发计划) / 2.56.0(README更新) / 2.55.1(代码质量清理) / 1.55.0(灵感页面重构) / 1.54.0(个人中心+签到Bug) / 1.53.0(分类列表+骨架屏) / 1.52.0(句子卡片不更新) / 1.51.0(句子循环重复) / 1.50.0(频道同步延迟) / 1.49.0(刷新无响应+分类同步) / 1.48.0(句子广场无限循环) / 1.47.0(API类型转换崩溃) / 1.46.0(句子来源页面) / 1.45.0(笔记自动保存) / 1.44.2(笔记Bug修复) / 1.44.1(笔记删除Bug) / 1.44.0(API集成补全) / 1.40.0(用户安全接口) / 1.39.0(卡片震动/分类切换) / 1.31.0(API功能全面接入) / 1.30.0(传统色页面重构) / 1.23.0(偷工减料修复) / 1.22.0(句子广场交互) / 1.21.0(数据管理卡死/Tab抖动) — 更早版本详见 git history