Sorry for the slow response @Joe_Fedric, but I've now fixed the issue you were seeing. The front-end load order changed slightly in Discourse, which meant that the logic which updates the topic list according to the user's settings no longer functioned as expected. @UltimateMoniker @Pad_Pors This may have fixed the issues you were seeing as well, please check.
@meglio I understand your concerns, however let me add a slightly different perspective.
Firstly, what is plugin is trying to do is inherently complex. It's attempting to significantly change a core feature of Discourse (the listing of topics), largely without any structural support for its changes within Discourse itself. For example, most of the logic which manipulates the DOM is written in jQuery rather than in Handlebars or as a virtual DOM widget because the alternative would be to completely override the topic-list-item template and stick the template full of conditional logic (which you're not meant to do). No doubt, there are more ways to improve the structure of this plugin, however they are not immediately obvious. What will help in this respect is the widgitization of the topic list, which I'm guessing @eviltrout has on his agenda somewhere. When that happens, I will be able to rely on the plugin api to update the frontend.
Secondly, the separation between 'pages' you refer to does not reflect how Discourse is built. Elements you see on each page are components that are reused between pages. The topic list and topic list items are both single, reused components. There is no simple way for a plugin to distinguish between the usage of a component in one place as opposed to the usage of a component in another place. In fact this plugin is the only plugin (as far as I'm aware) that does attempt to distinguish between the use of components in different places in the app based on the route. I have done this by observing the internals of the router in the topic list component, see here. However, this is both a hack and is not foolproof, as I cannot anticipate how the different uses of the topic list component will change over time.
Thirdly, I can't anticipate what the changes will be made to
discourse/discourse before they actually happen. You may notice that any plugin of any significant complexity has a history of messages along the lines of "Plugin stopped working after update". This even applies to officially supported plugins. This is a workflow choice of the Discourse team which I generally like, however it does mean that non-core functionality, not using the plugin api, breaks relatively frequently.
Thumbnails have always been built when the Topic is made.
@charles The performance issue on topic list load is connected with the ActiveRecord lookups, as explained here.
I suspect the reason you're experiencing issues now is because the server method I was using to generate the thumbnail images after the topic is created was changed 2 days ago by this commit. I'm investigating this currently.