本次提交包含多项迭代优化和问题修复: 1. 新增缩略图图片组件、数字格式化工具类,补充多语言翻译类型与本地化支持 2. 优化底部导航栏主题色统一使用动态accent色值 3. 修复多处图表动画、路由跳转、API请求相关问题 4. 简化服务器公告文案,调整默认分屏状态为关闭 5. 新增安卓/iOS桌面快捷方式配置 6. 重构多处状态管理类使用SafeNotifierInit统一异常保护 7. 替换硬编码蓝色为主题色,更新版本号获取方式为动态读取 8. 优化缓存预加载逻辑,移除无用代码 9. 调整默认设置项,优化用户体验细节
84 KiB
Changelog
所有重要变更均记录于此文件。格式基于 Keep a Changelog。
[v6.9.19] - 2026-05-31
🔄 修复稍后读/收藏跨页面同步问题
Issue 10: 稍后读(Read Later)同步问题
- 🐛 根因:
ReadLaterNotifier.init()需手动调用(在 ReadLaterPage.initState 中),但 Provider 创建时不会自动调用。若用户从未访问稍后读页面,Provider 虽被创建但init()未执行,导致:1) 初始数据未加载;2)readlaterRefreshStream未订阅。即使notifyReadlaterRefresh()被调用,刷新事件也会丢失。 - ✅ 修复:将
init()逻辑移入build()生命周期方法,使用Future.microtask()避免在 build 中直接修改状态,确保 Provider 创建时自动加载和订阅 - ✅
loadItems()重构为独立 try-catch,Feed API 和 ChatMessage 加载互不影响 - ✅ 清理
readlater_page.dart中已废弃的init()调用 - ✅
init()标记为@Deprecated
Issue 11: 收藏(Favorite)同步问题
- 🐛 根因:收藏操作完全缺少实时刷新机制。
toggleFavorite()执行后仅更新本地数据库和服务端,但没有通知FavoriteNotifier刷新。此外loadFavorites()仅从服务端API加载,不包含本地数据库中标记为isFavorite=true的句子。 - ✅ 修复:新增
favoriteRefreshStream全局事件总线(与 readlaterRefreshStream 模式一致) - ✅
FavoriteNotifier.build()中订阅刷新流 - ✅
HomeInteractionMixin.toggleFavorite()末尾调用notifyFavoriteRefresh() - ✅
loadFavorites()合并本地数据库收藏(loadLocalDbFavorites+mergeWithLocalDb) - ✅ 加载失败时回退到本地数据库收藏
- ✅
app.dart注册disposeFavoriteRefreshController()清理
代码质量
- ✅ 修复
favorite_repository.dart中s.createdAt?.多余的 null-aware 操作符警告 - ✅ 移除
FavoriteRepository中未使用的_ref字段
修改文件
lib/features/home/presentation/providers/readlater/readlater_provider.dartlib/features/home/presentation/providers/readlater_page.dartlib/features/home/providers/favorite_provider.dartlib/features/home/providers/home_interaction_mixin.dartlib/features/home/repositories/favorite_repository.dartlib/app/app.dart
[v6.9.18] - 2026-05-31
📦 了解我们页「其他产品」改为弹窗展示
功能变更
- ✅
learn_us_sections.dart:OfficialSiteSection 中「其他产品」从链接导航改为 CupertinoModalPopup 弹窗- 移除
LinkItemData(url: 'https://s2ss.com/products')链接项 - 新增独立 GestureDetector 行,带 chevron_right 图标,点击打开产品弹窗
- 弹窗包含两个产品卡片:情景诗词🌤️、小妈厨房🍳
- 产品卡片点击后通过
launchAboutUrl打开对应 URL - 新增
_ProductData和_ProductCard私有类
- 移除
i18n 新增翻译键
- ✅ TAbout 新增 4 个字段:
productPoetry、productPoetryDesc、productKitchen、productKitchenDesc - ✅ 14 种语言全部添加翻译:zh_cn / zh_tw / en / ja / ko / de / fr / es / it / pt / ru / ar / hi / bn
[v6.9.17] - 2026-05-31
🌍 语言选择页协同翻译描述改为动态翻译信息
i18n 新增翻译键
- ✅ TSettings 新增
lastTranslation(上次翻译)和translationVersion(版本)字段 - ✅ 14 种语言全部添加翻译:zh_cn / zh_tw / en / ja / ko / de / fr / es / it / pt / ru / ar / hi / bn
页面修改
- ✅
language_settings_page.dart:协同翻译卡片描述从"帮助完善更多语言翻译"改为动态文本- 新文本格式:
上次翻译:202606, 版本:v{AppVersion.version} - 版本号通过
AppVersion.version动态读取,不再硬编码 - 新增
app_constants.dart导入
- 新文本格式:
[v6.9.16] - 2026-05-31
🌍 主题个性化页面 i18n 国际化支持
新增 TTheme 翻译类型
- ✅ 新建
lib/l10n/types/t_theme.dart,定义 145 个翻译键(含 4 个补充键) - ✅ 在
T根类型中添加theme字段(t_root.dart) - ✅ 在
t.dart桶文件中导出TTheme - ✅
TTheme支持toMap()/fromMap()序列化与 fallback 机制
14 种语言翻译全部添加
- ✅ zh_cn(简体中文)、en(英语)、zh_tw(繁体中文)、ja(日语)
- ✅ ko(韩语)、de(德语)、it(意大利语)、es(西班牙语)
- ✅ fr(法语)、pt(葡萄牙语)、ru(俄语)、ar(阿拉伯语)
- ✅ hi(印地语)、bn(孟加拉语)
主题页面硬编码中文替换
- ✅
theme_settings_page.dart:页面标题'主题个性化'→t.theme.title - ✅
theme_sections_basic.dart:7 个区块标题 + 所有选项标签 + 对话框文本 + 字体预览文本- 新增 10 个 i18n 辅助函数(themeModeLabel, autoDarkModeLabel, accentColorName, fontSizeLabel, fontWeightLabel, fontStyleLabel, glassIntensityLabel, animationIntensityLabel, presetName)
- ✅
theme_sections_style.dart:6 个区块标题 + 所有选项标签 + 壁纸/渐变/纯色/权限/重置对话框- 新增 6 个 i18n 辅助函数(cornerRadiusLabel, cardStyleLabel, tabExpressionLabel, tabCharacterLabel, bubbleStyleLabel, wallpaperPresetName)
- ✅
theme_sections_preview.dart:预览区标题/文本 + 分享区按钮 + 导出/导入对话框 + 预览信息栏前缀- 导入 basic/style 文件以复用辅助函数
设计决策
- Provider 中的 const 数据类(AppThemeMode, AccentColorOption 等)保留硬编码 label,通过 UI 层辅助函数(switch-based ID→翻译映射)实现运行时国际化,避免破坏 const 构造函数
[v6.9.15] - 2026-05-31
🔧 灵感页下拉修复 & 发现页网络状态横幅
Issue 6: 禁用灵感页下拉打开工具中心
- ✅ 移除
inspiration_page.dart中下拉触发toolCenterProvider.openPanel()的逻辑 - ✅ 移除
_triggerThreshold、_isProcessing、_toolCenterSubscription等工具中心相关状态 - ✅ 移除
tool_center_provider.dartimport - ✅ 灵感页下拉现在仅触发刷新,不再打开工具中心面板
- ✅ 刷新阈值从 30px 调整为 60px,下拉体验更自然
Issue 6.1: 发现页添加网络状态横幅
- ✅ 新增
NetworkStatusBanner组件(offline_banner.dart),支持双状态检测:- 离线状态:显示"📡 网络未连接"(橙色)
- DNS异常:显示"⚠️ 网络异常,部分功能可能不可用"(黄色)
- ✅ 复用现有
connectivityProvider(离线检测)+connectivityCheckProvider(DNS检测) - ✅ 横幅可手动关闭(点击 ✕ 按钮)
- ✅ 网络恢复时自动隐藏并重置关闭状态
- ✅ iOS 风格,使用项目主题系统(AppSpacing/AppTypography)
- ✅ 保留原有
OfflineBanner和OfflineIndicator向后兼容 - ✅ 在
discover_page.dart搜索栏下方集成NetworkStatusBanner
[v6.9.14] - 2026-05-31
🍅 番茄钟页面全面修复与增强
3.0 设置面板动画修复
- ✅ 设置图标点击后使用
AnimatedSize包裹设置面板,实现平滑展开/收起动画(350ms cubic) - ✅ 设置图标添加
AnimatedRotation,展开时旋转90°,颜色变为主题色 - ✅ 移除旧的
if (_showSettings)条件渲染,改用SizedBox.shrink()+ AnimatedSize
3.1 计时器显示增强
- ✅ 圆环尺寸从 240→260,emoji 从 32→36,更醒目
- ✅ 运行时新增外圈脉冲光晕(
_GlowPainter+ MaskFilter.blur),呼吸式 fadeIn 动画 - ✅ 状态标签改为胶囊样式(phaseColor 半透明背景 + 圆角pill)
- ✅ 主按钮颜色跟随阶段色(专注=accent, 短休息=green, 长休息=blue)
- ✅ 运行时按钮阴影增强(blurRadius 24, spreadRadius 2)
- ✅ 播放/暂停图标使用
AnimatedSwitcher平滑切换
3.2 阶段选择器修复
- ✅ 移除
onTap: null禁用逻辑,改为始终可点击 - ✅ 空闲/完成状态:直接切换阶段
- ✅ 运行/暂停状态:弹出
CupertinoAlertDialog确认对话框 - ✅ 每个阶段使用对应颜色高亮(非统一 accent)
- ✅ 添加 margin 间距,非选中项添加 bgCard 边框
3.3 设置UI完善
- ✅ 新增「🔄 长休息间隔」滑块(2-8轮)
- ✅ 新增「☕ 自动开始休息」CupertinoSwitch 开关
- ✅ 新增「🎯 自动开始专注」CupertinoSwitch 开关
- ✅ 分隔线区分滑块区和开关区
- ✅ 统计区标题改为「今日统计」,右侧显示连续天数
- ✅ 新增
_formatFocusTime()智能格式化(<60分钟显示"X分钟",≥60显示"Xh Xm") - ✅ CupertinoSwitch
activeColor→activeTrackColor(适配 Flutter 3.24+)
[v6.9.13] - 2026-05-31
🔄 发现页今日诗词导航重定向至工具中心
1. 今日诗词点击行为变更
- ✅ 发现页「今日诗词」会话条目点击 → 原先导航至
/poetry独立页面 → 现改为打开工具中心面板 - ✅ 使用
ref.read(toolCenterProvider.notifier).openPanel()打开工具中心 - ✅ 工具中心内包含「古诗词」工具项(id:
poetry),用户可在面板中找到并使用
修改文件:
lib/features/discover/presentation/pages/home/discover_page.dart—_onSessionTap方法新增session.id == 'poetry'判断,调用_openToolCenter()并 return
[v6.9.12] - 2026-05-31
🌤️ 天气详情布局优化 — 左右对齐
1. 天气详情项布局改为左右对齐
- ✅
_buildWeatherDetailItem从 Column 垂直布局 → Row 水平布局(emoji+标签在左,数值在右) - ✅
_buildDetailGridItem从 Column 垂直布局 → Row 水平布局(emoji+标签在左,数值在右) - ✅ GridView
childAspectRatio从 2.2 → 3.5 适配水平布局高度
效果示例:
💧 湿度 65%
🌬️ 风向 东南风
💨 风力 3级
[v6.9.11] - 2026-05-31
🌐 发现页多语言架构优化 — 11项改进实施
1. TDiscover 拆分为子模块(单一职责)
- ✅
TDiscoverBase— 基础翻译(浏览/点赞/收藏/灵感等) - ✅
TChatFlow— 会话流翻译(分类/附件/隐藏会话等) - ✅
TChatSettings— 聊天设置翻译(外观/数据/同步/回收站/主题色等) - ✅
TToolCenter— 工具中心翻译(搜索/拖拽/收藏/置顶等) - ✅
TToolStats— 工具统计翻译(使用次数/评分/版本等) - ✅ TDiscover 保留 @Deprecated 向后兼容 getter
2. translation_io_service 自动序列化
- ✅
_importDiscover从 220 行手动字段映射 → 10 行toMap()/fromMap()自动序列化 - ✅ 新增翻译键不再需要手动维护
_importXxx方法
3. 时间格式化国际化(timeago)
- ✅ 添加
timeago: ^3.7.0依赖 - ✅
tool_stats_sheet.dart的_formatDate硬编码中文 →timeago.format()自动适配14种语言 - ✅ 支持 zh_CN/zh_TW/ja/ko/de/fr/es/it/pt/ru/ar/hi 语言
4. 高优先级语言翻译补全
- ✅ ja(日语):110个 TDiscover 键全部填入
- ✅ ko(韩语):110个 TDiscover 键全部填入
- ✅ zh_TW(繁体中文):110个 TDiscover 键全部填入
- ✅ ar(阿拉伯语):112个 TDiscover 键全部填入
5. ConsumerWidget 性能优化
- ✅ build 链路中
ref.read()→ref.watch()(17处,需响应语言切换) - ✅ 回调/一次性操作中保持
ref.read()(3处,避免不必要的重建)
6. 在线翻译API服务
- ✅ 新增
auto_translate_service.dart(Google Translate 免费API) - ✅ 支持批量翻译、速率限制、翻译缓存、进度回调
- ✅
autoTranslateProviderRiverpod 集成
7. 复数/性别规则(TFunc)
- ✅ 新增
plural()— 复数选择(CLDR标准) - ✅ 新增
gender()— 性别选择 - ✅ 新增
format()— 模板插值(替代.replaceAll('{0}', ...)) - ✅ 补全 ko/de/it 语言映射
- ✅ 迁移4处
.replaceAll→tFunc.format()
8. 工具搜索栏语音输入按钮修复
- ✅ 🎤 按钮从 prefix(左侧)移至 suffix(右侧),符合 iOS HIG
9. RTL布局确认
- ✅
app_locale.dart已有完整 RTL 支持(ar/he/fa/ur) - ✅
Directionalitywidget 包裹整个应用 - ✅ 阿拉伯语翻译补全后可验证 RTL 布局
10. ARB格式迁移方案(规划)
- 📋 长期建议:从手写翻译类型迁移到 Flutter 官方 ARB 代码生成方案
- 📋 当前架构已具备
toMap()/fromMap()序列化,为 ARB 迁移铺平道路
[v6.9.10] - 2026-05-31
🌐 新增 — 阿拉伯语(ar)翻译补全 + RTL布局确认
1. 阿拉伯语翻译补全 — TDiscover模块空字符串全部填入
- 🆕
TChatFlow:28个空字符串全部填入阿拉伯语翻译(会话流、分类、附件、隐藏会话等) - 🆕
TChatSettings:47个空字符串全部填入阿拉伯语翻译(外观、数据、同步、回收站、危险区域等) - 🆕
TToolCenter:30个空字符串全部填入阿拉伯语翻译(工具中心、搜索、拖拽移除等) - 🆕
TToolStats:7个空字符串全部填入阿拉伯语翻译(使用统计、趋势、版本等) - ✏️
TDiscoverBase:优化已有翻译,使其更准确自然(如 loginToSync、comingSoon、changeGroup 等)
2. RTL布局支持确认
- ✅
app_locale.dart已实现_rtlLanguageCodes(ar/he/fa/ur)+isRTL+textDirection - ✅
appTextDirectionProvider已实现系统语言RTL自动检测 - ✅
app.dart已使用Directionality(textDirection: textDirection)包裹整个应用 - ✅
supportedLocales包含ar,localizationsDelegates包含GlobalCupertinoLocalizations.delegate - 📝 Flutter RTL 自动生效,无需额外修改
[v6.9.9] - 2026-05-31
🌐 新增 — TFunc 复数/性别/模板插值通用方法
1. TFunc 增强 — 通用翻译函数
- 🆕
plural()— 通用复数选择,基于 CLDR 标准,支持 zero/one/two/few/many/other 全部复数类别 - 🆕
gender()— 性别选择,支持 male/female/other 三种性别形式 - 🆕
format()— 模板插值别名,语义更清晰(底层调用 interpolate) - 🆕
_locale映射补全:新增 ko(韩语)、de(德语)、it(意大利语) 支持 - 📝 用法示例:
tFunc.plural(count, one: '1 item', other: '$count items')tFunc.gender('male', male: '他', female: '她', other: 'TA')tFunc.format(t.discover.toolRemoved, {'0': tool.name})
2. 代码迁移 — replaceAll 统一为 tFunc.format
- ♻️
tool_panel_sections.dart:3处.replaceAll('{0}', ...)→translationsFuncProvider.format(..., {'0': ...}) - ♻️
readlater_page.dart:1处.replaceAll('{0}', ...)→translationsFuncProvider.format(..., {'0': ...}) - 📝
search_engine_service.dart中的replaceAll('{query}', ...)为URL模板,非i18n场景,保持不变
[v6.9.8] - 2026-05-31
🌐 新增 — 自动翻译服务 (AutoTranslateService)
1. AutoTranslateService — 在线翻译API自动补全空翻译字符串
- 🆕 新增
auto_translate_service.dart(lib/l10n/services/) - 🆕 使用 Google Translate 免费API(
translate.googleapis.com)翻译空字符串 - 🆕
translate()— 单文本翻译,支持缓存命中 - 🆕
fillEmptyTranslations()— 批量翻译空字符串,分批处理(每批10条),速率限制(500ms间隔) - 🆕
fillEmptyTranslationsBySection()— 按section分组翻译整个T对象 - 🆕
countEmpty()/countEmptyBySection()— 统计空翻译数量 - 🆕 翻译缓存机制(内存缓存,避免重复请求)
- 🆕
autoTranslateProvider— Riverpod Provider,自动释放HttpClient资源 - 📦 使用
dart:ioHttpClient(不依赖http包) - 📝 进度回调
onProgress支持UI展示翻译进度
[v6.9.7] - 2026-05-31
🐛 修复 — 工具搜索栏语音输入按钮不可见
1. 语音按钮位置修正(符合 iOS 规范)
- 🐛
tool_search_bar.dart:VoiceInputButton 从 prefix(左侧)移至 suffix(右侧) - 🆕 prefix 改为搜索图标
CupertinoIcons.search(左侧放大镜,符合 iOS 搜索栏规范) - 🆕 suffix 区域同时展示语音按钮 + 清除按钮(有文本时),布局更直观
- 📝 原因:语音输入按钮放在搜索栏左侧,用户无法找到,不符合 iOS HIG 搜索栏设计规范
[v6.9.6] - 2026-05-31
🚀 新增 — 主屏幕快捷操作 (Quick Actions)
1. QuickActionsService — 跨平台快捷操作服务
- 🆕 新增
quick_actions_service.dart(lib/core/services/device/) - 🆕 两个快捷操作:主题个性化 + 通用设置
- 🆕 iOS:通过
UIApplicationShortcutItems(Info.plist 配置) - 🆕 Android:通过
App Shortcuts(shortcuts.xml + AndroidManifest.xml 配置) - 🆕 鸿蒙:通过
module.json5 shortcuts+EntryAbility.etsMethodChannel 自行实现 - 🆕
QuickActionCallback回调机制,在app.dart中注册导航逻辑 - 🆕
handlePendingAction()在 App 恢复前台时处理待执行的快捷操作 - 📦 依赖:
quick_actions: ^1.1.0(pub.dev 官方版,支持 iOS + Android)
2. 平台配置变更
- 🆕 Android:
res/xml/shortcuts.xml(快捷操作定义) - 🆕 Android:
AndroidManifest.xml添加android.app.shortcutsmeta-data - 🆕 Android:
strings.xml添加快捷操作标签文本 - 🆕 iOS:
Info.plist添加UIApplicationShortcutItems数组 - 🆕 鸿蒙:
module.json5添加shortcuts配置(2个快捷操作) - 🆕 鸿蒙:
string.json添加快捷操作标签资源 - 🆕 鸿蒙:
EntryAbility.ets添加快捷操作 MethodChannel 通知
[v6.9.5] - 2026-05-31
📡 新增 — 网络连接状态检测 Provider
1. ConnectivityProvider — 网络状态监听与离线提示
- 🆕 新增
connectivity_provider.dart(lib/core/providers/) - 🆕
ConnectionType枚举:wifi / mobile / ethernet / vpn / none / other - 🆕
ConnectivityState数据类:isConnected + connectionType + copyWith - 🆕
ConnectivityNotifier:初始化检查 + 实时监听网络变化,自动更新状态 - 🆕
connectivityProvider:Riverpod NotifierProvider,全局可 watch - 📦 依赖:connectivity_plus(本地化鸿蒙适配版,已在 pubspec.yaml 中)
- 📝 日志:网络连接/断开时通过 Log.i/Log.w 输出追踪
[v6.9.5] - 2026-05-31
🐛 关键修复
1. connectivityProvider 全局接入
- ✅
app.dart中全局监听connectivityProvider - ✅ 网络断开时顶部显示
CupertinoBanner提示 - ✅ 提示文案:「网络已断开,部分功能可能不可用」
2. 小组件导航跨 Isolate 修复
- ✅
_pendingNavigationRoute静态变量改为KvStorage持久化存储 - ✅ 后台 Isolate 写入的路由在主 Isolate 中可见
- ✅
consumePendingNavigation()改为从 KvStorage 读取并清空
3. ScrollableChipList 深色模式优化
- ✅ 渐变遮罩从 2 层改为 3 层(透明→半透明→不透明)
- ✅ 遮罩宽度从 28px 增加到 40px
- ✅ 列表右侧 padding 从 24px 增加到 32px
- ✅ 确保深色/浅色模式下遮罩均清晰可见
🏗️ 架构改进
4. DefaultSettings 与 Freezed @Default 同步
- ✅
SplitViewState的@Default(false)改为@Default(DefaultSettings.splitViewEnabled) - ✅
build()中的 fallback 也引用DefaultSettings.splitViewEnabled - ✅ 消除 Freezed 注解与 DefaultSettings 的手动同步需求
5. 离线缓存策略联动
- ✅
ConnectivityState增加shouldUseCache(cacheStrategyId)方法 - ✅
ConnectivityState增加shouldFetchNetwork(cacheStrategyId)方法 - ✅ 支持 4 种策略:always / wifi_only / smart / never
- ✅ 增加
isWifi/isMobile便捷属性 - ✅ 使用方式:
connectivity.shouldUseCache(settings.cacheStrategyId)
[v6.9.4] - 2026-05-31
🔧 性能优化 — translationsProvider 响应式修正
1. ref.read → ref.watch 修正(build 链路中需响应语言切换)
- ✅
home_daily_card.dart—_buildCardContent中ref.read→ref.watch(build 链路调用) - ✅
home_sentence_card.dart—_buildSentenceText中ref.read→ref.watch(空内容占位符需响应语言切换) - ✅
home_sentence_card.dart—_buildActionRow中ref.read→ref.watch(作者前缀需响应语言切换) - ✅
tool_grid_item.dart— build 中 4 处ref.read→ref.watch(Semantics 标签/提示 + 新角标文本) - ✅
tool_panel_sections.dart— build 链路中 9 处ref.read→ref.watch(头部/收藏/搜索/垃圾桶区域文本和 Semantics) - ✅
tool_recent_section.dart—_RecentCard.build中ref.read→ref.watch(使用次数文本)
2. 保持 ref.read 的场景(回调/一次性操作,无需响应语言切换)
- ✅
home_sentence_card.dart—_shareAsImage/_shareAsText回调中保持ref.read - ✅
tool_panel_sections.dart—onAcceptWithDetails回调中保持ref.read - ✅
home_sentence_list_section.dart—onPressed回调中保持ref.read
[v6.9.4] - 2026-05-31
🏗️ 架构重构 — 默认值统一管理
1. DefaultSettings 常量类
- ✅ 新增
default_settings.dart,集中定义所有设置项默认值 - ✅ 消除 const 构造函数 / fromStorage fallback / resetAll 三处分散定义
- ✅ 未来修改默认值只需改一处
2. 所有 Provider 统一引用 DefaultSettings
- ✅
SoundSettingsState— 5 个字段 - ✅
PrivacySettingsState— 4 个字段 - ✅
DisplaySettingsState— 9 个字段 - ✅
NetworkSettingsState— 5 个字段 - ✅
PerformanceSettingsState— 5 个字段 - ✅
DeveloperSettingsState— 6 个字段 - ✅
GeneralFieldsState— 16 个字段 - ✅
ThemeSettingsState— 19 个字段(含 _loadFromStorage + resetAll) - ✅
OnboardingState— shakeEnabled / soundEnabled 引用 DefaultSettings - ✅
SplitViewState— @Default(false) 已确认正确
🎨 UI/UX 优化
3. ThemeOptionChip 统一迁移
- ✅ 移除
expand参数,简化组件 API - ✅ 所有
Row + ThemeOptionChip改为ScrollableChipList(水平滑动 + 渐变遮罩) - ✅ 新增
ScrollableChipList组件,右侧渐变遮罩提示可滑动 - ✅ 影响区块:外观模式/定时深色/字体大小/字体粗细/毛玻璃/动画/圆角/卡片样式
4. 主题预设与默认值一致
- ✅ 新增「墨黑」预设(id: ink),与 ThemeSettingsState 默认值完全一致
- ✅ 预设列表:墨黑 / 薰衣草 / 暖阳 / 薄荷 / 极夜 / 樱花
5. 开源许可体验优化
- ✅ 对话框展示 10 个主要开源库标签(Wrap 流式布局)
- ✅ 底部"以及更多开源依赖…"提示
- ✅ "查看完整许可"按钮跳转 Flutter 原生 License 页面
📡 功能增强
6. connectivity_plus 网络状态检测
- ✅ 新增
connectivity_provider.dart - ✅
ConnectivityState— isConnected + ConnectionType - ✅
ConnectivityNotifier— 初始化检查 + 持续监听网络变化 - ✅ 依赖已存在于 pubspec.yaml(鸿蒙适配版)
7. 桌面小部件交互修复
- ✅ 抽取
_widgetRouteMap静态常量映射表,消除路由映射重复 - ✅
registerInteractivityCallback()同时调用handleWidgetClick() - ✅
init()末尾自动注册交互回调 - ✅ 修复前台点击丢失和回调未注册问题
[v6.9.3] - 2026-05-31
🔧 UI/UX 修复与默认值调整
1. 语言选择 — 繁体中文国旗修正
- ✅ 繁体中文国旗由 🇹🇼 改为 🇨🇳(中国国旗)
2. 主题个性化 — 卡片样式/外观模式支持左右滑动
- ✅
ThemeModeSection外观模式选项改为水平滑动列表 - ✅
CardStyleSection卡片样式选项改为水平滑动列表 - ✅
ThemeOptionChip增加expand参数,支持在 ListView 中使用
3. 引导页 — 摇一摇/音效反馈默认关闭
- ✅
OnboardingState.shakeEnabled默认值 true → false - ✅
OnboardingState.soundEnabled默认值 true → false
4. 通用设置 — 多项功能默认关闭
- ✅ 声音
soundEnabled默认值 true → false - ✅ 音效反馈
sfxEnabled默认值 true → false - ✅ 分屏功能
splitViewEnabled默认值 true → false - ✅ 剪切板读取
clipboardReadEnabled默认值 true → false - ✅ 摇一摇换句
shakeToSwitch已为 false(确认)
5. 主题个性化 — 默认值调整
- ✅ 卡片样式默认值
standard→ios(闲言) - ✅ 强调色默认值
purple→noir(墨黑)
6. 编辑器 — 实验性功能文案与跳转
- ✅ 「实验性功能」→「实验中的功能」
- ✅ 对话框增加「查看实验功能」按钮,跳转实验中的功能页面
- ✅
pro_editor_page.dart和editor_bottom_toolbar_v2.dart同步修改
7. 桌面小部件 — 文案与跳转
- ✅ 「功能开发中」→「实验中的功能」
- ✅ 对话框增加「查看实验功能」按钮,跳转实验中的功能页面
8. 软件信息 — 开源许可增强
- ✅ 开源许可点击后先弹出自定义对话框
- ✅ 对话框底部增加「查看原始信息」按钮,跳转 Flutter 原生 License 页面
[v6.9.2] - 2026-05-31
🌍 发现页多语言支持 — 会话流 + 工具中心硬编码消除
1. TDiscover 新增 110 个翻译键
- 🆕 会话流:chatFlow/chatSettings/defaultConversation/searchMessages
- 🆕 分类:categoryAll/Hot/Love/Nature/Motivate/Literature/Movie + expandCategories/collapseCategories
- 🆕 附件:attachmentGallery/Camera/Video/Audio/File/Location/Link/RichText
- 🆕 隐藏会话:hiddenSessions/noHiddenSessions/swipeToHide/unhide/hidden
- 🆕 聊天设置:appearance/backgroundImage/themeColor/data/exportMessages/importMessages/sync等
- 🆕 主题色预设:defaultPurple/oceanBlue/mintGreen/warmOrange/roseRed/skyCyan/brownCoffee/silverGrey
- 🆕 回收站:recycleBin/viewDeletedMessages/recycleBinEmpty/restore/permanentDelete等
- 🆕 工具中心:toolCenter/discoverMoreHelpers/myFavorites/recentlyUsed/recommendedTools/searchTools等
- 🆕 工具交互:dragToRemove/releaseToRemove/cancelFavorite/pinToTop/newBadge等
- 🆕 工具统计:usageCount/lastUsed/never/rating/noRating/usageTrend/version
2. 会话流页面硬编码替换(5个文件)
- ✅
chat_flow_page.dart— 导航栏标题、previousPageTitle - ✅
chat_settings_page.dart— 40+处硬编码(外观/数据/分类/回收站/危险操作/主题色预设/导出导入等) - ✅
hidden_sessions_page.dart— 隐藏会话标题、空状态、取消隐藏、已隐藏 - ✅
chat_flow_top_bar.dart— 分类栏从const改为动态函数、搜索占位符、展开/收起 - ✅
chat_flow_input_bar.dart— 输入占位符、8个附件类型标签、快捷分类栏
3. 工具中心页面硬编码替换(8个文件)
- ✅
tool_panel.dart— Semantics标签 - ✅
tool_panel_sections.dart— 头部标题/副标题/工具计数/收藏区/搜索结果/垃圾桶区域 - ✅
tool_recent_section.dart— 最近使用/开始使用/查看全部/使用次数(StatelessWidget→ConsumerWidget) - ✅
tool_recommend_section.dart— 推荐工具/换一批(StatelessWidget→ConsumerWidget) - ✅
tool_bottom_bar.dart— 编辑布局/导入工具/敬请期待/设置 - ✅
tool_search_bar.dart— 搜索占位符/搜索历史/清空 - ✅
tool_grid_item.dart— 收藏/置顶/分享/新角标/无障碍标签(StatefulWidget→ConsumerStatefulWidget) - ✅
tool_stats_sheet.dart— 使用次数/最后使用/评分/使用趋势/版本(StatelessWidget→ConsumerWidget)
4. 全部14种语言翻译数据更新
- ✅ zh_CN / en 完整翻译,其他12种语言回退到zh_CN
5. translation_io_service.dart 同步更新
- ✅ _importDiscover 方法补充110个新键的导入逻辑
[v6.9.1] - 2026-05-31
🌍 首页多语言支持 — 消除硬编码中文字符串
1. THomeBase 新增 24 个翻译键
- 🆕
dailyRecommendation— 每日推荐 - 🆕
findingNewSentences— 正在为你寻找新句子... - 🆕
gettingTodayRecommendation— 正在获取今日推荐... - 🆕
createCard— 创作卡片 - 🆕
editThisSentence— 编辑此句 - 🆕
noSentences— 暂无句子 - 🆕
pullDownToRefresh— 下拉刷新试试 - 🆕
networkConnectionFailed— 网络连接失败 - 🆕
clickToRetry— 点击重试 - 🆕
sentenceCopied— 已复制句子 - 🆕
offlineMode— 离线模式 — 展示缓存数据 - 🆕
quoteSquare— 📖 句子广场 - 🆕
dragToSort— 📖 拖动排序 - 🆕
sortNewest/sortHot/sortClassic— 最新/热门/经典 - 🆕
noContent— 📋 暂无内容 - 🆕
recentlyOpened— 🕐 最近打开 - 🆕
selectCustomTool— 🔧 选择自定义工具 - 🆕
collapse— 收起 - 🆕
openAnyPageAutoRecord— 打开任意页面\n自动记录 - 🆕
longPressToSet— 长按设置 - 🆕
shareAppSignature— — 闲言APP - 🆕
shareFailed— 分享失败
2. TCommon 新增 4 个通用翻译键
- 🆕
done— 完成 - 🆕
all— 全部 - 🆕
refresh— 刷新 - 🆕
retry— 重试
3. 首页组件硬编码替换(8个文件)
- ✅
home_daily_card.dart— 每日推荐、加载提示、默认句子、作者前缀 - ✅
home_sentence_card.dart— 作者前缀、分享签名、分享失败、暂无内容 - ✅
home_square_header.dart— 句子广场、拖动排序、完成、全部、排序选项(改为ConsumerStatefulWidget) - ✅
home_tool_center.dart— 最近打开、选择工具、收起、自动记录、长按设置 - ✅
home_offline_banner.dart— 离线模式提示(改为ConsumerWidget) - ✅
home_empty_daily_card.dart— 每日推荐、重试、获取推荐提示(改为ConsumerWidget) - ✅
home_action_buttons.dart— 创作卡片、编辑此句(改为ConsumerWidget) - ✅
home_sentence_list_section.dart— 暂无句子、刷新、网络失败、重试、已复制(改为ConsumerStatefulWidget)
4. 全部14种语言翻译数据更新
- ✅ zh_CN / en / ja / zh_TW / ko / fr / de / es / it / pt / ru / ar / bn / hi
5. translation_io_service.dart 同步更新
- ✅ _importCommon 和 _importHome 方法补充新键的导入逻辑
[v6.9.0] - 2026-05-31
🛠️ 鸿蒙端页面导航全面修复 — 路由注册/空安全/参数补全/深度链接
1. context.push() → context.appPush() 统一导航
- 🐛
related_recommend_section.dart— 关联推荐点击文章详情无法打开(鸿蒙端GoRouter不可用) - 🐛
inspiration_category_grid.dart— 搜索入口按钮无法跳转搜索页 - 🐛
daily_read_card.dart— 今日一读推荐芯片点击文章详情无法打开 - 🐛
sharing_receiver_service.dart— 分享接收后导航到稍后读会话页失败(appRouter.push→ctx.appPush)
2. OhosNavBridge 缺失路由补全(10个路由)
- 🆕
/about/app-info→ AppInfoPage - 🆕
/about/learn-us→ LearnUsPage - 🆕
/data-collection-info→ DataCollectionInfoPage - 🆕
/settings/image-cache→ ImageCachePage - 🆕
/settings/experimental-features→ ExperimentalFeaturesPage - 🆕
/leisure→ LeisureTimelinePage - 🆕
/leisure/settings→ LeisureSettingsPage - 🆕
/tool/rss_reader→ RssReaderPage - 🆕
/tool/exchange_rate→ ExchangeRatePage - 🆕
/tool-center/settings→ ToolCenterSettingsPage
3. OhosNavBridge.go() 非Tab路由导航修复
- 🐛
go()方法原来只处理Tab切换(/home, /discover, /profile),非Tab路由被忽略 - ✅ 现在非Tab路由会通过
_resolveRoute解析并 push 到具体页面 - ✅ 深度链接和
context.appGo()对具体页面(如 /weather, /poetry)现在可正常导航
4. CalcToolPage/HanziToolPage 空安全修复
- 🐛
extra为 null 时as CalcToolConfig强制转换导致白屏/闪退 - ✅ 改为
as CalcToolConfig?+ null 检查,缺失时显示友好404页面
5. ToolListPage 参数补全
- 🐛 缺少
searchType、showSearch、detailDesc三个参数 - ✅ 与 GoRouter 版本对齐,补全所有参数
- ✅
extra为 null 时显示友好404页面而非崩溃
6. CategoryDetailPage icon 参数补全
- 🐛 鸿蒙端分类详情页缺少
icon和name参数 - ✅ 从
extraMap 中提取name和icon,与 GoRouter 版本对齐
7. NotFoundPage 返回首页按钮修复
- 🐛
context.go(AppRoutes.home)在鸿蒙端无效(依赖GoRouter) - ✅ 改为
context.appGo(AppRoutes.home),鸿蒙端可正常返回首页
8. appReplace 返回值修复
- 🐛 非鸿蒙端
pushReplacement返回值被忽略 - ✅ 修正为
Future<T?>.value()明确返回类型
[v6.8.9] - 2026-05-31
🚀 稍后读页面全面增强 — 搜索/筛选/排序/批量操作/已读/富详情/性能优化
1. 删除死代码
- 🗑️ 删除
readlater_repository.dart(与 ReadLaterNotifier 逻辑重复,无任何外部引用)
2. 模型增强
- 🆕
ReadLaterEntry增加isRead字段 +copyWith方法 - 🆕 新增
ReadLaterSortMode枚举(timeDesc/timeAsc/type/size)
3. Provider 增强
- 🆕
ReadLaterState增加searchQuery/filterType/sortBy/selectedIds字段 - 🆕
filteredEntriesgetter — 搜索+筛选+排序一体化计算 - 🆕
unreadCount/isSelectModegetter - 🆕 Notifier 新增方法:
setSearchQuery/setFilterType/setSortBy/toggleRead/markAllRead/toggleSelection/clearSelection/selectAll/removeSelectedEntries/markSelectedRead
4. 通用缩略图组件提取 + 性能优化
- 🆕
shared/widgets/media/thumbnail_image.dart— 通用ThumbnailImage组件 - ⚡ 网络图片使用
SafeCachedImage替代Image.network(缓存+降级) - ⚡ 本地文件用异步
File.exists()+_fileExistsCache缓存替代existsSync()阻塞 - ⚡ ChatFileService 路径解析结果缓存,避免列表滚动时重复 FutureBuilder
- 🗑️ 删除旧的
ImageThumbnailWidget,统一使用ThumbnailImage
5. 已读/未读标记 UI
- 🆕 未读条目左侧显示小蓝点(accent色圆点)
- 🆕 已读条目透明度降低至 0.55
- 🆕 导航栏标题旁显示未读数 badge
- 🆕 导航栏"全部标记已读"按钮 + 确认弹窗
6. 搜索栏 + 类型筛选 Chip + 排序
- 🆕
CupertinoSearchTextField搜索栏(实时搜索标题/副标题/文件名/链接) - 🆕 横向滚动类型筛选 Chip(全部/📖/🖼️/🎬/📄/🔗/📑/📝)
- 🆕 排序 CupertinoActionSheet(时间倒序/时间正序/按类型/按大小)
7. 批量操作模式
- 🆕 长按条目进入选择模式
- 🆕 选择模式导航栏:取消 + 已选数量 + 全选
- 🆕 选择模式条目显示勾选圈
- 🆕 底部批量操作栏:批量删除 + 批量标记已读
8. 富详情弹窗
- 🔄 Feed详情:BottomSheet + 完整内容 + 复制/分享/取消稍后读操作按钮
- 🔄 链接详情:BottomSheet + 标题+URL + 复制链接/浏览器打开/分享
- 🔄 通用详情:BottomSheet + emoji+类型标签+大小+mimeType标签 + 复制/分享/取消稍后读
- 🆕 链接打开使用
ExternalLinkDialog安全确认弹窗
9. 国际化
- 🆕
TReadLater新增23个翻译键(搜索/筛选/排序/批量/已读/操作等) - ✅ 14个语言文件全部更新(中/繁/日/韩/法/德/西/意/葡/俄/阿拉伯/印地/孟加拉/英)
- 🆕
THome新增向后兼容 getter
10. 其他
- 🔄
Share.share→SharePlus.instance.share(修复废弃API警告) - 🔄
CupertinoIcons.bookmark_slash→CupertinoIcons.bookmark(修复不存在的图标)
[v6.8.8] - 2026-05-31
🌍 国际化增强 — 统一插值函数 + authorPrefix/numberThousand翻译键
任务1: 统一插值函数 interpolate
- 🆕
TFunc新增interpolate(template, args)方法,统一处理{0},{1},{key}模板插值 - 🔄
readlater_page.dart—t.home.readLaterCountFormat.replaceAll('{0}', ...)→tFunc.interpolate(t.home.readLaterCountFormat, {'0': ...}) - 🔄
sentence_detail_sheet.dart—t.home.searchQuery.replaceAll('{0}', ...)→tFunc.interpolate(t.home.searchQuery, {'0': ...}) - 🆕 两个页面均通过
translationsFuncProvider获取TFunc实例
任务2: 中文破折号国际化 — authorPrefix 翻译键
- 🆕
THomeBase新增authorPrefix字段(中文/日文/韩文:'—— ',欧洲语言:'— ',英文:'') - 🔄
sentence_detail_sheet.dart—'—— ${sentence.author!}'→'${t.home.authorPrefix}${sentence.author!}' - ✅ 14个语言文件全部添加
authorPrefix值
任务3: 数字格式化 w/k 国际化 — numberThousand 翻译键
- 🆕
THomeBase新增numberThousand字段(多数语言:'k',阿拉伯:'ألف',孟加拉:'হাজার',印地:'हज़ार') - 🔄
sentence_detail_sheet.dart—'(count/1000)...k'→'(count/1000)...${t.home.numberThousand}' - ✅ 14个语言文件全部添加
numberThousand值
兼容性修复:
- 🏗️
THome新增向后兼容 getter(@Deprecated),委托到 base/sentenceDetail/readLater 子模块,确保旧代码t.home.liked等仍可编译 - 🏗️
translation_io_service.dart的_importHome方法重构为子模块结构,支持 base/sentenceDetail/readLater 分层导入
[v6.8.7] - 2026-05-31
🏗️ 稍后读页面重构 — 单文件拆分为多文件架构
重构内容:
- 🏗️
readlater_page.dart(1378行) 拆分为5个文件:readlater/readlater_entry.dart— 数据模型 (ReadLaterEntryType + ReadLaterEntry)readlater/readlater_provider.dart— 状态管理 (ReadLaterNotifier + ReadLaterState,Riverpod 3.0 Notifier)readlater/readlater_entry_widgets.dart— 7种条目UI组件 + 缩略图组件 + 分发函数readlater/readlater_utils.dart— 工具方法 (mimeTypeToEmoji, docTypeConfig, DocDisplayConfig)readlater_page.dart— 主页面 (精简至289行)
- 🔄 状态管理从 StatefulWidget+setState 升级为 Riverpod 3.0 Notifier
- 🔗
readlater_repository.dart重复的 ReadLaterEntry/ReadLaterEntryType 定义移除,改为引用统一模型 - ✅ 所有功能100%保留:7种条目类型、双数据源合并、离线缓存、滑动删除、下拉刷新、滚动加载、3种详情弹窗
- ✅ Flutter analyze 0 error
[v6.8.6] - 2026-05-31
🐛 关键Bug修复 — SearchType与后端API类型不匹配
问题: 前端 SearchType 枚举的 value 与后端PHP实际接受的 type 参数不一致,导致歌词和常识搜索API调用失败。
修复:
- 🐛
SearchType.lyric.value从'changshilyric'修正为'lyric'(后端 Hanzi.php searchMap 使用'lyric') - 🐛
SearchType.changshi.value从'changshi'修正为'cs'(后端 Searchall.php sourceMap 使用'cs') - ✅
_validateSearchTypes()后端支持列表与实际PHP代码完全对齐 - ✅ 新增5个单元测试:后端API一致性校验、旧值不再匹配验证、fromValue新值验证
- ✅ 测试总数 57 → 62,全部通过
后端对照(来源:PHP源码):
- Hanzi.php
$searchMap支持17种type: poetry/brainteaser/couplet/wisdom/story/saying/riddle/xiehouyu/zuowen/why/drug/food/herbal/pianfang/tisana/changshi/lyric - Searchall.php
$sourceMap支持44种type + 'all',前端使用的: cs/zgjm/illness/surname/jieqi/nation/joke
[v6.8.5] - 2026-05-31
🌍 首页/发现/我的页面多语言支持 — 硬编码中文全面迁移至翻译系统
核心变更:
- 🆕 新增
THome翻译类型(65个翻译键),覆盖首页句子详情Sheet、稍后读页面、电池提示等所有硬编码文本 - 🆕 扩展
TDiscover翻译类型(+12个翻译键),覆盖关联推荐、今日一读、灵感分类、朗读等 - 🆕 扩展
TProfile翻译类型(+6个翻译键),覆盖扫码方式、实验功能、审核状态等 - 🆕 扩展
TAbout翻译类型(+34个翻译键),覆盖关于页面分区标题、菜单项、评分对话框、检查更新等 - 🆕 更新
t_root.dart根类型,新增home模块 - 🆕 更新
translation_io_service.dart,新增_importHome方法和扩展导入方法
语言文件更新(14种语言全覆盖):
- zh_CN / en / ja / zh_TW / ko / de / it / es / fr / ru / pt / ar / bn / hi
页面硬编码替换:
- ✅
home_page.dart— 电池提示、默认句子(4处) - ✅
sentence_detail_sheet.dart— 点赞/收藏/稍后读/分享/书签/标签/搜索/NFC/编辑/屏蔽/搜索标题/数字单位(30处) - ✅
readlater_page.dart— 稍后读页面全部UI文本(31处),typeLabel getter改造为方法 - ✅
related_recommend_section.dart— 关联推荐标题、不感兴趣(3处) - ✅
daily_read_card.dart— 今日一读、换一组、关联推荐、空状态(4处) - ✅
inspiration_detail_sheet.dart— 灵感标签、朗读(4处) - ✅
inspiration_category_grid.dart— 灵感分类、搜索、加载更多(3处) - ✅
profile_page.dart— 扫码方式、实验功能、审核状态(6处) - ✅
about_page.dart— 基础信息/互动反馈/法律信息/开发者分区、评分对话框、检查更新、邮箱提示(38+处) - ✅
app_locale.dart— 繁体中文国旗 🇹🇼 → 🇨🇳
[v6.8.4] - 2026-05-31
🏗️ 架构增强与质量提升(6项)
1. 版本号统一管理 — 移除硬编码,运行时从pubspec获取:
- ✅
app_constants.dart— 移除AppConstants.version/buildNumber硬编码,AppVersion成为唯一版本号来源 - ✅
AppVersion回退值与 pubspec.yaml 同步(6.5.103 / 260510301) - ✅
main.dart— 新增AppVersion.init()调用,启动时从 PackageInfo 获取真实版本号 - ✅ 全局 10 处
AppConstants.version→AppVersion.version,2 处AppConstants.buildNumber→AppVersion.buildNumber
2. API搜索类型校验机制:
- ✅
search_type.dart— 新增SearchApiType枚举(hanziSearch/searchAll),每个 SearchType 绑定所属API - ✅ 新增
isSupportedBy()/forApi()/valuesForApi()工具方法 - ✅ 新增
validateAll()运行时校验,启动时自动检查前端类型与后端是否一致 - ✅
tool_center_provider.dart— build() 中调用_validateSearchTypes()启动校验
3. 灵感页面手势优化:
- ✅
inspiration_page.dart— 用ScrollController替代_lastScrollPixels差值法 - ✅ iOS 弹性滚动 scrollDelta 为 null 时,通过 ScrollController 差值精确计算下拉手势
4. Hive缓存增强:
- ✅
kv_storage.dart— 新增按工具ID隔离的搜索历史(getToolSearchHistory/setToolSearchHistory/addToolSearchHistory/clearToolSearchHistory) - ✅
kv_storage.dart— 新增工具排序偏好持久化(getToolSortOrder/setToolSortOrder) - ✅
tool_center_provider.dart— 新增saveToolSortOrder/recordToolSearch/getToolSearchHistory/clearToolSearchHistory方法 - ✅
tool_list_page.dart— 搜索提交时自动记录工具搜索历史 - ✅
_loadPersistedData中加载并应用工具排序偏好
5. App Links深度链接:
- ✅
tool_item.dart— 新增deepLink/universalLinkgetter,每个工具可生成分享链接 - ✅
app_router.dart—_resolveToolPath新增 37 个工具路由映射 - ✅
tool_list_page.dart— 分享功能使用深度链接(xianyan://tool/)
6. 补充单元测试(57个测试全部通过):
- ✅
test/features/discover/models/search_type_test.dart— 22个测试(枚举值/fromValue/isSupportedBy/forApi/valuesForApi/validateAll) - ✅
test/features/discover/models/tool_item_test.dart— 28个测试(构造/copyWith/recordUse/needsNetwork/deepLink/universalLink/defaultTools) - ✅
test/features/discover/services/tool_api_service_test.dart— 7个测试(SearchType与ToolItem一致性校验/API方法存在性)
[v6.8.3] - 2026-05-31
🔧 综合Bug修复与功能优化(13项)
0. 版本号引用重构:
- ✅ 全局将
AppConstants.version替换为AppVersion.version(8处) - ✅ 全局将
AppConstants.buildNumber替换为AppVersion.buildNumber(2处) - ✅ 涉及文件:about_page, general_settings_page, account_export_info_sheet, learn_us_sections, learn_us_page, app_info_sections, app_info_page, account_section, api_interceptor
1. 工具中心改名 + 按钮溢出修复:
- ✅
tool_item.dart— "游戏中心"改名为"文字迷" - ✅
tool_grid_item.dart— FittedBox包裹文字防溢出
2. 灵感页面下拉 + 返回自动打开工具中心:
- ✅
inspiration_page.dart— scrollDelta为null时使用回退值;initState中关闭已打开面板
3. 删除阅读历史 + 合并番茄钟倒计时:
- ✅
tool_item.dart— 删除history和countdown,合并为"专注计时"(pomodoro_timer)
4. 歌词大全搜索后点击结果卡死:
- ✅
tool_list_page.dart— 限制详情弹窗条目数(take 20)和文本长度(200字符截断)
5. 工具中心部分工具搜索报错:
- ✅
search_type.dart— lyric的value改为'changshilyric' - ✅
tool_item.dart— changshi从hanzi_search改为searchall接口
6. 导入工具按钮改次要色 + 敬请期待:
- ✅
tool_bottom_bar.dart— 按钮颜色改为textHint,点击显示toast"敬请期待"
7. 创作卡片内容未在编辑卡片显示:
- ✅
home_page.dart— 空字符串判断改为isNotEmpty检查 - ✅
quick_card_sheet.dart— initialText空值处理 - ✅
sentence_detail_sheet.dart— 新增"创作卡片"按钮
8. 精灵角色气泡背景透明:
- ✅
character_tip_bubble.dart— 背景改为bgCard高不透明度(0.95/0.88)+毛玻璃效果
9. 闲言工作室改名 + 版本号硬编码:
- ✅ 14种语言文件companyName统一改为'Micro storm studio'
- ✅
about_page.dart/general_settings_page.dart— 版本号改用AppConstants.version
10. 去评价改toast:
- ✅
about_page.dart— _onRateApp改为AppToast.showInfo('未找到应用商店')
11. 收集信息增加下载按钮:
- ✅
data_collection_info_page.dart— 新增"下载我的信息"按钮(仅登录显示),点击弹出导出Sheet
[v6.8.1] - 2026-05-31
🌍 首页/发现/我的页面多语言支持 — 硬编码中文全面迁移至翻译系统
核心变更:
- 🆕 新增
THome翻译类型(43个翻译键),覆盖首页句子详情Sheet、电池提示、默认句子等所有硬编码文本 - 🆕 扩展
TDiscover翻译类型(+12个翻译键),覆盖关联推荐、今日一读、灵感分类、朗读等 - 🆕 扩展
TProfile翻译类型(+6个翻译键),覆盖扫码方式、实验功能、审核状态等 - 🆕 扩展
TAbout翻译类型(+29个翻译键),覆盖关于页面分区标题、菜单项、评分对话框、邮箱提示等 - 🆕 更新
t_root.dart根类型,新增home模块 - 🆕 更新
translation_io_service.dart,新增_importHome方法和扩展导入方法
语言文件更新(14种语言全覆盖):
- zh_CN / en / ja / zh_TW / ko / de / it / es / fr / ru / pt / ar / bn / hi
页面硬编码替换:
- ✅
home_page.dart— 电池提示、默认句子(4处) - ✅
sentence_detail_sheet.dart— 点赞/收藏/稍后读/分享/书签/标签/搜索/NFC/编辑/屏蔽等(28处) - ✅
related_recommend_section.dart— 关联推荐标题、不感兴趣(3处) - ✅
daily_read_card.dart— 今日一读、换一组、关联推荐、空状态(4处) - ✅
inspiration_detail_sheet.dart— 灵感标签、朗读(4处) - ✅
inspiration_category_grid.dart— 灵感分类、搜索、加载更多(3处) - ✅
profile_page.dart— 扫码方式、实验功能、审核状态(6处) - ✅
about_page.dart— 基础信息/互动反馈/法律信息/开发者分区、评分对话框、邮箱提示(30+处) - ✅
app_locale.dart— 繁体中文国旗 🇹🇼 → 🇨🇳
[v6.8.0] - 2026-05-31
💡 灵感页面组件拆分与功能增强
1. 组件拆分 — inspiration_widgets.dart 1600行→7文件 ♻️:
inspiration_widgets.dart→ barrel导出文件(向后兼容)daily_read_card.dart— DailyReadCard + FeedItemChip(compact)inspiration_category_grid.dart— InspirationCategoryGridinspiration_category_pill.dart— InspirationCategoryPillinspiration_list_card.dart— InspirationListCardinspiration_detail_sheet.dart— InspirationDetailSheetrelated_recommend_section.dart— RelatedRecommendSection + FeedItemChip(normal)feed_item_chip.dart— 通用FeedItemChip组件(合并_DailyRecommendChip+_RecommendCard)
2. 代码重复消除 ♻️:
- 🆕
core/utils/data/number_formatter.dart— 提取NumberFormatter.formatCount(),消除3处重复_formatCount - ♻️
DailyReadCard._stripHtml()→StringX.cleanHtml扩展方法复用,移除重复HTML清洗逻辑
3. 组件合并 — FeedItemChip 🆕:
- 🆕
FeedItemChip通用推荐芯片组件,支持compact/normal两种尺寸模式 - 🆕
FeedItemChipMode枚举控制布局差异 - 🗑️ 移除
_DailyRecommendChip和_RecommendCard两个私有重复组件
4. 点击交互补全 🔧:
- ✅
DailyReadCard整体卡片添加PressableCard包裹,点击跳转文章详情页 - ✅ 关联推荐芯片添加
onTap跳转文章详情页 - ✅ 灵感分类搜索入口按钮,点击跳转搜索页面
5. 不感兴趣反馈 🆕:
- 🆕
RelatedRecommendSection推荐卡片长按弹出CupertinoActionSheet - 🆕 "不感兴趣"选项调用
FeedService.action('dislike'),成功后自动刷新推荐列表
6. TTS朗读功能 🆕:
- 🆕
InspirationDetailSheet增加"朗读"按钮,调用TtsService实现语音朗读 - 🆕 朗读状态实时同步(播放/停止切换),弹窗关闭自动停止朗读
- ♻️ 弹窗内容重构为
_DetailSheetContentStatefulWidget以管理TTS生命周期
7. 统一刷新入口 ♻️:
- ♻️
InspirationPage._refreshAll()统一刷新inspirationProvider+contentDiscoverProvider - ♻️ 导航栏刷新按钮和下拉刷新统一调用
_refreshAll,避免UI闪烁
[v6.7.9] - 2026-05-31
🌍 权限枚举 i18n 重构 — AppPermission/PermissionGroup/AppPermissionStatus 硬编码中文迁移至翻译系统
重构目标:
- 将
AppPermission枚举的label/description/usageScenes从硬编码中文改为通过翻译系统(i18n)获取 - 将
PermissionGroup枚举的label和AppPermissionStatus枚举的label同步迁移 - 新增
denialImpact(BuildContext context)方法替代原_getDenialImpact静态方法,使拒绝影响说明也走翻译系统 usageScenes使用管道符|分隔存储在翻译字符串中,运行时 split 为List<String>
核心变更:
permission_service.dart:- ♻️
AppPermissionStatus.label从字段改为String label(BuildContext context)方法 - ♻️
PermissionGroup.label从字段改为String label(BuildContext context)方法 - ♻️
AppPermission.label/description/usageScenes从字段改为方法(需 BuildContext) - 🆕 新增
AppPermission.denialImpact(BuildContext context)方法 - 🗑️ 移除
_getDenialImpact静态方法 - 🆕 新增
_permOf(BuildContext context)辅助函数,通过ProviderScope.containerOf获取翻译
- ♻️
t_settings_permission.dart:- 🆕 新增48个翻译字段(12权限 × 4字段:label/desc/usage/denial)
- 14种语言文件(zh_cn/zh_tw/en/ja/ko/de/fr/es/pt/it/ru/ar/hi/bn):
- 🆕 各新增48个权限翻译值
permission_management_page.dart:- ♻️ 所有
permission.label→permission.label(context) - ♻️ 所有
permission.description→permission.description(context) - ♻️ 所有
permission.usageScenes→permission.usageScenes(context) - ♻️
_buildTopRow/_buildDescription/_buildUsageScenes方法签名新增BuildContext context参数
- ♻️ 所有
agreement_page.dart:- ♻️
group.label→group.label(context) - ♻️
perm.label→perm.label(context) - ♻️
perm.description→perm.description(context)
- ♻️
[v6.7.8] - 2026-05-31
🔒 外部分享沙箱路径验证与修复
1. readlater_repository.dart metaFilePath 回退缺失 🔴高:
- 🐛 根因:
_chatMessageToEntry()中 Document/Image/Video/File 条目的filePath/imagePath/videoPath缺少metaFilePath回退 - 🐛 Document 类型
msg.text存储的是fileName而非文件路径,导致filePath回退到文件名而非实际沙箱路径 - ✅ 所有消息类型统一添加
metaFilePath = msg.meta?['filePath']回退链:att?.filePath ?? metaFilePath ?? msg.text
2. sharing_receiver_service.dart meta 字段补全 🔴高:
- 🐛 Image/Video 的 meta 中缺少
filePath和fileSize,与 Document/File 类型不一致 - ✅ Image meta 新增
filePath(沙箱相对路径)和fileSize - ✅ Video meta 新增
filePath和fileSize - ✅ Document meta 新增
fileSize - ✅ File meta 新增
fileSize
3. 音频类型处理 🟡中:
- 🐛
audio/*MIME 类型落入通用文件分支,未使用ChatMessageService.sendAudio() - ✅ 新增
mimeType.startsWith('audio/')分支,调用sendAudio()并存储filePath/fileSize/duration
4. text/ MIME 类型作为文档处理 🟡中:*
- ✅
text/plain等文本 MIME 类型从通用文件分支移至文档分支,与application/*统一处理
5. ChatFileService.getAbsolutePath 绝对路径防御 🔴高:
- 🐛 根因:若传入已是绝对路径(如旧数据中的 iOS Inbox 路径),会产生
/Documents//var/mobile/Inbox/file.jpg错误路径 - ✅ 新增
isRelativePath()判断(以chat_attachments/开头) - ✅
getAbsolutePath()对http//开头或非相对路径直接返回,避免错误拼接
6. readlater_page.dart 缩略图路径解析优化 🟢低:
- ♻️
_buildImageThumbnail中File(path).existsSync()仅对绝对路径(/开头)执行,避免对相对路径做无意义同步检查
修改文件:
lib/features/home/repositories/readlater_repository.dart— 补全 metaFilePath 回退lib/core/services/readlater/sharing_receiver_service.dart— 补全 meta 字段+音频类型+text/*处理lib/features/discover/services/chat_file_service.dart— getAbsolutePath 绝对路径防御+isRelativePathlib/features/home/presentation/providers/readlater_page.dart— 缩略图路径解析优化
[v6.7.8] - 2026-05-31
🌍 协议内容多语言支持 — 覆盖14种语言
重构目标:
- 将协议系统从仅支持中英文扩展为支持14种语言
- 日语(ja)、韩语(ko)、繁体中文(zh_tw)提供章节标题和关键段落翻译
- 其余9种语言(fr/de/es/pt/it/ru/ar/hi/bn)使用英文内容回退
修改文件:
lib/features/agreements/data/agreement_types.dart- 🆕 添加
_localizedTitles映射:14种语言的协议标题翻译 - 🆕 添加
_localizedSubtitles映射:ja/ko/zh_tw副标题翻译,其余回退英文 - ♻️ 重构
titleFor/subtitleFor:从二元判断改为Map查找,支持任意语言 - 🗑️ 移除
_subtitleZhgetter,整合进_localizedSubtitles
- 🆕 添加
lib/features/agreements/data/agreement_data.dart- ♻️
_isEnglish→_resolveLanguageCode:返回实际语言代码而非布尔值 - ♻️
getContent:switch表达式路由14种语言,_ => _getEnContent统一回退 - ♻️
getUpdateDate:支持ja/ko/zh_tw日期格式 - 🆕
_getJaContent/_getKoContent/_getZhTwContent:3种语言路由方法 - 🆕 30个协议内容常量(10种协议 × 3种语言),包含翻译的章节标题和关键段落
- ♻️
支持的语言(14种):
| 语言代码 | 语言 | 协议内容状态 |
|---|---|---|
| zh | 简体中文 | ✅ 完整 |
| en | English | ✅ 完整 |
| ja | 日本語 | 📝 章节标题+关键段落 |
| ko | 한국어 | 📝 章节标题+关键段落 |
| zh_tw | 繁體中文 | 📝 章节标题+关键段落 |
| fr | Français | 🔄 英文回退 |
| de | Deutsch | 🔄 英文回退 |
| es | Español | 🔄 英文回退 |
| pt | Português | 🔄 英文回退 |
| it | Italiano | 🔄 英文回退 |
| ru | Русский | 🔄 英文回退 |
| ar | العربية | 🔄 英文回退 |
| hi | हिन्दी | 🔄 英文回退 |
| bn | বাংলা | 🔄 英文回退 |
[v6.7.7] - 2026-05-31
♻️ 互动数据流重构 — 本地持久化与服务端同步解耦
重构目标:
- 将
HomeInteractionMixin中toggleLike/toggleFavorite/toggleReadLater三个方法的"本地持久化"和"服务端同步"逻辑解耦为独立方法 - 统一三者的执行流程为:乐观更新UI → 本地持久化 → 服务端同步
提取方法:
- ♻️
toggleLike→_persistLikeLocally+_syncLikeToServer - ♻️
toggleFavorite→_persistFavoriteLocally+_syncFavoriteToServer - ♻️
toggleReadLater→_persistReadLaterLocally+_syncReadLaterToServer
修改文件:
lib/features/home/providers/home_interaction_mixin.dart— 三个toggle方法解耦重构,提取6个私有方法
[v6.7.6] - 2026-05-31
💡 灵感页面 iOS 26 风格全面重写
1. 今日一读卡片视觉升级 🔴高:
- 🎨 头部区域新增渐变装饰背景,颜色随 FeedType 动态变化
- 🎨 图标容器尺寸 28→32,圆角 8→10,视觉更突出
- 🎨 "换一组"按钮使用 typeColor 着色,与卡片主题统一
- ♻️ 统计标签从 Row 改为 Wrap,防止窄屏溢出
- ♻️ 关联推荐从纵向列表改为横向滑动芯片,节省纵向空间
2. 灵感分类卡片左侧色条设计 🔴高:
- 🆕 InspirationListCard 新增左侧4px分类色条,颜色映射:热门=黄/爱情=粉/励志=绿/自然=青/文学=蓝/影视=紫
- 🆕 使用 IntrinsicHeight 确保色条与内容等高
- 🆕 GlassContainer padding=zero + 手动 Padding,色条不被内边距影响
- ♻️ 分类标签颜色从统一 accent 改为各分类独立色,增强视觉区分
3. 关联推荐横向滑动卡片 🔴高:
- 🆕 RelatedRecommendSection 从纵向列表改为横向滑动卡片
- 🆕 _RecommendCard 使用渐变背景 + typeColor 边框,固定宽度160
- 🆕 卡片内容:分类标签+标题+作者,紧凑布局
4. 代码质量修复:
- 🐛
minSizedeprecated →minimumSize: Size.zero - 🐛 移除 inspiration_page.dart 未使用的 import(app_radius/glass_container)
- 🐛
GlassDepth.base冗余参数移除 - 🐛 Text widget 添加 const 修饰
修改文件:
lib/features/discover/presentation/pages/home/inspiration_page.dart— 移除未使用importlib/features/discover/presentation/pages/home/inspiration_widgets.dart— 全面重写组件
[v6.7.5] - 2026-05-31
🌐 引导页多语言+协议强调色 & 导出个人信息真实数据
1. 导出个人信息 content/preferences 字段获取真实数据 🔴高:
- 🐛 根因:
AccountExportInfoSheet中content和preferences字段使用占位文字"内容数据需从服务端获取"/"偏好设置数据需从服务端获取" - ✅ 新增
_collectPreferences()方法:从本地 KvStorage 读取主题模式/字体大小/语言/推送/摇一摇等偏好设置 - ✅ 新增
_collectContentData()方法:从服务端 API 获取 dashboard/stats/interaction 数据,合并为 content 对象 - ✅ 异常保护:API 调用失败时返回
{'error': '...'}而非崩溃
2. 引导页权限/收集信息/协议多语言化 🔴高:
- 🆕 新增
TSettingsPermission翻译类型 — 31个翻译 key(权限管理页完整多语言化) - 🆕 新增
TSettingsDataCollection翻译类型 — 46个翻译 key(数据收集信息页完整多语言化) - 🆕
TSettings新增permission和dataCollection子类型 - 🆕 14种语言文件全部新增权限管理+数据收集翻译数据
- ♻️
PermissionManagementPage从硬编码中文改为perm.xxx翻译引用 - ♻️
DataCollectionInfoPage从 StatelessWidget 改为 ConsumerWidget,从硬编码中文改为dc.xxx翻译引用
3. 协议勾选文字《》书名号强调色+可点击 🔴高:
- ✅
_buildCheckboxRow使用正则RegExp(r'《([^》]+)》')解析《》标记 - ✅ RichText + TextSpan 渲染,《》内文字使用
ext.accent强调色 +FontWeight.w600 - ✅
TapGestureRecognizer点击《》内文字跳转到对应协议 Tab 页 - ✅
_onAgreementTap支持所有14种语言的协议名映射(隐私政策/用户协议/权限使用说明) - ✅ 14种语言文件的
agreeAllCheckbox和readPermissionCheckbox添加《》标记
新增文件:
lib/l10n/types/t_settings_permission.dart— 权限管理页翻译类型(31个key)lib/l10n/types/t_settings_data_collection.dart— 数据收集信息页翻译类型(46个key)
修改文件:
lib/features/mine/settings/presentation/account/account_export_info_sheet.dart— 真实数据替代占位文字lib/features/onboarding/presentation/pages/agreement_page.dart— 《》强调色+可点击+多语言协议名映射lib/features/mine/settings/presentation/privacy/permission_management_page.dart— 完整多语言化lib/features/mine/settings/presentation/privacy/data_collection_info_page.dart— 完整多语言化lib/l10n/types/t_settings.dart— 新增 permission/dataCollection 子类型lib/l10n/types/t.dart— 新增 exportlib/l10n/languages/*.dart— 14种语言新增翻译数据+《》标记
[v6.7.4] - 2026-05-31
📖 稍后读三项核心修复 — 分享文件显示/导航逻辑/句子数据流
1. 外部分享文件在稍后读页面显示占位图修复 🔴高:
- 🐛 根因:
SharingReceiverService._handleFile将外部临时文件路径直接存入数据库,App重启后文件不存在,稍后读页面无法加载显示占位图 - ✅ 图片分享:使用
ChatFileService.saveImage()复制到沙箱并生成缩略图,存储相对路径 - ✅ 视频分享:使用
ChatFileService.saveFile()复制到沙箱,缩略图也一并复制保存 - ✅ 文档分享:使用
ChatFileService.saveFile()复制到沙箱,meta['filePath']存储相对路径 - ✅ 文件分享:同上,
meta['filePath']存储相对路径 - ✅ 分享后调用
notifyReadlaterRefresh()触发稍后读页面刷新 - ✅
ReadLaterPage._chatMessageToEntry增加meta['filePath']回读逻辑,兼容沙箱相对路径
2. 分享后导航到会话流页面弹出"是否离开闲言" 🔴高:
- 🐛 根因:
SharingReceiverService._showConfirmDialog只在主页弹出简单确认框,未导航到会话流页面 - ✅ 新增
_navigateToReadLaterChat方法:分享成功后导航到稍后读会话流页面(/readlater-chat) - ✅ 弹出 CupertinoAlertDialog 包含"离开闲言"和"留下查看"两个选项
- ✅ 文本/链接分享也统一走导航逻辑
3. 句子详情稍后读在发现页不显示修复 🔴高:
- 🐛 根因1:
HomeInteractionMixin.toggleReadLater在feedId <= 0时提前返回,跳过了ChatMessageService.sendReadLaterSentence数据库写入 - 🐛 根因2:
SentenceDetailSheet/SentenceDetailPanel先调用interactionProvider.toggleInteraction再调用onReadLater,导致服务端API重复调用 - ✅
toggleReadLater将数据库写入移到feedId检查之前,确保无论 feedId 是否有效都写入本地数据库 - ✅
SentenceDetailSheet简化稍后读按钮逻辑:统一走onReadLater回调,由toggleReadLater统一处理服务端同步+本地写入 - ✅
SentenceDetailPanel同步简化稍后读逻辑
修改文件:
lib/core/services/readlater/sharing_receiver_service.dart— 文件复制到沙箱+导航到会话流+notifyReadlaterRefreshlib/features/home/providers/home_interaction_mixin.dart— toggleReadLater数据库写入移到feedId检查前lib/features/home/presentation/providers/sentence_detail_sheet.dart— 简化稍后读按钮逻辑lib/features/home/presentation/panels/sentence_detail_panel.dart— 同步简化稍后读逻辑lib/features/home/presentation/providers/readlater_page.dart— meta['filePath']回读兼容
[v6.7.3] - 2026-05-31
🛡️ 缓存管理空态修复 & 密保问题状态同步修复
1. 缓存管理存储空间显示0KB修复 🔴高:
- 🐛
StorageOverviewSection当缓存为空时显示"0 B",现改为友好的空态UI - ✅ 空态显示托盘图标 + 提示文案"浏览图片后缓存将自动出现在这里"
- ✅ 有缓存时正常显示统计项、进度条、容量信息
2. 密保问题设置后依旧显示"未验证"修复 🔴高:
- 🐛 根因:服务端
UserCenter接口将sec_question放在extra.sec_question.question_id嵌套路径,客户端UserModel.fromJson从顶层json['sec_question']解析,导致永远为0 - ✅
UserModel新增_parseSecQuestion()/_parseSecQuestionText()静态方法,兼容顶层和嵌套两种JSON路径 - ✅
SecurityQuestionPage._handleSubmit()中refreshUser()添加await,确保用户数据刷新完成后再返回页面 - ✅ 修复后密保设置成功 →
refreshUser()从服务端获取最新数据 →hasSecQuestion正确返回true→ 安全评分卡片/账户设置页密保状态正确显示"已设置"
修改文件:
lib/features/mine/settings/presentation/image_cache_widgets.dart— StorageOverviewSection空态UIlib/features/auth/models/user_model.dart— fromJson兼容sec_question嵌套路径解析lib/features/mine/settings/presentation/account/security_question_page.dart— refreshUser添加awaitlib/features/mine/settings/presentation/account/account_security_score_card.dart— 注释更新
[v6.7.2] - 2026-05-31
📱 关于页面修复与增强 — 布局溢出修复/备案迁移/贡献者鸣谢
1. 软件信息页技术栈布局溢出修复 🔴高:
- 🐛
TechStackSection用Wrap+LayoutBuilder替代GridView.count,修复小屏溢出 - ✅ 每个技术栈卡片宽度动态计算
(可用宽度 - 间距) / 2,自适应屏幕
2. 备案信息从了解我们迁移至软件信息页 🟡中:
- ♻️
IcpSection从learn_us_sections.dart迁移至app_info_sections.dart - ♻️
AppInfoFooter移除硬编码备案号(已由 IcpSection 完整展示) - ✅ 了解我们页面移除 IcpSection,替换为 ContributorsSection
3. 了解我们增加贡献者和特别鸣谢 🟡中:
- 🆕 新增
ContributorsSection— 贡献者入口 + 特别鸣谢入口 - 🆕 点击贡献者弹出 CupertinoModalPopup 底部 Sheet,展示贡献者列表
- 🆕 点击特别鸣谢弹出底部 Sheet,展示 Flutter Team / 开源社区 / QQ群 / 用户
- 🆕 新增
_ContributorCard私有组件 +ContributorData数据类
4. 多语言翻译新增 🌐:
- 🆕 14种语言新增12个翻译 key:contributors/contributorsDesc/specialThanks/specialThanksDesc/contributorRole1-4/thanksFlutter/thanksOpenSource/thanksQQGroup/thanksUsers
修改文件:
lib/features/mine/profile/presentation/app_info_sections.dart— TechStackSection用Wrap修复; 新增IcpSection; 新增Clipboard importlib/features/mine/profile/presentation/app_info_page.dart— 新增IcpSection; Footer移除硬编码备案号lib/features/mine/profile/presentation/learn_us_sections.dart— 移除IcpSection; 新增ContributorsSection/_ContributorCard/ContributorDatalib/features/mine/profile/presentation/learn_us_page.dart— IcpSection替换为ContributorsSectionlib/l10n/types/t_about.dart— 新增12个翻译字段lib/l10n/languages/*.dart— 14种语言新增12个翻译值
[v6.7.1] - 2026-05-31
🌐 引导页语言选择优化 & 语言设置页国旗显示
1. 引导页语言列表展开/收起 🔴高:
- 🆕
_buildLocaleChips默认只展示前4种语言,第5个位置显示"🌐 更多..."按钮 - 🆕 点击展开按钮显示全部12种语言,按钮变为"收起"+ 上箭头
- ♻️
WelcomePage从ConsumerWidget转为ConsumerStatefulWidget,_localeExpanded状态持久化 - 🆕 语言 chip 左侧显示国旗 emoji
2. 引导页语言列表增加繁体中文 🟡中:
- 🆕
OnboardingConstants.supportedLocales新增zh_tw(繁體中文 🇹🇼) - 🆕 每个语言条目增加
flag字段(国旗 emoji)
3. 语言设置页国旗显示 🟡中:
- 🆕
AppLocale枚举增加flag字段(国旗 emoji) - 🆕
language_settings_page.dart语言列表项左侧显示国旗图标 - 🌐 "跟随系统"显示 🌐 emoji,简体中文 🇨🇳,繁體中文 🇹🇼 等
修改文件:
lib/features/onboarding/data/onboarding_constants.dart— supportedLocales 增加 flag 字段 + 繁體中文lib/features/onboarding/presentation/pages/welcome_page.dart— ConsumerStatefulWidget + 展开/收起 + 国旗lib/l10n/app_locale.dart— AppLocale 枚举增加 flag 字段lib/features/mine/settings/presentation/language_settings_page.dart— 语言列表项显示国旗
[v6.7.0] - 2026-05-31
🏗️ 架构级重构:9项核心改进 — 异常保护/类型安全/工具修复/离线缓存
1. AppDatabase 统一异常保护 🔴高:
- 🛡️ 新增
_safeDb<T>/_safeDbList<T>/_safeDbVoid/_safeDbInt/_safeDbMap5个安全执行方法 - 🛡️ 80+ 个 public Future 方法全部包裹 try/catch,DB操作失败不再直接崩溃
- 🛡️ 统一返回默认值(null/空列表/0/空Map),Log.e 记录异常堆栈
2. Provider 初始化保护 🔴高:
- 🆕 新增
SafeNotifierInit/SafeAsyncInit/SafeChangeNotifierInit三个 Mixin - 🛡️ 15个 Provider 的
_init()方法统一使用safeNotifierInit()包裹 - 🛡️ 初始化失败不再导致整个功能不可用,异常被捕获并记录日志
3. 路由逻辑去重 🟡中:
- 🆕 新增
ToolNavigationHelper工具类,统一导航逻辑 - ♻️
tool_panel_navigator.dart和tool_detail_page.dart各删除 60+ 行重复代码 - ✅
navigateToTool()/isNavigable()/getStatusMessage()三个静态方法
4. 搜索类型枚举化 🟡中:
- 🆕 新增
SearchType枚举,24个值覆盖所有搜索类型 - 🔒
ToolNavConfig.searchType从String?改为SearchType?,编译期防拼写错误 - ✅
fromValue()反向查找 +label中文标签
5. 删除听歌识曲工具 🔴高:
- 🗑️ 删除
music_recognition_service.dart和music_recognition_page.dart - 🗑️ 删除
tool_routes.dart中音乐识别路由、app_routes.dart中路由常量、home_tool_center.dart中图标映射 - ❌ 原因:audd.io API 需付费 Token
6. RSS 启动初始化 🟡中:
- ✅
main.dart启动时调用RssService.init(),防止首次打开 RSS 页面 Hive 存储报错
7. 汇率离线缓存 🟢低:
- 💾
ExchangeRateService新增 Hive 离线缓存,网络不可用时使用缓存数据(7天有效期) - ✅
main.dart启动时调用ExchangeRateService.init() - 🔄 优先网络获取,失败回退缓存
8. RSS OPML 导入导出 ⭐:
- 📤
exportToOpml()— 生成标准 OPML XML,按分类分组 - 📥
importFromOpml()— 解析 OPML XML,正则提取 outline,自动去重 - 🔧
_xmlEscape()/_xmlUnescape()XML 转义处理
9. 修复不可用工具 🔴高:
- ✅
china_colors(中国传统色)— 状态从 maintenance 改为 available,使用本地 JSON 数据(9分类170色) - ✅
nick_gen(网名生成)— 状态从 maintenance 改为 available,新增本地NickGenService替代 404 远程 API - 🆕
NickGenService— 6种风格(古风/清新/霸气/可爱/文艺/搞笑),本地算法生成
新增文件:
lib/core/utils/safe_init_mixin.dart— Provider 初始化安全 Mixinlib/features/discover/presentation/widgets/tool/tool_navigation_helper.dart— 路由导航工具类lib/features/discover/models/search_type.dart— 搜索类型枚举lib/features/discover/services/nick_gen_service.dart— 本地网名生成服务
删除文件:
lib/features/discover/services/music_recognition_service.dart— 听歌识曲服务lib/features/discover/presentation/pages/tool/music_recognition_page.dart— 听歌识曲页面
修改文件(核心):
lib/core/storage/database/app_database.dart— 80+ 方法统一异常保护lib/features/discover/models/tool_item.dart— SearchType枚举化 + 删除音乐识别 + 修复工具状态lib/features/discover/presentation/pages/tool_detail_page.dart— 使用 ToolNavigationHelperlib/features/discover/presentation/widgets/tool/tool_panel_navigator.dart— 使用 ToolNavigationHelperlib/features/discover/services/exchange_rate_service.dart— Hive 离线缓存lib/features/discover/services/rss_service.dart— OPML 导入导出lib/features/discover/presentation/pages/tool/calc_tool_page.dart— nick_gen 使用本地服务lib/main.dart— 启动初始化 RssService + ExchangeRateServicelib/core/router/tool_routes.dart— 删除音乐识别路由lib/core/router/app_routes.dart— 删除 musicRecognition 常量lib/features/home/presentation/home_tool_center.dart— 删除音乐识别图标映射
修改文件(15个 Provider 应用 SafeNotifierInit):
- chat_provider / chat_session_provider / chat_conversation_provider / chat_attachment_provider
- content_discover_provider / search_provider / auth_provider / home_provider
- progress_provider / leisure_timeline_provider / font_management_notifier
- cloud_cache_provider / device_discovery_provider / live_activity_provider / transfer_notifier
[v6.6.172] - 2026-05-31
🎨 创作卡片Sheet功能完善 — 11项空壳功能全部实现
数据对接(真实数据替换硬编码占位):
- 📍 地点 — 集成
IpLocationService获取真实城市,替换'📍 未知' - 👤 用户名 — 集成
authProvider获取UserModel.displayName,替换'👤 匿名' - 🌤️ 天气 — 集成
WeatherInfoService获取天气数据,底部信息栏新增天气行 - 🔤 拼音 — 使用
PinyinHelper生成真实拼音注音,替换硬编码'pīn yīn' - 📱 二维码 — 使用
qr_flutter生成真实二维码,替换占位文字'QR'
交互功能对接(开关生效):
- 📳 震动 — 对接
HapticService,开关/按钮操作触发触觉反馈 - 🔆 常亮 — 对接
ScreenWakeService,开启时保持屏幕常亮,关闭时恢复 - 🔊 声音 — 对接
SfxService,切换/选择操作播放交互音效 - 🔊 朗读 — 对接
TtsService,开启时朗读卡片文字,关闭时停止 - ⏯️ 自动播放 — 实现
AnimationController打字机动画效果
设置联动:
- 🔗 初始化时读取
soundSettingsProvider同步震动/音效开关 - 🔗 初始化时读取
displaySettingsProvider同步常亮开关 - 🔗 Sheet关闭时自动恢复屏幕常亮状态、停止TTS朗读
修改文件:
lib/features/home/providers/quick_card_provider.dart— 新增 showWeather/locationText/usernameText/weatherText/autoPlayProgress 字段lib/features/home/presentation/widgets/quick_card_preview.dart— 集成真实拼音/地点/用户名/天气/二维码/自动播放动画lib/features/home/presentation/widgets/quick_card_sheet.dart— 集成 HapticService/ScreenWakeService/SfxService/TtsService/IpLocationService/authProvider/weatherInfoProvider/设置联动
[v6.6.171] - 2026-05-30
🔧 综合审计修复 + 新功能集成
架构优化(任务1+5):
- ♻️
tool_detail_page.dart— 删除_getHanziConfig+_getListExtra两个冗余方法(~200行),_navigateToTool完全由navConfig数据驱动,与tool_panel_navigator.dart逻辑统一 - ✅ 新增
_navigateByRoute兜底方法 + try/catch + AppToast 用户提示
全局异常处理(任务2):
- 🛡️
profile_page.dart—_refreshUserData()添加 try/catch - 🛡️
favorite_page.dart—_loadLocalStats()+_refresh()添加 try/catch - 🛡️
app_lock_settings_page.dart—_loadState()添加 try/catch +_isLoading = false - 🛡️
hot_search_page.dart—_loadData()添加 try/catch
API降级+工具状态管理(任务3+4):
- 🔧
tool_api_service.dart—hanziSearch/searchAll/unitConvert添加 try/catch +_handleHtmlResponse降级 - 🏷️
tool_item.dart—china_colors/nick_gen/danci标记为ToolStatus.maintenance
新功能(任务6-10):
- 🎵 听歌识曲 — 集成 audd.io API,支持录音识别/哼唱识别/歌词搜索三种模式
- 💱 汇率换算 — 集成 exchangerate-api.com,支持150+货币实时换算
- 📡 RSS订阅 — 集成 webfeed,支持RSS2.0/Atom格式,6个默认源+自定义添加
- 🍅 番茄钟增强 — flutter_local_notifications 完成通知 +
getTodayReport()统计报告 - 📊 阅读统计扩展 — 新增30天趋势/阅读时段环形图/Top5类型排行
迁移(任务12):
- ⏳ 倒计时从发现页迁移到工具中心管理分类
接口验证(任务11):
- 📝
test_tool_api.py— 新增汇率/音乐识别/RSS源可达性验证,全部通过
修改文件:
lib/features/discover/presentation/pages/tool_detail_page.dart— 路由映射统一lib/features/discover/services/tool_api_service.dart— API降级处理lib/features/discover/models/tool_item.dart— 工具状态+新入口lib/features/discover/services/music_recognition_service.dart— 新增lib/features/discover/presentation/pages/tool/music_recognition_page.dart— 新增lib/features/discover/services/rss_service.dart— 新增lib/features/discover/presentation/pages/tool/rss_reader_page.dart— 新增lib/features/pomodoro/providers/pomodoro_provider.dart— 通知增强lib/features/discover/presentation/pages/readlater_stats_page.dart— 图表扩展lib/features/discover/presentation/pages/home/discover_page.dart— RSS入口跳转lib/features/discover/providers/chat_session_provider.dart— 移除倒计时会话lib/features/mine/profile/presentation/profile_page.dart— 异常保护lib/features/home/presentation/favorite_page.dart— 异常保护lib/features/mine/settings/presentation/lock/app_lock_settings_page.dart— 异常保护lib/core/router/tool_routes.dart— 新路由lib/features/home/presentation/home_tool_center.dart— 图标映射Scripts/test_tool_api.py— 验证脚本更新
[v6.6.170] - 2026-05-30
✨ 新功能:RSS订阅阅读器 — 完整实现
核心功能:
- 📡 RSS订阅源管理 — 支持添加/删除/自动发现RSS/Atom订阅源
- 📂 分类筛选 — 7种分类标签(科技/效率/综合/技术社区/设计/财经/新闻),水平滚动筛选条
- 📰 文章列表 — 卡片式布局,标题+摘要+来源标签+作者+时间+缩略图
- 📖 文章详情 — 毛玻璃容器+元信息行+浏览器打开按钮
- ✅ 已读标记 — 点击文章自动标记已读,Hive持久化存储
- 🔄 下拉刷新 — Material风格RefreshIndicator
- 🗑️ 左滑删除 — Slidable组件,确认弹窗防误删
- ➕ 添加订阅弹窗 — URL输入+自动发现+推荐源快捷添加
- 🏷️ 分类标签 — 订阅源卡片显示分类标签,自动猜测分类
RSS服务增强 (rss_service.dart):
- 新增
RssCategory枚举 — 7种分类 - 新增
RssSubscription— 支持category/addedAt/iconUrl/序列化 - 新增
RssFeedItem— 支持content/sourceId/sourceTitle/isRead/uid - 新增
RssService.discoverFeed()— URL自动发现RSS源 - 新增
RssService.fetchAllFeeds()— 批量拉取所有源 - 新增 Hive持久化 —
addSubscription/removeSubscription/getSavedSubscriptions - 新增已读标记 —
markArticleRead/isArticleRead - 新增URL标准化和分类自动猜测
- 默认源增至6个 — 36氪/爱范儿/少数派/知乎日报/阮一峰/V2EX
修改文件:
lib/features/discover/services/rss_service.dart— 全面增强RSS服务lib/features/discover/presentation/pages/tool/rss_reader_page.dart— 完整重写RSS阅读器页面lib/features/discover/models/tool_item.dart— 发现分类新增RSS订阅工具入口lib/features/discover/presentation/pages/home/discover_page.dart— RSS入口从"即将推出"改为跳转RSS阅读器
工具配置:
- id:
rss_reader| emoji: 📡 | 分类: 发现 | 类型: 联网 | 推荐: ✅
[v6.6.169] - 2026-05-30
🔧 补全:最近打开面板图标映射 — 汇率换算/听歌识曲/RSS
缺失修复:
- 💱 汇率换算图标映射 —
home_tool_center.dartToolCenterIconMap 新增AppRoutes.exchangeRate→ 💱 汇率换算 - 🎵 听歌识曲图标映射 —
home_tool_center.dartToolCenterIconMap 新增AppRoutes.musicRecognition→ 🎵 听歌识曲 - 📡 RSS订阅图标映射 —
home_tool_center.dartToolCenterIconMap 新增AppRoutes.rssReader→ 📡 RSS
修改文件:
lib/features/home/presentation/home_tool_center.dart— ToolCenterIconMap._map 新增3条路由图标映射
[v6.6.168] - 2026-05-30
🎵 新功能:听歌识曲 — 集成audd.io API音乐识别
新增文件:
- 🆕
lib/features/discover/services/music_recognition_service.dart— 音乐识别服务,集成audd.io API - 🆕
lib/features/discover/presentation/pages/tool/music_recognition_page.dart— 听歌识曲页面
修改文件:
lib/core/router/app_routes.dart— 新增musicRecognition路由常量lib/core/router/tool_routes.dart— 新增音乐识别页GoRoute定义lib/features/discover/models/tool_item.dart— 趣味分类新增「听歌识曲」工具入口
🏷️ 软件特性功能 (v6.6.163及更早版本已完成的特性)
- 🏠 主页 — 每日拾句/句子广场/下拉刷新动画/精灵角色互动/摇一摇换句
- 🔍 发现 — 会话流AI聊天/稍后读/闲情逸致/灵感/日签卡片/壁纸模板/进度追踪/工具中心
- 👤 我的 — 个人中心/收藏/历史/设备管理/内容纠错/文件传输
- ⚙️ 设置 — 主题个性化/通用设置/权限管理/插件系统/实验性功能
- 🎨 设计系统 — 动态主题(亮/暗/AMOLED)/动态圆角/GlassContainer毛玻璃/统一设计令牌
- 🔒 隐私合规 — 协议同意后初始化权限/AndroidManifest自启动防护/外部跳转确认弹窗
- 📱 平台适配 — Android/iOS/鸿蒙/响应式布局/NFC文件传输
已归档版本 v6.6.167(汇率换算) / v6.6.166(异步方法异常保护) / v6.6.165(API降级+工具状态标记) / v6.6.164(倒计时迁移) / v6.6.163(工具中心修复+搜索映射) / v6.6.162(阅读历史loading修复) / v6.6.161(引导页多语言+ko/de/it) / v6.6.160(API降级+工具状态标记) / v6.6.159(倒计时迁移工具中心) / v6.6.158(工具中心修复+搜索映射) / v6.6.157(阅读历史异常保护) / v6.6.156(异步方法异常保护) / v6.6.155(API降级处理+维护标记) / v6.6.154(倒计时迁移) / v6.6.153(工具中心修复) / v6.6.152(阅读历史loading) / v6.6.151(引导页多语言) / v6.6.150(异常保护) / v6.6.149(番茄钟+统计+RSS) / v6.6.148(汇率换算) / v6.6.147(听歌识曲) / v6.6.146(番茄钟通知+统计+RSS) / v6.6.145(综合审计修复) / v6.6.144(RSS订阅阅读器) / v6.6.143(图标映射补全) / v6.6.142(番茄钟+统计+RSS) / v6.6.141(异常保护) / v6.6.140(API降级+工具状态) / v6.6.139(倒计时迁移) / v6.6.138(工具中心修复) / v6.6.137(阅读历史修复) / v6.6.136(引导页多语言) / v6.6.135(灵感暗色渐变) / v6.6.133(预测返回锁定+协议权限修复) / v6.6.132(隐私政策V6.6) / v6.5.131(FeatureFlag远程配置) / v6.5.130(稍后读句子修复) / v6.5.129(图片缓存管理) / v6.5.128(收藏不显示修复) / v6.5.127(纠错布局修复) / v6.5.126(闲情逸致热力图) / v6.5.125(外部跳转确认) / v6.5.124(稍后读图片修复) / v6.5.123(工具面板架构重构) / v6.5.122(导航配置数据驱动) / v6.5.121(引导页多语言) / v6.5.120(实验功能页面) / v6.5.45-v6.5.119(多项功能迭代) / 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