* It was not showing the article when fresh application is installed on device with list of fds, and after the first install it works normally(It starts loading the article). So we have placed a fix for this.
* Introduced the splitting zim file with 500MB for custom apps. Since the bundle has a limit for a file to upload it uses the play asset delivery mode, and for new custom apps, playStore does not allow to upload the apk (with apk we can upload more than 1GB file). So to address this issue we have introduced a feature in libzim where we can load the zim files via the fd list.
* We have modified our code to upload the files with 500MB chunks in the asset folder, and later we are accessing these files from the asset folder and creating the archive object with the help of the new libzim feature.
* YouTube videos were not playing in the Android reader because the response code for the video URL was 206 (Partial Content). The `Content-Range` header of the incoming data was being set incorrectly. This happened because the `data` had a size of 0, as the content was being written on the IO thread (to avoid blocking the UI thread) when loading in the WebView. Due to this, the `Content-Range` was set incorrectly, preventing the YouTube video from playing.
* To fix this, the correct content length is now passed to the `Content-Range` header, ensuring that the video plays correctly.
* We didn't account for the scenario where a user long-clicks on an image that contains an anchor tag with a URL. For now, we only check when a link is loading(when user simply clicks on the image button), and if the link is unsupported by Kiwix, we show the save/open dialog. Now, we are also checking for this scenario on long clicks.
* The issue was epub fileName containing the colon ":" in it that is not supported by most of fileSystem, that's why it is not creating the file in fileSystem and we are not able to download the epub file.
* So to fix this we have improved our `getDecodedFileName` method which returns the fileName of the epub file, here we are removing the colon from fileName if any contains. For this change we have added the test cases as well for our `getDecodedFileName` function to properly test it.
* We also refined our downloadFileFromUrl method. Previously, the generateSequence function was used to create new files with underscores and incremented numbers, anticipating multiple attempts to save the same file. However, since we now save files only once in our storage, this feature is no longer utilized. This enhancement is detailed in issue #2879.
* Added epub query in our manifest to properly open epub files in external application.
* Refactored the test cases for this new change.
* Now user can easily import the exported bookmarks by just selecting the exported `bookmark.xml` file.
* The application now exports 'bookmark.xml' file to the 'Android/media/org.kiwix...' folder. Users can copy this file to the 'Android/data/org.kiwix.../files/Bookmarks/' folder to view the exported bookmarks.
* Introduced an export bookmark feature in the settings screen, allowing users to easily export all bookmarks with a simple click. A dialog prompt appears before exporting, indicating the location where the exported bookmarks will be saved and providing instructions on how to import them.
* Added a test case for this change in our settings test.
* We have refactored our code to use PageDao for managing data related to Bookmarks, Notes, and History. With the ability to return Flowable from the Room database, the BasePageDao interface has become unnecessary. Consequently, we have removed BasePageDao and streamlined our code to use PageDao, providing a unified approach for these functionalities. This change reduces code complexity and enhances readability, making the codebase easier to understand and maintain.
* We have moved the deleting functionality to background thread because we should not perform any database operation on UI thread.
* Refactored all the test cases according to this change.