@lyxal I was looking closer at the different add* functions, and I realized something. The addNilad function passes ctx to the function, so any addDirects with arity 0 or None should be able to be redefined as addNilads instead. Some of the elements that I assumed were addDirects already do so, and I tested it with #?, and it seems to work without issue.
Are lambda varargs supposed to be passed as a list of values? According to how it's described in the tour, it sounds like it's supposed to push them as separate values. Try it Online!
I have a suspicion that sechat's packet timeout is too low and chat's closing sockets because of all the reconnect requests, so I've increased it to 5 minutes
@Ginger one thing I've really been trying to do this year is to resist the urge to rewrite from scratch where possible (some things do need rewriting sometimes, but mostly they don't). It's good developer practice to learn the existing code base and clean it up before completely abandoning it.
So I'd recommend trying a clean up of the old site