• v3.4 c55e6c6115

    v3.4 Stable

    cadence released this 2026-02-14 07:20:19 +00:00 | 42 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 | 153 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 | 165 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 | 225 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
  • v3.0 f7ba176a7e

    v3.0 Stable

    cadence released this 2025-02-28 10:30:22 +00:00 | 249 commits to main since this release

    Welcome to version 3.0!

    It's a whole new world. Here's the main features since the last stable version, which was v2.3:

    Bridge features

    • Finally, you can bridge an existing Matrix space with a Discord server instead of having to make a new space.
    • Optionally use the website to add the bot, invite people, and change settings. Log in with either Matrix or Discord.
    • Setup process is interactive, and checks that everything will work.

    Discord/Matrix features

    • Support d->m forwarded messages
    • Support m->d pins
    • Attachment links do not expire
    • Support read-only channels
    • Text commands have all been moved to Discord interactions
    • Right click on Discord to see which Matrix users reacted
    • Hundreds of bug fixes

    Breaking changes

    • Your server must support Authenticated Media. - You do not need to freeze media - you can stay compatible with old Matrix clients if you want. But you must upgrade your homeserver to a version that supports the authenticated media endpoints. Authenticated media has been out for several months now, so hopefully you've already upgraded to a compatible version!

      Supported servers

      OOYE will check your server for Matrix v1.11 support when you run npm run setup and will only continue if it works. So if it works, then it works.

      • Synapse is supported (tested)
      • Conduwuit is supported (tested)
      • Dendrite is supported (untested; it has the endpoints in a stable release)
      • Conduit is supported (untested; it has the endpoints in a stable release)
      • Construct is not supported (but Jason sold out to Conduwuit anyway)
    • You must give OOYE a public URL. - OOYE now runs a web server on port 6693 that needs to be publicly accessible over the internet. You can use a separate domain name, or reuse the same one that your homeserver uses. Learn more.

    • You must run setup again. - The registration file from v2.3 is incompatible with v3.0. Don't worry, it's easy to generate a new registration - just run npm run setup again, and it'll interactively guide you through the process. Learn more about the setup process.

    • The database is in the working directory. - We shuffled things around for housekeeping. When you run setup, it will automatically move the database file for you. This should not impact most people. The data inside the database is compatible with v3.0, so you won't lose anything.

    I hope you enjoy the new release! See here to learn how to install or upgrade.

    If you have any questions or find a bug, please join us in #out-of-your-element:cadence.moe for help.


    Detailed commits since v3.0-rc1

    Changes

    • 3b034dd Optional password protection for the web server, prompted during setup
    • d5cbb8f Rearrange the guild management web page
    • 2a45b5f Replace the hash icon on web

    Fixes

    • f7ba176 Fix automatically activating the content length workaround
    • a867032 m->d: Fix image captions to match client behaviour
    • a867032 Fix an occasional issue with file uploads
    • 8e0950d Fix client-side MXID validation on web

    Documentation

    Downloads
  • v3.0-rc1 2f3a10c93f

    v3.0-rc1 Stable

    cadence released this 2025-02-23 13:31:14 +00:00 | 258 commits to main since this release

    Version 3.0 will be fully released in about a week, so that I can make sure nothing important is broken.

    Please see the breaking changes in the v3.0-beta1 release notes.

    Features

    • 443618b 5b06d59 eadefef 978eb40 Log in with Matrix
      • This is how we're doing self-service mode.
      • d45a0bd efd7cb3 438714b Following the prompts on web will ask you to log in with Discord and Matrix. You can link a guild and a space if you moderate both.
    • 8ad0117 0f435e9 381861e cfaada6 ac40c54 Show Discord presences on Matrix
    • a29d019 Make read-only Discord channels read-only on Matrix
      • Finally, no more randoms sending messages in #announcements.
      • 6eed4ec They can still react though.
    • b1b9124 17ea92a Fully support unlinking channels
      • Unlinking in easy mode will keep members in the room but remove the room from the space. (So the room is preserved and it's harder to reuse it.)
      • Unlinking in self-service will remove members from the room but keep it in the space. (So the room is easier to relink or just continue to use unlinked.)
    • 6b919d2 Allow d->m URL previews to be disabled
      • If you don't like them you can now stop seeing them.

    Changes

    • ad51079 63cc089 Don't overwrite room custom topics
    • ed417e0 Preserve name/avatar/topic of linked rooms
    • 6df8d9a Display limited replies to unbridged messages
    • 20dabf4 Only offer to link channels the bridge can access
    • 21c7b35 Put QR code behind reveal button
    • eec8b0f Add loading indicator to invite screens
    • 6fe8c60 Speed up new databases by default
    • 5b21344 Debug room list on web
    • ea7aec5 Don't show errors when maximum reactions reached
    • e2df174 Don't show private badge on every channel when the base role can't view channels
    • f9be1e3 Improve dropdown button style

    Fixes

    • f42eb64 fa8ce28 Fix many reactions saying invalid emoji
    • a579b50 Catch PK API network errors
    • eb4aa61 Fix web loading indicators
    • ae57fa2 Don't send announcements to weird channel types
    • 3d0609f Fix duplicate guilds in list
    • 6a1be91 Fix scanning forwarded messages for mentions
    • 4ae8da8 0d0ca98 Don't add unwanted room data when it's not present
    • 69e3d64 Handle replies to state events with no body
    • 15826dc Make Cloudflare errors less obnoxious
    • 46bd2cb Fix web invite button duplicating the page
    • fb38db5 Revert to Stacks 2.5.4 - 2.5.5 is messing up some colours

    Documentation

    • d4a50cb Advise not running as root
    • 2e13538 Split out readme into separate pages, for installation and for developers

    Quality

    Downloads
  • v3.0-beta7 931cacea6a

    v3.0-beta7 Pre-release

    cadence released this 2025-01-15 19:44:13 +00:00 | 333 commits to main since this release

    This is a beta version. It is incomplete.

    Please see the breaking changes in the v3.0-beta1 release notes.

    Fixes

    • ad1aa2c0f6 m->d: Convert room links that happen to be linked with #
    • c6708d4dbd The "link channels" button on web now actually works
    • 0c1b4c5e8e Remove unhelpful guard preventing d->m pin syncing
    • fb18c0fe0b Ensure 1 pin = 1 pin even when message is split
    • 85269ea153 a3e94a215a Ignore unimportant errors that would otherwise crash the process
    • 6bb31deeaf Ignore missed messages if channel was just added
    • 931cacea6a Don't add channels/threads to the public directory
    • 1e4952f1b8 Make it much less likely for reactions interaction to time out
    • f3b0d01400 Fix fish reaction

    Quality

    Downloads
  • v3.0-beta6 7e6548eb90

    v3.0-beta6 Pre-release

    cadence released this 2025-01-07 12:31:31 +00:00 | 346 commits to main since this release

    This is a beta version. It is incomplete.

    Please see the breaking changes in the v3.0-beta1 release notes.

    Features

    • 7e6548e Send a read receipt after successfully bridging a Matrix events
      • This may provide reassurance that the bridge is currently functioning.
    • 06b6a63 Sync pins back from Matrix to Discord
      • d->m has always been working, this adds the equivalent m->d.
    • 2009e23 New documentation article: Why does the bridge have a website?
    • 75140a5 8a6b8ee Allow Discord users to promote Matrix users to admin
    • 6411279 84d61a1 Web server now supports being hosted on sub-paths, and no longer requires a dedicated domain
    • dcb7dda npm run setup checks that the mandatory Discord intents have been enabled

    Changes

    • 3e5034c 93cacba Remove read receipts visibility client hint
      • This is a failed experiment that is long past its time. It needs to go.
    • 4c62124 Improve invitation QR codes used on web
    • 16ac997 Add reassuring prose around interrupting/resuming setup
    • d706391 During setup, echo details about requests, for reverse proxy configuration QA

    Fixes

    • bf01db1 Check server before checking well-known
      • This was causing setup to be unusable with strangely configured well-known files. Now it should more closely follow the behaviour of the popular clients.
    • e00ce22 Replace into guild_active from homepage
      • Now you can use the homepage buttons to make things right if you change your mind.
    • 0fe02dc Fix web page exploding for unlinked guilds
    • bded929 Fix guild page being broken when unlinked
    • a35860c Handle more guild page situations
    • 4f040e4 Autocreate space if autocreating the room
    • 559d932 Fix voice messages not being delivered
    • 88a232f Cope if the username is already registered

    Quality

    • 20b575c Mention PluralKit support on the readme
    • 97043d9 Await an operation a bit further up the chain
    • c599dff Tests and coverage for web
    • 53379a9 Clean up log message that has never ever occurred
    • 7ff2a38 Move room linking logic out of template
    • a63d173 Remove redundant/invalid checks from setup
    Downloads
  • v3.0-beta5 07d6eb3c12

    v3.0-beta5 Pre-release

    cadence released this 2024-11-02 07:35:52 +00:00 | 373 commits to main since this release

    This is a beta version. It is incomplete.

    Please see the breaking changes in the v3.0-beta1 release notes.

    Features

    Changes

    • 4287a32 Website: Display list of unlinked rooms
    • c127923 Website: The link button now links channels
    • 086e8cd Website: Add privacy level controls
    • d72b162 Website: Mobile design
    • 5a86c07 Host QR codes locally

    Fixes

    • 07d6eb3 Fix existingPartZero assertion error
    • 15e5b17 When inviting bot, check it has bot scope
    • 14115c0 Attempt retrigger after speedbump
    • b23b818 Use attachment proxy for external_url
    • cce432a Compatibility: send {} with room joins
    • e5f7c7f Proxy discord attachment links within embeds
    • 3662ee5 Fix interaction updates

    Code quality

    • ac16584 Remove unused parameter
    • da5525a Make invite interaction async
    • 6f7ed82 Create and populate guild_id column
    • 9f9d1f6 Test coverage for all interactions
    • b79b010 Update heatsync dependency
    • f77602a Add tests for privacy interaction
    Downloads
  • v3.0-beta4 f5853ccf95

    v3.0-beta4 Pre-release

    cadence released this 2024-09-29 12:45:38 +00:00 | 395 commits to main since this release

    This is a beta version. It is incomplete.

    Please see the breaking changes in the v3.0-beta1 release notes.

    Features

    • 5dbd79c Prompt to add redirect URI in setup

    Changes

    Fixes

    • f5853cc Fix check for enabling content_length_workaround
    Downloads