HapeLee
7fda394d74
代码优化
2026-05-14 15:37:26 +08:00
HapeLee
4d3ae1e537
选择书源时可搜素
2026-05-14 00:55:48 +08:00
HapeLee
f5971024e7
横排封面时可直接打开书籍
2026-05-14 00:53:57 +08:00
HapeLee
e4487d6c9f
提供正确的底部边距
2026-05-14 00:37:43 +08:00
HapeLee
9dda4dfae7
文件夹样式可与书架样式分开设置
2026-05-14 00:31:12 +08:00
HapeLee
1c7a37d542
书籍详情代码优化
2026-05-14 00:13:42 +08:00
HapeLee
8598cca9b3
书籍详情代码优化
2026-05-13 23:37:03 +08:00
HapeLee
b90b9f034d
下载代码优化
2026-05-13 21:54:19 +08:00
HapeLee
876f1370ec
代码优化
2026-05-13 21:22:44 +08:00
HapeLee
4beeb2d4f6
应用后台时间过长时,下载崩溃的问题
2026-05-13 18:18:03 +08:00
HapeLee
accd3afbbb
新增 Baseline Profile 增加冷启动性能
2026-05-13 18:14:40 +08:00
HapeLee
c1f7faf050
优化阅读记录总览(在阅读记录的成就卡片进入,稳定后会加入主页面)
2026-05-13 01:58:31 +08:00
HapeLee
b3c4f7d09f
修复漫画定位错误的问题
2026-05-13 01:32:32 +08:00
HapeLee
dda4a27730
代码优化
2026-05-13 01:31:50 +08:00
HapeLee
14ac91246d
移除了边框设置(因为MIUIX主题暂不生效,在考虑搞个更通用的)
2026-05-13 01:31:32 +08:00
HapeLee
c6cb67ae94
修复封面缓存没有一天是命中导致的启动时都会向网络请求封面的问题
2026-05-13 01:28:59 +08:00
HapeLee
56b28009e3
新增文件夹列表横排封面布局
2026-05-12 19:47:22 +08:00
HapeLee
b3a294ff1e
代码优化
2026-05-12 19:17:14 +08:00
HapeLee
890ab3a502
某些设备的ANR问题
2026-05-12 19:16:20 +08:00
HapeLee
83a0a794e2
书籍管理分组问题
2026-05-12 19:15:14 +08:00
HapeLee
c748a5515a
新的独属于MD3的雷霆主题管理与分享系统
2026-05-12 19:12:32 +08:00
HapeLee
bc1d21f1f2
备份可选网络、本地、网络与本地同时备份
2026-05-12 18:48:17 +08:00
HapeLee
8a6d01d5d1
新增阅读记录展览界面
2026-05-12 17:49:48 +08:00
HapeLee
0308a9d396
修复某些界面错误应用淡入淡出动画的问题
2026-05-11 04:09:02 +08:00
HapeLee
97fe1ad6b5
修复封面换源界面问题
2026-05-11 03:28:12 +08:00
HapeLee
bbd598151b
让发现用例自己管理线程
2026-05-11 03:28:12 +08:00
HapeLee
45e678b1ae
换源时,不会再因为打开浏览器而导致重走换源流程
...
换源界面新增多选分组和书源功能
2026-05-11 03:28:12 +08:00
HapeLee
920d4058e7
现在搜素框可以自动唤出键盘
2026-05-11 03:28:12 +08:00
HapeLee
3042131457
修复规则项多选时的错位问题
2026-05-11 03:28:12 +08:00
HapeLee
bd814dea8f
修复发现某些点击项错误响应的问题
2026-05-11 03:28:12 +08:00
HapeLee
5154a59e0d
修复加载更多提示无限循环的问题
...
修复上传文件JSON解析NPE的问题
修复书架数据双重过滤的问题
修复备份恢复重复插入崩溃的问题
修复RSS加载状态缺失问题
2026-05-11 03:28:12 +08:00
HapeLee
27c7ccc10d
编辑本地书籍时,错误删除换行符的问题
2026-05-11 03:28:11 +08:00
HapeLee
49d5c42fd8
修复某些情况下的崩溃问题
2026-05-11 03:28:11 +08:00
HapeLee
51209664b1
修复设置项重叠问题
2026-05-11 03:28:09 +08:00
HapeLee
34035272c1
修复搜素不到除小说之外的书籍的问题
...
新增自由筛选搜素书籍类型
2026-05-11 00:56:17 +08:00
HapeLee
dbd97cde38
修复底部边距问题
2026-05-11 00:02:41 +08:00
HapeLee
69b90b2902
优化代码
2026-05-10 23:56:09 +08:00
HapeLee
6a39b42fe5
优化搜素逻辑
2026-05-10 23:34:20 +08:00
HapeLee
6a0954377a
优化下载逻辑
2026-05-10 23:07:24 +08:00
HapeLee
c0700231b7
修复列表模式时封面阴影不生效的问题
...
修复布局设置文字重叠的问题
增加列表模式背景颜色设置
2026-05-10 22:13:53 +08:00
HapeLee
15a931733a
更新链接这一块
2026-05-10 14:11:41 +08:00
HapeLee
91b9aa5088
共享元素动画优化
2026-05-10 13:39:48 +08:00
HapeLee
cc673eeac0
共享元素动画优化
2026-05-10 13:23:07 +08:00
Kudomaga
0bbb7f1fa0
Update app name in Chinese localization ( #1010 )
2026-05-10 04:55:12 +08:00
f4ba9eeee0
Update MediaSession metadata for car Bluetooth display ( #1008 )
...
* Update MediaSession metadata for car Bluetooth display
* Implement `upMediaMetadata` in `BaseReadAloudService` to sync book details and cover art to `MediaSessionCompat`.
* Map book name to title, chapter name to artist, and author to album metadata keys.
* Support displaying current reading content as a subtitle/lyric string.
* Trigger metadata updates across `HttpReadAloudService` and `TTSReadAloudService` during playback and navigation.
* Apply suggestions from code review
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
---------
Co-authored-by: zuohl <zuohldev@gmail.com >
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-05-10 04:39:21 +08:00
HlllllH and HapeLee
64f7de8120
更多自定义设置 @325506 ( #994 )
...
* 第一次上传
* 新增深度个性化设置-可以给主题选择自定义字体了
* 新增深度个性化设置-存在背景图片时,应用栏和导航栏会对背景图片进行模糊处理
* 新增深度个性化设置-主题颜色高度自定义
* 新增深度个性化设置-新增边框设置
* 合并后bug修复
# Conflicts:
# app/build.gradle.kts
# app/google-services.json
# app/src/main/java/io/legado/app/constant/PreferKey.kt
# app/src/main/java/io/legado/app/di/appModule.kt
# app/src/main/java/io/legado/app/ui/book/bookmark/AllBookmarkScreen.kt
# app/src/main/java/io/legado/app/ui/book/explore/ExploreShowScreen.kt
# app/src/main/java/io/legado/app/ui/book/group/GroupEditSheet.kt
# app/src/main/java/io/legado/app/ui/book/import/local/ImportBookScreen.kt
# app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookScreen.kt
# app/src/main/java/io/legado/app/ui/book/info/BookInfoContract.kt
# app/src/main/java/io/legado/app/ui/book/info/BookInfoScreen.kt
# app/src/main/java/io/legado/app/ui/book/info/BookInfoSheets.kt
# app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt
# app/src/main/java/io/legado/app/ui/book/manga/config/MangaClickActionConfigDialog.kt
# app/src/main/java/io/legado/app/ui/book/read/config/ClickActionConfigDialog.kt
# app/src/main/java/io/legado/app/ui/book/readRecord/ReadRecordScreen.kt
# app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt
# app/src/main/java/io/legado/app/ui/book/search/SearchScope.kt
# app/src/main/java/io/legado/app/ui/book/search/SearchViewModel.kt
# app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentScreen.kt
# app/src/main/java/io/legado/app/ui/book/toc/TocScreen.kt
# app/src/main/java/io/legado/app/ui/book/toc/rule/TxtRuleScreen.kt
# app/src/main/java/io/legado/app/ui/config/ConfigNavScreen.kt
# app/src/main/java/io/legado/app/ui/config/coverConfig/CoverConfigScreen.kt
# app/src/main/java/io/legado/app/ui/config/otherConfig/CheckSourceBottomSheet.kt
# app/src/main/java/io/legado/app/ui/config/otherConfig/DirectLinkUploadBottomSheet.kt
# app/src/main/java/io/legado/app/ui/config/readConfig/PageKeySheet.kt
# app/src/main/java/io/legado/app/ui/config/themeConfig/BackgroundImageManageSheet.kt
# app/src/main/java/io/legado/app/ui/config/themeConfig/ThemeConfig.kt
# app/src/main/java/io/legado/app/ui/dict/rule/DictRuleScreen.kt
# app/src/main/java/io/legado/app/ui/main/MainActivity.kt
# app/src/main/java/io/legado/app/ui/main/bookshelf/BookItem.kt
# app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfScreen.kt
# app/src/main/java/io/legado/app/ui/main/bookshelf/GroupManageSheet.kt
# app/src/main/java/io/legado/app/ui/main/explore/ExploreScreen.kt
# app/src/main/java/io/legado/app/ui/main/my/MyScreen.kt
# app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditScreen.kt
# app/src/main/java/io/legado/app/ui/rss/favorites/RssFavoritesScreen.kt
# app/src/main/java/io/legado/app/ui/rss/subscription/RuleSubScreen.kt
# app/src/main/java/io/legado/app/ui/theme/AdaptivePadding.kt
# app/src/main/java/io/legado/app/ui/theme/AppBackground.kt
# app/src/main/java/io/legado/app/ui/theme/AppTheme.kt
# app/src/main/java/io/legado/app/ui/theme/HazeStyle.kt
# app/src/main/java/io/legado/app/ui/theme/ImageSeedColorExtractor.kt
# app/src/main/java/io/legado/app/ui/theme/LegadoTheme.kt
# app/src/main/java/io/legado/app/ui/theme/ThemeColorSchemeOverride.kt
# app/src/main/java/io/legado/app/ui/theme/ThemeOverride.kt
# app/src/main/java/io/legado/app/ui/theme/Typography.kt
# app/src/main/java/io/legado/app/ui/theme/hazeStyle/HazeLegado.kt
# app/src/main/java/io/legado/app/ui/widget/components/AppNavigationBar.kt
# app/src/main/java/io/legado/app/ui/widget/components/AppScaffold.kt
# app/src/main/java/io/legado/app/ui/widget/components/AppTextField.kt
# app/src/main/java/io/legado/app/ui/widget/components/SearchBarSection.kt
# app/src/main/java/io/legado/app/ui/widget/components/SplicedColumnGroup.kt
# app/src/main/java/io/legado/app/ui/widget/components/alert/AppAlertDialog.kt
# app/src/main/java/io/legado/app/ui/widget/components/button/SmallIconButton.kt
# app/src/main/java/io/legado/app/ui/widget/components/button/SmallTextButton.kt
# app/src/main/java/io/legado/app/ui/widget/components/button/ToggleChip.kt
# app/src/main/java/io/legado/app/ui/widget/components/card/GlassCard.kt
# app/src/main/java/io/legado/app/ui/widget/components/card/SelectionItemCard.kt
# app/src/main/java/io/legado/app/ui/widget/components/card/SettingCard.kt
# app/src/main/java/io/legado/app/ui/widget/components/card/TextCard.kt
# app/src/main/java/io/legado/app/ui/widget/components/checkBox/CheckboxItem.kt
# app/src/main/java/io/legado/app/ui/widget/components/cover/BookCover.kt
# app/src/main/java/io/legado/app/ui/widget/components/cover/BookshelfCover.kt
# app/src/main/java/io/legado/app/ui/widget/components/cover/Cover.kt
# app/src/main/java/io/legado/app/ui/widget/components/icon/AppIcons.kt
# app/src/main/java/io/legado/app/ui/widget/components/menuItem/RoundDropdownMenu.kt
# app/src/main/java/io/legado/app/ui/widget/components/menuItem/RoundDropdownMenuItem.kt
# app/src/main/java/io/legado/app/ui/widget/components/rules/RuleListScaffold.kt
# app/src/main/java/io/legado/app/ui/widget/components/settingItem/ClickableSettingItem.kt
# app/src/main/java/io/legado/app/ui/widget/components/settingItem/SliderSettingItem.kt
# app/src/main/java/io/legado/app/ui/widget/components/topbar/DynamicTopAppBar.kt
# app/src/main/java/io/legado/app/ui/widget/components/topbar/GlassMediumFlexibleTopAppBar.kt
# app/src/main/res/drawable/ic_add.xml
# app/src/main/res/drawable/ic_add_online.xml
# app/src/main/res/drawable/ic_arrange.xml
# app/src/main/res/drawable/ic_arrow_down.xml
# app/src/main/res/drawable/ic_arrow_right.xml
# app/src/main/res/drawable/ic_cfg_about.xml
# app/src/main/res/drawable/ic_cfg_backup.xml
# app/src/main/res/drawable/ic_cfg_other.xml
# app/src/main/res/drawable/ic_cfg_replace.xml
# app/src/main/res/drawable/ic_cfg_source.xml
# app/src/main/res/drawable/ic_cfg_theme.xml
# app/src/main/res/drawable/ic_cfg_web.xml
# app/src/main/res/drawable/ic_groups.xml
# app/src/main/res/drawable/ic_help.xml
# app/src/main/res/drawable/ic_more.xml
# app/src/main/res/drawable/ic_search.xml
# app/src/main/res/drawable/ic_view_quilt.xml
# app/src/main/res/layout/dialog_tip_config.xml
# app/src/main/res/layout/view_preference.xml
# app/src/main/res/layout/view_preference_category.xml
# app/src/main/res/values-zh-rCN/strings.xml
# app/src/main/res/values-zh-rHK/strings.xml
# app/src/main/res/values-zh-rTW/strings.xml
# app/src/main/res/values/arrays.xml
# app/src/main/res/values/strings.xml
# app/src/main/res/xml/pref_main.xml
# avd.sh
# gradle.properties
# gradle/libs.versions.toml
# gradle/wrapper/gradle-wrapper.properties
# gradlew
# modules/web/index.html
* 边框设置bug修复
# Conflicts:
# app/build.gradle.kts
# app/google-services.json
# app/src/main/java/io/legado/app/constant/PreferKey.kt
# app/src/main/java/io/legado/app/di/appModule.kt
# app/src/main/java/io/legado/app/ui/book/bookmark/AllBookmarkScreen.kt
# app/src/main/java/io/legado/app/ui/book/explore/ExploreShowScreen.kt
# app/src/main/java/io/legado/app/ui/book/group/GroupEditSheet.kt
# app/src/main/java/io/legado/app/ui/book/import/local/ImportBookScreen.kt
# app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookScreen.kt
# app/src/main/java/io/legado/app/ui/book/info/BookInfoContract.kt
# app/src/main/java/io/legado/app/ui/book/info/BookInfoScreen.kt
# app/src/main/java/io/legado/app/ui/book/info/BookInfoSheets.kt
# app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt
# app/src/main/java/io/legado/app/ui/book/manga/config/MangaClickActionConfigDialog.kt
# app/src/main/java/io/legado/app/ui/book/read/config/ClickActionConfigDialog.kt
# app/src/main/java/io/legado/app/ui/book/readRecord/ReadRecordScreen.kt
# app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt
# app/src/main/java/io/legado/app/ui/book/search/SearchScope.kt
# app/src/main/java/io/legado/app/ui/book/search/SearchViewModel.kt
# app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentScreen.kt
# app/src/main/java/io/legado/app/ui/book/toc/TocScreen.kt
# app/src/main/java/io/legado/app/ui/book/toc/rule/TxtRuleScreen.kt
# app/src/main/java/io/legado/app/ui/config/ConfigNavScreen.kt
# app/src/main/java/io/legado/app/ui/config/coverConfig/CoverConfigScreen.kt
# app/src/main/java/io/legado/app/ui/config/otherConfig/CheckSourceBottomSheet.kt
# app/src/main/java/io/legado/app/ui/config/otherConfig/DirectLinkUploadBottomSheet.kt
# app/src/main/java/io/legado/app/ui/config/readConfig/PageKeySheet.kt
# app/src/main/java/io/legado/app/ui/config/themeConfig/BackgroundImageManageSheet.kt
# app/src/main/java/io/legado/app/ui/config/themeConfig/ThemeConfig.kt
# app/src/main/java/io/legado/app/ui/dict/rule/DictRuleScreen.kt
# app/src/main/java/io/legado/app/ui/main/MainActivity.kt
# app/src/main/java/io/legado/app/ui/main/bookshelf/BookItem.kt
# app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfScreen.kt
# app/src/main/java/io/legado/app/ui/main/bookshelf/GroupManageSheet.kt
# app/src/main/java/io/legado/app/ui/main/explore/ExploreScreen.kt
# app/src/main/java/io/legado/app/ui/main/my/MyScreen.kt
# app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditScreen.kt
# app/src/main/java/io/legado/app/ui/rss/favorites/RssFavoritesScreen.kt
# app/src/main/java/io/legado/app/ui/rss/subscription/RuleSubScreen.kt
# app/src/main/java/io/legado/app/ui/theme/AdaptivePadding.kt
# app/src/main/java/io/legado/app/ui/theme/AppBackground.kt
# app/src/main/java/io/legado/app/ui/theme/AppTheme.kt
# app/src/main/java/io/legado/app/ui/theme/HazeStyle.kt
# app/src/main/java/io/legado/app/ui/theme/ImageSeedColorExtractor.kt
# app/src/main/java/io/legado/app/ui/theme/LegadoTheme.kt
# app/src/main/java/io/legado/app/ui/theme/ThemeColorSchemeOverride.kt
# app/src/main/java/io/legado/app/ui/theme/ThemeOverride.kt
# app/src/main/java/io/legado/app/ui/theme/Typography.kt
# app/src/main/java/io/legado/app/ui/theme/hazeStyle/HazeLegado.kt
# app/src/main/java/io/legado/app/ui/widget/components/AppNavigationBar.kt
# app/src/main/java/io/legado/app/ui/widget/components/AppScaffold.kt
# app/src/main/java/io/legado/app/ui/widget/components/AppTextField.kt
# app/src/main/java/io/legado/app/ui/widget/components/SearchBarSection.kt
# app/src/main/java/io/legado/app/ui/widget/components/SplicedColumnGroup.kt
# app/src/main/java/io/legado/app/ui/widget/components/alert/AppAlertDialog.kt
# app/src/main/java/io/legado/app/ui/widget/components/button/SmallIconButton.kt
# app/src/main/java/io/legado/app/ui/widget/components/button/SmallTextButton.kt
# app/src/main/java/io/legado/app/ui/widget/components/button/ToggleChip.kt
# app/src/main/java/io/legado/app/ui/widget/components/card/GlassCard.kt
# app/src/main/java/io/legado/app/ui/widget/components/card/SelectionItemCard.kt
# app/src/main/java/io/legado/app/ui/widget/components/card/SettingCard.kt
# app/src/main/java/io/legado/app/ui/widget/components/card/TextCard.kt
# app/src/main/java/io/legado/app/ui/widget/components/checkBox/CheckboxItem.kt
# app/src/main/java/io/legado/app/ui/widget/components/cover/BookCover.kt
# app/src/main/java/io/legado/app/ui/widget/components/cover/BookshelfCover.kt
# app/src/main/java/io/legado/app/ui/widget/components/cover/Cover.kt
# app/src/main/java/io/legado/app/ui/widget/components/icon/AppIcons.kt
# app/src/main/java/io/legado/app/ui/widget/components/menuItem/RoundDropdownMenu.kt
# app/src/main/java/io/legado/app/ui/widget/components/menuItem/RoundDropdownMenuItem.kt
# app/src/main/java/io/legado/app/ui/widget/components/rules/RuleListScaffold.kt
# app/src/main/java/io/legado/app/ui/widget/components/settingItem/ClickableSettingItem.kt
# app/src/main/java/io/legado/app/ui/widget/components/settingItem/SliderSettingItem.kt
# app/src/main/java/io/legado/app/ui/widget/components/topbar/DynamicTopAppBar.kt
# app/src/main/java/io/legado/app/ui/widget/components/topbar/GlassMediumFlexibleTopAppBar.kt
# app/src/main/res/drawable/ic_add.xml
# app/src/main/res/drawable/ic_add_online.xml
# app/src/main/res/drawable/ic_arrange.xml
# app/src/main/res/drawable/ic_arrow_down.xml
# app/src/main/res/drawable/ic_arrow_right.xml
# app/src/main/res/drawable/ic_cfg_about.xml
# app/src/main/res/drawable/ic_cfg_backup.xml
# app/src/main/res/drawable/ic_cfg_other.xml
# app/src/main/res/drawable/ic_cfg_replace.xml
# app/src/main/res/drawable/ic_cfg_source.xml
# app/src/main/res/drawable/ic_cfg_theme.xml
# app/src/main/res/drawable/ic_cfg_web.xml
# app/src/main/res/drawable/ic_groups.xml
# app/src/main/res/drawable/ic_help.xml
# app/src/main/res/drawable/ic_more.xml
# app/src/main/res/drawable/ic_search.xml
# app/src/main/res/drawable/ic_view_quilt.xml
# app/src/main/res/layout/dialog_tip_config.xml
# app/src/main/res/layout/view_preference.xml
# app/src/main/res/layout/view_preference_category.xml
# app/src/main/res/values-zh-rCN/strings.xml
# app/src/main/res/values-zh-rHK/strings.xml
# app/src/main/res/values-zh-rTW/strings.xml
# app/src/main/res/values/arrays.xml
# app/src/main/res/values/strings.xml
# app/src/main/res/xml/pref_main.xml
# avd.sh
# gradle.properties
# gradle/libs.versions.toml
# gradle/wrapper/gradle-wrapper.properties
# gradlew
# modules/web/index.html
* 实现播放音频显示歌词,但是布局需要调整
* 优化音频显示布局
* 合并代码
* 合并主题色设置,新增主题保存
* 修改一下颜色设置
* 边框bug修复
* 悬浮胶囊主题颜色修复
* 给发现和订阅项增加边框
* 内置浏览器设置非全屏
* 实现正则表达式匹配字段高亮
* 增加自定义正则表达式匹配颜色
* 正则表达式配置持久化保存
* 更新下载路径
* 修复png透明图片
* 修改当前版本号
* 同步lyc版本订阅源功能
* 同步lyc版本订阅源功能
* 合并后修复
* 书架样式调整,但有bug
* 合并后提交
* bug修复
* 订阅源日志修复
* 合并后修复
* 正文标题可以自定义字体
* 列表模式可以显示更多内容
* 实现自定义标签
* 主题背景和封面背景支持动图
* 自定义标签颜色
* 自定义标签颜色
* 主题保存bug修复
* 实现个性化主题设置的备份与恢复
* 页眉页脚可自定义字号,颜色,字体
* 边距设置
* bug修复
* 主题应用bug修复
* 虚线延展
* 模糊效果设置
* 字体页面新增搜索
* 描述性文字添加
* 列表简介内容显示
* 主题导入bug修复
* 标题可以自定义字体颜色
* 匹配自定义正则表达式规则文字的字体和颜色
* 匹配自定义正则表达式规则文字的字体和颜色bug修复
* 自定义底栏图标
* 自定义底栏图标bug修复
* 实现主题设置统一管理
* 实现主题设置统一管理界面美化
* 文件夹列表模式显示美化
* 底栏bug修复
* 底栏bug修复
* 底栏液化玻璃参数提取
* 主题管理删除当前阅读背景保存
* 主题管理bug修复
* 使用自定义封面时不动态取色
* 规范性更改
* 正确的数据库迁移schema
* 移动设置项
* 书架优化
* 书架优化
* 删除 EmptyMessageView.kt — 已有 EmptyMessage 完全覆盖且功能更全,该文件为无效重复
EmptyMessageView 与 EmptyMessage 实现了完全相同的空状态 UI(Kaomoji 动画、加载指示器、消息文字),但 EmptyMessageView 缺少 buttonText/buttonImageVector/onButtonClick 参数,无任何调用者。
* 消除重复代码:提取共享的 loadFontFiles、JsonObject 扩展函数,删除无效重复的 EmptyMessageView 和 BookGroupUi 常量
- 删除 EmptyMessageView.kt(已有 EmptyMessage 完全覆盖,零调用者)
- 提取 loadFontFiles 到 help/FontLoader.kt(消除 ThemeConfigScreen 和 FontSelectScreen 间的重复)
- 提取 JsonObject.getString/getInt/getFloat/getBoolean 到 utils/JsonExtensions.kt(消除 3 个配置类中的三份相同实现)
- 移除 BookGroupUi 中与 BookGroup 实体重复的 12 个 Id* 常量,改用直接引用
* 拆分大文件:提取 ThemePackSerializer 和 ThemeAppearanceJson 到独立文件
- 提取 ThemePackSerializer 到 help/config/ThemePackSerializer.kt(106 行),从 ThemePackConfig.kt 移除
- 提取 ThemeAppearanceJson 序列化对象到 help/config/ThemeAppearanceJson.kt(140 行),从 ThemeAppearanceConfig.kt 移除
- ThemePackConfig 从 440 行减少到约 325 行,ThemeAppearanceConfig 从 267 行减少到约 117 行
BookshelfViewModel 的拆分留待后续——涉及状态管理 refactor 需要更深入的并发模型理解。
* 提取共用模式:添加 SplicedColumnDivider 和 secondaryColorOr 共用函数
- SplicedColumnGroup.kt 新增 SplicedColumnDivider() composable,消除 5 个 SettingItem 文件中各 7 行重复的 divider 前导代码
- GlassDefaults.kt 新增 secondaryColorOr() composable,统一处理深度个性化 secondaryThemeColor 覆盖逻辑(该模式曾出现 12 次)
TypefaceLoader 提取跳过——三个调用点(PageView/TextColumn/ChapterProvider)在缓存策略和系统字体回退上存在差异,需更仔细的并发分析。
* 修复架构问题:移动 RegexColorRule 和 TagColorGenerator 到正确包,提取 Haze containerColor
- 将 RegexColorRule 从 ui/book/read/config 移至 help/config,消除 ReadBookConfig 对 UI 层的反向依赖
- 将 TagColorGenerator 从 help 移至 help/config,消除对 ui.config.themeConfig 的跨层级依赖
- HazeStyle 中 3 处重复的 containerColor 解析改用 GlassDefaults.secondaryColorOr
* 书架优化
* 书架优化
* 书架优化
---------
Co-authored-by: HapeLee <63206378+HapeLee@users.noreply.github.com >
2026-05-10 04:38:51 +08:00
Kudomaga
46c9496bdc
Fix invalid search page regex causing class init crash ( #991 )
2026-05-05 02:14:19 +08:00
Kudomaga
103bdc07d1
搜索问题 ( #990 )
...
* Filter to searchable book sources before running search
* Track first failure details when all search sources fail
* Align precision matching and parallelize source loading
2026-05-05 01:49:57 +08:00
HapeLee
f309e03b23
[优化] 性能优化
2026-05-01 12:26:35 +08:00
HapeLee
03d0528dd2
[优化] 性能优化
2026-05-01 00:55:43 +08:00