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.
Great! I’ll set it up soon.