🚀 OShin New CI Build!
Refactor(LiquidGlass): Improve performance and API consistency
This commit introduces several refactorings and improvements to the LiquidGlass library, focusing on performance, API consistency, and resource management.
Key Changes:
- & :
- Introduced : A new optional parameter has been added to the modifier and . This allows for custom transformations to be applied to the layer that draws the blurred background content before it's used as the glass effect.
- The recording for the background content now conditionally applies this .
- Sampler Lifecycle & Update Logic:
- flag introduced in to track when the changes.
- : New private function to handle sampler re-initialization, job cancellation, and recreation when the sampler changes. This improves resource management and ensures the correct sampler is active.
- Sampler layer recording is now also triggered by or .
- Resource Management:
- Sampler layer () is now properly released and nulled in and when the sampler changes in .
- State Update Granularity:
- The main function in now checks for changes in and separately to trigger specific update paths (, flag), leading to more targeted redraws.
- & :
- Simplified Shape Update: Removed and the explicit mechanism. The shape is now directly read from within the .
- Invalidation Logic: is now called when either or changes in the function.
- Placement: Uses for consistency.
- :
- Invalidation on Property Change: When , , or properties are set, is reset to and is called. This ensures the highlight is correctly redrawn when these dependencies change.
- Drawing Content When No Highlight: If , it now uses instead of an empty to ensure the underlying content is drawn.
- :
- UI Thread for Callback: The callback is now invoked directly on the thread where is called (presumably the main thread if called from Compose UI), removing the explicit . This relies on the caller to manage thread context for the callback.
- Bitmap operations (, ) are now wrapped in to ensure they run off the main thread.
- :
- Minor reordering of member declarations.
- (Deleted) & :
- The standalone file and its function have been removed.
- The function has been moved into and marked as , guiding users to use the more general instead.
- :
- Removed property from the data class and its instance.
- :
- Minor code simplification in by directly accessing , , and .
- :
- Removed KDoc comments for the properties as they are self-explanatory.
These changes aim to make the LiquidGlass library more efficient, robust, and easier to use by improving its internal update mechanisms and API design.
🔗 查看本次提交
Refactor(LiquidGlass): Improve performance and API consistency
This commit introduces several refactorings and improvements to the LiquidGlass library, focusing on performance, API consistency, and resource management.
Key Changes:
- & :
- Introduced : A new optional parameter has been added to the modifier and . This allows for custom transformations to be applied to the layer that draws the blurred background content before it's used as the glass effect.
- The recording for the background content now conditionally applies this .
- Sampler Lifecycle & Update Logic:
- flag introduced in to track when the changes.
- : New private function to handle sampler re-initialization, job cancellation, and recreation when the sampler changes. This improves resource management and ensures the correct sampler is active.
- Sampler layer recording is now also triggered by or .
- Resource Management:
- Sampler layer () is now properly released and nulled in and when the sampler changes in .
- State Update Granularity:
- The main function in now checks for changes in and separately to trigger specific update paths (, flag), leading to more targeted redraws.
- & :
- Simplified Shape Update: Removed and the explicit mechanism. The shape is now directly read from within the .
- Invalidation Logic: is now called when either or changes in the function.
- Placement: Uses for consistency.
- :
- Invalidation on Property Change: When , , or properties are set, is reset to and is called. This ensures the highlight is correctly redrawn when these dependencies change.
- Drawing Content When No Highlight: If , it now uses instead of an empty to ensure the underlying content is drawn.
- :
- UI Thread for Callback: The callback is now invoked directly on the thread where is called (presumably the main thread if called from Compose UI), removing the explicit . This relies on the caller to manage thread context for the callback.
- Bitmap operations (, ) are now wrapped in to ensure they run off the main thread.
- :
- Minor reordering of member declarations.
- (Deleted) & :
- The standalone file and its function have been removed.
- The function has been moved into and marked as , guiding users to use the more general instead.
- :
- Removed property from the data class and its instance.
- :
- Minor code simplification in by directly accessing , , and .
- :
- Removed KDoc comments for the properties as they are self-explanatory.
These changes aim to make the LiquidGlass library more efficient, robust, and easier to use by improving its internal update mechanisms and API design.
🔗 查看本次提交
GitHub
Refactor(LiquidGlass): Improve performance and API consistency · suqi8/OShin@a396ac2
This commit introduces several refactorings and improvements to the LiquidGlass library, focusing on performance, API consistency, and resource management.
**Key Changes:**
- **`LiquidGlassModifi...
**Key Changes:**
- **`LiquidGlassModifi...
🚀 OShin New CI Build!
Refactor(PadConnect): Improve target class searching for unlock bypass
This commit refines the class searching mechanism within the Bypass Same Account Unlock Safety Check feature for Oplus PadConnect.
Key Changes in :
- Targeted Package Search:
- Added to the block.
- This narrows down the class search to the package, potentially improving the accuracy and efficiency of finding the target class responsible for the unlock check.
The string matcher remains the primary condition for identifying the class.
🔗 查看本次提交
Refactor(PadConnect): Improve target class searching for unlock bypass
This commit refines the class searching mechanism within the Bypass Same Account Unlock Safety Check feature for Oplus PadConnect.
Key Changes in :
- Targeted Package Search:
- Added to the block.
- This narrows down the class search to the package, potentially improving the accuracy and efficiency of finding the target class responsible for the unlock check.
The string matcher remains the primary condition for identifying the class.
🔗 查看本次提交
GitHub
Refactor(PadConnect): Improve target class searching for unlock bypass · suqi8/OShin@c3d4d4d
This commit refines the class searching mechanism within the "Bypass Same Account Unlock Safety Check" feature for Oplus PadConnect.
**Key Changes in `BypassSameAccountUnlockChec...
**Key Changes in `BypassSameAccountUnlockChec...
🚀 OShin New CI Build!
Refactor(HardwareIndicator): Introduce unified indicator container and refine layout
fix #39
This commit refactors the Hardware Indicator in SystemUI to use a single container for both power and temperature indicators. This simplifies the view hierarchy and management of indicators.
Key Changes in :
- Unified Indicator Container:
- A new () is created if either power or temperature indicators are enabled.
- This container is added to the 's parent next to the view.
- Individual indicators (power, temperature) are now added as children to this .
- The 's visibility is synced with the 's visibility in .
- Resource Management ():
- is now a property of to manage its lifecycle.
- now also removes the from its parent when the is detached.
- Layout Adjustments:
- The has a of 4dp.
- Individual indicators within the container now have and of 2dp, effectively creating a 4dp spacing between them if both are present.
- Removed the logic for as the container is now always placed relative to the .
- Removed as indicators are added directly to the container.
- Initialization Logic:
- The and indicators are only created and added if at least one of the indicators (power or temperature) is enabled in preferences.
- Minor Simplifications:
- Removed redundant comments and simplified some variable names.
- Removed direct setting of padding for individual indicator TextViews as spacing is managed by margins and the container.
This change aims to improve the layout structure and robustness of the Hardware Indicator display.
🔗 查看本次提交
Refactor(HardwareIndicator): Introduce unified indicator container and refine layout
fix #39
This commit refactors the Hardware Indicator in SystemUI to use a single container for both power and temperature indicators. This simplifies the view hierarchy and management of indicators.
Key Changes in :
- Unified Indicator Container:
- A new () is created if either power or temperature indicators are enabled.
- This container is added to the 's parent next to the view.
- Individual indicators (power, temperature) are now added as children to this .
- The 's visibility is synced with the 's visibility in .
- Resource Management ():
- is now a property of to manage its lifecycle.
- now also removes the from its parent when the is detached.
- Layout Adjustments:
- The has a of 4dp.
- Individual indicators within the container now have and of 2dp, effectively creating a 4dp spacing between them if both are present.
- Removed the logic for as the container is now always placed relative to the .
- Removed as indicators are added directly to the container.
- Initialization Logic:
- The and indicators are only created and added if at least one of the indicators (power or temperature) is enabled in preferences.
- Minor Simplifications:
- Removed redundant comments and simplified some variable names.
- Removed direct setting of padding for individual indicator TextViews as spacing is managed by margins and the container.
This change aims to improve the layout structure and robustness of the Hardware Indicator display.
🔗 查看本次提交
GitHub
Refactor(HardwareIndicator): Introduce unified indicator container an… · suqi8/OShin@f13210a
…d refine layout
fix #39
This commit refactors the Hardware Indicator in SystemUI to use a single `LinearLayout` container for both power and temperature indicators. This simplifies the view hiera...
fix #39
This commit refactors the Hardware Indicator in SystemUI to use a single `LinearLayout` container for both power and temperature indicators. This simplifies the view hiera...
🚀 OShin New CI Build!
Refactor(HardwareIndicator): Post UI operations to message queue for stability
This commit modifies the hook for SystemUI to enhance stability when adding custom indicators next to the status bar clock.
Key Change:
- Delayed UI Operations:
- All view creation and attachment operations related to the hardware indicators (container, power indicator, temperature indicator) are now posted to the end of the UI thread's message queue using .
- Inside the block, an additional check is performed before proceeding with UI manipulations.
- The for the indicator container has been reduced from to .
This change aims to prevent potential race conditions where the custom indicator views might be added or manipulated before the system's own layout process for the clock and its parent is fully complete. By posting these operations, we ensure they execute after the initial layout pass, which should reduce the likelihood of issues like notification icons disappearing.
🔗 查看本次提交
Refactor(HardwareIndicator): Post UI operations to message queue for stability
This commit modifies the hook for SystemUI to enhance stability when adding custom indicators next to the status bar clock.
Key Change:
- Delayed UI Operations:
- All view creation and attachment operations related to the hardware indicators (container, power indicator, temperature indicator) are now posted to the end of the UI thread's message queue using .
- Inside the block, an additional check is performed before proceeding with UI manipulations.
- The for the indicator container has been reduced from to .
This change aims to prevent potential race conditions where the custom indicator views might be added or manipulated before the system's own layout process for the clock and its parent is fully complete. By posting these operations, we ensure they execute after the initial layout pass, which should reduce the likelihood of issues like notification icons disappearing.
🔗 查看本次提交
GitHub
Refactor(HardwareIndicator): Post UI operations to message queue for … · suqi8/OShin@b066aaf
…stability
This commit modifies the `HardwareIndicator.kt` hook for SystemUI to enhance stability when adding custom indicators next to the status bar clock.
**Key Change:**
- **Delayed UI Opera...
This commit modifies the `HardwareIndicator.kt` hook for SystemUI to enhance stability when adding custom indicators next to the status bar clock.
**Key Change:**
- **Delayed UI Opera...
❤3
🚀 OShin New CI Build!
Refactor: Update KavaRef usage and bump dependencies
This commit updates the usage of KavaRef library for reflection and bumps various dependencies to their latest versions.
Key Changes:
- KavaRef Update:
- Replaced with in:
-
-
- This change aligns with potential API updates or best practices in the KavaRef library.
- Dependency Updates ():
- AGP & Kotlin:
- : ->
- : ->
- : ->
- AndroidX & Jetpack:
- : ->
- : ->
- : ->
- : ->
- : ->
- : ->
- Third-party Libraries:
- : ->
- : ->
- : ->
- Xposed & YukiHook API:
- : ->
- : ->
- : ->
- : (new version entry, likely updated from 's previous version)
- The dependency version reference was explicitly updated.
These changes ensure the project uses the latest library versions for improved features, bug fixes, and compatibility, along with adapting to any changes in the KavaRef reflection library.
🔗 查看本次提交
Refactor: Update KavaRef usage and bump dependencies
This commit updates the usage of KavaRef library for reflection and bumps various dependencies to their latest versions.
Key Changes:
- KavaRef Update:
- Replaced with in:
-
-
- This change aligns with potential API updates or best practices in the KavaRef library.
- Dependency Updates ():
- AGP & Kotlin:
- : ->
- : ->
- : ->
- AndroidX & Jetpack:
- : ->
- : ->
- : ->
- : ->
- : ->
- : ->
- Third-party Libraries:
- : ->
- : ->
- : ->
- Xposed & YukiHook API:
- : ->
- : ->
- : ->
- : (new version entry, likely updated from 's previous version)
- The dependency version reference was explicitly updated.
These changes ensure the project uses the latest library versions for improved features, bug fixes, and compatibility, along with adapting to any changes in the KavaRef reflection library.
🔗 查看本次提交
GitHub
Refactor: Update KavaRef usage and bump dependencies · suqi8/OShin@c0ef02a
This commit updates the usage of KavaRef library for reflection and bumps various dependencies to their latest versions.
**Key Changes:**
- **KavaRef Update:**
- Replaced `instance.resolve()`...
**Key Changes:**
- **KavaRef Update:**
- Replaced `instance.resolve()`...
❤5
🚀 OShin New CI Build!
Refactor(PadConnect): Refine constructor hook for unlock bypass
This commit revises the method for bypassing the same account unlock safety check in . Instead of hooking a general method identified by parameter count, it now specifically targets and modifies the constructor of the relevant class.
Key Changes in :
- Constructor Hooking:
- The hook now targets the public constructor of the class identified by the string .
- It specifically looks for a constructor with the parameter signature .
- Argument Modification:
- In the hook of this constructor, if the second argument (the ) is (indicating a failed safety check), it is changed to .
- Removed General Method Hook:
- The previous approach of finding a method with and hooking it has been removed.
This change aims for a more precise and stable hook by targeting a specific constructor signature, reducing the chance of unintentionally hooking unrelated methods.
🔗 查看本次提交
Refactor(PadConnect): Refine constructor hook for unlock bypass
This commit revises the method for bypassing the same account unlock safety check in . Instead of hooking a general method identified by parameter count, it now specifically targets and modifies the constructor of the relevant class.
Key Changes in :
- Constructor Hooking:
- The hook now targets the public constructor of the class identified by the string .
- It specifically looks for a constructor with the parameter signature .
- Argument Modification:
- In the hook of this constructor, if the second argument (the ) is (indicating a failed safety check), it is changed to .
- Removed General Method Hook:
- The previous approach of finding a method with and hooking it has been removed.
This change aims for a more precise and stable hook by targeting a specific constructor signature, reducing the chance of unintentionally hooking unrelated methods.
🔗 查看本次提交
GitHub
Refactor(PadConnect): Refine constructor hook for unlock bypass · suqi8/OShin@3f83f12
This commit revises the method for bypassing the same account unlock safety check in `com.oplus.padconnect`. Instead of hooking a general method identified by parameter count, it now specifically t...
🚀 OShin New CI Build!
Refactor: Update dependencies and replace G2RoundedCornerShape with ContinuousRoundedRectangle
This commit updates several dependencies and replaces the usage of with from the library.
Key Changes:
- Dependency Updates ():
- : ->
- : -> (removed from diff, likely same or handled elsewhere)
- : ->
- : ->
- : ->
- : ->
- Shape Replacement:
- In , , , and , all instances of have been replaced with . This affects the styling of various UI elements like dialogs, image previews, and TopAppBar.
- Icon Update ():
- The app icon's color scheme has been changed from a purple/magenta theme to a warm orange/yellow sunrise theme.
- Comments in the XML have been updated to reflect the new color descriptions.
- Update:
- Added and to the file.
🔗 查看本次提交
Refactor: Update dependencies and replace G2RoundedCornerShape with ContinuousRoundedRectangle
This commit updates several dependencies and replaces the usage of with from the library.
Key Changes:
- Dependency Updates ():
- : ->
- : -> (removed from diff, likely same or handled elsewhere)
- : ->
- : ->
- : ->
- : ->
- Shape Replacement:
- In , , , and , all instances of have been replaced with . This affects the styling of various UI elements like dialogs, image previews, and TopAppBar.
- Icon Update ():
- The app icon's color scheme has been changed from a purple/magenta theme to a warm orange/yellow sunrise theme.
- Comments in the XML have been updated to reflect the new color descriptions.
- Update:
- Added and to the file.
🔗 查看本次提交
GitHub
Refactor: Update dependencies and replace G2RoundedCornerShape with C… · suqi8/OShin@6f8a023
…ontinuousRoundedRectangle
This commit updates several dependencies and replaces the usage of `G2RoundedCornerShape` with `ContinuousRoundedRectangle` from the `com.kyant.capsule` library.
**Key ...
This commit updates several dependencies and replaces the usage of `G2RoundedCornerShape` with `ContinuousRoundedRectangle` from the `com.kyant.capsule` library.
**Key ...
🚀 OShin New CI Build!
feat: Integrate Hilt for dependency injection
This commit introduces Hilt for dependency injection into the application.
Key Changes:
- Gradle Configuration:
- Added plugin to the root and .
- Added Hilt dependencies (, ) to and .
- Application Class:
- Annotated with to enable Hilt in the application.
- Activity Integration:
- Annotated with to enable Hilt injection in the activity.
- DI Module for Preferences:
- Created in to provide .
- This module uses and to make available as a singleton throughout the application.
- uses to get the application context for initializing .
🔗 查看本次提交
feat: Integrate Hilt for dependency injection
This commit introduces Hilt for dependency injection into the application.
Key Changes:
- Gradle Configuration:
- Added plugin to the root and .
- Added Hilt dependencies (, ) to and .
- Application Class:
- Annotated with to enable Hilt in the application.
- Activity Integration:
- Annotated with to enable Hilt injection in the activity.
- DI Module for Preferences:
- Created in to provide .
- This module uses and to make available as a singleton throughout the application.
- uses to get the application context for initializing .
🔗 查看本次提交
GitHub
feat: Integrate Hilt for dependency injection · suqi8/OShin@8c113f9
This commit introduces Hilt for dependency injection into the application.
**Key Changes:**
- **Gradle Configuration:**
- Added `com.google.dagger.hilt.android` plugin to the root `build.grad...
**Key Changes:**
- **Gradle Configuration:**
- Added `com.google.dagger.hilt.android` plugin to the root `build.grad...
🚀 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