• v3.8.1 8b69416170

    v3.8.1 Stable

    cadence released this 2026-10-30 08:59:38 +00:00 | 3 commits to main since this release

    AI disclosure

    Somebody else found these issues by prompting an LLM. They reported a summary of the issues to me. I researched and fixed them without any LLM involvement from my end.

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

    Security fixes

    • a3ba5cb (Discovered by LLM) Prevent large Matrix uploads being used for XSS
    • 7aae369 (Indicated by LLM) Fix regular expression denial of service
    Downloads
  • 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
  • v3.7 2430d60809

    v3.7 Stable

    cadence released this 2026-09-14 04:22:00 +00:00 | 53 commits to main since this release

    • How to update
    • After updating, in order to get m->d typing support, you need to do npm run setup again to generate a new registration.yaml and re-register that with your homeserver.

    This release continues to improve plural proxying, most importantly adding support for /plu/ral webhook-style proxies.

    There are also changes to match what Discord's doing. Many more applications than before (those accessible to more than 10,000 total Discord users) will have to register for privileged intents. If you are affected, you will have received a Discord system message about this.

    For compliance with platform policies, you can add "bridge_admin_contact": "any text or html here" to the ooye section of registration.yaml to enable the privacy policy and opt-out web pages, as well as letting Discord users know who to contact to trigger a Matrix-side data removal of their past messages. I recommend setting this field to your Discord handle or your email address. I have set mine to <a href=https://cadence.moe/contact>Cadence</a>. You are required to receive and act on any such requests.

    I will work on providing a more complete document about privileged intents and the application process after I have reports of anyone's application being successful. I will also work on a more streamlined method to add your contact information. For now, this is all provisional, and your guess is as good as mine.

    Features

    • 983ea0c c982ca0 fa716cd m->d typing
      • This requires stabilised receive_ephemeral support, which was added in Synapse 1.156.0. Other homeservers probably already have this.
    • f7609b2 51d5705 34fc21f 544c520 Only delay Discord messages if the sender has previously used PK or /plu/ral
    • a3ce911 Support /plu/ral webhook-style proxies
    • 414da4c f92d280 a8712b6 d4cd580 3d648e23 Queue d->m events for later if homeserver is down
    • 021f02f Convert very large PNGs sent from Discord to JPEG to fit in Matrix file size limit
      • Large PNGs were almost certainly originally JPEG photos that were converted to PNG by the Discord user copy-pasting.
      • If these aren't converted, the Matrix experience is degraded because you have to click a link to view very large files.
      • If the PNG is supposed to be that large, you can still get the original through the external URL option.
    • b7fa7c3 Clients may use PluralKit users' configured colours for profile themeing (requires MSC4522)
    • db2c038 Support Discord's new way of marking attachments as spoilers
    • 0034193 b3ef973 63a6d37 Add privacy policy & opt out pages to web

    Changes

    • 82f921c Make poll vote counters say "2 votes" instead of just "2"
    • 8ec7b3f Change visual spacing around m->d blockquotes
    • c7dbd17 Move the part of generated embeds that's like "via FxTwitter" to the bottom
    • 9b01e52 Discord default file size limit is now 20 MB
    • c71120e Improved Discord startup checking
    • b765f56 Remove rather than truncate links in m->d reply preview
    • c035e49 Add (bot) to Matrix side displayname
    • 6cd3646 Send correct filename to web browser downloads via content-disposition header

    Fixes

    • 674cd53 Fix m->d poll questions over 45 characters erroring when voted on
    • 7229206 Fix error when forwarding a crosspost that lacks an author
    • 5e9f3cd Add one retry back to PluralKit API calls
    • c7389ff Improve d->m highlighting accuracy (mostly affects the toki pona community)
    • 965fcab m->d edits will wait for the original message to bridge before editing, rather than creating duplicate messages
    • 1bb22e3 Fix m->d replying to webhooks possibly erroring
    • 7faa8a3 Fix manual backfill script
    • cf12293 Allow anyone to respond to polls even when they can't post in the room
    • 2e84c71 Fix creating webhooks for matrix users
    • 0d398be Fix logging in to Matrix on web
    • 85b9e47 Parse room links from more misbehaving clients
    • 8f65b2f Fix the Responses menu command sometimes not showing all responses
    • ed0bdda Expressions http status typo 400 -> 500
    • 401985a Fix member leaves not being propagated immediately
    • cad8158 Relax mxc regexp
    • 47ccf98 Allow sending m->d files that have no filename by generating a filename
    • 73f410b Emoji name in messages may be uncapped
    • ab051f3 Fix polls in threads

    Code quality

    • 8779b8b f42d8a8 c8961a9 Update dependencies
    • 51e7d84 Add HTTP status to MatrixServerError
    • cf95f7d Add AI policy
      • Out Of Your Element is 100% organically cultivated ethical hand-fed code. Let's work together to conserve that!
    • 70b18c8 Guard against hopefully impossible situation
    • b9be8b5 Remove mistaken logging
    • 1dcd562 SnowTransfer error handling is no longer pathetic
    • c0c6419 Remove mx-reply earlier to skip tree walking it
    • 50d5509 Rename files for consistency
    • fb1e557 Docs: Update melody's oci image link
    Downloads
  • v3.6 b576869764

    v3.6 Stable

    cadence released this 2026-06-04 06:07:39 +00:00 | 110 commits to main since this release

    How to update

    Features

    • af6ea07 Add stats
    • 99eacd8 Generate letter avatars if no avatar, instead of Matrix users defaulting to a Discord icon avatar
      • Thank you to first-time contributor lewri for the code!
    • 9b37705 Indicate that errors may be retried
      • This was always possible. I think indicating this with a bot reaction should give a better affordance, and prevent confusion with similar-looking emojis.

    Changes

    • 12f4103 d2m: Create voice channels as call rooms
      • This does not bridge voice calls.
    • 4815d28 Code blocks are uploaded as attachments when when they are too long for message text
    • e2ab9fa Improve PK ping message
    • 7781d1e Increase d->m catch-up limit to 100
    • d76936b Change shuffle emoji to curved arrow for forwards/crossposts
    • e0eb7de 7f7a366 Change curly arrow to chevron for commands
    • fbade33 Update language to sound more warningcore
    • 91bce76 Use HTML to strip per-message profile fallback

    Fixes

    • d8fb4be d->m: Fix reply to user join message
    • 678a1b7 Fix error on some ❓ reactions
    • 24c2dee Fix m->d custom emoji reactions in certain clients (such as Commet)
    • eb67625 Partially fix m->d mentions in certain clients (such as Sable)
    • 18b6efd Fix editing permissions interactions not working
    • 2aff1fb Code block attachments use Discord supported types
    • 191a98e Fix watching registration file before creation
    • 43b8b02 Remove webhook tokens from error messages
    • 313efb2 Fix m->d reaction deletion counting (#85)
    • 47dc050 Consistent font colour
    • aecfde5 Resize avatars before sending to Discord
      • Previously, very large file size avatars were being used in full, which was either slow to load or broken.

    Code quality

    Downloads
  • v3.5.1 4698835549

    v3.5.1 Stable

    cadence released this 2026-03-29 02:46:43 +00:00 | 0 commits to v3.5.1 since this release

    If you want the joke, remain on v3.5.

    Downloads
  • v3.5 857fb7583b

    v3.5 Stable

    cadence released this 2026-03-27 06:20:04 +00:00 | 143 commits to main since this release

    How to update

    This version bundles even more long-requested fixes, as well as a partial implementation of virtual roles for Matrix. A great new feature is using the web UI to define default roles that all Matrix users should gain. In practice, you should use this to let Matrix users bypass a role gate in the server. In the future, I plan to expand this to allow assigning virtual roles to specific Matrix users, rather than the current all-or-nothing approach. This means you can have your beloved role gates work on both sides of the bridge (though in my opinion, for Matrix-side, the default privacy setting of direct user invites only should be sufficient to ensure that new joiners are good actors who understand the theme of your community).

    image

    Another new feature is that sims will be automatically removed from the Matrix-side if the user has already left on Discord-side. Some notes on this:

    • This will both keep up with live changes and also retroactively apply to users who left a long time ago, so it should all be taken care of automatically.
    • If, for some reason, not all sims were removed that should have been, please let me know about this (because it's a mistake) and then run node scripts/remove-uncached-bridged-users.js to fix it.
    • User-installed applications (most notably /plu/ral alters) will be removed on first run. They will be added back automatically next time the application is invoked, and OOYE will remember them so they won't be removed a second time - unless the Discord user does leave, which will remove all of their applications too.

    (Just like the previous release, if you are using Conduit, you are still required to use the next branch.)

    I'm also very excited to announce a new partnership with Grimace.AI. I don't have much information to share right at this moment, but you'll hear more about them in the coming days.

    Features

    • 6a2606c e6c3013 3365023 6716b43 Use Web UI to define Matrix users' default roles (i.e. bypass role gates)
    • 9eaa85c Add //invite Matrix command to get Discord invite
    • 876d91f 8c87d93 Remove sims when the Discord user leaves
      • e8d9a5e Script to remove uncached bridged users
        • Normally this should be handled automatically. Running this manually is only relevant if the first automated run was incomplete for whatever reason.
    • 9dbd871 Support Sable client's ping-with-reply toggle
      • This should also work with related features in other clients since it is done in a standardised way.
    • 41692b1 a8b7d64 07ec983 0b513b7 8224ed5 f742d85 m->d: Support per-message profiles (MSC4144)
    • 5c9e569 Support channel follow messages
    • e275d4c Add script to estimate total channel file size
    • 0cd7e1c Allow for custom additions to webroot
      • To use this, create a folder named custom-webroot in the root of OOYE and add your files. To make small changes, write a Pug file that imports the regular page and use a block override/append. The special file /custom-webroot/custom.css applies to all pages - but if you wish to use this, please think twice if it's really necessary and handle with extreme care if it is. I haven't written full documentation about this yet, I'm waiting for more feedback on this feature before I finalise it.

    Changes

    • ff022e8 Combine additional embed images into same event
    • f1b111a Refuse to operate on encrypted rooms rather than silence
      • They have never been supported, but now you actually get feedback about that fact.
    • 9b3707b d1aa8f0 Fix m->d stickers looking too big on Discord mobile
    • 5b04b5d Reformat /plu/ral emulated replies
    • e9fe820 d8c0a94 Automatically reload registration when changed
    • 8c023cc Copy ping() function from setup to REPL
    • 9f9cfdb Allow namespace prefix to be empty string
    • 411491b Remove live dependency on cadence.moe
    • ada3933 backfill: Create new rooms when needed
    • c75e87f Stream files in serveStatic for lower memory use

    Fixes

    • d3afa72 Fix m->d posting embeds even when setting is off
    • 59012d9 Fix pinning random messages (regressed in v3.4)
    • 780154f Fix bots with Administrator not knowing they may access all channels
    • 5f768fe d->m: Don't guess mentions in code blocks
    • d2557f7 Let sims rejoin after being unbanned
    • ee583fd Fix server names with numbers in them
    • ea261e8 Fix trying to generate usernames containing invalid characters
    • f5ee130 Handle expired invites & fix test registration (#73)
    • 99f4c52 Fix mistaken error message during room upgrade if user's client invited
    • 8b9d8ec Fix lines sometimes getting joined in reply preview
    • 7367fb3 Fix weird background clipping on icons

    Code quality

    • 09ea942 Remove deprecated db management
    • e779b41 Fix possible undefined property access
    • c68bac5 Document encryption as unsupported
    • 74c0c28 Update dependencies
    • f7a5b2d Update tryToCatch dependency and usages
    • cd8549d Fix sticker tests and coverage
    • 6ca1b83 Add more debugging information
    • f90cdfd Update dependencies, make stream-type independent
    • cb4e8df Fix package-lock
    • 711e024 Update dependencies
    • f8896dc Type fixes in set-presence.js
    • 0dac3d2 Internal language adjusted
    • 953b3e7 Attach message to error
    Downloads
  • v3.4 c55e6c6115

    v3.4 Stable

    cadence released this 2026-02-14 07:20:19 +00:00 | 199 commits to main since this release

    In celebration of Discord's recent self-immolation, here's version 3.4.

    It supports full polls bridging in both directions, room upgrades and room v12, and better support for the Conduit family (including the recently revived Conduit).

    If you are using the Conduit, you must switch to the "next" branch. Stable releases (aka "latest" tag) do not work, because they do not contain this commit, which OOYE relies on. Conduit Downloads/Containers

    If you get a message like "Old versions of glob are not supported" or a big wall with "Missing: glob@11.1.0 from lock file", do this to fix:

    1. Check npm -v and get npm version 11 or later (try npm i -g npm)
    2. npm install --save-dev
    3. npm ci

    For more help installing or updating, see the docs. Thanks for choosing Out Of Your Element.
    And thanks to the contributors who made this release possible.

    Features

    • Polls, in both directions
    • Room upgrades and room version 12
    • e3e38b9 45285a4 Components v2 support
    • 35e9c9e Add ability to unlink spaces
      • Thank you Elliu for working on this!
    • 44208b6 Add /ping Discord command
      • This can be used to ping (@mention) a Matrix user from Discord side
      • Using this command is not required, you can also just best effort write @the person's name and it will work
      • 15aa6ed c73800f c01e347 e66822e Accuracy improvements to the text mention scanning system
    • 653e38a 6032ba4 Bridge Matrix media spoilers
      • Requires a compatible client. I don't know which clients those are.
    • 17251c6 4202584 8ea29d6 Suppress link embeds where applicable (Discord parity)
    • 92a6095 Improve output of Matrix info command
      • Better information, better formatted
      • Also available by reacting red question mark (Discord side only; helps those used to PluralKit)
      • Let me know if you have more suggestions that would improve this
    • 5a401a1 When an auxiliary m.notice is deleted, instead of deleting the Discord message, suppress its embeds

    Changes

    • c0d8275 Fix m->d emoji sprite sheets looking enormous on mobile Discord only
      • Thank you to first-time contributor Abdul for working on this change!
    • c7e8d4d Storage is 15% more efficient now, wow!
    • 5e4b99a Remove reply fallback for same-room replies (and update tests accordingly)
      • This change comes from Emma!
    • b52b2de Add custom format for Klipy GIF conversion
    • 5002f30 Convert emojihax to real emoji d->m
    • b16d731 Include guild name in emoji pack name
      • This looks better in some clients, notably Commet.
    • 0dc9293 bf9f6b3 c0bbdfd d7f5f8b 08323f4 b5143bf Changes to self-service space invite detection and homeserver compatibility
      • If you moderate a room, even if you didn't personally invite the OOYE bot, you should still be able to use the self-service space linking controls
    • f287806 Disallow Discord users from using smalltext formatting (breaks Discord parity)
    • 536ab56 Better d->m spoilers
      • Remove spoiler text entirely from plaintext body, so you're less likely to see it in notifications or room previews
      • 2563a47 If the spoiler contains a link, consider its embed to be a spoiler (Discord parity)
    • cd0b8bf Add script to easily reset web password if you forgot it
    • ddc7387 Send forwarded messages as m.text, not m.notice
    • b5596b2 Fetch referenced_message for reply fallback if unavailable
    • 345b7d6 Merge attachments with message when possible
    • 02d62c0 Only show video embeds when they have extra info

    Fixes

    • 2496f4c Fix retrying own events as non-moderator
    • 014a87e af9e2d8 228766c Wrangle embed generation rules
    • c8b0f23 Ensure m->d reactions get bridged when they were added really really fast
    • 1741bc0 Fix animated emojis that were originally uploaded as webp format
    • 261bb1b Adjust for future changes to Discord permissions
    • 696a45f MAS compatibility
    • 231b261 Fix topic diffing from original creation
    • 04d2602 Pre-upload icons before diffing
    • 8e0fe29 Web accessibility
    • 29d08df Fix Discord replies to multipart Matrix messages
    • a488c15 Fix confusion between eventsToSend and unchangedEvents
    • c472388 Room create event must be included to diff
    • 6200d0b Fix selective kstate failing on missing events
    • 5aa112f Better detect reply rep in reply fallback
    • 238e911 Fix m->d double-escaping Matrix mentions
    • 279e379 The database really works better if you query it
      • The highly anticipated sequel to 0f24994
    • fca4c75 Fix speedbump+retrigger interactions
    • f5d50fc Properly stop PluralKit users typing after sending
    • 0ed3ef6 0d574c1 Fix PluralKit replies
    • dbfa9d0 Sync PK member profile on first message
    • 6df931f Check if we got rugpulled while sending
      • Fixes a SSR race condition in database access that was observed with PluralKit a couple of times
    • 6b4123b e54536d More accurate intent flags check in setup
    • ed76dbd Wait for Discord connection before listening m->d
    • 33eef25 Fix setup not listening for events at all
    • 7ebe8aa Fix backfill script
    • fba50e9 Fix getPermissions misunderstanding the @everyone role (only matters for really silly guilds)
    • 3d3671e Fix inviting users on one of the Conduits (only matters if you lost your database)

    Code quality and documentation

    • 20453aa res.json type fixes
    • 239568a Fully remove failed experiment
    • 4bc7e79 Refactor private chat creation
    • 092a4cf Add traefik documentation
    • 8661aa7 Remove unused orm function
    • 0d15865 kstate fixes and code coverage
    • 045fdfd General code coverage
    • 513e671 Formally remove discord_path from room avatars
    • 505c41a More code coverage
    • 03e9fc4 Room upgrades technical information
    • 756e8e2 Make registration more consistent
    • 90fcbd0 Update Discord libraries
    • 0dd8958 Update dependencies
    • aa7222c Print d->m errors when there is no room
    • 64369f1 Fix test
    • d1b0fa4 Add tests for emoji sheet; style and nits
    • c8b2071 Move poll-star-avatar file endpoint
    • c490965 Fix typecheck
    • 314f37f Add newline at end of registration to help shells
    • 14de436 Add docker policy
    Downloads
  • v3.3 0bb7a27164

    v3.3 Stable

    cadence released this 2025-12-02 11:55:20 +00:00 | 310 commits to main since this release

    This release fixes some infrequent but impactful issues. Other features you might like are also here.

    Notable fixes

    • 493bc25 Fix unbridging procedure
      • Before, deleting a bridged channel could make weird stuff happen to unrelated rooms.
    • 1758b7a m->d: make image-replies work
      • I had assumed I had already added this from the beginning, which is why it's only just getting to you now, after I happened to notice it didn't work.

    Features

    • c731303 Update global profiles for sims
      • For Synapse, you must add msc4069_profile_inhibit_propagation: true to experimental_features.
      • Conduit and descendants doesn't seem to support this feature.
      • For the record, I don't think this is a good MSC, but since it's implemented in Synapse I may as well use it.
    • edd4f98 Support persistent Matrix sims for webhooks
      • Disabled by default. Enable it on the website.
      • Useful when using other Discord bridges. Otherwise, not ideal, as sims will clutter the Matrix user list and will never be cleaned up.
    • 1338e6b Code blocks that don't contain code will be converted to quotes instead. This is needed beacuse Discord line-wraps code blocks, but Matrix clients don't, leading to lots of surprise horizontal scrolling.

    Fixes

    • 0bb7a27 Semaphore retries per room
    • f176b54 Maybe accept invites more reliably
    • e6c30f8 Configure whether to receive presences
    • 0f24994 The database works better if you query it.
    • ce30272 Exclude vulnerable version of glob
      • This didn't affect OOYE, but may as well update it anyway.
    • d0f7d79 Fix duplicated data appearing on Matrix
    • a2787f7 Record failed URL in more error messages
    Downloads
  • v3.2 408070f329

    v3.2 Stable

    cadence released this 2025-11-13 03:55:01 +00:00 | 322 commits to main since this release

    This release fixes a huge variety of issues that were happening to some users.

    Node v22 or later is now required. Make sure you install that first if you're on an older version. You can check with node --version.

    For more help installing or updating, see the docs. Thanks for choosing Out Of Your Element!

    Features

    • bb711c2 OOYE provides an API for bots to get message info
    • ab396bd Generate special embeds for invites with events
    • 890e808 Render tables in Matrix messages on Discord
    • 67291a3 Get member data when running backfill
    • 7905802 Setup will ask for the desired port

    Changes

    • 50a0472 When adding self-service rooms, verify hierarchy instead of m.space.child
    • 639912f Don't overwrite space parent of self-service rooms
    • 65498e6 Don't archive threads that are part of a forum
    • c71044f Only edit events if the text has changed
    • b4dd66f cba7965 bc32910 More consistently generate embeds for Matrix messages
    • 7916f82 Change thread started message to show the title more clearly
    • edf60bc Remove provider line from Tenor gifs

    Fixes

    • d95a114 Fix joining remote rooms for self-service (contributed by Elliu)
    • 10a3185 baf024a Give sims enough power to send to read-only rooms as needed
    • ca8bbe0 Replace PK API retrying with a local cache lookup for data
      • This has reduced the error rate of PluralKit messages to zero.
    • d8e6de6 Keep PluralKit profile data up to date
    • 56a4fe1 m->d: link too-large files instead of uploading
    • 2c15468 Fix m->d then d->m reactions not merging
    • 8d4d505 d->m: preserve unknown messages when syncing pins
    • 408475d 158921d Fix guild emoji upload command
    • 3de762d Fix stickers that don't provide content type
    • a7abdfd Stay logged in for longer on web
    • 2614493 @mentions are more likely to include the username
    • cffd3c9 Fix converting discord channel links
    • 7d83f11 Fix channel links inside lists
    • 2a62849 Fix replying to a message that had a new emoji
    • c50d238 Fix adding to a super reaction
    • e0c0b7c Set up emojis in-process if needed
    • d5d51b4 Don't search for excessively long text
    • 6c23c57 7bfe140 More precise power level checking
    • 4b5fb59 Fix directory with emoji files
    • 50ca219 Fix retrying d->m errors
    • d4f4664 Fix retrying m->d message deletions
    • 2a0e22a Don't explode if it can't send follow-up errors
    • 255e166 Specific error message for when remote emojis are unavailable
    • 3d34c9d e332786 Specific error message for when remote media doesn't load
    • 9a33ba3 Fix evil encrypted file event with null url

    Quality

    • 954d412 Store direct chat list in database rather than account data
    • 5b7433d Make tests time zone independent
    • 5e4bea6 Remove useless loop
    • 344822c Minor copyedit
    • cf39737 Refactor date calculations to util
    • efaa59c Update CloudStorm
    Downloads
  • v3.1 7a59f48c0a

    v3.1 Stable

    cadence released this 2025-05-12 02:29:34 +00:00 | 382 commits to main since this release

    This release fixes a variety of issues that some users were encountering, and also adds future-proofing for when Discord deprecates bot-owned guilds.

    Please do npm run setup after updating.

    Changes

    • 7a59f48 Store emojis on the bot now that Discord supports this
    • adbd2bb Change button colours on web
    • 5d61dc9 Support mentions of slash commands
    • 2522a74 Only send read receipts to Matrix users if their event was bridged

    Fixes

    • d326894 Fix PK member lookup error messages
    • b0ffb45 Allow un-reacting in read-only rooms
    • 22c569c Ignore not having access to read pins
    • 3975550 Fix retrying failed m->d edits
    • c29fbc8 Fix QR code on relative paths
    • d5a7b32 Fix web forms on relative paths
    • bcc3bfc Fix web login when the homeserver uses matrix-media-repo
    • 8eee70a Fixed some disconnection issues
    • 0c1a015 Fix GIF stickers
      • These never worked until now. Oops!

    Quality

    Experimental backfill

    • This is a script that somebody requested I create. There is no change in behaviour for now.
    • ec1550b Add experimental backfills script
    • 3ec0dc7 Fix demoting users during backfill
    Downloads