I just managed to make a quick hack which achieves the effect that I wanted. I added the following to the Custom Javascript tab in ACP: function showreplies() { $('li[component="post"]').has('a[component="post/parent"]').addClass('hidden'); $('[component="post/replies/open"]').click(); } function noreply(event, data){ if(data.posts.length==1 && data.posts[0].toPid) { // this is a reply to some post var el = $('li[data-pid="'+data.posts[0].pid+'"]'); // newly added post if(el.parent('div[component="post/replies"]').length===0){ // added as a standalone post el.addClass('hidden'); } } $('div[component="post/replies"]').find('a[component="post/reply"], a[component="post/quote"]').addClass('hidden'); } $(window).on('action:ajaxify.end', showreplies); $(window).on('action:posts.loaded', noreply); The first line in function showreplies hides those posts which are replies to previous posts, and the second line opens up the replies below the relevant posts. (@baris This was my attempt before I read your answer. Thanks for the pointer to the code! I will try that out). I added the handler for action:posts.loaded in order to Eliminate Reply and Quote buttons for the replies in order not to generate higher levels of nesting (this is ok for me) After adding a reply to a post, by default it is also added at the end - in order to avoid that I set it to hidden. This does not work so well as the page gets scrolled to the top after that.. - I am not quite sure how to fix it. If I figure it out I'll make an update..