-
-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feed events to widgets as they are decrypted (even if out of order) #28376
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Draft as this is untested. |
robintown
force-pushed
the
widget-feed-decrypted
branch
from
November 7, 2024 21:09
258c8c6
to
a3b301c
Compare
robintown
force-pushed
the
widget-feed-decrypted
branch
from
November 7, 2024 21:24
a3b301c
to
7f1dfb2
Compare
This is a pure refactor with (hopefully) no behavior changes.
The code that feeds events to widgets tries to enforce that only events from the end of the timeline will be passed through. This is to prevent old, irrelevant events from being passed to widgets as the timeline is back-filled. However, since encrypted events need to be decrypted asynchronously, it's not possible to feed them to a widget in a strictly linear order without introducing some kind of blocking or unreliable delivery. This code has been dropping events when they're decrypted out of order, which we consider to be an undesirable behavior. The solution provided here is that, to reflect the asynchronous nature of decryption, encrypted events that arrive at the end of the timeline will be fed to a widget whenever they finish decrypting, even if this means feeding them out of order. For now we're not aware of any widgets that care about knowing the exact order of events in the timeline, but if such a need reveals itself later, we can explore adding ordering information to this part of the widget API.
robintown
force-pushed
the
widget-feed-decrypted
branch
from
November 7, 2024 21:28
7f1dfb2
to
ef55f1d
Compare
t3chguy
reviewed
Nov 8, 2024
t3chguy
approved these changes
Nov 8, 2024
netbsd-srcmastr
pushed a commit
to NetBSD/pkgsrc
that referenced
this pull request
Nov 27, 2024
Changes in [1.11.86](https://github.com/element-hq/element-web/releases/tag/v1.11.86) (2024-11-19) ================================================================================================== ## ✨ Features * Deduplicate icons using Compound Design Tokens ([#28419](element-hq/element-web#28419)). Contributed by @t3chguy. * Let widget driver send error details ([#28357](element-hq/element-web#28357)). Contributed by @AndrewFerr. * Deduplicate icons using Compound Design Tokens ([#28381](element-hq/element-web#28381)). Contributed by @t3chguy. * Auto approvoce `io.element.call.reaction` capability for element call widgets ([#28401](element-hq/element-web#28401)). Contributed by @toger5. * Show message type prefix in thread root \& reply previews ([#28361](element-hq/element-web#28361)). Contributed by @t3chguy. * Support sending encrypted to device messages from widgets ([#28315](element-hq/element-web#28315)). Contributed by @hughns. ## 🐛 Bug Fixes * Feed events to widgets as they are decrypted (even if out of order) ([#28376](element-hq/element-web#28376)). Contributed by @robintown. * Handle authenticated media when downloading from ImageView ([#28379](element-hq/element-web#28379)). Contributed by @t3chguy. * Ignore `m.3pid_changes` for Identity service 3PID changes ([#28375](element-hq/element-web#28375)). Contributed by @t3chguy. * Fix markdown escaping wrongly passing html through ([#28363](element-hq/element-web#28363)). Contributed by @t3chguy. * Remove "Upgrade your encryption" flow in `CreateSecretStorageDialog` ([#28290](element-hq/element-web#28290)). Contributed by @florianduros. Changes in [1.11.85](https://github.com/element-hq/element-web/releases/tag/v1.11.85) (2024-11-12) ================================================================================================== # Security - Fixes for [CVE-2024-51750](https://www.cve.org/CVERecord?id=CVE-2024-51750) / [GHSA-w36j-v56h-q9pc](GHSA-w36j-v56h-q9pc) - Fixes for [CVE-2024-51749](https://www.cve.org/CVERecord?id=CVE-2024-51749) / [GHSA-5486-384g-mcx2](GHSA-5486-384g-mcx2) - Update JS SDK with the fixes for [CVE-2024-50336](https://www.cve.org/CVERecord?id=CVE-2024-50336) / [GHSA-xvg8-m4x3-w6xr](GHSA-xvg8-m4x3-w6xr) Changes in [1.11.84](https://github.com/element-hq/element-web/releases/tag/v1.11.84) (2024-11-05) ================================================================================================== ## ✨ Features * Remove abandoned MSC3886, MSC3903, MSC3906 implementations ([#28274](element-hq/element-web#28274)). Contributed by @t3chguy. * Update to React 18 ([#24763](element-hq/element-web#24763)). Contributed by @t3chguy. * Deduplicate icons using Compound ([#28239](element-hq/element-web#28239)). Contributed by @t3chguy. * Replace legacy Tooltips with Compound tooltips ([#28231](element-hq/element-web#28231)). Contributed by @t3chguy. * Deduplicate icons using Compound Design Tokens ([#28219](element-hq/element-web#28219)). Contributed by @t3chguy. * Add reactions to html export ([#28210](element-hq/element-web#28210)). Contributed by @langleyd. * Remove feature\_dehydration ([#28173](element-hq/element-web#28173)). Contributed by @florianduros. ## 🐛 Bug Fixes * Remove upgrade encryption in `DeviceListener` and `SetupEncryptionToast` ([#28299](element-hq/element-web#28299)). Contributed by @florianduros. * Fix 'remove alias' button in room settings ([#28269](element-hq/element-web#28269)). Contributed by @Dev-Gurjar. * Add back unencrypted path in `StopGapWidgetDriver.sendToDevice` ([#28295](element-hq/element-web#28295)). Contributed by @florianduros. * Fix other devices not being decorated as such ([#28279](element-hq/element-web#28279)). Contributed by @t3chguy. * Fix pill contrast in invitation dialog ([#28250](element-hq/element-web#28250)). Contributed by @florianduros. * Close right panel chat when minimising maximised voip widget ([#28241](element-hq/element-web#28241)). Contributed by @t3chguy. * Fix develop changelog parsing ([#28232](element-hq/element-web#28232)). Contributed by @t3chguy. * Fix Ctrl+F shortcut not working with minimised room summary card ([#28223](element-hq/element-web#28223)). Contributed by @t3chguy. * Fix network dropdown missing checkbox \& aria-checked ([#28220](element-hq/element-web#28220)). Contributed by @t3chguy. Changes in [1.11.83](https://github.com/element-hq/element-web/releases/tag/v1.11.83) (2024-10-29) ================================================================================================== ## ✨ Features * Enable Element Call by default on release instances ([#28314](element-hq/element-web#28314)). Contributed by @t3chguy. Changes in [1.11.82](https://github.com/element-hq/element-web/releases/tag/v1.11.82) (2024-10-22) ================================================================================================== ## ✨ Features * Deduplicate more icons using Compound Design Tokens ([#132](element-hq/matrix-react-sdk#132)). Contributed by @t3chguy. * Always show link new device flow even if unsupported ([#147](element-hq/matrix-react-sdk#147)). Contributed by @t3chguy. * Update design of files list in right panel ([#144](element-hq/matrix-react-sdk#144)). Contributed by @t3chguy. * Remove feature\_dehydration ([#138](element-hq/matrix-react-sdk#138)). Contributed by @florianduros. * Upgrade emojibase-bindings and remove local handling of emoticon variations ([#127](element-hq/matrix-react-sdk#127)). Contributed by @langleyd. * Add support for rendering media captions ([#43](element-hq/matrix-react-sdk#43)). Contributed by @tulir. * Replace composer icons with Compound variants ([#123](element-hq/matrix-react-sdk#123)). Contributed by @t3chguy. * Tweak default right panel size to be 320px except for maximised widgets at 420px ([#110](element-hq/matrix-react-sdk#110)). Contributed by @t3chguy. * Add a pinned message badge under a pinned message ([#118](element-hq/matrix-react-sdk#118)). Contributed by @florianduros. * Ditch right panel tabs and re-add close button ([#99](element-hq/matrix-react-sdk#99)). Contributed by @t3chguy. * Force verification even for refreshed clients ([#44](element-hq/matrix-react-sdk#44)). Contributed by @dbkr. * Update emoji text, border and background colour in timeline ([#119](element-hq/matrix-react-sdk#119)). Contributed by @florianduros. * Disable ICE fallback based on well-known configuration ([#111](element-hq/matrix-react-sdk#111)). Contributed by @t3chguy. * Remove legacy room header and promote beta room header ([#105](element-hq/matrix-react-sdk#105)). Contributed by @t3chguy. * Respect `io.element.jitsi` `useFor1To1Calls` in well-known ([#112](element-hq/matrix-react-sdk#112)). Contributed by @t3chguy. * Use Compound close icon in favour of mishmash of x/close icons ([#108](element-hq/matrix-react-sdk#108)). Contributed by @t3chguy. ## 🐛 Bug Fixes * Correct typo in option documentation ([#28148](element-hq/element-web#28148)). Contributed by @AndrewKvalheim. * Revert #124 and #135 ([#139](element-hq/matrix-react-sdk#139)). Contributed by @dbkr. * Add aria-label to e2e icon ([#136](element-hq/matrix-react-sdk#136)). Contributed by @florianduros. * Fix bell icons on room list hover being black squares ([#135](element-hq/matrix-react-sdk#135)). Contributed by @dbkr. * Fix vertical overflow on the mobile register screen ([#137](element-hq/matrix-react-sdk#137)). Contributed by @langleyd. * Allow to unpin redacted event ([#98](element-hq/matrix-react-sdk#98)). Contributed by @florianduros.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The code that feeds events to widgets tries to enforce that only events from the end of the timeline will be passed through. This is to prevent old, irrelevant events from being passed to widgets as the timeline is back-filled. However, since encrypted events need to be decrypted asynchronously, it's not possible to feed them to a widget in a strictly linear order without introducing some kind of blocking or unreliable delivery. This code has been dropping events when they're decrypted out of order, which we consider to be an undesirable behavior.
The solution provided here is that, to reflect the asynchronous nature of decryption, encrypted events that arrive at the end of the timeline will be fed to a widget whenever they finish decrypting, even if this means feeding them out of order. For now we're not aware of any widgets that care about knowing the exact order of events in the timeline, but if such a need reveals itself later, we can explore adding ordering information to this part of the widget API.
Closes element-hq/element-call#2561
See also the previous discussion notes on matrix-org/matrix-react-sdk#12890