• v3.1 7a59f48c0a

    v3.1 Stable

    cadence released this 2025-05-12 02:29:34 +00:00 | 42 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 | 66 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 | 75 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 | 150 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 | 163 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 | 190 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 | 212 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
  • v3.0-beta3 cf756cb0af

    v3.0-beta3 Pre-release

    cadence released this 2024-09-28 14:58:51 +00:00 | 218 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.

    In beta3, I have changed the core logic of how room creation works. My changes passed manual testing, so it should be ok. If you notice any bugs in room creation, please let me know so I can address them before the full release.

    Features

    Changes

    • 8743910 Rename seed.js to setup; add npm script for it
    • 69c93ca Automatically set up content_length_workaround

    Fixes

    • d629e66 Fix messages being double-redacted
    • 312ea69 Fix web page duplicating when clicking toggle switch
    • cf756cb Fix web page zoom on mobile
    • 734c9a5 Remove hardcoded cadence.moe
    Downloads
  • v3.0-beta2 dbbb8281e6

    v3.0-beta2 Pre-release

    cadence released this 2024-09-24 04:31:47 +00:00 | 232 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

    • dbbb8281e6 Move autocomplete status to a new table instead of just being a column
    Downloads
  • v3.0-beta1 06f502dd89

    v3.0-beta1 Pre-release

    cadence released this 2024-09-22 03:53:58 +00:00 | 233 commits to main since this release

    This is a beta version. It is incomplete.

    You are welcome to try this version if you want to be ahead of the curve or want to get the breaking changes out of the way early.

    This version is stable, and I am using it, but it is not complete. Specifically, many of the web-based features are not implemented yet. Self-service is not implemented yet either.

    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.

    Supported servers

    OOYE will check your server for Matrix v1.11 support when you run npm run setup (formerly seed.js). If your server does not have support, OOYE will not start.

    • Synapse is supported (tested)
    • Dendrite is supported (untested; it has the endpoints in a stable release)
    • Conduwuit is supported (tested)
    • Conduit is not yet supported (it has the bare endpoints, but they are not in a stable release yet)
    • Construct is not supported (it does not have the endpoints)

    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.

    Why?

    This is necessary due to Matrix introducing authenticated media - the only way for Discord API to access Matrix user avatar URLs is through OOYE's new media proxy. This also gave me the opportunity to add several other convenient web features, such as another media proxy for Matrix users to view expired Discord links, and web-based setup for bridging a new server. While it'll be a bit harder to set up OOYE initially because you'll probably have to do DNS, HTTPS, and reverse proxy configuration, I think you'll enjoy the end result.

    You will be prompted for the public URL when you run npm run setup (formerly seed.js). OOYE will check that your input is valid.

    You must run setup again.

    Why?

    Any registration.yaml files generated previously are incompatible with this version of OOYE. Don't worry, it's easy to generate a new registration - just run npm run setup again.

    After registration.yaml has been generated, you'll need to let your homeserver know about the updated version. setup.js will interactively guide you through this process.

    (If you have an unusual situation where you need to run setup.js non-interactively, like Nix or Docker (?), you will have to create a valid registration.yaml first. Then you can run setup.js and it will not create any interactive prompts.)

    The database is in the working directory.

    Details

    When you run seed.js, it will automatically move the database file for you. This should not impact most users.

    I suggest running the bridge with npm run start rather than node start.js, because it will set the working directory to the repo directory. (If you have an unusual situation where you need to store the database outside of the repo, set the working directory accordingly and use start.js.)

    Changelog

    Features

    • b6c23c3 User-facing web features have been added, like links to add OOYE to a Discord server, invite Matrix users, and show linked channels
      • Some features, like self-service, have not been implemented yet in this beta release
    • 37f3a59 23a7394 setup.js will show interactive prompts during initial setup, so you don't have to edit registration.yaml by hand
      • 76caaa1 YAML support is removed and all existing registration files must be re-created
      • 7d42a53 Wait for ping to work during setup, to ensure the homeserver registration works
      • 6a15f4f Check for Matrix v1.11 in setup (required for Authenticated Media)
    • d5ec013 c6175e0 Matrix users can access expired Discord attachment links as they are routed through OOYE
      • adf07ad ae9acbc Links in messages are converted automatically
      • 06f502d Only links that the bridge knows about are allowed; this is stored in the database
    • decc32f b45d0f3 c0d92ea 1ebf9e1 Discord users can access Matrix authenticated media as it is routed through the proxy
    • be405d3 6bc3eaf Migrate all legacy text commands to Discord interactions
      • 62edffb Add right click menu item for viewing which Matrix users reacted
      • 78a17b2 Add right click menu item for checking the author of a Matrix message
      • 71c553a 4b7593d Test cases

    Improvements

    • Changes to how permissions are managed
      • ddb211f 1037fe0 The new /permissions command on Discord lets Discord moderators promote or demote Matrix users
      • 3a84658 b8793da 7afe3e7 Power levels in spaces will be copied to existing and newly created rooms
      • a218774 Room avatar permission changes now require PL 50 moderator on Matrix
      • df1296e The legacy invite key in registration will be migrated to the database
      • #37 The invite key (now in the database) will apply retroactively to existing rooms
    • 42bfd03 Author metadata of Discord slash command uses is bridged to Matrix
    • 5af7d6b Add test for a generated embed on a reply
    • ee266f8 Discord reactions should be attached to the bottom of embed messages more reliably
    • a2e3f06 Notify on Matrix that the room has been unbridged when the corresponding channel is deleted (this does not freeze or brick the room)
    • b896278 256196c b8a9924 Fix type errors in scripts and make executable
    • 9e9f481 setup.js validates the URL property
    • 01af302 Move ooye.db to current working dir

    Fixes

    • a6c9619 Single character emojis are now supported
    • eaa3b87 Sticker shortcode names are no longer mangled
    • 607fd38 Fix bigint/number type in orm WHERE
    • a5518e5 Fix reading property that was always missing
    • 23a7394 Catch bridge->hs connection errors
    • f011cac Fix timestamp resolution bug
    Downloads