A couple of weeks ago, @shazbot made this post about a project that they were working on. Since then, @shazbot, @ori, @minnieo and I have been hard at work, and we are excited to finally announce the official release of kbin Enhancement Suite (KES)!
kbin has seen an explosion of user-made add-ons, but keeping track of them in one place, letting them share settings with one another, and toggling them on and off can be a challenge. KES is an expandable add-on manager that aims to rectify this by providing a unified interface and framework for script makers to collaborate, and letting you use them all in one place.
KES brings together userscripts from the community, with a built-in settings menu that lets you tailor your experience to your liking. It also offers a flexible framework that empowers script authors to effortlessly integrate scripts into KES and set up custom input fields with no additional code.
KES gives you a single window onto a collection of enhancements that is growing by the day. And those features can be added to by you!
What the feed looks like with everything enabled
The comments with everything turned on
Features
We’ve focused on making customizing your kbin experience as easy as possible, whether you are on mobile or desktop. After we sort out the bug reports from this release, we plan on adding many more features! Here’s what we have so far:
- Collapsible comments with nesting (by @artillect)
- Use slash commands to add emoticons in text areas (by @minnieo)
- Add syntax highlighting (with customizable themes) to code blocks (by @ori)
- Show instance names next to non-local users and communities (by @artillect)
- Add a link to message users on your instance next to their usernames (by @shazbot)
- Hide upvote/downvote buttons and reputation (by @artillect)
- Show more detailed timestamps on threads and comments (by @shazbot)
- Hide thumbnails on threads (by @shazbot)
- Add link to subscribed magazines to the navbar (by @shazbot)
- Replace or hide the kbin logo in the navbar (by @shazbot)
- Add “OP” label next to thread author’s username in comments (by @shazbot)
- Convert navigation links on profile pages into a dropdown (by @shazbot)
Each of these can be toggled in the settings menu, and some of them have additional configuration options, such as setting custom labels, colors, etc.
New features are added on a rolling basis and the menu pages will update on the fly to reflect this new content.
Installation
Click here to install KES, and follow your userscript manager’s prompt to complete the installation.
If you don’t have a userscript management extension, you can install one of these, and then install KES using the link above:
- TamperMonkey (desktop, or Firefox on Android)
- Userscripts (iOS 15+)
Once KES is successfully installed, access the settings menu by clicking on the wrench icon located at the top-right corner next to your username. From there, you can enable the features you like, and customize your browsing experience.
More information
For bug reports and feature requests, visit our GitHub repository’s issues page. If you have any questions or need assistance, don’t hesitate to ask here or make a post on /m/enhancement!
Developers
If you are a userscript author, we’d love it if you could try porting your userscripts into KES, or try writing completely new ones for it! @shazbot has made it easy to integrate your scripts: you just need to add your script’s information to manifest.json
, make a few small modifications to your script, add it all to the GitHub repository, and you’re good to go!
KES benefits:
- Turnkey integration: a simple, declarative framework for dynamically adding features to the UI without touching the underlying code
- Sharing of user-defined settings through script namespaces: access your script settings, and those from other scripts, through a well-defined object
- Automatically responds to infinite scroll and page reload events
- Attribution of script authors
- Easily toggle scripts on/off
Explore KES’s documentation here to get started. If you have any questions, feel free to reach out here, on /m/enhancement, or at our GitHub repository.
The latter, hiding individual threads by pressing a button.
Permanent hide?
Yeah, I’m thinking basically the same implementation Reddit has, where you can tap “Hide” on a post, and it’ll disappear after a few seconds and stays gone from your feed.
I’ve been thinking about this. I think I would say: hide posts for the duration of the browser session and localized only to that tab, yes, eminently doable, and they won’t return while you browse around until you exit the browser. But for permanent storage, we have to store the ID of each post in perpetuity, and this will necessarily grow to epic proportions over time as you hide stuff, but there is a small upper bound (5MB) on how much can be retained persistently across all apps. In addition, you’d be carrying around the ID of every post you’ve blocked before and it would be visible to other tabs in your browser, which is a small security concern insofar as it vaguely indicates your preferences. So there is a security and performance negative to this. I don’t think we should retain any such information, only generic information such as on/off states, etc. Hope this is clear.
Pretty sure you could do that locally via cookies without the need for that server load. I think that’s how Reddit’s implementation of hiding posts works, at least.
There is no server load, I am talking about the equivalent to cookies: sessionStorage and localStorage. Albeit small, the performance drag comes from parsing a growing list of IDs, and the fact that 5MB is shared across the entire browser for all scripts and applications, and the aforementioned security consideration. When I said “we have to store,” I was talking about the localStorage method. Also, KES should never callback to a remote server to store settings, we are against that.
Alright, looked into it some more and I think we can do this using GreaseMonkey’s internal storage, which is private to an atomic script and not accessible elsewhere. I’ll work up a prototype. It will probably work best with infinite scrolling on the thread index enabled.
Good news, got this working as you requested and it is going into the next release. Hides threads on the fly and saves that permanently for later. Also restores previously hidden threads on the page if you disable it, and resets the storage. It works rather well! Need to optimize some stuff, but otherwise it is good to go.
That’s awesome! How does one go about updating the user script? Do I just uninstall the old one and reinstall the updated version?
If you’re on >=2.0.0, the wrench icon will show a notification symbol if there is an update, then you can open KES and click the “install update” button through there. If you’re below 2.0.0, there is no wrench notification, but you’ll see an “install update” button if there is one available when you open the main KES menu. Otherwise, if you haven’t interacted with KES in 24 hours, most script managers download updates in the background, but the consistency is a bit spotty. It probably won’t be out for another week or so, it is a biggish release incorporating many new add-ons, as seen here: https://github.com/aclist/kbin-kes/milestone/4