Commit Graph
372 Commits
Author SHA1 Message Date
HapeLee 9bb8571cc7 fix: 阅读菜单模糊着色、调色板样式、标题胶囊布局及主题覆盖修复 2026-06-15 01:33:28 +08:00
HapeLee 5a587222eb @
feat: 顶栏液态玻璃胶囊布局与合并按钮

- 合并换源/刷新/更多按钮为一个药丸形液态玻璃按钮(仅液态玻璃开启时)
- 新增标题胶囊布局开关,将书名和章节名放入导航按钮旁的液态玻璃胶囊内
- 去掉切换到 TextTitle 菜单 tab 时隐藏顶栏的逻辑
- 玻璃效果统一为 40dp,与返回按钮一致,镜头扭曲不受裁切
@
2026-06-14 21:36:09 +08:00
fansangg c3ba892fa3 fix: 优化页眉页脚间距展开滚动并提取硬编码边距字符串 2026-06-14 04:50:59 +08:00
HapeLee 83bc818544 fix: 搜索框默认文本 2026-06-14 00:21:15 +08:00
HapeLee fc096c92e8 fix: 搜索界面问题 2026-06-14 00:21:14 +08:00
HapeLee 35875f7dd3 fix: 补全修复阅读界面缺失的一些功能和同步问题 2026-06-12 03:26:36 +08:00
HapeLee aa16376dae fix: 屏幕方向和屏幕超时设置切换后不立即生效
MoreConfigSheet 中屏幕方向和屏幕超时的变更只写入 DataStore,需经过
6 步异步传播(DataStore → Flow → ViewModel → Effect → Controller)
才能生效,导致:
- 切换横屏后文字显示不全,仍保持竖屏布局
- 目录不跟随横屏显示
- 屏幕超时设置延迟生效

修复:
- 新增 ReadBookIntent.SetOrientation 意图,直接写入 ReadConfig 并发射 Effect
- 将 ReadBookIntent.KeepLightChanged 改为带值的 data class,同理直接生效
- MoreConfigSheet 在写 DataStore 的同时同步调用 onIntent,立即应用变更
- 新增反向横屏(REVERSE_LANDSCAPE)选项
2026-06-11 01:36:06 +08:00
HapeLee 7b9a5dca16 fix: 章节点击事件 2026-06-10 00:42:00 +08:00
HapeLee 1d47e29a18 fix: 朗读引擎长按事件与选择事件 2026-06-10 00:42:00 +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
HapeLee 116762f826 fix: 优化搜素逻辑 2026-06-07 01:09:24 +08:00
WangXuanMeng b25244fcde feat: 实验室设置+护眼模式+Web清理
合并 PR #1278 by fjsuta
2026-06-02 18:32:28 +08:00
Duanhlandduanhl 978d6d2840 fix: 翻译功能的一些小优化和修复 (#1225)
1. llm温度是可调的,对于ds而言,翻译1.3最佳,默认值调整成该值
2. 翻译字典,最多允许从50增加到80,取头尾各一半,因为小说出场最早和最近的人最重要

Co-authored-by: duanhl <duanhl7749@gmail.com>
2026-05-30 03:50:34 +08:00
HapeLee 6a6a0c837f Merge origin/main into feature/private-group
Resolve conflict in BookInfoSheets.kt: keep MediumPlainButton style from main
while preserving showAddGroup logic from PR for correct new group creation.
2026-05-27 01:10:06 +08:00
HapeLee 30fe70ffae 一些神必优化 2026-05-27 01:00:58 +08:00
Jad 41902a0bb8 新增隐私分组功能 2026-05-26 14:16:13 +08:00
Kudomagaandduanhl db5b18ca3c feature/bookinfo-related-books (#1201)
* feature: add translation full content

* feature: add translation full content

* feature: add translation full content

* feature: add translation full content

* feature: add translation full content

* feature:use chunk files replace chunk cache db

* feature:use chunk files replace chunk cache db

* feature:use chunk files replace chunk cache db

* feature: add translation config navigation and refactor translation settings

* feature: 体验优化

* feature: fixed error prompt

* Fix Gson deserialization error for LLM translation classes under R8 obfuscation

* Fix PMD error

* feature: pre-translation

* feature: pre-translation

* 优化

* 优化

* 增加书籍详情页关联书籍推荐功能

* 修复关联书籍"更多"按钮URL模板变量未解析的问题

* 修复发现按钮部分不执行JS的问题

* 优化书籍详情封面长按逻辑

* 阅读界面自定义图标问题

* R8反混淆问题

* 主题保存时保存图片等资源

* 在首页、发现页等长按时,提供了一个查看简短书籍信息的界面与右上角书籍信息角标。现在书籍信息角标在封面设置中显示

* 现在可配置主页图标

* 主页模块配置被遮挡的问题

* 一些优化

* fix: address code review findings (null safety, error propagation, performance)

- TranslateChapterUseCase: wrap execute() in try-catch to prevent task
  stuck in Translating state; propagate actual translation error instead
  of generic "Translation incomplete"; defensive null check on pairs
- DictionaryRepositoryImpl: safe call on pairs for Gson null-bypass
- LlmTranslateRepositoryImpl: safe calls on json.sentences and
  json.choices to prevent NPE from unexpected API responses
- ContentChunker: normalize \r\n to \n before splitting paragraphs
  to handle Windows-formatted text files
- BookInfoViewModel: parallelize related books loading with async/awaitAll
- CoilBookCover: add finalPath as remember key to reset state on reuse
- ThemeImportExport: fallback to filesDir when getExternalFilesDir is null

---------

Co-authored-by: duanhl <duanhl7749@gmail.com>
2026-05-26 01:45:04 +08:00
197039d25a 加入小说翻译功能 (#1094)
* feature: add translation full content

---------

Co-authored-by: duanhl <duanhl7749@gmail.com>
Co-authored-by: HapeLee <63206378+HapeLee@users.noreply.github.com>
2026-05-24 03:57:35 +08:00
HapeLee 322df247d0 优化 2026-05-23 03:58:41 +08:00
HapeLee bbec36bf36 优化 2026-05-22 02:49:29 +08:00
HapeLee b00944b612 主页模块初始版本 2026-05-22 02:49:29 +08:00
dat-bi c7bf1db161 fix(i18n): update string formatting for download messages and theme management in English and Chinese 2026-05-22 01:56:08 +08:00
dat-bi 7107b35728 feat(i18n): standardize English and Simplified Chinese localization across UI
feat(i18n): standardize English and Simplified Chinese UI strings

- Move hardcoded user-facing text from Compose screens and dialogs into string resources
- Add and refine English and zh-rCN translations for settings, theme, about, backup, TOC, and book info flows
- Keep internal logs, exceptions, parser text, and comments unchanged unless user-facing
- Preserve existing behavior while improving localization consistency
2026-05-22 01:56:08 +08:00
HapeLee 7fda288dee 组件优化 2026-05-15 03:09:10 +08:00
HapeLee dda4a27730 代码优化 2026-05-13 01:31:50 +08:00
HapeLee b3a294ff1e 代码优化 2026-05-12 19:17:14 +08:00
HapeLee 6a39b42fe5 优化搜素逻辑 2026-05-10 23:34:20 +08:00
HlllllHandHapeLee 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 03d0528dd2 [优化] 性能优化 2026-05-01 00:55:43 +08:00
HapeLee bc670629b4 [优化] 新增崩溃包报告页面(因为崩溃太多了孩子们 2026-04-29 20:01:19 +08:00
HapeLee 0afed18353 [优化] 一些代码优化 2026-04-29 00:21:00 +08:00
HapeLee 97676113ef [优化] 新增下载线程调整和新增缓存管理界面,可以管理下载书籍和章节等 2026-04-27 00:57:20 +08:00
Dawn.Liu c1d9d57203 Merge pull request #937
* i18n Fix II
2026-04-26 15:13:24 +08:00
HapeLee 15f6efc42d [优化] 优化界面 2026-04-19 02:34:40 +08:00
HapeLee 979632e35c [优化] 优化书籍详情界面 2026-04-18 12:28:45 +08:00
HapeLee a7af2ef752 Merge branch 'fork/Delton-Leo/i18n-fix'
# Conflicts:
#	app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfScreen.kt
#	app/src/main/java/io/legado/app/ui/main/my/MyScreen.kt
#	app/src/main/res/values-zh-rHK/strings.xml
#	app/src/main/res/values-zh-rTW/strings.xml
#	app/src/main/res/values/strings.xml
2026-04-18 02:36:44 +08:00
HapeLee 1bd61c719a [优化] 重写书籍详情页、本地书籍页和优化一些界面,为Miuix增加自定义取色功能,优化颜色选择器 2026-04-13 01:56:03 +08:00
HapeLee e38d96a6e5 [新增] 悬浮底栏和液态玻璃底栏 2026-04-08 02:02:50 +08:00
Delton.Leoandgemini-code-assist[bot] 6d0ddf6b27 Apply suggestions from code review
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-03-31 20:55:37 +08:00
Delton.Leo 9073b597a5 Fix:修改了错误的 Strings.xml 2026-03-31 20:25:40 +08:00
Delton.Leo b25d23ed1b 优化系统语言为英语时,App UI 中英文混搭的问题 2026-03-31 20:21:15 +08:00
HapeLee f31138338b [优化] 添加未开启模糊时的顶栏与底栏透明度选项 2026-03-28 01:01:57 +08:00
HapeLee f16bec9dc7 [优化] 添加了自定义主题下的颜色规格选项 2026-03-25 01:38:06 +08:00
5151561 32806e2e26 自定义主题添加选择对比度的选项 #762
Merge pull request #762

* 手动选择对比度

* 样式优化&操作逻辑优化

* [优化] 优化代码,使用kolor自带的枚举值
2026-03-25 01:35:14 +08:00
HapeLee f1843ab732 [优化] 优化震动效果,新增正文选取时震动开关 2026-03-05 01:23:47 +08:00
HapeLee 0250001a27 [优化] 一些主题优化 2026-02-26 01:31:02 +08:00
ryan 502ba08d97 [优化] 引导增加选择保存书籍文件夹 2026-02-21 10:22:35 +08:00
HapeLee 2d14d82251 [优化] 支持更多Sigma版本特性(@Luoyacheng) 2026-02-02 21:09:24 +08:00
HapeLee cfa63797c9 [新增] 合并了Sigma版本的一些更改(@Luoyacheng),具体合并了什么其实我也不知道,因为我头晕了 2026-01-25 06:12:21 +08:00
HapeLee 1638966ba4 [优化] 增加了一个页面切换过渡动画的开关 #557 2026-01-17 16:49:36 +08:00