From 1bbbbe51eadd7dd6501f4543b75834ab625e26bc Mon Sep 17 00:00:00 2001 From: Armored Dragon Date: Fri, 17 May 2024 16:45:21 -0500 Subject: [PATCH 1/2] Remove Armored Chat Signed-off-by: Armored Dragon --- applications/armored-chat/README.md | 25 -- applications/armored-chat/armored_chat.js | 258 --------------- .../armored-chat/compact-messages.css | 22 -- .../armored-chat/compact-messages.scss | 29 -- applications/armored-chat/encrpytion.js | 22 -- applications/armored-chat/img/icon_black.png | Bin 400 -> 0 bytes applications/armored-chat/img/icon_white.png | Bin 778 -> 0 bytes applications/armored-chat/img/ui/send.svg | 42 --- .../armored-chat/img/ui/send_black.png | Bin 1950 -> 0 bytes .../armored-chat/img/ui/send_white.png | Bin 1956 -> 0 bytes .../armored-chat/img/ui/settings_black.png | Bin 1561 -> 0 bytes .../armored-chat/img/ui/settings_white.png | Bin 1568 -> 0 bytes .../armored-chat/img/ui/social_black.png | Bin 3485 -> 0 bytes .../armored-chat/img/ui/social_white.png | Bin 3491 -> 0 bytes applications/armored-chat/img/ui/user.svg | 42 --- .../armored-chat/img/ui/user_black.png | Bin 2463 -> 0 bytes .../armored-chat/img/ui/user_white.png | Bin 2446 -> 0 bytes .../armored-chat/img/ui/world_black.png | Bin 4066 -> 0 bytes .../armored-chat/img/ui/world_white.png | Bin 3960 -> 0 bytes applications/armored-chat/index.css | 217 ------------- applications/armored-chat/index.html | 301 ------------------ applications/armored-chat/index.scss | 258 --------------- 22 files changed, 1216 deletions(-) delete mode 100644 applications/armored-chat/README.md delete mode 100644 applications/armored-chat/armored_chat.js delete mode 100644 applications/armored-chat/compact-messages.css delete mode 100644 applications/armored-chat/compact-messages.scss delete mode 100644 applications/armored-chat/encrpytion.js delete mode 100644 applications/armored-chat/img/icon_black.png delete mode 100644 applications/armored-chat/img/icon_white.png delete mode 100644 applications/armored-chat/img/ui/send.svg delete mode 100644 applications/armored-chat/img/ui/send_black.png delete mode 100644 applications/armored-chat/img/ui/send_white.png delete mode 100644 applications/armored-chat/img/ui/settings_black.png delete mode 100644 applications/armored-chat/img/ui/settings_white.png delete mode 100644 applications/armored-chat/img/ui/social_black.png delete mode 100644 applications/armored-chat/img/ui/social_white.png delete mode 100644 applications/armored-chat/img/ui/user.svg delete mode 100644 applications/armored-chat/img/ui/user_black.png delete mode 100644 applications/armored-chat/img/ui/user_white.png delete mode 100644 applications/armored-chat/img/ui/world_black.png delete mode 100644 applications/armored-chat/img/ui/world_white.png delete mode 100644 applications/armored-chat/index.css delete mode 100644 applications/armored-chat/index.html delete mode 100644 applications/armored-chat/index.scss diff --git a/applications/armored-chat/README.md b/applications/armored-chat/README.md deleted file mode 100644 index d067f71..0000000 --- a/applications/armored-chat/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# Armored Chat - -Armored Chat is a light-weight chat application that allows members of a world to communicate with text. - -## Features - -- (wip) E2EE Direct messages -- (wip) Group chats - -- (?) Message signing - -## Encryption - -TODO: - -- Key exchange -- When and where -- How - -## Group chats - -TODO: - -- How -- Limitations diff --git a/applications/armored-chat/armored_chat.js b/applications/armored-chat/armored_chat.js deleted file mode 100644 index 888eb09..0000000 --- a/applications/armored-chat/armored_chat.js +++ /dev/null @@ -1,258 +0,0 @@ -// -// armored_chat.js -// -// Created by Armored Dragon, 2024. -// Copyright 2024 Overte e.V. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html - -(function () { - "use strict"; - // TODO: Encryption + PMs - // TODO: Open in external web browser - - var app_is_visible = false; - var settings = { - max_history: 250, - compact_chat: false, - external_window: false, - }; - var app_data = { current_page: "domain" }; - // Global vars - var ac_tablet; - var chat_overlay_window; - var app_button; - const channels = ["domain", "local", "system"]; - var max_local_distance = 20; // Maximum range for the local chat - var message_history = Settings.getValue("ArmoredChat-Messages", []); - - startup(); - - function startup() { - ac_tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - - app_button = ac_tablet.addButton({ - icon: Script.resolvePath("./img/icon_white.png"), - activeIcon: Script.resolvePath("./img/icon_black.png"), - text: "CHAT", - isActive: app_is_visible, - }); - - // When script ends, remove itself from tablet - Script.scriptEnding.connect(function () { - console.log("Shutting Down"); - ac_tablet.removeButton(app_button); - chat_overlay_window.close(); - }); - - // Overlay button toggle - app_button.clicked.connect(toggleMainChatWindow); - - _openWindow(); - } - function toggleMainChatWindow() { - app_is_visible = !app_is_visible; - console.log(`App is now ${app_is_visible ? "visible" : "hidden"}`); - app_button.editProperties({ isActive: app_is_visible }); - chat_overlay_window.visible = app_is_visible; - - // External window was closed; the window does not exist anymore - if (chat_overlay_window.title == "" && app_is_visible) { - _openWindow(); - } - } - function _openWindow() { - chat_overlay_window = new Desktop.createWindow(Script.resourcesPath() + "qml/hifi/tablet/DynamicWebview.qml", { - title: "Chat", - size: { x: 550, y: 400 }, - additionalFlags: Desktop.ALWAYS_ON_TOP, - visible: app_is_visible, // FIXME Invalid? - presentationMode: Desktop.PresentationMode.VIRTUAL, - }); - - chat_overlay_window.closed.connect(toggleMainChatWindow); - chat_overlay_window.sendToQml({ url: Script.resolvePath("./index.html") }); - chat_overlay_window.webEventReceived.connect(onWebEventReceived); - } - - // Initialize default message subscriptions - Messages.subscribe("chat"); - // Messages.subscribe("system"); - - Messages.messageReceived.connect(receivedMessage); - - function receivedMessage(channel, message) { - channel = channel.toLowerCase(); - if (channel !== "chat") return; - - console.log(`Received message:\n${message}`); - var message = JSON.parse(message); - - message.channel = message.channel.toLowerCase(); - - // For now, while we are working on superseding Floof, we will allow compatibility with it. - // If for_app exists, it came from us and we are just sending the message so Floof can read it. - // We don't need to listen to this message. - if (message.for_app) return; - - // Check the channel is valid - if (!channels.includes(message.channel)) return; - - // If message is local, and if player is too far away from location, don't do anything - if (channel === "local" && Vec3.distance(MyAvatar.position, message.position) < max_local_distance) return; - - // NOTE: Floof chat compatibility. - message.type = "show_message"; - - // Update web view of to new message - _emitEvent({ type: "show_message", ...message }); - - // Save message to our history - let saved_message = message; - delete saved_message.position; - - saved_message.timeString = new Date().toLocaleTimeString(undefined, { hour12: false }); - saved_message.dateString = new Date().toLocaleDateString(undefined, { - month: "long", - day: "numeric", - }); - message_history.push(saved_message); - if (message_history.length > settings.max_history) message_history.shift(); - Settings.setValue("ArmoredChat-Messages", message_history); - - // Display on popup chat area - _overlayMessage({ sender: message.displayName, message: message }); - } - function onWebEventReceived(event) { - console.log(`New web event:\n${event}`); - // FIXME: Lazy! - // Checks to see if the event is a JSON object - if (!event.includes("{")) return; - - var parsed = JSON.parse(event); - - switch (parsed.type) { - case "page_update": - app_data.current_page = parsed.page; - break; - - case "send_message": - _sendMessage(parsed.message); - break; - - case "open_url": - new OverlayWebWindow({ source: parsed.url.toString(), width: 500, height: 400 }); - break; - - case "setting_update": - // Update local settings - settings[parsed.setting_name] = parsed.setting_value; - // Save local settings - _saveSettings(); - - switch (parsed.setting_name) { - case "external_window": - chat_overlay_window.presentationMode = parsed.setting_value ? Desktop.PresentationMode.NATIVE : Desktop.PresentationMode.VIRTUAL; - break; - case "max_history": - let new_history = message_history.splice(0, message_history.length - settings.max_history); - Settings.setValue("ArmoredChat-Messages", new_history); - break; - } - break; - - case "initialized": - // https://github.com/overte-org/overte/issues/824 - chat_overlay_window.visible = app_is_visible; // The "visible" field in the Desktop.createWindow does not seem to work. Force set it to the initial state (false) - _loadSettings(); - break; - case "action": - switch (parsed.action) { - case "clear_history": - Settings.setValue("ArmoredChat-Messages", []); - break; - } - } - } - // - // Sending messages - // These functions just shout out their messages. We are listening to messages in an other function, and will record all heard messages there - function _sendMessage(message) { - Messages.sendMessage( - "chat", - JSON.stringify({ - position: MyAvatar.position, - message: message, - displayName: MyAvatar.sessionDisplayName, - channel: app_data.current_page, - action: "send_chat_message", - }) - ); - - // FloofyChat Compatibility - Messages.sendMessage( - "Chat", - JSON.stringify({ - position: MyAvatar.position, - message: message, - displayName: MyAvatar.sessionDisplayName, - channel: app_data.current_page.charAt(0).toUpperCase() + app_data.current_page.slice(1), - type: "TransmitChatMessage", - for_app: "Floof", - }) - ); - - // Show overlay of the message you sent - _overlayMessage({ sender: MyAvatar.sessionDisplayName, message: message }); - } - function _overlayMessage(message) { - // Floofchat compatibility - // This makes it so that our own messages are not rendered. - // For now, Floofchat has priority over notifications as they use a strange system I don't want to touch yet. - if (!message.action) return; - - Messages.sendLocalMessage( - "Floof-Notif", - JSON.stringify({ - sender: message.sender, - text: message.message, - color: { red: 122, green: 122, blue: 122 }, - }) - ); - } - function _loadSettings() { - settings = Settings.getValue("ArmoredChat-Config", settings); - - _emitEvent({ type: "setting_update", setting_name: "max_history", setting_value: Number(settings.max_history) }); - - // Compact chat - if (settings.compact_chat) { - _emitEvent({ type: "setting_update", setting_name: "compact_chat", setting_value: true }); - } - - // External Window - if (settings.external_window) { - chat_overlay_window.presentationMode = settings.external_window ? Desktop.PresentationMode.NATIVE : Desktop.PresentationMode.VIRTUAL; - _emitEvent({ type: "setting_update", setting_name: "external_window", setting_value: true }); - } - - // Refill the history with the saved messages - message_history.forEach((message) => { - delete message.action; - _emitEvent({ type: "show_message", ...message }); - }); - } - function _saveSettings() { - console.log("Saving config"); - Settings.setValue("ArmoredChat-Config", settings); - } - /** - * Emit a packet to the HTML front end. Easy communication! - * @param {Object} packet - The Object packet to emit to the HTML - * @param {("setting_update"|"show_message")} packet.type - The type of packet it is - */ - function _emitEvent(packet = { type: "" }) { - chat_overlay_window.emitScriptEvent(JSON.stringify(packet)); - } -})(); diff --git a/applications/armored-chat/compact-messages.css b/applications/armored-chat/compact-messages.css deleted file mode 100644 index b5f0eef..0000000 --- a/applications/armored-chat/compact-messages.css +++ /dev/null @@ -1,22 +0,0 @@ -body .page .content.message-list .message { - display: grid; - box-sizing: border-box; - grid-template-columns: 1fr 1fr; - grid-gap: inherit; - padding: 2px; - margin-bottom: 5px; -} -body .page .content.message-list .message .pfp { - display: none !important; -} -body .page .content.message-list .message .name { - color: #dbdbdb; -} -body .page .content.message-list .message .timestamp { - text-align: right; - color: #dbdbdb; -} -body .page .content.message-list .message .body { - grid-column-start: 1; - grid-column-end: 3; -} \ No newline at end of file diff --git a/applications/armored-chat/compact-messages.scss b/applications/armored-chat/compact-messages.scss deleted file mode 100644 index ed40c1e..0000000 --- a/applications/armored-chat/compact-messages.scss +++ /dev/null @@ -1,29 +0,0 @@ -body { - .page { - .content.message-list { - .message { - display: grid; - box-sizing: border-box; - grid-template-columns: 1fr 1fr; - grid-gap: inherit; - padding: 2px; - margin-bottom: 5px; - - .pfp { - display: none !important; - } - .name { - color: #dbdbdb; - } - .timestamp { - text-align: right; - color: #dbdbdb; - } - .body { - grid-column-start: 1; - grid-column-end: 3; - } - } - } - } -} diff --git a/applications/armored-chat/encrpytion.js b/applications/armored-chat/encrpytion.js deleted file mode 100644 index fa2233f..0000000 --- a/applications/armored-chat/encrpytion.js +++ /dev/null @@ -1,22 +0,0 @@ -(function () { - // TODO: Sign messages - // TODO: Verify signatures - - let rsa = forge.pki.rsa; - let keypair; - - function newKeyPair() { - // 2048 bits. Not the most super-duper secure length of 4096. - // This value must remain low to ensure lower-power machines can use. - // We will generate new keys automatically every so often and will also allow user to refresh keys. - keypair = rsa.generateKeyPair({ bits: 2048, workers: -1 }); - } - function encrypt(message) { - if (!keypair) return null; - return keypair.publicKey.encrypt("Test message"); - } - function decrypt(message) { - if (!keypair) return null; - return keypair.privateKey.decrypt(encrypted); - } -})(); diff --git a/applications/armored-chat/img/icon_black.png b/applications/armored-chat/img/icon_black.png deleted file mode 100644 index 410dc40b5933b126b7a996926e9c2a98a6471316..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 400 zcmV;B0dM|^P)EX>4Tx04R}tkv&MmKpe$iTcs)$5j#k6$WWc^qD35Q6^c+H)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfc5qU3krMxx6k5c1aNLh~_a1le0DrT}RI?`msG4PD zQb{3~UloF{2w)ifh#)R8Q=b#XG(5-GJ$!t6^ClDu?Zdk+{#50?g z&Uv3W%*v8Nd`>)R&;^Mfxh}i>#<}FMpJ#@RY-XM~Oe~bTSngt0HdNv`aa2(?%J=77 zRyc2QR;zW^z9)ZSsGzMZbDicGQdqkM+H?_h|#K%Vj@HPNe_R-@r&e=$yEU( z#{z0lAvu2VKlt6PS)877lR`K2d-P^xs+Wq|isK9c(_I@@V00006VoOIv00000008+zyMF)x010qNS#tmY z4c7nw4c7reD4Tcy000McNliru=mQZ69uX+!UB>_b0S8G$K~!ko?U*|b!Y~j-XCb1Y zf(lN=O}GLj2xxK#L`g-(o%mE7fM#eA3K5?Gvb-zJbe5ZW$;{d^AW71LNERfQBoFkX z1IY!+q6xr)el@TAwI={a00XB1Ihon;69Dgv^%Uo9x z%6yr-XpCx%3Lry?Np=A20E{yG-GBWDNVWlN9GC}yb)&{tWF%J(UZwXW=S`p2t14^j znfp?_`3lnztqyJe1wb70PXJ<>uK~m}Ujc||{su6EBuQa(1+-JEwmsQ(G5`Po07*qo IM6N<$f=@n5P5=M^ diff --git a/applications/armored-chat/img/ui/send.svg b/applications/armored-chat/img/ui/send.svg deleted file mode 100644 index 82c70a6..0000000 --- a/applications/armored-chat/img/ui/send.svg +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - diff --git a/applications/armored-chat/img/ui/send_black.png b/applications/armored-chat/img/ui/send_black.png deleted file mode 100644 index bc9ece7a1186440aefa69560047589a94f5a2efe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1950 zcmV;P2VwY$P)F0KBn)fs&lHl0AB;+ zfT<$#FBQ?y1vt?9>n*@!V3>&foY{;jQX?tXvmclPi~v3qk@nxOC)8#w4~!F$=EkQ~krrvlO|let9hfE}J5n6Cq7KrQ>)8s-1YQ%7RR-f%)PR*- zk6$y71Kt&peTK0r+F>m>$y#7MFhNBA3>34}gp}*q1-t_c6_I6uW0#67zle-i)nkFXfhOP*v__-oi zay_cr4Y&iBW#4WTW!5MnFvCT<7p zCxh`#DYRUVs`do#2VMfMHV9G3Lcb{FCTU$WH{tfQdl-cH5qD^j`{ualrvH{fyZ%c<_io$>;aUF*UY7q>q)Gcn{XvUX_p28e2;66n-ID=uGDgq zsOqJ-EzbVHDFz{Yq2F*3S!pnS2P(PkP}LKGhkzG=s|-Q}TQk=xcOEbm_)J7rTTLcU zBuaw@0(W7v&AAR&n?1>5&0J5f&?aCm& zHE0@*U@f?x>}KHOnCq4jr9p#$n~lPxR_JHZ<+lzedOk2G*2_==w9_iFPeo))!1!haXs3a;Lcg)K{JUk{e7z4?M%!cj za}n8=;e1jdKs${u^cyK6-yZG{Wi7Wodx7P&J;vu1x#K?3PSXTjVHD=Dg?@RH+n$}c zk{ACNpDQA}vz=1sY1d9;RT{JbcRRso5!np+m)o8lzyjJH;|ue2#8wLd+G+fnc|=!( z!7bUJ^#oGDBGEb|7TtDfvJLo(w$I?DB2qZPfhsmTJeKn&cQde%w$Io?%Jd}8jhlcA zjlvu@p~_nBCSVb5GMB{AjTd0|s-~q-Xt^7KFL3|c<`IcZIB4H_FmRJmm`-hCSj$Zw zD$EB~#v;?Bs+Zs{U+V{)W)Pz8?Z>p`9wal?tAzq3NDUtxG%7bKGy1dL0EKms;*nox z<*uXc^YW9jyj&_kf@E@7U#r|vz$<0CbW>G(0T1I20Io9%V_IfYtK1c35gRB$3Q{1K z^*T2f1gc*SUfNn}xrr)@XR%9=GAl|irQ84sQZCv_N+UPXpgkD4)+kJ_8o{EM8z4b~ zoVIXADK}7pl>6rEsN@DpkP35cLKJcXBuIt4@T9PE10_g>zN)Bjaua>DR(DT9B$td8 zLT;c0DZ1+cb1gSerX6PcP;MGJ0Z6FAM=W} z+(H(X#e$XGt-ws&w%{tG7!^k$ZMjQvO;6K8H$7E!Bn`RI6_&+9BXWIV*{E1=LoYh@ z$jxQbQ$G3O82|tP diff --git a/applications/armored-chat/img/ui/send_white.png b/applications/armored-chat/img/ui/send_white.png deleted file mode 100644 index 2730d2f84c769991885250798ac5e453a5c47d19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1956 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 LNkvXXu0mjfD_g-8 diff --git a/applications/armored-chat/img/ui/settings_white.png b/applications/armored-chat/img/ui/settings_white.png deleted file mode 100644 index 12a35ad58c9149f9c3d07155798130e30fd971fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1568 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 - - - - - diff --git a/applications/armored-chat/img/ui/user_black.png b/applications/armored-chat/img/ui/user_black.png deleted file mode 100644 index b3ca6e04451fb530b1be9694b9838996ce79035b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2463 zcmV;Q31Ie#P)Jw&%O8a z+P-7E_k5n`aNpnO^Ld`I-$@NeKCuou_?{1ey$ zY!Z=wi=(O+0p9_x1S%;u-3|N} zSR^8wQfxO>f)qzpM*~ZNFOaS%)pP@o0C$PVo(%hGh^C?)s76(<0JZ`%$yOMm_P+!? zud35C?khGyiKD7_15aWP_&jL=)~f3KocryQAZ}}_S^@3{<`(S>@E~x9h;$e2NGKy` zDPaf$=EskUb^-zrM^(QD%q!ZDDsETRuN3V>b8BmBVV$e$1=wtz`uYOfMkb$5a`5>ePQM^%pp+OSoAT($$tvB|@>de4XGIW`fPip~5c zG|L~11^uZXH{Q|g6MBYu%?{UCSu&p332Y|66@>-+)HcC+==XU(UbOYZK zk^7Q%8r`05Qq?wK3BE<{aBK#*AZh<`$$hq_s>6WUF)sOD8p8A@YHx9jOXjHRv1$6? zp@^yU6yP+ctpeZ8$dCEJTBq$u;By)Iaa4*B=US)TeqdIA5B^4p+MR_>yFGaQPK_eO z@qPn;AR@14>4=Ez1%Bu>pPZ#H^~hD6XqI-S!}ML?`x(2_!_ug~{y0ljy|?33$b00R z=d{}>B5!5tNrZ^J3H-@nTEXvsD&#GWchUJore4&t&S~cv^{J7!I3IP|ZOPP&TK?j+ z8TO99dd}O9x)Z+az3~F&+b=sYisTZ|)!@;>m zMe`PChtqCqmQK`Rn$zy(OueWgZ*jc&$x~G|mxpiE&*e_@_AGs=CU0^64s7}W%PGi>T*Zmv`rgFx1z88UqV^X!&7aCU(Xfb+fjaHZ2ELl5Bf!`3@ArBA zPK_eOc^v;DbFr#sGC5GyY522h4&slRrbh1Kh)5@}!fDI`6G)UJna@(cVOL6I4sE3h&`FWtZcz&(xRkVR40 z`B<7$oVuS!MI^78;}H~{@i`rTK63@Q1GrgL?*|?ck?s9mq^c9J>GGZUcg1_?0=^mZ zn$#$?K1WsOVxyr^UI8`$JFzgsK41ivdNl_4EO2^)_UDMmvIN&BqVVD=Rb35SQ>YX5 zStTNIZo8>dczq6V1MqawPE@f4xVdO23KvI2x`3;(a*z<%4qPQ7xrPVoQMfn&BGLg| zf=zLYWHT^1@~3cu5CgvJI<}`>BZROQF5Y z2wt4tsOq^`Ncke*lUN36U!(thU>7zuej0c}L~@O0CSgE{Q%zJQHwHKb%f|cwRxz+2 zcmvoeBHo;|;26;240eK?5R@3DH~~|N6ELMX0aJ<-Fr_#FQ;HKXr8ogoWP*naRXrWc z{`?45xAS4F*y%LjSS-bRcV5+{17&%tt$^Da*hna#k@v3%}^b0A`iqpD5Vfp)X7G}>HGwHRRR$LfF{ zXk;|G#ZlE0fiGhx+a`JYQ(El9Lebs8VJw@bhm)``O$7^KkI3D-S~g%Wu~;J_hdmec zD^66@dK*^TlGm-P6I&d<-0QOwTj6&CopEMK(f^?ZtC}8(z31)B=ra~u^yVeti`d_C zO@9TzeToxhyDTT$6Z$%_#ojZ(bJ+3suVmO?T~u`}@QLU%3HUVG?oMm~ZWNJSM>9C8 zII4OBu#9-8rh7O5{4R2CJYT?`9seS{wGfKZFqskXJngz`+&9Hsp4QlRfl8w-1BIBsj(Lr-xFu*9c;Uo#)Nqa zSRx|7Y0#lTK~xF%psFqdJ`a2w3x~vE6mSpG`|Bzqf~uZ}y$C4IY-AO%P((s07Yq(n zy%hUnUlQZ8!@xul+1@i7n~PtV{lGOMGNTlxZ=&bNrPu*Whn$x+(=&3gLmKwrTOt1k zm?k2BjPL5uMpb75zrwdXc?%fbjJ=fm7H1#xL}X=y{tanbTU*=O+uMf$pK+KU2W)P_ z;`bi5kj+YC1#VIL(^0pQ*r8ogoiW4xUH~~|N6ELMX0aJ<- dFr_#F^Is1sZ+{Om&qn|N002ovPDHLkV1gD|psN4? diff --git a/applications/armored-chat/img/ui/user_white.png b/applications/armored-chat/img/ui/user_white.png deleted file mode 100644 index 74ec794249eda232338049cc72a67cbd15aee52f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2446 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 Uao=#1VE_OC07*qoM6N<$g5Qv^mjD0& diff --git a/applications/armored-chat/img/ui/world_white.png b/applications/armored-chat/img/ui/world_white.png deleted file mode 100644 index 1f152b47b2ceb6144197886a1ed20a14fafff56b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3960 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 SF%fA10000 - - - - - - - - - - - - -
-
- - - -
-
- -
-
-
-
-
- - - - - - - - - - -
- - -
- - - - - - - - diff --git a/applications/armored-chat/index.scss b/applications/armored-chat/index.scss deleted file mode 100644 index 42df092..0000000 --- a/applications/armored-chat/index.scss +++ /dev/null @@ -1,258 +0,0 @@ -body { - background-color: black; - color: white; - margin: 0; - - height: 100vh; - width: 100vw; - - font-family: Verdana, Geneva, Tahoma, sans-serif; - display: flex; - flex-direction: column; - - .header { - width: 100%; - height: 40px; - display: flex; - flex-direction: row; - - button { - width: 60px; - height: 100%; - border-radius: 0; - border: 0; - margin: 0; - padding: 0; - box-sizing: border-box; - transition: width ease-in-out 0.2s; - } - button.active { - background-color: #6667ab; - color: white; - width: 100px; - } - - .left { - margin: 0 auto 0 0; - } - - .right { - margin: 0 0 0 auto; - } - } - - .page { - display: flex; - flex-direction: column; - flex-grow: 1; - overflow-y: auto; - width: 100%; - - .content { - width: 100%; - background-color: #111; - flex-grow: 1; - } - - .content.message-list { - overflow-y: auto; - overflow-x: hidden; - width: 100%; - - .message:nth-child(even) { - background-color: #1a1a1a; - } - .message { - display: grid; - box-sizing: border-box; - grid-template-columns: 80px 5fr; - grid-gap: 0.75rem; - padding: 0.8rem 0.15rem; - width: 100%; - overflow-y: auto; - .pfp { - height: 30px; - - width: auto; - display: flex; - - img { - height: 100%; - width: auto; - margin: auto; - border-radius: 50px; - background-color: black; - } - } - - .name { - font-size: 1.15rem; - color: #dbdbdb; - } - - .body { - width: 100%; - word-wrap: anywhere; - overflow-x: hidden; - - a { - color: white; - } - - .image-container { - width: 100%; - max-width: 400px; - max-height: 300px; - - img { - width: auto; - height: 100%; - } - } - } - - .embeds { - width: 100%; - word-wrap: anywhere; - overflow-x: hidden; - - overflow-x: hidden; - a { - color: white; - } - - .image-container { - width: 100%; - max-width: 400px; - max-height: 300px; - - img { - max-width: 400px; - max-height: 300px; - } - } - } - - .timestamp { - text-align: center; - color: #dbdbdb; - } - } - } - - .content.settings { - .setting { - width: 100%; - display: flex; - padding: 0.5rem 0.25rem; - box-sizing: border-box; - - input{ - margin: auto 0 auto auto; - height: 20px; - } - } - .setting-button{ - input { - width: 100px; - } - } - .setting-value{ - input { - width: 70px; - } - } - .setting-toggle { - input { - width: 20px; - } - } - .setting:nth-child(even) { - background-color: #1a1a1a; - } - } - } - .footer { - width: 100%; - height: 40px; - } - - .footer.text-entry { - display: Flex; - flex-direction: row; - input { - flex-grow: 1; - margin-right: 0; - border: 0; - font-size: 1.3rem; - min-width: 0; - } - - button { - width: 75px; - border: 0; - border-radius: 0; - } - } - - .hidden { - display: none !important; - } -} - -button { - width: 100px; - height: 100%; - background-color: white; - border-radius: 2px; - border: 0; - cursor: pointer; - outline: none; - - span { - width: 100%; - height: 100%; - img { - max-height: 70%; - width: auto; - user-select: none; - -webkit-user-drag: none; - } - } -} -button:focus { - filter: brightness(50%); -} - -input { - outline: none; -} -input:focus { - background-color: lightgray; -} - -@media screen and (max-width: 400px) { - body { - .header { - height: 30px; - - button { - width: 50px; - } - } - - .page { - .content.message-list { - .message { - grid-template-columns: 80px 5fr; - grid-gap: 0.75rem; - padding: 0.8rem 0.15rem; - - .pfp { - height: 30px; - } - } - } - } - } -} From 0ecbd824756665a4f10ac76cf3e4da8136499e8e Mon Sep 17 00:00:00 2001 From: Armored Dragon Date: Fri, 17 May 2024 18:16:57 -0500 Subject: [PATCH 2/2] Remove entry in metadata.js Signed-off-by: Armored Dragon --- applications/metadata.js | 9 --------- 1 file changed, 9 deletions(-) diff --git a/applications/metadata.js b/applications/metadata.js index e26114e..15700c4 100644 --- a/applications/metadata.js +++ b/applications/metadata.js @@ -315,15 +315,6 @@ var metadata = { "applications": "icon": "replica/replica-i.png", "caption": "REPLICA" }, - { - "isActive": true, - "directory": "armored-chat", - "name": "Chat", - "description": "Chat application", - "jsfile": "armored-chat/armored_chat.js", - "icon": "armored-chat/img/icon_black.png", - "caption": "CHAT" - }, { "isActive": true, "directory": "domainMapper",