Cosmos Upgrades

📅 2022-11-29

🏷 Cosmos

Cosmos has been running for about 10 months without major issues. However, I've been noticing some glitches here and there, so it was time to make a few upgrades.

Dynamic posts 🔃

Some pages get updated continually, so connecting them to discussion threads leads to some unwanted presentation artifacts. Now these posts have a category of their own and will not get threaded. Instead, they get a "🔃 See related..." link that indicates it's a dynamic post and may reference some other posts in Cosmos.

Ideally, associating dynamic posts with known threads would be informative, but the internal implementation isn't quite up to the challenge.


The old curved math arrow is gone and replaced with box drawing characters. This is a clearer visual indication of the thread structure, and this should work better in a TUI environment, too.

There were a few problems with post grouping, where some posts would appear grouped as threads even though they only had a single member. This was possible because de-duping was occurring too late, after the groupings had already been determined.

In a thread, there is a maximum limit for how many posts are shown from a single author. However, it was possible that the actual newest post was being hidden due to this limit, causing some strangely chosen posts to appear in the list. This bug has been fixed.

Regular unthreaded posts have thus far been shown in alphabetical order, but I've chosen to switch this to reverse chronological. This makes it easier to track when new posts appear in the list, although posts may appear under any of the past dates in addition to the current date.


Some sources, specifically user URLs, are now canonically stored using the long "/users/" variant. Since these are accessible both via tilde-usernames and "/users/", they were being needlessly duplicated sometimes depending on where the posts were being picked up.

It was also possible that the recognized mirrors were not being applied consistently, leading to some posts appearing to link to themselves.


I've chosen to hide some posts, e.g., ones that contain nothing but web links. While this kind of content may be interesting to some, it doesn't really serve Geminispace as such.

Internally, I've cleaned up the (Python) source code by splitting up the previous monolithic script into more manageable chunks with a clear division of responsibilities. This should make it easier to develop the code further.

CC-BY-SA 4.0

The original Gemtext version of this page can be accessed with a Gemini client: gemini://