Skip to content

Tags: D4vidDf/HyperBridge

Tags

v0.5.0-beta02

Toggle v0.5.0-beta02's commit message
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.

v0.5.0-beta01

Toggle v0.5.0-beta01's commit message
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").

v0.5.0-aplha03

Toggle v0.5.0-aplha03's commit message
loc(fr): fix apostrophe escaping in French strings

- Updated `island_behavior_desc` and `engine_timeouts_triggers` in the French (`fr-rFR`) `strings.xml` to properly escape apostrophes, ensuring correct XML parsing and display.

v0.5.0-alpha02

Toggle v0.5.0-alpha02's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
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).

v0.5.0-alpha01

Toggle v0.5.0-alpha01's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
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

v0.4.2

Toggle v0.4.2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
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".

v0.4.0

Toggle v0.4.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
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…

0.4.0_rc2

Toggle 0.4.0_rc2's commit message
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.

0.4.0_rc1

Toggle 0.4.0_rc1's commit message
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.

0.4.0-dev08

Toggle 0.4.0-dev08's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
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`.