🚀 **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...
🚀 **OShin New CI Build!**
Merge pull request #71 from Liberations/mydev
fix(settings): ensure OTA card background replacement works
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/d0da44b5a92e2df5c9e5e439c5a5059e86a86199)
Merge pull request #71 from Liberations/mydev
fix(settings): ensure OTA card background replacement works
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/d0da44b5a92e2df5c9e5e439c5a5059e86a86199)
GitHub
Merge pull request #71 from Liberations/mydev · suqi8/OShin@d0da44b
fix(settings): ensure OTA card background replacement works
🚀 **OShin New CI Build!**
Feat(About): Update contributors list
This commit updates the list of contributors on the About screen.
* Removes the QQ number for contributor Mikusignal.
* Changes the name of one contributor from 喷搜 to Pencil.
* Adds Liberation as a new contributor with a link to their GitHub profile.
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/89bac251c298ab16f589d67f7508f27864ea796a)
Feat(About): Update contributors list
This commit updates the list of contributors on the About screen.
* Removes the QQ number for contributor Mikusignal.
* Changes the name of one contributor from 喷搜 to Pencil.
* Adds Liberation as a new contributor with a link to their GitHub profile.
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/89bac251c298ab16f589d67f7508f27864ea796a)
GitHub
Feat(About): Update contributors list · suqi8/OShin@89bac25
This commit updates the list of contributors on the "About" screen.
* Removes the QQ number for contributor "Mikusignal".
* Changes the name of one contribu...
* Removes the QQ number for contributor "Mikusignal".
* Changes the name of one contribu...
🚀 **OShin New CI Build!**
Refactor(Core): Relocate UI screens into package
This commit restructures the project's UI package layout by moving all primary screen components into a new, more organized package.
This refactoring aims to improve code organization and scalability. It involves renaming and moving files from their old locations (e.g., , , , ) into corresponding sub-packages under . All associated import statements across the codebase have been updated to reflect these new paths. No functional logic was changed in this commit.
Key package changes:
* ->
* ->
* ->
* ->
* ->
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/35e41abe89a58f94ff1d059917166f3322167569)
Refactor(Core): Relocate UI screens into package
This commit restructures the project's UI package layout by moving all primary screen components into a new, more organized package.
This refactoring aims to improve code organization and scalability. It involves renaming and moving files from their old locations (e.g., , , , ) into corresponding sub-packages under . All associated import statements across the codebase have been updated to reflect these new paths. No functional logic was changed in this commit.
Key package changes:
* ->
* ->
* ->
* ->
* ->
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/35e41abe89a58f94ff1d059917166f3322167569)
GitHub
Refactor(Core): Relocate UI screens into `ui.mainscreen` package · suqi8/OShin@35e41ab
This commit restructures the project's UI package layout by moving all primary screen components into a new, more organized `com.suqi8.oshin.ui.mainscreen` package.
This refactoring aims t...
This refactoring aims t...
🚀 **OShin New CI Build!**
chore(Build): Lower minimum SDK version to 33
This commit updates the in from 36 to 33, expanding the range of supported Android devices.
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/4967feec22938979c7413d5a4d695e036a6049f0)
chore(Build): Lower minimum SDK version to 33
This commit updates the in from 36 to 33, expanding the range of supported Android devices.
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/4967feec22938979c7413d5a4d695e036a6049f0)
GitHub
chore(Build): Lower minimum SDK version to 33 · suqi8/OShin@4967fee
This commit updates the `minSdk` in `app/build.gradle.kts` from 36 to 33, expanding the range of supported Android devices.
🚀 **OShin New CI Build!**
Build(Proguard): Enable line numbers and clean up rules
This commit updates the Proguard configuration to improve debugging and remove obsolete rules.
- Enables and attributes to preserve line numbers in stack traces, making debugging easier.
- Removes several redundant or overly broad rules for Activities, ViewBinding, and specific app packages, simplifying the configuration.
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/82d4f8cf8627b1acff24db247a510b8e4526b20c)
Build(Proguard): Enable line numbers and clean up rules
This commit updates the Proguard configuration to improve debugging and remove obsolete rules.
- Enables and attributes to preserve line numbers in stack traces, making debugging easier.
- Removes several redundant or overly broad rules for Activities, ViewBinding, and specific app packages, simplifying the configuration.
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/82d4f8cf8627b1acff24db247a510b8e4526b20c)
GitHub
Build(Proguard): Enable line numbers and clean up rules · suqi8/OShin@82d4f8c
This commit updates the Proguard configuration to improve debugging and remove obsolete rules.
- Enables `SourceFile` and `LineNumberTable` attributes to preserve line numbers in stack traces, m...
- Enables `SourceFile` and `LineNumberTable` attributes to preserve line numbers in stack traces, m...
🚀 **OShin New CI Build!**
feat(Home): Integrate Umeng Union ads into home screen carousel
This commit introduces native advertising into the home screen's top carousel by integrating the Umeng Union (友盟+) SDK. The carousel now dynamically mixes promotional content with native ads (including video ads).
### Key Changes:
* **Umeng Union SDK Integration:**
* Added dependency.
* Initialized the SDK in with pre-initialization for better performance.
* **Carousel Content Refactoring:**
* Introduced a sealed interface to represent different types of carousel items: (original promotional content) and (Umeng native ads).
* now fetches both promotional items and native ads concurrently.
* The two content types are shuffled and combined into a single list () to be displayed in the carousel.
* **Native Ad Composable:**
* Created a new composable to render the ad content provided by the SDK.
* This component handles both image and video ads, using to host for video playback.
* It manages the ad's lifecycle (, , ) using to ensure proper video handling and resource cleanup.
* The ad's view is correctly bound for click and impression tracking.
* **ViewModel Logic:**
* now contains logic to request a native banner ad from the Umeng SDK.
* It includes success and failure handlers for the ad request.
* A new function merges the fetched ad with the existing carousel items and shuffles the result for a mixed display.
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/ab0e2a803c274b04cae232d3a24981bc57a8d2d6)
feat(Home): Integrate Umeng Union ads into home screen carousel
This commit introduces native advertising into the home screen's top carousel by integrating the Umeng Union (友盟+) SDK. The carousel now dynamically mixes promotional content with native ads (including video ads).
### Key Changes:
* **Umeng Union SDK Integration:**
* Added dependency.
* Initialized the SDK in with pre-initialization for better performance.
* **Carousel Content Refactoring:**
* Introduced a sealed interface to represent different types of carousel items: (original promotional content) and (Umeng native ads).
* now fetches both promotional items and native ads concurrently.
* The two content types are shuffled and combined into a single list () to be displayed in the carousel.
* **Native Ad Composable:**
* Created a new composable to render the ad content provided by the SDK.
* This component handles both image and video ads, using to host for video playback.
* It manages the ad's lifecycle (, , ) using to ensure proper video handling and resource cleanup.
* The ad's view is correctly bound for click and impression tracking.
* **ViewModel Logic:**
* now contains logic to request a native banner ad from the Umeng SDK.
* It includes success and failure handlers for the ad request.
* A new function merges the fetched ad with the existing carousel items and shuffles the result for a mixed display.
🔗 [查看本次提交](https://github.com/suqi8/OShin/commit/ab0e2a803c274b04cae232d3a24981bc57a8d2d6)
GitHub
feat(Home): Integrate Umeng Union ads into home screen carousel · suqi8/OShin@ab0e2a8
This commit introduces native advertising into the home screen's top carousel by integrating the Umeng Union (友盟+) SDK. The carousel now dynamically mixes promotional content with native ad...