diff --git a/src/components/common/messaging/MessageBox.tsx b/src/components/common/messaging/MessageBox.tsx
index 97b22b55cc6819e97da346bc3390c40fcac332f6..322b5fc12a4e14cef508f9de33d599177bf1fa6e 100644
--- a/src/components/common/messaging/MessageBox.tsx
+++ b/src/components/common/messaging/MessageBox.tsx
@@ -41,6 +41,7 @@ import FilePreview from "./bars/FilePreview";
 import ReplyBar from "./bars/ReplyBar";
 import owoify from "owoify-js";
 import { ExperimentOptions } from "../../../redux/reducers/experiments";
+import Button from "../../ui/Button";
 
 type Props = {
     channel: Channel;
@@ -114,6 +115,7 @@ export const CAN_UPLOAD_AT_ONCE = 4;
 
 export default observer(({ channel }: Props) => {
     const [draft, setDraft] = useState(getState().drafts[channel._id] ?? "");
+    let messageText = draft ?? "";
     const experiments = getState().experiments;
 
     const [uploadState, setUploadState] = useState<UploadState>({
@@ -409,6 +411,61 @@ export default observer(({ channel }: Props) => {
                 : undefined,
     });
 
+    const messageTextArea = <TextAreaAutoSize
+        autoFocus
+        hideBorder
+        maxRows={20}
+        id="message"
+        onKeyUp={onKeyUp}
+        value={messageText}
+        padding="var(--message-box-padding)"
+        onKeyDown={(e) => {
+            if (onKeyDown(e)) return;
+
+            if (
+                e.key === "ArrowUp" &&
+                (!draft || draft.length === 0)
+            ) {
+                e.preventDefault();
+                internalEmit("MessageRenderer", "edit_last");
+                return;
+            }
+
+            if (
+                !e.shiftKey &&
+                e.key === "Enter" &&
+                !isTouchscreenDevice
+            ) {
+                e.preventDefault();
+                return send();
+            }
+
+            debouncedStopTyping(true);
+        }}
+        placeholder={
+            channel.channel_type === "DirectMessage"
+                ? translate("app.main.channel.message_who", {
+                    person: channel.recipient?.username,
+                })
+                : channel.channel_type === "SavedMessages"
+                ? translate("app.main.channel.message_saved")
+                : translate("app.main.channel.message_where", {
+                    channel_name: channel.name,
+                })
+        }
+        disabled={
+            uploadState.type === "uploading" ||
+            uploadState.type === "sending"
+        }
+        onChange={(e) => {
+            setMessage(e.currentTarget.value);
+            startTyping();
+            onChange(e);
+        }}
+        onFocus={onFocus}
+        onBlur={onBlur}
+    />;
+
     return (
         <>
             <AutoComplete {...autoCompleteProps} />
@@ -486,13 +543,31 @@ export default observer(({ channel }: Props) => {
                         />
                     </Action>
                 ) : undefined}
+                {/*<Button onClick={() =>*/}
+                {/*    openScreen({*/}
+                {/*        id: "szuru_pop",*/}
+                {/*        callback: (value) => {*/}
+                {/*            setMessage(value)*/}
+                {/*            console.log("callback called")*/}
+
+                    {/*    if (*/}
+                    {/*        !e.shiftKey &&*/}
+                    {/*        e.key === "Enter" &&*/}
+                    {/*        !isTouchscreenDevice*/}
+                    {/*    ) {*/}
+                    {/*        e.preventDefault();*/}
+                    {/*        return send();*/}
+                    {/*    }*/}
+
+                    {/*    debouncedStopTyping(true);*/}
+                    {/*}}*/}
                 <TextAreaAutoSize
                     autoFocus
                     hideBorder
                     maxRows={20}
                     id="message"
                     onKeyUp={onKeyUp}
-                    value={draft ?? ""}
+                    value={messageText}
                     padding="var(--message-box-padding)"
                     onKeyDown={(e) => {
                         if (onKeyDown(e)) return;
diff --git a/src/context/intermediate/Intermediate.tsx b/src/context/intermediate/Intermediate.tsx
index ac3f8f47c0c9991a81c8462ebe4914ce0a46186b..227a23c2696099a366e870c5d203c8dad9377758 100644
--- a/src/context/intermediate/Intermediate.tsx
+++ b/src/context/intermediate/Intermediate.tsx
@@ -68,6 +68,10 @@ export type Screen =
           defaultValue?: string;
           callback: (value: string) => Promise<void>;
       }
+    | {
+        id: "szuru_pop";
+        callback: (value: string) => Promise<void>;
+    }
     | {
           id: "onboarding";
           callback: (
diff --git a/src/context/intermediate/Popovers.tsx b/src/context/intermediate/Popovers.tsx
index 199dc34993a48a34d3f76a84103acc9eacbac71d..8b720336e197a62b41dda2b72a3c7fa77ee018e8 100644
--- a/src/context/intermediate/Popovers.tsx
+++ b/src/context/intermediate/Popovers.tsx
@@ -14,6 +14,7 @@ import { PendingRequests } from "./popovers/PendingRequests";
 import { ServerIdentityModal } from "./popovers/ServerIdentityModal";
 import { UserPicker } from "./popovers/UserPicker";
 import { UserProfile } from "./popovers/UserProfile";
+import { SzuruPop } from "./popovers/SzuruPop";
 
 export default function Popovers() {
     const { screen } = useContext(IntermediateContext);
@@ -27,6 +28,8 @@ export default function Popovers() {
     switch (screen.id) {
         case "profile":
             return <UserProfile {...screen} onClose={onClose} />;
+        case "szuru_pop":
+            return <SzuruPop {...screen} onClose={onClose} />;
         case "user_picker":
             return <UserPicker {...screen} onClose={onClose} />;
         case "image_viewer":
diff --git a/src/redux/reducers/experiments.ts b/src/redux/reducers/experiments.ts
index 7915569aaf1d89b34fb83a47b037d6b6583918b8..0170550f5f1c86292eaf9b596f0bbf17c25aeb12 100644
--- a/src/redux/reducers/experiments.ts
+++ b/src/redux/reducers/experiments.ts
@@ -4,6 +4,34 @@ export const EXPERIMENTS: { [key in Experiments]: { title: string, description:
     'search': {
         title: 'Search',
         description: 'Allows you to search for messages in channels.'
+    },
+    'owo': {
+        title: 'OwO',
+        description: 'OwOifwies ywour outgwoing mwessages.'
+    },
+    'uwu': {
+        title: 'UwU',
+        description: 'OwOifwies ywouw outgwoing mwessages \(^▽^)/'
+    },
+    'uvu': {
+        title: 'UvU',
+        description: 'OwOifwies ywouw owoutgwowoing mwessages \(^▽^)/'
+    },
+    'rainbow': {
+        title: 'Rainbow',
+        description: 'Turns your outgoing messages into a gay rainbow.'
+    },
+    'censor': {
+        title: 'Censor',
+        description: ''
+    },
+    'insane_asylum': {
+        title: 'Insane asylum',
+        description: 'JAN'
+    },
+    'light_insane_asylum': {
+        title: 'Insane asylum LITE',
+        description: 'Jan'
     }
 };