You shouldn't need to backup before this release, but it is a good idea.
A lot of the work in this release was background stuff and not directly visible to the user, which is why this isn't really a feature-filled release.
SPECIAL THANKS
The following people have been greatly helpful in this release, other than @K1rakishou of course.
- @jeremybullen, 8Kun captcha.
- @Astridchan, filter submenu and filter settings display.
- @XylTheGryphon, local reply timer.
- Optix#9026, toolbar/FAB color.
- @jkass1, test support for a reply/draft refactor.
- @TacoTheDank, the usual dependency upgrades.
- @Wired-7, fixes for their imageboard.
- @clawyf, theme refactor test support.
- @lewri, theme refactor test support.
GENERAL IMPROVEMENTS
- #15, #275, the submit button now acts like the captcha button previously if you aren't able to immediately post and stores your captcha token. Otherwise a token is consumed and will post immediately. The long-press behavior will always attempt to immediately post and ignore the local thread timer as it previously did.
- #439, a menu item has been added to quickly view your own posts in the thread and view replies to them. This appears as a popup like any normal post cell replies tap.
- #922, regular expressions that match the empty string (like /^$/) should now work. Note that any expression that would reduce to a pattern input of empty string (like //, "", or a string consisting of any number of consecutive spaces) have been prevented, as those would match everything.
- An alert has been added for when you attach a file and it has EXIF data, to recommend re-encoding it before posting.
- Shared files are no longer saved to your save location and are only stored in the application cache; less clutter woo! Also #863, shared files should work in a bunch of different applications now.
- #936, image sharing should work for all file types now.
- #799, when using "mark as my post" and "unmark", if the post has a poster ID assigned with it, all other posts matching that ID will be marked/unmarked as your post.
- #845, the correct thread title will be set if you post a new thread and have the watcher enabled.
- #843, don't allow for inlined images to be filtered as they don't have hashes; also prevent images with null hashes from being added to the selection list, and if somehow a hash gets through that is null, make it turn into an empty string.
- #721, captcha properly works for 8Kun now. Thanks to @jeremybullen for the information!
- #860, filters that match the same post will have their effects OR'd together. Except for highlight colors, in which case the last filter effect applied will be the one on the post.
- #873, the file size display will now be correct; previously units were kB instead of KB (or KiB more formally).
- #872, WEBP files are now supported for re-encoding, but only into usual imageboard formats of JPEG or PNG.
- #877, the post details tap-to-quote option is gone. Just long tap the details now to quote.
- Filter watches should be a bit less resource intensive now as the posts aren't checked via regular expression a second time.
- #869, any image viewers will be closed if you tap on the watch notification.
- #901, audio won't begin auto-playing when a video loads unless the application is in the foreground.
- The album download loading window has been removed, and the information it displayed instead put into the saving notification.
- The site picker dialog has been reworked in order to only display supported sites. No more typing to get a site, as external sites were never supported anyways (and wouldn't be due to per-site configuration varying greatly)!
UI CHANGES/THEMES
- The theme picker has been upgraded with some more examples of stuff, which should give a better representation of what a theme will look like. It now also properly applies the picked colors when you select them, and keeps track of the picked color. Exiting the theme picker discards any changes and pressing the checkmark will finish your theme selection to be whatever is currently viewed along with the colors picked.
- #898, Android 10 dark mode support; you can now pick two Themes on Android 10 and above, and when the configuration change is triggered, the application will restart with the night theme. Unfortunately I don't know how to have it smoothly transition without a lot of trial and error, and the way that themes are setup in the application makes it difficult to move to just one style without recreating all the themes for a day/night easy transition, and programatically re-inflating all layouts in the tree will become very messy.
- The image reencoding window has been heavily modified to be a two-tap operation; the reencoding type of "as-is" no longer exists, and the window defaults the reencode type to the same as the input image (JPG or PNG); the remove metadata option has been removed, as any reencoding of the image removes metadata. The remove filename option has been converted to a button next to the name field and also a long tap action on the attached image preview.
- A newly selectable color has been added, thanks to Optix#9026.
- #934, a Gruvbox Black theme has been added.
- Poster IDs are now colored with contrasting text; this should improve readability on all themes.
- Capcodes are now colored with the selected accent color.
- Emoji are now allowed in the name field, both posting and parsing, if enabled.
- Emoji are now re-parsed when looking at the reply input box, and should be shown correctly as opposed to their BBCode counterpart if the post fails to go through.
- #866, the application icon in the task switcher will be the regular app icon.
- #859, the [Exif data available] block on /p/ will correctly not display as it was meant to.
- PR #842, cleanup of the filter options in the post menu into a separate submenu, like for image searches. Thanks to @Astridchan!
- PR #927, filter details are more descriptive if you have only one board or filter type for a filter. Thanks to @Astridchan!
- #765, the toolbar unread posts badge will now only display the sum of unread posts from watching pins or archived pins (whether or not they were being watched previously is not information the app keeps track of).
- #929, fixes a display issue with bottom input expanded view and attaching an image, causing the reply window to shift under the toolbar.
- The album viewer now properly respects the layout it is based on and does its best to fit more images into the view.
- The captcha cookies editor will now show errors on all empty fields instead of just the first one.
- Filter help dialogs have been moved around a bit to where they were more useful, as well as the strings moved out of code and into strings.xml.
GENERAL FIXES
- #914, image viewers should no longer softlock the application if you do weird, fast things.
- #832, the filter image hash option will only appear if the post has images.
- #839, file hashes on 2ch.hk are sometimes incorrect, so a configuration item has been changed to not trust them for chunked downloads.
- #837, actually use the cache for Youtube title parsing, duh.
- Works around an issue reported at this URL, which is too long to describe succinctly: https://issuetracker.google.com/issues/140891676
- Fixes an issue where reencoding an image would uncheck the spoiler image checkbox instead of leaving it alone.
- Fixes an issue where if you closed the expanded-reply window, the spoiler image checkbox would be unchecked instead of leaving it alone. IE previously you would need to post spoilered images with the expanded window open but now you are free to close it and your image will still be posted with a spoiler.
- #885, overflow menus won't have the wrong action associated with them anymore.
- #890, the new posts notification won't display if in the authentication window.
- PR #900, ensures proper reply timer functionality. Thanks to @XylTheGryphon!
- Fixes an issue where all drafts would have their picked files nulled out, instead of keeping only one as was intended.
- PR #909, #899, fixes a small issue with Wired-7 desktop URL resolving. Thanks to @Wired-7!
- #910, the post date/time will properly use your default locale when not using relative timestamps.
- #930, hopefully the in-app updater for release builds will be a bit more descriptive in its failures if it does.
- The troll_flags JSON item is now parsed as country_flags, so any Board object with that should have the appropriate flag set.
- Fixed a memory leak with CaptchaHolder.
CRASH FIXES
- #831, hopefully the final fix for these notification crashes.
- A fix for notifications sometimes having a null channel. Doesn't make sense at all. Probably has some other github issue attached to it as well that was closed without resolution.
- #841, prevents a crash caused by something similar to #639 and #780.
- The post image hotlinker's regex has been fixed to not match non-HTTP(S) URIs.
- #850, if any exception is thrown when trying to open a link, display a message and not crash the app.
- #889, prevents a crash when internal functions for GIFs throw exceptions on initialization, i.e. that 10K by 10K solid white GIF with like 600 frames that's small uncompressed, but massive when decompressed.
- #852, prevents an NPE crash due to an excluded null check.
- #893, prevents a double-instantiation of the default event bus.
- #897, prevents the picked file name from being null and throwing errors.
- #903, fixes an OOB exception caused by selection possibly having their starts and ends flipped.
- #942, fixes a crash caused by a saving finished toast appearing while the application was not in the foreground.
DEVELOPMENT WORK
- #237, Volley has been completely removed in favor of OkHttp4. This fully solidifies the use of API 21 and above only.
- #892, #613, a refactor to fully resolve a number of issues with posting and drafts and nulled out files and a whole bunch of associated issues. Special thanks to @jkass1 for helping debug and providing very valuable input.
- PR #905, gradle and other dependency updates. Thanks again to @TacoTheDank!
- #510, some refactoring has been done for Executors so they are able to be dependency injected; gives access in BackgroundUtils as well.
- Report logs are no longer editable, as a number of reports have been coming in with useless logs that appeared to have been edited.
- #918, pins and history now use HttpUrls internally instead of Strings for storing thumbnail URLs.
- Selection markers have been removed from the Reply object, to more properly use data encapsulation for what it is supposed to be for; the same functionality has been replaced by a pair of callbacks.
- The proguard file for releases is now the correct one for the gradle version being run.
- The logging wrapper has been changed to use object instances instead of static String tags. If you pass in a String, the tag will still be that. If you pass in anything else as a tag source, its class name will be used as the tag. This replaces all the static TAG declarations at the tops of several files.
- #779, removed FastTextView. Too many memory leaks came from it with minimal performance benefit.
- Settings code has been cleaned up significantly for readability and usability.
- Plenty of cleanup in lots of files, as an extra load of abstraction was added without benefit.
- Site icons are now only grabbed once, and their bitmap drawable saved in memory for any other uses.
- The BIG THEME CLEAN:
- Themes have been cleaned up significantly to use fewer resources, and colors that were separate before are now combined for consistency in UI
- The startup theme has been broken out to its own theme; if you want to change the startup stuff (like removing the splash screen) you should be able to figure it out now
- A guide for adding in a new theme has been added; it should be very easy now. See the README to begin!
- A whole ton of color declarations have moved to XML
- A number of items have had styleable attributes declared for them, and that code has moved into XML where applicable
- Pretty much every layout will now properly render in android studio (minus a few that can be easily modified to display correctly), which should be very useful for making new layouts
- Special thanks to @clawyf and @lewri for assisting in debugging, greatly appreciated for the patience and testing help (#865, #878, #880)
- Assets have been significantly cleaned up and are now basically all vector assets.