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!

The KES settings menu

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:

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.

  • akai
    link
    fedilink
    3
    edit-2
    2 years ago

    Seems to work pretty well on mobile Firefox with Tampermonkey. Haven’t had a chance to fully explore yet, but looks really good so far! Good job!

  • minnieo
    link
    fedilink
    32 years ago

    woot woot, nice to finally see an announcement post on this ♡

    • artillectOP
      link
      fedilink
      32 years ago

      Thanks for all of your help, I love being able to see Kibby up in the top left of my screen ᐠ( ᐛ )ᐟ

        • artillectOP
          link
          fedilink
          12 years ago

          Is it not showing up? I made it earlier but it hasn’t gotten any votes or comments, I wonder if that’s why

      • minnieo
        link
        fedilink
        12 years ago

        i activated him too, he is so cute! im glad me and aclist finally figured out a design that made him readable on all scales, which was a struggle the first few tries lol ( ˶ˆ꒳ˆ˵ )

  • effingjoe
    link
    fedilink
    102 years ago

    I appreciate the effort, but am curious as to why this is needed in an open source project. I would much prefer these types of things be part of the default experience instead of a third party solution. Is this just my own ignorance showing? Is there a reason to handle this with a third party tool instead of a pull request in the kbin code?

    RES was needed because reddit went closed source and didn’t prioritize the things people wanted.

    Please don’t take my comment as being ungrateful for the great work you’ve done. It’s just an idle question that will probably serve only to demonstrate how little I know. haha

    • artillectOP
      link
      fedilink
      162 years ago

      Honestly, it’s a great question! While kbin is open source, making userscripts allows you to iterate on changes and get updates out very quickly. It’s also much easier to start making userscripts than it is to contribute directly to the project, since you only really need to be familiar with JS, HTML, and CSS. To contribute to kbin, you need to be familiar with PHP and Twig, and set up your own instance for testing your changes.

      Plus, while kbin is open source, not every single change will be merged, and there will likely always be features “missing” from it. Userscripts also give you a ton of freedom and flexibility in how you use sites, so you could make crazy changes that aren’t remotely possible to merge into it.

      Hope that answers your questions!

      • RheingoldRiver
        link
        fedilink
        22 years ago

        I’ll also add, from the POV of a kbin contributor (not writing code, but triaging issues, answering questions, opening a lot of tickets, etc) that it makes sense to have user scripts to add some settings that are like…too much.

        For example, I proposed that we have a preference for “delay before the user profile popover shows” and the user can enter a time between 0ms and 15 seconds. It was decided this is too much customization to have built in, and maybe we can do “off,” “slow,” and “fast.” But this seems like a great thing for a project like KES (though i love the suggestion to call it KEK) to add and overwrite, for power users.

        ^^^^^^^^^^^^^^^^^ note all of this is unofficial and not the opinion of /kbin the project. It’s my own personal opinion, and just educated from having seen both sides of the discussion.

    • shazbot
      link
      fedilink
      42 years ago

      I think the analogy is akin to hotrodding. Some third party modifications may make their way back to the original manufacturer, but there is always a desire/need among enthusiasts for more outlandish proposals that may not align with the vision of the original maker. Particularly when they involve subjective aesthetic details. If anything, the open-source ecosystem has shown itself to be robust to fragmentation, with 19,000 ways of solving the same problem that are generally interoperable with each other, so I don’t think it’s a bad thing per se, but rather a strength.

      • effingjoe
        link
        fedilink
        22 years ago

        Yeah. I guess my concern (perhaps unfounded) is that changes won’t get pushed to the software because there is no presumed need since “the user can already do this with a user script”.

        • minnieo
          link
          fedilink
          32 years ago

          i wouldn’t worry about that. if anything, userscripts only give ernest and his team the time to focus on more important issues that make sure the site runs properly and quickly, which in turn gets them done faster, so they can get to QOL improvements later on based on our ideas.

        • shazbot
          link
          fedilink
          32 years ago

          I don’t think that’s ever proven to be the case, sounds more like something cynical that Reddit would do. If it were me, I’d rather focus on actual structural, backend improvements than entertaining the whims of users who want rainbow-colored buttons or dancing emoji. We are talking about utterly trivial changes here like nudging an element here or recoloring an element there. Individually, they are rather pointless, but in aggregate, it can be helpful for a user to dial things in to their liking via a centralized HUD. I still mod every site, game, and every piece of software I use to my liking, that’s just the nature of the beast IMO. Incidentally, I think the owner of the site has been fairly encouraging and accommodating towards our cottage industry of modders!

  • ZeeKay
    link
    fedilink
    22 years ago

    Greasemonkey on Firefox on MacOS, seems to not really work? The CSS updated slightly but there’s not gear icon in the top right or anything.

    • shazbot
      link
      fedilink
      42 years ago

      GreaseMonkey is a bit antique by today’s standards–is it possible to use TamperMonkey? Also, can you provde the OS, Firefox, and GreaseMonkey version numbers? We are trying to reconcile these differences between extensions internally so that the tool is more agnostic to different browser extensions. This is a high priority at the moment.

    • shazbot
      link
      fedilink
      22 years ago

      This is tentatively fixed and we have it working on all flavors now. The update should be forthcoming over the weekend or start of next week, we are just verifying things.

  • Cat
    link
    fedilink
    12 years ago

    Nice! Thanks for making and sharing. Just curious. Why not contribute to Kbin? I bet some of those customizations would be appreciated as cor Kbin.

  • ChrV
    link
    fedilink
    72 years ago

    Collapsing comments is really smooth and the tap anywhere to collapse is something I didn’t knew I needed. Good job, thank you!

    • artillectOP
      link
      fedilink
      42 years ago

      Thanks! I worked really hard on that before working on KES, and it was super easy to integrate my script into it

      • Twelph
        link
        fedilink
        2
        edit-2
        2 years ago

        vger.app web app for Lemmy is annoyingly stuttery when collapsing comments, this is much better!

        I’m hoping there will eventually be a kbin update or userscript that allows you to change the text size of comments separately from the rest of the site. The text is too small for me.

        • artillectOP
          link
          fedilink
          22 years ago

          I’m hoping there will eventually be kbin update or userscript that allows you to change the text size of comments separately from the rest of the site.

          That should actually be somewhat easy to do, I just created an issue for it on GitHub. I’m gonna be busy the next few days so I won’t be able to work on it until later, but maybe someone else will beat me to it!

  • McBinary
    link
    fedilink
    22 years ago

    I’ve seen a couple prompts to update the script via wrench menu, but the changes don’t seem clear at a glance. Is there a changelog somewhere we can view what has changed?

    • shazbot
      link
      fedilink
      22 years ago

      It’s a valid concern, will be doing that going forward once the dust settles. I think it will be an external document rather than a widget inside the menu. You are just seeing custodial changes (hotfixes) to some of the bugs reported today. If the third number is incrementing, it is a hotfix.

      • McBinary
        link
        fedilink
        12 years ago

        Thanks @shazbot! That makes sense to keep it external; although I think a static link to an external doc would not be out of place next to the version number on the wrench menu.

        I really appreciate what you guys are doing, these scripts make all the difference in experience on kbin.

        • shazbot
          link
          fedilink
          22 years ago

          Yes, agreed with a link for sure, I just meant that I don’t want to have a fancy widget just for the purpose of displaying the full changelog inside the menu, I think that will be tedious to maintain.

  • Chozo
    link
    fedilink
    12 years ago

    I know this is a few days old, but I’m just now seeing this, and wanted to thank you for collapsible comments. This one little addition makes things so much cleaner now!

    Do you know if hiding individual threads from the feed is something that can be added to this, as well? Or does that require an update with Kbin, itself?

    • shazbot
      link
      fedilink
      22 years ago

      By hiding threads, are you referring to blacklisting certain types of threads based on a keyword, or are you talking about “cleaning” the thread index by clicking a hide button to wipe it from the view?

      • Chozo
        link
        fedilink
        12 years ago

        The latter, hiding individual threads by pressing a button.

          • Chozo
            link
            fedilink
            12 years ago

            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.

            • shazbot
              link
              fedilink
              12 years ago

              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.

              • Chozo
                link
                fedilink
                12 years ago

                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.

                • shazbot
                  link
                  fedilink
                  22 years ago

                  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.

                • shazbot
                  link
                  fedilink
                  22 years ago

                  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.

                • shazbot
                  link
                  fedilink
                  3
                  edit-2
                  2 years ago

                  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.

  • Shiroa
    link
    fedilink
    22 years ago

    Love the concept, though it looks like Firefox ViolentMonkey comment collapsing doesn’t work quite right. The comments end up stacked on top of each other like cards.

    • shazbot
      link
      fedilink
      32 years ago

      I feel this is my fault for not sufficiently testing against ViolentMonkey; apologies. I have made a few hotfixes now that should ensure the manager itself functions as intended. As for the comment collapsing add-on, that is the responsibility of @artillect, but I’ve suggested a fix and it should be making its way into the app presently.

      • Shiroa
        link
        fedilink
        2
        edit-2
        2 years ago

        It’s totally fine! Public exposure essentially blasts any project with just about every combination of variables. Something is bound to slip by. I was just commenting to make sure you guys knew it was happening.

        EDIT: Just got the update, everything works beautifully now. Great work!

  • raphael
    link
    fedilink
    22 years ago

    Seems to throw some errors with Violentmonkey on Firefox. Haven’t looked too deep into it yet though.

    • artillectOP
      link
      fedilink
      12 years ago

      We’ll take a look at that and try to sort it out ASAP

    • shazbot
      link
      fedilink
      12 years ago

      I apologize for the inconvenience. This should be fixed in 1.1.3. The update should be available momentarily as a prompt within KES. If you don’t see it, try invoking Ctrl-F5 to refresh cache.

      ViolentMonkey can at times be more idiosyncratic than TamperMonkey in the syntax it expects, and I don’t usually recommend it because I don’t think it has feature parity with TM, but regardless, this issue was my fault for not testing more thoroughly against different extensions.

      • raphael
        link
        fedilink
        02 years ago

        Maybe some day, when Tampermoney decides to opensource their code again 😉

        • shazbot
          link
          fedilink
          12 years ago

          That’s a reasonable point. Feel free to reach out if you encounter any other issues

        • shazbot
          link
          fedilink
          12 years ago

          These cross-version issues should be fixed in the 2.0.0 release described here. Thank you.

        • shazbot
          link
          fedilink
          1
          edit-2
          2 years ago

          We have worked up a more comprehensive fix that provides cross-API support for the different GreaseMonkey implementations found in various browser add-ons. Update should be forthcoming after being stress-tested. As it turns out, there is no truly universal API standard between these tools and they have highly similar, but ultimately different, implementations, so we had to make a shim.

    • artillectOP
      link
      fedilink
      1
      edit-2
      2 years ago

      Edit: It appears that this doesn’t completely work, we’ll keep working on it

      I’ve figured out the issue, as soon as @shazbot sees my pull request on GitHub there should be an update that fixes it! For a temporary fix for now though, you can Ctrl-F GM. and replace them with GM_ (there should be 4 of these, on lines 17, 18, 128, and 133), and remove the await on line 133

  • losttourist
    link
    fedilink
    42 years ago

    This is pretty nice even at such an early stage in development. Very much appreciated, thank you.

    • artillectOP
      link
      fedilink
      22 years ago

      Thank you, hopefully we’re able to expand its feature set soon!