* Optimized the UI rendering logic to render only the necessary components, avoiding unnecessary recompositions.
* Utilized dimensions from `ComposeDimens` for better maintainability and consistency.
* Since there's no official Android Studio IDE that supports Android 16 yet — it's currently in the final beta phase and is expected to launch in May or possibly June — we need to use the `Canary build` of the `Narwhal` version for now. Therefore, we're updating the README file accordingly. Once the official IDE is released, we'll update the README again.
* Improved the clicking on page item.
* Fixed: Page items are not showing updating after deleting.
* Fixed: Switch was not disabling when selecting the page items.
* Added SearchView, navigationIcon, and menuItems to page fragment.
* Created a `PageScreen` composable, which serves as the base screen for all these fragments. Each fragment can customize it as needed.
* Introduced a reusable `PageListItem` composable for consistent list item rendering.
* Added an extension function to convert the favicon to a Compose ImageBitmap. If no favicon is available, it falls back to the default ZIM icon, maintaining behavior from the XML-based UI.
* The issue occurred because the notification permission was not granted. On Android 13 and above, notifications won't appear without explicit permission.
* To fix this, we now properly request the notification permission on devices running Android 13 and above.
* Moved the download logic to the IO thread to prevent blocking the main thread.
* Also refactored the code structure slightly to reduce nesting and resolve the NestedBlockDepth lint warning.
* The issue occurred when the user paused a download from the notification while the application was in the background and only a single download was active. At that point, a paused notification was posted on the IO thread to inform the user, and shortly after, the same notification was set on the foreground service. Due to a timing conflict, both notifications were being processed simultaneously, leading to a crash.
* To fix this, a synchronization lock is added inside the `getCancelNotification` method to ensure that only one thread can access the notification builder at a time.
* Since we upgraded Gradle, we switched to using `layout.buildDirectory` instead of `buildDir`, as the latter is now deprecated. The new approach returns a DirectoryProperty object instead of a direct build directory path. This caused our custom apps' CD pipeline to be unable to locate the generated `.aab` file. We have now updated the code to correctly retrieve the directory path from the `DirectoryProperty` object.
* ABI splitting is now enabled only when needed (i.e., when building an APK) through an environment variable (APK_BUILD). By default, ABI splitting remains disabled.
* Refactored the workflow to align with this change.
* Updated the README to document this change, ensuring that everyone is aware of this feature.
* The issue occurred because our application already has `Edge-To-Edge` mode enabled, but Compose's `TopAppBar` automatically adds a top margin when insets change. This resulted in double padding in the toolbar.
* To fix this, we now apply only the side insets to the toolbar, as the top insets are already handled.
- used minimumInteractiveComponentSize() on the modifier to avoid "Touch target" accessibility issue.
- added compose dimes to previous missed elements.
- added content description for clear icon button in search view.
- added orders to the test rule to avoid retries error in tests.
- renamed content lambda to "navigationIcon".
- removed redundant "Experimental api" from kiwixSearchView.
- added appropriate text size for kiwixSearchView.
- added orders to the test rule to avoid retries error in tests.
- renamed content lambda to "navigationIcon".
- removed redundant "Experimental api" from kiwixSearchView.
- added appropriate text size for kiwixSearchView.
- simplified app search bar
- renamed the search bar to KiwixSearchView
- added text clearing icon within the textview to
simplify icon logic in app bar
- added inner padding to scaffolding to account for topAppBar.
- moved AppBarTextField to ui/components so it can be re-used.
- shifted hardcoded values to ComposeDimens.
- Added ContentLoadingProgressBar modified it to support
Indeterminate mode
- further decoupling of composable functions
- De-coupled and lifted the states of language screen.
- added preview to language screen to better manage the ui.
- added tests.
- updated the animation logic to Launched effects to avoid circular dependency.