HapeLee
3594dc2594
Merge pull request #1571 from HapeLee/feature/ai-foundation
...
feat: AI底座
2026-06-27 02:33:56 +08:00
HapeLee
486476d23a
chore: 更新数据库schema到版本92
2026-06-27 02:27:43 +08:00
HapeLee
990fc78033
feat: ai底座
2026-06-27 02:16:11 +08:00
HapeLee
62875c54d9
fix: 书签问题与高亮规则代码优化
2026-06-10 02:44:07 +08:00
HapeLee
eef1f58f26
fix: 高亮规则增加更多配置
2026-06-10 01:45:32 +08:00
Kudomaga
4c088448c3
feat(reader): 船新的基于 Compose 实现的阅读菜单界面与各项优化
...
* 初始版本
* refactor(reader): MVI architecture + menu settings overhaul
MVI/UDF Architecture:
- Add ReadBookContract: UiState, Intent, Effect, Sheet, Dialog, ConfigUpdate
- Refactor ReadBookViewModel with onIntent() entry point
- Add ReadBookScreen/ReadBookRouteScreen stateless composables
- Add ReadBookColorTheme for reader-specific theme override
- Add ReadConfigContract for read config screen MVI
ReadStyleSheet Decomposition:
- Split ReadStyleSheet into SystemMenuPage, TextTitleSheet,
HeaderFooterPage, TitleBarIconSheet, GlobalThemePage
- Each page owns its tab state, color picker, and config mutations
Data Layer (DataStore-backed Repositories):
- Add ReadSettingsRepository with ReadPreferences flow
- Add MangaSettingsRepository with MangaPreferences flow
- Add ReadAloudSettingsRepository for TTS settings
- Add ReadStyleRepository (file I/O for read style configs)
- Add ReadBookStyleConfigRepository (repository boundary)
- Add ReadStyleResolver for background/theme resolution
- Remove legacy ReadTipConfig (merged into ReadBookConfig)
- Register all new repositories in Koin appModule
Menu Settings:
- Add unified border settings (width, color, colorNight) for
both top and bottom bars with drawWithCache + drawPath
- Add ColorModePill with light/dark toggle and '+' icon for
no-color state in TinySettingItems
- Add TinyClearColorModeSettingItem for border color config
- Add menu color customization (bg, accent, container) with
day/night variants and seed color mode
- Add bottom bar layout settings (corner radius, margins)
- Add custom icon support for menu buttons and title bar icons
- Add title bar icon position setting
Config Pipeline:
- Consolidate all ReadBookConfig mutations into typed ConfigUpdate
sealed interface with legacy UP_CONFIG code mapping
- Add resolvedMenuBorderColor (auto day/night switching)
- Add 20 new PreferKey constants for menu settings
- Update manga config dialogs to use MangaSettingsRepository
- Update ReadConfigViewModel with DataStore flow observation
* feat(reader): add liquid glass menu bars and floating bottom bar
- Integrate com.kyant.backdrop 2.0.0 for liquid glass blur/vibrancy
effects on reading menu top bar and bottom bar (Android 13+)
- Add floating bottom bar toggle replacing manual margin sliders
- Extract ReadMenuConfig data class for proper MVI state management
of all menu configuration properties
- Enable edge-to-edge in BaseComposeActivity, remove manual
navigation bar color management across base classes and controller
- Fix fullScreen() to use setDecorFitsSystemWindows(false)
* Refactor series button rendering
* 实现液态玻璃
* 优化液态玻璃
* @
fix(reader): fix MVI behavior issues and improve sheet lifecycle
Behavior fixes:
- Fix AddSourceAsNewBook empty implementation — wire intent to addToBookshelf
- Fix content edit loading stuck on null chapter/content — use onFinally
- Fix cannot save empty content — remove isEmpty guard, use title as loaded proxy
- Fix bookmark not opening — use openReadMenuRoute instead of dead activeSheet path
- Fix chapter source sheet persists — animate dismiss via show param before removal
- Fix chapter source reopens to TOC — reset showToc in initData
- Fix SaveChapterContent saves to wrong chapter — carry chapterIndex in intent
- Fix chapter source search runs after dismiss — cancel searchJob in dispose
- Fix "go to background" button in ReadAloud — use CloseReadBook intent
Architecture improvements:
- ReadMenuConfig uses ImmutableMap for Compose stability
- Fix stale remember in ReadBookMenuBar title bar icons
- Move icon picker file IO from composable to ViewModel
- Route launcher results through MVI intents instead of direct calls
- Fix ChangeChapterSource effect collector key — use viewModel not Unit
- Make ReadAloudConfigSheet UDF-compliant — stateless with intents
- Remove main menu buttons from AutoRead and ReadAloud sheets
@
* @
refactor(reader): use Material Icons and ConfirmDismissButtonsRow
- TitleBarIconSheet: replace drawable resources with Icons library, use
ConfirmDismissButtonsRow for save/cancel buttons
- SystemMenuPage MenuCustomIconSheet: same icon and button treatment
- ReadBookMenuBar: update ToolButtonDef/TitleBarIconDef to use ImageVector
instead of drawable resource Int
- Use AutoMirrored variants for List and HelpOutline icons
@
* feat: 优化液态玻璃
* feat: 优化液态玻璃
* fix(AppLogSheet): 从本地文件读取日志,替代内存列表
* @
feat(reader): highlight rules, theme refactor & MVI improvements
- Add HighlightRule entity, DAO, and config/edit sheets
- Add ThemeConfigStore, remove OldThemeConfig
- Refactor ReadBookContract/ViewModel/Screen for deeper MVI
- Add CharStyle for text rendering, refactor TextLine/TextChapterLayout
- Add SectionTitle, TinySettingItems UI components
- Remove legacy XML layouts (regex_color_config)
- Update database schema to v90
- Various sheet and widget refinements
@
* @
fix: address PR review feedback
- ReadStyleRepository: fix copy-paste bug (bgStrNight→bgStr) + add bgTypeNight import
- BgImageSpan: replace Bitmap.createScaledBitmap with BitmapShader matrix scaling
- HighlightRule: use UUID.randomUUID() instead of System.currentTimeMillis()
- ChangeSourceSearchUseCase: guard against empty chapters list
@
* @fix: remove residual regexColorRules references after merge
- ChangeSourceSearchUseCase: adapt filter lambda to new 3-param signature
- TextChapterLayout: remove globalRegexResult field, preApplyRegexColorRules
call, and the entire regexColorRules fullTextBuilder block
@
* fix: 图标间距
2026-06-07 18:28:33 +08:00
Jad
41902a0bb8
新增隐私分组功能
2026-05-26 14:16:13 +08:00
HapeLee
b00944b612
主页模块初始版本
2026-05-22 02:49:29 +08:00
HapeLee
5338313583
书架性能优化
2026-05-15 03:00:31 +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
HapeLee
bede06bf46
[优化] 新增正文搜索记录
2026-03-05 01:23:47 +08:00
ryan
24970eff44
[修复] bookName 导致同名不同作者的书籍会被错误合并阅读时长
2026-02-19 21:44:06 +08:00
HapeLee
7638c1b450
[新增] 正文支持HTML渲染(@Luoyacheng),标题支持正则分割 #598
2026-01-29 19:43:29 +08:00
HapeLee
cfa63797c9
[新增] 合并了Sigma版本的一些更改(@Luoyacheng),具体合并了什么其实我也不知道,因为我头晕了
2026-01-25 06:12:21 +08:00
HapeLee
e3d6a063e6
[新增] 增加书籍备注功能 #425
2025-12-19 01:56:08 +08:00
HapeLee
ba33e7cdd5
使用Compose重构的阅读记录模块的初始版本。
...
现在阅读记录功能更加强大,能够获取某一天所有书籍统计、可视化的阅读时间线等。
目前仅实现基本功能,且尚不完善,仅供尝鲜使用。
由于原版并无精细化的数据结构,所以时间线与日期查看仅在更新此版本后开始记录。原版的查看最后阅读功能仍可使用。
2025-11-25 01:36:51 +08:00
HapeLee
a9023465d4
订阅源网页重定向功能 #171
2025-10-28 21:05:39 +08:00
HapeLee
077b63c45a
恢复项目结构名,增强书源兼容性
2025-10-28 18:37:57 +08:00
HapeLee
ebc4135242
更新界面
2025-08-18 14:20:02 +08:00
Horis
72f4ce7ec3
优化
2025-02-24 17:59:21 +08:00
niuhb
38404b9135
优化rss阅读记录查看和删除 ( #4568 )
...
* 优化rss阅读记录查看和删除
* 优化rss阅读记录功能
2025-01-24 10:38:02 +08:00
niuhb
88a4686eac
章节增加字数统计字段,网络书籍增加字数统计 ( #4437 )
2024-12-15 16:20:44 +08:00
老牛
98df37f09b
rss收藏增加分组管理 ( #4236 )
...
* rss收藏增加分组和标题编辑选项
* 优化变量命名
* 订阅收藏按分组展示
* 优化:订阅收藏分组展示
* 优化
* 优化rss收藏分组管理
* 优化数据库版本控制
2024-09-26 14:50:17 +08:00
kunfei
c82502ee3b
优化进度同步逻辑,减少同步次数
2023-08-02 00:22:19 +08:00
kunfei
f0e6a70593
订阅添加url跳转拦截(js, 返回true拦截,js变量url,可以通过js打开url,比如调用阅读搜索,添加书架等,简化规则写法,不用webView js注入)
2023-07-28 09:15:52 +08:00
kunfei
5f8474ff40
添加格式化目录规则,只能写js,不用@js:标志,提供变量index和title,index从1开始
2023-05-16 21:06:17 +08:00
kunfei
12924bb9fc
替换规则添加排除字段
2023-05-10 20:58:45 +08:00
Horis
f3693ddbf3
优化
2023-05-08 17:33:59 +08:00
kunfei
e03b2d7c7e
jsLib完成
2023-04-18 09:08:54 +08:00
kunfei
e4e24f2520
源添加jsLib,未完成
2023-04-09 22:04:51 +08:00
kunfei
17329d3f76
优化
2023-04-05 13:15:59 +08:00
kunfei
8e94a74af8
优化
2023-03-31 17:08:58 +08:00
kunfei
ee44e37ca0
优化
2023-03-06 14:43:30 +08:00
kunfei
514370afb8
优化
2023-02-19 22:57:54 +08:00
kunfei
83ac432b37
优化
2023-02-19 19:59:54 +08:00
kunfei
5c33b2ae79
优化
2023-02-19 19:47:58 +08:00
kunfei
dfa85d9c6b
优化
2023-02-06 23:12:14 +08:00
kunfei
bc7ab898ba
优化
2023-01-04 22:27:22 +08:00
kunfei
6b536badde
优化
2022-11-11 21:51:46 +08:00
kunfei
128692ace5
优化
2022-10-02 23:20:31 +08:00
kunfei
f6ec7b95e7
优化
2022-10-02 23:19:40 +08:00
kunfei
e3442ef842
书籍类型采用位运算,查询更高效
2022-10-02 22:57:00 +08:00
Horis
28ff57c954
优化
2022-09-21 14:29:30 +08:00
Seidko
87c625dcc1
更新数据库版本
2022-09-07 23:18:03 +08:00
Seidko
cabf70e406
Add: Add ReviewRule and related codes
2022-08-21 23:09:26 +08:00
fisher
2157c84f8f
更新默认Txt目录规则 Txt目录正则页面增加标题示例 新增部分翻译
2022-08-05 00:51:35 +08:00
kunfei
e57fc3487e
阅读记录添加最后阅读时间
2022-07-19 22:37:00 +08:00
kunfei
83d5101499
优化
2022-06-05 21:57:11 +08:00
kunfei
ef5a4d45eb
优化
2022-05-13 08:18:39 +08:00
kunfei
ee416e1fdb
优化tts导入
2022-05-08 19:53:46 +08:00