Compare commits

..

No commits in common. "2fa431886cca21509eb90f5cdec16a450ab4f01b" and "d65b76cbc56cc571533172e2fcb39ff91c047376" have entirely different histories.

5 changed files with 138 additions and 193 deletions

4
.gitignore vendored
View File

@ -1,7 +1,5 @@
node_modules
package-lock.json
shared-storage
storage_*
storage
chatBot/.env
chatBot/commands/ai.js
chatBot/.env

17
app.js
View File

@ -2,12 +2,13 @@ import Hyperswarm from 'hyperswarm';
import crypto from 'hypercore-crypto';
import b4a from 'b4a';
import ServeDrive from 'serve-drive';
import Localdrive from 'localdrive';
import fs from 'fs';
import Hyperdrive from 'hyperdrive';
import Corestore from 'corestore';
import { EventEmitter } from 'events';
const storagePath = `./storage/storage_${Date.now()}_${Math.random().toString(36).substring(2, 15)}`;
const store = new Corestore(storagePath);
const store = new Corestore('./storage');
const drive = new Hyperdrive(store);
await drive.ready();
@ -20,18 +21,10 @@ let peerCount = 0;
let currentRoom = null;
const eventEmitter = new EventEmitter();
// Define servePort at the top level
let servePort;
// Function to get a random port between 1337 and 2223
function getRandomPort() {
return Math.floor(Math.random() * (65535 - 49152 + 1)) + 49152;
}
async function initialize() {
swarm = new Hyperswarm();
servePort = getRandomPort();
const servePort = 1337;
const serve = new ServeDrive({ port: servePort, get: ({ key, filename, version }) => drive });
await serve.ready();
console.log('Listening on http://localhost:' + serve.address().port);
@ -136,7 +129,7 @@ function registerUser(e) {
reader.onload = async (event) => {
const buffer = new Uint8Array(event.target.result);
await drive.put(`/icons/${regUsername}.png`, buffer);
userAvatar = `http://localhost:${servePort}/icons/${regUsername}.png`; // Set the correct URL
userAvatar = `http://localhost:1337/icons/${regUsername}.png`; // Set the correct URL
registeredUsers[regUsername] = userAvatar;
localStorage.setItem('registeredUsers', JSON.stringify(registeredUsers));
continueRegistration(regUsername);

View File

@ -10,8 +10,12 @@
</head>
<body>
<header>
<pear-ctrl></pear-ctrl>
<div id="linkup-text">LinkUp</div>
<div>LinkUp</div>
<div class="window-controls">
<button id="minimize-button">-</button>
<button id="maximize-button">+</button>
<button id="close-button">x</button>
</div>
</header>
<main>
<div id="sidebar">

View File

@ -7,10 +7,8 @@
"type": "desktop",
"gui": {
"backgroundColor": "#1F2430",
"height": 547,
"minWidth": 955,
"minHeight": 547,
"width": 955
"height": 540,
"width": 720
}
},
"license": "Apache-2.0",

296
style.css
View File

@ -12,131 +12,49 @@ body {
transition: background-color 0.3s ease, color 0.3s ease;
}
pear-ctrl[data-platform="darwin"] { float: right; margin-top: 4px; }
#messages-container {
height: 45vh; /* Adjust as needed */
overflow-y: auto;
}
pear-ctrl {
margin-top: 9px;
margin-left: 9px;
position: absolute;
}
pear-ctrl:after {
content: '';
display: block;
height: 1.8rem;
position: fixed;
z-index: -1;
left: 0;
top: 0;
width: 100%;
background-color: #B0D94413;
filter: drop-shadow(2px 10px 6px #888);
}
main {
/* body {
display: flex;
flex: 1;
overflow: hidden;
/* Ensure no overflow in main */
}
#sidebar {
} */
#sidebar {
width: 200px;
background-color: #2f3136;
color: white;
height: 100%;
height: 100vh;
padding: 10px;
box-sizing: border-box;
}
#content {
flex: 1;
display: flex;
flex-direction: column;
height: 100%;
}
#room-list {
list-style: none;
padding: 0;
margin-bottom: 20px;
}
#room-list li {
padding: 10px;
}
#register,
#setup,
#chat {
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
padding: 2rem;
background-color: #1f1f1f;
border-radius: 8px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
}
#chat {
flex: 1;
display: flex;
flex-direction: column;
cursor: pointer;
margin-bottom: 5px;
white-space: nowrap;
overflow: hidden;
padding: 1rem;
background-color: #1e1e1e;
border-radius: 8px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
width: 100%;
}
#messages-container {
text-overflow: ellipsis;
}
#room-list li:hover {
background-color: #40444b;
}
#content {
flex: 1;
overflow-y: auto;
/* Allow vertical scrolling */
overflow-x: hidden;
/* Hide horizontal scrolling */
width: 100%;
}
#messages-container::-webkit-scrollbar {
width: 8px;
/* Set the width of the scrollbar */
}
#messages-container::-webkit-scrollbar-thumb {
background-color: #b0d944;
/* Set the color of the scrollbar thumb */
border-radius: 10px;
/* Round the corners of the scrollbar thumb */
}
#messages-container::-webkit-scrollbar-track {
background: #2e2e2e;
/* Set the color of the scrollbar track */
}
#message-form {
display: flex;
margin-top: 1rem;
margin-right: 1rem;
width: 100%;
}
#message {
flex: 1;
margin-right: 0.5rem;
padding-right: 0.5rem;
height: 1.5rem;
/* Initial single line height */
overflow-y: hidden;
/* Hide scrollbar */
}
#message:focus {
height: auto;
/* Allow the textarea to grow dynamically when focused */
}
#message:empty {
height: 1.5rem;
/* Ensure single line height when empty */
}
#sidebar button {
padding: 10px;
}
#sidebar button {
width: 100%;
padding: 10px;
margin-bottom: 10px;
@ -146,13 +64,13 @@ main {
color: white;
font-size: 14px;
border-radius: 5px;
}
#sidebar button:hover {
}
#sidebar button:hover {
background-color: #5b6eae;
}
#remove-room-btn {
}
#remove-room-btn {
margin-top: 10px;
padding: 10px;
background-color: #f04747;
@ -160,20 +78,21 @@ main {
color: white;
cursor: pointer;
border-radius: 5px;
}
#remove-room-btn:hover {
}
#remove-room-btn:hover {
background-color: #c03535;
}
.hidden {
}
.hidden {
display: none;
}
}
/* Header styles */
header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem;
background-color: #1f1f1f;
color: #fff;
@ -182,12 +101,9 @@ header {
-webkit-app-region: drag;
}
#linkup-text {
margin-left: auto;
}
.window-controls {
display: flex;
align-items: center;
-webkit-app-region: no-drag;
}
@ -214,28 +130,22 @@ textarea {
border: 1px solid #b0d944;
background-color: #333;
color: #b0d944;
padding: 0.5rem;
/* Reduced padding */
padding: 0.75rem;
font-family: 'Roboto Mono', monospace;
font-size: 1rem;
line-height: 1.25rem;
/* Adjusted line height */
line-height: 1.5rem;
border-radius: 4px;
transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
resize: none;
/* Prevent resizing */
overflow-y: hidden;
/* Hide scrollbar */
resize: none; /* Prevent resizing */
overflow-y: hidden; /* Hide scrollbar */
}
textarea {
height: auto;
/* Allow the textarea to grow dynamically */
height: auto; /* Allow the textarea to grow dynamically */
}
textarea:focus {
outline: none;
/* Remove focus outline */
outline: none; /* Remove focus outline */
}
textarea::placeholder {
@ -294,7 +204,6 @@ main {
}
#header {
width: 100%;
margin-bottom: 1rem;
}
@ -320,19 +229,9 @@ main {
#details {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem;
background-color: #2b2b2b;
border-radius: 4px;
width: 100%;
box-sizing: border-box;
/* Added to ensure box model includes padding */
}
#details>div {
display: flex;
flex-direction: column;
/* Allow peers count to stack */
}
#submit-button {
@ -343,20 +242,17 @@ main {
flex: 1;
min-height: 200px;
overflow-y: auto;
padding: 0.5rem;
/* Reduced padding */
padding: 1rem;
background-color: #262626;
border-radius: 4px;
display: flex;
flex-direction: column;
width: 100%;
}
#message-form {
display: flex;
margin-top: 1rem;
margin-right: 1rem;
width: 100%;
}
#message {
@ -386,18 +282,14 @@ main {
.message {
display: flex;
align-items: center;
margin-bottom: 0.5rem;
/* Reduced margin */
margin-bottom: 1rem;
}
.message img {
width: 32px;
/* Reduced size */
height: 32px;
/* Reduced size */
width: 40px;
height: 40px;
border-radius: 50%;
margin-right: 0.5rem;
/* Reduced margin */
margin-right: 0.75rem;
border: 2px solid #b0d944;
}
@ -405,17 +297,13 @@ main {
max-width: 70%;
background-color: #2e2e2e;
padding: 0.5rem;
/* Reduced padding */
border-radius: 8px;
/* Reduced border radius */
border-radius: 10px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}
.message-header {
font-weight: bold;
color: #b0d944;
font-size: 0.9rem;
/* Reduced font size */
}
.message-time {
@ -423,3 +311,67 @@ main {
font-size: 0.75rem;
margin-left: 0.5rem;
}
/* Button and input styles */
button,
input,
textarea {
border: 1px solid #b0d944;
background-color: #333;
color: #b0d944;
padding: 0.75rem;
font-family: 'Roboto Mono', monospace;
font-size: 1rem;
line-height: 1.5rem;
border-radius: 4px;
transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
resize: none; /* Prevent resizing */
overflow-y: hidden; /* Hide scrollbar */
}
textarea {
height: auto; /* Allow the textarea to grow dynamically */
}
textarea:focus {
outline: none; /* Remove focus outline */
}
textarea::placeholder {
color: #a0a0a0;
}
/* Chat container styles */
#chat {
display: flex;
flex-direction: column;
flex: 1;
width: 100%;
padding: 1rem;
background-color: #1e1e1e;
border-radius: 8px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
overflow: hidden;
}
#message-form {
display: flex;
margin-top: 1rem;
margin-right: 1rem;
}
#message {
flex: 1;
margin-right: 0.5rem;
padding-right: 0.5rem;
height: 1.5rem; /* Initial single line height */
overflow-y: hidden; /* Hide scrollbar */
}
#message:focus {
height: auto; /* Allow the textarea to grow dynamically when focused */
}
#message:empty {
height: 1.5rem; /* Ensure single line height when empty */
}