• v3.0-beta3 cf756cb0af

    v3.0-beta3 Pre-release

    cadence released this 2024-09-28 14:58:51 +00:00 | 401 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 | 415 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 | 416 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
  • v2.3 74632c671c

    v2.3 Stable

    cadence released this 2024-08-19 15:18:33 +00:00 | 480 commits to main since this release

    This release adjusts m->d reply formatting, and replaces some internal dependencies with smaller ones. As always, please remember to run npm install after updating to any version.

    Changes to m->d reply formatting:

    • a6251e8 Use the new small text feature
    • 283cf66 Move reply previews to one line, and use non-emoji form of circled M character
    • 5c48645 m->d: Suppress embeds for links in reply preview
    • 2c3b653 m->d: Consistently add @ to bridged form of matrix mentions

    General fixes:

    • 5e4d539 Fix potential abuse of error retry system
    • 87cad6c Fix incorrect stack traces being displayed when a critical error occurs
    • 2a080b7 m->d: Fix garbled content when posting a message link followed by a mention

    Dependency changes:

    • 742d34f Fork turndown for Discord-like link escaping
    • 7e90052 Switch to new application service library
    • 0cf1d26 74632c6 Update dependencies
    Downloads
  • v2.2 541c5e1eb5

    v2.2 Stable

    cadence released this 2024-07-21 02:56:58 +00:00 | 493 commits to main since this release

    This release continues to improve reliability. As always, please remember to run npm install after updating to any version.

    Features:

    • 49598c7 Bulk message deletes, used by bots and user bans, are implemented
    • 541c5e1 Add include_user_id_in_mxid setting
      • You love how OOYE sim users are named @_ooye_sensible_username_here, don't you?
      • If you don't love that and you want the usernames to be more like @_ooye_12345678912345678_sensible_username_here, this change is for you.
      • Set ooye: include_user_id_in_mxid to true in registration.yaml to use this feature. It does not apply retroactively to already-created sim users.

    Improvements:

    • eb98af0 Move packages to npm registry because registry packages are updated more reliably than git packages
    • 149cee8 Keep trying to get data from the PluralKit API if it's slow the first time
    • 24a3b9b Refactor kstate resource uploading for increased code coverage

    Fixes:

    • a2f0bb7 No more random occurrences of "MESSAGE_UPDATE not delivered: AssertionError"
    • 9e51482 OOYE will automatically re-create any webhooks that were deleted by a Discord user
    • 8c506ed Sim users can now be demoted from administrator
    • 07a133e Fix links being corrupted when the link is at the start of a new line
    • 1f5865b Avoid sending ephemeral messages from Discord
    • b6b6599 Errors while redacting a message no longer crash the bot
    Downloads
  • v2.1 5f0e765934

    v2.1 Stable

    cadence released this 2024-03-25 12:11:13 +00:00 | 506 commits to main since this release

    This release kinda supports Discord forums, bridges embeds from anybody (even reflected to Matrix users), and manages permissions on Matrix a little better.

    If you do not like that it reflects Discord generated embeds from Matrix user messages back to Matrix, let me know and I'll remove that feature.

    Features:

    • 5f0e765934 Bridge forums as spaces
      • 642be26313 Enumerate child rooms with hierarchy endpoint
    • d01c888d02 Support embed generate MESSAGE_UPDATE events
    • 2fb68900c7 Support permissioned @everyone -> @room
    • 043f178d1e Map Discord member permissions to sim user PLs
    • 12d85c982e Allow Matrixers to @room if Discorders can too
    • f5ffc09fab Convert @room to @everyone using permissions

    Improvements:

    • 25cd8cb289 Use allowed_mentions instead of disableEveryone
    • cc9e1de49e Remove deep-equal dependency

    Fixes:

    Downloads
  • v2.0 e236a25da2

    v2.0 Stable

    cadence released this 2024-02-20 09:23:08 +00:00 | 535 commits to main since this release

    This release adds full support for the Discord bot PluralKit, bridging each PluralKit system member as a distinct user on Matrix-side. It also adds via parameters to room links, and some formatting has been fixed by community members including Wonder Collective - thank you!

    PluralKit features:

    • Each PK member is bridged as a distinct Matrix user
      • 11864f80cf This currently requires one message to "warm up", then all future messages will be handled seamlessly
    • The original Discord messages which are about to be deleted will not appear at all on Matrix-side
      • e49dc18e67 This uses a "speedbump" to "slow down" all messages in the chatroom
      • 6a06dc14ce Speedbump only takes effect in chatrooms where PluralKit is being used
    • 69922c4a14 PK member name/avatar changes are synced with the same Matrix sim user profile
    • f48c1f3f31 Replying to PK members from Matrix mentions the Discord user on Discord-side
    • 98477dc0f6 Mentioning PK members from Matrix mentions the member and Discord user on Discord-side
    • c7fb6fd52e PK's simulated embed replies are converted to native Matrix replies
    • 0e701b2d54 Compatible with PK members in threads
    • 3d87bd9da5 Compatible with server-specific PK member names

    Improvements:

    • 30afaa1e17 fd11e3fd10 All room links now have properly calculated via parameters, so can be used and shared in all clients
    • 355ebfe2af e999fcf819 56f959e9f3 m->d: spoiler reasons & reply-quote separation
    • 6c3164edd6 m->d: Emoji sprite sheet feature supports APNG emojis (but they're composited to a non-animated PNG)
    • e0d96cde19 d->m: Fallbacks for links to unbridged channels are more intuitive
    • 77b7772062 m->d: Since code blocks containing backticks are incompatible with Discord, they will be uploaded as a file instead. This preserves inline preview and highlighting.
    • d673296619 d->m: Plaintext event body now indicates embeds with pipe | instead of quote >
    • 3fb2c983e0 Optimised pngjs install

    Documentation:

    • 5ef5dbb2e8 Write more "add a new event type" documentation

    Fixes:

    • 7a9e1168fe m->d: Fix links where href and content are the same
    • 4591b5ae03 m->d: Fix glitched mention when Element disambigs
    • 369e0862e5 m->d: Replies to custom emoji show a correct preview
    • c084aa0156 cfc89c40f9 d->m: Fix the guessed @mentions feature messing up code or links

    Silly fixes:

    • 0e75c23aee d->m: Fix user's first message in channel being a thread starter reply
    • f79833c444 m->d: Only care about data-mx-spoiler on span
    • 7756a34a5f m->d: Gracefully handle replies to redacted event
    • 4286829b42 Update discord libraries - fixes some disconnection issues
    Downloads
  • v1.5.1 8591ea5c1f

    v1.5.1 Stable

    cadence released this 2024-01-20 10:13:39 +00:00 | 592 commits to main since this release

    This hotfix addresses a bug where OOYE was unusable when Synapse was not behind an nginx reverse proxy.

    Now, when running seed.js, it should warn you about the situation with this message:

    OOYE cannot stream uploads to Synapse. Please choose one of these workarounds:

    • Run an nginx reverse proxy to Synapse, and point registration.yaml's server_origin to nginx
    • Set content_length_workaround: true in registration.yaml (this will halve the speed of bridging d->m files)

    This is because Synapse needs the Content-Length header, which isn't set by OOYE's streamed uploads. Non-streamed uploads are slower. See the commits in this hotfix for precise details. (Use the Compare dropdown in Gitdab's left bar to compare against v1.5)

    Downloads
  • v1.5 8987107685

    v1.5 Stable

    cadence released this 2024-01-18 19:54:05 +00:00 | 596 commits to main since this release

    This release syncs pinned messages and emojis even if the bot was offline, supports alt text and bulk message deletion, and fixes many formatting bugs that were reported since the previous release.

    Features:

    • 8987107685 d->m: If messages were pinned while OOYE was offline or before OOYE was set up, OOYE will be able to find them and bridge them.
    • 9efd6a49b8 d->m: Similarly, if emojis or stickers were changed while OOYE was offline or before OOYE was set up, OOYE will be able to bridge those too.
    • 20bab453ef d->m: Moderation bots which bulk delete messages should now also delete them on Matrix.
    • 84d791cd8a m->d: Image description/alt text is now bridged. (Most Matrix clients don't support sending these. NeoChat partially supports them.)

    Improvements:

    • a67708269d m->d: The end of the reply preview may look slightly nicer to Discord users.
    • 60cf40680f cf25e1661b d->m: Image description/alt text is bridged better.
    • 024ff34cca m->d: After switching from matrix-appservice-discord or mx-puppet-discord to OOYE, mentioning a sim user owned by the old bridge will mention the intended Discord user.

    Fixes:

    • 83070dcf7e d->m: Some Matrix clients URL-encoded their mentions, which OOYE didn't understand. These are now supported.
    • ed7404ea19 d->m: Pinned messages are displayed in the correct order. Unless you're a nheko user.
    • d0a3c3ce29 m->d: Occasionally the reply preview would include the words "In reply to" for Discord users. Now it will show the message content like it should.
    • 8e3b674d90 Matrix: Editing a very long message to be shorter will no longer delete it from Matrix.
    • 4dcdd0287e OOYE setup: Conduit is probably supported better.
    • c8742f9512 m->d: Parity between plaintext events and formatted events.
    Downloads
  • v1.4 cd2e012b8e

    v1.4 Stable

    cadence released this 2023-11-25 10:09:28 +00:00 | 616 commits to main since this release

    This release adds a new feature to work around mentions, allows message links to jump into the past, and fixes some rare text formatting issues.

    Features:

    • 53a009c d->m: Users who aren't joined can be mentioned

    This feature is useful when you know a user exists on Discord-side, but you can't mention them because their sim hasn't been joined to Matrix-side yet, probably because OOYE hasn't seen them type in that room.

    To use this feature, on Matrix-side, write a plaintext @mention that names a Discord user. If you successfully named a user in the server, they will be added to Matrix-side and @mentioned on their own side, sending them a notification.

    Your message will still look like plaintext, but if you see that the sim user was invited, then you know that the mention did trigger correctly via the bridge.

    This is kind of a workaround - I would appreciate any suggestions for how to improve this workflow!

    Improvements:

    • 8d45210 d->m: Message links are guessed when unknown

    If you migrated from a different bridge to OOYE, d->m message links into the past (from before OOYE was set up) would not work correctly. Now they will! They will link to the correct Matrix message.

    While this is a "guess", it should be a correct guess 99% of the time :)

    • a542bbd d->m: List and heading formatting is now fully supported.
    • e73de60 m->d: If your rich text mention has a colon after it, Discord users won't see the colon.
    • afbbe0d Some embed formatting edge-cases fixed.

    Fixes:

    • 083f7bd Android didn't like how spoiler attachment links were formatted, and they couldn't be clicked. This works around the issue.
    • fa68b87 Some previous versions had a rare bug where OOYE could become disconnected from Discord-side. It should stay connected reliably now.
    Downloads