- Added ISBN field to the metadata dialog for book details.
- Implemented copy-to-clipboard feature for ISBN with a toast notification on success.
- Updated styles for the ISBN display and copy button for better user experience.
- Removed the hardcoded source string and replaced it with rating_source from the item in MetadataDialog component.
- Updated the CloudBookItem interface to include additional properties: isbn, rating_source, rating, rating_count, categories, pub_date, language, and pages.
- Added `exclusiveModeNames` array to define modes that should be mutually exclusive.
- Introduced `handleExclusiveOff` method to disable other exclusive modes when one is enabled.
- Updated click handlers for `isReadingRuler`, `isSpeedReading`, and `isParagraphMode` to call `handleExclusiveOff` when enabling their respective modes.
- Added new settings for enabling a reading ruler, including line height and background opacity.
- Updated English and Chinese localization files to include new strings for reading ruler settings.
- Implemented slider components for adjusting reading ruler line height and background opacity.
- Enhanced the settings management to persist reading ruler configurations.
- Updated viewer component to utilize reading ruler settings.
- Removed isParagraphMode from the state object.
- Implemented handling for isParagraphMode toggle in the component.
- Added a setTimeout to render the book after toggling paragraph mode.
- Added "Enable paragraph mode" option to the reader settings.
- Updated English and Chinese localization files to include the new setting.
- Modified the SettingSwitch component to handle the new paragraph mode state.
- Integrated paragraph mode into the viewer component to conditionally render background.
- Updated Redux actions, reducers, and state to manage paragraph mode.
- Implemented `streamProcessBookContent` method to handle streaming imports for CBZ and CBT file types.
- Added error handling for non-Electron environments.
- Updated dependencies in yarn.lock to include new packages and versions for improved functionality.
- Added a new sidebar icon to the icomoon font set.
- Updated font files (EOT, TTF, WOFF, SVG) to include the new icon.
- Modified style.css to reference the updated font files and include the new sidebar icon.
- Integrated the sidebar icon into the PopupBox component for drag handle functionality.
- Added logic to set the default dictionary service to "official-ai-dict-plugin" for authenticated users.
- Updated state management to retrieve dictionary service from ConfigService consistently.
- Removed redundant checks and streamlined the flow for determining dictionary text retrieval.
- Cleared dictionary, translation, and AI service configurations upon token clearance in common.ts.
- Removed redundant checks for PDF format when processing nodeTextList and visibleTextList.
- Consolidated sentence splitting logic into a single mapping operation for both nodeTextList and visibleTextList.
- Adjusted the speed parameter in the speech synthesis initialization from 20 to 10 for improved audio performance.
- Cleaned up conditional statements in TextToSpeech and Reader components for better readability.
- Added console log for debugging purposes in TextToSpeech.
- Adjusted styling properties in Reader component for consistency.
- Enhanced toast message formatting in TextToSpeech for clarity.
- Updated the logic in the UpdateInfo component to prevent updates from being applied if the stable version matches the current version and the update channel is not set to "dev".
- Added a default option "Please select" to the update channel selection in the AboutSetting component for better user experience.
- add toastId parameter to showDownloadProgress to support multiple concurrent downloads
- use book.key-based toast id in redirectBook to prevent progress overlap
- use distinct toast id in importDialog to avoid conflicts with book downloads
Closes#0