KurobaEx is a fast Android app for browsing imageboards, such as 4chan. It's a fork of Kuroba. This fork provides lots of new features:

* New technological stack (Kotlin, RxJava/Coroutines, Room etc).
* On demand content loading (includes prefetching, youtube videos titles and durations fetching, inlined files size fetching etc).
* Third-party archives support.
* New thread navigation (tabs).
* New in-app navigation (bottom nav bar).
* New bookmarks (they were fully rewritten from scratch, now use way less memory, don't use wakelocks, show separate notifications per thread (and notifications can be swiped away).
* Edge-to-edge theme support.
* New database.
* 4chan global search support.
* Fully dynamic themes with Android Q Day/Night mode support.
* Per-site proxies.
* Ability to attach multiple media files to reply, attach media files that was shared by external apps (event by some keyboards), attach remote media files by URL, etc.
* New image downloader. Allows downloading images while the app is in background, retrying failed to download images, resolving duplicates, etc. 
* New posting. Posting code was moved into a foreground service which now allows stuff using like automatic captcha solvers (2captcha API) seamlessly or queueing multiple replies in different threads (only one reply per thread).
* New Media Viewer. It was rewritten from scratch and now lives in a separate activity. It now also supports stuff like viewing links to media files shared into the app.
* Thread downloader with ability to export threads as HTML pages with all downloaded media.
* Composite catalogs (ability to combine multiple boards of any available sites (except archives) together into a single catalog).
* Mpv video player.
* Lots of other tiny improvements.

AntiFeatures:
- NonFreeNet. The app has to connect to image board sites which may be closed source. 
The app may connect to non-free services such as Google ReCaptcha (JS/no-JS), CloudFlare,
GitHub (for some image resources), Youtube/SoundCloud/Streamable (to parse titles and durations),
and other sites. This may depend on the site itself as well as the app settings.

The app uses some permissions that may be considered dangerous: 
- RECEIVE_BOOT_COMPLETED. It is used to listen to reboots and reschedule BookmarkWatcher service.
- FOREGROUND_SERVICE. It is used by the service that shows a notification when a file is
downloaded (allows you cancel it).
- WAKE_LOCK. It may be used on Android versions prior to API 23 to keep the device awake while
BookmarkWatcher service is doing it's job.

When making a reply on some sites the app may connect to Google's ReCaptcha services.
The app supports JavaScript and non-JavaScript based captcha systems. 
Whether to use a JS or no-JS captcha can be configured in the site settings (depends on the site).

To make the final APK smaller some of the static resources are stored on Github servers and are
loaded lazily, so the app may connect to Github services.

The app uses it's own crash reporting system which is turned on by default.
It collects crash logs and other logs (prior the crash), stores them, but does not upload them
automatically. You have to do it manually. You can see what is being sent and even edit it
(or delete crash logs). You can also completely disable collection of crash logs in the settings.
(The server's source code can be found here https://github.com/K1rakishou/Kuroba-apk-server)