• v3.8 d2ea49cefd

    v3.8 Stable

    cadence released this 2026-10-27 11:43:19 +00:00 | 6 commits to main since this release

    This release supports Discord's @time command. It's converted to a hyperlink that lets you check when it is in your local time. See an example. From Matrix, since you can't use @time to coordinate, there's a new //time command where it will attempt to parse freeform text and make a link for you. You have to set your time zone on your Matrix profile first for this to work.

    There's also a new feature from N0\A that lets you change m->d @room mentions to mention a specific role on Discord. This is useful in channels that have a theme. On Discord it has to be a role because users are forced to be in every channel, but on Matrix you may as well mention everyone who's chosen to join the room.

    Please update for important security fixes that somehow went unnoticed for years.

    AI disclosure

    The readme's AI policy says, "Out Of Your Element is 100% organically cultivated ethical hand-fed code. Let's work together to conserve that!"

    However, some of the problems that I fixed in this release were found after I prompted an LLM (specifically OpenCode's free models) to scan the repo. I have labelled the specific affected commits. While I consider LLM use to be objectionable, I think this tradeoff was ultimately worthwhile to improve security on issues that would have otherwise gone undiscovered.

    The fixes are my own. I did not use the LLM's suggested code.

    If LLMs are used in the future, I will continue to disclose their precise involvement going forward.

    Features

    • c25b5a1 a4f8f93 1434cb5 be40369 Support Discord @time
      • b49c6e8 Add //time command for m->d scheduling
      • a503277 9d7f888 Use hyperlinked times for scheduled events
    • 5794bee Support Discord game mentions
    • f19f243 c196bef f39a7f4 Add customisable @room mention roles (thank you to first time contributor N0\A!)
    • 866a496 Support component URL previews, currently used by Wikipedia
    • 2d298ac 9b96457 Set own nick to "a Matrix user" once per guild
      • This prominently displays for typing indicators ("a Matrix user is typing...") and reactions ("a Matrix user reacted cat emoji")

    Changes

    • 39e3e50 2e9725a Document privileged intents application
    • bdcdb4f Make spoiler file URLs unpreviewable (thank you Guzio)
    • ce4b911 4d96963 Show account and pronouns for PMP messages
    • 3024270 Don't display URL previews for GitHub
    • 860506c Show displayname runoff once per message group
    • 161f1a1 Fine-tune bot user detection for small-text conversion
    • 8001924 Convert too-large files to WebP instead of JPEG

    Security fixes

    • 4ecce3f (Discovered by LLM) Fix being able to edit anyone's message m->d
    • 7229923 (Discovered by LLM) Fix reflected XSS in time webpage
    • 69256a9 (Discovered by LLM) Actually get correct user ID when logging in
    • 21efcbc (Discovered by LLM) Fix next URLs redirecting anywhere after logins
    • b331e79 (Discovered by LLM) Fix unsanitised names in formatted_body
    • 2fea23d Sanitise route path parts when calling APIs

    Other fixes

    • 12d448d Avoid media stream errors crashing process
    • 4ac4aec Reliability fixes
    • 59b5e05 77cc1e6 Make m->d Klipy links not produce error
    • fab512a Fix Klipy gifs when url previews disabled
    • 26a434e 000ec06 heatsync: remember various module globals on reload (thank you to first time contributor l1s5!)

    Code quality

    • 9058b60 Update dependencies
    • 2959fd8 Render pug blocks without a separate template
    • 08dea68 Support npm v12
    • 7902b91 Fix time formatting in different node versions
    • 3cb1260 Rename auth file to web-utils
    • 3dd7830 Tests to see when uncaught errors are emitted
    • 99673db Set recognizable process and main thread name (thank you oysteikt!)
    • 279c58b Dependency review
    Downloads