refactor: 完成项目架构重构,统一模块导入路径
- 清理大量废弃的 barrel 导出文件,移除冗余的中间导出层 - 修复所有相对路径导入错误,统一调整为扁平化模块引用 - 更新多平台 pubspec 版本号与依赖库版本 - 补充后端功能问题管理后台与脚本工具 - 调整部分页面的快捷方式文案适配新功能 - 更新部分翻译覆盖率与API文档
This commit is contained in:
713
CHANGELOG.md
713
CHANGELOG.md
@@ -4,6 +4,719 @@
|
||||
|
||||
***
|
||||
|
||||
## [v6.61.0] - 2026-06-12
|
||||
|
||||
### 🚩 Feature Flag 后台动态配置
|
||||
|
||||
#### 新增
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| tool_feature_flag 数据表 | 新增功能标志配置表,支持后台CRUD管理 |
|
||||
| 后台 FeatureFlag 管理模块 | admin/controller + model + lang,支持增删改查、安装、同步状态文本 |
|
||||
| API FeatureFlag 从数据库读取 | /api/feature_flag/list 和 /check 优先从数据库读取,数据库不可用时降级到硬编码(最多2条) |
|
||||
| status_text 动态标签字段 | 后端新增 status_text 字段,客户端直接使用后端返回的标签文本,不再硬编码"开发中/测试中/预览中/已发布" |
|
||||
| FeatureFlagItem.statusText | Flutter 模型新增 statusText 字段和 statusLabel getter |
|
||||
| install 接口 | /api/feature_flag/install 自动建表并插入默认数据 |
|
||||
| sync_status_text 接口 | 后台根据 status 自动同步 status_text 标签文本 |
|
||||
|
||||
#### 修改
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| FeatureFlag API 控制器 | 从硬编码改为数据库驱动,保留2条硬编码作为降级兜底 |
|
||||
| experimental_features_page.dart | _buildStatusTag 使用 flag.statusLabel 替代硬编码标签文本 |
|
||||
| feature_flag_service.dart | FeatureFlagItem 新增 statusText 字段,fromJson/toJson 同步更新 |
|
||||
|
||||
#### 修改文件
|
||||
|
||||
| 文件 | 变更 |
|
||||
|---|---|
|
||||
| `docs/toolsapi/application/api/controller/FeatureFlag.php` | 重构为数据库驱动 + 2条降级兜底 + install接口 |
|
||||
| `docs/toolsapi/application/admin/controller/FeatureFlag.php` | 新增后台管理控制器 |
|
||||
| `docs/toolsapi/application/admin/model/FeatureFlag.php` | 新增后台模型 |
|
||||
| `docs/toolsapi/application/admin/lang/zh-cn/feature_flag.php` | 新增后台语言包 |
|
||||
| `docs/toolsapi/docs/API_ADMIN_DOC.md` | 新增第32节功能标志管理文档 |
|
||||
| `docs/toolsapi/scripts/deploy_feature_flag.py` | 新增部署脚本 |
|
||||
| `docs/toolsapi/scripts/test_feature_flag_api.py` | 新增测试脚本 |
|
||||
| `docs/toolsapi/scripts/register_feature_flag_menu.py` | 新增菜单注册脚本 |
|
||||
| `lib/core/services/feature/feature_flag_service.dart` | 新增 statusText/statusLabel |
|
||||
| `lib/features/settings/presentation/experimental_features_page.dart` | 使用 flag.statusLabel |
|
||||
|
||||
***
|
||||
|
||||
## [v6.60.1] - 2026-06-12
|
||||
|
||||
### 🔔 通知统计对接 & 预览通知修复
|
||||
|
||||
#### 新增
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| NotificationCenter 推送计数器 | 每次调度通知时 incrementPushCount +1,持久化到 KvStorage |
|
||||
| NotificationCenter 点击计数器 | 通知被点击时 incrementClickCount +1,payload→type 映射 |
|
||||
| NotificationCenter.resetAllCounts | 重置所有计数器方法 |
|
||||
| notificationStatsProvider 对接 | 从 NotificationCenter 计数器实时读取数据 |
|
||||
|
||||
#### 修复
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| 预览通知 id 冲突 | 从固定 id=999 改为时间戳取模,避免与正式通知 id 冲突 |
|
||||
|
||||
#### 修改文件
|
||||
|
||||
| 文件 | 变更 |
|
||||
|---|---|
|
||||
| `core/services/notification/notification_center.dart` | 新增12个计数器存储键 + getter + incrementPushCount/incrementClickCount/resetAllCounts |
|
||||
| `core/services/notification/local_notification_service.dart` | _onNotificationTapped 中调用 _trackClickCount 递增点击计数 |
|
||||
| `features/settings/presentation/notification_settings_page.dart` | notificationStatsProvider 对接 NotificationCenter;预览 id 改为时间戳 |
|
||||
|
||||
***
|
||||
|
||||
## [v6.60.0] - 2026-06-12
|
||||
|
||||
### 🔔 通知设置增强 — 权限检测/时间选择器/预览/统计/核心开关拆分
|
||||
|
||||
#### 新增
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| anyCoreEnabled | NotificationSettingsState 新增 anyCoreEnabled getter(不含营销推送),通用设置页面使用此值判断推送通知开关状态 |
|
||||
| 通知权限检测 | 进入页面时检查系统通知权限,权限未开启时顶部显示红色警告卡片 + "前往设置"按钮 |
|
||||
| 长按预览通知 | 每个通知项长按触发 LocalNotificationService.showInstant 展示示例通知 |
|
||||
| 通知统计卡片 | 页面底部新增统计卡片,展示推送次数/点击次数/CTR(预留后端接口对接) |
|
||||
| NotificationStatsState | 通知统计状态类,含各类型推送/点击计数和点击率计算 |
|
||||
|
||||
#### 修复
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| CupertinoTimerPicker → CupertinoDatePicker | 时间选择器从计时器模式改为原生时间选择器,更符合 iOS 体验 |
|
||||
| minimumSize 弃用修复 | CupertinoButton 的 minSize 改为 minimumSize: Size.zero |
|
||||
|
||||
#### 变更
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| notificationEnabledProvider | 改用 anyCoreEnabled 判断,营销推送不影响通用设置页面的推送通知开关状态 |
|
||||
| _buildToggleRow | 新增 onLongPress 可选参数,支持长按预览 |
|
||||
| 多语言新增8键 | permissionDenied/permissionDeniedContent/goToSettings/previewNotification/notificationStats/pushCount/clickCount/noStats |
|
||||
|
||||
#### 修改文件
|
||||
|
||||
| 文件 | 变更 |
|
||||
|---|---|
|
||||
| `features/settings/providers/notification_settings_provider.dart` | 新增 anyCoreEnabled getter |
|
||||
| `features/settings/providers/general_settings_provider.dart` | notificationEnabledProvider 使用 anyCoreEnabled |
|
||||
| `features/settings/presentation/notification_settings_page.dart` | 权限检测/CupertinoDatePicker/长按预览/统计卡片 |
|
||||
| `l10n/types/t_settings_notification.dart` | 新增8个翻译键 |
|
||||
| `l10n/languages/zh_cn.dart` ~ `bn.dart` | 14种语言新增8个翻译键 |
|
||||
|
||||
***
|
||||
|
||||
## [v6.59.0] - 2026-06-12
|
||||
|
||||
### 🔔 通知设置页面重构 — 多语言/动态主题/重复图标修复/营销推送
|
||||
|
||||
#### 新增
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| TSettingsNotification | 通知设置页面多语言翻译类型,覆盖30+翻译键 |
|
||||
| notification_settings_provider.dart | 从页面文件提取Provider到独立文件,避免循环依赖 |
|
||||
| NotificationSettingsState.anyEnabled | 状态类新增anyEnabled getter,统一判断是否有通知开启 |
|
||||
| 营销推送开关 | 新增"接收App营销信息"开关(默认关闭),前台接收闲言团队营销推送 |
|
||||
| NotificationCenter营销推送 | 新增isMarketingPushEnabled/setMarketingPushEnabled存储 |
|
||||
|
||||
#### 修复
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| 推送通知状态实时显示 | notificationEnabledProvider现在watch notificationSettingsProvider,通知设置页面的开关变更实时反映到通用设置页面 |
|
||||
| 通知设置页面重复图标 | _buildToggleRow移除emoji参数,标题不再拼接emoji,只保留左侧Icon图标 |
|
||||
| poetry_settings_page重复图标 | _buildSwitchRow移除emoji参数,修复4处调用 |
|
||||
| weather_settings_page重复图标 | _buildSwitchRow和_buildSegmentedRow移除emoji参数,修复5处调用 |
|
||||
| 通知设置页面导航栏 | 移除导航栏标题旁多余的bell图标,保持简洁 |
|
||||
|
||||
#### 变更
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| "推送通知管理"→"管理个性化推送" | 通知设置页面头部标题更名 |
|
||||
| 通知设置页面多语言 | 所有硬编码中文替换为i18n翻译调用,支持14种语言 |
|
||||
| 通知设置页面动态主题 | 所有颜色/样式使用AppThemeExtension,支持深浅色切换 |
|
||||
| 时间选择器多语言 | 取消/确定按钮使用t.common.cancel/confirm |
|
||||
| 提示卡片图标 | 💡emoji替换为CupertinoIcons.lightbulb_fill,跟随主题色 |
|
||||
|
||||
#### 修改文件
|
||||
|
||||
| 文件 | 变更 |
|
||||
|---|---|
|
||||
| `l10n/types/t_settings_notification.dart` | 新建,通知设置翻译类型 |
|
||||
| `features/settings/providers/notification_settings_provider.dart` | 新建,提取Provider+State+Notifier |
|
||||
| `features/settings/presentation/notification_settings_page.dart` | 重构:多语言/动态主题/移除emoji/新增营销推送 |
|
||||
| `features/settings/providers/general_settings_provider.dart` | notificationEnabledProvider改为watch notificationSettingsProvider |
|
||||
| `core/services/notification/notification_center.dart` | 新增营销推送存储键和getter/setter |
|
||||
| `l10n/types/t_settings.dart` | 新增notificationSettings子类型 |
|
||||
| `l10n/types/t.dart` | 导出t_settings_notification.dart |
|
||||
| `l10n/languages/zh_cn.dart` | 新增notificationSettings翻译 |
|
||||
| `l10n/languages/en.dart` | 新增notificationSettings翻译 |
|
||||
| `l10n/languages/zh_tw.dart` | 新增notificationSettings翻译 |
|
||||
| `l10n/languages/ja.dart` ~ `bn.dart` | 11种语言新增notificationSettings翻译 |
|
||||
| `features/poetry/presentation/poetry_settings_page.dart` | 移除emoji参数,修复重复图标 |
|
||||
| `features/weather/presentation/weather_settings_page.dart` | 移除emoji参数,修复重复图标 |
|
||||
|
||||
***
|
||||
|
||||
## [v6.58.0] - 2026-06-12
|
||||
|
||||
### 🔧 图标系统完善 — 设置UI/小尺寸优化/全局注入
|
||||
|
||||
#### 新增
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| IconModeSection | 主题设置页面新增"图标风格"选择器(混合/仅系统/仅SVG),带描述文字 |
|
||||
| AppIconModeScope | InheritedWidget全局注入图标模式,App顶层包裹,无需每个AppIcon手动传iconMode |
|
||||
| WeatherIcon小尺寸回退 | size < 16 自动回退CupertinoIcons,避免CustomPainter细节丢失 |
|
||||
|
||||
#### 变更
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| AppIconMode枚举合并 | 从general_settings_provider迁移至app_icon.dart,统一为单一来源,新增label/id/fromId |
|
||||
| app.dart | 顶层包裹AppIconModeScope,从generalSettings.iconMode读取 |
|
||||
| weather_icon.dart | 移除material.dart冗余import,小尺寸分支使用CupertinoIcons |
|
||||
|
||||
#### 修改文件
|
||||
|
||||
| 文件 | 变更 |
|
||||
|---|---|
|
||||
| `shared/widgets/display/app_icon.dart` | AppIconMode新增label/id/fromId字段,新增AppIconModeScope InheritedWidget |
|
||||
| `shared/widgets/display/weather_icon.dart` | 新增_fallbackIcon方法,build中size<16回退CupertinoIcons |
|
||||
| `features/settings/providers/general_settings_provider.dart` | 移除重复AppIconMode枚举,改为import app_icon.dart |
|
||||
| `features/settings/providers/sub/display_settings_provider.dart` | 新增import app_icon.dart |
|
||||
| `features/settings/presentation/theme/theme_sections_basic.dart` | 新增IconModeSection组件 |
|
||||
| `features/settings/presentation/theme/theme_settings_page.dart` | 添加IconModeSection到主题设置列表 |
|
||||
| `app/app.dart` | 顶层包裹AppIconModeScope,import app_icon.dart |
|
||||
|
||||
***
|
||||
|
||||
## [v6.57.0] - 2026-06-12
|
||||
|
||||
### 🎨 图标系统增强 — 动画/语义/深浅色变体/天气自绘/图标模式
|
||||
|
||||
#### 新增
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| AppIcon动画支持 | 新增animate/animationType/animationDuration/animationDelay参数,支持scaleIn/fadeIn/rotateIn/bounceIn/slideUp 5种入场动画(基于flutter_animate) |
|
||||
| AppIconStyle语义扩展 | 新增success/warning/error/info 4种语义样式,映射到ext.successColor/warningColor/errorColor/infoColor |
|
||||
| AppIcon无障碍增强 | 新增semanticLabel参数,Semantics包裹支持VoiceOver/TalkBack |
|
||||
| AppIcon深浅色变体 | 新增cupertinoIconDark参数,深色模式自动切换图标变体(如线框→填充) |
|
||||
| AppIconMode图标模式 | 新增AppIconMode枚举(mixed/cupertinoOnly/svgOnly),支持图标源优先级切换 |
|
||||
| WeatherIcon天气自绘 | CustomPainter自绘7种天气图标(sunny/cloudy/rainy/thunder/snowy/foggy/windy),支持动画效果(光线旋转/雨滴下落/雪花飘落/闪电闪烁等) |
|
||||
| 图标模式设置 | DisplaySettingsState新增iconModeId字段,支持用户在设置中切换图标渲染模式 |
|
||||
| ShareTarget.iconData | ShareTarget类新增iconData字段,11个默认分享目标全部映射CupertinoIcons |
|
||||
|
||||
#### 变更
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| weather_page.dart | 天气emoji替换为WeatherIcon自绘组件,支持动画和主题色适配 |
|
||||
| overview_dashboard.dart | AppIcon添加入场动画(scaleIn/bounceIn)和语义标签 |
|
||||
| home_sentence_card.dart | AppIcon添加语义标签(点赞数/收藏数/评论数/浏览量) |
|
||||
| share_sheet.dart | 使用ShareTarget.iconData替代手动映射,AppIcon添加语义标签 |
|
||||
| translate_page.dart | 空状态图标添加bounceIn动画,AppIcon添加语义标签 |
|
||||
| share_target.dart | load()方法从defaults匹配恢复iconData |
|
||||
|
||||
#### 修改文件
|
||||
|
||||
| 文件 | 变更 |
|
||||
|---|---|
|
||||
| `shared/widgets/display/app_icon.dart` | 重写:新增6个参数(animate/animationType/animationDuration/animationDelay/semanticLabel/cupertinoIconDark/iconMode),AppIconStyle新增4种语义样式 |
|
||||
| `shared/widgets/display/weather_icon.dart` | 新建:7种天气CustomPainter + 动画 + 主题色适配 |
|
||||
| `features/share/share_target.dart` | 新增iconData字段,defaults全部映射CupertinoIcons |
|
||||
| `features/settings/providers/general_settings_provider.dart` | 新增AppIconMode枚举和setIconMode setter |
|
||||
| `features/settings/providers/sub/display_settings_provider.dart` | 新增iconModeId字段和getter/setter |
|
||||
| `core/constants/default_settings.dart` | 新增iconModeId默认值 |
|
||||
|
||||
***
|
||||
|
||||
## [v6.56.0] - 2026-06-12
|
||||
|
||||
### 🎨 Emoji图标替换为CupertinoIcons,支持动态主题
|
||||
|
||||
#### 变更
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| weather_page.dart | UI操作emoji(💧🌬️💨🤍📤📖😔)替换为CupertinoIcons(drop/compass/wind/heart/share/book/exclamationmark_triangle),天气类型emoji保留 |
|
||||
| home_sentence_card.dart | 统计emoji(👁👍⭐💬)替换为AppIcon+CupertinoIcons(eye/hand_thumbsup/star/chat_bubble),内容分类emoji保留 |
|
||||
| overview_dashboard.dart | 全部UI emoji替换为CupertinoIcons(search/star/book/clock/checkmark_seal/chart_bar/cloud_sun/settings/bolt/flame等),问候语emoji替换为sun_max/cloud_sun/sunset/moon/moon_stars |
|
||||
| share_sheet.dart | ShareScene枚举新增iconData字段,UI emoji(🔗✏️🗒️📝📋)替换为AppIcon+CupertinoIcons,Toast消息emoji保留 |
|
||||
| translate_page.dart | UI emoji(🌐📋⚙️🔊❌🔄🔍)替换为AppIcon+CupertinoIcons(globe/clock/settings/speaker_2/xmark_circle/refresh/search),国旗emoji保留 |
|
||||
|
||||
#### 技术要点
|
||||
|
||||
| 要点 | 说明 |
|
||||
|---|---|
|
||||
| AppIcon组件 | 统一使用AppIcon组件,3级降级策略 CupertinoIcon→SVG→Emoji |
|
||||
| 动态主题 | 通过AppIconStyle(primary/secondary/disabled/accent)自动适配主题色 |
|
||||
| 保留策略 | 天气类型emoji、国旗emoji、内容分类emoji、Toast消息emoji保留原样 |
|
||||
|
||||
***
|
||||
|
||||
## [v6.55.0] - 2026-06-12
|
||||
|
||||
### 📡 RSS阅读器功能增强
|
||||
|
||||
#### 新增
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| OPML导入导出 | 订阅源首页更多菜单支持📤导出OPML(分享文件)和📥导入OPML(选择文件) |
|
||||
| 文章搜索 | 文章列表页顶部搜索栏,支持搜索标题/内容/作者,实时过滤 |
|
||||
| 阅读进度同步 | 文章详情滚动位置自动保存,再次打开恢复到上次阅读位置 |
|
||||
| 卡片式阅读模式 | 文章列表可切换为卡片滑动模式(flutter_card_swiper),左右滑切换文章 |
|
||||
| 阅读进度条 | 文章卡片底部显示阅读进度指示条 |
|
||||
|
||||
#### 变更
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| RssState扩展 | 新增searchQuery/searchResults/isSearching/readingProgress/isCardMode字段 |
|
||||
| RssNotifier扩展 | 新增searchArticles/clearSearch/saveReadingProgress/toggleCardMode/exportOpml/importOpml方法 |
|
||||
| RssService扩展 | 新增阅读进度持久化(saveReadingProgress/getReadingProgress/getAllReadingProgress) |
|
||||
| rss_widgets扩展 | 新增RssCardModeView/RssSearchBar/RssSearchResultsList组件 |
|
||||
|
||||
***
|
||||
|
||||
## [v6.54.0] - 2026-06-12
|
||||
|
||||
### 💝 收藏过期提醒功能
|
||||
|
||||
#### 新增
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| FavoriteReminderService | 新增收藏过期提醒服务,定期检查长期未访问的收藏,发送本地通知 |
|
||||
| 过期提醒横幅 | 收藏页面顶部新增可关闭的提醒横幅,显示过期收藏数量 |
|
||||
| 提醒设置弹窗 | 支持启用/禁用提醒、设置提醒天数(7/14/30/60/90天) |
|
||||
| 多语言支持 | 新增7个翻译键(expiredReminder/expiredReminderMessage/viewExpired/reminderSettings/reminderEnabled/reminderDays),覆盖14种语言 |
|
||||
|
||||
#### 修改文件
|
||||
|
||||
| 文件 | 变更 |
|
||||
|---|---|
|
||||
| `core/services/notification/favorite_reminder_service.dart` | 新建:收藏过期提醒服务 |
|
||||
| `l10n/types/t_favorites.dart` | 新增7个翻译字段定义 |
|
||||
| `l10n/languages/*.dart` | 14个语言文件新增翻译 |
|
||||
| `features/home/presentation/favorite/favorite_ui_views_mixin.dart` | 新增 `buildExpiredReminderBanner` 方法 |
|
||||
| `features/home/presentation/favorite/favorite_dialogs_mixin.dart` | 新增 `showReminderSettings` 方法 |
|
||||
| `features/home/presentation/favorite/favorite_state_accessor.dart` | 新增 `showReminderSettings` 抽象方法 |
|
||||
| `features/home/presentation/favorite/favorite_page.dart` | 集成过期检查和提醒横幅 |
|
||||
|
||||
***
|
||||
|
||||
## [v6.53.0] - 2026-06-12
|
||||
|
||||
### 🔍 个人中心收藏搜索
|
||||
|
||||
#### 新增
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| 收藏搜索页面 | 新增 `FavoriteSearchPage`,从个人中心导航栏搜索图标进入,支持搜索收藏内容、标签、分组 |
|
||||
| 最近搜索持久化 | 搜索历史存储至 KvStorage (`user_center_recent_searches`),最多保留10条,支持单条删除和全部清除 |
|
||||
| 防抖搜索 | 输入时 250ms 防抖,首次搜索时缓存本地数据库数据,避免重复查询 |
|
||||
| 搜索结果分类展示 | 结果按分组📁、标签🏷️、收藏内容❤️ 三类分组展示,点击可跳转至对应页面 |
|
||||
| 快捷入口 | 搜索页空状态时显示「我的收藏」和「标签云」快捷入口卡片 |
|
||||
| 搜索入口 | 个人中心导航栏右侧新增搜索按钮(🔍),点击打开收藏搜索页面 |
|
||||
|
||||
#### 变更
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| 个人中心导航栏 | trailing 从单个洞察按钮改为搜索+洞察按钮组合 |
|
||||
|
||||
***
|
||||
|
||||
## [v6.52.0] - 2026-06-12
|
||||
|
||||
### 🔧 RSS阅读器全面重构
|
||||
|
||||
#### 新增
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| Riverpod状态管理 | RSS阅读器从setState迁移至Riverpod,新增`rss_provider.dart`,状态与UI解耦 |
|
||||
| 收藏/书签功能 | 文章详情页新增收藏按钮,收藏状态持久化至Hive |
|
||||
| Shimmer骨架屏 | 文章列表加载时使用`ShimmerPlaceholder.card()`替代转圈指示器 |
|
||||
| FullScreenPhotoView图片画廊 | 图片画廊点击全屏查看,支持缩放/捏合手势 |
|
||||
| 分页加载 | 文章列表每页20条,底部"加载更多"按钮 |
|
||||
| 网络异常标签 | V2EX等不可达源在AppBar下方显示红色网络异常提示条 |
|
||||
| 查看原文确认弹窗 | "在浏览器中打开"改为"查看原文",跳转前弹窗确认 |
|
||||
| PopScope返回修复 | 安卓侧滑返回不再跳过RSS列表页,正确逐级返回 |
|
||||
| 订阅源未读数 | 订阅源卡片显示红色未读数徽标 |
|
||||
| 文章卡片收藏按钮 | 文章卡片标题行新增收藏图标 |
|
||||
|
||||
#### 修复
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| 知乎日报空白 | 增加宽松XML解析+HTML fallback,修复非标准RSS源解析失败 |
|
||||
| 安卓返回手势 | 使用PopScope拦截返回,文章详情→文章列表→订阅源首页逐级返回 |
|
||||
|
||||
#### 变更
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| 移除爱范儿/阮一峰 | 从默认推荐订阅源中移除 |
|
||||
| "在浏览器中打开"→"查看原文" | 按钮文案和图标更新,增加确认弹窗 |
|
||||
| StatefulWidget→ConsumerStatefulWidget | 与项目Riverpod架构统一 |
|
||||
|
||||
***
|
||||
|
||||
## [v6.51.0] - 2026-06-12
|
||||
|
||||
### ✨ 收藏卡片搜索高亮 + 扩展滑动操作
|
||||
|
||||
#### 新增
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| 搜索高亮 | FavoriteListCard/FavoriteGridCard 新增 `searchQuery` 参数,搜索时高亮匹配文本(accent色+粗体) |
|
||||
| 归档滑动操作 | FavoriteListCard 左滑新增「归档」操作(移到默认分组) |
|
||||
| 标签滑动操作 | FavoriteListCard 右滑新增「标签」操作(快捷添加标签) |
|
||||
| archiveFavorite 方法 | FavoriteActionsMixin 新增归档方法,调用 `updateFavoriteGroup` 清空分组 |
|
||||
| 翻译键 | TFavorites 新增 `archive`/`archived` 翻译键(14种语言) |
|
||||
|
||||
#### 变更
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| FavoriteListCard 构造函数 | 新增 `onArchive`(必填) + `searchQuery`(可选) 参数 |
|
||||
| FavoriteGridCard 构造函数 | 新增 `searchQuery`(可选) 参数 |
|
||||
| FavoritePageStateAccessor | 新增 `archiveFavorite` 方法声明 |
|
||||
| 滑动操作布局 | 左滑:分享+归档;右滑:取消收藏+标签 |
|
||||
|
||||
***
|
||||
|
||||
## [v6.50.0] - 2026-06-12
|
||||
|
||||
### 🔄 收藏标签与分组从KvStorage迁移至Drift数据库
|
||||
|
||||
#### 变更
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| Favorites表新增列 | `groupName`(TextColumn, 默认'') + `tagsJson`(TextColumn, 默认'[]'),存储收藏分组和标签数据 |
|
||||
| 数据库版本 V18→V19 | 新增迁移逻辑:addColumn + 从KvStorage迁移fav_tags_*/fav_group_*数据 |
|
||||
| 收藏页面筛选改用Drift | `_applyFilters()` 中分组/标签筛选从 KvStorage 同步读取改为使用内存状态映射 `_groupMap`/`_tagMap` |
|
||||
| 排序改用Drift | `applySortAndSearch()` 中按标签/分组排序从 KvStorage 改为使用 `tagMap`/`groupMap` |
|
||||
| 标签编辑改用Drift | `showTagDialog()` 读取现有标签从 tagMap 获取,保存改为 `AppDatabase.instance.updateFavoriteTags()` |
|
||||
| 标签云改用Drift | `showTagCloud()` 收集所有标签从 tagMap.values 获取,不再遍历 KvStorage |
|
||||
| StateAccessor新增 | `groupMap`/`tagMap` 状态访问器 + `reloadTagAndGroupMaps()` 方法 |
|
||||
|
||||
#### 新增数据库方法
|
||||
|
||||
| 方法 | 说明 |
|
||||
|---|---|
|
||||
| `migrateFavoriteTagsFromKvStorage()` | V19迁移:从Hive读取fav_tags_*/fav_group_*写入Drift |
|
||||
| `updateFavoriteGroup(sentenceId, groupName)` | 更新收藏分组 |
|
||||
| `updateFavoriteTags(sentenceId, tags)` | 更新收藏标签(JSON序列化) |
|
||||
| `getFavoriteGroup(sentenceId)` | 获取单个收藏分组 |
|
||||
| `getFavoriteTags(sentenceId)` | 获取单个收藏标签列表 |
|
||||
| `getAllFavoriteTags()` | 获取所有收藏标签映射(标签云用) |
|
||||
| `getAllFavoriteGroups()` | 获取所有收藏分组映射 |
|
||||
| `getFavoriteCountByGroup()` | 获取各分组收藏数量 |
|
||||
|
||||
***
|
||||
|
||||
## [v6.49.0] - 2026-06-12
|
||||
|
||||
### ✨ TTS朗读功能扩展至4个核心页面
|
||||
|
||||
#### 新增
|
||||
|
||||
| 页面 | 集成方式 | 说明 |
|
||||
|---|---|---|
|
||||
| 诗词页 `poetry_page.dart` | 快捷操作栏添加🔊朗读按钮 | 拼接诗词内容+出处后调用TtsPlayerSheet |
|
||||
| 翻译助手 `translate_page.dart` | 替换原有占位_speak方法 | 逐条朗读翻译结果,调用TtsPlayerSheet |
|
||||
| 稍后读 `readlater_page.dart` | 条目左滑添加"朗读"操作 | Feed类型朗读正文,其他类型朗读标题+副标题 |
|
||||
| RSS阅读器 `rss_reader_page.dart` | 文章详情导航栏添加🔊按钮 | 优先朗读阅读模式全文,降级朗读标题+摘要 |
|
||||
|
||||
#### 变更
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| FeatureFlag.ttsRead 默认启用 | `_defaults` 中添加 `'tts_read': true`,朗读功能不再显示"开发中"提示 |
|
||||
| SlideActionType 新增 speak | `AppSlidable` 枚举新增 `speak` 类型,紫色主题+CupertinoIcons.speaker_2 |
|
||||
| ReadLaterPageStateAccessor 新增 speakEntry | 声明朗读条目方法,OpsMixin中实现 |
|
||||
|
||||
***
|
||||
|
||||
## [v6.48.0] - 2026-06-12
|
||||
|
||||
### ✨ TTS插件页面重构与增强
|
||||
|
||||
#### 新增
|
||||
|
||||
| 功能 | 说明 |
|
||||
|---|---|
|
||||
| TTS播放状态Provider | 新增 `ttsPlaybackProvider`(core/providers/),聚合系统TTS和在线TTS的播放状态、进度、错误,驱动UI实时更新 |
|
||||
| 实时播放进度 | 预览区播放时进度条动态推进,显示播放百分比;系统TTS使用逐字进度回调,在线TTS模拟进度 |
|
||||
| 播放/停止切换 | 预览区按钮根据状态切换:空闲→播放、播放中→停止、加载中→旋转指示器 |
|
||||
| 健康检查loading | 刷新健康状态时显示 `CupertinoActivityIndicator` 旋转指示器 + "检查中..."文案,防止重复刷新 |
|
||||
| 记录重播 | 朗读记录Slidable新增"重播"操作(紫色),左滑可见"重播"+"删除"两个按钮 |
|
||||
| 反馈邮箱组件 | "提交意见"改为弹出 `ContactEmailSheet` 公共邮箱底部面板,替换原空壳弹窗 |
|
||||
|
||||
#### 变更
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| TTS插件页面分流 | 原1729行单文件拆分为3个文件:`tts_plugin_page.dart`(页面+逻辑)、`tts_plugin_sections.dart`(UI区块)、`tts_plugin_picklers.dart`(Picker弹窗+常量) |
|
||||
| Picker通用化 | 5个CupertinoPicker弹窗提取为 `TtsPickers` 静态工具类,抽取 `_PickerHeader`/`_PickerSheet` 通用组件减少重复代码 |
|
||||
| 常量公开 | `_keyTtsLanguage`→`kKeyTtsLanguage`,`_ttsLanguages`→`kTtsLanguages`,工具函数公开为顶层函数 |
|
||||
|
||||
#### 文件结构
|
||||
|
||||
| 文件 | 说明 |
|
||||
|---|---|
|
||||
| `core/providers/tts_playback_provider.dart` | 新增 — TTS播放状态Provider |
|
||||
| `settings/presentation/plugin/tts_plugin_page.dart` | 重构 — 页面主体+逻辑 |
|
||||
| `settings/presentation/plugin/tts_plugin_sections.dart` | 新增 — UI区块组件 |
|
||||
| `settings/presentation/plugin/tts_plugin_picklers.dart` | 新增 — Picker弹窗+常量 |
|
||||
|
||||
***
|
||||
|
||||
## [v6.47.0] - 2026-06-12
|
||||
|
||||
### ✨ 收藏页面全面增强
|
||||
|
||||
#### 新增
|
||||
|
||||
| 功能 | 说明 |
|
||||
|---|---|
|
||||
| 搜索防抖 | 新增 `Debouncer` 工具类,搜索输入延迟300ms再触发过滤,避免大量数据时卡顿 |
|
||||
| 排序模式扩展 | 新增按标题字母序(`titleAlpha`)、按标签(`tag`)、按分组(`group`)、手动排序(`manual`)四种排序模式 |
|
||||
| 瀑布流视图 | 新增 `FavViewMode.staggered`,使用 `MasonryGridView` 实现瀑布流布局 |
|
||||
| 分组筛选栏 | 主列表顶部新增横向滚动分组筛选标签,点击切换分组过滤 |
|
||||
| 标签云入口 | 导航栏新增标签按钮,弹出标签云面板,支持按标签筛选 |
|
||||
| 导出为文件 | 导出功能从仅复制剪贴板升级为写入临时文件+系统分享面板(`share_plus`),支持TXT/JSON/CSV格式 |
|
||||
| 长按预览 | 卡片长按触发触觉反馈+预览弹窗,显示完整内容+类型+来源+操作按钮 |
|
||||
| 拖拽排序 | 手动排序模式下使用 `ReorderableListView`,拖拽调整收藏顺序,顺序持久化到KvStorage |
|
||||
| 自定义下拉刷新 | 使用 `custom_refresh_indicator` 替换原生 `RefreshIndicator` |
|
||||
| Shimmer骨架屏 | 加载状态使用 `shimmer` 动画替换静态骨架屏 |
|
||||
| 来源标识国际化 | 卡片来源标识(本地/云端)和同步状态(同步中/已同步/冲突)全部走i18n翻译 |
|
||||
| i18n新增21个翻译键 | `sourceLocal`/`sourceCloud`/`syncStatusSyncing`/`syncStatusSynced`/`syncStatusConflict`/`sortByTitle`/`sortByTag`/`sortByGroup`/`filterByGroup`/`allGroups`/`tagCloud`/`noTags`/`tagCount`/`exportSaved`/`exportSaveFailed`/`swipeToUnfavorite`/`cardSwipeHint`/`manualSort`/`preview`/`offlineMode`/`offlineSyncHint` |
|
||||
|
||||
#### 变更
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| `FavSortMode` 枚举扩展 | 从3个值(`newest/oldest/type`)扩展到7个,新增`titleAlpha/tag/group/manual` |
|
||||
| `FavViewMode` 枚举扩展 | 从2个值(`list/grid`)扩展到3个,新增`staggered` |
|
||||
| 视图切换按钮升级 | 从2模式切换改为3模式循环(list→grid→staggered),图标随之变化 |
|
||||
| 导出功能升级 | 原剪贴板复制保留为备选,主流程改为写入文件+系统分享 |
|
||||
| 骨架屏升级 | 从静态 `FavoritePageSkeleton` 升级为 `shimmer` 动画骨架屏 |
|
||||
| 刷新组件升级 | 从 `RefreshIndicator` 升级为 `CustomRefreshIndicator` |
|
||||
|
||||
#### 文件结构
|
||||
|
||||
| 文件 | 说明 |
|
||||
|---|---|
|
||||
| `core/utils/debouncer.dart` | 新增:回调式防抖器 |
|
||||
| `favorite/favorite_enums.dart` | 扩展:排序/视图枚举 |
|
||||
| `favorite/favorite_state_accessor.dart` | 扩展:新增分组筛选/标签筛选/导出/国际化抽象方法 |
|
||||
| `favorite/favorite_actions_mixin.dart` | 扩展:新增排序模式/导出文件/来源国际化/同步状态国际化 |
|
||||
| `favorite/favorite_ui_mixin.dart` | 扩展:新增分组筛选栏/自定义刷新/shimmer骨架屏/排序菜单扩展 |
|
||||
| `favorite/favorite_dialogs_mixin.dart` | 扩展:新增标签云弹窗 |
|
||||
| `favorite/favorite_card.dart` | 扩展:新增长按预览/来源标签国际化参数 |
|
||||
| `favorite/favorite_page.dart` | 重构:集成所有新功能 |
|
||||
|
||||
***
|
||||
|
||||
## [v6.46.2] - 2026-06-12
|
||||
|
||||
### 💄 拾光Sheet显示项配置交互优化
|
||||
|
||||
#### 变更
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| 显示项配置改为按钮交互 | 原"选择要在拾光栏显示的信息(最多3项)"文本+列表改为按钮,显示已选项摘要(如 📅 日期 · 🌤 天气 · 📍 城市)和计数标签(2/3),点击弹出子Sheet配置开关 |
|
||||
| 主Sheet布局精简 | 移除Expanded ListView,主Sheet不再需要滚动,内容更紧凑 |
|
||||
|
||||
***
|
||||
|
||||
## [v6.46.1] - 2026-06-12
|
||||
|
||||
### 🐛 拾光Sheet markNeedsPaint断言修复
|
||||
|
||||
#### 修复
|
||||
|
||||
| 修复 | 说明 |
|
||||
|---|---|
|
||||
| Sheet弹出时markNeedsPaint断言崩溃 | `_ScaledGlassSheetRoute`中`SnapshotWidget`的`backgroundSnapshotController.allowSnapshotting`在paint阶段被修改,触发`'owner == null || !owner!.debugDoingPaint'`断言。移除`SnapshotWidget`,改用`RouteSnapshotMode.never`禁用快照,底层页面通过`RepaintBoundary`隔离动画重绘 |
|
||||
| AppBarDateDisplay Stream重建重置 | `Stream.periodic`在`build`中创建导致每次重建重置定时器,移到`initState`中创建为`late final`;`ref.watch`从`StreamBuilder.builder`内移到`build`顶层,避免Riverpod反模式 |
|
||||
| SheetAnimationNotifier死代码清理 | `home_page.dart`中`AnimatedBuilder(animation: ref.watch(sheetAnimationProvider))`的`updateLayer()`从未被调用,移除无效包装和未使用import |
|
||||
|
||||
***
|
||||
|
||||
## [v6.46.0] - 2026-06-12
|
||||
|
||||
### 📱 局域网二维码增强 + 收藏同步状态显示
|
||||
|
||||
#### 新增
|
||||
|
||||
| 功能 | 说明 |
|
||||
|---|---|
|
||||
| 局域网二维码增加设备信息 | `FileTransferDiscoveryTab._buildLanQrPayload()` 生成JSON格式payload,包含type/alias/ip/port/ts字段;弹窗中展示设备名和IP地址 |
|
||||
| 扫码识别xianyan-transfer类型 | `QrCodeTab._processQrPayload()` 和 `QrcodeScannerPage._parseQrCode()` 优先识别JSON格式的`xianyan-transfer`二维码,解析设备信息后显示设备详情确认弹窗,用户确认后导航到传输页面 |
|
||||
| 通用扫码页面设备详情弹窗 | `QrcodeScannerPage` 新增 `QrCodeType.xianyanTransfer` 类型、`QrScanResult` 设备信息字段、`_buildTransferDeviceInfo()` 和 `_showDeviceDetailAndNavigate()` 方法 |
|
||||
| 收藏同步状态标识 | `FavoriteSyncStatus` 枚举(idle/syncing/synced/conflict),收藏列表来源标识旁显示同步状态标签(🔄同步中/✅已同步/⚠️冲突),网格视图仅显示图标 |
|
||||
| 同步进度条冲突状态 | `_buildSyncProgressBanner()` 增加 `conflict` 状态,使用橙色 + ⚠️图标 |
|
||||
|
||||
#### 变更
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| `SyncStatus` → `FavoriteSyncStatus` | 枚举重命名,值从`{idle, syncing, success, failed}`改为`{idle, syncing, synced, conflict}`,语义更清晰 |
|
||||
| 局域网二维码兼容旧格式 | 扫码仍支持纯HTTP URL格式(旧二维码),自动导航到传输页面 |
|
||||
| 收藏同步进度条冲突状态 | `_buildSyncProgressBanner()` 增加 `conflict` 状态,使用橙色 + ⚠️图标 |
|
||||
|
||||
***
|
||||
|
||||
## [v6.46.0] - 2026-06-12
|
||||
|
||||
### ✨ 功能增强
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| 快捷方式"搜索APP内功能"自动弹出搜索框 | 长按icon选择搜索快捷方式后,跳转"我的"页面并自动弹出SpotlightSearchOverlay(带动画),通过`ProfilePage.pendingSearch`机制实现 |
|
||||
| 注册步骤3账号信息卡片支持点击修改 | 账号卡片包裹GestureDetector,点击返回步骤1,右侧图标改为铅笔(编辑) |
|
||||
| 局域网二维码增加设备信息 | 二维码内容从纯HTTP URL改为JSON格式(`xianyan-transfer`),包含设备名、IP、端口;扫码后显示设备详情确认弹窗再导航 |
|
||||
| 收藏来源标识增加同步状态 | `FavoriteSyncStatus`枚举(idle/syncing/synced/conflict),收藏列表显示🔄同步中/✅已同步/⚠️冲突标签 |
|
||||
| 小部件支持点击交互 | 修正6个WidgetType的deepLinkRoute,`HomeWidgetService._widgetRouteMap`改为引用WidgetType.deepLinkRoute |
|
||||
| 配对码页面国际化 | 新增`TFileTransfer`翻译类型(34字段),pairing_code_tab.dart所有硬编码中文替换为翻译键,14语言全部添加 |
|
||||
| 统一错误处理 | 5个文件的`_showAlert`替换为`AppToast.showError/showWarning`,删除`_showAlert`方法 |
|
||||
| 补全AppRoutes路由常量 | 新增12个路由常量,route_registry.dart中14处字符串字面量替换为AppRoutes常量引用 |
|
||||
|
||||
### 📁 涉及文件
|
||||
|
||||
**核心修改**:
|
||||
- `quick_actions_service.dart` — action_search路由携带`?action=search`参数
|
||||
- `profile_page.dart` — 新增`pendingSearch`静态变量,initState自动弹出搜索
|
||||
- `app.dart` — 快捷方式回调解析search参数
|
||||
- `register_step_password.dart` — 账号卡片GestureDetector+onBack回调
|
||||
- `register_section.dart` — 传入onBack: () => _goToStep(1)
|
||||
- `file_transfer_discovery_tab.dart` — 二维码payload改为JSON+设备信息展示
|
||||
- `qr_code_tab.dart` — 识别xianyan-transfer JSON+设备详情弹窗
|
||||
- `qrcode_scanner_page.dart` — 新增xianyanTransfer类型+设备详情弹窗
|
||||
- `favorite_provider.dart` — FavoriteSyncStatus枚举+synced/conflict状态
|
||||
- `favorite_page.dart` — 同步状态标签(列表+网格视图)
|
||||
- `home_widget_service.dart` — _widgetRouteMap引用WidgetType.deepLinkRoute
|
||||
- `widget_type.dart` — 修正6个deepLinkRoute
|
||||
- `pairing_code_tab.dart` — 34处硬编码中文→翻译键
|
||||
- `device_pairing_page.dart` — _showAlert→AppToast
|
||||
- `radar_scan_tab.dart` — _showAlert→AppToast
|
||||
- `article_edit_page.dart` — _showAlert→AppToast
|
||||
- `app_routes.dart` — 新增12个路由常量
|
||||
- `route_registry.dart` — 14处字符串→AppRoutes常量
|
||||
|
||||
**国际化**:
|
||||
- 新增 `t_file_transfer.dart` — TFileTransfer翻译类型
|
||||
- 修改 `t_root.dart` — T类添加fileTransfer字段
|
||||
- 14个语言文件添加TFileTransfer翻译
|
||||
|
||||
***
|
||||
|
||||
## [v6.45.0] - 2026-06-12
|
||||
|
||||
### 🔧 多项Bug修复 + 交互优化
|
||||
|
||||
#### 修复
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| 桌面长按icon快捷方式"通用设置"改为"搜索APP内功能" | `QuickActionsService` 第二个快捷方式type改为`action_search`,标题改为"搜索APP内功能",路由指向"我的"页面;Android `shortcuts.xml`/`strings.xml` 同步更新 |
|
||||
| 登录页面协议勾选框默认改为未勾选 | `_agreedToTerms` 初始值从 `true` 改为 `false`,用户需主动勾选才能登录 |
|
||||
| iOS端退出闲言选项不生效 | iOS端隐藏"关闭闲言结束后台运行"和"返回桌面"两个无效选项(iOS不允许APP自行退出/后台),仅保留"退出闲言账号";`moveToBackground()` 移除iOS端降级为`SystemNavigator.pop()`的错误逻辑 |
|
||||
| 文件传输助手配对码页面无appbar | `_navigateToQrScan` 改为导航到 `DevicePairingPage(initialTab: 1)` 而非直接导航 `QrCodeTab()`,确保有完整appbar |
|
||||
| 局域网二维码无法被闲言APP扫码识别 | `QrCodeTab._processQrPayload()` 增加对HTTP局域网URL(端口53317)和`xianyan://transfer` scheme的识别;`QrcodeScannerPage` 增加 `QrCodeType.xianyan` 类型 |
|
||||
| 收藏取消收藏后数据仍在列表 | `FavoriteRepository.toggleFavorite()` 同步更新本地数据库 `isFavorite` 标记;未登录时直接调用 `db.setFavoriteFlag()` |
|
||||
| 注册页面"用户名"改为"账户" | `zh_cn.dart` 中5处"用户名"相关翻译改为"账户" |
|
||||
|
||||
#### 新增
|
||||
|
||||
| 功能 | 说明 |
|
||||
|---|---|
|
||||
| 注册步骤3显示已填写账号 | `RegisterStepPassword` 新增 `username`/`email` 参数,在密码输入前显示账号信息卡片 |
|
||||
| `DevicePairingPage.initialTab` | 支持从外部直接定位到指定Tab(0=配对码, 1=扫码, 2=雷达, 3=其他) |
|
||||
| 收藏来源标识 | `FavoriteItem` 新增 `source` 字段,收藏列表显示"☁️云端"/"📱本地"来源标签 |
|
||||
| `AppDatabase.setFavoriteFlag()` | 新增直接设置收藏状态的方法 |
|
||||
|
||||
#### 变更
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| 安卓端快捷方式icon | `shortcuts.xml` 中icon已使用 `@mipmap/ic_launcher`(闲言APP图标),非IDE默认图标 |
|
||||
| 配对码页面动态主题 | 已全部使用 `AppThemeExtension` 动态主题值,无硬编码颜色 |
|
||||
| 桌面小部件页面多语言 | 25处硬编码中文替换为翻译键,14语言全部添加 `TWidget` 翻译块 |
|
||||
|
||||
***
|
||||
|
||||
## [v6.44.0] - 2026-06-12
|
||||
|
||||
### 🌐 桌面小部件 — 多语言国际化支持
|
||||
|
||||
#### 新增
|
||||
|
||||
| 功能 | 说明 |
|
||||
|---|---|
|
||||
| `TWidget` 翻译类型类 | 新增桌面小部件模块专用翻译类型,包含约50个翻译字段(页面标题、开发弹窗、优先级标签、添加引导步骤、推送数据、同步主题、平台兼容说明、小部件卡片、数据预览、小部件类型标题/副标题、预览文本、平台徽章) |
|
||||
| `T.root.widget` 字段 | `T` 根类新增 `widget` 字段,接入桌面小部件模块翻译 |
|
||||
| 14语言widget翻译 | zh_cn/en/zh_tw/ja/ko/de/it/es/fr/pt/ru/ar/bn/hi 全部添加 `widget: TWidget(...)` 翻译块 |
|
||||
| `WidgetType.localizedTitle()` | `WidgetTypeX` 新增多语言标题方法,接受 `TWidget` 参数返回本地化标题 |
|
||||
| `WidgetType.localizedSubtitle()` | `WidgetTypeX` 新增多语言副标题方法,接受 `TWidget` 参数返回本地化副标题 |
|
||||
|
||||
#### 变更
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| `widget_management_page.dart` 国际化 | 25处硬编码中文字符串替换为翻译键,包括:导航栏标题、开发弹窗内容/按钮、优先级标签、添加到桌面提示、手动添加引导步骤(鸿蒙/Android/iOS)、推送数据/主题相关、平台兼容说明、已安装/添加按钮、数据预览/刷新、小部件类型标题/副标题、平台徽章 |
|
||||
| `_PlatformCompatibilityCard` / `_WidgetCard` / `_PlatformBadges` / `_WidgetDataPreview` | 新增 `tw` 参数传递翻译实例 |
|
||||
| `_ThemeToggle` | 使用 `ref.watch(translationsProvider)` 获取翻译 |
|
||||
| `_priorityLabel` | 新增 `TWidget` 参数,使用翻译键替代硬编码 |
|
||||
|
||||
***
|
||||
|
||||
## [v6.43.0] - 2026-06-12
|
||||
|
||||
### 📡 二维码/收藏 — 局域网扫码支持 + 取消收藏修复
|
||||
|
||||
#### 修复
|
||||
|
||||
| 变更 | 说明 |
|
||||
|---|---|
|
||||
| 局域网二维码无法识别 | `QrCodeTab._processQrPayload()` 增加对 `http://` 局域网传输URL(端口53317)和 `xianyan://transfer` scheme的识别,扫码后自动导航至文件传输页面 |
|
||||
| 通用扫码页不识别闲言URL | `QrcodeScannerPage` 增加 `QrCodeType.xianyan` 类型,识别 `xianyan://` scheme和局域网传输URL,支持应用内导航 |
|
||||
| 取消收藏后数据仍在列表 | `FavoriteRepository.toggleFavorite()` 现在同步更新本地数据库 `isFavorite` 标记,防止 `mergeWithLocalDb()` 将已取消收藏的项目重新合并回来 |
|
||||
| 未登录时取消收藏无效 | `_removeFavorite()` 和 `_deleteSelected()` 区分已登录/未登录状态,未登录时直接调用 `db.setFavoriteFlag()` 更新本地数据库 |
|
||||
|
||||
#### 新增
|
||||
|
||||
| 功能 | 说明 |
|
||||
|---|---|
|
||||
| 收藏来源标识 | `FavoriteItem` 新增 `source` 字段(`'server'`/`'local'`),收藏列表卡片显示"☁️ 云端"/"📱 本地"来源标签 |
|
||||
| `AppDatabase.setFavoriteFlag()` | 新增直接设置收藏状态的方法,不依赖当前值,避免 `toggleFavorite()` 状态不一致风险 |
|
||||
| `FavoriteItem.copyWithSource()` | 新增便捷方法,用于修改来源标识 |
|
||||
|
||||
***
|
||||
|
||||
## [v6.42.0] - 2026-06-11
|
||||
|
||||
### 📝 笔记仓库 — 数量限制/离线模式/搜索增强/版本对比/同步进度/键盘管理
|
||||
|
||||
Reference in New Issue
Block a user