🚀 **OShin New CI Build!**
Refactor(UI): Adjust spacing and reorder sections on MainHome screen
This commit refactors the layout of the screen for better visual organization.
The top spacer has been reduced from to to decrease the empty space at the top of the screen.
Additionally, the Today Highlights section has been moved to appear after the All Features section, improving the logical flow of content on the page.
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/4b4bee4951f94bcfd3e2e4003e124d30e5d26e89)
Refactor(UI): Adjust spacing and reorder sections on MainHome screen
This commit refactors the layout of the screen for better visual organization.
The top spacer has been reduced from to to decrease the empty space at the top of the screen.
Additionally, the Today Highlights section has been moved to appear after the All Features section, improving the logical flow of content on the page.
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/4b4bee4951f94bcfd3e2e4003e124d30e5d26e89)
GitHub
Refactor(UI): Adjust spacing and reorder sections on MainHome screen · suqi8/OShin@4b4bee4
This commit refactors the layout of the `MainHome` screen for better visual organization.
The top spacer has been reduced from `88.dp` to `16.dp` to decrease the empty space at the top of the scre...
The top spacer has been reduced from `88.dp` to `16.dp` to decrease the empty space at the top of the scre...
🚀 **OShin New CI Build!**
Feat(UI): Refactor main screen and add bottom bar style option
This commit introduces significant refactoring to the main screen, improves componentization, and adds a new option to switch the bottom navigation bar style.
### Key Changes:
* **Bottom Navigation Bar Style:**
* A new setting, Disable bottom bar glass effect (), has been added to the About screen.
* When enabled, the custom glass-style is replaced with the standard .
* This provides users with a choice between a visually rich or a more conventional navigation experience.
* **Main Screen Refactoring:**
* The logic for the main screen () has been heavily refactored for clarity and better structure.
* Complex UI elements and effects have been extracted into their own composable functions:
* : A new composable for rendering the blurred top app bar background.
* : The update dialog logic has been moved to its own file.
* : A new composable to manage the animation and style-switching of the bottom navigation bar.
* : A dedicated effect to handle the show/hide logic of the bottom bar based on scroll state.
* : A custom modifier to apply the blur effect to pager pages during scrolling, cleaning up the pager's content lambda.
* Code within is now better organized with more descriptive function and variable names.
* **Component & Type Updates:**
* The custom data class has been removed in favor of .
* The composable now uses instead of a painter resource ID for icons, aligning with the new type.
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/18e3ce3cacc7eeccf8409f598ac9cf441cb8f75d)
Feat(UI): Refactor main screen and add bottom bar style option
This commit introduces significant refactoring to the main screen, improves componentization, and adds a new option to switch the bottom navigation bar style.
### Key Changes:
* **Bottom Navigation Bar Style:**
* A new setting, Disable bottom bar glass effect (), has been added to the About screen.
* When enabled, the custom glass-style is replaced with the standard .
* This provides users with a choice between a visually rich or a more conventional navigation experience.
* **Main Screen Refactoring:**
* The logic for the main screen () has been heavily refactored for clarity and better structure.
* Complex UI elements and effects have been extracted into their own composable functions:
* : A new composable for rendering the blurred top app bar background.
* : The update dialog logic has been moved to its own file.
* : A new composable to manage the animation and style-switching of the bottom navigation bar.
* : A dedicated effect to handle the show/hide logic of the bottom bar based on scroll state.
* : A custom modifier to apply the blur effect to pager pages during scrolling, cleaning up the pager's content lambda.
* Code within is now better organized with more descriptive function and variable names.
* **Component & Type Updates:**
* The custom data class has been removed in favor of .
* The composable now uses instead of a painter resource ID for icons, aligning with the new type.
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/18e3ce3cacc7eeccf8409f598ac9cf441cb8f75d)
GitHub
Feat(UI): Refactor main screen and add bottom bar style option · suqi8/OShin@18e3ce3
This commit introduces significant refactoring to the main screen, improves componentization, and adds a new option to switch the bottom navigation bar style.
### Key Changes:
* **Bottom Naviga...
### Key Changes:
* **Bottom Naviga...
🚀 **OShin New CI Build!**
Fix(SoftUpdate): Prefer for release date
This commit updates the software update page to prioritize the date from the GitHub release information.
If is available, it will be used as the release date. If it is null, the system will fall back to using the date. This ensures that the displayed release date more accurately reflects when the release was officially published, rather than just when it was created.
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/6be3f06bcd801d6ec6f359c8feae7d21b267401c)
Fix(SoftUpdate): Prefer for release date
This commit updates the software update page to prioritize the date from the GitHub release information.
If is available, it will be used as the release date. If it is null, the system will fall back to using the date. This ensures that the displayed release date more accurately reflects when the release was officially published, rather than just when it was created.
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/6be3f06bcd801d6ec6f359c8feae7d21b267401c)
GitHub
Fix(SoftUpdate): Prefer `published_at` for release date · suqi8/OShin@6be3f06
This commit updates the software update page to prioritize the `published_at` date from the GitHub release information.
If `published_at` is available, it will be used as the release date. If it i...
If `published_at` is available, it will be used as the release date. If it i...
❤2
🚀 **OShin New CI Build!**
Merge pull request #69 from Liberations/mydev
fix(securitypermission): replace 30-day label with Always allow
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/0ae79229f25f7fab1d21c95495c2baddc2d8ac2b)
Merge pull request #69 from Liberations/mydev
fix(securitypermission): replace 30-day label with Always allow
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/0ae79229f25f7fab1d21c95495c2baddc2d8ac2b)
GitHub
Merge pull request #69 from Liberations/mydev · suqi8/OShin@0ae7922
fix(securitypermission): replace 30-day label with "Always allow"
🚀 **OShin New CI Build!**
Merge remote-tracking branch 'origin/master'
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/14923029ee02e7bd286a1b4c0dd3d2f7ade64a21)
Merge remote-tracking branch 'origin/master'
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/14923029ee02e7bd286a1b4c0dd3d2f7ade64a21)
GitHub
Merge remote-tracking branch 'origin/master' · suqi8/OShin@1492302
一个专为ColorOS系统设计的辅助模块. Contribute to suqi8/OShin development by creating an account on GitHub.
🚀 **OShin New CI Build!**
Feat(Module): Cache app info and preserve scroll state
This commit introduces significant performance and user experience improvements to the module list screen. It implements a caching layer for application information and preserves the user's scroll position, resulting in a faster and more seamless browsing experience.
### Key Changes:
* **App Information Caching:**
* A new data class has been created to store an app's name, icon, and dominant color.
* The now includes a () to cache this data.
* When an app item is loaded, the system first checks the ViewModel's cache. If the data exists, it's rendered immediately, avoiding redundant lookups and color calculations.
* If the information is not cached, it is fetched, and the result is stored in the ViewModel for future use. This significantly speeds up list rendering, especially when scrolling back and forth.
* **Scroll Position Preservation:**
* The now tracks the and of the module list.
* The screen uses initialized with the values from the ViewModel, restoring the user's scroll position when they return to the screen.
* A with has been added to continuously monitor and save the scroll position to the ViewModel as the user scrolls.
* **UI State Persistence:**
* In , the state has been changed to use . This ensures the bottom bar's visibility state (shown or hidden based on scroll) is preserved across configuration changes, such as device rotation.
* **UI Refinements:**
* Replaced with the standard composable for consistency in the module list and search results.
* Minor styling adjustments have been made to the .
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/fdf0c86dedd9ccf72cc3712eabc19a6aedd8b472)
Feat(Module): Cache app info and preserve scroll state
This commit introduces significant performance and user experience improvements to the module list screen. It implements a caching layer for application information and preserves the user's scroll position, resulting in a faster and more seamless browsing experience.
### Key Changes:
* **App Information Caching:**
* A new data class has been created to store an app's name, icon, and dominant color.
* The now includes a () to cache this data.
* When an app item is loaded, the system first checks the ViewModel's cache. If the data exists, it's rendered immediately, avoiding redundant lookups and color calculations.
* If the information is not cached, it is fetched, and the result is stored in the ViewModel for future use. This significantly speeds up list rendering, especially when scrolling back and forth.
* **Scroll Position Preservation:**
* The now tracks the and of the module list.
* The screen uses initialized with the values from the ViewModel, restoring the user's scroll position when they return to the screen.
* A with has been added to continuously monitor and save the scroll position to the ViewModel as the user scrolls.
* **UI State Persistence:**
* In , the state has been changed to use . This ensures the bottom bar's visibility state (shown or hidden based on scroll) is preserved across configuration changes, such as device rotation.
* **UI Refinements:**
* Replaced with the standard composable for consistency in the module list and search results.
* Minor styling adjustments have been made to the .
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/fdf0c86dedd9ccf72cc3712eabc19a6aedd8b472)
GitHub
Feat(Module): Cache app info and preserve scroll state · suqi8/OShin@fdf0c86
This commit introduces significant performance and user experience improvements to the module list screen. It implements a caching layer for application information and preserves the user's...
❤1
🚀 **OShin New CI Build!**
Refactor(UI): Remove unused and relocate
This commit cleans up the main module by removing an unused class and relocating the composable to a more appropriate component file.
* The class, which provided a custom shape with cut corners, has been removed as it is no longer in use.
* The composable function has been moved to to improve code organization.
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/2bb9bc3ff521b08463c4c99a0136b653785107d1)
Refactor(UI): Remove unused and relocate
This commit cleans up the main module by removing an unused class and relocating the composable to a more appropriate component file.
* The class, which provided a custom shape with cut corners, has been removed as it is no longer in use.
* The composable function has been moved to to improve code organization.
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/2bb9bc3ff521b08463c4c99a0136b653785107d1)
GitHub
Refactor(UI): Remove unused `CutCornerShape` and relocate `addline` · suqi8/OShin@2bb9bc3
This commit cleans up the main module by removing an unused `CutCornerShape` class and relocating the `addline` composable to a more appropriate component file.
* The `CutCornerShape` class, whi...
* The `CutCornerShape` class, whi...
🚀 **OShin New CI Build!**
Refactor(UI): Move common components to a shared directory
This commit reorganizes the project structure by moving reusable UI components into a common directory.
The following composables have been relocated from to :
*
*
Import statements in , , and have been updated to reflect the new file paths. This change improves code organization by grouping shared components together.
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/862dade3d7122690a7a4eb652c32686a2e11c385)
Refactor(UI): Move common components to a shared directory
This commit reorganizes the project structure by moving reusable UI components into a common directory.
The following composables have been relocated from to :
*
*
Import statements in , , and have been updated to reflect the new file paths. This change improves code organization by grouping shared components together.
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/862dade3d7122690a7a4eb652c32686a2e11c385)
GitHub
Refactor(UI): Move common components to a shared directory · suqi8/OShin@862dade
This commit reorganizes the project structure by moving reusable UI components into a common `activity/components` directory.
The following composables have been relocated from `ui/components` to ...
The following composables have been relocated from `ui/components` to ...
🚀 **OShin New CI Build!**
Refactor(UI): Revamp module screen with Miuix and component refactoring
This commit significantly refactors the main module screen, replacing the custom search implementation with the , and restructuring components for better organization and performance.
### Key Changes:
* **Search Bar Implementation:**
* Replaced the custom with the standardized .
* The new implementation provides a native Miuix look and feel, including expand/collapse animations and a dedicated results content area.
* Search state is now more cleanly managed within the view model and the main screen composable.
* **Component Refactoring & Simplification:**
* The main composable has been cleaned up. The logic for displaying the app list and search results is now separated.
* UI components have been broken down into smaller, more focused composables with clearer names (e.g., , , , , ).
* Removed unused or replaced components like , , and .
* Replaced the custom divider with the , which respects a new user setting () for visibility.
* The composable is now consistently sourced from .
* **Code Structure and Readability:**
* The file is now organized with clear headers for different sections (Main Screen, Search Bar, App List, etc.).
* Redundant logic within the list/grid item composables (, ) has been extracted into dedicated functions. This separates data loading/caching from pure UI rendering.
* Function names have been made more descriptive (e.g., -> , -> ).
* **Performance & Caching:**
* The logic for loading, caching, and displaying app icons and their dominant colors remains, but it is now better integrated into the refactored component structure. This avoids re-composition and redundant data fetching.
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/80ee01a57e30a54741b1f4e7c97a0e6b5c2ef20b)
Refactor(UI): Revamp module screen with Miuix and component refactoring
This commit significantly refactors the main module screen, replacing the custom search implementation with the , and restructuring components for better organization and performance.
### Key Changes:
* **Search Bar Implementation:**
* Replaced the custom with the standardized .
* The new implementation provides a native Miuix look and feel, including expand/collapse animations and a dedicated results content area.
* Search state is now more cleanly managed within the view model and the main screen composable.
* **Component Refactoring & Simplification:**
* The main composable has been cleaned up. The logic for displaying the app list and search results is now separated.
* UI components have been broken down into smaller, more focused composables with clearer names (e.g., , , , , ).
* Removed unused or replaced components like , , and .
* Replaced the custom divider with the , which respects a new user setting () for visibility.
* The composable is now consistently sourced from .
* **Code Structure and Readability:**
* The file is now organized with clear headers for different sections (Main Screen, Search Bar, App List, etc.).
* Redundant logic within the list/grid item composables (, ) has been extracted into dedicated functions. This separates data loading/caching from pure UI rendering.
* Function names have been made more descriptive (e.g., -> , -> ).
* **Performance & Caching:**
* The logic for loading, caching, and displaying app icons and their dominant colors remains, but it is now better integrated into the refactored component structure. This avoids re-composition and redundant data fetching.
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/80ee01a57e30a54741b1f4e7c97a0e6b5c2ef20b)
GitHub
Refactor(UI): Revamp module screen with Miuix `SearchBar` and compone… · suqi8/OShin@80ee01a
…nt refactoring
This commit significantly refactors the main module screen, replacing the custom search implementation with the `MiuixTheme` `SearchBar`, and restructuring components for better or...
This commit significantly refactors the main module screen, replacing the custom search implementation with the `MiuixTheme` `SearchBar`, and restructuring components for better or...
🚀 **OShin New CI Build!**
Refactor(Core): Centralize app info caching and logic with
This commit introduces a major refactoring to centralize all application information (name, icon, dominant color) fetching and caching. It replaces several disparate and component-specific caching implementations with a single, robust, and lifecycle-aware data layer. This significantly improves performance, reduces code duplication, and enhances state management across the app.
### Key Changes:
* ** (Singleton Repository):**
* A new class has been introduced as a repository.
* It is now the single source of truth for all app metadata (name and icon).
* It uses a for thread-safe in-memory caching, including caching for uninstalled apps to prevent repeated lookups.
* This replaces the old, scattered implementations in and .
* ** (Singleton):**
* A new utility class has been created to handle the conversion of internal feature routes (e.g., ) into human-readable breadcrumbs (e.g., ).
* It leverages to asynchronously resolve app names within routes, replacing the old, hardcoded .
* This logic is now centralized and cleanly separated from the UI.
* **Refactored ViewModels:**
* ****: Now injects and . It fetches app names, icons, and dominant colors through a unified function. Search results now have pre-formatted breadcrumbs.
* ****: Also uses to pre-calculate and cache formatted routes for Today Highlights features, simplifying the logic.
* ****: A new ViewModel for the app selection dialog. It manages the full app list, search state, and caching of UI info (icon/color), making the component stateless and more efficient.
* ****: A new ViewModel for the app restart dialog. It handles the logic for fetching app info for the restart list and executing the restart commands, abstracting the logic from the UI.
* **Refactored UI Components:**
* ** (Module Screen):**
* The and composables no longer contain any data-fetching or caching logic. They now observe from the 's cache.
* The UI reacts to three states: loading (placeholder), loaded (displays info), and not installed (item is hidden).
* ** (App Selection Dialog):**
* The component has been completely refactored to be driven by the new . All state management, app loading, and searching logic has been moved to the ViewModel.
* The composable is now simpler and focuses purely on rendering the UI based on the state provided by the ViewModel.
* ** -> :**
* The app restart dialog has been moved to its own package and is now backed by .
* All logic for fetching app info and executing restart commands is now handled in the ViewModel, cleaning up the Composable.
* ** (Home Screen):**
* Feature cards (, , etc.) now receive a data class containing the pre-formatted route, removing calls from the UI layer.
* **Code Deletion and Consolidation:**
* , , and the old have been deleted, as their functionality is now covered by the new centralized providers and ViewModels.
* Helper functions like have been moved to a central file.
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/01e98c1688cf67e45dd0ad6d5836c4ec367755b7)
Refactor(Core): Centralize app info caching and logic with
This commit introduces a major refactoring to centralize all application information (name, icon, dominant color) fetching and caching. It replaces several disparate and component-specific caching implementations with a single, robust, and lifecycle-aware data layer. This significantly improves performance, reduces code duplication, and enhances state management across the app.
### Key Changes:
* ** (Singleton Repository):**
* A new class has been introduced as a repository.
* It is now the single source of truth for all app metadata (name and icon).
* It uses a for thread-safe in-memory caching, including caching for uninstalled apps to prevent repeated lookups.
* This replaces the old, scattered implementations in and .
* ** (Singleton):**
* A new utility class has been created to handle the conversion of internal feature routes (e.g., ) into human-readable breadcrumbs (e.g., ).
* It leverages to asynchronously resolve app names within routes, replacing the old, hardcoded .
* This logic is now centralized and cleanly separated from the UI.
* **Refactored ViewModels:**
* ****: Now injects and . It fetches app names, icons, and dominant colors through a unified function. Search results now have pre-formatted breadcrumbs.
* ****: Also uses to pre-calculate and cache formatted routes for Today Highlights features, simplifying the logic.
* ****: A new ViewModel for the app selection dialog. It manages the full app list, search state, and caching of UI info (icon/color), making the component stateless and more efficient.
* ****: A new ViewModel for the app restart dialog. It handles the logic for fetching app info for the restart list and executing the restart commands, abstracting the logic from the UI.
* **Refactored UI Components:**
* ** (Module Screen):**
* The and composables no longer contain any data-fetching or caching logic. They now observe from the 's cache.
* The UI reacts to three states: loading (placeholder), loaded (displays info), and not installed (item is hidden).
* ** (App Selection Dialog):**
* The component has been completely refactored to be driven by the new . All state management, app loading, and searching logic has been moved to the ViewModel.
* The composable is now simpler and focuses purely on rendering the UI based on the state provided by the ViewModel.
* ** -> :**
* The app restart dialog has been moved to its own package and is now backed by .
* All logic for fetching app info and executing restart commands is now handled in the ViewModel, cleaning up the Composable.
* ** (Home Screen):**
* Feature cards (, , etc.) now receive a data class containing the pre-formatted route, removing calls from the UI layer.
* **Code Deletion and Consolidation:**
* , , and the old have been deleted, as their functionality is now covered by the new centralized providers and ViewModels.
* Helper functions like have been moved to a central file.
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/01e98c1688cf67e45dd0ad6d5836c4ec367755b7)
GitHub
Refactor(Core): Centralize app info caching and logic with `AppInfoPr… · suqi8/OShin@01e98c1
…ovider`
This commit introduces a major refactoring to centralize all application information (name, icon, dominant color) fetching and caching. It replaces several disparate and component-specifi...
This commit introduces a major refactoring to centralize all application information (name, icon, dominant color) fetching and caching. It replaces several disparate and component-specifi...