From de96b33a414866b13bdd8307e591f35525614cd0 Mon Sep 17 00:00:00 2001 From: Zoe <62722391+juls0730@users.noreply.github.com> Date: Mon, 15 Sep 2025 03:05:30 -0500 Subject: [PATCH] actual UI, tons of bug fixes, and rename --- LICENSE | 21 ++ README.md | 11 +- server/websocketHandler.ts | 69 +++- src/app.css | 48 ++- src/components/LoadingSpinner.svelte | 20 ++ src/components/RTCMessage.svelte | 68 ++-- src/lib/webrtc.ts | 9 +- src/routes/+layout.svelte | 49 ++- src/routes/+page.svelte | 307 +++++++++++++++--- src/routes/[roomId]/+page.svelte | 145 ++++++--- src/stores/roomStore.ts | 11 +- src/stores/websocketStore.ts | 152 ++++++--- src/types/websocket.ts | 10 +- src/utils/webrtcUtil.ts | 11 +- ...nstrumentSans-VariableFont_wdth,wght.woff2 | Bin 0 -> 88476 bytes 15 files changed, 709 insertions(+), 222 deletions(-) create mode 100644 LICENSE create mode 100644 src/components/LoadingSpinner.svelte create mode 100644 static/fonts/InstrumentSans-VariableFont_wdth,wght.woff2 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e03af6f --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 juls0730 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index c23824c..d245068 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,11 @@ -# Wormhole -(needs a different name I think because I dont want to confuse it with wormhole.app) +# Noctis -A peer-to-peer encrypted file sharing app. +Noctis /ˈnɑktɪs/ *adjective* of the night + +A peer-to-peer end-to-end encrypted chat app. ## Features -- E2E communication +- E2EE communication - P2P file sharing - P2P chat @@ -18,4 +19,4 @@ wasm bindings for AWS' mls-rs library. 1. clone the repo 2. run `bun install` 3. run `bun run dev --host` (webrtc doesnt co-operate with localhost connections, so connect via 127.0.0.1) -4. open the browser at http://127.0.0.1:5173 \ No newline at end of file +4. open the browser at http://127.0.0.1:5173 diff --git a/server/websocketHandler.ts b/server/websocketHandler.ts index 46b869d..2d7fbd0 100644 --- a/server/websocketHandler.ts +++ b/server/websocketHandler.ts @@ -2,6 +2,20 @@ import { WebSocketServer } from "ws"; import { Socket, WebSocketMessageType, type WebSocketMessage } from "../src/types/websocket"; import { LiveMap } from '../src/utils/liveMap.ts'; +const adjectives = ['swift', 'silent', 'hidden', 'clever', 'brave', 'sharp', 'shadow', 'crimson', 'bright', 'quiet', 'loud', 'happy', 'dark', 'evil', 'good', 'intelligent', 'lovely', 'mysterious', 'peaceful', 'powerful', 'pure', 'quiet', 'shiny', 'sleepy', 'strong', 'sweet', 'tall', 'warm', 'gentle', 'kind', 'nice', 'polite', 'rough', 'rude', 'scary', 'shy', 'silly', 'smart', 'strange', 'tough', 'ugly', 'vivid', 'wicked', 'wise', 'young', 'sleepy']; +const nouns = ['fox', 'river', 'stone', 'cipher', 'link', 'comet', 'falcon', 'signal', 'anchor', 'spark', 'stone', 'comet', 'rocket', 'snake', 'snail', 'shark', 'elephant', 'cat', 'dog', 'whale', 'orca', 'cactus', 'flower', 'frog', 'toad', 'apple', 'strawberry', 'raspberry', 'lemon', 'bot', 'gopher', 'dinosaur', 'racoon', 'penguin', 'chameleon', 'atom', 'particle', 'witch', 'wizard', 'warlock', 'deer'] + +enum ErrorCode { + ROOM_NOT_FOUND, +} + +const errors = { + MALFORMED_MESSAGE: "Invalid message", + ROOM_NOT_FOUND: "Room does not exist", + ROOM_FULL: "Room is full", + UNKNOWN_MESSAGE_TYPE: "Unknown message type", +} + export class ServerRoom { private clients: Socket[] = []; @@ -38,16 +52,28 @@ export class ServerRoom { } } +function generateRoomName(): string { + const adj = adjectives[Math.floor(Math.random() * adjectives.length)]; + const noun = nouns[Math.floor(Math.random() * nouns.length)]; + return `${adj}-${noun}`; +} + const rooms = new LiveMap(); -async function createRoom(socket: Socket): Promise { - let roomId = Math.random().toString(36).substring(2, 10); +async function createRoom(socket: Socket, roomName?: string): Promise { + if (!roomName) { + roomName = generateRoomName(); + } + + const num = Math.floor(Math.random() * 900) + 100; + const roomId = `${roomName}-${num}`; + let room = rooms.set(roomId, new ServerRoom()); socket.send({ type: WebSocketMessageType.ROOM_CREATED, data: room.key }); try { - await joinRoom(room.key, socket); + await joinRoom(room.key, socket, true); } catch (e: any) { throw e; } @@ -55,18 +81,18 @@ async function createRoom(socket: Socket): Promise { return roomId; } -async function joinRoom(roomId: string, socket: Socket): Promise { +async function joinRoom(roomId: string, socket: Socket, initial?: boolean): Promise { let room = rooms.get(roomId); console.log(room?.length); // should be unreachable if (!room) { - socket.send({ type: WebSocketMessageType.ERROR, data: `Room ${roomId} does not exist` }); + socket.send({ type: WebSocketMessageType.ERROR, data: errors.ROOM_NOT_FOUND }); return undefined; } if (room.length == 2) { - socket.send({ type: WebSocketMessageType.ERROR, data: "Room is full" }); + socket.send({ type: WebSocketMessageType.ERROR, data: errors.ROOM_FULL }); return undefined; } @@ -93,6 +119,9 @@ async function joinRoom(roomId: string, socket: Socket): Promise client.ws !== ev.target)); }); + if (!initial) { + socket.send({ type: WebSocketMessageType.ROOM_JOINED, roomId: roomId, participants: room.length }); + } // TODO: consider letting rooms get larger than 2 clients if (room.length == 2) { room.forEachClient(client => client.send({ type: WebSocketMessageType.ROOM_READY, data: { isInitiator: client !== socket } })); @@ -109,7 +138,7 @@ function leaveRoom(roomId: string, socket: Socket): ServerRoom | undefined { // should be unreachable if (!room) { - socket.send({ type: WebSocketMessageType.ERROR, data: `Room ${roomId} does not exist` }); + socket.send({ type: WebSocketMessageType.ERROR, data: errors.ROOM_NOT_FOUND }); return undefined; } @@ -156,7 +185,7 @@ export function confgiureWebsocketServer(wss: WebSocketServer) { if (message === undefined) { console.log("Received non-JSON message:", event); // If the message is not JSON, send an error message - socket.send({ type: WebSocketMessageType.ERROR, data: 'Invalid message' }); + socket.send({ type: WebSocketMessageType.ERROR, data: errors.MALFORMED_MESSAGE }); return; } @@ -166,7 +195,17 @@ export function confgiureWebsocketServer(wss: WebSocketServer) { case WebSocketMessageType.CREATE_ROOM: // else, create a new room try { - await createRoom(socket); + if (message.roomName) { + // sanitize the room name + message.roomName = message.roomName.toLowerCase() + .replace(/\s+/g, '-') // Replace spaces with - + .replace(/[^\w-]+/g, '') // Remove all non-word chars + .replace(/--+/g, '-') // Replace multiple - with single - + .replace(/^-+/, '') // Trim - from start of text + .replace(/-+$/, ''); // Trim - from end of text + } + + await createRoom(socket, message.roomName); } catch (e: any) { socket.send({ type: WebSocketMessageType.ERROR, data: e.message }); throw e; @@ -174,29 +213,27 @@ export function confgiureWebsocketServer(wss: WebSocketServer) { break; case WebSocketMessageType.JOIN_ROOM: if (!message.roomId) { - socket.send({ type: WebSocketMessageType.ERROR, data: 'Invalid message' }); + socket.send({ type: WebSocketMessageType.ERROR, data: errors.MALFORMED_MESSAGE }); return; } if (rooms.get(message.roomId) == undefined) { - socket.send({ type: WebSocketMessageType.ERROR, data: 'Invalid roomId' }); + socket.send({ type: WebSocketMessageType.ERROR, data: errors.ROOM_NOT_FOUND }); return; } room = await joinRoom(message.roomId, socket); if (!room) return; - // the client is now in the room and the peer knows about it - socket.send({ type: WebSocketMessageType.ROOM_JOINED, roomId: message.roomId, participants: room.length }); break; case WebSocketMessageType.LEAVE_ROOM: if (!message.roomId) { - socket.send({ type: WebSocketMessageType.ERROR, data: 'Invalid message' }); + socket.send({ type: WebSocketMessageType.ERROR, data: errors.MALFORMED_MESSAGE }); return; } if (rooms.get(message.roomId) == undefined) { - socket.send({ type: WebSocketMessageType.ERROR, data: 'Invalid roomId' }); + socket.send({ type: WebSocketMessageType.ERROR, data: errors.ROOM_NOT_FOUND }); return; } @@ -220,7 +257,7 @@ export function confgiureWebsocketServer(wss: WebSocketServer) { break; default: console.warn(`Unknown message type: ${message.type}`); - socket.send({ type: WebSocketMessageType.ERROR, data: 'Unknown message type' }); + socket.send({ type: WebSocketMessageType.ERROR, data: errors.UNKNOWN_MESSAGE_TYPE }); break; } }); diff --git a/src/app.css b/src/app.css index 90a3140..7ae9a80 100644 --- a/src/app.css +++ b/src/app.css @@ -1,9 +1,51 @@ @import 'tailwindcss'; -body, html { - @apply bg-neutral-950 text-white font-sans min-h-screen; +@font-face { + font-family: "Instrument Sans"; + src: url("/fonts/InstrumentSans-VariableFont_wdth,wght.woff2") format("woff2"); + font-display: swap; +} + +:root { + --font-sans: "Instrument Sans", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --test: #00060d; +} + +@theme { + --color-accent: #00e0b8; + --color-surface: #0f1626; + --color-paragraph: #e0e0e0; + --color-paragraph-muted: #8a94a6; + --color-primary: #00060d; +} + +body, +html { + @apply bg-primary font-sans min-h-screen text-paragraph; +} + +h1, +h2, +h3 { + color: #FFF; + line-height: 1.2; + margin-bottom: 1rem; +} + +h1 { + font-size: 3rem; +} + +h2 { + font-size: 2.25rem; + text-align: center; +} + +h3 { + font-size: 1.25rem; + font-weight: 600; } a { - @apply text-pink-600 underline hover:no-underline; + @apply text-accent underline hover:no-underline; } \ No newline at end of file diff --git a/src/components/LoadingSpinner.svelte b/src/components/LoadingSpinner.svelte new file mode 100644 index 0000000..cfff3a4 --- /dev/null +++ b/src/components/LoadingSpinner.svelte @@ -0,0 +1,20 @@ + + + + diff --git a/src/components/RTCMessage.svelte b/src/components/RTCMessage.svelte index b80fd0e..ffae5b5 100644 --- a/src/components/RTCMessage.svelte +++ b/src/components/RTCMessage.svelte @@ -1,7 +1,6 @@ + @@ -15,4 +43,23 @@ > -{@render children?.()} +
+
+
+ Noctis. +
+ +
+
+ +
+ {@render children?.()} +
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 2813a68..207c199 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,62 +1,265 @@ -
-

Welcome to Wormhole!

+
+
+

Your Private, Peer-to-Peer Chat Room

+

+ End-to-end encrypted. Peer-to-peer. No servers. No sign-ups. Just + chat. +

- {#if $webSocketConnected} - - {:else} -

Connecting to server...

- {/if} +
+ +
+ + +
+ or +
+
+
+ - {#if $room.id && browser} -

Room created!

-

Share this link with your friend:

- {location.origin}/{$room.id} - {/if} +
+
+

How It Works

+
+
+
+ 1 +
+

Create a Room

+

+ Click the button above to create a random room instantly, no + personal info required. +

+
+
+
+ 2 +
+

Share the Link

+

+ You'll get a unique link to your private room. Share this + link with anyone you want to chat with securely. +

+
+
+
+ 3 +
+

Chat Privately

+

+ Once they join, your messages are sent directly between your + devices, encrypted from end to end. Hidden from everyone + else. +

+
+
+
+
- - +
+
+

Security by Design

+
+
+
+ +
+

End-to-End Encrypted

+

+ Only you and the people in your room can read the messages. + Your data is encrypted before its sent using the Message + Layer Security (MLS) protocol. +

+
+
+
+ +
+

Truly Peer-to-Peer

+

+ Your messages are sent directly from your device to the + recipient's. They never pass through a central server. +

+
+
+
+ +
+

No Data Stored

+

+ We don't have accounts, and we don't store your messages. + Once you close the tab, the conversation is gone forever. +

+
+
+
+
+ +
+
+

+ © {new Date().getFullYear()} Noctis - MIT License +
+ Made with + + by + zoeissleeping +

+
+
+ + diff --git a/src/routes/[roomId]/+page.svelte b/src/routes/[roomId]/+page.svelte index fe276c9..9c38539 100644 --- a/src/routes/[roomId]/+page.svelte +++ b/src/routes/[roomId]/+page.svelte @@ -1,58 +1,121 @@ -
+
{#if $error} -

Hm. Something went wrong: {$error.toLocaleLowerCase()}

- {:else if $room.connectionState !== ConnectionState.CONNECTED && $room.connectionState !== ConnectionState.RECONNECTING} -

Connecting to server...

- {:else} - +

+ Something went wrong: {$error.toLocaleLowerCase()} +

+

+ click here to go back to the homepage +

+ {/if} + + {#if !$error} + {#if isHost} + {#if !$room.RTCConnectionReady} +

+ Your secure room is ready. +

+

+ Share the link below to invite someone to chat directly with + you. Once they join, you will be connected automatically. +

+ +
+ {roomLink} + +
+ {:else} + + {/if} + {:else if awaitingJoinConfirmation} +

+ You're invited to chat. +

+
+ + +
+ {:else} + + {/if} {/if}
diff --git a/src/stores/roomStore.ts b/src/stores/roomStore.ts index b3b9dd3..d0f5fcc 100644 --- a/src/stores/roomStore.ts +++ b/src/stores/roomStore.ts @@ -1,16 +1,19 @@ import { writable, type Writable } from 'svelte/store'; -import { ConnectionState } from '../types/websocket'; +import { RoomConnectionState } from '../types/websocket'; import { browser } from '$app/environment'; export interface Room { id: string | null; + host: boolean | null; + RTCConnectionReady: boolean; participants: number; - connectionState: ConnectionState; + connectionState: RoomConnectionState; } export const room: Writable = writable({ id: null, + host: null, + RTCConnectionReady: false, participants: 0, - connectionState: ConnectionState.DISCONNECTED, - key: null, + connectionState: RoomConnectionState.DISCONNECTED, }); \ No newline at end of file diff --git a/src/stores/websocketStore.ts b/src/stores/websocketStore.ts index c95f48b..c97940b 100644 --- a/src/stores/websocketStore.ts +++ b/src/stores/websocketStore.ts @@ -1,55 +1,105 @@ -import { get, writable } from 'svelte/store'; +import { get, writable, type Readable, type Writable } from 'svelte/store'; import { browser } from '$app/environment'; -import { room } from './roomStore'; -import { ConnectionState, Socket, WebSocketMessageType } from '../types/websocket'; +import { Socket, type WebSocketMessage } from '../types/websocket'; +import { handleMessage } from '../utils/webrtcUtil'; -let socket: Socket | null = null; -export const webSocketConnected = writable(false); - -function createSocket(): Socket { - if (!browser) { - // this only occurs on the server, which we dont care about because its not a client that can actually connect to the websocket server - // @ts-ignore - return null; - } - - if (socket) { - return socket; - } - - const protocol = location.protocol === 'https:' ? 'wss:' : 'ws:'; - socket = new Socket(new WebSocket(`${protocol}//${location.host}/`)); - - socket.addEventListener('open', () => { - webSocketConnected.set(true); - console.log('Connected to websocket server'); - }); - - socket.addEventListener('close', () => { - // TODO: massively rework the reconnection logic, currently it only works if one client disconnects, if the - // TODO: other client disconnects after the other client has diconnected at least once, everything explodes - if (get(webSocketConnected) && get(room)?.connectionState === ConnectionState.CONNECTED) { - room.update((room) => ({ ...room, connectionState: ConnectionState.RECONNECTING })); - - setTimeout(() => { - ws.set(createSocket()); - - // attempt to rejoin the room if we were previously connected - get(ws).addEventListener('open', () => { - let oldRoomId = get(room)?.id; - if (oldRoomId) { - get(ws).send({ type: WebSocketMessageType.JOIN_ROOM, roomId: oldRoomId }); - room.update((room) => ({ ...room, connectionState: ConnectionState.CONNECTED })); - } - }); - }, 1000); - } - webSocketConnected.set(false); - socket = null; - console.log('Disconnected from websocket server, reconnecting...'); - }); - - return socket; +export enum WebsocketConnectionState { + DISCONNECTED, + CONNECTING, + CONNECTED, + RECONNECTING } -export const ws = writable(createSocket()); +interface WebSocketStoreValue { + status: WebsocketConnectionState; + socket: Socket | null; +} + +export type MessageHandler = (event: MessageEvent) => void; + +interface WebSocketStore extends Readable { + connect: () => void; + disconnect: () => void; + send: (message: WebSocketMessage) => void; +} + +// TODO: handle reconnection logic to room elsewhere (not implemented here) +function createWebSocketStore(messageHandler: MessageHandler): WebSocketStore { + const { subscribe, set, update } = writable({ status: WebsocketConnectionState.DISCONNECTED, socket: null }); + + let reconnectTimeout: NodeJS.Timeout | null = null; + let reconnectAttempts = 0; + + const send = (message: WebSocketMessage) => { + let currentState = get({ subscribe }); + if (currentState.socket?.readyState === WebSocket.OPEN) { + currentState.socket.send(message); + } else { + console.error("Socket not connected"); + } + }; + + const disconnect = () => { + let currentState = get({ subscribe }); + if (currentState.socket) { + currentState.socket.close(); + set({ status: WebsocketConnectionState.DISCONNECTED, socket: null }); + } + }; + + const connect = () => { + if (!browser) { + return; + } + + const currentState = get({ subscribe }); + if (currentState.socket || currentState.status === WebsocketConnectionState.CONNECTING) { + // already connected/connecting + return; + } + + update(s => ({ ...s, status: WebsocketConnectionState.CONNECTING })); + + const protocol = location.protocol === 'https:' ? 'wss:' : 'ws:'; + const socket = new Socket(new WebSocket(`${protocol}//${location.host}/`)); + + socket.addEventListener('open', () => { + console.log('Connected to websocket server'); + reconnectAttempts = 0; + update(s => ({ ...s, status: WebsocketConnectionState.CONNECTED, socket })); + }); + + socket.addEventListener('message', messageHandler); + + socket.addEventListener('close', () => { + console.log('Disconnected from websocket server,'); + update(s => ({ ...s, socket: null })); + + // exponential backoff + const timeout = Math.min(Math.pow(2, reconnectAttempts) * 1000, 30000); + reconnectAttempts++; + + console.log(`Reconnecting in ${timeout / 1000}s...`); + update(s => ({ ...s, status: WebsocketConnectionState.RECONNECTING })); + + reconnectTimeout = setTimeout(() => { + connect(); + }, timeout); + }); + + socket.addEventListener('error', () => { + console.error('Error connecting to websocket server'); + socket.close(); + // close will trigger a reconnect + }); + }; + + return { + subscribe, + connect, + disconnect, + send, + }; +} + +export const ws = createWebSocketStore(handleMessage); \ No newline at end of file diff --git a/src/types/websocket.ts b/src/types/websocket.ts index 9090bb4..378c24d 100644 --- a/src/types/websocket.ts +++ b/src/types/websocket.ts @@ -1,4 +1,4 @@ -export enum ConnectionState { +export enum RoomConnectionState { CONNECTING, RECONNECTING, CONNECTED, @@ -8,7 +8,7 @@ export enum ConnectionState { export interface Room { id: string | null; participants: number; - connectionState: ConnectionState; + connectionState: RoomConnectionState; } export enum WebSocketMessageType { @@ -51,6 +51,7 @@ interface ErrorMessage { interface CreateRoomMessage { type: WebSocketMessageType.CREATE_ROOM; + roomName?: string; } interface JoinRoomMessage { @@ -129,11 +130,16 @@ export class Socket { console.log("WebSocket opened"); }); + this.addEventListener = this.ws.addEventListener.bind(this.ws); this.removeEventListener = this.ws.removeEventListener.bind(this.ws); this.close = this.ws.close.bind(this.ws); } + get readyState(): number { + return this.ws.readyState; + } + public send(message: WebSocketMessage) { console.log("Sending message:", message); diff --git a/src/utils/webrtcUtil.ts b/src/utils/webrtcUtil.ts index 9f2ce67..0d586d1 100644 --- a/src/utils/webrtcUtil.ts +++ b/src/utils/webrtcUtil.ts @@ -2,11 +2,12 @@ import { writable, get, type Writable } from "svelte/store"; import { WebRTCPeer } from "$lib/webrtc"; import { CHUNK_SIZE, WebRTCPacketType } from "../types/webrtc"; import { room } from "../stores/roomStore"; -import { ConnectionState, type Room } from "../types/websocket"; +import { RoomConnectionState, type Room } from "../types/websocket"; import { advertisedOffers, fileRequestIds, messages, receivedOffers } from "../stores/messageStore"; import { MessageType, type Message } from "../types/message"; import { WebSocketMessageType, type WebSocketMessage } from "../types/websocket"; import { WebBuffer } from "./buffer"; +import { goto } from "$app/navigation"; export const error: Writable = writable(null); export let peer: Writable = writable(null); @@ -255,7 +256,8 @@ export async function handleMessage(event: MessageEvent) { switch (message.type) { case WebSocketMessageType.ROOM_CREATED: console.log("Room created:", message.data); - room.update((room) => ({ ...room, id: message.data, connectionState: ConnectionState.CONNECTED, participants: 1 })); + room.set({ id: message.data, host: true, RTCConnectionReady: false, connectionState: RoomConnectionState.CONNECTED, participants: 1 }); + goto(`/${message.data}`); return; case WebSocketMessageType.JOIN_ROOM: console.log("new client joined room"); @@ -263,7 +265,8 @@ export async function handleMessage(event: MessageEvent) { return; case WebSocketMessageType.ROOM_JOINED: // TODO: if a client disconnects, we need to resync the room state - room.update((room) => ({ ...room, connectionState: ConnectionState.CONNECTED, participants: message.participants })); + + room.set({ host: false, id: message.roomId, RTCConnectionReady: false, connectionState: RoomConnectionState.CONNECTED, participants: message.participants }); console.log("Joined room"); return; case WebSocketMessageType.ROOM_LEFT: @@ -282,6 +285,8 @@ export async function handleMessage(event: MessageEvent) { return; } + room.update(r => ({ ...r, RTCConnectionReady: true })); + console.log("Creating peer"); peer.set(new WebRTCPeer( roomId, diff --git a/static/fonts/InstrumentSans-VariableFont_wdth,wght.woff2 b/static/fonts/InstrumentSans-VariableFont_wdth,wght.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..02203d6b1ad2bc12eb85e4d102bceb0fbce7d5d7 GIT binary patch literal 88476 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

>XasG?0MAGYA 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 literal 0 HcmV?d00001