Tags: D4vidDf/HyperBridge
Tags
chore(manifest): remove redundant notification listener permission
- **Permissions**:
- Removed the `BIND_NOTIFICATION_LISTENER_SERVICE` permission from `AndroidManifest.xml`.
- Removed the associated `tools:ignore="ProtectedPermissions"` attribute.
chore(changelog): update for version 0.5.0-beta
- **UI & Navigation**:
- Updated `ChangelogHistoryScreen` to include version `0.5.0` at the top of the history list.
- Updated `MainActivity` to display the `0.5.0-beta` changelog in the main `ChangelogSheet`.
- **Resources & Localization**:
- Added `changelog_0_5_0_beta` string containing release notes for Native Live Updates, HyperOS CN support, new Theme Engine features (HSL selector, behavior controls), and system fixes.
- Added `title_0_5_0` string resource ("The Live Update").
Feature/ux iprovement global configuration (#137) * feat(settings): redesign Global Settings and enhance Theme Engine - **Global Settings UI**: - Refactored `GlobalSettingsScreen` to use a card-based list layout with standardized `ListOptionCard` components. - Split settings into dedicated screens: `EngineSettingsScreen`, `IslandSettingsScreen`, and `NavCustomizationScreen`. - Added an "Engine" section to toggle between "Xiaomi Featured Design" and "Native Android Live Updates". - Implemented a more granular "Island Behavior" configuration including an improved auto-hide timeout slider with snap points (1s to 1h). - **Theme Engine**: - Integrated "Engine", "Island Behavior", and "Notification Types" selection directly into the Theme Creator flow. - Added a real-time `EnginePreview` component to visualize differences between Xiaomi and Native Live Update designs. - Added a "Notification Types" manager to toggle triggers for Standard, Progress, Media, Navigation, Call, and Timer events. - **Functionality & Fixes**: - **Crash Fix**: Resolved a critical issue causing the app to crash when opening settings in Traditional Chinese. - Updated `AppPreferences` to support persistent storage for the native notification engine toggle. - Improved `ThemeViewModel` with a more efficient bitmap scaling method for theme thumbnails. - Updated `StandardTranslator`, `NavTranslator`, and `ProgressTranslator` to better respect global timeout and dismissal configurations. - Set the default notification shade visibility to `false` for a cleaner "Island-only" experience by default. - **Localization**: - Added extensive string resources for version 0.4.2 hotfix and new engine settings across multiple languages (SK, PL, RU, ZH-TW, TR, UK, PT-BR, CS, DE, HU, IN, IT, KO, ES). - Fixed several translation issues in Traditional Chinese and Spanish. * feat(settings): externalize and localize auto-hide island strings - **UI**: Refactored `IslandSettingsControl.kt` to use `stringResource` instead of hardcoded strings for the Auto-hide Island feature. - **Localization**: - Added new string resources (`auto_hide_island`, `hides_after_a_set_time`, `behavior_hide_desc`, `behavior_desc_hide_long`) to multiple locales: Slovak, Polish, Russian, Traditional Chinese, Turkish, Ukrainian, Portuguese (Brazil), Czech, German, Indonesian, Italian, Korean, Spanish, and Hungarian. - Updated Spanish translations for behavior and trigger settings. - Standardized ellipsis usage from `…` to `...` in Portuguese (Brazil) and Korean `strings.xml`. * build: update version and remove redundant material3 dependency - Updated `versionName` to `0.5.0-alpha02`. - Removed explicit `androidx-material3` dependency from `libs.versions.toml` and `app/build.gradle.kts` (now managed via Compose BOM). * feat(localization): add French (France) translation - Added complete French localization (`strings.xml`) for the entire application. - Translated all core UI components, including onboarding, settings, library, and about screens. - Localized complex features such as the Theme Engine, Backup & Restore, and the new Notification Engine settings. - Provided French translations for all historical changelogs (v0.1.0 through v0.4.2). - Included localized string arrays for specific notification keyword matching (navigation, calls, and progress updates). * feat(theme): implement layered app-specific behavior overrides - **Notification Service**: - Implemented a layered resolution system (Theme > App > Global) for notification triggers and engine selection. - Updated `NotificationReaderService` to respect theme-managed app configurations and simplified processing logic. - Enhanced `LiveUpdateTranslator` to support themed colors and icons for the Native Live Update engine, specifically for navigation events. - Improved title and text resolution with smarter fallback mechanisms and content hashing for updates. - **Theme Engine & Editor**: - Added app-specific behavior overrides to the Theme Creator, allowing per-app configuration of notification types and engine selection (Xiaomi vs. Native). - Integrated "Engine", "Island Behavior", and "Notification Types" into the App Theme Editor. - Added `AppNotificationTypesEditor` for granular control over which event types (Standard, Media, Nav, etc.) trigger the island for specific apps. - Refactored `EngineThemeContent` to support an optional "Use Global Default" state. - **UI & Settings**: - Redesigned the "Notification Types" settings using `SettingsToggleCard` for a more consistent card-based look. - Added a theme-managed warning to the App Settings dialog when behaviors are controlled by an active theme. - Externalized and localized several strings related to triggers and engine management. - Added French language support to the locale selector. - **Technical Improvements**: - Introduced `ConfigResolver` for fast, in-memory resolution of effective configurations for translators. - Updated `AppPreferences` and `ThemeRepository` to support persistent storage of per-app engine and trigger overrides. - Standardized navigation layout resolution to respect layered preferences (Global Fallback vs. App-Specific).
feat(widget): add favorites, recommended filtering, and update notice (… …#128) - **Widget Picker**: - Implemented a "Recommended" filter to highlight 1x4 and 2x4 layouts compatible with the Island size. - Added a Favorite system for widget apps, allowing users to star apps for top-level sorting. - Added a floating navigation bar to switch between Recommended and All widgets. - Improved dimension display by converting DP to grid cell proportions (e.g., 4x2). - **Saved Widgets**: - Added a persistent "Update Notice" dialog to remind users to check Autostart/Battery permissions after an app update. - Implemented a "Kill Active Widgets" action to instantly dismiss all running widget overlays. - Redesigned the UI with a centered filter toolbar (Favorites vs. All) and a dedicated Add FAB. - Added reactive listening for newly added widgets to ensure the list updates immediately. - **Service & Data**: - Enhanced `WidgetOverlayService` with specific `ACTION_KILL_WIDGET` and `ACTION_KILL_ALL_WIDGETS` handlers for immediate UI cleanup. - Added `favoriteWidgetAppsFlow` to `AppPreferences` to persist starred widget providers. - **Localization**: - Added English and Spanish strings for filters, permission reminders, and widget management. CLOSE #72
dev (#125) * feat(i18n): add Czech, Hungarian, Italian, Slovak, and Traditional Chinese This commit introduces localization for several new languages: - Czech (`cs-rCZ`) - Hungarian (`hu-rHU`) - Italian (`it-rIT`) - Slovak (`sk-rSK`) - Traditional Chinese (Taiwan) (`zh-rTW`) Full translations covering the entire application, including the latest theme engine and widget features, have been added for each new language. * fix(app): release v0.4.2 "Hotfix Update" - **Crash Fix**: Resolved a critical issue that caused the app to crash when opening the settings menu in Traditional Chinese (`zh-rTW`). - **L10n**: - Updated and corrected several Traditional Chinese strings, including permissions, search hints, and status arrays. - Added translated changelogs for v0.4.2 in English, Spanish, and Traditional Chinese. - **UI**: Added v0.4.2 to the `ChangelogHistoryScreen` and updated the `MainActivity` version fallback. - **Build**: Bumped `versionCode` to 16 and `versionName` to "0.4.2".
0.4.0 Update (#100) * Add Brazilian Portuguese translation (#14) (#16) Primeiro commit para adicionar a tradução para português brasileiro Co-authored-by: Daniel Ramos <[email protected]> * feat(nav): add layout customization and fix text alignment (#18) - Added `NavCustomizationScreen` with live preview to configure Navigation Island layout. - Implemented options to customize Left/Right content (Instruction, Distance, ETA) globally or per app. - Fixed text misalignment bug caused by newline characters in notification extras. - Updated `NavTranslator` to sanitize inputs and respect new layout configs. - Added Spanish translations for new settings. Closes #4 * Add Brazilian Portuguese translation (#14) (#22) Primeiro commit para adicionar a tradução para português brasileiro Co-authored-by: Daniel Ramos <[email protected]> * feat(a11y): improve TalkBack support and semantic navigation (#24) - Implemented custom accessibility actions for the App Priority List (Move Up/Down) to allow reordering without drag gestures. - Added dynamic content descriptions to App List switches and buttons (e.g., "Toggle [App Name]" instead of just "Switch"). - Marked settings group titles as Semantic Headings for faster screen reader navigation. - Added state descriptions to the Navigation Layout Preview to describe the current configuration audibly. - Improved labeling for expand/collapse actions in the Version History screen. - Fixed missing content descriptions on navigation and edit icon buttons. Closes #17 * fix(service): ignore notifications showing package name as content (#28) - Implemented strict check in `isJunkNotification` to block notifications where Title or Text equals the Package Name. - This prevents 'placeholder' notifications (e.g. 'com.whatsapp') from overwriting valid content on the Island. - Logs ignored placeholders for debugging. Closes #7 * fix(deps): downgrade DataStore to resolve boot persistence issues (#29) - Downgraded `androidx.datastore:datastore-preferences` from 1.2.0 to 1.1.7. - The 1.2.0 update introduced a regression on HyperOS/MIUI devices where preference files were not readable immediately after boot, causing the app to reset to the Onboarding screen and lose saved configurations. - Reverting to the stable 1.1.x release restores reliable data persistence across reboots. Closes #5 * Updating PTBR translation (#30) Atualização da tradução com a versão mais recente da branch 'dev' * Added Korean translation (#26) * fix(service): ignore placeholder notifications containing package name (#31) - Updated `isJunkNotification` logic in `NotificationReaderService`. - Now filters out notifications where the Title or Text contains the package name (case-insensitive), rather than just exact matches. - This prevents the Dynamic Island from displaying raw package strings (e.g., "com.whatsapp checking...") during background updates. Closes #7 * feat(blocklist): add spoiler and privacy protection and redesign config sheet (#32) - Implemented Blocked Terms logic: Users can now define words to block globally or per-app to prevent spoilers or unwanted notifications. - Redesigned `AppConfigBottomSheet`: Replaced the tabbed layout with a vertical list using expandable cards. This fixes the "bouncy" animation issues when switching sections. - Added `GlobalBlocklistScreen` as a central hub for managing filters. - Added `BlocklistAppListScreen` to configure rules for specific apps, displaying active rule counts per app. - Updated `NotificationReaderService` to filter notifications based on effective blocked terms (Global + App Specific). - Standardized UI: App list items in the blocklist settings now use consistent Card styling. Closes #6 * fix(ui): update library and clarify settings UX - Updated `hyperisland-kit` to 0.3.3 to resolve Issue #9 (Shade visibility bug). - Redesigned `IslandSettingsControl`: - Updated text descriptions to clearly explain 'Float' (Heads-up) vs 'Shade' (System Panel) behavior. - Improved Timeout Slider: Now displays seconds (0-10s) clearly in the header and uses full width for easier adjustment. - Updated English and Spanish translations. Closes #9 * feat(onboarding): enforce HyperOS 3 requirement and improve device info - Updated `CompatibilityPage` to strictly block the "Next" button if the OS is older than HyperOS 3.0. - Added logic to `DeviceUtils` to detect HyperOS 3.0 on Android 15 (API 35) to future-proof against base OS updates. - Implemented `getDeviceMarketName` to display readable model names (e.g., "Xiaomi 14") instead of model codes. - Added a specific UI warning for users on China ROMs regarding potential stability issues. - Updated the Autostart permission description to clarify that the app cannot automatically verify if the permission is granted. Closes #11 * docs(release): update changelog resources for v0.3.0 "The Global Update" - Added comprehensive release notes for version 0.3.0 in English and Spanish. - Highlighted key features: "Hidden Notification" (Shade toggle), Navigation Customization, and Spoiler Protection. - Added acknowledgments for community contributions regarding new language support (Portuguese, Polish, Korean). - Updated version title to "The Global Update". * Update PL translation for 0.3.0 (#34) * Add Ukrainian translation (#37) * Updating PTBR translation for v0.3.0 (#38) Atualizando para a versão 0.3.0 * docs(release): update changelog resources for v0.3.0 "The Global Update" - Added comprehensive release notes for version 0.3.0 in English and Spanish. - Highlighted key features: "Hidden Notification" (Shade toggle), Navigation Customization, and Spoiler Protection. - Added acknowledgments for community contributions regarding new language support (Portuguese, Polish, Korean). - Updated version title to "The Global Update". * Add missing 0.3.0 Ukrainian strings (#42) (additionally mention Ukrainian translation in changelog) * feat(data): migrate preference storage from DataStore to Room (#43) - Replaced Jetpack DataStore with Room (SQLite) to resolve persistence instability and file locking issues observed on HyperOS devices during boot. - Implemented `AppDatabase`, `SettingsDao`, and `AppSetting` entity to store key-value pairs reliably. - Rewrote `AppPreferences` to interface with the database while maintaining the existing Flow API for the UI. - Added a one-time migration mechanism in `AppPreferences` to automatically transfer existing settings from the legacy DataStore file to the new Room database, ensuring no data loss for current users. - Updated build configuration to include KSP and Room dependencies, and resolved dependency conflicts. Closes #40 * fix(service): enable blocked terms filtering logic - Connected the Blocked Terms data layer to the `NotificationReaderService`. - Previously, terms defined in the UI were saved but ignored by the service. - Implemented Global Blocklist check in `isJunkNotification` (Synchronous) to drop spam immediately. - Implemented App-Specific Blocklist check in `processAndPost` (Asynchronous) to handle per-app spoiler protection. Closes #6, Closes #39 * Updated changelog to add support for Ukrainian * Fixed text buttons and custom actions. * feat(app): add backup system, language selector, and UI refresh - **Backup & Restore**: Implemented a complete system to export/import settings, blocklists, and priorities via `.hbr` JSON files. - **Localization**: Added an in-app Language Selector and support for German (de) and Russian (ru). - **UI Overhaul**: Updated the entire settings and onboarding experience to **Material 3 Expressive** design (Large Top Bars, increased roundness, surface colors). - **Onboarding**: Added a Privacy Page explaining offline architecture and improved HyperOS 3.0 compatibility checks. - **Fixes**: Resolved Navigation "Exit" button rendering as an icon instead of text, and fixed App Icon loading in the Settings screen. - **Changelog**: Updated release notes for v0.3.1. Closes #41 * Feature/ru de language (#52) * Dev (#47) * Add Brazilian Portuguese translation (#14) (#16) Primeiro commit para adicionar a tradução para português brasileiro Co-authored-by: Daniel Ramos <[email protected]> * feat(nav): add layout customization and fix text alignment (#18) - Added `NavCustomizationScreen` with live preview to configure Navigation Island layout. - Implemented options to customize Left/Right content (Instruction, Distance, ETA) globally or per app. - Fixed text misalignment bug caused by newline characters in notification extras. - Updated `NavTranslator` to sanitize inputs and respect new layout configs. - Added Spanish translations for new settings. Closes #4 * Add Brazilian Portuguese translation (#14) (#22) Primeiro commit para adicionar a tradução para português brasileiro Co-authored-by: Daniel Ramos <[email protected]> * feat(a11y): improve TalkBack support and semantic navigation (#24) - Implemented custom accessibility actions for the App Priority List (Move Up/Down) to allow reordering without drag gestures. - Added dynamic content descriptions to App List switches and buttons (e.g., "Toggle [App Name]" instead of just "Switch"). - Marked settings group titles as Semantic Headings for faster screen reader navigation. - Added state descriptions to the Navigation Layout Preview to describe the current configuration audibly. - Improved labeling for expand/collapse actions in the Version History screen. - Fixed missing content descriptions on navigation and edit icon buttons. Closes #17 * fix(service): ignore notifications showing package name as content (#28) - Implemented strict check in `isJunkNotification` to block notifications where Title or Text equals the Package Name. - This prevents 'placeholder' notifications (e.g. 'com.whatsapp') from overwriting valid content on the Island. - Logs ignored placeholders for debugging. Closes #7 * fix(deps): downgrade DataStore to resolve boot persistence issues (#29) - Downgraded `androidx.datastore:datastore-preferences` from 1.2.0 to 1.1.7. - The 1.2.0 update introduced a regression on HyperOS/MIUI devices where preference files were not readable immediately after boot, causing the app to reset to the Onboarding screen and lose saved configurations. - Reverting to the stable 1.1.x release restores reliable data persistence across reboots. Closes #5 * Updating PTBR translation (#30) Atualização da tradução com a versão mais recente da branch 'dev' * Added Korean translation (#26) * fix(service): ignore placeholder notifications containing package name (#31) - Updated `isJunkNotification` logic in `NotificationReaderService`. - Now filters out notifications where the Title or Text contains the package name (case-insensitive), rather than just exact matches. - This prevents the Dynamic Island from displaying raw package strings (e.g., "com.whatsapp checking...") during background updates. Closes #7 * feat(blocklist): add spoiler and privacy protection and redesign config sheet (#32) - Implemented Blocked Terms logic: Users can now define words to block globally or per-app to prevent spoilers or unwanted notifications. - Redesigned `AppConfigBottomSheet`: Replaced the tabbed layout with a vertical list using expandable cards. This fixes the "bouncy" animation issues when switching sections. - Added `GlobalBlocklistScreen` as a central hub for managing filters. - Added `BlocklistAppListScreen` to configure rules for specific apps, displaying active rule counts per app. - Updated `NotificationReaderService` to filter notifications based on effective blocked terms (Global + App Specific). - Standardized UI: App list items in the blocklist settings now use consistent Card styling. Closes #6 * fix(ui): update library and clarify settings UX - Updated `hyperisland-kit` to 0.3.3 to resolve Issue #9 (Shade visibility bug). - Redesigned `IslandSettingsControl`: - Updated text descriptions to clearly explain 'Float' (Heads-up) vs 'Shade' (System Panel) behavior. - Improved Timeout Slider: Now displays seconds (0-10s) clearly in the header and uses full width for easier adjustment. - Updated English and Spanish translations. Closes #9 * feat(onboarding): enforce HyperOS 3 requirement and improve device info - Updated `CompatibilityPage` to strictly block the "Next" button if the OS is older than HyperOS 3.0. - Added logic to `DeviceUtils` to detect HyperOS 3.0 on Android 15 (API 35) to future-proof against base OS updates. - Implemented `getDeviceMarketName` to display readable model names (e.g., "Xiaomi 14") instead of model codes. - Added a specific UI warning for users on China ROMs regarding potential stability issues. - Updated the Autostart permission description to clarify that the app cannot automatically verify if the permission is granted. Closes #11 * docs(release): update changelog resources for v0.3.0 "The Global Update" - Added comprehensive release notes for version 0.3.0 in English and Spanish. - Highlighted key features: "Hidden Notification" (Shade toggle), Navigation Customization, and Spoiler Protection. - Added acknowledgments for community contributions regarding new language support (Portuguese, Polish, Korean). - Updated version title to "The Global Update". * Update PL translation for 0.3.0 (#34) * Add Ukrainian translation (#37) * Updating PTBR translation for v0.3.0 (#38) Atualizando para a versão 0.3.0 * docs(release): update changelog resources for v0.3.0 "The Global Update" - Added comprehensive release notes for version 0.3.0 in English and Spanish. - Highlighted key features: "Hidden Notification" (Shade toggle), Navigation Customization, and Spoiler Protection. - Added acknowledgments for community contributions regarding new language support (Portuguese, Polish, Korean). - Updated version title to "The Global Update". * Add missing 0.3.0 Ukrainian strings (#42) (additionally mention Ukrainian translation in changelog) * feat(data): migrate preference storage from DataStore to Room (#43) - Replaced Jetpack DataStore with Room (SQLite) to resolve persistence instability and file locking issues observed on HyperOS devices during boot. - Implemented `AppDatabase`, `SettingsDao`, and `AppSetting` entity to store key-value pairs reliably. - Rewrote `AppPreferences` to interface with the database while maintaining the existing Flow API for the UI. - Added a one-time migration mechanism in `AppPreferences` to automatically transfer existing settings from the legacy DataStore file to the new Room database, ensuring no data loss for current users. - Updated build configuration to include KSP and Room dependencies, and resolved dependency conflicts. Closes #40 * fix(service): enable blocked terms filtering logic - Connected the Blocked Terms data layer to the `NotificationReaderService`. - Previously, terms defined in the UI were saved but ignored by the service. - Implemented Global Blocklist check in `isJunkNotification` (Synchronous) to drop spam immediately. - Implemented App-Specific Blocklist check in `processAndPost` (Asynchronous) to handle per-app spoiler protection. Closes #6, Closes #39 * Updated changelog to add support for Ukrainian * Fixed text buttons and custom actions. --------- Co-authored-by: Daniel Ramos <[email protected]> Co-authored-by: AlexKoala <[email protected]> Co-authored-by: Kacper Skrzypek <[email protected]> Co-authored-by: Denys <[email protected]> * Update README with new features and localization info Enhanced features section with new capabilities and improved language support. * Add files * Add Russian localization strings Added Russian localization strings for the application. * Update * Update * Update * Update * Update * Update 2 * Update 2 * Update 2 * Update 2 * Add German localization to strings.xml Added German localization strings for the app. * Korean translation addition * Update 2 * u * Add German translations * Delete app/src/main/res/values-deu directory * Update 2 * Update strings.xml * Update strings.xml Removed Russian and German language options from the list. * Update strings.xml Removed Russian and German language options from the strings. * Update strings.xml Removed Russian and German language options from the strings. * Update strings.xml * Update strings.xml Removed Russian and German language options from the list. * Update strings.xml Removed Russian and German language options from the list. * Update strings.xml * -</resources> Updated privacy strings to clarify offline processing and security. * Update Ukrainian Added new strings for privacy settings, backup options, and language selection in the Ukrainian localization. * Update Russian * Update Português Brasileiro Added new strings for privacy, backup, and language settings. * Update polski Added new strings for privacy, language options, backup, and UI updates. * Fix polski Corrected the capitalization of language names in Polish localization. * Update Korean Added Korean localization strings for backup, privacy, and optimization features. * fix español Updated privacy title and description strings in Spanish. * Update Deutsch * fix Polish --------- Co-authored-by: David Df <[email protected]> Co-authored-by: Daniel Ramos <[email protected]> Co-authored-by: AlexKoala <[email protected]> Co-authored-by: Kacper Skrzypek <[email protected]> Co-authored-by: Denys <[email protected]> * Added Russian and German to the language selector. Fixed strings tags * Feature/ru de language (#54) * Dev (#47) * Add Brazilian Portuguese translation (#14) (#16) Primeiro commit para adicionar a tradução para português brasileiro Co-authored-by: Daniel Ramos <[email protected]> * feat(nav): add layout customization and fix text alignment (#18) - Added `NavCustomizationScreen` with live preview to configure Navigation Island layout. - Implemented options to customize Left/Right content (Instruction, Distance, ETA) globally or per app. - Fixed text misalignment bug caused by newline characters in notification extras. - Updated `NavTranslator` to sanitize inputs and respect new layout configs. - Added Spanish translations for new settings. Closes #4 * Add Brazilian Portuguese translation (#14) (#22) Primeiro commit para adicionar a tradução para português brasileiro Co-authored-by: Daniel Ramos <[email protected]> * feat(a11y): improve TalkBack support and semantic navigation (#24) - Implemented custom accessibility actions for the App Priority List (Move Up/Down) to allow reordering without drag gestures. - Added dynamic content descriptions to App List switches and buttons (e.g., "Toggle [App Name]" instead of just "Switch"). - Marked settings group titles as Semantic Headings for faster screen reader navigation. - Added state descriptions to the Navigation Layout Preview to describe the current configuration audibly. - Improved labeling for expand/collapse actions in the Version History screen. - Fixed missing content descriptions on navigation and edit icon buttons. Closes #17 * fix(service): ignore notifications showing package name as content (#28) - Implemented strict check in `isJunkNotification` to block notifications where Title or Text equals the Package Name. - This prevents 'placeholder' notifications (e.g. 'com.whatsapp') from overwriting valid content on the Island. - Logs ignored placeholders for debugging. Closes #7 * fix(deps): downgrade DataStore to resolve boot persistence issues (#29) - Downgraded `androidx.datastore:datastore-preferences` from 1.2.0 to 1.1.7. - The 1.2.0 update introduced a regression on HyperOS/MIUI devices where preference files were not readable immediately after boot, causing the app to reset to the Onboarding screen and lose saved configurations. - Reverting to the stable 1.1.x release restores reliable data persistence across reboots. Closes #5 * Updating PTBR translation (#30) Atualização da tradução com a versão mais recente da branch 'dev' * Added Korean translation (#26) * fix(service): ignore placeholder notifications containing package name (#31) - Updated `isJunkNotification` logic in `NotificationReaderService`. - Now filters out notifications where the Title or Text contains the package name (case-insensitive), rather than just exact matches. - This prevents the Dynamic Island from displaying raw package strings (e.g., "com.whatsapp checking...") during background updates. Closes #7 * feat(blocklist): add spoiler and privacy protection and redesign config sheet (#32) - Implemented Blocked Terms logic: Users can now define words to block globally or per-app to prevent spoilers or unwanted notifications. - Redesigned `AppConfigBottomSheet`: Replaced the tabbed layout with a vertical list using expandable cards. This fixes the "bouncy" animation issues when switching sections. - Added `GlobalBlocklistScreen` as a central hub for managing filters. - Added `BlocklistAppListScreen` to configure rules for specific apps, displaying active rule counts per app. - Updated `NotificationReaderService` to filter notifications based on effective blocked terms (Global + App Specific). - Standardized UI: App list items in the blocklist settings now use consistent Card styling. Closes #6 * fix(ui): update library and clarify settings UX - Updated `hyperisland-kit` to 0.3.3 to resolve Issue #9 (Shade visibility bug). - Redesigned `IslandSettingsControl`: - Updated text descriptions to clearly explain 'Float' (Heads-up) vs 'Shade' (System Panel) behavior. - Improved Timeout Slider: Now displays seconds (0-10s) clearly in the header and uses full width for easier adjustment. - Updated English and Spanish translations. Closes #9 * feat(onboarding): enforce HyperOS 3 requirement and improve device info - Updated `CompatibilityPage` to strictly block the "Next" button if the OS is older than HyperOS 3.0. - Added logic to `DeviceUtils` to detect HyperOS 3.0 on Android 15 (API 35) to future-proof against base OS updates. - Implemented `getDeviceMarketName` to display readable model names (e.g., "Xiaomi 14") instead of model codes. - Added a specific UI warning for users on China ROMs regarding potential stability issues. - Updated the Autostart permission description to clarify that the app cannot automatically verify if the permission is granted. Closes #11 * docs(release): update changelog resources for v0.3.0 "The Global Update" - Added comprehensive release notes for version 0.3.0 in English and Spanish. - Highlighted key features: "Hidden Notification" (Shade toggle), Navigation Customization, and Spoiler Protection. - Added acknowledgments for community contributions regarding new language support (Portuguese, Polish, Korean). - Updated version title to "The Global Update". * Update PL translation for 0.3.0 (#34) * Add Ukrainian translation (#37) * Updating PTBR translation for v0.3.0 (#38) Atualizando para a versão 0.3.0 * docs(release): update changelog resources for v0.3.0 "The Global Update" - Added comprehensive release notes for version 0.3.0 in English and Spanish. - Highlighted key features: "Hidden Notification" (Shade toggle), Navigation Customization, and Spoiler Protection. - Added acknowledgments for community contributions regarding new language support (Portuguese, Polish, Korean). - Updated version title to "The Global Update". * Add missing 0.3.0 Ukrainian strings (#42) (additionally mention Ukrainian translation in changelog) * feat(data): migrate preference storage from DataStore to Room (#43) - Replaced Jetpack DataStore with Room (SQLite) to resolve persistence instability and file locking issues observed on HyperOS devices during boot. - Implemented `AppDatabase`, `SettingsDao`, and `AppSetting` entity to store key-value pairs reliably. - Rewrote `AppPreferences` to interface with the database while maintaining the existing Flow API for the UI. - Added a one-time migration mechanism in `AppPreferences` to automatically transfer existing settings from the legacy DataStore file to the new Room database, ensuring no data loss for current users. - Updated build configuration to include KSP and Room dependencies, and resolved dependency conflicts. Closes #40 * fix(service): enable blocked terms filtering logic - Connected the Blocked Terms data layer to the `NotificationReaderService`. - Previously, terms defined in the UI were saved but ignored by the service. - Implemented Global Blocklist check in `isJunkNotification` (Synchronous) to drop spam immediately. - Implemented App-Specific Blocklist check in `processAndPost` (Asynchronous) to handle per-app spoiler protection. Closes #6, Closes #39 * Updated changelog to add support for Ukrainian * Fixed text buttons and custom actions. --------- Co-authored-by: Daniel Ramos <[email protected]> Co-authored-by: AlexKoala <[email protected]> Co-authored-by: Kacper Skrzypek <[email protected]> Co-authored-by: Denys <[email protected]> * Update README with new features and localization info Enhanced features section with new capabilities and improved language support. * Add files * Add Russian localization strings Added Russian localization strings for the application. * Update * Update * Update * Update * Update * Update 2 * Update 2 * Update 2 * Update 2 * Add German localization to strings.xml Added German localization strings for the app. * Korean translation addition * Update 2 * u * Add German translations * Delete app/src/main/res/values-deu directory * Update 2 * Update strings.xml * Update strings.xml Removed Russian and German language options from the list. * Update strings.xml Removed Russian and German language options from the strings. * Update strings.xml Removed Russian and German language options from the strings. * Update strings.xml * Update strings.xml Removed Russian and German language options from the list. * Update strings.xml Removed Russian and German language options from the list. * Update strings.xml * -</resources> Updated privacy strings to clarify offline processing and security. * Update Ukrainian Added new strings for privacy settings, backup options, and language selection in the Ukrainian localization. * Update Russian * Update Português Brasileiro Added new strings for privacy, backup, and language settings. * Update polski Added new strings for privacy, language options, backup, and UI updates. * Fix polski Corrected the capitalization of language names in Polish localization. * Update Korean Added Korean localization strings for backup, privacy, and optimization features. * fix español Updated privacy title and description strings in Spanish. * Update Deutsch * fix Polish * de fix * ru fix * uk fix --------- Co-authored-by: David Df <[email protected]> Co-authored-by: Daniel Ramos <[email protected]> Co-authored-by: AlexKoala <[email protected]> Co-authored-by: Kacper Skrzypek <[email protected]> Co-authored-by: Denys <[email protected]> * fix(app): Fixed bold tags on russian strings.xml and updated the AppListItem.kt behaviour * fix(app): Fixed language * fix(app): fixed log modal * update dev branch (#59) * Dev (#47) * Add Brazilian Portuguese translation (#14) (#16) Primeiro commit para adicionar a tradução para português brasileiro Co-authored-by: Daniel Ramos <[email protected]> * feat(nav): add layout customization and fix text alignment (#18) - Added `NavCustomizationScreen` with live preview to configure Navigation Island layout. - Implemented options to customize Left/Right content (Instruction, Distance, ETA) globally or per app. - Fixed text misalignment bug caused by newline characters in notification extras. - Updated `NavTranslator` to sanitize inputs and respect new layout configs. - Added Spanish translations for new settings. Closes #4 * Add Brazilian Portuguese translation (#14) (#22) Primeiro commit para adicionar a tradução para português brasileiro Co-authored-by: Daniel Ramos <[email protected]> * feat(a11y): improve TalkBack support and semantic navigation (#24) - Implemented custom accessibility actions for the App Priority List (Move Up/Down) to allow reordering without drag gestures. - Added dynamic content descriptions to App List switches and buttons (e.g., "Toggle [App Name]" instead of just "Switch"). - Marked settings group titles as Semantic Headings for faster screen reader navigation. - Added state descriptions to the Navigation Layout Preview to describe the current configuration audibly. - Improved labeling for expand/collapse actions in the Version History screen. - Fixed missing content descriptions on navigation and edit icon buttons. Closes #17 * fix(service): ignore notifications showing package name as content (#28) - Implemented strict check in `isJunkNotification` to block notifications where Title or Text equals the Package Name. - This prevents 'placeholder' notifications (e.g. 'com.whatsapp') from overwriting valid content on the Island. - Logs ignored placeholders for debugging. Closes #7 * fix(deps): downgrade DataStore to resolve boot persistence issues (#29) - Downgraded `androidx.datastore:datastore-preferences` from 1.2.0 to 1.1.7. - The 1.2.0 update introduced a regression on HyperOS/MIUI devices where preference files were not readable immediately after boot, causing the app to reset to the Onboarding screen and lose saved configurations. - Reverting to the stable 1.1.x release restores reliable data persistence across reboots. Closes #5 * Updating PTBR translation (#30) Atualização da tradução com a versão mais recente da branch 'dev' * Added Korean translation (#26) * fix(service): ignore placeholder notifications containing package name (#31) - Updated `isJunkNotification` logic in `NotificationReaderService`. - Now filters out notifications where the Title or Text contains the package name (case-insensitive), rather than just exact matches. - This prevents the Dynamic Island from displaying raw package strings (e.g., "com.whatsapp checking...") during background updates. Closes #7 * feat(blocklist): add spoiler and privacy protection and redesign config sheet (#32) - Implemented Blocked Terms logic: Users can now define words to block globally or per-app to prevent spoilers or unwanted notifications. - Redesigned `AppConfigBottomSheet`: Replaced the tabbed layout with a vertical list using expandable cards. This fixes the "bouncy" animation issues when switching sections. - Added `GlobalBlocklistScreen` as a central hub for managing filters. - Added `BlocklistAppListScreen` to configure rules for specific apps, displaying active rule counts per app. - Updated `NotificationReaderService` to filter notifications based on effective blocked terms (Global + App Specific). - Standardized UI: App list items in the blocklist settings now use consistent Card styling. Closes #6 * fix(ui): update library and clarify settings UX - Updated `hyperisland-kit` to 0.3.3 to resolve Issue #9 (Shade visibility bug). - Redesigned `IslandSettingsControl`: - Updated text descriptions to clearly explain 'Float' (Heads-up) vs 'Shade' (System Panel) behavior. - Improved Timeout Slider: Now displays seconds (0-10s) clearly in the header and uses full width for easier adjustment. - Updated English and Spanish translations. Closes #9 * feat(onboarding): enforce HyperOS 3 requirement and improve device info - Updated `CompatibilityPage` to strictly block the "Next" button if the OS is older than HyperOS 3.0. - Added logic to `DeviceUtils` to detect HyperOS 3.0 on Android 15 (API 35) to future-proof against base OS updates. - Implemented `getDeviceMarketName` to display readable model names (e.g., "Xiaomi 14") instead of model codes. - Added a specific UI warning for users on China ROMs regarding potential stability issues. - Updated the Autostart permission description to clarify that the app cannot automatically verify if the permission is granted. Closes #11 * docs(release): update changelog resources for v0.3.0 "The Global Update" - Added comprehensive release notes for version 0.3.0 in English and Spanish. - Highlighted key features: "Hidden Notification" (Shade toggle), Navigation Customization, and Spoiler Protection. - Added acknowledgments for community contributions regarding new language support (Portuguese, Polish, Korean). - Updated version title to "The Global Update". * Update PL translation for 0.3.0 (#34) * Add Ukrainian translation (#37) * Updating PTBR translation for v0.3.0 (#38) Atualizando para a versão 0.3.0 * docs(release): update changelog resources for v0.3.0 "The Global Update" - Added comprehensive release notes for version 0.3.0 in English and Spanish. - Highlighted key features: "Hidden Notification" (Shade toggle), Navigation Customization, and Spoiler Protection. - Added acknowledgments for community contributions regarding new language support (Portuguese, Polish, Korean). - Updated version title to "The Global Update". * Add missing 0.3.0 Ukrainian strings (#42) (additionally mention Ukrainian translation in changelog) * feat(data): migrate preference storage from DataStore to Room (#43) - Replaced Jetpack DataStore with Room (SQLite) to resolve persistence instability and file locking issues observed on HyperOS devices during boot. - Implemented `AppDatabase`, `SettingsDao`, and `AppSetting` entity to store key-value pairs reliably. - Rewrote `AppPreferences` to interface with the database while maintaining the existing Flow API for the UI. - Added a one-time migration mechanism in `AppPreferences` to automatically transfer existing settings from the legacy DataStore file to the new Room database, ensuring no data loss for current users. - Updated build configuration to include KSP and Room dependencies, and resolved dependency conflicts. Closes #40 * fix(service): enable blocked terms filtering logic - Connected the Blocked Terms data layer to the `NotificationReaderService`. - Previously, terms defined in the UI were saved but ignored by the service. - Implemented Global Blocklist check in `isJunkNotification` (Synchronous) to drop spam immediately. - Implemented App-Specific Blocklist check in `processAndPost` (Asynchronous) to handle per-app spoiler protection. Closes #6, Closes #39 * Updated changelog to add support for Ukrainian * Fixed text buttons and custom actions. --------- Co-authored-by: Daniel Ramos <[email protected]> Co-authored-by: AlexKoala <[email protected]> Co-authored-by: Kacper Skrzypek <[email protected]> Co-authored-by: Denys <[email protected]> * Update README with new features and localization info Enhanced features section with new capabilities and improved language support. * Dev (#57) * Add Brazilian Portuguese translation (#14) (#16) Primeiro commit para adicionar a tradução para português brasileiro Co-authored-by: Daniel Ramos <[email protected]> * feat(nav): add layout customization and fix text alignment (#18) - Added `NavCustomizationScreen` with live preview to configure Navigation Island layout. - Implemented options to customize Left/Right content (Instruction, Distance, ETA) globally or per app. - Fixed text misalignment bug caused by newline characters in notification extras. - Updated `NavTranslator` to sanitize inputs and respect new layout configs. - Added Spanish translations for new settings. Closes #4 * Add Brazilian Portuguese translation (#14) (#22) Primeiro commit para adicionar a tradução para português brasileiro Co-authored-by: Daniel Ramos <[email protected]> * feat(a11y): improve TalkBack support and semantic navigation (#24) - Implemented custom accessibility actions for the App Priority List (Move Up/Down) to allow reordering without drag gestures. - Added dynamic content descriptions to App List switches and buttons (e.g., "Toggle [App Name]" instead of just "Switch"). - Marked settings group titles as Semantic Headings for faster screen reader navigation. - Added state descriptions to the Navigation Layout Preview to describe the current configuration audibly. - Improved labeling for expand/collapse actions in the Version History screen. - Fixed missing content descriptions on navigation and edit icon buttons. Closes #17 * fix(service): ignore notifications showing package name as content (#28) - Implemented strict check in `isJunkNotification` to block notifications where Title or Text equals the Package Name. - This prevents 'placeholder' notifications (e.g. 'com.whatsapp') from overwriting valid content on the Island. - Logs ignored placeholders for debugging. Closes #7 * fix(deps): downgrade DataStore to resolve boot persistence issues (#29) - Downgraded `androidx.datastore:datastore-preferences` from 1.2.0 to 1.1.7. - The 1.2.0 update introduced a regression on HyperOS/MIUI devices where preference files were not readable immediately after boot, causing the app to reset to the Onboarding screen and lose saved configurations. - Reverting to the stable 1.1.x release restores reliable data persistence across reboots. Closes #5 * Updating PTBR translation (#30) Atualização da tradução com a versão mais recente da branch 'dev' * Added Korean translation (#26) * fix(service): ignore placeholder notifications containing package name (#31) - Updated `isJunkNotification` logic in `NotificationReaderService`. - Now filters out notifications where the Title or Text contains the package name (case-insensitive), rather than just exact matches. - This prevents the Dynamic Island from displaying raw package strings (e.g., "com.whatsapp checking...") during background updates. Closes #7 * feat(blocklist): add spoiler and privacy protection and redesign config sheet (#32) - Implemented Blocked Terms logic: Users can now define words to block globally or per-app to prevent spoilers or unwanted notifications. - Redesigned `AppConfigBottomSheet`: Replaced the tabbed layout with a vertical list using expandable cards. This fixes the "bouncy" animation issues when switching sections. - Added `GlobalBlocklistScreen` as a central hub for managing filters. - Added `BlocklistAppListScreen` to configure rules for specific apps, displaying active rule counts per app. - Updated `NotificationReaderService` to filter notifications based on effective blocked terms (Global + App Specific). - Standardized UI: App list items in the blocklist settings now use consistent Card styling. Closes #6 * fix(ui): update library and clarify settings UX - Updated `hyperisland-kit` to 0.3.3 to resolve Issue #9 (Shade visibility bug). - Redesigned `IslandSettingsControl`: - Updated text descriptions to clearly explain 'Float' (Heads-up) vs 'Shade' (System Panel) behavior. - Improved Timeout Slider: Now displays seconds (0-10s) clearly in the header and uses full width for easier adjustment. - Updated English and Spanish translations. Closes #9 * feat(onboarding): enforce HyperOS 3 requirement and improve device info - Updated `CompatibilityPage` to strictly block the "Next" button if the OS is older than HyperOS 3.0. - Added logic to `DeviceUtils` to detect HyperOS 3.0 on Android 15 (API 35) to future-proof against base OS updates. - Implemented `getDeviceMarketName` to display readable model names (e.g., "Xiaomi 14") instead of model codes. - Added a specific UI warning for users on China ROMs regarding potential stability issues. - Updated the Autostart permission description to clarify that the app cannot automatically verify if the permission is granted. Closes #11 * docs(release): update changelog resources for v0.3.0 "The Global Update" - Added comprehensive release notes for version 0.3.0 in English and Spanish. - Highlighted key features: "Hidden Notification" (Shade toggle), Navigation Customization, and Spoiler Protection. - Added acknowledgments for community contributions regarding new language support (Portuguese, Polish, Korean). - Updated version title to "The Global Update". * Update PL translation for 0.3.0 (#34) * Add Ukrainian translation (#37) * Updating PTBR translation for v0.3.0 (#38) Atualizando para a versão 0.3.0 * docs(release): update changelog resources for v0.3.0 "The Global Update" - Added comprehensive release notes for version 0.3.0 in English and Spanish. - Highlighted key features: "Hidden Notification" (Shade toggle), Navigation Customization, and Spoiler Protection. - Added acknowledgments for community contributions regarding new language support (Portuguese, Polish, Korean). - Updated version title to "The Global Update". * Add missing 0.3.0 Ukrainian strings (#42) (additionally mention Ukrainian translation in changelog) * feat(data): migrate preference storage from DataStore to Room (#43) - Replaced Jetpack DataStore with Room (SQLite) to resolve persistence instability and file locking issues observed on HyperOS devices during boot. - Implemented `AppDatabase`, `SettingsDao`, and `AppSetting` entity to store key-value pairs reliably. - Rewrote `AppPreferences` to interface with the database while maintaining the existing Flow API for the UI. - Added a one-time migration mechanism in `AppPreferences` to automatically transfer existing settings from the legacy DataStore file to the new Room database, ensuring no data loss for current users. - Updated build configuration to include KSP and Room dependencies, and resolved dependency conflicts. Closes #40 * fix(service): enable blocked terms filtering logic - Connected the Blocked Terms data layer to the `NotificationReaderService`. - Previously, terms defined in the UI were saved but ignored by the service. - Implemented Global Blocklist check in `isJunkNotification` (Synchronous) to drop spam immediately. - Implemented App-Specific Blocklist check in `processAndPost` (Asynchronous) to handle per-app spoiler protection. Closes #6, Closes #39 * Updated changelog to add support for Ukrainian * Fixed text buttons and custom actions. * feat(app): add backup system, language selector, and UI refresh - **Backup & Restore**: Implemented a complete system to export/import settings, blocklists, and priorities via `.hbr` JSON files. - **Localization**: Added an in-app Language Selector and support for German (de) and Russian (ru). - **UI Overhaul**: Updated the entire settings and onboarding experience to **Material 3 Expressive** design (Large Top Bars, increased roundness, surface colors). - **Onboarding**: Added a Privacy Page explaining offline architecture and improved HyperOS 3.0 compatibility checks. - **Fixes**: Resolved Navigation "Exit" button rendering as an icon instead of text, and fixed App Icon loading in the Settings screen. - **Changelog**: Updated release notes for v0.3.1. Closes #41 * Feature/ru de language (#52) * Dev (#47) * Add Brazilian Portuguese translation (#14) (#16) Primeiro commit para adicionar a tradução para português brasileiro Co-authored-by: Daniel Ramos <[email protected]> * feat(nav): add layout customization and fix text alignment (#18) - Added `NavCustomizationScreen` with live preview to configure Navigation Island layout. - Implemented options to customize Left/Right content (Instruction, Distance, ETA) globally or per app. - Fixed text misalignment bug caused by newline characters in notification extras. - Updated `NavTranslator` to sanitize inputs and respect new layout configs. - Added Spanish translations for new settings. Closes #4 * Add Brazilian Portuguese translation (#14) (#22) Primeiro commit para adicionar a tradução para português brasileiro Co-authored-by: Daniel Ramos <[email protected]> * feat(a11y): improve TalkBack support and semantic navigation (#24) - Implemented custom accessibility actions for the App Priority List (Move Up/Down) to allow reordering without drag gestures. - Added dynamic content descriptions to App List switches and buttons (e.g., "Toggle [App Name]" instead of just "Switch"). - Marked settings group titles as Semantic Headings for faster screen reader navigation. - Added state descriptions to the Navigation Layout Preview to describe the current configuration audibly. - Improved labeling for expand/collapse actions in the Version History screen. - Fixed missing content descriptions on navigation and edit icon buttons. Closes #17 * fix(service): ignore notifications showing package name as content (#28) - Implemented strict check in `isJunkNotification` to block notifications where Title or Text equals the Package Name. - This prevents 'placeholder' notifications (e.g. 'com.whatsapp') from overwriting valid content on the Island. - Logs ignored placeholders for debugging. Closes #7 * fix(deps): downgrade DataStore to resolve boot persistence issues (#29) - Downgraded `androidx.datastore:datastore-preferences` from 1.2.0 to 1.1.7. - The 1.2.0 update introduced a regression on HyperOS/MIUI devices where preference files were not readable immediately after boot, causing the app to reset to the Onboarding screen and lose saved configurations. - Reverting to the stable 1.1.x release restores reliable data persistence across reboots. Closes #5 * Updating PTBR translation (#30) Atualização da tradução com a versão mais recente da branch 'dev' * Added Korean translation (#26) * fix(service): ignore placeholder notifications containing package name (#31) - Updated `isJunkNotification` logic in `NotificationReaderService`. - Now filters out notifications where the Title or Text contains the package name (case-insensitive), rather than just exact matches. - This prevents the Dynamic Island from displaying raw package strings (e.g., "com.whatsapp checking...") during background updates. Closes #7 * feat(blocklist): add spoiler and privacy protection and redesign config sheet (#32) - Implemented Blocked Terms logic: Users can now define words to block globally or per-app to prevent spoilers or unwanted notifications. - Redesigned `AppConfigBottomSheet`: Replaced the tabbed layout with a vertical list using expandable cards. This fixes the "bouncy" animation issues when switching sections. - Added `GlobalBlocklistScreen` as a central hub for managing filters. - Added `BlocklistAppListScreen` to configure rules for specific apps, displaying active rule counts per app. - Updated `NotificationReaderService` to filter notifications based on effective blocked terms (Global + App Specific). - Standardized UI: App list items in the blocklist settings now use consistent Card styling. Closes #6 * fix(ui): update library and clarify settings UX - Updated `hyperisland-kit` to 0.3.3 to resolve Issue #9 (Shade visibility bug). - Redesigned `IslandSettingsControl`: - Updated text descriptions to clearly explain 'Float' (Heads-up) vs 'Shade' (System Panel) behavior. - Improved Timeout Slider: Now displays seconds (0-10s) clearly in the header and uses full width for easier adjustment. - Updated English and Spanish translations. Closes #9 * feat(onboarding): enforce HyperOS 3 requirement and improve device info - Updated `CompatibilityPage` to strictly block the "Next" button if the OS is older than HyperOS 3.0. - Added logic to `DeviceUtils` to detect HyperOS 3.0 on Android 15 (API 35) to future-proof against base OS updates. - Implemented `getDeviceMarketName` to display readable model names (e.g., "Xiaomi 14") instead of model codes. - Added a specific UI warning for users on China ROMs regarding potential stability issues. - Updated the Autostart permission description to clarify that the app cannot automatically verify if the permission is granted. Closes #11 * docs(release): update changelog resources for v0.3.0 "The Global Update" - Added comprehensive release notes for version 0.3.0 in English and Spanish. - Highlighted key features: "Hidden Notification" (Shade toggle), Navigation Customization, and Spoiler Protection. - Added acknowledgments for community contributions regarding new language support (Portuguese, Polish, Korean). - Updated version title to "The Global Update". * Update PL translation for 0.3.0 (#34) * Add Ukrainian translation (#37) * Updating PTBR translation for v0.3.0 (#38) Atualizando para a versão 0.3.0 * docs(release): update changelog resources for v0.3.0 "The Global Update" - Added comprehensive release notes for version 0.3.0 in English and Spanish. - Highlighted key features: "Hidden Notification" (Shade toggle), Navigation Customization, and Spoiler Protection. - Added acknowledgments for community contributions regarding new language support (Portuguese, Polish, Korean). - Updated version title to "The Global Update". * Add missing 0.3.0 Ukrainian strings (#42) (additionally mention Ukrainian translation in changelog) * feat(data): migrate preference storage from DataStore to Room (#43) - Replaced Jetpack DataStore with Room (SQLite) to resolve persistence instability and file locking issues observed on HyperOS devices during boot. - Implemented `AppDatabase`, `SettingsDao`, and `AppSetting` entity to store key-value pairs reliably. - Rewrote `AppPreferences` to interface with the database while maintaining the existing Flow API for the UI. - Added a one-time migration mechanism in `AppPreferences` to automatically transfer existing settings from the legacy DataStore file to the new Room database, ensuring no data loss for current users. - Updated build configuration to include KSP and Room dependencies, and resolved dependency conflicts. Closes #40 * fix(service): enable blocked terms filtering logic - Connected the Blocked Terms data layer to the `NotificationReaderService`. - Previously, terms defined in the UI were saved but ignored by the service. - Implemented Global Blocklist check in `isJunkNotification` (Synchronous) to drop spam immediately. - Implemented App-Specific Blocklist check in `processAndPost` (Asynchronous) to handle per-app spoiler protection. Closes #6, Closes #39 * Updated changelog to add support for Ukrainian * Fixed text buttons and custom actions. --------- Co-authored-by: Daniel Ramos <[email protected]> Co-authored-by: AlexKoala <[email protected]> Co-authored-by: Kacper Skrzypek <[email protected]> Co-authored-by: Denys <[email protected]> * Update README with new features and localization info Enhanced features section with new capabilities and improved language support. * Add files * Add Russian localization strings Added Russian localization strings for the application. * Update * Update * Update * Update * Update * Update 2 * Update 2 * Update 2 * Update 2 * Add German localization to strings.xml Added German localization strings for the app. * Korean translation addition * Update 2 * u * Add German translations * Delete app/src/main/res/values-deu directory * Update 2 * Update strings.xml * Update strings.xml Removed Russian and German language options from the list. * Update strings.xml Removed Russian and German language options from the strings. * Update strings.xml Removed Russian and German language options from the strings. * Update strings.xml * Update strings.xml Removed Russian and German language options from the list. * Update strings.xml Removed Russian and German language options from the list. * Update strings.xml * -</resources> Updated privacy strings to clarify offline processing and security. * Update Ukrainian Added new strings for privacy settings, backup options, and language selection in the Ukrainian localization. * Update Russian * Update Português Brasileiro Added new strings for privacy, backup, and language settings. * Update polski Added new strings for privacy, language options, backup, and UI updates. * Fix polski Corrected the capitalization of language names in Polish localization. * Update Korean Added Korean localization strings for backup, privacy, and optimization features. * fix español Updated privacy title and description strings in Spanish. * Update Deutsch * fix Polish --------- Co-authored-by: David Df <[email protected]> Co-authored-by: Daniel Ramos <[email protected]> Co-authored-by: AlexKoala <[email protected]> Co-authored-by: Kacper Skrzypek <[email protected]> Co-authored-by: Denys <[email protected]> * Added Russian and German to the language selector. Fixed strings tags * Feature/ru de language (#54) * Dev (#47) * Add Brazilian Portuguese translation (#14) (#16) Primeiro commit para adicionar a tradução para português brasileiro Co-authored-by: Daniel Ramos <[email protected]> * feat(nav): add layout customization and fix text alignment (#18) - Added `NavCustomizationScreen` with live preview to configure Navigation Island layout. - Implemented options to customize Left/Right content (Instruction, Distance, ETA) globally or per app. - Fixed text misalignment bug caused by newline characters in notification extras. - Updated `NavTranslator` to sanitize inputs and respect new layout configs. - Added Spanish translations for new settings. Closes #4 * Add Brazilian Portuguese translation (#14) (#22) Primeiro commit para adicionar a tradução para português brasileiro Co-authored-by: Daniel Ramos <[email protected]> * feat(a11y): improve TalkBack support and semantic navigation (#24) - Implemented custom accessibility actions for the App Priority List (Move Up/Down) to allow reordering without drag gestures. - Added dynamic content descriptions to App List switches and buttons (e.g., "Toggle [App Name]" instead of just "Switch"). - Marked settings group titles as Semantic Headings for faster screen reader navigation. - Added state descriptions to the Navigation Layout Preview to describe the current configuration audibly. - Improved labeling for expand/collapse actions in the Version History screen. - Fixed missing content descriptions on navigation and edit icon buttons. Closes #17 * fix(service): ignore notifications showing package name as content (#28) - Implemented strict check in `isJunkNotification` to block notifications where Title or Text equals the Package Name. - This prevents 'placeholder' notifications (e.g. 'com.whatsapp') from overwriting valid content on the Island. - Logs ignored placeholders for debugging. Closes #7 * fix(deps): downgrade DataStore to resolve boot persistence issues (#29) - Downgraded `androidx.datastore:datastore-preferences` from 1.2.0 to 1.1.7. - The 1.2.0 update introduced a regression on HyperOS/MIUI devices where preference files were not readable immediately after boot, causing the app to reset to the Onboarding screen and lose saved configurations. - Reverting to the stable 1.1.x release restores reliable data persistence across reboots. Closes #5 * Updating PTBR translation (#30) Atualização da tradução com a versão mais recente da branch 'dev' * Added Korean translation (#26) * fix(service): ignore placeholder notifications containing package name (#31) - Updated `isJunkNotification` logic in `NotificationReaderService`. - Now filters out notifications where the Title or Text contains the package name (case-insensitive), rather than just exact matches. - This prevents the Dynamic Island from displaying raw package strings (e.g., "com.whatsapp checking...") during background updates. Closes #7 * feat(blocklist): add spoiler and privacy protection and redesign config sheet (#32) - Implemented Blocked Terms logic: Users can now define words to block globally or per-app to prevent spoilers or unwanted notifications. - Redesigned `AppConfigBottomSheet`: Replaced the tabbed layout with a vertical list using expandable cards. This fixes the "bouncy" animation issues when switching sections. - Added `GlobalBlocklistScreen` as a central hub for managing filters. - Added `BlocklistAppListScreen` to configure rules for specific apps, displaying active rule counts per app. - Updated `NotificationReaderService` to filter notifications based on effective blocked terms (Global + App Specific). - Standardized UI: App list items in the blocklist settings now use consistent Card styling. Closes #6 * fix(ui): update library and clarify settings UX - Updated `hyperisland-kit` to 0.3.3 to resolve Issue #9 (Shade visibility bug). - Redesigned `IslandSettingsControl`: - Updated text descriptions to clearly explain 'Float' (Heads-up) vs 'Shade' (System Panel) behavior. - Improved Timeout Slider: Now displays seconds (0-10s) clearly in the header and uses full width for easier adjustment. - Updated English and Spanish translations. Closes #9 * feat(onboarding): enforce HyperOS 3 requirement and improve device info - Updated `CompatibilityPage` to strictly block the "Next" button if the OS is older than HyperOS 3.0. - Added logic to `DeviceUtils` to detect HyperOS 3.0 on Android 15 (API 35) to future-proof against base OS updates. - Implemented `getDeviceMarketName` to display readable model names (e.g., "Xiaomi 14") instead of model codes. - Added a specific UI warning for users on China ROMs regarding potential stability issues. - Updated the Autostart permission description to clarify that the app cannot automatically verify if the permission is granted. Closes #11 * docs(release): update changelog resources for v0.3.0 "The Global Update" - Added comprehensive release notes for version 0.3.0 in English and Spanish. - Highlighted key features: "Hidden Notification" (Shade toggle), Navigation Customization, and Spoiler Protection. - Added acknowledgments for community contributions regarding new language support (Portuguese, Polish, Korean). - Updated version title to "The Global Update". * Update PL translation for 0.3.0 (#34) * Add Ukrainian translation (#37) * Updating PTBR translation for v0.3.0 (#38) Atualizando para a versão 0.3.0 * docs(release): update changelog resources for v0.3.0 "The Global Update" - Added comprehensive release notes for version 0.3.0 in English and Spanish. - Highlighted key features: "Hidden Notification" (Shade toggle), Navigation Customization, and Spoiler Protection. - Added acknowledgments for community contributions regarding new language support (Portuguese, Polish, Korean). - Updated version title to "The Global Update". * Add missing 0.3.0 Ukrainian strings (#42) (additionally mention Ukrainian translation in changelog) * feat(data): migrate preference storage from DataStore to Room (#43) - Replaced Jetpack DataStore with Room (SQLite) to resolve persistence instability and file locking issues observed on HyperOS devices during boot. - Implemented `AppDatabase`, `SettingsDao`, and `AppSetting` entity to store key-value pairs reliably. - Rewrote `AppPreferences` to interface with the database while maintaining the existing Flow API for the UI. - Added a one-time migration mechanism in `AppPreferences` to automatically transfer existing settings from the legacy DataStore file to the new Room database, ensuring no data loss for current users. - Updated build configuration to include KSP and Room dependencies, and resolved dependency conflicts. Closes #40 * fix(service): enable blocked terms filtering logic - Connected the Blocked Terms data layer to the `NotificationReaderService`. - Previously, terms defined in the UI were saved but ignored by the service. - Implemented Global Blocklist check in `isJunkNotification` (Synchronous) to drop spam immediately. - Implemented App-Specific Blocklist check in `processAndPost` (Asynchronous) to handle per-app spoiler protection. Closes #6, Closes #39 * Updated changelog to add support for Ukrainian * Fixed text buttons and custom actions. --------- Co-authored-by: Daniel Ramos <[email protected]> Co-authored-by: AlexKoala <[email protected]> Co-authored-by: Kacper Skrzypek <[email protected]> Co-authored-by: Denys <[email protected]> * Update README with new features and localization info Enhanced features section with new capabilities and improved language support. * Add files * Add Russian localization strings Added Russian localization strings for the application. * Update * Update * Update * Update * Update * Update 2 * Update 2 * Update 2 * Update 2 * Add German localization to strings.xml Added German localization strings for the app. * Korean translation addition * Update 2 * u * Add German translations * Delete app/src/main/res/values-deu directory * Update 2 * Update strings.xml * Update strings.xml Removed Russian and German language options from the list. * Update strings.xml Removed Russian and German language options from the strings. * Update strings.xml Removed Russian and German language options from the strings. * Update strings.xml * Update strings.xml Removed Russian and German language options from the list. * Update strings.xml Removed Russian and German language options from the list. * Update strings.xml * -</resources> Updated privacy strings to clarify offline processing and security. * Update Ukrainian Added new strings for privacy settings, backup options, and language selection in the Ukrainian localization. * Update Russian * Update Português Brasileiro Added new strings for privacy, backup, and language settings. * Update polski Added new strings for privacy, language options, backup, and UI updates. * Fix polski Corrected the capitalization of language names in Polish localization. * Update Korean Added Korean localization strings for backup, privacy, and optimization features. * fix español Updated privacy title and description strings in Spanish. * Update Deutsch * fix Polish * de fix * ru fix * uk fix --------- Co-authored-by: David Df <[email protected]> Co-authored-by: Daniel Ramos <[email protected]> Co-authored-by: AlexKoala <[email protected]> Co-authored-by: Kacper Skrzypek <[email protected]> Co-authored-by: Denys <[email protected]> * fix(app): Fixed bold tags on russian strings.xml and updated the AppListItem.kt behaviour * fix(app): Fixed language * fix(app): fixed log modal --------- Co-authored-by: Daniel Ramos <[email protected]> Co-authored-by: AlexKoala <[email protected]> Co-authored-by: Kacper Skrzypek <[email protected]> Co-authored-by: Denys <[email protected]> Co-authored-by: kilo3528 <[email protected]> --------- Co-authored-by: Daniel Ramos <[email protected]> Co-authored-by: AlexKoala <[email protected]> Co-authored-by: Kacper Skrzypek <[email protected]> Co-authored-by: Denys <[email protected]> Co-authored-by: kilo3528 <[email protected]> * feat(app): Updated library to version 0.4.3 Added support for Widgets inside notifications and HyperIsland. Updated colored icons for calls. Added timer to call islands. * fix(app): Show firstisland expand * feat: add snapshot mode, per-widget settings, and revamp design screen - Implement `WidgetRenderMode` (Snapshot vs. Interactive) to fix empty lists in RemoteViews. - Refactor `AppPreferences` to store configuration per widget ID using dynamic keys. - Revamp `DesignScreen` UI: grouped category cards and restored FAB bottom sheet. - Implement nested navigation for Design tab (Dashboard -> App List -> Widget Detail). - Fix `SecurityException` crash by safely handling non-exported widget config activities. - Remove illegal `ACTION_APPWIDGET_UPDATE` broadcast causing `DeadObjectException`. - Add `getWidgetBitmap` to `WidgetManager` for capturing view-based snapshots. - Update `WidgetConfigScreen` with scrollable layout, live preview updates, and M3 styling. * feat(widget): overhaul config UI, add search, and improve performance - Redesign `WidgetConfigScreen` with tabbed settings (Appearance/Behavior), live preview, and floating toolbar. - Revamp `WidgetPickerScreen` with app search, expandable groups, and async preview loading. - Implement `WidgetConfig` data model to centralize settings (Size, Render Mode, Timeout, Auto Update). - Add "Auto Refresh" capability for Snapshot mode to periodically update static views. - Optimize `NotificationReaderService` by caching app labels and moving junk checks to IO dispatcher. - Fix service initialization crash by ensuring translators load before `WidgetManager`. - Improve `WidgetManager` bitmap capture quality and refactor `RemoteViews` caching mechanism. - Add English and Spanish translat…
fix(nav): correct notification layout and improve state handling
This commit resolves a critical layout issue with navigation notifications and improves UI state management and localization.
- **Navigation Notification Fix**:
- In `NavTranslator`, navigation notifications have been reverted to use the standard `setBaseInfo` (Type 1) layout.
- This fixes a bug where action buttons (like "Exit") were not being displayed in the notification shade because the custom `setCoverInfo` layout does not support them.
- The implementation now correctly builds a standard notification with a title, content (ETA • Distance), and properly attached `HyperAction` buttons.
- The island layout and progress bar functionality remain unchanged.
- **State Handling in `HomeScreen`**:
- Fixed a potential crash in the `AppConfigBottomSheet` by safely handling a nullable state variable (`configApp`).
- A local, non-null variable is now used within lambdas to prevent race conditions where the state could become null before the click listener is executed.
- **Localization Updates**:
- Refined and improved translations for Brazilian Portuguese (`pt-rBR`) and Polish (`pl-rPL`) to enhance clarity and provide more natural phrasing.
- Corrected untranslated strings, such as the search hint, in both language files.
- Updated changelogs for version 0.4.0 to use translated text instead of English.
- **Version Bump**:
- Incremented the `versionCode` to 12.
docs(changelog): add version 0.4.0 update notes This commit introduces localized changelog strings for the "Customization Update" (version 0.4.0) across multiple languages. - **New Strings**: Added `title_0_4_0` and `changelog_0_4_0` to the `strings.xml` files for default English and various localizations (de, es, in, ko, pl, pt, ru, tr, uk). - **Changelog Content**: The new strings detail major features and improvements in version 0.4.0, including the Theme Engine, Widget Support, Notification Engine 2.0 rewrite, and a visual refresh. - **Localization Cleanup**: Removed redundant, non-English keywords from the `status_download_complete_words` string array in several language files to improve clarity and maintainability.
Feat/theme engine (#79) * feat(theme): implement theme engine, creator UI, and import logic - Implement `ThemeRepository` to manage JSON-based `.hbr` theme packages, including Zip import/export logic via `FileProvider`. - Add `RulesEngine` to `NotificationReaderService` for intercepting notifications via regex/package rules to enforce layouts or overrides. - Introduce `ThemeManagerScreen` and `ThemeCreatorScreen` for managing installed themes and building new ones with live previews. - Add `ThemeInstallerActivity` to handle external theme file intents. - Refactor all translators (`Call`, `Nav`, `Progress`, `Standard`) to dynamically load assets and colors from the active `HyperTheme`. - Implement per-app overrides for highlight colors and custom action icons. - Integrate Kotlin Serialization for theme configuration parsing. * feat(theme): implement advanced theme creation and overhaul installer - Introduce `ThemeCreatorScreen` and sub-screens (`ColorsScreen`, `IconsScreen`, `ThemeAppScreen`) for granular control over colors, icon shapes, and app-specific overrides. - Implement `ThemePreviews` to visualize changes to notifications, calls, and action buttons in real-time within the creator UI. - Update `ThemeModels` to support advanced configuration: customizable icon shapes (`GlobalConfig`), detailed call styling (`CallModule`), and per-app action overrides. - Refactor `ThemeViewModel` to manage creator state, handle asset staging (icons, shapes), and persist themes with the updated JSON structure. - Enhance `ThemeInstallerActivity` to detect system theme (light/dark) and use dynamic colors, while adopting a transparent activity style for a dialog-like experience. - Update `BaseTranslator` and subclasses (`Standard`, `Nav`, `Call`, `Progress`) to apply theme-defined shapes and padding to action icons using `applyThemeToActionIcon`. - Add `IconsScreen` logic to toggle between full and minimal modes, adjust icon padding, and select from preset shapes (Circle, Square, Squircle, etc.). - Add localization strings for all new creator UI elements, shape names, and installer dialogs. - Bump application version to `0.4.0-dev08`.
PreviousNext