This is a major version update for KES that introduces a more robust API and build system, as well as a few new features.
This is mostly a custodial release, but does have three powerful user-facing features that I think you’ll enjoy.
On another note, I’ve been informed that there are a number of different instances running kbin forks like mbin, and that sometimes different instances are not synchronized around the same version of kbin. For the sake of clarity, KES always targets the version of the kbin software running on kbin.social as the instance of first note. In general, most (if not all) functionality should be the same on other instances, but if an instance is using a newer version of kbin software that changes things slightly, results may vary. In the interest of cementing around a single stable version, KES always targets the stable version of kbin running on the main kbin.social instance.
Add-ons
Softblock magazines (@shazbot)
Location: Threads > Softblock magazines
This feature was recently requested here. It seemed like a good idea and easy enough to implement, so I added it today. When enabled, you will see an icon next to magazine names on the main thread index (https://kbin.social or https://kbin.social/sub if logged in). Click this icon to “softblock” threads from that magazine from appearing on your main thread index. This does not block the magazine outright: you can still go to the magazine directly, so it is less aggressive than a total block.
You will also find a Softblock/Unsoftblock button in the sidebar of magazines, as well as in the Magazines index located at https://kbin.social/magazines. As you would expect, this button has the effect of adding/removing a magazine from your filters.
The Magazines index also contains a tab at the top that you can use to centrally manage your softblocked magazines. For the time being, this is merely informational, but going forward, I will add actual interactive buttons inside of this menu so that you don’t have to search through the whole Magazines index.
Note! If you have a very small number of subscribed Magazines and you do something unexpected like softblock all of your existing subscriptions, and you happen to also have infinite scrolling enabled, the thread index is going to try to keep looking for new articles to feed you but filter everything out, so you’ll end up with nothing. If this happens, navigate away from the page to your Magazines index and unblock the offending magazines so that you at least have some content to load. I don’t consider this a bug per se, but it is avoidable through defensive design. Due to the relative newness of this add-on, I felt this minor issue was acceptable for now.
Search for feature by name
Location: KES header icon
KES originally had a handful of add-ons, so finding the corresponding page was relatively easy. We are nearing 35 add-ons now, so at times it can be hard to remember just where the heck a particular option was.
I had thought about alpha sorting the add-ons at one point, but many of them have similar names, and their position in the list is usually determined by when they were chronologically added or updated. Even if we had resorted to sorting the list, it still wouldn’t solve the fundamental issue of needing to know what page the add-on is on!
So I decided to do one better and just make all add-ons globally searchable within the app. This feels pretty good.
Click the magnifying glass icon in the KES header to spawn a search dialog. You can search for a term (case insensitive) and submit, and KES will return any add-ons containing that partial text. For example, you could search for phrases like “hide”, “threads”, “checkmark”, or something like that. Click the name of an add-on in the resulting list of hits and you will jump directly to that add-on’s settings page.
Back up/restore settings
Location: KES footer button (SETTINGS)
Similar to the above, with the large number of add-ons now in KES, it made sense to want to back up your settings for restoring on another browser, PC, etc.
Requested by a user on GitHub, this feature has been in the works for some time, but was held back for testing and so that it could coincide with this version bump.
When backing up, note that KES settings are local to a given kbin instance, so you may have enabled different settings on different web sites. If you want your settings to be consistent, one advantage of this new feature is that you can import the same file everywhere. Alternatively, you can continue using different settings on different instances. Backup files are given a unique timestamp so that you can keep them apart.
Make sure that you don’t edit the backup file, as it’s meant to be machine readable.
Fixes
- Kbin Federation Awareness, Label OP
It came to my attention that both of these add-ons were not toggling dynamically when pulsing on/off, and required a refresh to see the change. This has been fixed.
- User instance names, Magazine instance names
These add-ons were spawning their own observers that were triggering on subsequent page events and, in rare cases, causing an infinite loop. This has been fixed.
There is a vanishingly small number of insignificant bugs relating to setup and teardown with certain add-ons created by various authors; when time permits, I am auditing these one by one to resolve any such problems (chiefly cosmetic).
API
The old API and build system required authors submitting mods to edit the master manifest with their settings. Besides being unwieldy, this had a propensity for errors.
Following suggestions from a contributor, under the new system, authors submit atomic JSON objects in their own directories, and these are automatically concatenated into the final manifest without additional interaction.
Mods are now stored under an eponymously-named directory alongside their personal manifest file. Ensure that the basename of the files therein is identical to that of the parent directory.
softblock/
├── softblock.json
└── softblock.user.js
You can also choose to use the included GUI manifest generator to output the JSON object for your add-on and then just paste it into a file.
The softblock features is amazing! Thank you!
Beautiful work - thank you.
Whoa
Looks like KES still breaks some styling somewhere, the login page looks like this with KES enabled.(ignore the proton pass thing in the email field.
I disabled everything and tried it with/without and saw no observable difference on the login page. Can you indicate what anomaly you are seeing in the above screenshot? Also, could you please click the clipboard icon on the bottom right of the KES menu and paste the contents of the clipboard to me in a PM so I can try to reproduce this?
It’s the background behind the credentials that’s messing up, see those little grey bars on the left.
I disabled the other userscripts I had installed and still had this problem but now I went through the KES settings and configured stuff and the issue is now gone.
I saw this problem before this update too.
Not sure what’s up but seems alright now.
Thanks for the work on this :)
Getting back to you, this issue has been extensively described and reported by another user on this ticket. The bug is now fixed and will make its way into the next release (3.2.0).
I remember KES not functioning properly with Turbo mode. Has that been fixed with the new update?
Truth be told, I am not sure what turbo mode is intended to be. The setting is there, but it has no description. I turned it on and observed no change. Is it different from infinite scrolling mode?
I think it makes going through Kbin smoother by not loading a new page each time you click on something.
Thank you, I looked into it. Here is a reply I made in another thread:
By design, Greasemonkey scripts necessarily trigger on page load. However, KES initializes its own mutation observer and watches for events that change the DOM, but does so in a granular fashion so that only those of relevance (changes to the thread index and comments) are propagated. It looks like when turbo mode is enabled, the entire DOM up to the HTML tag is replaced at once, so our more granular approach is missing this change. We need to watch for basically all mutations now and filter them accordingly.
After making the necessary changes, it seems to be working again as intended, but some additional refactoring is needed, and I haven’t checked the implication of this on specific scripts/add-ons yet. It looks like it should be easy enough, since the majority of functionality I looked at was working again when using a more permissive observer.
I haven’t added these changes into the release version of KES, and given that turbo mode is listed as experimental, I don’t think we can support it immediately over a more traditional page load structure, but at least I am aware of the issue now and can start refactoring it. Hopefully it is not problematic.
Great to hear! I’m assuming Turbo mode compatibility will be announced when it’s released. Is there a experimental KES version that does have Turbo mode support?
There is a testing branch that can be used by intrepid souls who don’t mind random breakage, but compatibility with Turbo Mode has not been added in there yet. I just workshopped the change a bit locally and haven’t pushed any changes. I will ping you again when the prototype is working with a link to the testing branch.
Great, thanks!
Thank you for waiting. This feature is now available in the testing branch and should apply by default if Turbo Mode is enabled. I had to rejigger a few things to make the functionality comply with both normal and turbo modes, but KES should apply its settings correctly in all of the expected scenarios:
- On initial page load
- When navigating between pages
- When loading threads/comments via infinite scrolling
Let me know if you see something out of the ordinary.
Note that the testing branch may introduce breaking changes from time to time, so after testing this feature, you can go back to the stable branch. The finalized version will make its way into version 3.2.0.