🚀 OShin New CI Build!
Refactor(UI): Modularize main screen and navigation logic
This commit refactors the main UI structure by separating concerns into more modular components.
Key Changes:
- (New):
- Introduced a new composable to manage the application's navigation graph using .
- Handles all navigation routes previously defined in .
- Incorporates the logic.
- Includes the privacy dialog logic and UMeng analytics initialization based on privacy settings.
- Defines custom enter/exit/popEnter/popExit transitions for navigation.
- (New):
- Created composable to encapsulate the layout, including the and the bottom navigation bar ().
- Manages the for horizontal swiping between main sections.
- Implements logic to show/hide the bottom navigation bar based on scroll state and page changes.
- Utilizes for styling the .
- Defines composable to host the content of each main tab.
- (New):
- Extracted the composable and its related into a separate file.
- The dialog prompts users (primarily Chinese language users) to verify by inputting a GitHub URL for the module, checking against specific repository paths.
- Verification status is stored in SharedPreferences to avoid showing the dialog repeatedly for the same app version.
- :
- Significantly simplified.
- The composable (which previously contained the and main screen logic) has been removed.
- now directly calls within the and .
- UMeng pre-initialization is removed as full initialization is now handled in based on privacy consent.
- :
- In the modifier, and are added around the drawing operations. This ensures that the canvas state (like transformations or clips applied for the shadow) doesn't leak and affect subsequent drawing operations. This is a common fix for unexpected drawing behavior when manually drawing shadows or complex effects on a Canvas.
- Relocation:
- The definition was moved from to and imported where needed (, ). This improves modularity by keeping the definition closer to its primary usage area.
- Minor Cleanups:
- Removed unused imports (e.g., in ).
- Standardized some imports.
This refactoring aims to improve code organization, readability, and maintainability by separating navigation, main screen layout, and specific dialog logic into distinct, manageable units.
🔗 查看本次提交
Refactor(UI): Modularize main screen and navigation logic
This commit refactors the main UI structure by separating concerns into more modular components.
Key Changes:
- (New):
- Introduced a new composable to manage the application's navigation graph using .
- Handles all navigation routes previously defined in .
- Incorporates the logic.
- Includes the privacy dialog logic and UMeng analytics initialization based on privacy settings.
- Defines custom enter/exit/popEnter/popExit transitions for navigation.
- (New):
- Created composable to encapsulate the layout, including the and the bottom navigation bar ().
- Manages the for horizontal swiping between main sections.
- Implements logic to show/hide the bottom navigation bar based on scroll state and page changes.
- Utilizes for styling the .
- Defines composable to host the content of each main tab.
- (New):
- Extracted the composable and its related into a separate file.
- The dialog prompts users (primarily Chinese language users) to verify by inputting a GitHub URL for the module, checking against specific repository paths.
- Verification status is stored in SharedPreferences to avoid showing the dialog repeatedly for the same app version.
- :
- Significantly simplified.
- The composable (which previously contained the and main screen logic) has been removed.
- now directly calls within the and .
- UMeng pre-initialization is removed as full initialization is now handled in based on privacy consent.
- :
- In the modifier, and are added around the drawing operations. This ensures that the canvas state (like transformations or clips applied for the shadow) doesn't leak and affect subsequent drawing operations. This is a common fix for unexpected drawing behavior when manually drawing shadows or complex effects on a Canvas.
- Relocation:
- The definition was moved from to and imported where needed (, ). This improves modularity by keeping the definition closer to its primary usage area.
- Minor Cleanups:
- Removed unused imports (e.g., in ).
- Standardized some imports.
This refactoring aims to improve code organization, readability, and maintainability by separating navigation, main screen layout, and specific dialog logic into distinct, manageable units.
🔗 查看本次提交
GitHub
Refactor(UI): Modularize main screen and navigation logic · suqi8/OShin@4e27df1
This commit refactors the main UI structure by separating concerns into more modular components.
**Key Changes:**
- **`AppNavHost.kt` (New):**
- Introduced a new composable `AppNavHost` to ma...
**Key Changes:**
- **`AppNavHost.kt` (New):**
- Introduced a new composable `AppNavHost` to ma...
❤4
🚀 OShin New CI Build!
feat(Settings): Bypass duplicate fingerprint error and remove feature hooks
This commit introduces a bypass for the duplicate fingerprint error during enrollment and removes the extensive, now-obsolete feature flag hooking mechanism for .
Key Changes:
- Bypass Duplicate Fingerprint Error ():
- A new hook is added for .
- It targets the method.
- When a duplicate fingerprint is detected (help code ), the hook intercepts the error, prevents the original error-handling logic, and instead programmatically calls via the activity's . This forces the enrollment to complete successfully, allowing the same fingerprint to be registered multiple times.
- Removal of Feature Flag Hooks:
- The entire hook file () has been deleted. This file contained a very large number of individual hooks for and to forcibly enable or disable specific OS features.
- The corresponding UI file () that provided switches for these hooks has also been deleted.
- The navigation entry and search index entries for this feature page have been removed from and , respectively, completing the feature's removal.
- An entry point to this feature page in has been removed.
This refactoring streamlines the module by removing a complex and potentially unstable set of hooks, while adding a targeted fix for a common user request regarding fingerprint enrollment.
🔗 查看本次提交
feat(Settings): Bypass duplicate fingerprint error and remove feature hooks
This commit introduces a bypass for the duplicate fingerprint error during enrollment and removes the extensive, now-obsolete feature flag hooking mechanism for .
Key Changes:
- Bypass Duplicate Fingerprint Error ():
- A new hook is added for .
- It targets the method.
- When a duplicate fingerprint is detected (help code ), the hook intercepts the error, prevents the original error-handling logic, and instead programmatically calls via the activity's . This forces the enrollment to complete successfully, allowing the same fingerprint to be registered multiple times.
- Removal of Feature Flag Hooks:
- The entire hook file () has been deleted. This file contained a very large number of individual hooks for and to forcibly enable or disable specific OS features.
- The corresponding UI file () that provided switches for these hooks has also been deleted.
- The navigation entry and search index entries for this feature page have been removed from and , respectively, completing the feature's removal.
- An entry point to this feature page in has been removed.
This refactoring streamlines the module by removing a complex and potentially unstable set of hooks, while adding a targeted fix for a common user request regarding fingerprint enrollment.
🔗 查看本次提交
GitHub
feat(Settings): Bypass duplicate fingerprint error and remove feature… · suqi8/OShin@952f343
… hooks
This commit introduces a bypass for the duplicate fingerprint error during enrollment and removes the extensive, now-obsolete feature flag hooking mechanism for `com.android.settings`.
**...
This commit introduces a bypass for the duplicate fingerprint error during enrollment and removes the extensive, now-obsolete feature flag hooking mechanism for `com.android.settings`.
**...
❤1
🚀 OShin New CI Build!
feat(UI): Remove HUD background from Home and Module screens
This commit removes the animated HUD style background effect from the Home and Module screens.
Key Changes:
- :
- The composable, which rendered a grid and a scanning line animation, has been deleted.
- The call to has been removed from the composable.
- :
- The call to has been removed from the composable.
This change simplifies the UI by removing a purely cosmetic animated element from the background of the main screens.
🔗 查看本次提交
feat(UI): Remove HUD background from Home and Module screens
This commit removes the animated HUD style background effect from the Home and Module screens.
Key Changes:
- :
- The composable, which rendered a grid and a scanning line animation, has been deleted.
- The call to has been removed from the composable.
- :
- The call to has been removed from the composable.
This change simplifies the UI by removing a purely cosmetic animated element from the background of the main screens.
🔗 查看本次提交
GitHub
feat(UI): Remove HUD background from Home and Module screens · suqi8/OShin@5fb4a8c
This commit removes the animated "HUD" style background effect from the Home and Module screens.
**Key Changes:**
- **`Main_Home.kt`:**
- The `HUDBackground` composable, whi...
**Key Changes:**
- **`Main_Home.kt`:**
- The `HUDBackground` composable, whi...
🚀 OShin New CI Build!
feat: Replace LiquidGlass with new Backdrop library and refactor UI
This commit completely replaces the library with a new, more modular library for creating glassmorphism and other complex UI effects. The main screen UI and several components have been refactored to use this new library.
### Key Changes:
#### 1. Library Replacement: ->
- Removed : All files related to the library have been deleted. This includes modifiers, providers, states, samplers, and effect definitions for refraction, highlight, and shadow.
- Added : A new, comprehensive library has been introduced. This library provides a more powerful and flexible API for building layered UI effects.
- Core Concepts:
- : A unified interface for defining background content.
- : A new modifier that applies a , along with various effects like , , , and (blur, lens, color controls).
- : A specific implementation that captures and displays content from a .
- Effects: A rich set of composable effects are now available under , including , (refraction), and various adjustments.
- Shaders: New AGSL shaders () have been added to power the new effects, such as and .
- Shadows & Highlights: New implementations for , , and are provided with a more robust and flexible modifier-based application.
#### 2. Main Screen Refactoring ()
- Haze Integration: Replaced on the with the from the library for a blurred background effect.
- Bottom Navigation Rework ():
- The custom composable has been completely rewritten to use the new library.
- Removed implementation and replaced it with to create the glass effect.
- Introduced and to create a more fluid, physics-based animation for the tab indicator, including interactive highlighting and gesture handling.
- The bottom bar is now composed of multiple layers using to achieve complex effects like shadows, highlights, and lens refraction on the active tab indicator.
#### 3. Component Refactoring
- (New):
- A new reusable button component that uses the library to create a glass-like appearance.
- It's now used for the back and refresh buttons in and , replacing the previous implementation.
- :
- The confirmation dialog has been completely redesigned.
- It no longer uses or .
- It's now a custom dialog composable that uses to create a blurred, glass-like modal background, applying effects like , , and .
#### 4. Build Configuration
- :
- Enabled Kotlin's context parameters () which are required by the new library's API design.
🔗 查看本次提交
feat: Replace LiquidGlass with new Backdrop library and refactor UI
This commit completely replaces the library with a new, more modular library for creating glassmorphism and other complex UI effects. The main screen UI and several components have been refactored to use this new library.
### Key Changes:
#### 1. Library Replacement: ->
- Removed : All files related to the library have been deleted. This includes modifiers, providers, states, samplers, and effect definitions for refraction, highlight, and shadow.
- Added : A new, comprehensive library has been introduced. This library provides a more powerful and flexible API for building layered UI effects.
- Core Concepts:
- : A unified interface for defining background content.
- : A new modifier that applies a , along with various effects like , , , and (blur, lens, color controls).
- : A specific implementation that captures and displays content from a .
- Effects: A rich set of composable effects are now available under , including , (refraction), and various adjustments.
- Shaders: New AGSL shaders () have been added to power the new effects, such as and .
- Shadows & Highlights: New implementations for , , and are provided with a more robust and flexible modifier-based application.
#### 2. Main Screen Refactoring ()
- Haze Integration: Replaced on the with the from the library for a blurred background effect.
- Bottom Navigation Rework ():
- The custom composable has been completely rewritten to use the new library.
- Removed implementation and replaced it with to create the glass effect.
- Introduced and to create a more fluid, physics-based animation for the tab indicator, including interactive highlighting and gesture handling.
- The bottom bar is now composed of multiple layers using to achieve complex effects like shadows, highlights, and lens refraction on the active tab indicator.
#### 3. Component Refactoring
- (New):
- A new reusable button component that uses the library to create a glass-like appearance.
- It's now used for the back and refresh buttons in and , replacing the previous implementation.
- :
- The confirmation dialog has been completely redesigned.
- It no longer uses or .
- It's now a custom dialog composable that uses to create a blurred, glass-like modal background, applying effects like , , and .
#### 4. Build Configuration
- :
- Enabled Kotlin's context parameters () which are required by the new library's API design.
🔗 查看本次提交
GitHub
feat: Replace LiquidGlass with new Backdrop library and refactor UI · suqi8/OShin@4763be0
This commit completely replaces the `com.kyant.liquidglass` library with a new, more modular `com.kyant.backdrop` library for creating glassmorphism and other complex UI effects. The main screen UI...
🚀 OShin New CI Build!
feat(UI): Implement configurable haze effect on FunPage TopAppBar
This commit introduces a configurable glassmorphism/blur effect (haze) to the within the composable.
Key Changes in :
- Haze Effect Integration:
- The now uses the modifier from the library.
- A a few layers below the is designated as the to provide the content that will be blurred.
- The effect is configured with a vertical gradient, starting fully intense at the top and fading out.
- User Configuration:
- The properties of the haze effect are now loaded from (settings).
- Users can customize the following parameters:
- Alpha: (float, default: )
- Blur Radius: (int, default: )
- Noise Factor: (float, default: )
- Dependencies & Imports:
- Added necessary imports for the Haze library ().
- Added imports for () and to read the preference values.
🔗 查看本次提交
feat(UI): Implement configurable haze effect on FunPage TopAppBar
This commit introduces a configurable glassmorphism/blur effect (haze) to the within the composable.
Key Changes in :
- Haze Effect Integration:
- The now uses the modifier from the library.
- A a few layers below the is designated as the to provide the content that will be blurred.
- The effect is configured with a vertical gradient, starting fully intense at the top and fading out.
- User Configuration:
- The properties of the haze effect are now loaded from (settings).
- Users can customize the following parameters:
- Alpha: (float, default: )
- Blur Radius: (int, default: )
- Noise Factor: (float, default: )
- Dependencies & Imports:
- Added necessary imports for the Haze library ().
- Added imports for () and to read the preference values.
🔗 查看本次提交
GitHub
feat(UI): Implement configurable haze effect on FunPage TopAppBar · suqi8/OShin@ab767c0
This commit introduces a configurable glassmorphism/blur effect ("haze") to the `TopAppBar` within the `FunPage` composable.
**Key Changes in `FunPage.kt`:**
- **Haze Effect Int...
**Key Changes in `FunPage.kt`:**
- **Haze Effect Int...
🚀 OShin New CI Build!
Refactor(Settings): Disable fingerprint animation hook
This commit comments out the hook for .
Key Changes:
- In , the entire hook block targeting has been commented out. This hook was previously responsible for modifying fingerprint enrollment animations ( and ) by replacing them with custom animations from the module's assets.
This change temporarily disables the custom fingerprint enrollment animation feature.
🔗 查看本次提交
Refactor(Settings): Disable fingerprint animation hook
This commit comments out the hook for .
Key Changes:
- In , the entire hook block targeting has been commented out. This hook was previously responsible for modifying fingerprint enrollment animations ( and ) by replacing them with custom animations from the module's assets.
This change temporarily disables the custom fingerprint enrollment animation feature.
🔗 查看本次提交
GitHub
Refactor(Settings): Disable fingerprint animation hook · suqi8/OShin@492c19c
This commit comments out the hook for `com.oplus.settings.feature.fingerprint.NewFingerEnrollActivity`.
**Key Changes:**
- In `settings.kt`, the entire hook block targeting `NewFingerEnrollActivi...
**Key Changes:**
- In `settings.kt`, the entire hook block targeting `NewFingerEnrollActivi...
🚀 OShin New CI Build!
Refactor: Centralize feature UI with a declarative data model
重构中,普通用户无需下载
This commit introduces a major refactoring of the feature settings UI. It replaces dozens of individual, hardcoded Composable screen files with a centralized, declarative data model. A single composable now dynamically renders pages based on definitions from a .
This change decouples UI structure from rendering logic, making it significantly easier to add, modify, and search for features.
Key Changes:
- Declarative UI Model ():
- Introduced a set of and models to define UI components declaratively:
- : Defines a full screen with title, target apps, and a list of UI blocks ().
- : Represents blocks on a page, like or .
- : Defines individual components within a card, such as , , , (for navigation), (for image selection), and .
- : A flexible model for titles, supporting string resources, plain text, or dynamic app names.
- : Allows UI items to be shown or hidden based on the state of other items.
- Feature Registry ():
- A new central object that maps a route ID (e.g., ) to its corresponding .
- This registry is now the single source of truth for all feature screens.
- Initial definitions for and () have been created as examples of the new structure.
- Dynamic Feature Screen ( & ):
- Created , a generic composable that takes a and renders the entire UI by fetching its definition from the .
- A new Hilt-powered manages state for the dynamic screen. It loads initial values from , handles state updates, and evaluates display conditions.
- The navigation graph in now uses a single dynamic route to handle all feature pages.
- Module/Search Refactoring ():
- The main module list () has been refactored into its own package ().
- now manages the state for this screen, including search logic and app list style.
- The search index is now built once at startup by iterating through the , making search functionality more efficient and scalable.
- Search results now navigate to the dynamic route with a parameter to scroll to and highlight the specific setting.
- Component Abstraction:
- Reusable components like , , , , and have been refactored to be stateless. They now receive their state and lambdas from the ViewModel, following unidirectional data flow principles.
- Code Deletion:
- A large number of individual feature screen files (e.g., , , , , etc.) have been deleted. Their functionality will be progressively migrated to the new declarative model.
- was moved and its old version deleted.
- Dependencies:
- Added to support Hilt injection into ViewModels for composable navigation destinations.
🔗 查看本次提交
重构中,普通用户无需下载
Refactor: Centralize feature UI with a declarative data model
重构中,普通用户无需下载
This commit introduces a major refactoring of the feature settings UI. It replaces dozens of individual, hardcoded Composable screen files with a centralized, declarative data model. A single composable now dynamically renders pages based on definitions from a .
This change decouples UI structure from rendering logic, making it significantly easier to add, modify, and search for features.
Key Changes:
- Declarative UI Model ():
- Introduced a set of and models to define UI components declaratively:
- : Defines a full screen with title, target apps, and a list of UI blocks ().
- : Represents blocks on a page, like or .
- : Defines individual components within a card, such as , , , (for navigation), (for image selection), and .
- : A flexible model for titles, supporting string resources, plain text, or dynamic app names.
- : Allows UI items to be shown or hidden based on the state of other items.
- Feature Registry ():
- A new central object that maps a route ID (e.g., ) to its corresponding .
- This registry is now the single source of truth for all feature screens.
- Initial definitions for and () have been created as examples of the new structure.
- Dynamic Feature Screen ( & ):
- Created , a generic composable that takes a and renders the entire UI by fetching its definition from the .
- A new Hilt-powered manages state for the dynamic screen. It loads initial values from , handles state updates, and evaluates display conditions.
- The navigation graph in now uses a single dynamic route to handle all feature pages.
- Module/Search Refactoring ():
- The main module list () has been refactored into its own package ().
- now manages the state for this screen, including search logic and app list style.
- The search index is now built once at startup by iterating through the , making search functionality more efficient and scalable.
- Search results now navigate to the dynamic route with a parameter to scroll to and highlight the specific setting.
- Component Abstraction:
- Reusable components like , , , , and have been refactored to be stateless. They now receive their state and lambdas from the ViewModel, following unidirectional data flow principles.
- Code Deletion:
- A large number of individual feature screen files (e.g., , , , , etc.) have been deleted. Their functionality will be progressively migrated to the new declarative model.
- was moved and its old version deleted.
- Dependencies:
- Added to support Hilt injection into ViewModels for composable navigation destinations.
🔗 查看本次提交
重构中,普通用户无需下载
❤2
🚀 OShin New CI Build!
Refactor(Module): Handle and display not-installed target apps
This commit refactors the module list screen to gracefully handle cases where a feature's target application is not installed on the user's device. Instead of failing silently, it now collects these missing apps and provides a dedicated, noticeable link to a Help page that lists them.
This improves user experience by clearly communicating why certain feature pages might be inaccessible.
### Key Changes:
- State Management ( & ):
- A new set has been added to to track the package names of missing applications.
- A new function in allows the UI to report a missing app, which is then added to the state.
- and data classes have been moved to their own separate files for better organization.
- Module Screen UI ():
- The composable now invokes the callback when a target app for a module entry isn't found.
- A new component appears conditionally at the bottom of the module list, only when is not empty.
- Clicking this arrow navigates the user to a new notice page, passing the list of missing package names as a navigation argument.
- App Not Found Notice Page ():
- The composable has been renamed to and is now a dynamic screen.
- It accepts a string argument from the navigation route.
- It parses this string to display a list of the specific applications that were not found, providing clear feedback to the user.
- Navigation ():
- The route for the notice page has been updated from a static to a dynamic to support passing the list of missing package names.
- Minor UX Improvement ():
- Added and modifiers to the in to provide standard over-scroll and haptic feedback, enhancing the scrolling experience.
重构中,普通用户无需更新
🔗 查看本次提交
Refactor(Module): Handle and display not-installed target apps
This commit refactors the module list screen to gracefully handle cases where a feature's target application is not installed on the user's device. Instead of failing silently, it now collects these missing apps and provides a dedicated, noticeable link to a Help page that lists them.
This improves user experience by clearly communicating why certain feature pages might be inaccessible.
### Key Changes:
- State Management ( & ):
- A new set has been added to to track the package names of missing applications.
- A new function in allows the UI to report a missing app, which is then added to the state.
- and data classes have been moved to their own separate files for better organization.
- Module Screen UI ():
- The composable now invokes the callback when a target app for a module entry isn't found.
- A new component appears conditionally at the bottom of the module list, only when is not empty.
- Clicking this arrow navigates the user to a new notice page, passing the list of missing package names as a navigation argument.
- App Not Found Notice Page ():
- The composable has been renamed to and is now a dynamic screen.
- It accepts a string argument from the navigation route.
- It parses this string to display a list of the specific applications that were not found, providing clear feedback to the user.
- Navigation ():
- The route for the notice page has been updated from a static to a dynamic to support passing the list of missing package names.
- Minor UX Improvement ():
- Added and modifiers to the in to provide standard over-scroll and haptic feedback, enhancing the scrolling experience.
重构中,普通用户无需更新
🔗 查看本次提交
GitHub
Refactor(Module): Handle and display not-installed target apps · suqi8/OShin@82af074
This commit refactors the module list screen to gracefully handle cases where a feature's target application is not installed on the user's device. Instead of failing silently, it n...