Commit Graph

232 Commits

Author SHA1 Message Date
Ivan Enderlin
68651aac1f feat(sdk): Add RoomEventCache::events to avoid ::subscribe.
`RoomEventCache::subscribe` returns the set of events + the
`RoomEventCacheListener`. However, creating this listener isn't
cheap, especially dropping it. That's why this patch creates
`RoomEventCache::events` to replace `subscribe` when the listener is
not necessary.
2025-05-16 14:43:45 +02:00
Ivan Enderlin
7ef962f931 chore(labs): Allow clippy::large_enum_variant in multiverse.
This is development-, debug-oriented tool. Let's allow
`clippy::large_enum_variant` for the moment.
2025-05-16 14:27:49 +02:00
Benjamin Bouvier
13a2a8757e feat(event cache): enable storage by default \o/ 2025-05-13 10:17:21 +02:00
Benjamin Bouvier
7115203a90 feat(event cache): get rid of add_initial_events() entirely 2025-05-13 10:17:21 +02:00
Richard van der Hoff
75cde02283 Merge pull request #4946 from matrix-org/rav/history_sharing/share_on_invite
sdk: share room history when we send an invite, subject to an experimental feature flag.
2025-04-23 11:15:57 +01:00
Damir Jelić
59ecb1edbd fix(multiverse): Add a shortcut to mark rooms as read back 2025-04-23 11:39:59 +02:00
Damir Jelić
a848506669 feat(multiverse): Add a /invite command 2025-04-17 12:03:51 +02:00
Damir Jelić
f0e49c2adf feat(multiverse): Render membership changes 2025-04-17 12:03:51 +02:00
Richard van der Hoff
96bdd91bad sdk: share room history when we send an invite
... subject to an experimental feature flag.
2025-04-16 16:53:27 +01:00
Damir Jelić
bc50cae35f feat(multiverse): Add support to join rooms you've been invited to 2025-04-16 11:35:57 +02:00
Benjamin Bouvier
a27d6e2655 multiverse: prefer rendering back-paginated events instead of timeline's tail
This is useful to observe the virtyual start of timeline item in manual
testing.
2025-04-15 16:31:20 +02:00
Richard van der Hoff
1d3107ebcb multiverse: reduce redraw rate
This reduces the framerate from ~62fps to 10fps.

This is a workaround for a problem in my terminal, so apologies for inflicting
it on everyone else, but here we are, and 10fps seems like it should be enough
for anyone.

The problem in question is specifically when I try to select some text by
dragging the mouse (eg, to copy a generated recovery key). If I start a drag,
but a redraw happens before the mouse has moved [a certain distance?], then the
drag doesn't work, and nothing gets selected. By reducing the framerate, I have
a much better chance of successfully starting a drag.
2025-04-09 16:10:31 +02:00
Richard van der Hoff
073b4bae03 multiverse: allow recovery keys with h or l in them
Currently, `h` and `l` are intercepted by the parent view to change tab,
meaning it's impossible to enter a recovery key which contains those
characters.

The fix here is very blunt: it just disables `h` and `l` for tab-changing. I
considered making it dependent on which tab is open, or what's going on in the
'Encryption' tab, but given you need to know about the alternatives (tab/cursor
keys) to switch away from the Encryption tab, I don't think that makes sense.
2025-04-09 14:53:36 +02:00
Damir Jelić
f3291d15c5 feat(multiverse): Move the details view to be beside the timeline
This allows us to view the debug screen at the same time as the
timeline. The details view can be to the right of the timeline or bellow
the timeline and we can switch using ALT-t.
2025-04-07 14:17:10 +02:00
Damir Jelić
413070aecb feat(multiverse): Shrink the room list to 25% of the screen 2025-04-07 14:17:10 +02:00
Damir Jelić
288251b1b5 feat(multiverse): Keep the timeline scrolled to the bottom 2025-04-07 14:17:10 +02:00
Damir Jelić
6c3e3bb519 feat(multiverse): Tweak the keybindings for the details view a bit 2025-04-07 14:17:10 +02:00
Damir Jelić
2e8b396c09 feat(multiverse): Add global keybindings to go directly into a details view 2025-04-07 14:17:10 +02:00
Damir Jelić
ed048af903 chore(multiverse): Fix some clippy warnings 2025-04-07 14:17:10 +02:00
Damir Jelić
28e475b1fc chore(multiverse): Get rid of an unused dependency 2025-04-07 14:17:10 +02:00
Damir Jelić
5a13bd5e76 feat(multiverse): Allow to backpaginate while looking at the room details 2025-04-07 14:17:10 +02:00
Damir Jelić
6966302467 fix(multiverse): Properly document the shortcuts on the help screen 2025-04-07 14:17:10 +02:00
Damir Jelić
fd6ce02d70 feat(multiverse): Select the first item in the developer settings 2025-04-07 14:17:10 +02:00
Damir Jelić
2debfd4c4d fix(multiverse): The encryption settings don't need a separate block anymore 2025-04-07 14:17:10 +02:00
Damir Jelić
19c40fd2da fix(multiverse): Better rendering for the OAuth approval URL when resetting recovery 2025-04-07 14:17:10 +02:00
Damir Jelić
d5d0368ba8 feat(multiverse): Add support to reset your identity 2025-04-07 14:17:10 +02:00
Damir Jelić
899eb04f05 feat(multiverse): Use F8 to open the details view instead of CTRL-D
CTRL-D might become important once we add scrolling to the timeline
2025-04-07 14:17:10 +02:00
Damir Jelić
187280d573 feat(multiverse): Show an exit screen instead of printing things to stdout 2025-04-07 14:17:10 +02:00
Damir Jelić
036d14e9e3 feat(multiverse): Settings view 2025-04-07 14:17:10 +02:00
Damir Jelić
226229d63b refactor(multiverse): Move the widgets of the details mode into the details module 2025-04-07 14:17:10 +02:00
Damir Jelić
0cf018cc1b feat(multiverse): Allow the help screen to be closed with ESC as well 2025-04-07 14:17:10 +02:00
Damir Jelić
c3d7a760f7 feat(multiverse): Add an input line so we can send messages 2025-04-07 14:17:10 +02:00
Damir Jelić
d51cf1e76e refactor(multiverse): Change the keybinding for the reaction sending feature 2025-04-07 14:17:10 +02:00
Damir Jelić
71b6b213c4 refactor(multiverse): Move the details mode into a tab-based popout 2025-04-07 14:17:10 +02:00
Damir Jelić
ec23638567 refactor(multiverse): Move some global shortcuts behind modifiers 2025-04-07 14:17:10 +02:00
Damir Jelić
688a56a077 feat(multiverse): Always render the timeline, despite showing some details 2025-04-07 14:17:10 +02:00
Damir Jelić
8413e856fe refactor(multiverse): Move the timeline rendering into a separate widget 2025-04-07 14:17:10 +02:00
Damir Jelić
3f16e77686 refactor(multiverse): Don't unwrap when subscribing to the event cache 2025-04-07 14:17:10 +02:00
Damir Jelić
a4779299f6 refactor(multiverse): Move the details views under the room view module 2025-04-07 14:17:10 +02:00
Damir Jelić
50934f5bc9 refactor(multiverse): Move the room view into a separate widget 2025-04-07 14:17:10 +02:00
Damir Jelić
fad63b9a64 feat(multiverse): Recovery support 2025-04-07 14:17:10 +02:00
Damir Jelić
d999cf9180 refactor(multiverse): Convert the status widget into a stateful widget
The status widget depends on the main app state, instead of cloning the
app state let's just use a StatefulWidget instead.
2025-04-07 14:17:10 +02:00
Damir Jelić
3cd60c5b01 doc(multiverse): Document the status widget a bit better 2025-04-07 14:17:10 +02:00
Damir Jelić
2e4587f824 refactor(multiverse): Move all the widgets into a separate module 2025-04-07 14:17:10 +02:00
Damir Jelić
3996f7c0d6 feat(multiverse): Add a help screen 2025-04-07 14:17:10 +02:00
Damir Jelić
774bff00a0 refactor(multiverse): Events view 2025-04-07 14:17:10 +02:00
Damir Jelić
d6196e6c5c refactor(multiverse): Move the linked chunk view into a popout widget 2025-04-07 14:17:10 +02:00
Damir Jelić
b49fd2b473 feat(multiverse): Only open the read receipt screen if a room is selected 2025-04-07 14:17:10 +02:00
Damir Jelić
f31119a013 refactor(multiverse): Turn the read receipt rendering logic into a widget 2025-04-07 14:17:10 +02:00
Damir Jelić
fb4caf40aa refactor(multiverse): Make the Status struct a true widget 2025-04-07 14:17:10 +02:00