OC Improved Collapsible Comments - Script that lets you collapse replies by clicking a line to the side of each comment

Download it from greasyfork

This userscript for kbin enhances the comment section adjusting the layout and adding a line to the left of each comment and its replies that lets you collapse them. The design is inspired by some custom subreddit stylesheets, and new reddit surprisingly enough (you know what they say about broken clocks)

Personally, I think this is the best way to handle collapsing comments here's a screenshot.

A video of it in action

If you don't have a userscript manager extension installed, you can install Tampermonkey, and then open the greasyfork link.

Wintar,
Wintar avatar

I'm having an issue where clicking anywhere on the comment will collapse it; Not just the line on the left. I couldn't figure out why myself, looking in the code, and it seems no-one else is having the issue?

artillect,
artillect avatar

That's a feature I added a bit later on, you should be able to disable it in the settings menu in the top right. However, this userscript is no longer supported, and has been added to KES (which you can install here), with some more config options added as well.

Wintar,
Wintar avatar

Perfect, thank you; Hadn't heard about KES yet

McBinary,
McBinary avatar

@artillect @ernest

So, I have been using this script for a couple of weeks, and I can honestly say at this point that I cannot fathom using kbin without it. I really hope this gets rolled into core in some way.

Thank you @artillect !

ernest,
ernest avatar

@artillect Love it

JohnEdwa,
JohnEdwa avatar

This script hides the "expand message" thingy that appears on long messages like on this one: https://kbin.social/m/kbinStyles/t/12515/Share-your-CSS-and-JS-snippets-here#entry-comment-52434

artillect,
artillect avatar

I just released an update that adds that back, thanks for pointing that out

JohnEdwa,
JohnEdwa avatar

For configuration, instead of the new button I think you should integrate them into the Kbin sidebar like is done by the kbin enhancement script.

artillect,
artillect avatar

I like the way that kbin enhancement does its config, but I plan on releasing the configuration for this script as a library that everyone can use in their userscripts, to make configs easy (and work cross-platform). I just need to finish it up and separate it into its own script

fl4shback,
fl4shback avatar

Thank you so much for this script ! Improves readability and clarity so much !
Hope it inspires ernest to build something similar natively.

exscape,
exscape avatar

@artillect I found a weird bug/interaction! When you have the script (v1.2.1) as-is and enable media previews in the sidebar settings, a bunch of comments begin collapsed. It happens in this thread so it can be used for testing. Most of your comments are auto-collapsed.

The click handler on comments is triggered, as shown by this modification:

    // Add event listener to comment
    comments[i].addEventListener('click', function(){console.log("CLICK on comment " + i); toggleReplies(event, comments[i], expando)});

It spams a bunch of log lines in the console. I'm guessing the auto media preview is implemented by simulating clicks on comments, but I haven't checked the code.

exscape,
exscape avatar

I also found a fix: listen for 'mouseup' instead of 'click'. However, this still collapses comments when you try to select text so that's still not good.

exscape,
exscape avatar

Sorry, just noticed 1.3 is out, doh.
With fulltoggle off, the bug is solved, but it remains when it is enabled.

I also couldn't find the config menu anywhere and added openConfigMenu() to to async function to actually change the setting. Hm.

artillect, (edited )
artillect avatar

Hmm, I'll see what I can do about fixing the bug with enable media previews. I just fixed the issue with comments collapsing when you try to highlight text, try updating to 1.3.1. The config should be accessible in your user menu in the top right, I think I might move it into its own icon in the menu so it's more visible

Edit: It wasn't actually fixed in 1.3.1, but I have fixed it properly now

blobcat,
blobcat avatar

Love it! I've noticed a single issue with themes though. Thread lines have set colors, which wouldn't be a problem unless you are using the solarized dark theme, then the first thread line is really hard to see.
What I did to fix that is simply set it the same border the first thread line uses normally (which is just the section border) that covers the background .comment-level--1 > .expando .threadLine { border: var(--kbin-section-border); border-width: 2px; }. It also fixes inconsistency between default kbin themes and custom-made ones.
Before and after

blobcat,
blobcat avatar

Another issue I've noticed: you can't select text in replies, the post collapses immediately after you select text and stop holding left click

artillect, (edited )
artillect avatar

Great idea for the change to the color so it respects the color scheme better.

For now, I've added an option that lets you disable "clicking anywhere on a comment to collapse", you can change it by clicking on your username in the top right, then clicking "Userscript Settings", and it'll be the only option in the menu that pops up

Edit: I just fixed the issue with highlighting text making comments collapse in 1.3.1

Spoonraker, (edited )
Spoonraker avatar

Edit: The issue was resolved, so please ignore this message. Thanks u/artillect!

There was an issue where the parent comment was in a column on the left side and its children were all on the right, but I adjusted the CSS:

   .entry-comment .children {
        /* grid-area: children; */ /* disable or delete this */
        display: flex;
        flex-direction: column;
    }

   .entry-comment .comment-level--2:first-child {
        margin-top: 3rem; /* Edit: If the child comment is long then the text will get cut off, so setting the margin and/or parent height conditionally could work*/
   }
artillect,
artillect avatar

What browser are you using?

Spoonraker,
Spoonraker avatar

I'm using Firefox.

artillect,
artillect avatar

Glad to see it was just the issue with Firefox, lemme know if you run into any other issues!

SuaveBet,

Perfect, thank you!

BananaTrifleViolin,

I love this, thanks so much for your hard work in making this, it's a huge UX improvement.

kon_jelly,
kon_jelly avatar

I feel like an idiot because I can't seem to get this working. Here is the error I'm getting in the source editor:
error

What the heck am I doing wrong here?

artillect,
artillect avatar

Try removing the highlighted lines and adding:

// @grant         GM.registerMenuCommand

I think this issue is caused by differences between the userscript managers we're using, this change should work

kon_jelly,
kon_jelly avatar

I still get that the grant method isn't supported with that command. I'm running Userscripts in Safari. No worries, I was able to get another one working - it's not as nice as the one you made but it's getting the job done for now.

artillect,
artillect avatar

I just updated it to remove all of the stuff that's incompatible with Userscripts for safari, I'll have to figure out another method for configuration

kon_jelly,
kon_jelly avatar

It works great! Thanks so much

artillect,
artillect avatar

If you remove all of the @grant lines, as well as this code (from lines 328 to 342), it should work:

    let gmc = new GM_config({
        'id': 'improved-collapsible-comments',
        'title': 'Improved Collapsible Comments',
        'fields': {
            'headerToggle': {
                'label': 'Toggle replies by clicking header (WIP, not functional)',
                'type': 'checkbox',
                'default': true
            }
        }
    });
 
    GM_registerMenuCommand('Settings', () => {
        gmc.open();
    });

I'll have to figure out a way to get configuration to work with Userscripts for safari once I start adding that

Shortcake,
Shortcake avatar

After the fix, this is amazing!
Awesome work artillect!

jeebus,
jeebus avatar

Ahhhhhhh that's so much better now. Thanks so much!!!!

Zana,

The only way to identify which comments are from OP are the dotted red line to the left of the comment, this script removes that so it is impossible to tell who OP is. Is there a way you could readd that or make some other differentiator so we know who OP is?

artillect,
artillect avatar

I just updated it to add an indicator for the OP and some other changes

Zana,

Dude you rock

artillect,
artillect avatar

No problem! Lemme know if you have any other suggestions :)

  • All
  • Subscribed
  • Moderated
  • Favorites
  • kbinStyles
  • DreamBathrooms
  • magazineikmin
  • thenastyranch
  • hgfsjryuu7
  • Youngstown
  • rosin
  • InstantRegret
  • slotface
  • mdbf
  • PowerRangers
  • tsrsr
  • kavyap
  • khanakhh
  • vwfavf
  • tester
  • ngwrru68w68
  • modclub
  • ethstaker
  • cubers
  • Durango
  • everett
  • osvaldo12
  • tacticalgear
  • normalnudes
  • cisconetworking
  • GTA5RPClips
  • Leos
  • anitta
  • All magazines