summary refs log tree commit diff
path: root/resources/langs
diff options
context:
space:
mode:
authorJoseph Donofry <rubberduckie3554@gmail.com>2022-12-26 16:20:17 -0500
committerJoseph Donofry <rubberduckie3554@gmail.com>2022-12-26 16:20:17 -0500
commitc0b79631347356ba58dd51a904eb086c22770f98 (patch)
tree718a05e0bdadefab2ba01992533e26a1a7b1493d /resources/langs
parentTranslated using Weblate (Chinese (Simplified)) (diff)
downloadnheko-c0b79631347356ba58dd51a904eb086c22770f98.tar.xz
Update translations
Diffstat (limited to 'resources/langs')
-rw-r--r--resources/langs/nheko_ca.ts576
-rw-r--r--resources/langs/nheko_cs.ts576
-rw-r--r--resources/langs/nheko_de.ts568
-rw-r--r--resources/langs/nheko_el.ts568
-rw-r--r--resources/langs/nheko_en.ts576
-rw-r--r--resources/langs/nheko_eo.ts568
-rw-r--r--resources/langs/nheko_es.ts578
-rw-r--r--resources/langs/nheko_et.ts576
-rw-r--r--resources/langs/nheko_fi.ts568
-rw-r--r--resources/langs/nheko_fr.ts634
-rw-r--r--resources/langs/nheko_hu.ts576
-rw-r--r--resources/langs/nheko_id.ts576
-rw-r--r--resources/langs/nheko_ie.ts576
-rw-r--r--resources/langs/nheko_it.ts568
-rw-r--r--resources/langs/nheko_ja.ts568
-rw-r--r--resources/langs/nheko_ml.ts576
-rw-r--r--resources/langs/nheko_nl.ts568
-rw-r--r--resources/langs/nheko_pl.ts568
-rw-r--r--resources/langs/nheko_pt_BR.ts576
-rw-r--r--resources/langs/nheko_pt_PT.ts576
-rw-r--r--resources/langs/nheko_ro.ts568
-rw-r--r--resources/langs/nheko_ru.ts584
-rw-r--r--resources/langs/nheko_si.ts568
-rw-r--r--resources/langs/nheko_sr_Latn.ts576
-rw-r--r--resources/langs/nheko_sv.ts576
-rw-r--r--resources/langs/nheko_vi.ts576
-rw-r--r--resources/langs/nheko_zh_CN.ts568
27 files changed, 13490 insertions, 2042 deletions
diff --git a/resources/langs/nheko_ca.ts b/resources/langs/nheko_ca.ts
index aa521bbb..9fa2c3d7 100644
--- a/resources/langs/nheko_ca.ts
+++ b/resources/langs/nheko_ca.ts
@@ -89,12 +89,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation type="unfinished"></translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -208,7 +208,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -222,22 +222,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -263,12 +275,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -313,12 +325,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation type="unfinished"></translation>
     </message>
@@ -333,7 +345,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -345,13 +357,13 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -413,6 +425,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -458,7 +769,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation type="unfinished"></translation>
     </message>
@@ -648,7 +959,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation type="unfinished"></translation>
     </message>
@@ -892,7 +1203,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation type="unfinished"></translation>
@@ -1107,7 +1418,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1167,7 +1478,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1246,7 +1557,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation type="unfinished"></translation>
@@ -1352,7 +1663,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+246"/>
         <source>%1 removed a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1417,27 +1728,48 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+44"/>
+        <location line="+30"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-150"/>
+        <location line="-193"/>
         <source>%1 answered the call.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-51"/>
+        <location line="-339"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+282"/>
         <source>%1 changed the parent communities for this room.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+65"/>
+        <location line="+93"/>
         <source>%1 ended the call.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1455,7 +1787,12 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1465,7 +1802,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1488,7 +1825,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1518,7 +1855,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1694,8 +2031,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1711,7 +2048,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1894,7 +2231,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1910,7 +2247,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2081,6 +2418,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2096,7 +2438,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2138,6 +2480,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2150,7 +2507,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2224,7 +2581,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2318,7 +2675,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2342,6 +2699,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2751,7 +3113,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2885,7 +3247,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2981,7 +3343,7 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation type="unfinished"></translation>
@@ -3094,19 +3456,19 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3126,7 +3488,7 @@ If you choose verify, you need to have the other device available. If you choose
         <translation type="unfinished"></translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation type="unfinished">
@@ -3394,7 +3756,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3454,17 +3816,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3498,7 +3860,7 @@ Reason: %4</source>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3511,12 +3873,12 @@ Reason: %4</source>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3562,22 +3924,22 @@ Reason: %4</source>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3597,12 +3959,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3631,6 +3998,11 @@ Reason: %4</source>
         <source>Unpin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3673,7 +4045,7 @@ Reason: %4</source>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -3808,8 +4180,8 @@ Reason: %4</source>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3817,7 +4189,7 @@ Reason: %4</source>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3853,6 +4225,11 @@ Reason: %4</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3927,7 +4304,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4117,7 +4504,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4161,6 +4548,11 @@ When disabled, all messages are sent as a plain text.</source>
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4198,10 +4590,20 @@ OFF - square, ON - circle.</source>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4212,23 +4614,23 @@ OFF - square, ON - circle.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4238,7 +4640,7 @@ This usually causes the application icon in the task bar to animate in some fash
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4275,7 +4677,7 @@ Only affects messages in encrypted chats.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation type="unfinished"></translation>
@@ -4328,7 +4730,7 @@ This setting will take effect upon restart.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4480,7 +4882,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4534,7 +4936,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4595,16 +4997,28 @@ This setting will take effect upon restart.</source>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4643,6 +5057,16 @@ This setting will take effect upon restart.</source>
         <source>%1 ended a call</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_cs.ts b/resources/langs/nheko_cs.ts
index b8255ea7..3c6bf616 100644
--- a/resources/langs/nheko_cs.ts
+++ b/resources/langs/nheko_cs.ts
@@ -89,12 +89,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation type="unfinished"></translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -209,7 +209,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -223,22 +223,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -264,12 +276,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -314,12 +326,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation type="unfinished"></translation>
     </message>
@@ -334,7 +346,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -346,13 +358,13 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -414,6 +426,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -459,7 +770,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation type="unfinished"></translation>
     </message>
@@ -650,7 +961,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation type="unfinished"></translation>
     </message>
@@ -894,7 +1205,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation type="unfinished"></translation>
@@ -1109,7 +1420,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1169,7 +1480,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1248,7 +1559,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation type="unfinished"></translation>
@@ -1354,7 +1665,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+246"/>
         <source>%1 removed a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1419,27 +1730,48 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+44"/>
+        <location line="+30"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-150"/>
+        <location line="-193"/>
         <source>%1 answered the call.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-51"/>
+        <location line="-339"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+282"/>
         <source>%1 changed the parent communities for this room.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+65"/>
+        <location line="+93"/>
         <source>%1 ended the call.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1457,7 +1789,12 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1467,7 +1804,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1490,7 +1827,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1520,7 +1857,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1696,8 +2033,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1713,7 +2050,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1896,7 +2233,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1912,7 +2249,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2083,6 +2420,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2098,7 +2440,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2140,6 +2482,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2152,7 +2509,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2226,7 +2583,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2320,7 +2677,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2344,6 +2701,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2755,7 +3117,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2889,7 +3251,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2985,7 +3347,7 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation type="unfinished"></translation>
@@ -3098,19 +3460,19 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3130,7 +3492,7 @@ If you choose verify, you need to have the other device available. If you choose
         <translation type="unfinished"></translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation type="unfinished">
@@ -3403,7 +3765,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3463,17 +3825,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3507,7 +3869,7 @@ Reason: %4</source>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3520,12 +3882,12 @@ Reason: %4</source>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3572,22 +3934,22 @@ Reason: %4</source>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3607,12 +3969,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3641,6 +4008,11 @@ Reason: %4</source>
         <source>Unpin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3683,7 +4055,7 @@ Reason: %4</source>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -3819,8 +4191,8 @@ Reason: %4</source>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3828,7 +4200,7 @@ Reason: %4</source>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3864,6 +4236,11 @@ Reason: %4</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3938,7 +4315,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4128,7 +4515,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4172,6 +4559,11 @@ When disabled, all messages are sent as a plain text.</source>
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4209,10 +4601,20 @@ OFF - square, ON - circle.</source>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4223,23 +4625,23 @@ OFF - square, ON - circle.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4249,7 +4651,7 @@ This usually causes the application icon in the task bar to animate in some fash
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4286,7 +4688,7 @@ Only affects messages in encrypted chats.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation type="unfinished"></translation>
@@ -4339,7 +4741,7 @@ This setting will take effect upon restart.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4491,7 +4893,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4545,7 +4947,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4606,16 +5008,28 @@ This setting will take effect upon restart.</source>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4654,6 +5068,16 @@ This setting will take effect upon restart.</source>
         <source>%1 ended a call</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_de.ts b/resources/langs/nheko_de.ts
index f75fcfe9..6f86d345 100644
--- a/resources/langs/nheko_de.ts
+++ b/resources/langs/nheko_de.ts
@@ -89,12 +89,12 @@
         <translation>Adresse entfernen</translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation>#neue-addresse:server.domain</translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation>Hinzufügen</translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation>
             <numerusform>%1 und %n anderer Teilnehmer</numerusform>
@@ -208,7 +208,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation>Ganzer Bildschirm</translation>
     </message>
@@ -222,22 +222,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation>Eingeladener Benutzer: %1</translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation>Das Datenbankformat auf der Festplatte ist neuer als die von dieser Nhekoversion unterstützte Version. Bitte update Nheko oder lösche die Datenbank.</translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation>Öffnen der Datenbank fehlgeschlagen, du wirst ausgeloggt!</translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation>Raumbeitritt anfragen (anklopfen)</translation>
     </message>
@@ -263,12 +275,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation>Einladung bestätigen</translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation>Nutzer %1 (%2) wirklich einladen?</translation>
     </message>
@@ -313,12 +325,12 @@
         <translation>Verbannung aufgehoben: %1</translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation>Möchtest du wirklich eine private Konversation mit %1 beginnen?</translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation>Migration des Caches fehlgeschlagen!</translation>
     </message>
@@ -333,7 +345,7 @@
         <translation>Inkompatible Version des Caches</translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation>Wiederherstellung des OLM Accounts fehlgeschlagen. Bitte logge dich erneut ein.</translation>
     </message>
@@ -345,13 +357,13 @@
         <translation>Gespeicherte Nachrichten konnten nicht wiederhergestellt werden. Bitte melde Dich erneut an.</translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation>Fehler beim Setup der Verschlüsselungsschlüssel. Servermeldung: %1 %2. Bitte versuche es später erneut.</translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation>Bitte melde dich erneut an: %1</translation>
     </message>
@@ -413,6 +425,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -458,7 +769,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation>Zeige 1:1 Konversationen an.</translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation>Favoriten</translation>
     </message>
@@ -648,7 +959,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation>Geheimnisse entschlüsseln</translation>
     </message>
@@ -892,7 +1203,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation>Konnte die versteckten Events nicht ändern: %1</translation>
@@ -1107,7 +1418,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation>Alle Dateien (*)</translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation>Das Hochladen von &apos;%1&apos; ist fehlgeschlagen</translation>
     </message>
@@ -1167,7 +1478,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation>Raum verlassen</translation>
     </message>
@@ -1246,7 +1557,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation>Du hast eine invalide Matrix ID eingegeben. Normalerwise sehen die so aus: @joe:matrix.org</translation>
@@ -1352,7 +1663,17 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+78"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+162"/>
         <source>%1 removed a message</source>
         <translation>%1 hat eine Nachricht gelöscht</translation>
     </message>
@@ -1428,16 +1749,27 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+14"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
         <source>%1 ended the call.</source>
         <translation>%1 hat den Anruf beendet.</translation>
     </message>
     <message>
         <location line="+14"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation>%1 wartet auf Verbindung...</translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation>Reinlassen</translation>
     </message>
@@ -1455,7 +1787,12 @@ Example: https://server.my:8787</source>
         <translation>Anrufen</translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation>Versende Datei</translation>
     </message>
@@ -1465,7 +1802,7 @@ Example: https://server.my:8787</source>
         <translation>Schreibe eine Nachricht…</translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation>Sticker</translation>
     </message>
@@ -1488,7 +1825,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation>Bearbeiten</translation>
     </message>
@@ -1518,7 +1855,7 @@ Example: https://server.my:8787</source>
         <translation>Optionen</translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation>Grund für die Löschung</translation>
     </message>
@@ -1694,8 +2031,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation>%1 hat eine verschlüsselte Nachricht gesendet</translation>
     </message>
@@ -1711,7 +2048,7 @@ Example: https://server.my:8787</source>
         <translation>%1 hat mit einer verschlüsselten Nachricht geantwortet</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation>%1 hat auf eine Nachricht geantwortet</translation>
     </message>
@@ -1894,7 +2231,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation type="unfinished">Konnte Berechtigungen nicht aktualisieren: %1</translation>
     </message>
@@ -1910,7 +2247,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation>Andere Events</translation>
     </message>
@@ -2081,6 +2418,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation>Raumemotes bearbeiten</translation>
     </message>
@@ -2096,7 +2438,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2138,6 +2480,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished">Senden</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished">Schreibe eine Nachricht…</translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2150,7 +2507,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation>Gestern, %1</translation>
     </message>
@@ -2224,7 +2581,7 @@ Example: https://server.my:8787</source>
         <translation>REGISTRIEREN</translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation>Automatische Erkennung fehlgeschlagen. Antwort war fehlerhaft.</translation>
     </message>
@@ -2318,7 +2675,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation>keine Version gespeichert</translation>
     </message>
@@ -2342,6 +2699,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation>Raum verlassen</translation>
     </message>
@@ -2752,7 +3114,7 @@ Die Verschlüsselung des Raumes kann nach Aktivierung nicht mehr deaktiviert wer
         <translation>mehr anzeigen</translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation>Aktivierung der Verschlüsselung fehlgeschlagen: %1</translation>
     </message>
@@ -2886,7 +3248,7 @@ Die Verschlüsselung des Raumes kann nach Aktivierung nicht mehr deaktiviert wer
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation>Verbindung zum kryptografischen Speicher fehlgeschlagen</translation>
     </message>
@@ -2984,7 +3346,7 @@ Wenn du verifizieren wählst, musst du dein anderes Gerät zur Hand haben. Wenn
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation>Konnte die Bilderpackung nicht aktualisieren: %1</translation>
@@ -3097,19 +3459,19 @@ Wenn du verifizieren wählst, musst du dein anderes Gerät zur Hand haben. Wenn
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation>Nachricht zurückziehen fehlgeschlagen: %1</translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation>Event konnte nicht verschlüsselt werden, senden wurde abgebrochen!</translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation>Bild speichern</translation>
     </message>
@@ -3129,7 +3491,7 @@ Wenn du verifizieren wählst, musst du dein anderes Gerät zur Hand haben. Wenn
         <translation>Datei speichern</translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation>
@@ -3398,7 +3760,7 @@ Reason: %4</source>
 Grund: %4</translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation>%2 hat die Einladung an %1 zurückgezogen.</translation>
     </message>
@@ -3458,17 +3820,17 @@ Grund: %4</translation>
         <translation>%1 hat das Anklopfen zurückgezogen.</translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation>Du bist dem Raum beigetreten.</translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation>%1 hat %2 eingeladen.</translation>
     </message>
@@ -3502,7 +3864,7 @@ Grund: %4</translation>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation>Bearbeitet</translation>
     </message>
@@ -3515,12 +3877,12 @@ Grund: %4</translation>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation>Kein Raum geöffnet</translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation>Keine Vorschau verfügbar</translation>
     </message>
@@ -3566,22 +3928,22 @@ Grund: %4</translation>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation>Zurück zur Raumliste</translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation>Kein Raum ausgewählt</translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation>Zeige Raummitglieder an.</translation>
     </message>
@@ -3601,12 +3963,17 @@ Grund: %4</translation>
         <translation>Dieser Raum enthält unverifizierte Geräte!</translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation>Angehefte Nachrichten anzeigen oder verstecken</translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation>Raumoptionen</translation>
     </message>
@@ -3635,6 +4002,11 @@ Grund: %4</translation>
         <source>Unpin</source>
         <translation>Anheften aufheben</translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3677,7 +4049,7 @@ Grund: %4</translation>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation>
             <numerusform>Datei hochladen</numerusform>
@@ -3812,8 +4184,8 @@ Grund: %4</translation>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation>Standard</translation>
     </message>
@@ -3821,7 +4193,7 @@ Grund: %4</translation>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation>Erscheinungsbild</translation>
     </message>
@@ -3857,6 +4229,11 @@ Grund: %4</translation>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation>Nachrichtenblasen aktivieren</translation>
     </message>
@@ -3931,7 +4308,17 @@ Grund: %4</translation>
         <translation>Entschlüssele Nachrichten in der Raumliste</translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation>Blickschutz</translation>
     </message>
@@ -4121,7 +4508,7 @@ Grund: %4</translation>
         <translation>Mache Rauminformationen über D-Bus verfügbar</translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation>Standard</translation>
     </message>
@@ -4168,6 +4555,11 @@ Wenn deaktiviert werden alle Nachrichten als unformatierter Text gesendet.</tran
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation>Nachrichtenblasen als Layout der Nachrichtenliste.</translation>
     </message>
@@ -4207,10 +4599,20 @@ AUS - Quadratisch, AN - Kreisförmig.</translation>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4221,24 +4623,24 @@ AUS - Quadratisch, AN - Kreisförmig.</translation>
         <translation>Der Schlüssel um deine eigenen Geräte zu verifizieren. Wenn dieser im Cache ist, dann werden alle deine Geräte als verifiziert für andere Nutzer erscheinen, wenn du diese verifiziert hast.</translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation>Hebe das Fenster hervor, wenn eine Nachricht empfangen wurde.
 Normalerweise animiert das den Taskbaricon oder färbt das Fenster orange ein.</translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4248,7 +4650,7 @@ Normalerweise animiert das den Taskbaricon oder färbt das Fenster orange ein.</
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4290,7 +4692,7 @@ Only affects messages in encrypted chats.</source>
 Betrifft nur Nachrichten in verschlüsselten Chats.</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation>Die Zeitliste wird unscharf, wenn das Fenster den Fokus verliert.</translation>
@@ -4345,7 +4747,7 @@ This setting will take effect upon restart.</source>
 Diese Einstellung benötigt einen Neustart von Nheko.</translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation>Datei auswählen</translation>
     </message>
@@ -4497,7 +4899,7 @@ Diese Einstellung benötigt einen Neustart von Nheko.</translation>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation>Gestern</translation>
     </message>
@@ -4551,7 +4953,7 @@ Diese Einstellung benötigt einen Neustart von Nheko.</translation>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation>Du hast eine Audiodatei gesendet</translation>
     </message>
@@ -4612,16 +5014,28 @@ Diese Einstellung benötigt einen Neustart von Nheko.</translation>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation>Du: %1</translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation>%1: %2</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation>Du hast eine verschlüsselte Nachricht gesendet</translation>
     </message>
@@ -4660,6 +5074,16 @@ Diese Einstellung benötigt einen Neustart von Nheko.</translation>
         <source>%1 ended a call</source>
         <translation>%1 hat einen Anruf beendet</translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_el.ts b/resources/langs/nheko_el.ts
index a6c65c4f..bda4af75 100644
--- a/resources/langs/nheko_el.ts
+++ b/resources/langs/nheko_el.ts
@@ -89,12 +89,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation type="unfinished"></translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -208,7 +208,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -222,22 +222,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -263,12 +275,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -313,12 +325,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation type="unfinished"></translation>
     </message>
@@ -333,7 +345,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -345,13 +357,13 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -413,6 +425,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -458,7 +769,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation type="unfinished"></translation>
     </message>
@@ -648,7 +959,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation type="unfinished"></translation>
     </message>
@@ -892,7 +1203,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation type="unfinished"></translation>
@@ -1107,7 +1418,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished">Όλα τα αρχεία (*)</translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1167,7 +1478,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation type="unfinished">Βγές</translation>
     </message>
@@ -1246,7 +1557,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation type="unfinished"></translation>
@@ -1352,7 +1663,17 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+78"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+162"/>
         <source>%1 removed a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1428,16 +1749,27 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+14"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
         <source>%1 ended the call.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location line="+14"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1455,7 +1787,12 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1465,7 +1802,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished">Γράψε ένα μήνυμα...</translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1488,7 +1825,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1518,7 +1855,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1694,8 +2031,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1711,7 +2048,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1894,7 +2231,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1910,7 +2247,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2081,6 +2418,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2096,7 +2438,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2138,6 +2480,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished">Γράψε ένα μήνυμα...</translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2150,7 +2507,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2224,7 +2581,7 @@ Example: https://server.my:8787</source>
         <translation>ΕΓΓΡΑΦΗ</translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2318,7 +2675,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2342,6 +2699,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation type="unfinished">Βγές</translation>
     </message>
@@ -2751,7 +3113,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2885,7 +3247,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2981,7 +3343,7 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation type="unfinished"></translation>
@@ -3094,19 +3456,19 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation type="unfinished">Αποθήκευση Εικόνας</translation>
     </message>
@@ -3126,7 +3488,7 @@ If you choose verify, you need to have the other device available. If you choose
         <translation type="unfinished"></translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation type="unfinished">
@@ -3394,7 +3756,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3454,17 +3816,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3498,7 +3860,7 @@ Reason: %4</source>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3511,12 +3873,12 @@ Reason: %4</source>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3562,22 +3924,22 @@ Reason: %4</source>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3597,12 +3959,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3631,6 +3998,11 @@ Reason: %4</source>
         <source>Unpin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3673,7 +4045,7 @@ Reason: %4</source>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -3808,8 +4180,8 @@ Reason: %4</source>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3817,7 +4189,7 @@ Reason: %4</source>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation type="unfinished">Φόντο</translation>
     </message>
@@ -3853,6 +4225,11 @@ Reason: %4</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3927,7 +4304,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4117,7 +4504,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4161,6 +4548,11 @@ When disabled, all messages are sent as a plain text.</source>
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4198,10 +4590,20 @@ OFF - square, ON - circle.</source>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4212,23 +4614,23 @@ OFF - square, ON - circle.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4238,7 +4640,7 @@ This usually causes the application icon in the task bar to animate in some fash
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4275,7 +4677,7 @@ Only affects messages in encrypted chats.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation type="unfinished"></translation>
@@ -4328,7 +4730,7 @@ This setting will take effect upon restart.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation type="unfinished">Διάλεξε ένα αρχείο</translation>
     </message>
@@ -4480,7 +4882,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4534,7 +4936,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4595,16 +4997,28 @@ This setting will take effect upon restart.</source>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4643,6 +5057,16 @@ This setting will take effect upon restart.</source>
         <source>%1 ended a call</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_en.ts b/resources/langs/nheko_en.ts
index fe97cd35..b919c960 100644
--- a/resources/langs/nheko_en.ts
+++ b/resources/langs/nheko_en.ts
@@ -89,12 +89,12 @@
         <translation>Remove this alias</translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation>#new-alias:server.tld</translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation>Add</translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation>
             <numerusform>%1 and %n other</numerusform>
@@ -208,7 +208,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation>Entire screen</translation>
     </message>
@@ -222,22 +222,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation>Invited user: %1</translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation>Failed to open database, logging out!</translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation>Knock on room</translation>
     </message>
@@ -263,12 +275,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation>Confirm invite</translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation>Do you really want to invite %1 (%2)?</translation>
     </message>
@@ -313,12 +325,12 @@
         <translation>Unbanned user: %1</translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation>Do you really want to start a private chat with %1?</translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation>Cache migration failed!</translation>
     </message>
@@ -333,7 +345,7 @@
         <translation>Incompatible cache version</translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation>Failed to restore OLM account. Please login again.</translation>
     </message>
@@ -345,13 +357,13 @@
         <translation>Failed to restore saved data. Please login again.</translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation>Please try to login again: %1</translation>
     </message>
@@ -414,6 +426,305 @@ You may optionally provide a reason for others to accept your knock:</translatio
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -459,7 +770,7 @@ You may optionally provide a reason for others to accept your knock:</translatio
         <translation>Show direct chats.</translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation>Favourites</translation>
     </message>
@@ -649,7 +960,7 @@ You may optionally provide a reason for others to accept your knock:</translatio
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation>Decrypt secrets</translation>
     </message>
@@ -893,7 +1204,7 @@ You may optionally provide a reason for others to accept your knock:</translatio
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation>Failed to set hidden events: %1</translation>
@@ -1108,7 +1419,7 @@ You may optionally provide a reason for others to accept your knock:</translatio
         <translation>All Files (*)</translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation>Upload of &apos;%1&apos; failed</translation>
     </message>
@@ -1168,7 +1479,7 @@ You may optionally provide a reason for others to accept your knock:</translatio
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation>Leave room</translation>
     </message>
@@ -1251,7 +1562,7 @@ Example: https://server.my:8787</translation>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation>You have entered an invalid Matrix ID  e.g @joe:matrix.org</translation>
@@ -1357,7 +1668,7 @@ Example: https://server.my:8787</translation>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+246"/>
         <source>%1 removed a message</source>
         <translation>%1 removed a message</translation>
     </message>
@@ -1422,27 +1733,48 @@ Example: https://server.my:8787</translation>
         <translation>%1 placed a call.</translation>
     </message>
     <message>
-        <location line="+44"/>
+        <location line="+30"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation>%1 is negotiating the call...</translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation>Allow them in</translation>
     </message>
     <message>
-        <location line="-150"/>
+        <location line="-193"/>
         <source>%1 answered the call.</source>
         <translation>%1 answered the call.</translation>
     </message>
     <message>
-        <location line="-51"/>
+        <location line="-339"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+282"/>
         <source>%1 changed the parent communities for this room.</source>
         <translation>%1 changed the parent communities for this room.</translation>
     </message>
     <message>
-        <location line="+65"/>
+        <location line="+93"/>
         <source>%1 ended the call.</source>
         <translation>%1 ended the call.</translation>
     </message>
@@ -1460,7 +1792,12 @@ Example: https://server.my:8787</translation>
         <translation>Place a call</translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation>Send a file</translation>
     </message>
@@ -1470,7 +1807,7 @@ Example: https://server.my:8787</translation>
         <translation>Write a message…</translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation>Stickers</translation>
     </message>
@@ -1493,7 +1830,7 @@ Example: https://server.my:8787</translation>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation>Edit</translation>
     </message>
@@ -1523,7 +1860,7 @@ Example: https://server.my:8787</translation>
         <translation>Options</translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation>Reason for removal</translation>
     </message>
@@ -1699,8 +2036,8 @@ Example: https://server.my:8787</translation>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation>%1 sent an encrypted message</translation>
     </message>
@@ -1716,7 +2053,7 @@ Example: https://server.my:8787</translation>
         <translation>%1 replied with an encrypted message</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation>%1 replied to a message</translation>
     </message>
@@ -1899,7 +2236,7 @@ Example: https://server.my:8787</translation>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation>Failed to update powerlevel: %1</translation>
     </message>
@@ -1915,7 +2252,7 @@ Example: https://server.my:8787</translation>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation>Other events</translation>
     </message>
@@ -2086,6 +2423,11 @@ Example: https://server.my:8787</translation>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation>Change the room emotes</translation>
     </message>
@@ -2101,7 +2443,7 @@ Example: https://server.my:8787</translation>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</translation>
     </message>
@@ -2143,6 +2485,21 @@ Example: https://server.my:8787</translation>
         <source>type</source>
         <translation>type</translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished">Send</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished">Write a message…</translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2155,7 +2512,7 @@ Example: https://server.my:8787</translation>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation>Yesterday, %1</translation>
     </message>
@@ -2229,7 +2586,7 @@ Example: https://server.my:8787</translation>
         <translation>REGISTER</translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation>Autodiscovery failed. Received malformed response.</translation>
     </message>
@@ -2323,7 +2680,7 @@ Example: https://server.my:8787</translation>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation>no version stored</translation>
     </message>
@@ -2347,6 +2704,11 @@ Example: https://server.my:8787</translation>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation>Leave room</translation>
     </message>
@@ -2757,7 +3119,7 @@ Please take note that it can&apos;t be disabled afterwards.</translation>
         <translation>show more</translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation>Failed to enable encryption: %1</translation>
     </message>
@@ -2891,7 +3253,7 @@ Please take note that it can&apos;t be disabled afterwards.</translation>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation>Failed to connect to secret storage</translation>
     </message>
@@ -2989,7 +3351,7 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation>Failed to update image pack: %1</translation>
@@ -3102,19 +3464,19 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation>Message redaction failed: %1</translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation>Failed to encrypt event, sending aborted!</translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation>Save image</translation>
     </message>
@@ -3134,7 +3496,7 @@ If you choose verify, you need to have the other device available. If you choose
         <translation>Save file</translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation>
@@ -3403,7 +3765,7 @@ Reason: %4</source>
 Reason: %4</translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation>%2 revoked the invite to %1.</translation>
     </message>
@@ -3463,17 +3825,17 @@ Reason: %4</translation>
         <translation>%1 redacted their knock.</translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation>You joined this room.</translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation>%1 made this room require an invitation to join.</translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation>%1 invited %2.</translation>
     </message>
@@ -3507,7 +3869,7 @@ Reason: %4</translation>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation>Edited</translation>
     </message>
@@ -3520,12 +3882,12 @@ Reason: %4</translation>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation>No room open</translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation>No preview available</translation>
     </message>
@@ -3571,22 +3933,22 @@ Reason: %4</translation>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation>Back to room list</translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation>No room selected</translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation>In %1</translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation>Show room members.</translation>
     </message>
@@ -3606,12 +3968,17 @@ Reason: %4</translation>
         <translation>This room contains unverified devices!</translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation>Show or hide pinned messages</translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation>Room options</translation>
     </message>
@@ -3640,6 +4007,11 @@ Reason: %4</translation>
         <source>Unpin</source>
         <translation>Unpin</translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3682,7 +4054,7 @@ Reason: %4</translation>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation>
             <numerusform>Upload file</numerusform>
@@ -3817,8 +4189,8 @@ Reason: %4</translation>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation>Default</translation>
     </message>
@@ -3826,7 +4198,7 @@ Reason: %4</translation>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation>Theme</translation>
     </message>
@@ -3862,6 +4234,11 @@ Reason: %4</translation>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation>Enable message bubbles</translation>
     </message>
@@ -3936,7 +4313,17 @@ Reason: %4</translation>
         <translation>Decrypt messages in sidebar</translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation>Privacy Screen</translation>
     </message>
@@ -4126,7 +4513,7 @@ Reason: %4</translation>
         <translation>Expose room information via D-Bus</translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation>Default</translation>
     </message>
@@ -4173,6 +4560,11 @@ When disabled, all messages are sent as a plain text.</translation>
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation>Messages get a bubble background. This also triggers some layout changes (WIP).</translation>
     </message>
@@ -4212,10 +4604,20 @@ OFF - square, ON - circle.</translation>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation>Choose where to show the total number of notifications contained within a community or tag.</translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</translation>
@@ -4226,24 +4628,24 @@ OFF - square, ON - circle.</translation>
         <translation>The key to verify your own devices. If it is cached, verifying one of your devices will mark it verified for all your other devices and for users that have verified you.</translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation>Communities sidebar</translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation>Show message counts for communities and tags</translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</translation>
     </message>
@@ -4253,7 +4655,7 @@ This usually causes the application icon in the task bar to animate in some fash
         <translation>Show a column containing communities and tags next to the room list.</translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4297,7 +4699,7 @@ Only affects messages in encrypted chats.</source>
 Only affects messages in encrypted chats.</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation>When the window loses focus, the timeline will
@@ -4353,7 +4755,7 @@ This setting will take effect upon restart.</source>
 This setting will take effect upon restart.</translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation>Select a file</translation>
     </message>
@@ -4505,7 +4907,7 @@ This setting will take effect upon restart.</translation>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation>Yesterday</translation>
     </message>
@@ -4559,7 +4961,7 @@ This setting will take effect upon restart.</translation>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation>You sent an audio clip</translation>
     </message>
@@ -4620,16 +5022,28 @@ This setting will take effect upon restart.</translation>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation>You: %1</translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation>%1: %2</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation>You sent an encrypted message</translation>
     </message>
@@ -4668,6 +5082,16 @@ This setting will take effect upon restart.</translation>
         <source>%1 ended a call</source>
         <translation>%1 ended a call</translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_eo.ts b/resources/langs/nheko_eo.ts
index 0d448988..30e35719 100644
--- a/resources/langs/nheko_eo.ts
+++ b/resources/langs/nheko_eo.ts
@@ -89,12 +89,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation>Aldoni</translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -208,7 +208,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation>Tuta ekrano</translation>
     </message>
@@ -222,22 +222,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation>Invitita uzanto: %1</translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation>La kaŝmemoro sur via disko pli novas, ol tio, kion povas subteni ĉi tiu versio de Nheko. Bonvolu ĝisdatigi Nhekon aŭ vakigi vian kaŝmemoron.</translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation>Malsukcesis malfermi datumbazon; adiaŭas!</translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -264,12 +276,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation>Konfirmu inviton</translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation>Ĉu vi certe volas inviti uzanton %1 (%2)?</translation>
     </message>
@@ -314,12 +326,12 @@
         <translation>Malforbaris uzanton: %1</translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation>Ĉu vi certe volas komenci privatan babilon kun %1?</translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation>Malsukcesis migrado de kaŝmemoro!</translation>
     </message>
@@ -334,7 +346,7 @@
         <translation>Neakorda versio de kaŝmemoro</translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation>Malsukcesis rehavi konton je OLM. Bonvolu resaluti.</translation>
     </message>
@@ -346,13 +358,13 @@
         <translation>Malsukcesis rehavi konservitajn datumojn. Bonvolu resaluti.</translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation>Malsukcesis agordi ĉifrajn ŝlosilojn. Respondo de servilo: %1 %2. Bonvolu reprovi poste.</translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation>Bonvolu provi resaluti: %1</translation>
     </message>
@@ -414,6 +426,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -459,7 +770,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation>Montri individuajn ĉambrojn.</translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation>Elstaraj</translation>
     </message>
@@ -649,7 +960,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation>Malĉifri sekretojn</translation>
     </message>
@@ -893,7 +1204,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation>Malsukcesis agordi kaŝitajn okazojn: %1</translation>
@@ -1108,7 +1419,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation>Ĉiuj dosieroj (*)</translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1168,7 +1479,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation>Eliri el ĉambro</translation>
     </message>
@@ -1248,7 +1559,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation>Vi enigis nevalidan identigilon de Matrikso  ekz. @tacuo:matrix.org</translation>
@@ -1354,7 +1665,17 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+78"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+162"/>
         <source>%1 removed a message</source>
         <translation>%1 forigis mesaĝon</translation>
     </message>
@@ -1430,16 +1751,27 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+14"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
         <source>%1 ended the call.</source>
         <translation>%1 finis la vokon.</translation>
     </message>
     <message>
         <location line="+14"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation>Enlasi ĝin</translation>
     </message>
@@ -1457,7 +1789,12 @@ Example: https://server.my:8787</source>
         <translation>Voki</translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation>Sendi dosieron</translation>
     </message>
@@ -1467,7 +1804,7 @@ Example: https://server.my:8787</source>
         <translation>Skribu mesaĝon…</translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation>Glumarkoj</translation>
     </message>
@@ -1490,7 +1827,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation>Redakti</translation>
     </message>
@@ -1520,7 +1857,7 @@ Example: https://server.my:8787</source>
         <translation>Elektebloj</translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation>Kialo de forigo</translation>
     </message>
@@ -1696,8 +2033,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation>%1 sendis ĉifritan mesaĝon</translation>
     </message>
@@ -1713,7 +2050,7 @@ Example: https://server.my:8787</source>
         <translation>%1 respondis per ĉifrita mesaĝo</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation>%1 respondis al mesaĝo</translation>
     </message>
@@ -1896,7 +2233,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1912,7 +2249,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2083,6 +2420,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2098,7 +2440,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2140,6 +2482,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished">Sendi</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished">Skribu mesaĝon…</translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2152,7 +2509,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation>Hieraŭ, %1</translation>
     </message>
@@ -2226,7 +2583,7 @@ Example: https://server.my:8787</source>
         <translation>REGISTRIĜI</translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation>Malsukcesis memaga trovado. Ricevis misformitan respondon.</translation>
     </message>
@@ -2320,7 +2677,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation>neniu versio konservita</translation>
     </message>
@@ -2344,6 +2701,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation>Eliri el ĉambro</translation>
     </message>
@@ -2753,7 +3115,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation>Malsukcesis ŝalti ĉifradon: %1</translation>
     </message>
@@ -2887,7 +3249,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation>Malsukcesis konektiĝi al sekreta deponejo</translation>
     </message>
@@ -2985,7 +3347,7 @@ Se vi elektos kontrolon, vi devos havi alian aparaton disponeblan. Se vi elektos
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation>Malsukcesis ĝisdatigi bildopakon: %1</translation>
@@ -3099,19 +3461,19 @@ Se vi elektos kontrolon, vi devos havi alian aparaton disponeblan. Se vi elektos
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation>Malsukcesis redaktado de mesaĝo: %1</translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation>Malsukcesis ĉifri okazon; sendado nuliĝis!</translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation>Konservi bildon</translation>
     </message>
@@ -3131,7 +3493,7 @@ Se vi elektos kontrolon, vi devos havi alian aparaton disponeblan. Se vi elektos
         <translation>Konservi dosieron</translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation>
@@ -3400,7 +3762,7 @@ Reason: %4</source>
 Kialo: %4</translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3461,17 +3823,17 @@ Kialo: %4</translation>
         <translation>%1 forigis sian frapon.</translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation>Vi aliĝis ĉi tiun ĉambron.</translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3505,7 +3867,7 @@ Kialo: %4</translation>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation>Redaktita</translation>
     </message>
@@ -3518,12 +3880,12 @@ Kialo: %4</translation>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation>Neniu ĉambro estas malfermita</translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation>Neniu antaŭrigardo disponeblas</translation>
     </message>
@@ -3569,22 +3931,22 @@ Kialo: %4</translation>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation>Reen al listo de ĉambroj</translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation>Neniu ĉambro estas elektita</translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3604,12 +3966,17 @@ Kialo: %4</translation>
         <translation>Ĉi tiu ĉambro enhavas nekontrolitajn aparatojn!</translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation>Elektebloj de ĉambro</translation>
     </message>
@@ -3638,6 +4005,11 @@ Kialo: %4</translation>
         <source>Unpin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3680,7 +4052,7 @@ Kialo: %4</translation>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -3815,8 +4187,8 @@ Kialo: %4</translation>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation>Implicita</translation>
     </message>
@@ -3824,7 +4196,7 @@ Kialo: %4</translation>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation>Haŭto</translation>
     </message>
@@ -3860,6 +4232,11 @@ Kialo: %4</translation>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3934,7 +4311,17 @@ Kialo: %4</translation>
         <translation>Malĉifri mesaĝojn en flanka breto</translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation>Privateca ŝirmilo</translation>
     </message>
@@ -4124,7 +4511,7 @@ Kialo: %4</translation>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation>Implicita</translation>
     </message>
@@ -4172,6 +4559,11 @@ Kun ĉi tio malŝaltita, ĉiuj mesaĝoj sendiĝas en plata teksto.</translation>
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4211,10 +4603,20 @@ OFF - square, ON - circle.</source>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4225,24 +4627,24 @@ OFF - square, ON - circle.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation>Atentigas je ricevo de mesaĝo.
 Ĉi tio kutime movbildigas la simbolbildon sur la pleto iumaniere.</translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4252,7 +4654,7 @@ This usually causes the application icon in the task bar to animate in some fash
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4290,7 +4692,7 @@ Only affects messages in encrypted chats.</source>
 Influas nur sur mesaĝoj en ĉifritaj babiloj.</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation>Kiam la fenestro ne estos fokusata, la historio
@@ -4344,7 +4746,7 @@ This setting will take effect upon restart.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation>Elektu dosieron</translation>
     </message>
@@ -4497,7 +4899,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation>Hieraŭ</translation>
     </message>
@@ -4551,7 +4953,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation>Vi sendis sonmesaĝon</translation>
     </message>
@@ -4612,16 +5014,28 @@ This setting will take effect upon restart.</source>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation>Vi: %1</translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation>%1: %2</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation>Vi sendis ĉifritan mesaĝon</translation>
     </message>
@@ -4660,6 +5074,16 @@ This setting will take effect upon restart.</source>
         <source>%1 ended a call</source>
         <translation>%1 finis vokon</translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_es.ts b/resources/langs/nheko_es.ts
index de839198..404d4108 100644
--- a/resources/langs/nheko_es.ts
+++ b/resources/langs/nheko_es.ts
@@ -89,12 +89,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation type="unfinished">Añadir</translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation>
             <numerusform>%1 y %n otro</numerusform>
@@ -208,7 +208,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation>Pantalla completa</translation>
     </message>
@@ -222,22 +222,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation>Se invitó al usuario: %1</translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation>La cache en su disco es más reciente de lo que esta versión de Nheko soporta. Por favor actualiza Nheko o limpia la cache.</translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation>Error al abrir la base de datos, cerrando sesión!</translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -263,12 +275,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation>Confirmar invitación</translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation>¿Seguro que quieres invitar a %1 (%2)?</translation>
     </message>
@@ -313,12 +325,12 @@
         <translation>Usuario desbaneado: %1</translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation>¿Seguro que quieres comenzar un chat privado con %1?</translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation>Migración de cache fallida!</translation>
     </message>
@@ -333,7 +345,7 @@
         <translation>Versión de cache incompatible</translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation>No se ha podido restaurar la cuenta OLM. Por favor inicia sesión de nuevo.</translation>
     </message>
@@ -345,13 +357,13 @@
         <translation>No se ha podido restaurar los datos guardados. Por favor inicia sesión de nuevo.</translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation>No se han podido configurar las claves de encriptación. Respuesta del servidor: %1 %2. Por favor intentalo de nuevo más tarde.</translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation>Por favor intenta iniciar sesión de nuevo: %1</translation>
     </message>
@@ -413,6 +425,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -458,7 +769,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation>Mostrar chats directos.</translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation>Favoritos</translation>
     </message>
@@ -648,7 +959,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation>Desencriptar secretos</translation>
     </message>
@@ -892,7 +1203,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation type="unfinished"></translation>
@@ -1109,7 +1420,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation>Todos los archivos (*)</translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1169,7 +1480,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation>Salir de la sala</translation>
     </message>
@@ -1248,7 +1559,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation>Has insertado un ID de Matrix invalido  ej @joe:matrix.org</translation>
@@ -1354,7 +1665,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+246"/>
         <source>%1 removed a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1419,27 +1730,48 @@ Example: https://server.my:8787</source>
         <translation>%1 hizo una llamada.</translation>
     </message>
     <message>
-        <location line="+44"/>
+        <location line="+30"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation>Permitir que entren</translation>
     </message>
     <message>
-        <location line="-150"/>
+        <location line="-193"/>
         <source>%1 answered the call.</source>
         <translation>%1 atendió la llamada.</translation>
     </message>
     <message>
-        <location line="-51"/>
+        <location line="-339"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+282"/>
         <source>%1 changed the parent communities for this room.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+65"/>
+        <location line="+93"/>
         <source>%1 ended the call.</source>
         <translation>%1 terminó la llamada.</translation>
     </message>
@@ -1457,7 +1789,12 @@ Example: https://server.my:8787</source>
         <translation>Llamar</translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation>Enviar archivo</translation>
     </message>
@@ -1467,7 +1804,7 @@ Example: https://server.my:8787</source>
         <translation>Escribe un mensaje...</translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation>Stickers</translation>
     </message>
@@ -1490,7 +1827,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation>Editar</translation>
     </message>
@@ -1520,7 +1857,7 @@ Example: https://server.my:8787</source>
         <translation>Opciones</translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1696,8 +2033,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation>%1 envió un mensaje encriptado</translation>
     </message>
@@ -1713,7 +2050,7 @@ Example: https://server.my:8787</source>
         <translation>%1 respondió con un mensaje encriptado</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation>%1 respondió a un mensaje</translation>
     </message>
@@ -1896,7 +2233,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1912,7 +2249,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2083,6 +2420,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2098,7 +2440,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2140,6 +2482,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished">Enviar</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished">Escribe un mensaje...</translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2152,7 +2509,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation>Ayer, %1</translation>
     </message>
@@ -2226,7 +2583,7 @@ Example: https://server.my:8787</source>
         <translation>REGISTRARSE</translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation>El autodescubrimiento falló. Se ha recibido una respuesta malformada.</translation>
     </message>
@@ -2320,7 +2677,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation>ninguna version guardada</translation>
     </message>
@@ -2344,6 +2701,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation>Salir de la sala</translation>
     </message>
@@ -2754,7 +3116,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation>Error al activar la encriptación: %1</translation>
     </message>
@@ -2888,7 +3250,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation>Hubo en error al conectarse al almacenamiento secreto</translation>
     </message>
@@ -2986,7 +3348,7 @@ Si escoges verificar, necesitas tener otro dispositivo disponible. Si escoges &q
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation>Falló en la actualización del pack de imágenes: %1</translation>
@@ -3099,19 +3461,19 @@ Si escoges verificar, necesitas tener otro dispositivo disponible. Si escoges &q
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation>Falló en la eliminación del mensaje: %1</translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation>Falló al encriptar el evento, abortando el envío!</translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation>Guardar imagen</translation>
     </message>
@@ -3131,7 +3493,7 @@ Si escoges verificar, necesitas tener otro dispositivo disponible. Si escoges &q
         <translation>Guardar archivo</translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation>
@@ -3400,7 +3762,7 @@ Reason: %4</source>
 Razón: %4</translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+109"/>
         <source>%1 invited %2.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3430,12 +3792,12 @@ Razón: %4</translation>
         <translation>%1 cambió su avatar y su nombre a %2.</translation>
     </message>
     <message>
-        <location line="-640"/>
+        <location line="-666"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+644"/>
+        <location line="+670"/>
         <source>%1 has changed their display name to %2.</source>
         <translation>%1 cambió su nombre a %2.</translation>
     </message>
@@ -3480,12 +3842,12 @@ Razón: %4</translation>
         <translation>%1 canceló después de tocar la puerta.</translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation>Te has unido a esta sala.</translation>
     </message>
     <message>
-        <location line="+1573"/>
+        <location line="+1631"/>
         <source>%1 left after having already left!</source>
         <comment>This is a leave event after the user already left and shouldn&apos;t happen apart from state resets</comment>
         <translation>%1 se fue después de ya haberse ido!</translation>
@@ -3504,7 +3866,7 @@ Razón: %4</translation>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation>Editado</translation>
     </message>
@@ -3517,12 +3879,12 @@ Razón: %4</translation>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation>Ninguna sala abierta</translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation>Vista previa no disponible</translation>
     </message>
@@ -3568,22 +3930,22 @@ Razón: %4</translation>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation>Volver a la lista de salas</translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation>Ninguna sala seleccionada</translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3603,12 +3965,17 @@ Razón: %4</translation>
         <translation>Esta sala contiene dispositivos sin verificar!</translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation>Mostrar u ocultar mensajes fijados</translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation>Ajustes de la sala</translation>
     </message>
@@ -3637,6 +4004,11 @@ Razón: %4</translation>
         <source>Unpin</source>
         <translation>Desfijar</translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3679,7 +4051,7 @@ Razón: %4</translation>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -3814,8 +4186,8 @@ Razón: %4</translation>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation>Por defecto</translation>
     </message>
@@ -3823,7 +4195,7 @@ Razón: %4</translation>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation type="unfinished">Tema</translation>
     </message>
@@ -3859,6 +4231,11 @@ Razón: %4</translation>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3933,7 +4310,17 @@ Razón: %4</translation>
         <translation type="unfinished">Desencriptar mensajes en la barra lateral</translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation type="unfinished">Privacidad de pantalla</translation>
     </message>
@@ -4123,7 +4510,7 @@ Razón: %4</translation>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation type="unfinished">Por defecto</translation>
     </message>
@@ -4170,6 +4557,11 @@ Cuando está deshabilitado, todos los mensajes son enviados en texto sin formato
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4208,10 +4600,20 @@ OFF - square, ON - circle.</source>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4222,24 +4624,24 @@ OFF - square, ON - circle.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation type="unfinished">Mostrar una alerta cuando un mensaje sea recibido.
 Esto usualmente causa que el icono de la aplicación en la barra de tareas sea animado de alguna forma.</translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4249,7 +4651,7 @@ Esto usualmente causa que el icono de la aplicación en la barra de tareas sea a
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4287,7 +4689,7 @@ Only affects messages in encrypted chats.</source>
 Sólo afecta a los mensajes en chats encriptados.</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation type="unfinished">Cuando la ventana no este enfocada, la línea de tiempo se volverá borrosa.</translation>
@@ -4340,7 +4742,7 @@ This setting will take effect upon restart.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation type="unfinished">Seleccionar un archivo</translation>
     </message>
@@ -4492,7 +4894,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation>Ayer</translation>
     </message>
@@ -4546,7 +4948,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation>Enviaste un clip de audio</translation>
     </message>
@@ -4607,16 +5009,28 @@ This setting will take effect upon restart.</source>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation>Tú: %1</translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation>%1: %2</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation>Enviaste un mensaje encriptado</translation>
     </message>
@@ -4655,6 +5069,16 @@ This setting will take effect upon restart.</source>
         <source>%1 ended a call</source>
         <translation>%1 terminó la llamada</translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_et.ts b/resources/langs/nheko_et.ts
index 26c1263a..0b78496c 100644
--- a/resources/langs/nheko_et.ts
+++ b/resources/langs/nheko_et.ts
@@ -89,12 +89,12 @@
         <translation>Kustuta see alias</translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation>#uus-alias:server.tippdomeen</translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation>Lisa</translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation>
             <numerusform>%1 ja veel %n teine kasutaja</numerusform>
@@ -208,7 +208,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation>Terve ekraan</translation>
     </message>
@@ -222,22 +222,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation>Kutsutud kasutaja: %1</translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation>Sinu andmekandjale salvestatud puhvri versioon on uuem, kui käesolev Nheko versioon kasutada oskab. Palun tee Nheko uuendus või kustuta puhverdatud andmed.</translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation>Andmebaasi avamine ei õnnestunud. Login välja!</translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation>Koputa jututoa uksele</translation>
     </message>
@@ -263,12 +275,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation>Kinnita kutse</translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation>Kas sa tõesti soovid saata kutset kasutajale %1 (%2)?</translation>
     </message>
@@ -313,12 +325,12 @@
         <translation>Suhtluskeeld eemaldatud: %1</translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation>Kas sa kindlasti soovid alustada otsevestlust kasutajaga %1?</translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation>Puhvri versiooniuuendus ebaõnnestus!</translation>
     </message>
@@ -333,7 +345,7 @@
         <translation>Mitteühilduv puhvri versioon</translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation>OLM konto taastamine ei õnnestunud. Palun logi uuesti sisse.</translation>
     </message>
@@ -345,13 +357,13 @@
         <translation>Salvestatud andmete taastamine ei õnnestunud. Palun logi uuesti sisse.</translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation>Krüptovõtmete kasutusele võtmine ei õnnestunud. Koduserveri vastus päringule: %1 %2. Palun proovi hiljem uuesti.</translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation>Palun proovi uuesti sisse logida: %1</translation>
     </message>
@@ -413,6 +425,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -458,7 +769,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation>Näita otsevestluseid.</translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation>Lemmikud</translation>
     </message>
@@ -648,7 +959,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation>Dekrüpti andmed</translation>
     </message>
@@ -892,7 +1203,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation>Peidetud sündmuste loomine ei õnnestunud: %1</translation>
@@ -1107,7 +1418,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation>Kõik failid (*)</translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation>„%1“ üleslaadimine ei õnnestunud</translation>
     </message>
@@ -1167,7 +1478,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation>Lahku jututoast</translation>
     </message>
@@ -1246,7 +1557,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation>Sisestatud Matrix&apos;i kasutajatunnus on vigane - peaks olema @kasutaja:server.tld</translation>
@@ -1352,7 +1663,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+246"/>
         <source>%1 removed a message</source>
         <translation>%1 eemaldas sõnumi</translation>
     </message>
@@ -1417,27 +1728,48 @@ Example: https://server.my:8787</source>
         <translation>%1 helistas.</translation>
     </message>
     <message>
-        <location line="+44"/>
+        <location line="+30"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation>%1 alustab kõnet...</translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation>Luba neid</translation>
     </message>
     <message>
-        <location line="-150"/>
+        <location line="-193"/>
         <source>%1 answered the call.</source>
         <translation>%1 vastas kõnele.</translation>
     </message>
     <message>
-        <location line="-51"/>
+        <location line="-339"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+282"/>
         <source>%1 changed the parent communities for this room.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+65"/>
+        <location line="+93"/>
         <source>%1 ended the call.</source>
         <translation>%1 lõpetas kõne.</translation>
     </message>
@@ -1455,7 +1787,12 @@ Example: https://server.my:8787</source>
         <translation>Helista</translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation>Saada fail</translation>
     </message>
@@ -1465,7 +1802,7 @@ Example: https://server.my:8787</source>
         <translation>Kirjuta sõnum…</translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation>Kleepsud</translation>
     </message>
@@ -1488,7 +1825,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation>Muuda</translation>
     </message>
@@ -1518,7 +1855,7 @@ Example: https://server.my:8787</source>
         <translation>Valikud</translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation>Eemaldamise põhjus</translation>
     </message>
@@ -1694,8 +2031,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation>%1 saatis krüptitud sõnumi</translation>
     </message>
@@ -1711,7 +2048,7 @@ Example: https://server.my:8787</source>
         <translation>%1 vastas krüptitud sõnumiga</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation>%1 vastas sõnumile</translation>
     </message>
@@ -1894,7 +2231,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation>Õiguste muutmine ei õnnestunud: %1</translation>
     </message>
@@ -1910,7 +2247,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation>Muud sündmused</translation>
     </message>
@@ -2081,6 +2418,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation>Jutuoa emotikonide muutmine</translation>
     </message>
@@ -2096,7 +2438,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2138,6 +2480,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished">Saada</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished">Kirjuta sõnum…</translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2150,7 +2507,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation>Eile, %1</translation>
     </message>
@@ -2224,7 +2581,7 @@ Example: https://server.my:8787</source>
         <translation>REGISTREERI</translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation>Koduserveri automaatne tuvastamine ei õnnestunud: päringuvastus oli vigane.</translation>
     </message>
@@ -2318,7 +2675,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation>salvestatud versiooni ei leidu</translation>
     </message>
@@ -2342,6 +2699,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation>Lahku jututoast</translation>
     </message>
@@ -2752,7 +3114,7 @@ Palun arvesta, et krüptimist ei saa hiljem enam välja lülitada.</translation>
         <translation>näita rohkem</translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation>Krüptimise kasutuselevõtmine ei õnnestunud: %1</translation>
     </message>
@@ -2886,7 +3248,7 @@ Palun arvesta, et krüptimist ei saa hiljem enam välja lülitada.</translation>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation>Ühenduse loomine võtmehoidlaga ei õnnestunud</translation>
     </message>
@@ -2984,7 +3346,7 @@ Kui eelistad verifitseerimist, siis peab sul teine seade olema käepärast. Kui
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation>Pildipaki uuendamine ei õnnestunud: %1</translation>
@@ -3097,19 +3459,19 @@ Kui eelistad verifitseerimist, siis peab sul teine seade olema käepärast. Kui
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation>Sõnumi ümbersõnastamine ebaõnnestus: %1</translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation>Sündmuse krüptimine ei õnnestunud, katkestame saatmise!</translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation>Salvesta pilt</translation>
     </message>
@@ -3129,7 +3491,7 @@ Kui eelistad verifitseerimist, siis peab sul teine seade olema käepärast. Kui
         <translation>Salvesta fail</translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation>
@@ -3398,7 +3760,7 @@ Reason: %4</source>
 Põhjus: %4</translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation>%2 tühistas kutse kasutajale %1.</translation>
     </message>
@@ -3458,17 +3820,17 @@ Põhjus: %4</translation>
         <translation>%1 muutis oma koputust jututoa uksele.</translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation>Sa liitusid jututoaga.</translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation>%1 saatis kutse kasutajale %2.</translation>
     </message>
@@ -3502,7 +3864,7 @@ Põhjus: %4</translation>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation>Muudetud</translation>
     </message>
@@ -3515,12 +3877,12 @@ Põhjus: %4</translation>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation>Ühtegi jututuba pole avatud</translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation>Eelvaade pole saadaval</translation>
     </message>
@@ -3566,22 +3928,22 @@ Põhjus: %4</translation>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation>Tagasi jututubade loendisse</translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation>Jututuba on valimata</translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation>Näita jututoas osalejaid.</translation>
     </message>
@@ -3601,12 +3963,17 @@ Põhjus: %4</translation>
         <translation>Selles jututoas leidub verifitseerimata seadmeid!</translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation>Näita klammerdatud sõnumeid või peida nad</translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation>Jututoa valikud</translation>
     </message>
@@ -3635,6 +4002,11 @@ Põhjus: %4</translation>
         <source>Unpin</source>
         <translation>Võta lahti</translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3677,7 +4049,7 @@ Põhjus: %4</translation>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation>
             <numerusform>Laadi fail üles</numerusform>
@@ -3812,8 +4184,8 @@ Põhjus: %4</translation>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation>Vaikimisi</translation>
     </message>
@@ -3821,7 +4193,7 @@ Põhjus: %4</translation>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation>Teema</translation>
     </message>
@@ -3857,6 +4229,11 @@ Põhjus: %4</translation>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation>Kasuta jutumulle</translation>
     </message>
@@ -3931,7 +4308,17 @@ Põhjus: %4</translation>
         <translation>Dekrüpti sõnumid külgribal</translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation>Privaatsust tagav sirm</translation>
     </message>
@@ -4121,7 +4508,7 @@ Põhjus: %4</translation>
         <translation>Jaga jututoa teavet D-Bus&apos;i vahendusel</translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation>Vaikimisi</translation>
     </message>
@@ -4168,6 +4555,11 @@ Kui Markdown ei ole kasutusel, siis saadetakse kõik sõnumid vormindamata tekst
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation>Sõnumeid kuvatakse jutumullides. Sellega kaasnevad ka mõned muudatused rakenduse välimuses (osaliselt veel arenduses).</translation>
     </message>
@@ -4207,10 +4599,20 @@ Väljalülitatuna - ruut, sisselülitatuna - ümmargune.</translation>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4221,24 +4623,24 @@ Väljalülitatuna - ruut, sisselülitatuna - ümmargune.</translation>
         <translation>Selle võtmega verifitseerid oma seadmeid. Kui ta on puhverdatud, siis sinu seadme verifitseerimine märgib selle seadme usaldusväärseks nii sinu muude seadmete kui selliste kasutajate jaoks, kes on sinu verifitseerinud.</translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation>Sõnumi saabumisel näita teavitust.
 See tavaliselt tähendab, et rakenduse ikoon tegumiribal annab mingit sorti animatsiooniga sulle märku.</translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4248,7 +4650,7 @@ See tavaliselt tähendab, et rakenduse ikoon tegumiribal annab mingit sorti anim
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4290,7 +4692,7 @@ Only affects messages in encrypted chats.</source>
 Kehtib vaid läbivalt krüptitud vestluste puhul.</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation>Kui aken kaotab fookuse,
@@ -4346,7 +4748,7 @@ This setting will take effect upon restart.</source>
 Selle funktsionaalsuse jõustumine eeldab rakenduse uuesti käivitamist.</translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation>Vali fail</translation>
     </message>
@@ -4498,7 +4900,7 @@ Selle funktsionaalsuse jõustumine eeldab rakenduse uuesti käivitamist.</transl
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation>Eile</translation>
     </message>
@@ -4552,7 +4954,7 @@ Selle funktsionaalsuse jõustumine eeldab rakenduse uuesti käivitamist.</transl
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation>Sa saatsid helifaili</translation>
     </message>
@@ -4613,16 +5015,28 @@ Selle funktsionaalsuse jõustumine eeldab rakenduse uuesti käivitamist.</transl
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation>Sina: %1</translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation>%1: %2</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation>Sa saatsid krüptitud sõnumi</translation>
     </message>
@@ -4661,6 +5075,16 @@ Selle funktsionaalsuse jõustumine eeldab rakenduse uuesti käivitamist.</transl
         <source>%1 ended a call</source>
         <translation>%1 lõpetas kõne</translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_fi.ts b/resources/langs/nheko_fi.ts
index d720082f..df590bce 100644
--- a/resources/langs/nheko_fi.ts
+++ b/resources/langs/nheko_fi.ts
@@ -89,12 +89,12 @@
         <translation>Poista tämä alias</translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation>#uusi-alias:palvelin.tld</translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation>Lisää</translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation>
             <numerusform>%1 ja %n muu</numerusform>
@@ -208,7 +208,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation>Koko näyttö</translation>
     </message>
@@ -222,22 +222,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation>Kutsuttiin käyttäjä: %1</translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation>Levylläsi oleva välimuisti on uudempaa kuin mitä tämä Nhekon versio tukee. Päivitä Nheko tai poista välimuistisi.</translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation>Tietokannan avaaminen epäonnistui, kirjaudutaan ulos!</translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation>Koputa huoneeseen</translation>
     </message>
@@ -263,12 +275,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation>Vahvista kutsu</translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation>Haluatko varmasti kutsua %1 (%2)?</translation>
     </message>
@@ -313,12 +325,12 @@
         <translation>Purettiin porttikielto käyttäjältä %1</translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation>Haluatko luoda yksityisen keskustelun käyttäjän %1 kanssa?</translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation>Välimuistin siirto epäonnistui!</translation>
     </message>
@@ -333,7 +345,7 @@
         <translation>Yhteensopimaton välimuistin versio</translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation>OLM-tilin palauttaminen epäonnistui. Ole hyvä ja kirjaudu sisään uudelleen.</translation>
     </message>
@@ -345,13 +357,13 @@
         <translation>Tallennettujen tietojen palauttaminen epäonnistui. Ole hyvä ja kirjaudu sisään uudelleen.</translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation>Salausavainten lähetys epäonnistui. Palvelimen vastaus: %1 %2. Ole hyvä ja yritä uudelleen myöhemmin.</translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation>Ole hyvä ja yritä kirjautua sisään uudelleen: %1</translation>
     </message>
@@ -414,6 +426,305 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -459,7 +770,7 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation>
         <translation>Näytä suorat keskustelut.</translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation>Suosikit</translation>
     </message>
@@ -649,7 +960,7 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation>Salaisuuksien salauksen purku</translation>
     </message>
@@ -893,7 +1204,7 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation>Piilotettujen tapahtumien asettaminen epäonnistui: %1</translation>
@@ -1108,7 +1419,7 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation>
         <translation>Kaikki Tiedostot (*)</translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation>Tiedoston &quot;%1&quot; lähetys epäonnistui</translation>
     </message>
@@ -1168,7 +1479,7 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation>Poistu huoneesta</translation>
     </message>
@@ -1250,7 +1561,7 @@ Esimerkki: https://palvelime.ni:8787</translation>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation>Väärä Matrix-tunnus. Esim.  @joe:matrix.org</translation>
@@ -1356,7 +1667,17 @@ Esimerkki: https://palvelime.ni:8787</translation>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+78"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+162"/>
         <source>%1 removed a message</source>
         <translation>%1 poisti viestin</translation>
     </message>
@@ -1432,16 +1753,27 @@ Esimerkki: https://palvelime.ni:8787</translation>
     </message>
     <message>
         <location line="+14"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
         <source>%1 ended the call.</source>
         <translation>%1 päätti puhelun.</translation>
     </message>
     <message>
         <location line="+14"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation>%1 neuvottelee puhelua...</translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation>Päästä hänet sisään</translation>
     </message>
@@ -1459,7 +1791,12 @@ Esimerkki: https://palvelime.ni:8787</translation>
         <translation>Soita puhelu</translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation>Lähetä tiedosto</translation>
     </message>
@@ -1469,7 +1806,7 @@ Esimerkki: https://palvelime.ni:8787</translation>
         <translation>Kirjoita viesti…</translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation>Tarrat</translation>
     </message>
@@ -1492,7 +1829,7 @@ Esimerkki: https://palvelime.ni:8787</translation>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation>Muokkaa</translation>
     </message>
@@ -1522,7 +1859,7 @@ Esimerkki: https://palvelime.ni:8787</translation>
         <translation>Asetukset</translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation>Syy poistamiselle</translation>
     </message>
@@ -1698,8 +2035,8 @@ Esimerkki: https://palvelime.ni:8787</translation>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation>%1 lähetti salatun viestin</translation>
     </message>
@@ -1715,7 +2052,7 @@ Esimerkki: https://palvelime.ni:8787</translation>
         <translation>%1 vastasi salatulla viestillä</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation>%1 vastasi viestiin</translation>
     </message>
@@ -1898,7 +2235,7 @@ Esimerkki: https://palvelime.ni:8787</translation>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation>Oikeustason päivitys epäonnistui: %1</translation>
     </message>
@@ -1914,7 +2251,7 @@ Esimerkki: https://palvelime.ni:8787</translation>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation>Muut tapahtumat</translation>
     </message>
@@ -2085,6 +2422,11 @@ Esimerkki: https://palvelime.ni:8787</translation>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation>Muuta huoneen hymiöitä</translation>
     </message>
@@ -2100,7 +2442,7 @@ Esimerkki: https://palvelime.ni:8787</translation>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation>Luo ainutkertainen profiili, jonka kautta voit kirjautua sisään samanaikaisesti usealla käyttäjällä, sekä käynnistää Nhekosta monta ilmentymää.</translation>
     </message>
@@ -2142,6 +2484,21 @@ Esimerkki: https://palvelime.ni:8787</translation>
         <source>type</source>
         <translation>tyyppi</translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished">Lähetä</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished">Kirjoita viesti…</translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2154,7 +2511,7 @@ Esimerkki: https://palvelime.ni:8787</translation>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation>Eilen, %1</translation>
     </message>
@@ -2228,7 +2585,7 @@ Esimerkki: https://palvelime.ni:8787</translation>
         <translation>REKISTERÖIDY</translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation>Palvelimen tietojen hakeminen epäonnistui: virheellinen vastaus.</translation>
     </message>
@@ -2322,7 +2679,7 @@ Esimerkki: https://palvelime.ni:8787</translation>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation>ei tallennettua versiota</translation>
     </message>
@@ -2346,6 +2703,11 @@ Esimerkki: https://palvelime.ni:8787</translation>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation>Poistu huoneesta</translation>
     </message>
@@ -2756,7 +3118,7 @@ Huomaathan ettei sitä voida poistaa käytöstä myöhemmin.</translation>
         <translation>näytä enemmän</translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation>Salauksen aktivointi epäonnistui: %1</translation>
     </message>
@@ -2890,7 +3252,7 @@ Huomaathan ettei sitä voida poistaa käytöstä myöhemmin.</translation>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation>Salattuun tallennustilaan ei saatu yhteyttä</translation>
     </message>
@@ -2988,7 +3350,7 @@ Jos valitset vahvistamisen, toisen laitteen on oltava saatavilla. Jos valitset s
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation>Kuvapakkausta %1 ei onnistuttu päivittämään</translation>
@@ -3101,19 +3463,19 @@ Jos valitset vahvistamisen, toisen laitteen on oltava saatavilla. Jos valitset s
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation>Viestin muokkaus epäonnistui: %1</translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation>Tapahtuman salaus epäonnistui, lähetys keskeytetään!</translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation>Tallenna kuva</translation>
     </message>
@@ -3133,7 +3495,7 @@ Jos valitset vahvistamisen, toisen laitteen on oltava saatavilla. Jos valitset s
         <translation>Tallenna tiedosto</translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation>
@@ -3402,7 +3764,7 @@ Reason: %4</source>
 Syy: %4</translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation>%2 perui käyttäjän %1 kutsun.</translation>
     </message>
@@ -3462,17 +3824,17 @@ Syy: %4</translation>
         <translation>%1 perui koputuksensa.</translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation>Liityit tähän huoneeseen.</translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation>%1 teki tämän huoneen vaatimaan kutsun liittymiseen.</translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation>%1 kutsui käyttäjän %2.</translation>
     </message>
@@ -3506,7 +3868,7 @@ Syy: %4</translation>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation>Muokattu</translation>
     </message>
@@ -3519,12 +3881,12 @@ Syy: %4</translation>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation>Yhtäkään huonetta ei ole avattu</translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation>Esikatselu ei saatavilla</translation>
     </message>
@@ -3570,22 +3932,22 @@ Syy: %4</translation>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation>Takaisin huonelistaan</translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation>Ei valittua huonetta</translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation>Osa yhteisöä %1</translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation>Näytä huoneen jäsenet.</translation>
     </message>
@@ -3605,12 +3967,17 @@ Syy: %4</translation>
         <translation>Tämä huone sisältää varmentamattomia laitteita!</translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation>Näytä tai piilota kiinnitetyt viestit</translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation>Huoneen asetukset</translation>
     </message>
@@ -3639,6 +4006,11 @@ Syy: %4</translation>
         <source>Unpin</source>
         <translation>Poista kiinnitys</translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3681,7 +4053,7 @@ Syy: %4</translation>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation>
             <numerusform>Lähetä tiedosto</numerusform>
@@ -3816,8 +4188,8 @@ Syy: %4</translation>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation>Oletus</translation>
     </message>
@@ -3825,7 +4197,7 @@ Syy: %4</translation>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation>Teema</translation>
     </message>
@@ -3861,6 +4233,11 @@ Syy: %4</translation>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation>Käytä kuplan muotoisia viestejä</translation>
     </message>
@@ -3935,7 +4312,17 @@ Syy: %4</translation>
         <translation>Pura viestien salaus sivupalkissa</translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation>Yksityisyysnäkymä</translation>
     </message>
@@ -4125,7 +4512,7 @@ Syy: %4</translation>
         <translation>Paljasta huonetiedot D-Bus:in kautta</translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation>Oletus</translation>
     </message>
@@ -4172,6 +4559,11 @@ Kun poissa päältä, kaikki viestit lähetetään tavallisena tekstinä.</trans
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation>Viestit saavat kuplan muotoisen taustan. Aiheuttaa myös asettelumuutoksia (työn alla).</translation>
     </message>
@@ -4211,10 +4603,20 @@ POIS - neliö, PÄÄLLÄ - ympyrä.</translation>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation>Valitse, missä yhteisön tai tagin ilmoitusten kokonaismäärä näytetään.</translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation>Vastaa automaattisesti muiden vahvistettujen käyttäjien avainpyyntöihin, vaikka kyseisellä laitteella ei muuten pitäisi olla pääsyä avaimiin.</translation>
@@ -4225,24 +4627,24 @@ POIS - neliö, PÄÄLLÄ - ympyrä.</translation>
         <translation>Omien laitteidesi vahvistamiseen käytettävä avain. Jos avain on välimuistissa, jonkun laitteesi vahvistus tekee siitä vahvistetun kaikille muille laitteillesi, ja käyttäjille, jotka ovat vahvistaneet sinut.</translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation>Näytä hälytys kun viesti on vastaanotettu.
 Tämä yleensä saa sovelluksen kuvakkeen liikkumaan jollain tapaa tehtäväpalkissa.</translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation>Yhteisösivupalkki</translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation>Näytä yhteisöjen ja tagien viestimäärät</translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation>Aseta viestien maksimileveys aikajanalla (pikseleinä). Voi auttaa luettavuudessa, kun Nheko on suurennettuna</translation>
     </message>
@@ -4252,7 +4654,7 @@ Tämä yleensä saa sovelluksen kuvakkeen liikkumaan jollain tapaa tehtäväpalk
         <translation>Näytä yhteisöt ja tagit sisältävä sarake huonelistan vieressä.</translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4296,7 +4698,7 @@ Only affects messages in encrypted chats.</source>
 Vaikuttaa vain salattujen keskustelujen viesteihin.</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation>Kun ikkuna ei ole kohdistettuna, tämä aikajana
@@ -4352,7 +4754,7 @@ This setting will take effect upon restart.</source>
 Tämä asetus tulee voimaan uudelleenkäynnistyksen jälkeen.</translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation>Valitse tiedosto</translation>
     </message>
@@ -4504,7 +4906,7 @@ Tämä asetus tulee voimaan uudelleenkäynnistyksen jälkeen.</translation>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation>Eilen</translation>
     </message>
@@ -4558,7 +4960,7 @@ Tämä asetus tulee voimaan uudelleenkäynnistyksen jälkeen.</translation>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation>Lähetit äänileikkeen</translation>
     </message>
@@ -4619,16 +5021,28 @@ Tämä asetus tulee voimaan uudelleenkäynnistyksen jälkeen.</translation>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation>Sinä: %1</translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation>%1: %2</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation>Lähetit salatun viestin</translation>
     </message>
@@ -4667,6 +5081,16 @@ Tämä asetus tulee voimaan uudelleenkäynnistyksen jälkeen.</translation>
         <source>%1 ended a call</source>
         <translation>%1 lopetti puhelun</translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_fr.ts b/resources/langs/nheko_fr.ts
index 05b3140b..840e417b 100644
--- a/resources/langs/nheko_fr.ts
+++ b/resources/langs/nheko_fr.ts
@@ -89,12 +89,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation type="unfinished">Ajouter</translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation>
             <numerusform>%1 et %n autre</numerusform>
@@ -208,7 +208,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation>Tout l&apos;écran</translation>
     </message>
@@ -222,22 +222,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation>Utilisateur %1 invité(e)</translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation>Le cache sur votre disque a été créé avec une version de Nheko plus récente que la vôtre. Veuillez mettre Nheko à jour ou vider votre cache.</translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
-        <translation>Impossible d&apos;ouvrir la base de données, déconnexion !</translation>
+        <translation>Impossible d&apos;ouvrir la base de données, déconnexion&#x202f;!</translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation>Frapper à la porte</translation>
     </message>
@@ -263,14 +275,14 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation>Confirmer l&apos;invitation</translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
-        <translation>Voulez-vous vraiment inviter %1 (%2) ?</translation>
+        <translation>Voulez-vous vraiment inviter %1 (%2)&#x202f;?</translation>
     </message>
     <message>
         <location line="+12"/>
@@ -300,7 +312,7 @@
     <message>
         <location line="+1"/>
         <source>Do you really want to unban %1 (%2)?</source>
-        <translation>Voulez-vous vraiment annuler le bannissement de %1 (%2) ?</translation>
+        <translation>Voulez-vous vraiment annuler le bannissement de %1 (%2)&#x202f;?</translation>
     </message>
     <message>
         <location line="+10"/>
@@ -313,14 +325,14 @@
         <translation>%1 n&apos;est plus banni(e)</translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation>Voulez-vous vraiment commencer une discussion privée avec %1 ?</translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
-        <translation>Échec de la migration du cache !</translation>
+        <translation>Échec de la migration du cache&#x202f;!</translation>
     </message>
     <message>
         <location line="+1"/>
@@ -333,7 +345,7 @@
         <translation>Version du cache incompatible</translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation>Échec de la restauration du compte OLM. Veuillez vous reconnecter.</translation>
     </message>
@@ -345,13 +357,13 @@
         <translation>Échec de la restauration des données sauvegardées. Veuillez vous reconnecter.</translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation>Échec de la configuration des clés de chiffrement. Réponse du serveur&#xa0;: %1 %2. Veuillez réessayer plus tard.</translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation>Veuillez re-tenter vous reconnecter&#xa0;: %1</translation>
     </message>
@@ -369,7 +381,7 @@ You may optionally provide a reason for others to accept your knock:</source>
     <message>
         <location line="+9"/>
         <source>Failed to remove invite: %1</source>
-        <translation>Impossible de supprimer l&apos;invitation : %1</translation>
+        <translation>Impossible de supprimer l&apos;invitation&#x202f;: %1</translation>
     </message>
     <message>
         <location line="+27"/>
@@ -394,7 +406,7 @@ You may optionally provide a reason for others to accept your knock:</source>
     <message>
         <location line="+15"/>
         <source>Failed to kick %1 from %2: %3</source>
-        <translation>Échec de l&apos;expulsion de %1 de %2  : %3</translation>
+        <translation>Échec de l&apos;expulsion de %1 de %2&#x202f;&#x202f;: %3</translation>
     </message>
     <message>
         <location line="+13"/>
@@ -413,6 +425,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -458,7 +769,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation>Montrer les messages privés.</translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation>Favoris</translation>
     </message>
@@ -648,7 +959,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation>Déchiffrer les secrets</translation>
     </message>
@@ -683,17 +994,17 @@ You may optionally provide a reason for others to accept your knock:</source>
     <message>
         <location line="+8"/>
         <source>Please verify the following digits. You should see the same numbers on both sides. If they differ, please press &apos;They do not match!&apos; to abort verification!</source>
-        <translation>Veuillez vérifier les chiffres suivants. Vous devriez voir les mêmes chiffres des deux côtés. Si ceux-ci diffèrent, veuillez choisir « Ils sont différents ! » pour annuler la vérification !</translation>
+        <translation>Veuillez vérifier les chiffres suivants. Vous devriez voir les mêmes chiffres des deux côtés. Si ceux-ci diffèrent, veuillez choisir «&#x202f;Ils sont différents&#x202f;!&#x202f;» pour annuler la vérification&#x202f;!</translation>
     </message>
     <message>
         <location line="+33"/>
         <source>They do not match!</source>
-        <translation>Ils sont différents !</translation>
+        <translation>Ils sont différents&#x202f;!</translation>
     </message>
     <message>
         <location line="+13"/>
         <source>They match!</source>
-        <translation>Ils sont identiques !</translation>
+        <translation>Ils sont identiques&#x202f;!</translation>
     </message>
 </context>
 <context>
@@ -754,7 +1065,7 @@ You may optionally provide a reason for others to accept your knock:</source>
     <message>
         <location line="+8"/>
         <source>Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press &apos;They do not match!&apos; to abort verification!</source>
-        <translation>Veuillez vérifier les émoji suivants. Vous devriez voir les mêmes émoji des deux côtés. S&apos;ils diffèrent, veuillez choisir « Ils sont différents ! » pour annuler la vérification !</translation>
+        <translation>Veuillez vérifier les émoji suivants. Vous devriez voir les mêmes émoji des deux côtés. S&apos;ils diffèrent, veuillez choisir « Ils sont différents&#x202f;!&#x202f;» pour annuler la vérification&#x202f;!</translation>
     </message>
     <message>
         <location line="+379"/>
@@ -764,12 +1075,12 @@ You may optionally provide a reason for others to accept your knock:</source>
     <message>
         <location line="+10"/>
         <source>They do not match!</source>
-        <translation>Ils sont différents !</translation>
+        <translation>Ils sont différents&#x202f;!</translation>
     </message>
     <message>
         <location line="+13"/>
         <source>They match!</source>
-        <translation>Ils sont identiques !</translation>
+        <translation>Ils sont identiques&#x202f;!</translation>
     </message>
 </context>
 <context>
@@ -820,7 +1131,7 @@ You may optionally provide a reason for others to accept your knock:</source>
     <message>
         <location filename="../qml/EncryptionIndicator.qml" line="+56"/>
         <source>This message is not encrypted!</source>
-        <translation>Ce message n&apos;est pas chiffré !</translation>
+        <translation>Ce message n&apos;est pas chiffré&#x202f;!</translation>
     </message>
     <message>
         <location line="+4"/>
@@ -853,7 +1164,7 @@ You may optionally provide a reason for others to accept your knock:</source>
     <message>
         <location line="+4"/>
         <source>Key mismatch detected!</source>
-        <translation>Clés non correspondantes détectées !</translation>
+        <translation>Clés non correspondantes détectées&#x202f;!</translation>
     </message>
     <message>
         <location line="+2"/>
@@ -868,7 +1179,7 @@ You may optionally provide a reason for others to accept your knock:</source>
     <message>
         <location line="+2"/>
         <source>Verification messages received out of order!</source>
-        <translation>Messages de vérification reçus dans le désordre !</translation>
+        <translation>Messages de vérification reçus dans le désordre&#x202f;!</translation>
     </message>
     <message>
         <location line="+2"/>
@@ -892,7 +1203,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation>Impossible de modifier les évènements cachés : %1</translation>
@@ -1107,7 +1418,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation>Tous les types de fichiers (*)</translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1167,7 +1478,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation>Quitter le salon</translation>
     </message>
@@ -1246,10 +1557,10 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
-        <translation>Vous avez entré un identifiant Matrix invalide  exemple correct : @moi:monserveur.example.com)</translation>
+        <translation>Vous avez entré un identifiant Matrix invalide  exemple correct&#x202f;: @moi:monserveur.example.com)</translation>
     </message>
     <message>
         <location line="-156"/>
@@ -1332,12 +1643,12 @@ Example: https://server.my:8787</source>
     <message>
         <location line="+1"/>
         <source>A call is in progress. Log out?</source>
-        <translation>Un appel est en cours. Se déconnecter ?</translation>
+        <translation>Un appel est en cours. Se déconnecter&#x202f;?</translation>
     </message>
     <message>
         <location line="+0"/>
         <source>Are you sure you want to log out?</source>
-        <translation>Êtes-vous certain de vouloir vous déconnecter ?</translation>
+        <translation>Êtes-vous certain de vouloir vous déconnecter&#x202f;?</translation>
     </message>
 </context>
 <context>
@@ -1352,7 +1663,17 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+78"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+162"/>
         <source>%1 removed a message</source>
         <translation>%1 a effacé un message</translation>
     </message>
@@ -1428,16 +1749,27 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+14"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
         <source>%1 ended the call.</source>
         <translation>%1 a terminé l&apos;appel.</translation>
     </message>
     <message>
         <location line="+14"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation>%1 est en train de négocier l&apos;appel...</translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation>Les laisser entrer</translation>
     </message>
@@ -1455,7 +1787,12 @@ Example: https://server.my:8787</source>
         <translation>Appeler</translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation>Envoyer un fichier</translation>
     </message>
@@ -1465,7 +1802,7 @@ Example: https://server.my:8787</source>
         <translation>Écrivez un message…</translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation>Autocollants</translation>
     </message>
@@ -1488,7 +1825,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation>Modifier</translation>
     </message>
@@ -1518,7 +1855,7 @@ Example: https://server.my:8787</source>
         <translation>Options</translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation>Raison de la suppression</translation>
     </message>
@@ -1694,8 +2031,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation>%1 a envoyé un message chiffré</translation>
     </message>
@@ -1711,7 +2048,7 @@ Example: https://server.my:8787</source>
         <translation>%1 a répondu avec un message chiffré</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation>%1 a répondu à un message</translation>
     </message>
@@ -1726,7 +2063,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../qml/voip/PlaceCall.qml" line="+41"/>
         <source>Place a call to %1?</source>
-        <translation>Appeler %1 ?</translation>
+        <translation>Appeler %1&#x202f;?</translation>
     </message>
     <message>
         <location line="+16"/>
@@ -1894,7 +2231,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1910,7 +2247,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2081,6 +2418,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2096,7 +2438,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2138,6 +2480,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished">Envoyer</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished">Écrivez un message…</translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2150,7 +2507,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation>Hier, %1</translation>
     </message>
@@ -2224,7 +2581,7 @@ Example: https://server.my:8787</source>
         <translation>S&apos;ENREGISTRER</translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation>Échec de la découverte automatique. Réponse mal formée reçue.</translation>
     </message>
@@ -2318,7 +2675,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation>pas de version enregistrée</translation>
     </message>
@@ -2342,6 +2699,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation>Quitter le salon</translation>
     </message>
@@ -2752,7 +3114,7 @@ Veuillez noter qu&apos;il ne pourra plus être désactivé par la suite.</transl
         <translation>montrer plus</translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation>Échec de l&apos;activation du chiffrement&#xa0;: %1</translation>
     </message>
@@ -2834,17 +3196,17 @@ Veuillez noter qu&apos;il ne pourra plus être désactivé par la suite.</transl
     <message>
         <location filename="../qml/voip/ScreenShare.qml" line="+29"/>
         <source>Share desktop with %1?</source>
-        <translation>Partager le bureau avec %1  ?</translation>
+        <translation>Partager le bureau avec %1&#x202f;&#x202f;?</translation>
     </message>
     <message>
         <location line="+11"/>
         <source>Window:</source>
-        <translation>Fenêtre :</translation>
+        <translation>Fenêtre&#x202f;:</translation>
     </message>
     <message>
         <location line="+20"/>
         <source>Frame rate:</source>
-        <translation>Fréquence d&apos;images :</translation>
+        <translation>Fréquence d&apos;images&#x202f;:</translation>
     </message>
     <message>
         <location line="+19"/>
@@ -2886,14 +3248,14 @@ Veuillez noter qu&apos;il ne pourra plus être désactivé par la suite.</transl
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation>Échec de la connexion au stockage des secrets</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Nheko could not connect to the secure storage to save encryption secrets to. This can have multiple reasons. Check if your D-Bus service is running and you have configured a service like KWallet, Gnome Keyring, KeePassXC or the equivalent for your platform. If you are having trouble, feel free to open an issue here: https://github.com/Nheko-Reborn/nheko/issues</source>
-        <translation>Nheko n&apos;a pas pu se connecter au stockage sécurisé afin d&apos;y sauvegarder les clés de chiffrement. Cela peut avoir différentes causes. Vérifiez si votre service D-Bus est lancé, et si vous avez configuré un service tel que KWallet ; Gnome Keyring ; KeePassXC ou l&apos;équivalent pour votre système. Si vous n&apos;arrivez pas à résoudre le problème, n&apos;hésitez pas à nous en faire part ici : https ://github.com/Nheko-Reborn/nheko/issues</translation>
+        <translation>Nheko n&apos;a pas pu se connecter au stockage sécurisé afin d&apos;y sauvegarder les clés de chiffrement. Cela peut avoir différentes causes. Vérifiez si votre service D-Bus est lancé, et si vous avez configuré un service tel que KWallet&#x202f;; Gnome Keyring&#x202f;; KeePassXC ou l&apos;équivalent pour votre système. Si vous n&apos;arrivez pas à résoudre le problème, n&apos;hésitez pas à nous en faire part ici&#x202f;: https&#x202f;://github.com/Nheko-Reborn/nheko/issues</translation>
     </message>
 </context>
 <context>
@@ -2901,7 +3263,7 @@ Veuillez noter qu&apos;il ne pourra plus être désactivé par la suite.</transl
     <message>
         <location filename="../qml/SelfVerificationCheck.qml" line="+40"/>
         <source>This is your recovery key. You will need it to restore access to your encrypted messages and verification keys. Keep this safe. Don&apos;t share it with anyone and don&apos;t lose it! Do not pass go! Do not collect $200!</source>
-        <translation>Ceci est votre clé de récupération. Vous en aurez besoin afin de restaurer l&apos;accès à vos messages chiffrés et à vos clés de vérification. Gardez cette clé en sûreté. Ne la partagez pas avec qui que ce soit et ne la perdez pas ! Ne passez pas par la case départ et ne recevez pas 20 000 francs !</translation>
+        <translation>Ceci est votre clé de récupération. Vous en aurez besoin afin de restaurer l&apos;accès à vos messages chiffrés et à vos clés de vérification. Gardez cette clé en sûreté. Ne la partagez pas avec qui que ce soit et ne la perdez pas&#x202f;! Ne passez pas par la case départ et ne recevez pas 20 000 francs&#x202f;!</translation>
     </message>
     <message>
         <location line="+33"/>
@@ -2922,8 +3284,8 @@ Veuillez noter qu&apos;il ne pourra plus être désactivé par la suite.</transl
         <location line="+10"/>
         <source>Hello and welcome to Matrix!
 It seems like you are new. Before you can securely encrypt your messages, we need to setup a few small things. You can either press accept immediately or adjust a few basic options. We also try to explain a few of the basics. You can skip those parts, but they might prove to be helpful!</source>
-        <translation>Bonjour et bienvenue sur le réseau Matrix !
-Il semblerait que ce soit votre première fois ici. Avant de pouvoir chiffrer vos messages de manière sécurisée, nous devons configurer quelques détails. Vous pouvez soit accepter immédiatement, soit ajuster quelques options basiques. Nous essayons également d&apos;expliquer le fonctionnement de certains mécanismes. Vous pouvez sauter ces étapes, mais celles-ci pourraient se montrer utiles par la suite !</translation>
+        <translation>Bonjour et bienvenue sur le réseau Matrix&#x202f;!
+Il semblerait que ce soit votre première fois ici. Avant de pouvoir chiffrer vos messages de manière sécurisée, nous devons configurer quelques détails. Vous pouvez soit accepter immédiatement, soit ajuster quelques options basiques. Nous essayons également d&apos;expliquer le fonctionnement de certains mécanismes. Vous pouvez sauter ces étapes, mais celles-ci pourraient se montrer utiles par la suite&#x202f;!</translation>
     </message>
     <message>
         <location line="+124"/>
@@ -2953,17 +3315,17 @@ Si vous choisissez de vérifier, vous aurez besoin de l&apos;autre appareil. Si
     <message>
         <location filename="../../src/encryption/SelfVerificationStatus.cpp" line="+46"/>
         <source>Failed to create keys for cross-signing!</source>
-        <translation>Échec de la création des clés pour l&apos;auto-vérification (cross-signing) !</translation>
+        <translation>Échec de la création des clés pour l&apos;auto-vérification (cross-signing)&#x202f;!</translation>
     </message>
     <message>
         <location line="+16"/>
         <source>Failed to create keys for online key backup!</source>
-        <translation>Échec de la création de clés pour la sauvegarde en ligne !</translation>
+        <translation>Échec de la création de clés pour la sauvegarde en ligne&#x202f;!</translation>
     </message>
     <message>
         <location line="+29"/>
         <source>Failed to create keys for secure server side secret storage!</source>
-        <translation>Échec de la création des clés pour le stockage sécurisé côté serveur !</translation>
+        <translation>Échec de la création des clés pour le stockage sécurisé côté serveur&#x202f;!</translation>
     </message>
     <message>
         <location line="+44"/>
@@ -2973,7 +3335,7 @@ Si vous choisissez de vérifier, vous aurez besoin de l&apos;autre appareil. Si
     <message>
         <location line="+6"/>
         <source>Encryption setup failed: %1</source>
-        <translation>Échec de la configuration du chiffrement : %1</translation>
+        <translation>Échec de la configuration du chiffrement&#x202f;: %1</translation>
     </message>
     <message>
         <location line="+156"/>
@@ -2984,7 +3346,7 @@ Si vous choisissez de vérifier, vous aurez besoin de l&apos;autre appareil. Si
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation>Échec de la mise à jour du paquet d&apos;images : %1</translation>
@@ -3086,7 +3448,7 @@ Si vous choisissez de vérifier, vous aurez besoin de l&apos;autre appareil. Si
     <message>
         <location line="+10"/>
         <source>Verification successful! Both sides verified their devices!</source>
-        <translation>Vérification réussie !  Les deux côtés ont vérifié leur appareil !</translation>
+        <translation>Vérification réussie&#x202f;!  Les deux côtés ont vérifié leur appareil&#x202f;!</translation>
     </message>
     <message>
         <location line="+14"/>
@@ -3097,19 +3459,19 @@ Si vous choisissez de vérifier, vous aurez besoin de l&apos;autre appareil. Si
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation>Échec de la suppression du message&#xa0;: %1</translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
-        <translation>Échec du chiffrement de l&apos;évènement, envoi abandonné !</translation>
+        <translation>Échec du chiffrement de l&apos;évènement, envoi abandonné&#x202f;!</translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation>Enregistrer l&apos;image</translation>
     </message>
@@ -3129,7 +3491,7 @@ Si vous choisissez de vérifier, vous aurez besoin de l&apos;autre appareil. Si
         <translation>Enregistrer le fichier</translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation>
@@ -3398,7 +3760,7 @@ Reason: %4</source>
 Raison : %4</translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation>%2 a révoqué l&apos;invitation à %1.</translation>
     </message>
@@ -3458,17 +3820,17 @@ Raison : %4</translation>
         <translation>%1 a arrêté de toquer.</translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation>Vous avez rejoint ce salon.</translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation>%1 a invité %2.</translation>
     </message>
@@ -3486,7 +3848,7 @@ Raison : %4</translation>
         <location line="+36"/>
         <source>%1 left after having already left!</source>
         <comment>This is a leave event after the user already left and shouldn&apos;t happen apart from state resets</comment>
-        <translation>%1 a quitté le salon après l&apos;avoir déjà quitté !</translation>
+        <translation>%1 a quitté le salon après l&apos;avoir déjà quitté&#x202f;!</translation>
     </message>
     <message>
         <location line="+7"/>
@@ -3502,7 +3864,7 @@ Raison : %4</translation>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation>Modifié</translation>
     </message>
@@ -3515,12 +3877,12 @@ Raison : %4</translation>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation>Aucun salon ouvert</translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation>Aucune prévisualisation disponible</translation>
     </message>
@@ -3566,22 +3928,22 @@ Raison : %4</translation>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation>Revenir à la liste des salons</translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation>Pas de salon sélectionné</translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3601,12 +3963,17 @@ Raison : %4</translation>
         <translation>Ce salon contient des appareils non vérifiés !</translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation>Montrer ou cacher les messages épinglés</translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation>Options du salon</translation>
     </message>
@@ -3635,6 +4002,11 @@ Raison : %4</translation>
         <source>Unpin</source>
         <translation>Désépingler</translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3677,7 +4049,7 @@ Raison : %4</translation>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation>
             <numerusform>Mettre en ligne un fichier</numerusform>
@@ -3812,8 +4184,8 @@ Raison : %4</translation>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation>Défaut</translation>
     </message>
@@ -3821,7 +4193,7 @@ Raison : %4</translation>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation>Thème</translation>
     </message>
@@ -3857,6 +4229,11 @@ Raison : %4</translation>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation>Activer les bulles de message</translation>
     </message>
@@ -3931,7 +4308,17 @@ Raison : %4</translation>
         <translation>Déchiffrer les messages dans la liste des salons</translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation>Protection anti-indiscrétion</translation>
     </message>
@@ -4121,7 +4508,7 @@ Raison : %4</translation>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation>Défaut</translation>
     </message>
@@ -4167,6 +4554,11 @@ Si désactivé, tous les messages sont envoyés comme texte brut.</translation>
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation>L&apos;arrière-plan des messages devient une &quot;bulle&quot;. La disposition change un peu (non abouti).</translation>
     </message>
@@ -4206,10 +4598,20 @@ OFF - carré, ON - circulaire.</translation>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4220,24 +4622,24 @@ OFF - carré, ON - circulaire.</translation>
         <translation>La clef pour vérifier vos propres appareils. Si elle est en cache, vérifier un de vos appareils le marquera comme vérifié pour tous vos autres appareils et pour les utilisateurs qui vous ont vérifié.</translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation>Alerte lorsqu&apos;un message est reçu.
 Typiquement, l&apos;icône de l&apos;application est mise en évidence dans la barre des tâches.</translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4247,7 +4649,7 @@ Typiquement, l&apos;icône de l&apos;application est mise en évidence dans la b
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4287,7 +4689,7 @@ Only affects messages in encrypted chats.</source>
 Cela n&apos;affecte que les messages des salons chiffrés.</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation>Lorsque la fenêtre devient inactive, la discussion devient floutée.</translation>
@@ -4340,7 +4742,7 @@ This setting will take effect upon restart.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation>Sélectionnez un fichier</translation>
     </message>
@@ -4492,7 +4894,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation>Hier</translation>
     </message>
@@ -4546,7 +4948,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation>Vous avez envoyé un message audio</translation>
     </message>
@@ -4607,16 +5009,28 @@ This setting will take effect upon restart.</source>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation>Vous&#xa0;: %1</translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation>%1&#xa0;: %2</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation>Vous avez envoyé un message chiffré</translation>
     </message>
@@ -4655,6 +5069,16 @@ This setting will take effect upon restart.</source>
         <source>%1 ended a call</source>
         <translation>%1 a terminé un appel</translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_hu.ts b/resources/langs/nheko_hu.ts
index eef785d0..3cd297f8 100644
--- a/resources/langs/nheko_hu.ts
+++ b/resources/langs/nheko_hu.ts
@@ -89,12 +89,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation type="unfinished"></translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -207,7 +207,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation>Az egész képernyő</translation>
     </message>
@@ -221,22 +221,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation>A felhasználó meg lett hívva: %1</translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -262,12 +274,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation>Meghívás megerősítése</translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation>Biztos, hogy meg akarod hívni a következő felhasználót: %1 (%2)?</translation>
     </message>
@@ -312,12 +324,12 @@
         <translation>Kitiltás feloldva a felhasználónak: %1</translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation>Biztosan privát csevegést akarsz indítani %1 felhasználóval?</translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation>Gyorsítótár migráció nem sikerült!</translation>
     </message>
@@ -332,7 +344,7 @@
         <translation>Inkompatibilis gyorsítótár-verzió</translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation>Nem sikerült visszaállítani az OLM fiókot. Kérlek, jelentkezz be ismét!</translation>
     </message>
@@ -344,13 +356,13 @@
         <translation>Nem sikerült visszaállítani a mentési adatot. Kérlek, jelentkezz be ismét!</translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation>Nem sikerült beállítani a titkosítási kulcsokat. Válasz a szervertől: %1 %2. Kérlek, próbáld újra később!</translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation>Kérlek, próbálj meg bejelentkezni újra: %1</translation>
     </message>
@@ -412,6 +424,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -457,7 +768,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation type="unfinished"></translation>
     </message>
@@ -646,7 +957,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation>Titkos tároló feloldása</translation>
     </message>
@@ -890,7 +1201,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation type="unfinished"></translation>
@@ -1105,7 +1416,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation>Minden fájl (*)</translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1165,7 +1476,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation type="unfinished">Szoba elhagyása</translation>
     </message>
@@ -1244,7 +1555,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation>Érvénytelen Matrixazonosítót adtál meg. Példa: @janos:matrix.org</translation>
@@ -1350,7 +1661,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+246"/>
         <source>%1 removed a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1415,27 +1726,48 @@ Example: https://server.my:8787</source>
         <translation>%1 hívást kezdeményezett.</translation>
     </message>
     <message>
-        <location line="+44"/>
+        <location line="+30"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-150"/>
+        <location line="-193"/>
         <source>%1 answered the call.</source>
         <translation>%1 fogadta a hívást.</translation>
     </message>
     <message>
-        <location line="-51"/>
+        <location line="-339"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+282"/>
         <source>%1 changed the parent communities for this room.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+65"/>
+        <location line="+93"/>
         <source>%1 ended the call.</source>
         <translation>%1 befejezte a hívást.</translation>
     </message>
@@ -1453,7 +1785,12 @@ Example: https://server.my:8787</source>
         <translation>Hívás kezdeményezése</translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation>Fájl küldése</translation>
     </message>
@@ -1463,7 +1800,7 @@ Example: https://server.my:8787</source>
         <translation>Írj egy üzenetet…</translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1486,7 +1823,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation>Szerkesztés</translation>
     </message>
@@ -1516,7 +1853,7 @@ Example: https://server.my:8787</source>
         <translation>Műveletek</translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1692,8 +2029,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation>%1 küldött egy titkosított üzenetet</translation>
     </message>
@@ -1709,7 +2046,7 @@ Example: https://server.my:8787</source>
         <translation>%1 egy titkosított üzenettel válaszolt</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation>%1 válaszolt egy üzenetre</translation>
     </message>
@@ -1892,7 +2229,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1908,7 +2245,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2079,6 +2416,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2094,7 +2436,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2136,6 +2478,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished">Küldés</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished">Írj egy üzenetet…</translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2148,7 +2505,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2222,7 +2579,7 @@ Example: https://server.my:8787</source>
         <translation>REGISZTRÁCIÓ</translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation type="unfinished">Az automatikus felderítés nem sikerült. Helytelen válasz érkezett.</translation>
     </message>
@@ -2316,7 +2673,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation>nincs tárolva verzió</translation>
     </message>
@@ -2340,6 +2697,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation type="unfinished">Szoba elhagyása</translation>
     </message>
@@ -2747,7 +3109,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation>Nem sikerült a titkosítás aktiválása: %1</translation>
     </message>
@@ -2881,7 +3243,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2977,7 +3339,7 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation type="unfinished"></translation>
@@ -3090,19 +3452,19 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation>Az üzenet visszavonása nem sikerült: %1</translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation>Nem sikerült titkosítani az eseményt, küldés megszakítva!</translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation>Kép mentése</translation>
     </message>
@@ -3122,7 +3484,7 @@ If you choose verify, you need to have the other device available. If you choose
         <translation>Fájl mentése</translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation>
@@ -3385,7 +3747,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3445,17 +3807,17 @@ Reason: %4</source>
         <translation>%1 visszavonta a kopogását.</translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation>Csatlakoztál ehhez a szobához.</translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3489,7 +3851,7 @@ Reason: %4</source>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation>Szerkesztve</translation>
     </message>
@@ -3502,12 +3864,12 @@ Reason: %4</source>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation>Nincs nyitott szoba</translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3552,22 +3914,22 @@ Reason: %4</source>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation>Vissza a szobák listájára</translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation>Nincs kiválasztva szoba</translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3587,12 +3949,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation>Szoba beállításai</translation>
     </message>
@@ -3621,6 +3988,11 @@ Reason: %4</source>
         <source>Unpin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3663,7 +4035,7 @@ Reason: %4</source>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -3797,8 +4169,8 @@ Reason: %4</source>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation>Alapértelmezett</translation>
     </message>
@@ -3806,7 +4178,7 @@ Reason: %4</source>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation type="unfinished">Téma</translation>
     </message>
@@ -3842,6 +4214,11 @@ Reason: %4</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3916,7 +4293,17 @@ Reason: %4</source>
         <translation type="unfinished">Titkosított üzenetek mutatása az oldalsávban</translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation type="unfinished">Idővonal automatikus kitakarása</translation>
     </message>
@@ -4106,7 +4493,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation type="unfinished">Alapértelmezett</translation>
     </message>
@@ -4154,6 +4541,11 @@ Ha ki van kapcsolva, az összes üzenet sima szövegként lesz elküldve.</trans
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4192,10 +4584,20 @@ OFF - square, ON - circle.</source>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4206,24 +4608,24 @@ OFF - square, ON - circle.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation type="unfinished">Riasztás megjelenítése, ha üzenet érkezett.
 Ettől általában animálttá válik az alkalmazásablakok listáján szereplő ikon.</translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4233,7 +4635,7 @@ Ettől általában animálttá válik az alkalmazásablakok listáján szereplő
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4271,7 +4673,7 @@ Only affects messages in encrypted chats.</source>
 Csak a titkosított csevegések üzeneteire vonatkozik.</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation type="unfinished">Amikor az ablak elveszíti a fókuszt,
@@ -4325,7 +4727,7 @@ This setting will take effect upon restart.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation type="unfinished">Fájl kiválasztása</translation>
     </message>
@@ -4477,7 +4879,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation>Tegnap</translation>
     </message>
@@ -4531,7 +4933,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation>Küldtél egy hangfájlt</translation>
     </message>
@@ -4592,16 +4994,28 @@ This setting will take effect upon restart.</source>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation>Te: %1</translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation>%1: %2</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation>Küldtél egy titkosított üzenetet</translation>
     </message>
@@ -4640,6 +5054,16 @@ This setting will take effect upon restart.</source>
         <source>%1 ended a call</source>
         <translation>%1 befejezett egy hívást</translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_id.ts b/resources/langs/nheko_id.ts
index bef83d1d..221de332 100644
--- a/resources/langs/nheko_id.ts
+++ b/resources/langs/nheko_id.ts
@@ -89,12 +89,12 @@
         <translation>Hapus alias ini</translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation>#alias-baru:server.tld</translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation>Tambahkan</translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation>
             <numerusform>%1 dan %n lainnya</numerusform>
@@ -207,7 +207,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation>Semua layar</translation>
     </message>
@@ -221,22 +221,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation>Pengguna yang diundang: %1</translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation>Tembolok pada diskmu lebih baru daripada versi yang didukung Nheko ini. Harap perbarui Nheko atau bersihkan tembolokmu.</translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation>Gagal untuk membuka basisdata, kamu telah dikeluarkan!</translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation>Ketuk pada ruangan</translation>
     </message>
@@ -262,12 +274,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation>Konfirmasi undangan</translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation>Apakah kamu ingin mengundang %1 (%2)?</translation>
     </message>
@@ -312,12 +324,12 @@
         <translation>Menghilangkan cekalan pengguna: %1</translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation>Apakah kamu ingin memulai chat privat dengan %1?</translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation>Migrasi tembolok gagal!</translation>
     </message>
@@ -332,7 +344,7 @@
         <translation>Versi tembolok tidak kompatibel</translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation>Gagal memulihkan akun OLM. Mohon masuk lagi.</translation>
     </message>
@@ -344,13 +356,13 @@
         <translation>Gagal memulihkan data yang tersimpan. Mohon masuk lagi.</translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation>Gagal menyiapkan kunci enkripsi. Respons server: %1 %2. Silakan coba lagi nanti.</translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation>Mohon mencoba masuk lagi: %1</translation>
     </message>
@@ -413,6 +425,305 @@ Kamu dapat memberikan alasan untuk orang lain untuk menerima ketukanmu:</transla
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -458,7 +769,7 @@ Kamu dapat memberikan alasan untuk orang lain untuk menerima ketukanmu:</transla
         <translation>Tampilkan pesan langsung.</translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation>Favorit</translation>
     </message>
@@ -647,7 +958,7 @@ Kamu dapat memberikan alasan untuk orang lain untuk menerima ketukanmu:</transla
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation>Dekripsi rahasia</translation>
     </message>
@@ -891,7 +1202,7 @@ Kamu dapat memberikan alasan untuk orang lain untuk menerima ketukanmu:</transla
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation>Gagal menetapkan peristiwa tersembunyi: %1</translation>
@@ -1106,7 +1417,7 @@ Kamu dapat memberikan alasan untuk orang lain untuk menerima ketukanmu:</transla
         <translation>Semua File (*)</translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation>Pengunggahan &apos;%1&apos; gagal</translation>
     </message>
@@ -1166,7 +1477,7 @@ Kamu dapat memberikan alasan untuk orang lain untuk menerima ketukanmu:</transla
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation>Tinggalkan ruangan</translation>
     </message>
@@ -1249,7 +1560,7 @@ Contoh: https://server.saya:8787</translation>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation>Kamu telah memasukkan ID Matrix yang tidak valid  mis. @joe:matrix.org</translation>
@@ -1355,7 +1666,7 @@ Contoh: https://server.saya:8787</translation>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+246"/>
         <source>%1 removed a message</source>
         <translation>%1 menghapus sebuah pesan</translation>
     </message>
@@ -1420,27 +1731,48 @@ Contoh: https://server.saya:8787</translation>
         <translation>%1 melakukan panggilan.</translation>
     </message>
     <message>
-        <location line="+44"/>
+        <location line="+30"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation>%1 sedang melakukan panggilan...</translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation>Izinkan mereka untuk masuk</translation>
     </message>
     <message>
-        <location line="-150"/>
+        <location line="-193"/>
         <source>%1 answered the call.</source>
         <translation>%1 menjawab panggilan.</translation>
     </message>
     <message>
-        <location line="-51"/>
+        <location line="-339"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+282"/>
         <source>%1 changed the parent communities for this room.</source>
         <translation>%1 mengubah komunitas induk untuk ruangan.</translation>
     </message>
     <message>
-        <location line="+65"/>
+        <location line="+93"/>
         <source>%1 ended the call.</source>
         <translation>%1 mengakhir panggilan.</translation>
     </message>
@@ -1458,7 +1790,12 @@ Contoh: https://server.saya:8787</translation>
         <translation>Lakukan panggilan</translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation>Kirim sebuah file</translation>
     </message>
@@ -1468,7 +1805,7 @@ Contoh: https://server.saya:8787</translation>
         <translation>Ketik pesan…</translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation>Stiker</translation>
     </message>
@@ -1491,7 +1828,7 @@ Contoh: https://server.saya:8787</translation>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation>Edit</translation>
     </message>
@@ -1521,7 +1858,7 @@ Contoh: https://server.saya:8787</translation>
         <translation>Opsi</translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation>Alasan untuk menghapus</translation>
     </message>
@@ -1697,8 +2034,8 @@ Contoh: https://server.saya:8787</translation>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation>%1 mengirim pesan terenkripsi</translation>
     </message>
@@ -1714,7 +2051,7 @@ Contoh: https://server.saya:8787</translation>
         <translation>%1 membalas dengan pesan terenkripsi</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation>%1 membalas pesan</translation>
     </message>
@@ -1897,7 +2234,7 @@ Contoh: https://server.saya:8787</translation>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation>Gagal memperbarui tingkat daya: %1</translation>
     </message>
@@ -1913,7 +2250,7 @@ Contoh: https://server.saya:8787</translation>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation>Peristiwa lainnya</translation>
     </message>
@@ -2084,6 +2421,11 @@ Contoh: https://server.saya:8787</translation>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation>Mengubah emoji ruangan</translation>
     </message>
@@ -2099,7 +2441,7 @@ Contoh: https://server.saya:8787</translation>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation>Buat sebuah profil unik yang memungkinkan kamu untuk masuk ke beberapa akun secara bersamaan dan mulai beberapa instansi Nheko.</translation>
     </message>
@@ -2141,6 +2483,21 @@ Contoh: https://server.saya:8787</translation>
         <source>type</source>
         <translation>jenis</translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished">Kirim</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished">Ketik pesan…</translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2153,7 +2510,7 @@ Contoh: https://server.saya:8787</translation>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation>Kemarin, %1</translation>
     </message>
@@ -2227,7 +2584,7 @@ Contoh: https://server.saya:8787</translation>
         <translation>DAFTAR</translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation>Penemuan otomatis gagal. Menerima respons cacat.</translation>
     </message>
@@ -2321,7 +2678,7 @@ Contoh: https://server.saya:8787</translation>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation>tidak ada versi yang disimpan</translation>
     </message>
@@ -2345,6 +2702,11 @@ Contoh: https://server.saya:8787</translation>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation>Tinggalkan ruangan</translation>
     </message>
@@ -2753,7 +3115,7 @@ Dicatat bahwa ini tidak dapat dinonaktifkan setelah ini.</translation>
         <translation>tampilkan</translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation>Gagal mengaktifkan enkripsi: %1</translation>
     </message>
@@ -2887,7 +3249,7 @@ Dicatat bahwa ini tidak dapat dinonaktifkan setelah ini.</translation>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation>Gagal menghubungkan ke penyimpanan rahasia</translation>
     </message>
@@ -2985,7 +3347,7 @@ Jika kamu memilih verifikasi, kamu harus memiliki perangkat lain yang tersedia.
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation>Gagal memperbarui paket gambar: %1</translation>
@@ -3098,19 +3460,19 @@ Jika kamu memilih verifikasi, kamu harus memiliki perangkat lain yang tersedia.
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation>Reaksi pesan gagal: %1</translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation>Gagal mendekripsikan peristiwa, pengiriman dihentikan!</translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation>Simpan gambar</translation>
     </message>
@@ -3130,7 +3492,7 @@ Jika kamu memilih verifikasi, kamu harus memiliki perangkat lain yang tersedia.
         <translation>Simpan file</translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation>
@@ -3394,7 +3756,7 @@ Reason: %4</source>
 Alasan: %4</translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation>%2 membatalkan undangan ke %1.</translation>
     </message>
@@ -3454,17 +3816,17 @@ Alasan: %4</translation>
         <translation>%1 menolak ketukannya.</translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation>Kamu bergabung ruangan ini.</translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation>%1 membuat ruangan ini membutuhkan undangan untuk bergabung.</translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation>%1 mengundang %2.</translation>
     </message>
@@ -3498,7 +3860,7 @@ Alasan: %4</translation>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation>Diedit</translation>
     </message>
@@ -3511,12 +3873,12 @@ Alasan: %4</translation>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation>Tidak ada ruangan yang dibuka</translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation>Tidak ada tampilan yang tersedia</translation>
     </message>
@@ -3561,22 +3923,22 @@ Alasan: %4</translation>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation>Kembali ke daftar ruangan</translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation>Tidak ada ruangan yang dipilih</translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation>Dalam %1</translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation>Tampilkan anggota ruangan.</translation>
     </message>
@@ -3596,12 +3958,17 @@ Alasan: %4</translation>
         <translation>Ruangan ini berisi perangkat yang belum diverifikasi!</translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation>Tampilkan atau sembunyikan pesan yang dipasangi pin</translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation>Opsi ruangan</translation>
     </message>
@@ -3630,6 +3997,11 @@ Alasan: %4</translation>
         <source>Unpin</source>
         <translation>Lepaskan pin</translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3672,7 +4044,7 @@ Alasan: %4</translation>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation>
             <numerusform>Unggah %n file</numerusform>
@@ -3806,8 +4178,8 @@ Alasan: %4</translation>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation>Default</translation>
     </message>
@@ -3815,7 +4187,7 @@ Alasan: %4</translation>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation>Tema</translation>
     </message>
@@ -3851,6 +4223,11 @@ Alasan: %4</translation>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation>Aktifkan gelembung pesan</translation>
     </message>
@@ -3925,7 +4302,17 @@ Alasan: %4</translation>
         <translation>Dekripsikan pesan di bilah samping</translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation>Layar Privasi</translation>
     </message>
@@ -4115,7 +4502,7 @@ Alasan: %4</translation>
         <translation>Ekspos informasi ruangan via D-Bus</translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation>Default</translation>
     </message>
@@ -4162,6 +4549,11 @@ Ketika dinonaktifkan, semua pesan akan dikirim sebagai teks biasa.</translation>
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation>Pesan-pesan akan mendapatkan latar belakang gelembung pesan. Ini juga melakukan perubahan layout (dalam pengembangan).</translation>
     </message>
@@ -4201,10 +4593,20 @@ MATI - kotak, NYALA - bulat.</translation>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation>Pilih di mana untuk menampilkan jumlah notifikasi di dalam sebuah komunitas atau tag.</translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation>Secara otomatis membalas permintaan kunci dari pengguna lain jika mereka terverifikasi, bahkan jika perangkat itu seharusnya tidak memiliki akses ke kunci itu bagaimanapun.</translation>
@@ -4215,24 +4617,24 @@ MATI - kotak, NYALA - bulat.</translation>
         <translation>Kunci untuk memverifikasi perangkatmu. Jika disimpan, memverifikasi salah satu perangkatmu akan menandainya sebagai terverifikasi untuk perangkatmu yang lain dan untuk pengguna yang telah memverifikasimu.</translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation>Menampilkan pemberitahuan saat sebuah pesan diterima.
 Ini biasanya menyebabkan ikon aplikasi di bilah tugas untuk beranimasi.</translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation>Bilah samping komunitas</translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation>Tampilkan hitungan pesan untuk komunitas dan tag</translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation>Tetapkan lebar pesan di linimasa (dalam pixel). Ini dapat membantu keterbacaan di layar lebar ketika Nheko dimaksimalkan</translation>
     </message>
@@ -4242,7 +4644,7 @@ Ini biasanya menyebabkan ikon aplikasi di bilah tugas untuk beranimasi.</transla
         <translation>Tampilkan sebuah kolom berisi komunitas dan tag di samping daftar ruangan.</translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4286,7 +4688,7 @@ Only affects messages in encrypted chats.</source>
 Hanya mempengaruhi pesan di chat terenkripsi.</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation>Ketika jendela kehilangan fokus, linimasanya
@@ -4342,7 +4744,7 @@ This setting will take effect upon restart.</source>
 Pengaturan ini akan ditetapkan saat dimulai ulang.</translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation>Pilih sebuah file</translation>
     </message>
@@ -4494,7 +4896,7 @@ Pengaturan ini akan ditetapkan saat dimulai ulang.</translation>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation>Kemarin</translation>
     </message>
@@ -4548,7 +4950,7 @@ Pengaturan ini akan ditetapkan saat dimulai ulang.</translation>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation>Kamu mengirim klip audio</translation>
     </message>
@@ -4609,16 +5011,28 @@ Pengaturan ini akan ditetapkan saat dimulai ulang.</translation>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation>Kamu: %1</translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation>%1: %2</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation>Kamu mengirim sebuah pesan terenkripsi</translation>
     </message>
@@ -4657,6 +5071,16 @@ Pengaturan ini akan ditetapkan saat dimulai ulang.</translation>
         <source>%1 ended a call</source>
         <translation>%1 mengakhiri panggilan</translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_ie.ts b/resources/langs/nheko_ie.ts
index bc1aceec..0781951e 100644
--- a/resources/langs/nheko_ie.ts
+++ b/resources/langs/nheko_ie.ts
@@ -89,12 +89,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation type="unfinished"></translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -208,7 +208,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -222,22 +222,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -263,12 +275,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -313,12 +325,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation type="unfinished"></translation>
     </message>
@@ -333,7 +345,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -345,13 +357,13 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -413,6 +425,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -458,7 +769,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation type="unfinished"></translation>
     </message>
@@ -648,7 +959,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation type="unfinished"></translation>
     </message>
@@ -892,7 +1203,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation type="unfinished"></translation>
@@ -1107,7 +1418,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1167,7 +1478,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1246,7 +1557,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation type="unfinished"></translation>
@@ -1352,7 +1663,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+246"/>
         <source>%1 removed a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1417,27 +1728,48 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+44"/>
+        <location line="+30"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-150"/>
+        <location line="-193"/>
         <source>%1 answered the call.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-51"/>
+        <location line="-339"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+282"/>
         <source>%1 changed the parent communities for this room.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+65"/>
+        <location line="+93"/>
         <source>%1 ended the call.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1455,7 +1787,12 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1465,7 +1802,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1488,7 +1825,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1518,7 +1855,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1694,8 +2031,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1711,7 +2048,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1894,7 +2231,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1910,7 +2247,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2081,6 +2418,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2096,7 +2438,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2138,6 +2480,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2150,7 +2507,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2224,7 +2581,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2318,7 +2675,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2342,6 +2699,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2751,7 +3113,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2885,7 +3247,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2981,7 +3343,7 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation type="unfinished"></translation>
@@ -3094,19 +3456,19 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3126,7 +3488,7 @@ If you choose verify, you need to have the other device available. If you choose
         <translation type="unfinished"></translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation type="unfinished">
@@ -3394,7 +3756,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3454,17 +3816,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3498,7 +3860,7 @@ Reason: %4</source>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3511,12 +3873,12 @@ Reason: %4</source>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3562,22 +3924,22 @@ Reason: %4</source>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3597,12 +3959,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3631,6 +3998,11 @@ Reason: %4</source>
         <source>Unpin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3673,7 +4045,7 @@ Reason: %4</source>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -3808,8 +4180,8 @@ Reason: %4</source>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3817,7 +4189,7 @@ Reason: %4</source>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3853,6 +4225,11 @@ Reason: %4</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3927,7 +4304,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4117,7 +4504,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4161,6 +4548,11 @@ When disabled, all messages are sent as a plain text.</source>
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4198,10 +4590,20 @@ OFF - square, ON - circle.</source>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4212,23 +4614,23 @@ OFF - square, ON - circle.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4238,7 +4640,7 @@ This usually causes the application icon in the task bar to animate in some fash
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4275,7 +4677,7 @@ Only affects messages in encrypted chats.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation type="unfinished"></translation>
@@ -4328,7 +4730,7 @@ This setting will take effect upon restart.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4480,7 +4882,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4534,7 +4936,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4595,16 +4997,28 @@ This setting will take effect upon restart.</source>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4643,6 +5057,16 @@ This setting will take effect upon restart.</source>
         <source>%1 ended a call</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_it.ts b/resources/langs/nheko_it.ts
index ad3c7793..0173bccd 100644
--- a/resources/langs/nheko_it.ts
+++ b/resources/langs/nheko_it.ts
@@ -89,12 +89,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation type="unfinished"></translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -208,7 +208,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation>Schermo completo</translation>
     </message>
@@ -222,22 +222,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation>Invitato utente: %1</translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -263,12 +275,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation>Conferma Invito</translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation>Vuoi davvero inviare %1 (%2)?</translation>
     </message>
@@ -313,12 +325,12 @@
         <translation>Rimosso il ban dall&apos;utente: %1</translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation>Sei sicuro di voler avviare una chat privata con %1?</translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation>Migrazione della cache fallita!</translation>
     </message>
@@ -333,7 +345,7 @@
         <translation>Versione della cache incompatibile</translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation>Impossibile ripristinare l&apos;account OLM. Per favore accedi nuovamente.</translation>
     </message>
@@ -345,13 +357,13 @@
         <translation>Impossibile ripristinare i dati salvati. Per favore accedi nuovamente.</translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation>Impossibile configurare le chiavi crittografiche. Risposta del server: %1 %2. Per favore riprova in seguito.</translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation>Per favore prova ad accedere nuovamente: %1</translation>
     </message>
@@ -413,6 +425,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -458,7 +769,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation type="unfinished"></translation>
     </message>
@@ -648,7 +959,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation>Decifra i segreti</translation>
     </message>
@@ -892,7 +1203,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation type="unfinished"></translation>
@@ -1107,7 +1418,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished">Tutti i File (*)</translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1167,7 +1478,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation type="unfinished">Lascia la stanza</translation>
     </message>
@@ -1246,7 +1557,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation>Hai inserito un ID Matrix non valido, es @joe:matrix.org</translation>
@@ -1352,7 +1663,17 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+78"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+162"/>
         <source>%1 removed a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1428,16 +1749,27 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+14"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
         <source>%1 ended the call.</source>
         <translation>%1 ha terminato la chiamata.</translation>
     </message>
     <message>
         <location line="+14"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1455,7 +1787,12 @@ Example: https://server.my:8787</source>
         <translation>Avvia una chiamata</translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation type="unfinished">Invia un file</translation>
     </message>
@@ -1465,7 +1802,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished">Scrivi un messaggio…</translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1488,7 +1825,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation>Modifica</translation>
     </message>
@@ -1518,7 +1855,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished">Opzioni</translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1694,8 +2031,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation type="unfinished">%1 ha inviato un messaggio criptato</translation>
     </message>
@@ -1711,7 +2048,7 @@ Example: https://server.my:8787</source>
         <translation>%1 ha risposto con un messaggio criptato</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1894,7 +2231,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1910,7 +2247,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2081,6 +2418,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2096,7 +2438,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2138,6 +2480,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished">Invia</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished">Scrivi un messaggio…</translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2150,7 +2507,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2224,7 +2581,7 @@ Example: https://server.my:8787</source>
         <translation>REGISTRATI</translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation type="unfinished">Ricerca automatica fallita. Ricevuta risposta malformata.</translation>
     </message>
@@ -2318,7 +2675,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation>nessuna versione memorizzata</translation>
     </message>
@@ -2342,6 +2699,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation type="unfinished">Lascia la stanza</translation>
     </message>
@@ -2751,7 +3113,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation type="unfinished">Impossibile abilitare la crittografia: %1</translation>
     </message>
@@ -2885,7 +3247,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2981,7 +3343,7 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation type="unfinished"></translation>
@@ -3094,19 +3456,19 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation>Oscuramento del messaggio fallito: %1</translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation>Salva immagine</translation>
     </message>
@@ -3126,7 +3488,7 @@ If you choose verify, you need to have the other device available. If you choose
         <translation>Salva file</translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation>
@@ -3394,7 +3756,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3454,17 +3816,17 @@ Reason: %4</source>
         <translation>%1 ha oscurato la sua bussata.</translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation>Sei entrato in questa stanza.</translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3498,7 +3860,7 @@ Reason: %4</source>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3511,12 +3873,12 @@ Reason: %4</source>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation>Nessuna stanza aperta</translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3562,22 +3924,22 @@ Reason: %4</source>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3597,12 +3959,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation type="unfinished">Opzioni della stanza</translation>
     </message>
@@ -3631,6 +3998,11 @@ Reason: %4</source>
         <source>Unpin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3673,7 +4045,7 @@ Reason: %4</source>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -3808,8 +4180,8 @@ Reason: %4</source>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3817,7 +4189,7 @@ Reason: %4</source>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation type="unfinished">Tema</translation>
     </message>
@@ -3853,6 +4225,11 @@ Reason: %4</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3927,7 +4304,17 @@ Reason: %4</source>
         <translation type="unfinished">Decripta messaggi nella barra laterale</translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4117,7 +4504,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4161,6 +4548,11 @@ When disabled, all messages are sent as a plain text.</source>
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4198,10 +4590,20 @@ OFF - square, ON - circle.</source>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4212,23 +4614,23 @@ OFF - square, ON - circle.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4238,7 +4640,7 @@ This usually causes the application icon in the task bar to animate in some fash
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4275,7 +4677,7 @@ Only affects messages in encrypted chats.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation type="unfinished"></translation>
@@ -4328,7 +4730,7 @@ This setting will take effect upon restart.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation type="unfinished">Seleziona un file</translation>
     </message>
@@ -4480,7 +4882,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation>Ieri</translation>
     </message>
@@ -4534,7 +4936,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation>Hai inviato una clip audio</translation>
     </message>
@@ -4595,16 +4997,28 @@ This setting will take effect upon restart.</source>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation>Tu: %1</translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation>%1: %2</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation>Hai inviato un messaggio criptato</translation>
     </message>
@@ -4643,6 +5057,16 @@ This setting will take effect upon restart.</source>
         <source>%1 ended a call</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_ja.ts b/resources/langs/nheko_ja.ts
index d91bb0f5..087e636f 100644
--- a/resources/langs/nheko_ja.ts
+++ b/resources/langs/nheko_ja.ts
@@ -89,12 +89,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation type="unfinished"></translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -207,7 +207,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -221,22 +221,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation>招待されたユーザー: %1</translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -262,12 +274,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -312,12 +324,12 @@
         <translation>永久追放を解除されたユーザー: %1</translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation type="unfinished"></translation>
     </message>
@@ -332,7 +344,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation>OLMアカウントを復元できませんでした。もう一度ログインして下さい。</translation>
     </message>
@@ -344,13 +356,13 @@
         <translation>セーブデータを復元できませんでした。もう一度ログインして下さい。</translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation>暗号化鍵を設定できませんでした。サーバーの応答: %1 %2. 後でやり直して下さい。</translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation>もう一度ログインしてみて下さい: %1</translation>
     </message>
@@ -412,6 +424,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -457,7 +768,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation type="unfinished"></translation>
     </message>
@@ -646,7 +957,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation type="unfinished"></translation>
     </message>
@@ -890,7 +1201,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation type="unfinished"></translation>
@@ -1105,7 +1416,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished">全てのファイル (*)</translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1165,7 +1476,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation type="unfinished">部屋を出る</translation>
     </message>
@@ -1244,7 +1555,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation type="unfinished"></translation>
@@ -1350,7 +1661,17 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+78"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+162"/>
         <source>%1 removed a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1426,16 +1747,27 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+14"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
         <source>%1 ended the call.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location line="+14"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1453,7 +1785,12 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation type="unfinished">ファイルを送信</translation>
     </message>
@@ -1463,7 +1800,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished">メッセージを書く...</translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1486,7 +1823,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1516,7 +1853,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished">オプション</translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1692,8 +2029,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation type="unfinished">%1が暗号化されたメッセージを送信しました</translation>
     </message>
@@ -1709,7 +2046,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1892,7 +2229,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1908,7 +2245,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2079,6 +2416,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2094,7 +2436,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2136,6 +2478,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished">メッセージを書く...</translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2148,7 +2505,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2222,7 +2579,7 @@ Example: https://server.my:8787</source>
         <translation>登録</translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation type="unfinished">自動検出できませんでした。不正な形式の応答を受信しました。</translation>
     </message>
@@ -2316,7 +2673,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation>バージョンが保存されていません</translation>
     </message>
@@ -2340,6 +2697,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation type="unfinished">部屋を出る</translation>
     </message>
@@ -2747,7 +3109,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation type="unfinished">暗号化を有効にできませんでした: %1</translation>
     </message>
@@ -2881,7 +3243,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2977,7 +3339,7 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation type="unfinished"></translation>
@@ -3090,19 +3452,19 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation>メッセージを編集できませんでした: %1</translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation>画像を保存</translation>
     </message>
@@ -3122,7 +3484,7 @@ If you choose verify, you need to have the other device available. If you choose
         <translation>ファイルを保存</translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation>
@@ -3385,7 +3747,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3445,17 +3807,17 @@ Reason: %4</source>
         <translation>%1がノックを編集しました。</translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3489,7 +3851,7 @@ Reason: %4</source>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3502,12 +3864,12 @@ Reason: %4</source>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation>部屋が開いていません</translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3552,22 +3914,22 @@ Reason: %4</source>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3587,12 +3949,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation type="unfinished">部屋のオプション</translation>
     </message>
@@ -3621,6 +3988,11 @@ Reason: %4</source>
         <source>Unpin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3663,7 +4035,7 @@ Reason: %4</source>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -3797,8 +4169,8 @@ Reason: %4</source>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3806,7 +4178,7 @@ Reason: %4</source>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation type="unfinished">テーマ</translation>
     </message>
@@ -3842,6 +4214,11 @@ Reason: %4</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3916,7 +4293,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4106,7 +4493,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4150,6 +4537,11 @@ When disabled, all messages are sent as a plain text.</source>
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4187,10 +4579,20 @@ OFF - square, ON - circle.</source>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4201,23 +4603,23 @@ OFF - square, ON - circle.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4227,7 +4629,7 @@ This usually causes the application icon in the task bar to animate in some fash
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4264,7 +4666,7 @@ Only affects messages in encrypted chats.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation type="unfinished"></translation>
@@ -4317,7 +4719,7 @@ This setting will take effect upon restart.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation type="unfinished">ファイルを選択</translation>
     </message>
@@ -4469,7 +4871,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation>昨日</translation>
     </message>
@@ -4523,7 +4925,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation>音声データを送信しました</translation>
     </message>
@@ -4584,16 +4986,28 @@ This setting will take effect upon restart.</source>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation>あなた: %1</translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation>%1: %2</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation>暗号化されたメッセージを送信しました</translation>
     </message>
@@ -4632,6 +5046,16 @@ This setting will take effect upon restart.</source>
         <source>%1 ended a call</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_ml.ts b/resources/langs/nheko_ml.ts
index fc4478ee..f239fee7 100644
--- a/resources/langs/nheko_ml.ts
+++ b/resources/langs/nheko_ml.ts
@@ -89,12 +89,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation type="unfinished">ചേർക്കുക</translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -208,7 +208,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation>മുഴുവൻ സ്ക്രീൻ</translation>
     </message>
@@ -222,22 +222,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation>ക്ഷണിച്ച ഉപയോക്താവ്:% 1</translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -263,12 +275,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation>ക്ഷണം ഉറപ്പാക്കു</translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -313,12 +325,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation type="unfinished"></translation>
     </message>
@@ -333,7 +345,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -345,13 +357,13 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation>ദയവായി വീണ്ടും ലോഗിൻ ചെയ്യാൻ നോക്കുക: %1</translation>
     </message>
@@ -413,6 +425,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -458,7 +769,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation>പ്രിയപ്പെട്ടവ</translation>
     </message>
@@ -648,7 +959,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation type="unfinished"></translation>
     </message>
@@ -892,7 +1203,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation type="unfinished"></translation>
@@ -1107,7 +1418,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation>എല്ലാ ഫയലുകളും (*)</translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1167,7 +1478,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1246,7 +1557,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation type="unfinished"></translation>
@@ -1352,7 +1663,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+246"/>
         <source>%1 removed a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1417,27 +1728,48 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+44"/>
+        <location line="+30"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation>ഇവരെ അനുവദിക്കുക</translation>
     </message>
     <message>
-        <location line="-150"/>
+        <location line="-193"/>
         <source>%1 answered the call.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-51"/>
+        <location line="-339"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+282"/>
         <source>%1 changed the parent communities for this room.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+65"/>
+        <location line="+93"/>
         <source>%1 ended the call.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1455,7 +1787,12 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation>ഒരു ഫയൽ അയയ്ക്കുക</translation>
     </message>
@@ -1465,7 +1802,7 @@ Example: https://server.my:8787</source>
         <translation>ഒരു സന്ദേശം എഴുതുക….</translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation>സ്റ്റിക്കറുകൾ</translation>
     </message>
@@ -1488,7 +1825,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation>തിരുത്തുക</translation>
     </message>
@@ -1518,7 +1855,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1694,8 +2031,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1711,7 +2048,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1894,7 +2231,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1910,7 +2247,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2081,6 +2418,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2096,7 +2438,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2138,6 +2480,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished">അയക്കുക</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished">ഒരു സന്ദേശം എഴുതുക….</translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2150,7 +2507,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2224,7 +2581,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2318,7 +2675,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2342,6 +2699,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2751,7 +3113,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2885,7 +3247,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2981,7 +3343,7 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation type="unfinished"></translation>
@@ -3094,19 +3456,19 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3126,7 +3488,7 @@ If you choose verify, you need to have the other device available. If you choose
         <translation type="unfinished"></translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation type="unfinished">
@@ -3394,7 +3756,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3454,17 +3816,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation type="unfinished">നിങ്ങൾ ഈ മുറിയിൽ ചേർന്നു.</translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3498,7 +3860,7 @@ Reason: %4</source>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3511,12 +3873,12 @@ Reason: %4</source>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3562,22 +3924,22 @@ Reason: %4</source>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3597,12 +3959,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3631,6 +3998,11 @@ Reason: %4</source>
         <source>Unpin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3673,7 +4045,7 @@ Reason: %4</source>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -3808,8 +4180,8 @@ Reason: %4</source>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3817,7 +4189,7 @@ Reason: %4</source>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3853,6 +4225,11 @@ Reason: %4</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3927,7 +4304,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4117,7 +4504,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4161,6 +4548,11 @@ When disabled, all messages are sent as a plain text.</source>
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4198,10 +4590,20 @@ OFF - square, ON - circle.</source>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4212,23 +4614,23 @@ OFF - square, ON - circle.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4238,7 +4640,7 @@ This usually causes the application icon in the task bar to animate in some fash
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4275,7 +4677,7 @@ Only affects messages in encrypted chats.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation type="unfinished"></translation>
@@ -4328,7 +4730,7 @@ This setting will take effect upon restart.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation type="unfinished">ഒരു ഫയൽ തിരഞ്ഞെടുക്കുക</translation>
     </message>
@@ -4480,7 +4882,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4534,7 +4936,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4595,16 +4997,28 @@ This setting will take effect upon restart.</source>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation type="unfinished">%1: %2</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4643,6 +5057,16 @@ This setting will take effect upon restart.</source>
         <source>%1 ended a call</source>
         <translation>%1 ഒരു കോൾ അവസാനിപ്പിച്ചു</translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_nl.ts b/resources/langs/nheko_nl.ts
index 19a58166..64508109 100644
--- a/resources/langs/nheko_nl.ts
+++ b/resources/langs/nheko_nl.ts
@@ -89,12 +89,12 @@
         <translation>Verwijder deze alias</translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation>#nieuwe-alias:server.domein</translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation>Toevoegen</translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation>
             <numerusform>%1 en %n ander</numerusform>
@@ -208,7 +208,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation>Gehele scherm</translation>
     </message>
@@ -222,22 +222,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation>Gebruiker uitgenodigd: %1</translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation>De opgeslagen gegevens van Nheko zijn nieuwer dan de versie die je nu draait. Update Nheko of verwijder de gegevens.</translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation>Kon database niet openen, je wordt uitgelogd!</translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation>Aankloppen</translation>
     </message>
@@ -263,12 +275,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation>Bevestig uitnodiging</translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation>Weet je zeker dat je %1 (%2) wil uitnodigen?</translation>
     </message>
@@ -313,12 +325,12 @@
         <translation>Toegelaten gebruiker: %1</translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation>Weet je zeker dat je een privé chat wil beginnen met %1?</translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation>Migreren van de cache is mislukt!</translation>
     </message>
@@ -333,7 +345,7 @@
         <translation>Incompatibele cacheversie</translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation>Herstellen van OLM account mislukt. Log a.u.b. opnieuw in.</translation>
     </message>
@@ -345,13 +357,13 @@
         <translation>Opgeslagen gegevens herstellen mislukt. Log a.u.b. opnieuw in.</translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation>Instellen van de versleuteling is mislukt. Bericht van server: %1 %2. Probeer het a.u.b. later nog eens.</translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation>Probeer a.u.b. opnieuw in te loggen: %1</translation>
     </message>
@@ -413,6 +425,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -458,7 +769,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation>Laat één op één gesprekken zien.</translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation>Favorieten</translation>
     </message>
@@ -648,7 +959,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation>Ontsleutel geheimen</translation>
     </message>
@@ -892,7 +1203,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation>Kon verborgen gebeurtenissen niet instellen: %1</translation>
@@ -1107,7 +1418,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation>Alle bestanden (*)</translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation>Versturen van &apos;%1&apos; misluk</translation>
     </message>
@@ -1167,7 +1478,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation>Kamer verlaten</translation>
     </message>
@@ -1246,7 +1557,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation>Je hebt een ongeldige Matrix ID ingevuld. Correct voorbeeld: @jan:matrix.org</translation>
@@ -1352,7 +1663,17 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+78"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+162"/>
         <source>%1 removed a message</source>
         <translation>%1 heeft een bericht verwijderd</translation>
     </message>
@@ -1428,16 +1749,27 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+14"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
         <source>%1 ended the call.</source>
         <translation>%1 beëindigde de oproep.</translation>
     </message>
     <message>
         <location line="+14"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation>%1 is het gesprek aan het opzetten...</translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation>Binnenlaten</translation>
     </message>
@@ -1455,7 +1787,12 @@ Example: https://server.my:8787</source>
         <translation>Plaats een oproep</translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation>Verstuur een bestand</translation>
     </message>
@@ -1465,7 +1802,7 @@ Example: https://server.my:8787</source>
         <translation>Typ een bericht…</translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation>Stickers</translation>
     </message>
@@ -1488,7 +1825,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation>Bewerken</translation>
     </message>
@@ -1518,7 +1855,7 @@ Example: https://server.my:8787</source>
         <translation>Opties</translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation>Reden voor verwijdering</translation>
     </message>
@@ -1694,8 +2031,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation>%1 stuurde een versleuteld bericht</translation>
     </message>
@@ -1711,7 +2048,7 @@ Example: https://server.my:8787</source>
         <translation>%1 antwoordde met een versleuteld bericht</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation>%1 antwoordde op een bericht</translation>
     </message>
@@ -1894,7 +2231,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation type="unfinished">Kon machtsniveau niet bewerken: %1</translation>
     </message>
@@ -1910,7 +2247,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation>Andere evenementen</translation>
     </message>
@@ -2081,6 +2418,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation>De kamer emotes aanpassen</translation>
     </message>
@@ -2096,7 +2438,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2138,6 +2480,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished">Verstuur</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished">Typ een bericht…</translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2150,7 +2507,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation>Gisteren, %1</translation>
     </message>
@@ -2224,7 +2581,7 @@ Example: https://server.my:8787</source>
         <translation>REGISTREREN</translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation>Automatische herkenning mislukt. Onjuist gevormd antwoord ontvangen.</translation>
     </message>
@@ -2318,7 +2675,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation>geen versie opgeslagen</translation>
     </message>
@@ -2342,6 +2699,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation>Kamer verlaten</translation>
     </message>
@@ -2752,7 +3114,7 @@ Wees ervan bewust dat het achteraf niet meer uitgeschakeld kan worden.</translat
         <translation>meer tonen</translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation>Versleuteling kon niet worden ingeschakeld: %1</translation>
     </message>
@@ -2886,7 +3248,7 @@ Wees ervan bewust dat het achteraf niet meer uitgeschakeld kan worden.</translat
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation>Verbinden met geheimopslag mislukt</translation>
     </message>
@@ -2984,7 +3346,7 @@ Als je &quot;verifieer&quot; kiest, moet je het andere apparaat bij de hand hebb
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation>Kon afbeeldingspakket niet updaten: %1</translation>
@@ -3097,19 +3459,19 @@ Als je &quot;verifieer&quot; kiest, moet je het andere apparaat bij de hand hebb
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation>Bericht intrekken mislukt: %1</translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation>Kon evenement niet versleutelen, versturen geannuleerd!</translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation>Afbeelding opslaan</translation>
     </message>
@@ -3129,7 +3491,7 @@ Als je &quot;verifieer&quot; kiest, moet je het andere apparaat bij de hand hebb
         <translation>Bestand opslaan</translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation>
@@ -3398,7 +3760,7 @@ Reason: %4</source>
 Reden: %4</translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation>%2 heeft de uitnodiging voor %1 ingetrokken.</translation>
     </message>
@@ -3458,17 +3820,17 @@ Reden: %4</translation>
         <translation>%1 heeft het aankloppen ingetrokken.</translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation>Je neemt nu deel aan deze kamer.</translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation>%1 heeft %2 uitgenodigd.</translation>
     </message>
@@ -3502,7 +3864,7 @@ Reden: %4</translation>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation>Bewerkt</translation>
     </message>
@@ -3515,12 +3877,12 @@ Reden: %4</translation>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation>Geen kamer open</translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation>Geen voorbeeld beschikbaar</translation>
     </message>
@@ -3566,22 +3928,22 @@ Reden: %4</translation>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation>Terug naar kamerlijst</translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation>Geen kamer geselecteerd</translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation>Laat kamerdeelnemers zien.</translation>
     </message>
@@ -3601,12 +3963,17 @@ Reden: %4</translation>
         <translation>Deze kamer bevat ongeverifieerde apparaten!</translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation>Toon of verberg vastgeprikte berichten</translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation>Kameropties</translation>
     </message>
@@ -3635,6 +4002,11 @@ Reden: %4</translation>
         <source>Unpin</source>
         <translation>Vastprikken ongedaan maken</translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3677,7 +4049,7 @@ Reden: %4</translation>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation>
             <numerusform>Bestand versturen</numerusform>
@@ -3812,8 +4184,8 @@ Reden: %4</translation>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation>Standaard</translation>
     </message>
@@ -3821,7 +4193,7 @@ Reden: %4</translation>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation>Thema</translation>
     </message>
@@ -3857,6 +4229,11 @@ Reden: %4</translation>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation>Activeer berichtbubbels</translation>
     </message>
@@ -3931,7 +4308,17 @@ Reden: %4</translation>
         <translation>Ontsleutel berichten in de zijbalk</translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation>Privacy scherm</translation>
     </message>
@@ -4121,7 +4508,7 @@ Reden: %4</translation>
         <translation>Maak kamerinformatie beschikbaar over D-Bus</translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation>Standaard</translation>
     </message>
@@ -4168,6 +4555,11 @@ Indien uitgeschakeld worden alle berichten als platte tekst verstuurd.</translat
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation>Berichten krijgen een bubbelachtergrond. Dit activeert ook enkele veranderingen aan de layout (werk in uitvoering).</translation>
     </message>
@@ -4207,10 +4599,20 @@ UIT - vierkant, AAN - cirkel.</translation>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4221,24 +4623,24 @@ UIT - vierkant, AAN - cirkel.</translation>
         <translation>De sleutel om je eigen apparaten te verifiëren. Indien gecached zal het verifiëren van één van je apparaten die ook als geverifieerd markeren voor je anderen apparaten en gebruikers die jou geverifieerd hebben.</translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation>Activeer een melding als een bericht binnen komt.
 Meestal zorgt dit dat het icoon in de taakbalk op een manier animeert of iets dergelijks.</translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4248,7 +4650,7 @@ Meestal zorgt dit dat het icoon in de taakbalk op een manier animeert of iets de
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4290,7 +4692,7 @@ Only affects messages in encrypted chats.</source>
 Heeft alleen effect op versleutelde chats.</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation>Als het scherm focus verliest, zal de tijdlijn
@@ -4346,7 +4748,7 @@ This setting will take effect upon restart.</source>
 Deze instelling wordt toegepast na opnieuw starten van de applicatie.</translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation>Selecteer een bestand</translation>
     </message>
@@ -4498,7 +4900,7 @@ Deze instelling wordt toegepast na opnieuw starten van de applicatie.</translati
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation>Gisteren</translation>
     </message>
@@ -4552,7 +4954,7 @@ Deze instelling wordt toegepast na opnieuw starten van de applicatie.</translati
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation>Je verstuurde een audio clip</translation>
     </message>
@@ -4613,16 +5015,28 @@ Deze instelling wordt toegepast na opnieuw starten van de applicatie.</translati
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation>Jij: %1</translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation>%1: %2</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation>Je hebt een versleuteld bericht verstuurd</translation>
     </message>
@@ -4661,6 +5075,16 @@ Deze instelling wordt toegepast na opnieuw starten van de applicatie.</translati
         <source>%1 ended a call</source>
         <translation>%1 hing op</translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_pl.ts b/resources/langs/nheko_pl.ts
index 1d0208f4..0ec4edf9 100644
--- a/resources/langs/nheko_pl.ts
+++ b/resources/langs/nheko_pl.ts
@@ -89,12 +89,12 @@
         <translation>Usuń ten alias</translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation>#nowy-alias:serwer.tld</translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation>Dodaj</translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation>
             <numerusform>%1 i jeszcze %n inny</numerusform>
@@ -209,7 +209,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation>Cały ekran</translation>
     </message>
@@ -223,22 +223,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation>Zaproszono użytkownika: %1</translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation>Pamięć podręczna na twoim dysku jest nowsza niż wspierana przez tę wersję Nheko. Zaktualizuj Nheko lub wyczyść pamięć podręczną.</translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation>Nie udało się otworzyć bazy danych, następuje wylogowanie!</translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation>Zapukaj do pokoju</translation>
     </message>
@@ -264,12 +276,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation>Potwierdź zaproszenie</translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation>Czy na pewno chcesz zaprosić %1 (%2)?</translation>
     </message>
@@ -314,12 +326,12 @@
         <translation>Odblokowano użytkownika: %1</translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation>Czy na pewno chcesz rozpocząć prywatny czat z %1?</translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation>Nie udało się przenieść pamięci podręcznej!</translation>
     </message>
@@ -334,7 +346,7 @@
         <translation>Niekompatybilna wersja pamięci podręcznej</translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation>Nie udało się przywrócić konta OLM. Spróbuj zalogować się ponownie.</translation>
     </message>
@@ -346,13 +358,13 @@
         <translation>Nie udało się przywrócić zapisanych danych. Spróbuj zalogować się ponownie.</translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation>Nie udało się ustawić kluczy szyfrujących. Odpowiedź serwera: %1 %2. Spróbuj ponownie później.</translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation>Spróbuj zalogować się ponownie: %1</translation>
     </message>
@@ -414,6 +426,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -459,7 +770,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation>Pokaż czaty bezpośrednie.</translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation>Ulubione</translation>
     </message>
@@ -650,7 +961,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation>Odszyfruj sekrety</translation>
     </message>
@@ -894,7 +1205,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation>Nie udało się ustawić ukrytych zdarzeń: %1</translation>
@@ -1109,7 +1420,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation>Wszystkie pliki (*)</translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation>Wysyłanie &apos;%1&apos; nie powiodło się</translation>
     </message>
@@ -1169,7 +1480,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation>Opuść pokój</translation>
     </message>
@@ -1248,7 +1559,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation>Wprowadzono nieprawidłowe Matrix ID. Przykład prawidłowego ID: @ania:matrix.org</translation>
@@ -1354,7 +1665,17 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+78"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+162"/>
         <source>%1 removed a message</source>
         <translation>%1 usunął/ęła wiadomość</translation>
     </message>
@@ -1430,16 +1751,27 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+14"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
         <source>%1 ended the call.</source>
         <translation>%1 zakończył(a) połączenie.</translation>
     </message>
     <message>
         <location line="+14"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation>%1 negocjuje połączenie...</translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation>Wpuść</translation>
     </message>
@@ -1457,7 +1789,12 @@ Example: https://server.my:8787</source>
         <translation>Zadzwoń</translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation>Wyślij plik</translation>
     </message>
@@ -1467,7 +1804,7 @@ Example: https://server.my:8787</source>
         <translation>Napisz wiadomość…</translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation>Naklejki</translation>
     </message>
@@ -1490,7 +1827,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation>Edytuj</translation>
     </message>
@@ -1520,7 +1857,7 @@ Example: https://server.my:8787</source>
         <translation>Opcje</translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation>Powód usunięcia</translation>
     </message>
@@ -1696,8 +2033,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation>%1 wysłał(a) zaszyfrowaną wiadomość</translation>
     </message>
@@ -1714,7 +2051,7 @@ Example: https://server.my:8787</source>
         <translation>%1 odpisał(a) zaszyfrowaną wiadomością</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation>%1 odpisał(a) na wiadomość</translation>
     </message>
@@ -1897,7 +2234,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation type="unfinished">Nie udało się zaktualizować poziomu mocy: %1</translation>
     </message>
@@ -1913,7 +2250,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation>Inne zdarzenia</translation>
     </message>
@@ -2084,6 +2421,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation>Zmiana emotikon pokoju</translation>
     </message>
@@ -2099,7 +2441,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2141,6 +2483,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished">Wyślij</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished">Napisz wiadomość…</translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2153,7 +2510,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation>Wczoraj, %1</translation>
     </message>
@@ -2227,7 +2584,7 @@ Example: https://server.my:8787</source>
         <translation>ZAREJESTRUJ</translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation>Automatyczne wykrywanie zakończone niepowodzeniem. Otrzymano nieprawidłową odpowiedź.</translation>
     </message>
@@ -2321,7 +2678,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation>brak zapisanej wersji</translation>
     </message>
@@ -2345,6 +2702,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation>Opuść pokój</translation>
     </message>
@@ -2757,7 +3119,7 @@ Zwróć uwagę, iż nie będzie ono mogło zostać wyłączone.</translation>
         <translation>pokaż więcej</translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation>Nie udało się włączyć szyfrowania: %1</translation>
     </message>
@@ -2891,7 +3253,7 @@ Zwróć uwagę, iż nie będzie ono mogło zostać wyłączone.</translation>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation>Błąd połączenia do menadżera sekretów</translation>
     </message>
@@ -2989,7 +3351,7 @@ Jeśli zdecydujesz się na weryfikację, będziesz potrzebować innego zaufanego
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation>Nie udało się uaktualnić paczki obrazów: %1</translation>
@@ -3102,19 +3464,19 @@ Jeśli zdecydujesz się na weryfikację, będziesz potrzebować innego zaufanego
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation>Cenzurowanie wiadomości nie powiodło się: %1</translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation>Szyfrowanie event-u nie powiodło się, wysyłanie anulowane!</translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation>Zapisz obraz</translation>
     </message>
@@ -3134,7 +3496,7 @@ Jeśli zdecydujesz się na weryfikację, będziesz potrzebować innego zaufanego
         <translation>Zapisz plik</translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation>
@@ -3408,7 +3770,7 @@ Reason: %4</source>
 Powód: %4</translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation>%2 anulował(a) zaproszenie do %1.</translation>
     </message>
@@ -3468,17 +3830,17 @@ Powód: %4</translation>
         <translation>Użytkownik %1 ocenzurował własne pukanie.</translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation>Dołączyłeś(-aś) do tego pokoju.</translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation>%1 zaprosił(a) %2.</translation>
     </message>
@@ -3512,7 +3874,7 @@ Powód: %4</translation>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation>Edytowane</translation>
     </message>
@@ -3525,12 +3887,12 @@ Powód: %4</translation>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation>Brak otwartych pokojów</translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation>Podgląd niedostępny</translation>
     </message>
@@ -3577,22 +3939,22 @@ Powód: %4</translation>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation>Wróć do listy pokoi</translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation>Nie wybrano pokoju</translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation>Pokaż członków pokoju.</translation>
     </message>
@@ -3612,12 +3974,17 @@ Powód: %4</translation>
         <translation>Ten pokój zawiera niezweryfikowane urządzenia!</translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation>Pokaż lub ukryj przypięte wiadomości</translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation>Ustawienia pokoju</translation>
     </message>
@@ -3646,6 +4013,11 @@ Powód: %4</translation>
         <source>Unpin</source>
         <translation>Odepnij</translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3688,7 +4060,7 @@ Powód: %4</translation>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation>
             <numerusform>Wyślij plik</numerusform>
@@ -3824,8 +4196,8 @@ Powód: %4</translation>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation>Domyślne</translation>
     </message>
@@ -3833,7 +4205,7 @@ Powód: %4</translation>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation>Motyw</translation>
     </message>
@@ -3869,6 +4241,11 @@ Powód: %4</translation>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation>Włącz dymki wiadomości</translation>
     </message>
@@ -3943,7 +4320,17 @@ Powód: %4</translation>
         <translation>Pokaż odszyfrowane wiadomości na pasku bocznym</translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation>Ochrona prywatności</translation>
     </message>
@@ -4133,7 +4520,7 @@ Powód: %4</translation>
         <translation>Udostępnij informacje o pokojach poprzez D-Bus</translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation>Domyślne</translation>
     </message>
@@ -4179,6 +4566,11 @@ Gdy ta opcja jest wyłączona, wszystkie wiadomości będą wysyłane jako zwyk
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation>Wiadomości wyświetlane są w bąbelkach. To ustawienie powoduje też kilka innych zmian wyglądu (WIP).</translation>
     </message>
@@ -4218,10 +4610,20 @@ Wyłączone - kwadratowe, włączone - okrągłe.</translation>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4232,24 +4634,24 @@ Wyłączone - kwadratowe, włączone - okrągłe.</translation>
         <translation>Klucz używany do weryfikacji twoich własnych urządzeń. Jeśli jest on w pamięci podręcznej, zweryfikowanie jednego z twoich urządzeń oznaczy je w ten sam sposób dla wszystkich pozostałych twoich urządzeń oraz dla użytkowników którzy uprzednio ciebie zweryfikowali.</translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation>Pokazuj alert po otrzymaniu wiadomości.
 To zwykle sprawia, że ikona aplikacji na pasku zadań jest animowana.</translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4259,7 +4661,7 @@ To zwykle sprawia, że ikona aplikacji na pasku zadań jest animowana.</translat
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4301,7 +4703,7 @@ Only affects messages in encrypted chats.</source>
 Dotyczy wyłącznie czatów z włączonym szyfrowaniem.</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation>Kiedy okno przejdzie na drugi plan, oś czasu zostanie rozmyta.</translation>
@@ -4356,7 +4758,7 @@ This setting will take effect upon restart.</source>
 To ustawienie wejdzie w życie po restarcie aplikacji.</translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation>Wybierz plik</translation>
     </message>
@@ -4508,7 +4910,7 @@ To ustawienie wejdzie w życie po restarcie aplikacji.</translation>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation>Wczoraj</translation>
     </message>
@@ -4562,7 +4964,7 @@ To ustawienie wejdzie w życie po restarcie aplikacji.</translation>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation>Wysłałeś(aś) klip audio</translation>
     </message>
@@ -4623,16 +5025,28 @@ To ustawienie wejdzie w życie po restarcie aplikacji.</translation>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation>Ty: %1</translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation>%1: %2</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation>Wysłałeś(aś) zaszyfrowaną wiadomość</translation>
     </message>
@@ -4671,6 +5085,16 @@ To ustawienie wejdzie w życie po restarcie aplikacji.</translation>
         <source>%1 ended a call</source>
         <translation>%1 zakończył(a) połączenie</translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_pt_BR.ts b/resources/langs/nheko_pt_BR.ts
index 7ac98016..219454ef 100644
--- a/resources/langs/nheko_pt_BR.ts
+++ b/resources/langs/nheko_pt_BR.ts
@@ -89,12 +89,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation type="unfinished"></translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -208,7 +208,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation>Tela Inteira</translation>
     </message>
@@ -222,22 +222,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation>Usuário convidado: %1</translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -263,12 +275,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation>Confirmar convite</translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation>Deseja realmente convidar %1 (%2)?</translation>
     </message>
@@ -313,12 +325,12 @@
         <translation>Usuário desbanido: %1</translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation>Deseja realmente iniciar uma conversa privada com %1?</translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation>Migração do cache falhou!</translation>
     </message>
@@ -333,7 +345,7 @@
         <translation>Versão de cache incompatível</translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation>Falha ao restaurar conta OLM. Por favor faça login novamente.</translation>
     </message>
@@ -345,13 +357,13 @@
         <translation>Falha ao restaurar dados salvos. Por favor faça login novamente.</translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation>Falha ao configurar chaves de criptografia. Resposta do servidor: %1 %2. Por favor tente novamente mais tarde.</translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -413,6 +425,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -458,7 +769,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation type="unfinished"></translation>
     </message>
@@ -648,7 +959,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation type="unfinished"></translation>
     </message>
@@ -892,7 +1203,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation type="unfinished"></translation>
@@ -1107,7 +1418,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1167,7 +1478,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1246,7 +1557,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation type="unfinished"></translation>
@@ -1352,7 +1663,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+246"/>
         <source>%1 removed a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1417,27 +1728,48 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+44"/>
+        <location line="+30"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-150"/>
+        <location line="-193"/>
         <source>%1 answered the call.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-51"/>
+        <location line="-339"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+282"/>
         <source>%1 changed the parent communities for this room.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+65"/>
+        <location line="+93"/>
         <source>%1 ended the call.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1455,7 +1787,12 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1465,7 +1802,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1488,7 +1825,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1518,7 +1855,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1694,8 +2031,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1711,7 +2048,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1894,7 +2231,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1910,7 +2247,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2081,6 +2418,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2096,7 +2438,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2138,6 +2480,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2150,7 +2507,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2224,7 +2581,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2318,7 +2675,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2342,6 +2699,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2751,7 +3113,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2885,7 +3247,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2981,7 +3343,7 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation type="unfinished"></translation>
@@ -3094,19 +3456,19 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3126,7 +3488,7 @@ If you choose verify, you need to have the other device available. If you choose
         <translation type="unfinished"></translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation type="unfinished">
@@ -3394,7 +3756,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3454,17 +3816,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation type="unfinished">Você entrou nessa sala.</translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3498,7 +3860,7 @@ Reason: %4</source>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3511,12 +3873,12 @@ Reason: %4</source>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3562,22 +3924,22 @@ Reason: %4</source>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3597,12 +3959,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3631,6 +3998,11 @@ Reason: %4</source>
         <source>Unpin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3673,7 +4045,7 @@ Reason: %4</source>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -3808,8 +4180,8 @@ Reason: %4</source>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3817,7 +4189,7 @@ Reason: %4</source>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3853,6 +4225,11 @@ Reason: %4</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3927,7 +4304,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4117,7 +4504,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4161,6 +4548,11 @@ When disabled, all messages are sent as a plain text.</source>
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4198,10 +4590,20 @@ OFF - square, ON - circle.</source>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4212,23 +4614,23 @@ OFF - square, ON - circle.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4238,7 +4640,7 @@ This usually causes the application icon in the task bar to animate in some fash
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4275,7 +4677,7 @@ Only affects messages in encrypted chats.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation type="unfinished"></translation>
@@ -4328,7 +4730,7 @@ This setting will take effect upon restart.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4480,7 +4882,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4534,7 +4936,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4595,16 +4997,28 @@ This setting will take effect upon restart.</source>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4643,6 +5057,16 @@ This setting will take effect upon restart.</source>
         <source>%1 ended a call</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_pt_PT.ts b/resources/langs/nheko_pt_PT.ts
index 9e2e44be..2aee5f15 100644
--- a/resources/langs/nheko_pt_PT.ts
+++ b/resources/langs/nheko_pt_PT.ts
@@ -89,12 +89,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation type="unfinished">Adicionar</translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation>
             <numerusform>%1 e outro %n</numerusform>
@@ -208,7 +208,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation>Ecrã inteiro</translation>
     </message>
@@ -222,22 +222,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation>Utilizador convidado: %1</translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation>A cache no seu disco é mais recente do que aquela que esta versão do Nheko suporta. Por favor atualize o Nheko ou limpe a sua cache.</translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation>Falha ao abrir base de dados. A terminar sessão!</translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -263,12 +275,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation>Confirmar convite</translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation>Tem a certeza que quer convidar %1 (%2)?</translation>
     </message>
@@ -313,12 +325,12 @@
         <translation>Utilizador perdoado: %1</translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation>Tem a certeza que quer começar uma conversa privada com %1?</translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation>Falha ao migrar a cache!</translation>
     </message>
@@ -333,7 +345,7 @@
         <translation>Versão da cache incompatível</translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation>Falha ao restaurar a sua conta OLM. Por favor autentique-se novamente.</translation>
     </message>
@@ -345,13 +357,13 @@
         <translation>Falha ao restaurar dados guardados. Por favor, autentique-se novamente.</translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation>Falha ao estabelecer chaves encriptadas. Resposta do servidor: %1 %2. Tente novamente mais tarde.</translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation>Por favor, tente autenticar-se novamente: %1</translation>
     </message>
@@ -413,6 +425,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -458,7 +769,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation>Favoritos</translation>
     </message>
@@ -648,7 +959,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation>Desencriptar segredos</translation>
     </message>
@@ -892,7 +1203,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation type="unfinished"></translation>
@@ -1107,7 +1418,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation>Todos os ficheiros (*)</translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1167,7 +1478,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation>Sair da sala</translation>
     </message>
@@ -1246,7 +1557,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation>Inseriu um ID Matrix inválido  p. ex. @ze:matrix.org</translation>
@@ -1352,7 +1663,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+246"/>
         <source>%1 removed a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1417,27 +1728,48 @@ Example: https://server.my:8787</source>
         <translation>%1 iniciou uma chamada.</translation>
     </message>
     <message>
-        <location line="+44"/>
+        <location line="+30"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation>Permitir a entrada</translation>
     </message>
     <message>
-        <location line="-150"/>
+        <location line="-193"/>
         <source>%1 answered the call.</source>
         <translation>%1 atendeu a chamada.</translation>
     </message>
     <message>
-        <location line="-51"/>
+        <location line="-339"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+282"/>
         <source>%1 changed the parent communities for this room.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+65"/>
+        <location line="+93"/>
         <source>%1 ended the call.</source>
         <translation>%1 terminou a chamada.</translation>
     </message>
@@ -1455,7 +1787,12 @@ Example: https://server.my:8787</source>
         <translation>Iniciar chamada</translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation>Enviar um ficheiro</translation>
     </message>
@@ -1465,7 +1802,7 @@ Example: https://server.my:8787</source>
         <translation>Escreva uma mensagem…</translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation>Autocolantes</translation>
     </message>
@@ -1488,7 +1825,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation>Editar</translation>
     </message>
@@ -1518,7 +1855,7 @@ Example: https://server.my:8787</source>
         <translation>Opções</translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1694,8 +2031,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation>%1 enviou uma mensagem encriptada</translation>
     </message>
@@ -1711,7 +2048,7 @@ Example: https://server.my:8787</source>
         <translation>%1 respondeu com uma mensagem encriptada</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation>%1 respondeu a uma mensagem</translation>
     </message>
@@ -1894,7 +2231,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1910,7 +2247,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2081,6 +2418,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2096,7 +2438,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2138,6 +2480,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished">Enviar</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished">Escreva uma mensagem…</translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2150,7 +2507,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation>Ontem, %1</translation>
     </message>
@@ -2224,7 +2581,7 @@ Example: https://server.my:8787</source>
         <translation>REGISTAR</translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation>Falha na descoberta automática. Resposta mal formada recebida.</translation>
     </message>
@@ -2318,7 +2675,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation>nenhuma versão guardada</translation>
     </message>
@@ -2342,6 +2699,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation>Sair da sala</translation>
     </message>
@@ -2751,7 +3113,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation>Falha ao ativar encriptação: %1</translation>
     </message>
@@ -2885,7 +3247,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation>Falha ao ligar ao armazenamento secreto</translation>
     </message>
@@ -2983,7 +3345,7 @@ Se escolher a verificação, terá que ter o outro dispositivo disponível. Se e
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation>Falha ao atualizar pacote de imagem: %1</translation>
@@ -3096,19 +3458,19 @@ Se escolher a verificação, terá que ter o outro dispositivo disponível. Se e
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation>Falha ao eliminar mensagem: %1</translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation>Falha ao encriptar evento, envio abortado!</translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation>Guardar imagem</translation>
     </message>
@@ -3128,7 +3490,7 @@ Se escolher a verificação, terá que ter o outro dispositivo disponível. Se e
         <translation>Guardar ficheiro</translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation>
@@ -3396,7 +3758,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3456,17 +3818,17 @@ Reason: %4</source>
         <translation>%1 eliminou a sua &quot;batida à porta&quot;.</translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation>Entrou na sala.</translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3500,7 +3862,7 @@ Reason: %4</source>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation>Editada</translation>
     </message>
@@ -3513,12 +3875,12 @@ Reason: %4</source>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation>Nenhuma sala aberta</translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation>Pré-visualização não disponível</translation>
     </message>
@@ -3564,22 +3926,22 @@ Reason: %4</source>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation>Voltar à lista de salas</translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation>Nenhuma sala selecionada</translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3599,12 +3961,17 @@ Reason: %4</source>
         <translation>Esta sala contém dispositivos não verificados!</translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation>Opções da sala</translation>
     </message>
@@ -3633,6 +4000,11 @@ Reason: %4</source>
         <source>Unpin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3675,7 +4047,7 @@ Reason: %4</source>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -3810,8 +4182,8 @@ Reason: %4</source>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation>Predefinido</translation>
     </message>
@@ -3819,7 +4191,7 @@ Reason: %4</source>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation type="unfinished">Tema</translation>
     </message>
@@ -3855,6 +4227,11 @@ Reason: %4</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3929,7 +4306,17 @@ Reason: %4</source>
         <translation type="unfinished">Desencriptar mensagens na barra lateral</translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation type="unfinished">Ecrã de privacidade</translation>
     </message>
@@ -4119,7 +4506,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation type="unfinished">Predefinido</translation>
     </message>
@@ -4166,6 +4553,11 @@ Quando desativada, todas as mensagens serão enviadas em texto simples.</transla
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4204,10 +4596,20 @@ OFF - square, ON - circle.</source>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4218,23 +4620,23 @@ OFF - square, ON - circle.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation type="unfinished">Mostrar alerta quando é recebida uma mensagem.</translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4244,7 +4646,7 @@ This usually causes the application icon in the task bar to animate in some fash
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4282,7 +4684,7 @@ Only affects messages in encrypted chats.</source>
 Apenas afeta mensagens em conversas encriptadas.</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation type="unfinished">Quando a janela perde a atenção, a cronologia 
@@ -4336,7 +4738,7 @@ This setting will take effect upon restart.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation type="unfinished">Selecionar um ficheiro</translation>
     </message>
@@ -4488,7 +4890,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation>Ontem</translation>
     </message>
@@ -4542,7 +4944,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation>Enviou uma mensagem áudio</translation>
     </message>
@@ -4603,16 +5005,28 @@ This setting will take effect upon restart.</source>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation>Você: %1</translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation>%1: %2</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation>Enviou uma mensagem encriptada</translation>
     </message>
@@ -4651,6 +5065,16 @@ This setting will take effect upon restart.</source>
         <source>%1 ended a call</source>
         <translation>%1 terminou uma chamada</translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_ro.ts b/resources/langs/nheko_ro.ts
index a973a071..df76a7c0 100644
--- a/resources/langs/nheko_ro.ts
+++ b/resources/langs/nheko_ro.ts
@@ -89,12 +89,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation type="unfinished"></translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -209,7 +209,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -223,22 +223,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation>Utilizator invitat: %1</translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -264,12 +276,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -314,12 +326,12 @@
         <translation>Utilizator dezinterzis: %1</translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation>Nu s-a putut migra cache-ul!</translation>
     </message>
@@ -334,7 +346,7 @@
         <translation>Versiune cache incompatibilă</translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation>Nu s-a putut restabili contul OLM. Vă rugăm să vă reconectați.</translation>
     </message>
@@ -346,13 +358,13 @@
         <translation>Nu s-au putut restabili datele salvate. Vă rugăm să vă reconectați.</translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation>Nu s-au putut stabili cheile. Răspunsul serverului: %1 %2. Vă rugăm încercați mai târziu.</translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation>Vă rugăm să vă reconectați: %1</translation>
     </message>
@@ -414,6 +426,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -459,7 +770,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation type="unfinished"></translation>
     </message>
@@ -650,7 +961,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation type="unfinished"></translation>
     </message>
@@ -894,7 +1205,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation type="unfinished"></translation>
@@ -1109,7 +1420,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished">Toate fișierele (*)</translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1169,7 +1480,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation type="unfinished">Părăsește camera</translation>
     </message>
@@ -1248,7 +1559,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation type="unfinished"></translation>
@@ -1354,7 +1665,17 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+78"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+162"/>
         <source>%1 removed a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1430,16 +1751,27 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+14"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
         <source>%1 ended the call.</source>
         <translation>%1 a închis apelul.</translation>
     </message>
     <message>
         <location line="+14"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1457,7 +1789,12 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1467,7 +1804,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1490,7 +1827,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1520,7 +1857,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished">Opțiuni</translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1696,8 +2033,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation type="unfinished">%1 a trimis un mesaj criptat</translation>
     </message>
@@ -1713,7 +2050,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1896,7 +2233,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1912,7 +2249,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2083,6 +2420,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2098,7 +2440,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2140,6 +2482,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2152,7 +2509,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2226,7 +2583,7 @@ Example: https://server.my:8787</source>
         <translation>ÎNREGISTRARE</translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation type="unfinished">Autodescoperirea a eșuat. Răspunsul primit este defectuos.</translation>
     </message>
@@ -2320,7 +2677,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation>nicio versiune stocată</translation>
     </message>
@@ -2344,6 +2701,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation type="unfinished">Părăsește camera</translation>
     </message>
@@ -2755,7 +3117,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation type="unfinished">Nu s-a putut activa criptarea: %1</translation>
     </message>
@@ -2889,7 +3251,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2985,7 +3347,7 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation type="unfinished"></translation>
@@ -3098,19 +3460,19 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation>Redactare mesaj eșuată: %1</translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation>Salvați imaginea</translation>
     </message>
@@ -3130,7 +3492,7 @@ If you choose verify, you need to have the other device available. If you choose
         <translation>Salvați fișier</translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation>
@@ -3403,7 +3765,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3463,17 +3825,17 @@ Reason: %4</source>
         <translation>%1 și-a redactat ciocănitul.</translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation>Te-ai alăturat camerei.</translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3507,7 +3869,7 @@ Reason: %4</source>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3520,12 +3882,12 @@ Reason: %4</source>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation>Nicio cameră deschisă</translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3572,22 +3934,22 @@ Reason: %4</source>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3607,12 +3969,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3641,6 +4008,11 @@ Reason: %4</source>
         <source>Unpin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3683,7 +4055,7 @@ Reason: %4</source>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -3819,8 +4191,8 @@ Reason: %4</source>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3828,7 +4200,7 @@ Reason: %4</source>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation type="unfinished">Temă</translation>
     </message>
@@ -3864,6 +4236,11 @@ Reason: %4</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3938,7 +4315,17 @@ Reason: %4</source>
         <translation type="unfinished">Decriptează mesajele din bara laterală</translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4128,7 +4515,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4172,6 +4559,11 @@ When disabled, all messages are sent as a plain text.</source>
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4209,10 +4601,20 @@ OFF - square, ON - circle.</source>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4223,23 +4625,23 @@ OFF - square, ON - circle.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation type="unfinished">Arată o alertă când primiți un mesaj. Deobicei pictograma aplicației se animează în taskbar.</translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4249,7 +4651,7 @@ This usually causes the application icon in the task bar to animate in some fash
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4286,7 +4688,7 @@ Only affects messages in encrypted chats.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation type="unfinished"></translation>
@@ -4339,7 +4741,7 @@ This setting will take effect upon restart.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4491,7 +4893,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation>Ieri</translation>
     </message>
@@ -4545,7 +4947,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation>Ai trimis un clip audio</translation>
     </message>
@@ -4606,16 +5008,28 @@ This setting will take effect upon restart.</source>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation>Tu: %1</translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation>%1: %2</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation>Ai trimis un mesaj criptat</translation>
     </message>
@@ -4654,6 +5068,16 @@ This setting will take effect upon restart.</source>
         <source>%1 ended a call</source>
         <translation>%1 a încheiat un apel</translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_ru.ts b/resources/langs/nheko_ru.ts
index 2db11a39..b29a6bec 100644
--- a/resources/langs/nheko_ru.ts
+++ b/resources/langs/nheko_ru.ts
@@ -89,12 +89,12 @@
         <translation>Удалить псевдоним</translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation>Добавить</translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation>
             <numerusform>%1 и ещё %n</numerusform>
@@ -209,7 +209,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation>Весь экран</translation>
     </message>
@@ -223,22 +223,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation>Приглашенный пользователь: %1</translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation>Версия кэша на вашем диске новее той, что поддерживается текущей версией Nheko. Пожалуйста, обновите Nheko или очистите кэш.</translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation>Ошибка при попытке открыть базу данных, выходим из аккаунта!</translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation>Попросить приглашение</translation>
     </message>
@@ -264,12 +276,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation>Подтвердите приглашение</translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation>Вы точно хотите пригласить %1 (%2)?</translation>
     </message>
@@ -314,12 +326,12 @@
         <translation>Разблокированный пользователь: %1</translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation>Вы действительно хотите начать личную переписку с %1?</translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation>Миграция кэша не удалась!</translation>
     </message>
@@ -334,7 +346,7 @@
         <translation>Несовместимая версия кэша</translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation>Не удалось восстановить учетную запись OLM. Пожалуйста, войдите снова.</translation>
     </message>
@@ -346,13 +358,13 @@
         <translation>Не удалось восстановить сохраненные данные. Пожалуйста, войдите снова.</translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation>Не удалось настроить ключи шифрования. Ответ сервера:%1 %2. Пожалуйста, попробуйте позже.</translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation>Повторите попытку входа: %1</translation>
     </message>
@@ -414,6 +426,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -459,7 +770,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation>Показать личные чаты.</translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation>Избранное</translation>
     </message>
@@ -650,7 +961,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation>Расшифровать ключи</translation>
     </message>
@@ -894,7 +1205,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation type="unfinished"></translation>
@@ -1109,7 +1420,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation>Все файлы (*)</translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1135,7 +1446,7 @@ You may optionally provide a reason for others to accept your knock:</source>
     <message>
         <location line="+17"/>
         <source>Add</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Добавить</translation>
     </message>
     <message>
         <location line="+84"/>
@@ -1169,7 +1480,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation type="unfinished">Покинуть комнату</translation>
     </message>
@@ -1248,7 +1559,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation>Вы ввели не правильный Matrix ID, @joe:matrix.org</translation>
@@ -1354,7 +1665,17 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+78"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+162"/>
         <source>%1 removed a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1430,16 +1751,27 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+14"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
         <source>%1 ended the call.</source>
         <translation>%1 завершил вызов.</translation>
     </message>
     <message>
         <location line="+14"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1457,7 +1789,12 @@ Example: https://server.my:8787</source>
         <translation>Позвонить</translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation>Отправить файл</translation>
     </message>
@@ -1467,7 +1804,7 @@ Example: https://server.my:8787</source>
         <translation>Написать сообщение…</translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1490,7 +1827,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation>Редактировать</translation>
     </message>
@@ -1520,7 +1857,7 @@ Example: https://server.my:8787</source>
         <translation>Опции</translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1696,8 +2033,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation>%1 отправил зашифрованное сообщение</translation>
     </message>
@@ -1713,7 +2050,7 @@ Example: https://server.my:8787</source>
         <translation>%1 ответил зашифрованным сообщением</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation>%1 ответил на сообщение</translation>
     </message>
@@ -1832,7 +2169,7 @@ Example: https://server.my:8787</source>
     <message>
         <location line="+38"/>
         <source>Add</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Добавить</translation>
     </message>
     <message>
         <location line="+16"/>
@@ -1896,7 +2233,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1912,7 +2249,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2083,6 +2420,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2098,7 +2440,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2140,6 +2482,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished">Отправить</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished">Написать сообщение…</translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2152,7 +2509,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2226,7 +2583,7 @@ Example: https://server.my:8787</source>
         <translation>РЕГИСТРАЦИЯ</translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation type="unfinished">Автообноружение не удалось. Получен поврежденный ответ.</translation>
     </message>
@@ -2320,7 +2677,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation>нет сохраненной версии</translation>
     </message>
@@ -2344,6 +2701,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation type="unfinished">Покинуть комнату</translation>
     </message>
@@ -2575,9 +2937,9 @@ Example: https://server.my:8787</source>
         <location line="+22"/>
         <source>%n member(s)</source>
         <translation type="unfinished">
-            <numerusform></numerusform>
-            <numerusform></numerusform>
-            <numerusform></numerusform>
+            <numerusform>%n участник</numerusform>
+            <numerusform>%n участника</numerusform>
+            <numerusform>%n участников</numerusform>
         </translation>
     </message>
     <message>
@@ -2755,7 +3117,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation>Не удалось включить шифрование: %1</translation>
     </message>
@@ -2889,7 +3251,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2985,7 +3347,7 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation type="unfinished"></translation>
@@ -3098,19 +3460,19 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation>Ошибка редактирования сообщения: %1</translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation>Не удалось зашифровать сообщение, отправка отменена!</translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation>Сохранить изображение</translation>
     </message>
@@ -3130,7 +3492,7 @@ If you choose verify, you need to have the other device available. If you choose
         <translation>Сохранить файл</translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation>
@@ -3403,7 +3765,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3463,17 +3825,17 @@ Reason: %4</source>
         <translation>%1 отредактировал его &quot;стук&quot;.</translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation>Вы присоединились к комнате.</translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3507,7 +3869,7 @@ Reason: %4</source>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation>Изменено</translation>
     </message>
@@ -3520,12 +3882,12 @@ Reason: %4</source>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation>Комната не выбрана</translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3538,9 +3900,9 @@ Reason: %4</source>
         <location line="+12"/>
         <source>%n member(s)</source>
         <translation type="unfinished">
-            <numerusform></numerusform>
-            <numerusform></numerusform>
-            <numerusform></numerusform>
+            <numerusform>%n участник</numerusform>
+            <numerusform>%n участника</numerusform>
+            <numerusform>%n участников</numerusform>
         </translation>
     </message>
     <message>
@@ -3572,22 +3934,22 @@ Reason: %4</source>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation>Вернуться к списку комнат</translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation>Комнаты не выбраны</translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3607,12 +3969,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation>Настройки комнаты</translation>
     </message>
@@ -3641,6 +4008,11 @@ Reason: %4</source>
         <source>Unpin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3683,7 +4055,7 @@ Reason: %4</source>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -3819,8 +4191,8 @@ Reason: %4</source>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation>По умолчанию</translation>
     </message>
@@ -3828,7 +4200,7 @@ Reason: %4</source>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation type="unfinished">Тема</translation>
     </message>
@@ -3864,6 +4236,11 @@ Reason: %4</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3938,7 +4315,17 @@ Reason: %4</source>
         <translation type="unfinished">Дешифровывать сообщение в сайдбаре</translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation type="unfinished">Приватное Окно</translation>
     </message>
@@ -4128,7 +4515,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation type="unfinished">По умолчанию</translation>
     </message>
@@ -4173,6 +4560,11 @@ When disabled, all messages are sent as a plain text.</source>
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4211,10 +4603,20 @@ OFF - square, ON - circle.</source>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4225,24 +4627,24 @@ OFF - square, ON - circle.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation type="unfinished">Показывать предупреждение, когда получено сообщеение.
 На это обычно реагирует иконка приложения в таскбаре.</translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4252,7 +4654,7 @@ This usually causes the application icon in the task bar to animate in some fash
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4290,7 +4692,7 @@ Only affects messages in encrypted chats.</source>
 Актуально только для комнат, в которых включено шифрование.</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation type="unfinished"></translation>
@@ -4343,7 +4745,7 @@ This setting will take effect upon restart.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation>Выберите файл</translation>
     </message>
@@ -4495,7 +4897,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation>Вчера</translation>
     </message>
@@ -4549,7 +4951,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation>Вы отправили аудиозапись</translation>
     </message>
@@ -4610,16 +5012,28 @@ This setting will take effect upon restart.</source>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation>Вы: %1</translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation>%1: %2</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation>Вы отправили зашифрованное сообщение</translation>
     </message>
@@ -4658,6 +5072,16 @@ This setting will take effect upon restart.</source>
         <source>%1 ended a call</source>
         <translation>%1 Закончил разговор</translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_si.ts b/resources/langs/nheko_si.ts
index 9718a9aa..99c6d645 100644
--- a/resources/langs/nheko_si.ts
+++ b/resources/langs/nheko_si.ts
@@ -89,12 +89,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation type="unfinished"></translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -208,7 +208,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -222,22 +222,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -263,12 +275,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -313,12 +325,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation type="unfinished"></translation>
     </message>
@@ -333,7 +345,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -345,13 +357,13 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -413,6 +425,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -458,7 +769,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation type="unfinished"></translation>
     </message>
@@ -648,7 +959,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation type="unfinished"></translation>
     </message>
@@ -892,7 +1203,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation type="unfinished"></translation>
@@ -1107,7 +1418,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1167,7 +1478,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1246,7 +1557,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation type="unfinished"></translation>
@@ -1352,7 +1663,17 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+78"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+162"/>
         <source>%1 removed a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1428,16 +1749,27 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+14"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
         <source>%1 ended the call.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location line="+14"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1455,7 +1787,12 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1465,7 +1802,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1488,7 +1825,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1518,7 +1855,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1694,8 +2031,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1711,7 +2048,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1894,7 +2231,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1910,7 +2247,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2081,6 +2418,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2096,7 +2438,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2138,6 +2480,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2150,7 +2507,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2224,7 +2581,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2318,7 +2675,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2342,6 +2699,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2751,7 +3113,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2885,7 +3247,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2981,7 +3343,7 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation type="unfinished"></translation>
@@ -3094,19 +3456,19 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3126,7 +3488,7 @@ If you choose verify, you need to have the other device available. If you choose
         <translation type="unfinished"></translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation type="unfinished">
@@ -3394,7 +3756,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3454,17 +3816,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3498,7 +3860,7 @@ Reason: %4</source>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3511,12 +3873,12 @@ Reason: %4</source>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3562,22 +3924,22 @@ Reason: %4</source>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3597,12 +3959,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3631,6 +3998,11 @@ Reason: %4</source>
         <source>Unpin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3673,7 +4045,7 @@ Reason: %4</source>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -3808,8 +4180,8 @@ Reason: %4</source>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3817,7 +4189,7 @@ Reason: %4</source>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3853,6 +4225,11 @@ Reason: %4</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3927,7 +4304,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4117,7 +4504,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4161,6 +4548,11 @@ When disabled, all messages are sent as a plain text.</source>
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4198,10 +4590,20 @@ OFF - square, ON - circle.</source>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4212,23 +4614,23 @@ OFF - square, ON - circle.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4238,7 +4640,7 @@ This usually causes the application icon in the task bar to animate in some fash
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4275,7 +4677,7 @@ Only affects messages in encrypted chats.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation type="unfinished"></translation>
@@ -4328,7 +4730,7 @@ This setting will take effect upon restart.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4480,7 +4882,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4534,7 +4936,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4595,16 +4997,28 @@ This setting will take effect upon restart.</source>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4643,6 +5057,16 @@ This setting will take effect upon restart.</source>
         <source>%1 ended a call</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_sr_Latn.ts b/resources/langs/nheko_sr_Latn.ts
index 16701bb6..ebd079d2 100644
--- a/resources/langs/nheko_sr_Latn.ts
+++ b/resources/langs/nheko_sr_Latn.ts
@@ -89,12 +89,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation type="unfinished"></translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -209,7 +209,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -223,22 +223,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -264,12 +276,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -314,12 +326,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation type="unfinished"></translation>
     </message>
@@ -334,7 +346,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -346,13 +358,13 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -414,6 +426,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -459,7 +770,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation type="unfinished"></translation>
     </message>
@@ -650,7 +961,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation type="unfinished"></translation>
     </message>
@@ -894,7 +1205,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation type="unfinished"></translation>
@@ -1109,7 +1420,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1169,7 +1480,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1248,7 +1559,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation type="unfinished"></translation>
@@ -1354,7 +1665,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+246"/>
         <source>%1 removed a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1419,27 +1730,48 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+44"/>
+        <location line="+30"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-150"/>
+        <location line="-193"/>
         <source>%1 answered the call.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-51"/>
+        <location line="-339"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+282"/>
         <source>%1 changed the parent communities for this room.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+65"/>
+        <location line="+93"/>
         <source>%1 ended the call.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1457,7 +1789,12 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1467,7 +1804,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1490,7 +1827,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1520,7 +1857,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1696,8 +2033,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1713,7 +2050,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1896,7 +2233,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1912,7 +2249,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2083,6 +2420,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2098,7 +2440,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2140,6 +2482,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2152,7 +2509,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2226,7 +2583,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2320,7 +2677,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2344,6 +2701,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2755,7 +3117,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2889,7 +3251,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2985,7 +3347,7 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation type="unfinished"></translation>
@@ -3098,19 +3460,19 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3130,7 +3492,7 @@ If you choose verify, you need to have the other device available. If you choose
         <translation type="unfinished"></translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation type="unfinished">
@@ -3403,7 +3765,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3463,17 +3825,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3507,7 +3869,7 @@ Reason: %4</source>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3520,12 +3882,12 @@ Reason: %4</source>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3572,22 +3934,22 @@ Reason: %4</source>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3607,12 +3969,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3641,6 +4008,11 @@ Reason: %4</source>
         <source>Unpin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3683,7 +4055,7 @@ Reason: %4</source>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -3819,8 +4191,8 @@ Reason: %4</source>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3828,7 +4200,7 @@ Reason: %4</source>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3864,6 +4236,11 @@ Reason: %4</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3938,7 +4315,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4128,7 +4515,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4172,6 +4559,11 @@ When disabled, all messages are sent as a plain text.</source>
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4209,10 +4601,20 @@ OFF - square, ON - circle.</source>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4223,23 +4625,23 @@ OFF - square, ON - circle.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4249,7 +4651,7 @@ This usually causes the application icon in the task bar to animate in some fash
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4286,7 +4688,7 @@ Only affects messages in encrypted chats.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation type="unfinished"></translation>
@@ -4339,7 +4741,7 @@ This setting will take effect upon restart.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4491,7 +4893,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4545,7 +4947,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4606,16 +5008,28 @@ This setting will take effect upon restart.</source>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4654,6 +5068,16 @@ This setting will take effect upon restart.</source>
         <source>%1 ended a call</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_sv.ts b/resources/langs/nheko_sv.ts
index b86aae9e..6fb14a89 100644
--- a/resources/langs/nheko_sv.ts
+++ b/resources/langs/nheko_sv.ts
@@ -89,12 +89,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation type="unfinished"></translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -208,7 +208,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -222,22 +222,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation>Bjöd in användare: %1</translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -263,12 +275,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation>Bekräfta inbjudan</translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation>Är du säker på att du vill bjuda in %1 (%2)?</translation>
     </message>
@@ -313,12 +325,12 @@
         <translation>Hävde bannlysningen av användare: %1</translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation>Cache-migration misslyckades!</translation>
     </message>
@@ -333,7 +345,7 @@
         <translation>Inkompatibel cache-version</translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation>Kunde inte återställa OLM-konto. Vänligen logga in på nytt.</translation>
     </message>
@@ -345,13 +357,13 @@
         <translation>Kunde inte återställa sparad data. Vänligen logga in på nytt.</translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation>Kunde inte sätta upp krypteringsnycklar. Svar från servern: %1 %2. Vänligen försök igen senare.</translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation>Vänligen försök logga in på nytt: %1</translation>
     </message>
@@ -413,6 +425,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -458,7 +769,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation type="unfinished"></translation>
     </message>
@@ -648,7 +959,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation>Dekryptera hemliga nycklar</translation>
     </message>
@@ -892,7 +1203,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation type="unfinished"></translation>
@@ -1107,7 +1418,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation>Alla Filer (*)</translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1167,7 +1478,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation type="unfinished">Lämna rum</translation>
     </message>
@@ -1246,7 +1557,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation type="unfinished"></translation>
@@ -1352,7 +1663,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+246"/>
         <source>%1 removed a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1417,27 +1728,48 @@ Example: https://server.my:8787</source>
         <translation>%1 påbörjade ett samtal.</translation>
     </message>
     <message>
-        <location line="+44"/>
+        <location line="+30"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-150"/>
+        <location line="-193"/>
         <source>%1 answered the call.</source>
         <translation>%1 besvarade samtalet.</translation>
     </message>
     <message>
-        <location line="-51"/>
+        <location line="-339"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+282"/>
         <source>%1 changed the parent communities for this room.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+65"/>
+        <location line="+93"/>
         <source>%1 ended the call.</source>
         <translation>%1 avslutade samtalet.</translation>
     </message>
@@ -1455,7 +1787,12 @@ Example: https://server.my:8787</source>
         <translation>Ring upp</translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation>Skicka en fil</translation>
     </message>
@@ -1465,7 +1802,7 @@ Example: https://server.my:8787</source>
         <translation>Skriv ett meddelande…</translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1488,7 +1825,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1518,7 +1855,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished">Alternativ</translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1694,8 +2031,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation type="unfinished">%1 skickade ett krypterat meddelande</translation>
     </message>
@@ -1711,7 +2048,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1894,7 +2231,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1910,7 +2247,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2081,6 +2418,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2096,7 +2438,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2138,6 +2480,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished">Skicka</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished">Skriv ett meddelande…</translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2150,7 +2507,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2224,7 +2581,7 @@ Example: https://server.my:8787</source>
         <translation>REGISTRERA</translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation type="unfinished">Autouppslag misslyckades. Mottog felkonstruerat svar.</translation>
     </message>
@@ -2318,7 +2675,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation>ingen version lagrad</translation>
     </message>
@@ -2342,6 +2699,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation type="unfinished">Lämna rum</translation>
     </message>
@@ -2751,7 +3113,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation type="unfinished">Kunde inte aktivera kryptering: %1</translation>
     </message>
@@ -2885,7 +3247,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2981,7 +3343,7 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation type="unfinished"></translation>
@@ -3094,19 +3456,19 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation>Kunde inte maskera meddelande: %1</translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation>Kunde inte kryptera event, sändning avbruten!</translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation>Spara bild</translation>
     </message>
@@ -3126,7 +3488,7 @@ If you choose verify, you need to have the other device available. If you choose
         <translation>Spara fil</translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation>
@@ -3394,7 +3756,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3454,17 +3816,17 @@ Reason: %4</source>
         <translation>%1 maskerade sin knackning.</translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation>Du gick med i detta rum.</translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3498,7 +3860,7 @@ Reason: %4</source>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3511,12 +3873,12 @@ Reason: %4</source>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation>Inget rum öppet</translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3562,22 +3924,22 @@ Reason: %4</source>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation>Tillbaka till rumlista</translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation>Inget rum markerat</translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3597,12 +3959,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation>Alternativ för rum</translation>
     </message>
@@ -3631,6 +3998,11 @@ Reason: %4</source>
         <source>Unpin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3673,7 +4045,7 @@ Reason: %4</source>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -3808,8 +4180,8 @@ Reason: %4</source>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3817,7 +4189,7 @@ Reason: %4</source>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation type="unfinished">Tema</translation>
     </message>
@@ -3853,6 +4225,11 @@ Reason: %4</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3927,7 +4304,17 @@ Reason: %4</source>
         <translation type="unfinished">Dekryptera meddelanden i sidofält</translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4117,7 +4504,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4162,6 +4549,11 @@ Om denna inställning är av kommer alla meddelanden skickas som oformatterad te
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4200,10 +4592,20 @@ OFF - square, ON - circle.</source>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4214,24 +4616,24 @@ OFF - square, ON - circle.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation type="unfinished">Visar en notis när ett meddelande mottags.
 Detta gör vanligtvis att ikonen i aktivitetsfältet animeras på något sätt.</translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4241,7 +4643,7 @@ Detta gör vanligtvis att ikonen i aktivitetsfältet animeras på något sätt.<
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4279,7 +4681,7 @@ Only affects messages in encrypted chats.</source>
 Påverkar endast krypterade chattar.</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation type="unfinished"></translation>
@@ -4332,7 +4734,7 @@ This setting will take effect upon restart.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation type="unfinished">Välj en fil</translation>
     </message>
@@ -4484,7 +4886,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation>Igår</translation>
     </message>
@@ -4538,7 +4940,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation>Du skickade ett ljudklipp</translation>
     </message>
@@ -4599,16 +5001,28 @@ This setting will take effect upon restart.</source>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation>Du: %1</translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation>%1: %2</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation>Du skickade ett krypterat meddelande</translation>
     </message>
@@ -4647,6 +5061,16 @@ This setting will take effect upon restart.</source>
         <source>%1 ended a call</source>
         <translation>%1 lade på</translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_vi.ts b/resources/langs/nheko_vi.ts
index a0cc6b59..6dd6027e 100644
--- a/resources/langs/nheko_vi.ts
+++ b/resources/langs/nheko_vi.ts
@@ -89,12 +89,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation type="unfinished"></translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -207,7 +207,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -221,22 +221,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -262,12 +274,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -312,12 +324,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation type="unfinished"></translation>
     </message>
@@ -332,7 +344,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -344,13 +356,13 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -412,6 +424,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -457,7 +768,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation type="unfinished"></translation>
     </message>
@@ -646,7 +957,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation type="unfinished"></translation>
     </message>
@@ -890,7 +1201,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation type="unfinished"></translation>
@@ -1105,7 +1416,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1165,7 +1476,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1244,7 +1555,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation type="unfinished"></translation>
@@ -1350,7 +1661,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+246"/>
         <source>%1 removed a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1415,27 +1726,48 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+44"/>
+        <location line="+30"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-150"/>
+        <location line="-193"/>
         <source>%1 answered the call.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-51"/>
+        <location line="-339"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+282"/>
         <source>%1 changed the parent communities for this room.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+65"/>
+        <location line="+93"/>
         <source>%1 ended the call.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1453,7 +1785,12 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1463,7 +1800,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1486,7 +1823,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1516,7 +1853,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1692,8 +2029,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1709,7 +2046,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1892,7 +2229,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1908,7 +2245,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2079,6 +2416,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2094,7 +2436,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2136,6 +2478,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2148,7 +2505,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2222,7 +2579,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2316,7 +2673,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2340,6 +2697,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2747,7 +3109,7 @@ Example: https://server.my:8787</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2881,7 +3243,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2977,7 +3339,7 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation type="unfinished"></translation>
@@ -3090,19 +3452,19 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3122,7 +3484,7 @@ If you choose verify, you need to have the other device available. If you choose
         <translation type="unfinished"></translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation type="unfinished">
@@ -3385,7 +3747,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3445,17 +3807,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3489,7 +3851,7 @@ Reason: %4</source>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3502,12 +3864,12 @@ Reason: %4</source>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3552,22 +3914,22 @@ Reason: %4</source>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3587,12 +3949,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3621,6 +3988,11 @@ Reason: %4</source>
         <source>Unpin</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3663,7 +4035,7 @@ Reason: %4</source>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation type="unfinished">
             <numerusform></numerusform>
@@ -3797,8 +4169,8 @@ Reason: %4</source>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3806,7 +4178,7 @@ Reason: %4</source>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3842,6 +4214,11 @@ Reason: %4</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3916,7 +4293,17 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4106,7 +4493,7 @@ Reason: %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4150,6 +4537,11 @@ When disabled, all messages are sent as a plain text.</source>
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4187,10 +4579,20 @@ OFF - square, ON - circle.</source>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4201,23 +4603,23 @@ OFF - square, ON - circle.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4227,7 +4629,7 @@ This usually causes the application icon in the task bar to animate in some fash
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4264,7 +4666,7 @@ Only affects messages in encrypted chats.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation type="unfinished"></translation>
@@ -4317,7 +4719,7 @@ This setting will take effect upon restart.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4469,7 +4871,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4523,7 +4925,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4584,16 +4986,28 @@ This setting will take effect upon restart.</source>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4632,6 +5046,16 @@ This setting will take effect upon restart.</source>
         <source>%1 ended a call</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>
diff --git a/resources/langs/nheko_zh_CN.ts b/resources/langs/nheko_zh_CN.ts
index 5ae785c3..7a241c94 100644
--- a/resources/langs/nheko_zh_CN.ts
+++ b/resources/langs/nheko_zh_CN.ts
@@ -89,12 +89,12 @@
         <translation>移除此别名</translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+19"/>
         <source>#new-alias:server.tld</source>
         <translation>#new-alias:server.tld</translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+12"/>
         <source>Add</source>
         <translation>添加</translation>
     </message>
@@ -130,7 +130,7 @@
 <context>
     <name>Cache</name>
     <message numerus="yes">
-        <location filename="../../src/Cache.cpp" line="+2761"/>
+        <location filename="../../src/Cache.cpp" line="+2821"/>
         <source>%1 and %n other(s)</source>
         <translation>
             <numerusform>%1 和另外 %n 人</numerusform>
@@ -207,7 +207,7 @@
 <context>
     <name>CallManager</name>
     <message>
-        <location filename="../../src/voip/CallManager.cpp" line="+534"/>
+        <location filename="../../src/voip/CallManager.cpp" line="+819"/>
         <source>Entire screen</source>
         <translation>整个屏幕</translation>
     </message>
@@ -221,22 +221,34 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+739"/>
+        <location line="+834"/>
         <source>Invited user: %1</source>
         <translation>邀请已发送:%1</translation>
     </message>
     <message>
-        <location line="-500"/>
+        <location line="-554"/>
+        <source>Confirm logout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Because of the following reason Nheko wants to drop you to the login page:
+%1
+If you think this is a mistake, you can close Nheko instead to possibly recover your encrpytion keys. After you have been dropped to the login page, you can sign in again using your usual methods.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+101"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update Nheko or clear your cache.</source>
         <translation>当前设备中的缓存比Nheko支持的版本更新,请更新Nheko或清理缓存。</translation>
     </message>
     <message>
-        <location line="+41"/>
+        <location line="+35"/>
         <source>Failed to open database, logging out!</source>
         <translation>无法打开数据库,账户将登出!</translation>
     </message>
     <message>
-        <location line="+304"/>
+        <location line="+262"/>
         <source>Knock on room</source>
         <translation>请求加入聊天室</translation>
     </message>
@@ -262,12 +274,12 @@
     </message>
     <message>
         <location line="+43"/>
-        <location line="+470"/>
+        <location line="+473"/>
         <source>Confirm invite</source>
         <translation>确认邀请</translation>
     </message>
     <message>
-        <location line="-469"/>
+        <location line="-472"/>
         <source>Do you really want to invite %1 (%2)?</source>
         <translation>你真的想要邀请 %1 (%2) 吗?</translation>
     </message>
@@ -312,12 +324,12 @@
         <translation>解封用户:%1</translation>
     </message>
     <message>
-        <location line="+375"/>
+        <location line="+378"/>
         <source>Do you really want to start a private chat with %1?</source>
         <translation>是否确认与 %1 开始私密聊天?</translation>
     </message>
     <message>
-        <location line="-969"/>
+        <location line="-924"/>
         <source>Cache migration failed!</source>
         <translation>缓存迁移失败!</translation>
     </message>
@@ -332,7 +344,7 @@
         <translation>无法兼容缓存版本</translation>
     </message>
     <message>
-        <location line="+61"/>
+        <location line="+54"/>
         <source>Failed to restore OLM account. Please login again.</source>
         <translation>恢复 OLM 账户失败。请重新登录。</translation>
     </message>
@@ -344,13 +356,13 @@
         <translation>恢复保存的数据失败。请重新登录。</translation>
     </message>
     <message>
-        <location line="+94"/>
+        <location line="+54"/>
         <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
         <translation>未能设置加密密钥。服务器响应:%1 %2。请稍后再试。</translation>
     </message>
     <message>
         <location line="+35"/>
-        <location line="+113"/>
+        <location line="+112"/>
         <source>Please try to login again: %1</source>
         <translation>请尝试再次登录:%1</translation>
     </message>
@@ -412,6 +424,305 @@ You may optionally provide a reason for others to accept your knock:</source>
     </message>
 </context>
 <context>
+    <name>CommandCompleter</name>
+    <message>
+        <location filename="../../src/CommandCompleter.cpp" line="+103"/>
+        <source>/me &lt;message&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/react &lt;text&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/join (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/knock (!roomid|#alias) [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/part [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/leave [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/invite @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/kick @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/ban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unban @userid [reason]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/redact ($eventid|@userid)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/roomnick &lt;displayname&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/shrug [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/fliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/unfliptable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/sovietflip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/clear-timeline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/reset-state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rotate-megolm-session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/md [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/plain [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbow [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowme [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/notice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbownotice [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/confetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/rainbowconfetti [message]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/goto ($eventid|message index|matrix:r/room/e/event)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttodm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>/converttoroom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Send a message expressing an action.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send &lt;text&gt; as a reaction when you’re replying to a message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ask to join a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Leave a room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invite a user into the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Kick a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ban a user from the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unban a user in the current room. Reason is optional.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Redact an event or all locally cached messages of a user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change your displayname in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>¯\_(ツ)_/¯ with an optional message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>(╯°□°)╯︵ ┻━┻</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>┯━┯╭( º _ º╭)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ノ┬─┬ノ ︵ ( \o°o)\</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Clear the currently cached messages in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Refetch the state in this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rotate the current symmetric encryption key.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a markdown formatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send an unformatted message (ignoring the global setting).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send /me in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a bot message in rainbow colors.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Send a message in rainbow colors with confetti.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Go to this event or link.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this room to a direct chat.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Convert this direct chat into a room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CommunitiesList</name>
     <message>
         <location filename="../qml/CommunitiesList.qml" line="+51"/>
@@ -457,7 +768,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation>显示直接聊天。</translation>
     </message>
     <message>
-        <location line="+66"/>
+        <location line="+67"/>
         <source>Favourites</source>
         <translation>收藏</translation>
     </message>
@@ -646,7 +957,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>CrossSigningSecrets</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+282"/>
+        <location filename="../../src/ChatPage.cpp" line="+285"/>
         <source>Decrypt secrets</source>
         <translation>解密密钥</translation>
     </message>
@@ -890,7 +1201,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>HiddenEvents</name>
     <message>
-        <location filename="../../src/ui/HiddenEvents.cpp" line="+80"/>
+        <location filename="../../src/ui/HiddenEvents.cpp" line="+91"/>
         <location line="+10"/>
         <source>Failed to set hidden events: %1</source>
         <translation>未能设置隐藏事件:%1</translation>
@@ -1105,7 +1416,7 @@ You may optionally provide a reason for others to accept your knock:</source>
         <translation>所有文件 (*)</translation>
     </message>
     <message>
-        <location line="+771"/>
+        <location line="+796"/>
         <source>Upload of &apos;%1&apos; failed</source>
         <translation>上传 “%1” 失败</translation>
     </message>
@@ -1165,7 +1476,7 @@ You may optionally provide a reason for others to accept your knock:</source>
 <context>
     <name>LeaveRoomDialog</name>
     <message>
-        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/>
+        <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+18"/>
         <source>Leave room</source>
         <translation>离开聊天室</translation>
     </message>
@@ -1245,7 +1556,7 @@ Example: https://server.my:8787</source>
     <message>
         <location filename="../../src/LoginPage.cpp" line="+86"/>
         <location line="+6"/>
-        <location line="+58"/>
+        <location line="+64"/>
         <location line="+126"/>
         <source>You have entered an invalid Matrix ID  e.g @joe:matrix.org</source>
         <translation>你输入了无效的Matrix ID 例如 @joe:matrix.org</translation>
@@ -1351,7 +1662,17 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageDelegate</name>
     <message>
-        <location filename="../qml/delegates/MessageDelegate.qml" line="+205"/>
+        <location filename="../qml/delegates/MessageDelegate.qml" line="+78"/>
+        <source>This room was replaced for the following reason: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Go to replacement room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+162"/>
         <source>%1 removed a message</source>
         <translation>%1 移除了一条消息</translation>
     </message>
@@ -1427,16 +1748,27 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+14"/>
+        <source>%1 rejected the call.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 select answer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
         <source>%1 ended the call.</source>
         <translation>%1 已结束通话。</translation>
     </message>
     <message>
         <location line="+14"/>
+        <location line="+14"/>
         <source>%1 is negotiating the call...</source>
         <translation>%1 正在接通中...</translation>
     </message>
     <message>
-        <location line="+122"/>
+        <location line="+123"/>
         <source>Allow them in</source>
         <translation>允许加入</translation>
     </message>
@@ -1454,7 +1786,12 @@ Example: https://server.my:8787</source>
         <translation>开始通话</translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+0"/>
+        <source>Already on a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+31"/>
         <source>Send a file</source>
         <translation>发送文件</translation>
     </message>
@@ -1464,7 +1801,7 @@ Example: https://server.my:8787</source>
         <translation>写一条消息…</translation>
     </message>
     <message>
-        <location line="+281"/>
+        <location line="+288"/>
         <source>Stickers</source>
         <translation>贴纸</translation>
     </message>
@@ -1487,7 +1824,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>MessageView</name>
     <message>
-        <location filename="../qml/MessageView.qml" line="+117"/>
+        <location filename="../qml/MessageView.qml" line="+128"/>
         <source>Edit</source>
         <translation>编辑</translation>
     </message>
@@ -1517,7 +1854,7 @@ Example: https://server.my:8787</source>
         <translation>选项</translation>
     </message>
     <message>
-        <location line="+434"/>
+        <location line="+438"/>
         <source>Reason for removal</source>
         <translation>移除原因</translation>
     </message>
@@ -1693,8 +2030,8 @@ Example: https://server.my:8787</source>
 <context>
     <name>NotificationsManager</name>
     <message>
-        <location filename="../../src/notifications/Manager.cpp" line="+23"/>
-        <location filename="../../src/notifications/ManagerMac.cpp" line="+46"/>
+        <location filename="../../src/notifications/Manager.cpp" line="+24"/>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="+61"/>
         <source>%1 sent an encrypted message</source>
         <translation>%1 发送了一条加密消息</translation>
     </message>
@@ -1710,7 +2047,7 @@ Example: https://server.my:8787</source>
         <translation>%1 回复了一条加密消息</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+15"/>
         <source>%1 replied to a message</source>
         <translation>%1 回复了一条消息</translation>
     </message>
@@ -1893,7 +2230,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerLevels</name>
     <message>
-        <location filename="../../src/PowerlevelsEditModels.cpp" line="+736"/>
+        <location filename="../../src/PowerlevelsEditModels.cpp" line="+738"/>
         <source>Failed to update powerlevel: %1</source>
         <translation>未能更新权限等级:%1</translation>
     </message>
@@ -1909,7 +2246,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>PowerlevelsTypeListModel</name>
     <message>
-        <location line="-465"/>
+        <location line="-467"/>
         <source>Other events</source>
         <translation>其他事件</translation>
     </message>
@@ -2080,6 +2417,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Reject a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Change the room emotes</source>
         <translation>更改聊天室表情</translation>
     </message>
@@ -2095,7 +2437,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../src/main.cpp" line="+230"/>
+        <location filename="../../src/main.cpp" line="+231"/>
         <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2137,6 +2479,21 @@ Example: https://server.my:8787</source>
         <source>type</source>
         <translation>类型</translation>
     </message>
+    <message>
+        <location filename="../../src/notifications/ManagerMac.cpp" line="-29"/>
+        <source>Respond</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Send</source>
+        <translation type="unfinished">发送</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write a message...</source>
+        <translation type="unfinished">写一条消息…</translation>
+    </message>
 </context>
 <context>
     <name>ReadReceipts</name>
@@ -2149,7 +2506,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>ReadReceiptsModel</name>
     <message>
-        <location filename="../../src/ReadReceiptsModel.cpp" line="+111"/>
+        <location filename="../../src/ReadReceiptsModel.cpp" line="+112"/>
         <source>Yesterday, %1</source>
         <translation>昨天,%1</translation>
     </message>
@@ -2223,7 +2580,7 @@ Example: https://server.my:8787</source>
         <translation>注册</translation>
     </message>
     <message>
-        <location filename="../../src/RegisterPage.cpp" line="+80"/>
+        <location filename="../../src/RegisterPage.cpp" line="+84"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation>自动发现失败。收到格式错误的回复。</translation>
     </message>
@@ -2317,7 +2674,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2027"/>
+        <location filename="../../src/Cache.cpp" line="+1945"/>
         <source>no version stored</source>
         <translation>没有存储版本</translation>
     </message>
@@ -2341,6 +2698,11 @@ Example: https://server.my:8787</source>
     </message>
     <message>
         <location line="+12"/>
+        <source>Room settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
         <source>Leave room</source>
         <translation>离开聊天室</translation>
     </message>
@@ -2749,7 +3111,7 @@ Example: https://server.my:8787</source>
         <translation>显示更多</translation>
     </message>
     <message>
-        <location filename="../../src/ui/RoomSettings.cpp" line="+215"/>
+        <location filename="../../src/ui/RoomSettings.cpp" line="+216"/>
         <source>Failed to enable encryption: %1</source>
         <translation>未能启用加密:%1</translation>
     </message>
@@ -2883,7 +3245,7 @@ Example: https://server.my:8787</source>
 <context>
     <name>SecretStorage</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="-4599"/>
+        <location filename="../../src/Cache.cpp" line="-4564"/>
         <source>Failed to connect to secret storage</source>
         <translation>未能连接秘密存储</translation>
     </message>
@@ -2981,7 +3343,7 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>SingleImagePackModel</name>
     <message>
-        <location filename="../../src/SingleImagePackModel.cpp" line="+272"/>
+        <location filename="../../src/SingleImagePackModel.cpp" line="+278"/>
         <location line="+25"/>
         <source>Failed to update image pack: %1</source>
         <translation>未能更新表情包:%1</translation>
@@ -3094,19 +3456,19 @@ If you choose verify, you need to have the other device available. If you choose
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+1311"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+1380"/>
         <location line="+17"/>
         <source>Message redaction failed: %1</source>
         <translation>删除消息失败:%1</translation>
     </message>
     <message>
-        <location line="+116"/>
+        <location line="+115"/>
         <location line="+5"/>
         <source>Failed to encrypt event, sending aborted!</source>
         <translation>未能加密事件,发送中止!</translation>
     </message>
     <message>
-        <location line="+179"/>
+        <location line="+196"/>
         <source>Save image</source>
         <translation>保存图像</translation>
     </message>
@@ -3126,7 +3488,7 @@ If you choose verify, you need to have the other device available. If you choose
         <translation>保存文件</translation>
     </message>
     <message numerus="yes">
-        <location line="+258"/>
+        <location line="+274"/>
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation>
@@ -3390,7 +3752,7 @@ Reason: %4</source>
 原因:%4</translation>
     </message>
     <message>
-        <location line="+126"/>
+        <location line="+152"/>
         <source>%2 revoked the invite to %1.</source>
         <translation>%2 撤销了对 %1 的邀请。</translation>
     </message>
@@ -3450,17 +3812,17 @@ Reason: %4</source>
         <translation>%1 删除了其加入请求。</translation>
     </message>
     <message>
-        <location line="-1569"/>
+        <location line="-1627"/>
         <source>You joined this room.</source>
         <translation>你已加入此聊天室。</translation>
     </message>
     <message>
-        <location line="+893"/>
+        <location line="+925"/>
         <source>%1 made this room require an invitation to join.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+628"/>
+        <location line="+654"/>
         <source>%1 invited %2.</source>
         <translation>%1 邀请了 %2。</translation>
     </message>
@@ -3494,7 +3856,7 @@ Reason: %4</source>
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+243"/>
+        <location filename="../qml/TimelineRow.qml" line="+247"/>
         <source>Edited</source>
         <translation>已编辑</translation>
     </message>
@@ -3507,12 +3869,12 @@ Reason: %4</source>
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+36"/>
+        <location filename="../qml/TimelineView.qml" line="+42"/>
         <source>No room open</source>
         <translation>未打开聊天室</translation>
     </message>
     <message>
-        <location line="+154"/>
+        <location line="+157"/>
         <source>No preview available</source>
         <translation>预览不可用</translation>
     </message>
@@ -3557,22 +3919,22 @@ Reason: %4</source>
 <context>
     <name>TopBar</name>
     <message>
-        <location filename="../qml/TopBar.qml" line="+137"/>
+        <location filename="../qml/TopBar.qml" line="+152"/>
         <source>Back to room list</source>
         <translation>返回聊天室列表</translation>
     </message>
     <message>
-        <location line="-118"/>
+        <location line="-133"/>
         <source>No room selected</source>
         <translation>未选择聊天室</translation>
     </message>
     <message>
-        <location line="+100"/>
+        <location line="+115"/>
         <source>In %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+83"/>
+        <location line="+111"/>
         <source>Show room members.</source>
         <translation>显示聊天室成员。</translation>
     </message>
@@ -3592,12 +3954,17 @@ Reason: %4</source>
         <translation>此聊天室包含未经验证的设备!</translation>
     </message>
     <message>
-        <location line="+22"/>
+        <location line="-44"/>
         <source>Show or hide pinned messages</source>
         <translation>显示或隐藏置顶消息</translation>
     </message>
     <message>
-        <location line="+28"/>
+        <location line="+66"/>
+        <source>Search this room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+26"/>
         <source>Room options</source>
         <translation>聊天室选项</translation>
     </message>
@@ -3626,6 +3993,11 @@ Reason: %4</source>
         <source>Unpin</source>
         <translation>取消置顶</translation>
     </message>
+    <message>
+        <location line="+63"/>
+        <source>Enter search query</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayIcon</name>
@@ -3668,7 +4040,7 @@ Reason: %4</source>
 <context>
     <name>UploadBox</name>
     <message numerus="yes">
-        <location filename="../qml/UploadBox.qml" line="+79"/>
+        <location filename="../qml/UploadBox.qml" line="+80"/>
         <source>Upload %n file(s)</source>
         <translation>
             <numerusform>上传文件</numerusform>
@@ -3802,8 +4174,8 @@ Reason: %4</source>
 <context>
     <name>UserSettings</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+498"/>
-        <location filename="../../src/UserSettingsPage.h" line="+232"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+533"/>
+        <location filename="../../src/UserSettingsPage.h" line="+243"/>
         <source>Default</source>
         <translation>默认</translation>
     </message>
@@ -3811,7 +4183,7 @@ Reason: %4</source>
 <context>
     <name>UserSettingsModel</name>
     <message>
-        <location line="+404"/>
+        <location line="+407"/>
         <source>Theme</source>
         <translation>主题</translation>
     </message>
@@ -3847,6 +4219,11 @@ Reason: %4</source>
     </message>
     <message>
         <location line="+2"/>
+        <source>Use shift+enter to send and enter to start a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Enable message bubbles</source>
         <translation>启用消息气泡</translation>
     </message>
@@ -3921,7 +4298,17 @@ Reason: %4</source>
         <translation>解密侧边栏中的消息</translation>
     </message>
     <message>
+        <location line="+2"/>
+        <source>Decrypt notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+4"/>
+        <source>Display fancy effects such as confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Privacy Screen</source>
         <translation>隐私屏幕</translation>
     </message>
@@ -4111,7 +4498,7 @@ Reason: %4</source>
         <translation>通过 D-Bus 公开聊天室信息</translation>
     </message>
     <message>
-        <location line="+97"/>
+        <location line="+103"/>
         <source>Default</source>
         <translation>默认</translation>
     </message>
@@ -4158,6 +4545,11 @@ When disabled, all messages are sent as a plain text.</source>
     </message>
     <message>
         <location line="+4"/>
+        <source>Invert the behavior of the enter key in the text input, making it send the message when shift+enter is pressed and starting a new line when enter is pressed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Messages get a bubble background. This also triggers some layout changes (WIP).</source>
         <translation>消息获得气泡背景。这也会触发一些布局变化 (WIP)。</translation>
     </message>
@@ -4197,10 +4589,20 @@ OFF - 方形,ON - 圆形。</translation>
     </message>
     <message>
         <location line="+16"/>
+        <source>Decrypt messages shown in notifications for encrypted chats.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
         <source>Choose where to show the total number of notifications contained within a community or tag.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="+3"/>
+        <source>Some messages can be sent with fancy effects. For example, messages sent with &apos;/confetti&apos; will show confetti on screen.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location line="+16"/>
         <source>Automatically replies to key requests from other users if they are verified, even if that device shouldn&apos;t have access to those keys otherwise.</source>
         <translation type="unfinished"></translation>
@@ -4211,24 +4613,24 @@ OFF - 方形,ON - 圆形。</translation>
         <translation>验证你自己的设备的密钥。如果它已被缓存,验证你的设备之一将为你的所有其他设备和已验证你的用户标记它为已验证。</translation>
     </message>
     <message>
-        <location line="-67"/>
+        <location line="-72"/>
         <source>Show an alert when a message is received.
 This usually causes the application icon in the task bar to animate in some fashion.</source>
         <translation>收到消息时显示通知。
 这通常会导致任务栏中的应用程序图标以某种方式呈现动画效果。</translation>
     </message>
     <message>
-        <location line="-303"/>
+        <location line="-319"/>
         <source>Communities sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+34"/>
+        <location line="+38"/>
         <source>Show message counts for communities and tags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+215"/>
+        <location line="+223"/>
         <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4238,7 +4640,7 @@ This usually causes the application icon in the task bar to animate in some fash
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location line="+21"/>
         <source>Display rooms with new messages first.
 If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
 If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms that you have muted will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
@@ -4280,7 +4682,7 @@ Only affects messages in encrypted chats.</source>
 仅影响加密聊天中的消息。</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="+11"/>
         <source>When the window loses focus, the timeline will
 be blurred.</source>
         <translation>当窗口失去焦点时,时间线将
@@ -4336,7 +4738,7 @@ This setting will take effect upon restart.</source>
 这个设置将在重新启动时生效。</translation>
     </message>
     <message>
-        <location line="+419"/>
+        <location line="+442"/>
         <source>Select a file</source>
         <translation>选择一个文件</translation>
     </message>
@@ -4488,7 +4890,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>descriptiveTime</name>
     <message>
-        <location filename="../../src/Utils.cpp" line="+200"/>
+        <location filename="../../src/Utils.cpp" line="+201"/>
         <source>Yesterday</source>
         <translation>昨天</translation>
     </message>
@@ -4542,7 +4944,7 @@ This setting will take effect upon restart.</source>
 <context>
     <name>message-description sent:</name>
     <message>
-        <location filename="../../src/Utils.h" line="+117"/>
+        <location filename="../../src/Utils.h" line="+116"/>
         <source>You sent an audio clip</source>
         <translation>你发送了一个音频片段</translation>
     </message>
@@ -4603,16 +5005,28 @@ This setting will take effect upon restart.</source>
     </message>
     <message>
         <location line="+5"/>
+        <location line="+15"/>
         <source>You: %1</source>
         <translation>你:%1</translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-13"/>
+        <location line="+16"/>
         <source>%1: %2</source>
         <translation>%1:%2</translation>
     </message>
     <message>
-        <location line="+6"/>
+        <location line="-11"/>
+        <source>You sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 sent some confetti</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+15"/>
         <source>You sent an encrypted message</source>
         <translation>你发送了一条加密消息</translation>
     </message>
@@ -4651,6 +5065,16 @@ This setting will take effect upon restart.</source>
         <source>%1 ended a call</source>
         <translation>%1 结束了通话</translation>
     </message>
+    <message>
+        <location line="+4"/>
+        <source>You rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 rejected a call</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>utils</name>