pinokiod 3.180.0 → 3.182.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/kernel/favicon.js +91 -34
- package/kernel/peer.js +73 -0
- package/kernel/util.js +28 -4
- package/package.json +1 -1
- package/server/index.js +237 -35
- package/server/public/common.js +677 -240
- package/server/public/files-app/app.css +64 -0
- package/server/public/files-app/app.js +87 -0
- package/server/public/install.js +8 -1
- package/server/public/layout.js +124 -0
- package/server/public/nav.js +227 -64
- package/server/public/sound/beep.mp3 +0 -0
- package/server/public/sound/bell.mp3 +0 -0
- package/server/public/sound/bright-ring.mp3 +0 -0
- package/server/public/sound/clap.mp3 +0 -0
- package/server/public/sound/deep-ring.mp3 +0 -0
- package/server/public/sound/gasp.mp3 +0 -0
- package/server/public/sound/hehe.mp3 +0 -0
- package/server/public/sound/levelup.mp3 +0 -0
- package/server/public/sound/light-pop.mp3 +0 -0
- package/server/public/sound/light-ring.mp3 +0 -0
- package/server/public/sound/meow.mp3 +0 -0
- package/server/public/sound/piano.mp3 +0 -0
- package/server/public/sound/pop.mp3 +0 -0
- package/server/public/sound/uhoh.mp3 +0 -0
- package/server/public/sound/whistle.mp3 +0 -0
- package/server/public/style.css +195 -4
- package/server/public/tab-idle-notifier.js +700 -4
- package/server/public/terminal-settings.js +1131 -0
- package/server/public/urldropdown.css +28 -1
- package/server/socket.js +71 -4
- package/server/views/{terminals.ejs → agents.ejs} +108 -32
- package/server/views/app.ejs +321 -104
- package/server/views/bootstrap.ejs +8 -0
- package/server/views/connect.ejs +10 -1
- package/server/views/d.ejs +172 -18
- package/server/views/editor.ejs +8 -0
- package/server/views/file_browser.ejs +4 -0
- package/server/views/index.ejs +10 -1
- package/server/views/init/index.ejs +18 -3
- package/server/views/install.ejs +8 -0
- package/server/views/layout.ejs +2 -0
- package/server/views/net.ejs +10 -1
- package/server/views/network.ejs +10 -1
- package/server/views/pro.ejs +8 -0
- package/server/views/prototype/index.ejs +8 -0
- package/server/views/screenshots.ejs +10 -2
- package/server/views/settings.ejs +10 -2
- package/server/views/shell.ejs +8 -0
- package/server/views/terminal.ejs +8 -0
- package/server/views/tools.ejs +10 -2
package/server/public/style.css
CHANGED
|
@@ -161,7 +161,7 @@ body.dark .dynamic.selected {
|
|
|
161
161
|
*/
|
|
162
162
|
}
|
|
163
163
|
aside .tab.submenu {
|
|
164
|
-
padding-left: 25px;
|
|
164
|
+
padding-left: 25px !important;
|
|
165
165
|
box-sizing: border-box;
|
|
166
166
|
}
|
|
167
167
|
#genlog, #downloadlogs {
|
|
@@ -1132,18 +1132,189 @@ header a.path {
|
|
|
1132
1132
|
max-width: 100%;
|
|
1133
1133
|
box-sizing: border-box;
|
|
1134
1134
|
}
|
|
1135
|
+
header,
|
|
1136
|
+
header h1,
|
|
1137
|
+
header .runner {
|
|
1138
|
+
overflow: visible;
|
|
1139
|
+
}
|
|
1135
1140
|
header .runner {
|
|
1136
1141
|
padding: 0 10px;
|
|
1137
1142
|
box-sizing: border-box;
|
|
1138
1143
|
display: flex;
|
|
1139
1144
|
align-items: center;
|
|
1145
|
+
gap: 10px;
|
|
1146
|
+
width: 100%;
|
|
1147
|
+
flex-wrap: wrap;
|
|
1140
1148
|
}
|
|
1141
1149
|
header .runner .btn {
|
|
1142
1150
|
padding: 5px 10px;
|
|
1143
1151
|
font-size: 12px;
|
|
1144
|
-
margin-right:
|
|
1152
|
+
margin-right: 0;
|
|
1145
1153
|
flex-shrink: 0;
|
|
1146
1154
|
}
|
|
1155
|
+
.terminal-config {
|
|
1156
|
+
position: relative;
|
|
1157
|
+
display: flex;
|
|
1158
|
+
align-items: center;
|
|
1159
|
+
margin-left: auto;
|
|
1160
|
+
margin-right: 0;
|
|
1161
|
+
}
|
|
1162
|
+
.terminal-config .terminal-config-button,
|
|
1163
|
+
.terminal-config .btn {
|
|
1164
|
+
margin-right: 0;
|
|
1165
|
+
}
|
|
1166
|
+
.terminal-config-menu {
|
|
1167
|
+
position: absolute;
|
|
1168
|
+
top: calc(100% + 8px);
|
|
1169
|
+
right: 0;
|
|
1170
|
+
min-width: 220px;
|
|
1171
|
+
padding: 12px;
|
|
1172
|
+
border-radius: 10px;
|
|
1173
|
+
border: 1px solid rgba(0, 0, 0, 0.12);
|
|
1174
|
+
background: #ffffff;
|
|
1175
|
+
box-shadow: 0 12px 24px rgba(0, 0, 0, 0.18);
|
|
1176
|
+
z-index: 1500;
|
|
1177
|
+
max-height: min(80vh, 560px);
|
|
1178
|
+
overflow-y: auto;
|
|
1179
|
+
}
|
|
1180
|
+
.terminal-config-menu .terminal-config-title {
|
|
1181
|
+
font-size: 11px;
|
|
1182
|
+
font-weight: 600;
|
|
1183
|
+
letter-spacing: 0.06em;
|
|
1184
|
+
text-transform: uppercase;
|
|
1185
|
+
margin-bottom: 8px;
|
|
1186
|
+
opacity: 0.65;
|
|
1187
|
+
}
|
|
1188
|
+
.terminal-config-menu .terminal-config-note {
|
|
1189
|
+
font-size: 11px;
|
|
1190
|
+
margin-bottom: 10px;
|
|
1191
|
+
opacity: 0.7;
|
|
1192
|
+
}
|
|
1193
|
+
.terminal-config-menu .terminal-config-section {
|
|
1194
|
+
border-top: 1px solid rgba(0, 0, 0, 0.08);
|
|
1195
|
+
padding-top: 12px;
|
|
1196
|
+
margin-top: 12px;
|
|
1197
|
+
display: flex;
|
|
1198
|
+
flex-direction: column;
|
|
1199
|
+
gap: 10px;
|
|
1200
|
+
}
|
|
1201
|
+
.terminal-config-menu .terminal-config-section:first-of-type {
|
|
1202
|
+
border-top: none;
|
|
1203
|
+
padding-top: 0;
|
|
1204
|
+
margin-top: 0;
|
|
1205
|
+
}
|
|
1206
|
+
.terminal-config-menu .terminal-config-subtitle {
|
|
1207
|
+
font-size: 11px;
|
|
1208
|
+
font-weight: 600;
|
|
1209
|
+
letter-spacing: 0.04em;
|
|
1210
|
+
text-transform: uppercase;
|
|
1211
|
+
opacity: 0.65;
|
|
1212
|
+
}
|
|
1213
|
+
.terminal-config-menu .terminal-config-help {
|
|
1214
|
+
font-size: 11px;
|
|
1215
|
+
opacity: 0.65;
|
|
1216
|
+
line-height: 1.4;
|
|
1217
|
+
}
|
|
1218
|
+
.terminal-config-menu .terminal-config-group {
|
|
1219
|
+
display: flex;
|
|
1220
|
+
flex-direction: column;
|
|
1221
|
+
gap: 6px;
|
|
1222
|
+
margin-bottom: 12px;
|
|
1223
|
+
}
|
|
1224
|
+
.terminal-config-menu .terminal-config-label {
|
|
1225
|
+
font-size: 11px;
|
|
1226
|
+
font-weight: 600;
|
|
1227
|
+
opacity: 0.75;
|
|
1228
|
+
}
|
|
1229
|
+
.terminal-config-menu .terminal-config-select,
|
|
1230
|
+
.terminal-config-menu .terminal-config-input {
|
|
1231
|
+
font-size: 12px;
|
|
1232
|
+
padding: 6px 8px;
|
|
1233
|
+
border-radius: 6px;
|
|
1234
|
+
border: 1px solid rgba(0, 0, 0, 0.18);
|
|
1235
|
+
background: #ffffff;
|
|
1236
|
+
color: inherit;
|
|
1237
|
+
}
|
|
1238
|
+
.terminal-config-menu .terminal-config-input:focus,
|
|
1239
|
+
.terminal-config-menu .terminal-config-select:focus {
|
|
1240
|
+
outline: none;
|
|
1241
|
+
border-color: rgba(127, 91, 243, 0.65);
|
|
1242
|
+
box-shadow: 0 0 0 3px rgba(127, 91, 243, 0.18);
|
|
1243
|
+
}
|
|
1244
|
+
.terminal-config-menu .terminal-config-actions {
|
|
1245
|
+
display: flex;
|
|
1246
|
+
justify-content: flex-end;
|
|
1247
|
+
gap: 8px;
|
|
1248
|
+
}
|
|
1249
|
+
.terminal-config-menu .terminal-config-reset {
|
|
1250
|
+
font-size: 11px;
|
|
1251
|
+
padding: 4px 10px;
|
|
1252
|
+
}
|
|
1253
|
+
.terminal-config-menu .terminal-config-theme-grid {
|
|
1254
|
+
display: flex;
|
|
1255
|
+
flex-direction: column;
|
|
1256
|
+
gap: 8px;
|
|
1257
|
+
}
|
|
1258
|
+
.terminal-config-menu .terminal-config-theme-row {
|
|
1259
|
+
display: grid;
|
|
1260
|
+
grid-template-columns: minmax(140px, 1fr) 32px minmax(0, 1fr) 28px;
|
|
1261
|
+
align-items: center;
|
|
1262
|
+
gap: 8px;
|
|
1263
|
+
}
|
|
1264
|
+
.terminal-config-menu .terminal-config-color-input {
|
|
1265
|
+
width: 32px;
|
|
1266
|
+
height: 32px;
|
|
1267
|
+
padding: 0;
|
|
1268
|
+
border: none;
|
|
1269
|
+
background: transparent;
|
|
1270
|
+
cursor: pointer;
|
|
1271
|
+
}
|
|
1272
|
+
.terminal-config-menu .terminal-config-color-input[data-invalid='true'] {
|
|
1273
|
+
opacity: 0.35;
|
|
1274
|
+
}
|
|
1275
|
+
.terminal-config-menu .terminal-config-theme-text {
|
|
1276
|
+
width: 100%;
|
|
1277
|
+
}
|
|
1278
|
+
.terminal-config-menu .terminal-config-theme-clear {
|
|
1279
|
+
padding: 4px 6px;
|
|
1280
|
+
font-size: 12px;
|
|
1281
|
+
min-width: 28px;
|
|
1282
|
+
}
|
|
1283
|
+
body.dark .terminal-config-menu {
|
|
1284
|
+
background: rgba(21, 22, 23, 0.96);
|
|
1285
|
+
border-color: rgba(255, 255, 255, 0.12);
|
|
1286
|
+
box-shadow: 0 14px 30px rgba(0, 0, 0, 0.35);
|
|
1287
|
+
}
|
|
1288
|
+
body.dark .terminal-config-menu .terminal-config-label,
|
|
1289
|
+
body.dark .terminal-config-menu .terminal-config-title,
|
|
1290
|
+
body.dark .terminal-config-menu .terminal-config-note {
|
|
1291
|
+
color: rgba(255, 255, 255, 0.85);
|
|
1292
|
+
opacity: 0.85;
|
|
1293
|
+
}
|
|
1294
|
+
body.dark .terminal-config-menu .terminal-config-section {
|
|
1295
|
+
border-color: rgba(255, 255, 255, 0.12);
|
|
1296
|
+
}
|
|
1297
|
+
body.dark .terminal-config-menu .terminal-config-help {
|
|
1298
|
+
color: rgba(255, 255, 255, 0.7);
|
|
1299
|
+
}
|
|
1300
|
+
body.dark .terminal-config-menu .terminal-config-select,
|
|
1301
|
+
body.dark .terminal-config-menu .terminal-config-input {
|
|
1302
|
+
background: rgba(255, 255, 255, 0.08);
|
|
1303
|
+
border-color: rgba(255, 255, 255, 0.16);
|
|
1304
|
+
color: #ffffff;
|
|
1305
|
+
}
|
|
1306
|
+
body.dark .terminal-config-menu .terminal-config-color-input {
|
|
1307
|
+
background: rgba(255, 255, 255, 0.08);
|
|
1308
|
+
border-radius: 6px;
|
|
1309
|
+
}
|
|
1310
|
+
body.dark .terminal-config-menu .terminal-config-select:focus,
|
|
1311
|
+
body.dark .terminal-config-menu .terminal-config-input:focus {
|
|
1312
|
+
border-color: rgba(127, 91, 243, 0.85);
|
|
1313
|
+
box-shadow: 0 0 0 3px rgba(127, 91, 243, 0.24);
|
|
1314
|
+
}
|
|
1315
|
+
.terminal-config-open .terminal-config-menu {
|
|
1316
|
+
display: block;
|
|
1317
|
+
}
|
|
1147
1318
|
body.dark .memory {
|
|
1148
1319
|
background: rgba(0,0,0,0.8);
|
|
1149
1320
|
border-left: 5px solid white;
|
|
@@ -2383,6 +2554,8 @@ body.dark .mode-selector .btn2.selected {
|
|
|
2383
2554
|
|
|
2384
2555
|
|
|
2385
2556
|
@media only screen and (max-width: 768px) {
|
|
2557
|
+
/* Hide QR block on small screens */
|
|
2558
|
+
aside .qr { display: none !important; }
|
|
2386
2559
|
body {
|
|
2387
2560
|
display: flex;
|
|
2388
2561
|
align-items: stretch;
|
|
@@ -2455,6 +2628,14 @@ body.dark .mode-selector .btn2.selected {
|
|
|
2455
2628
|
overflow: auto;
|
|
2456
2629
|
flex-wrap: nowrap;
|
|
2457
2630
|
}
|
|
2631
|
+
/* Keep minimized header horizontal on small screens */
|
|
2632
|
+
header.navheader.minimized,
|
|
2633
|
+
header.navheader.minimized h1 {
|
|
2634
|
+
display: inline-flex;
|
|
2635
|
+
flex-direction: row;
|
|
2636
|
+
}
|
|
2637
|
+
/* Avoid stretching buttons to full width inside minimized pill */
|
|
2638
|
+
header.navheader.minimized h1 .btn2 { width: auto; }
|
|
2458
2639
|
.mode-selector {
|
|
2459
2640
|
flex-direction: column;
|
|
2460
2641
|
padding: 0;
|
|
@@ -2539,8 +2720,18 @@ header.navheader.minimized h1 {
|
|
|
2539
2720
|
padding: 0;
|
|
2540
2721
|
height: auto;
|
|
2541
2722
|
overflow: visible;
|
|
2542
|
-
|
|
2543
|
-
|
|
2723
|
+
flex-wrap: nowrap;
|
|
2724
|
+
justify-content: flex-start;
|
|
2725
|
+
}
|
|
2726
|
+
/* Ensure item order inside minimized pill: home, refresh, dragger */
|
|
2727
|
+
header.navheader.minimized h1 .home { order: 0; }
|
|
2728
|
+
header.navheader.minimized h1 #refresh-page { order: 1; }
|
|
2729
|
+
header.navheader.minimized h1 .header-drag-handle { order: 2; }
|
|
2730
|
+
/* Prevent items from stretching */
|
|
2731
|
+
header.navheader.minimized h1 > .home,
|
|
2732
|
+
header.navheader.minimized h1 > #refresh-page,
|
|
2733
|
+
header.navheader.minimized h1 > .header-drag-handle { flex: 0 0 auto; }
|
|
2734
|
+
header.navheader.minimized h1 > *:not(.home):not(.header-drag-handle):not(#refresh-page) {
|
|
2544
2735
|
display: none !important;
|
|
2545
2736
|
}
|
|
2546
2737
|
header.navheader .header-drag-handle {
|