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
|
@@ -86,6 +86,7 @@ body {
|
|
|
86
86
|
<script src="/xterm-theme.js"></script>
|
|
87
87
|
<script src="/sweetalert2.js"></script>
|
|
88
88
|
<script src="/Socket.js"></script>
|
|
89
|
+
<script src="/terminal-settings.js"></script>
|
|
89
90
|
<script>
|
|
90
91
|
function isASCII(str) {
|
|
91
92
|
for (let i = 0; i < str.length; i++) {
|
|
@@ -145,7 +146,14 @@ document.addEventListener("DOMContentLoaded", () => {
|
|
|
145
146
|
if (res && res.config) {
|
|
146
147
|
config = res.config
|
|
147
148
|
}
|
|
149
|
+
const baseConfig = Object.assign({}, config)
|
|
150
|
+
if (window.PinokioTerminalSettings && typeof window.PinokioTerminalSettings.applyToConfig === 'function') {
|
|
151
|
+
config = window.PinokioTerminalSettings.applyToConfig(config)
|
|
152
|
+
}
|
|
148
153
|
const term = new Terminal(config)
|
|
154
|
+
if (window.PinokioTerminalSettings && typeof window.PinokioTerminalSettings.register === 'function') {
|
|
155
|
+
window.PinokioTerminalSettings.register(term, { baseConfig })
|
|
156
|
+
}
|
|
149
157
|
const fitAddon = new FitAddon.FitAddon();
|
|
150
158
|
term.loadAddon(fitAddon);
|
|
151
159
|
term.loadAddon(new WebLinksAddon.WebLinksAddon());
|
package/server/views/connect.ejs
CHANGED
|
@@ -922,8 +922,17 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
922
922
|
<a id='downloadlogs' download class='hidden btn2' href="/pinokio/logs.zip"><i class="fa-solid fa-download"></i><div class='caption'>Download logs</div></a>
|
|
923
923
|
<a class='tab' href="/screenshots"><i class="fa-solid fa-camera"></i><div class='caption'>Screenshots</div></a>
|
|
924
924
|
<a class='tab' href="/tools"><i class="fa-solid fa-toolbox"></i><div class='caption'>Installed Tools</div></a>
|
|
925
|
-
<a class='tab' href="/
|
|
925
|
+
<a class='tab' href="/agents"><i class="fa-solid fa-robot"></i><div class='caption'>Agents</div></a>
|
|
926
926
|
<a class='tab' href="/home?mode=settings"><i class="fa-solid fa-gear"></i><div class='caption'>Settings</div></a>
|
|
927
|
+
<% if (typeof peer_qr !== 'undefined' && peer_qr) { %>
|
|
928
|
+
<div class='qr' style='padding:12px 10px; text-align:center;'>
|
|
929
|
+
<a href="<%=peer_url%>" target="_blank" style="text-decoration:none; color:inherit; display:block;">
|
|
930
|
+
<img src="<%=peer_qr%>" alt="Open <%=peer_url%>" style="width:128px; height:128px; image-rendering: pixelated;"/>
|
|
931
|
+
<div class='caption'>Scan to open</div>
|
|
932
|
+
<div class='caption' style='font-size:10px; opacity:0.7;'><%=peer_url%></div>
|
|
933
|
+
</a>
|
|
934
|
+
</div>
|
|
935
|
+
<% } %>
|
|
927
936
|
</aside>
|
|
928
937
|
</main>
|
|
929
938
|
</body>
|
package/server/views/d.ejs
CHANGED
|
@@ -84,6 +84,7 @@ body.dark .tab:focus-visible {
|
|
|
84
84
|
margin-left: 10px;
|
|
85
85
|
}
|
|
86
86
|
.tab i.img {
|
|
87
|
+
flex-shrink: 0;
|
|
87
88
|
height: 40px;
|
|
88
89
|
width: 40px;
|
|
89
90
|
background: white;
|
|
@@ -92,10 +93,10 @@ body.dark .tab:focus-visible {
|
|
|
92
93
|
justify-content: center;
|
|
93
94
|
font-size: 20px;
|
|
94
95
|
align-items: center;
|
|
95
|
-
border-radius:
|
|
96
|
+
border-radius: 40px;
|
|
96
97
|
}
|
|
97
98
|
.tab img {
|
|
98
|
-
border-radius:
|
|
99
|
+
border-radius: 40px;
|
|
99
100
|
height: 40px;
|
|
100
101
|
width: 40px;
|
|
101
102
|
background: white;
|
|
@@ -161,6 +162,47 @@ body.dark .menu-container {
|
|
|
161
162
|
flex-direction: column;
|
|
162
163
|
box-sizing: border-box;
|
|
163
164
|
}
|
|
165
|
+
.column-subtitle {
|
|
166
|
+
font-size: 12px;
|
|
167
|
+
opacity: 0.7;
|
|
168
|
+
padding: 8px 10px 0;
|
|
169
|
+
}
|
|
170
|
+
body.dark .column-subtitle {
|
|
171
|
+
color: rgba(255, 255, 255, 0.75);
|
|
172
|
+
}
|
|
173
|
+
.menu-grid {
|
|
174
|
+
display: grid;
|
|
175
|
+
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
|
|
176
|
+
}
|
|
177
|
+
.menu-column {
|
|
178
|
+
border: 1px solid rgba(0, 0, 0, 0.05);
|
|
179
|
+
overflow: hidden;
|
|
180
|
+
}
|
|
181
|
+
body.dark .menu-column {
|
|
182
|
+
border-color: rgba(255, 255, 255, 0.08);
|
|
183
|
+
}
|
|
184
|
+
.menu-column .tab-header {
|
|
185
|
+
background: rgba(0, 0, 0, 0.03);
|
|
186
|
+
}
|
|
187
|
+
body.dark .menu-column .tab-header {
|
|
188
|
+
background: rgba(255, 255, 255, 0.06);
|
|
189
|
+
}
|
|
190
|
+
.menu-column .tab-content {
|
|
191
|
+
padding-top: 4px;
|
|
192
|
+
display: flex;
|
|
193
|
+
flex-direction: column;
|
|
194
|
+
flex-wrap: nowrap;
|
|
195
|
+
align-items: stretch;
|
|
196
|
+
gap: 4px;
|
|
197
|
+
}
|
|
198
|
+
.menu-column .tab-content .tab {
|
|
199
|
+
flex: 0 0 auto;
|
|
200
|
+
}
|
|
201
|
+
@media (max-width: 700px) {
|
|
202
|
+
.menu-grid {
|
|
203
|
+
grid-template-columns: 1fr;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
164
206
|
body.dark .tab-header {
|
|
165
207
|
background: rgba(255,255,255,0.04);
|
|
166
208
|
}
|
|
@@ -367,28 +409,140 @@ body.dark #update-spec {
|
|
|
367
409
|
</div>
|
|
368
410
|
</div>
|
|
369
411
|
|
|
370
|
-
<%
|
|
371
|
-
|
|
412
|
+
<%
|
|
413
|
+
let index = 0;
|
|
414
|
+
const userTerminal = dynamic && dynamic.length ? dynamic[0] : null;
|
|
415
|
+
const cliMenu = dynamic.find((item) => item && item.title === "Terminal Agents");
|
|
416
|
+
const ideMenu = dynamic.find((item) => item && item.title === "IDE Agents");
|
|
417
|
+
const handled = new Set();
|
|
418
|
+
if (userTerminal) handled.add(userTerminal);
|
|
419
|
+
if (cliMenu) handled.add(cliMenu);
|
|
420
|
+
if (ideMenu) handled.add(ideMenu);
|
|
421
|
+
const remaining = dynamic.filter((item) => !handled.has(item));
|
|
422
|
+
%>
|
|
423
|
+
|
|
424
|
+
<div class='menu-grid'>
|
|
425
|
+
<% if (userTerminal && userTerminal.menu && userTerminal.menu.length) { %>
|
|
426
|
+
<div class='menu-container menu-column user-terminal'>
|
|
427
|
+
<div class='tab-header'>
|
|
428
|
+
<h3><i class='<%= userTerminal.icon %>'></i> <%= userTerminal.title %></h3>
|
|
429
|
+
</div>
|
|
430
|
+
<% if (userTerminal.subtitle) { %>
|
|
431
|
+
<div class='column-subtitle'><%= userTerminal.subtitle %></div>
|
|
432
|
+
<% } %>
|
|
433
|
+
<div class='tab-content'>
|
|
434
|
+
<% userTerminal.menu.forEach((i) => { %>
|
|
435
|
+
<div class='tab' role="button" tabindex="0" data-index="<%= index++ %>" data-target="@<%= i.href %>" data-href="<%= i.href %>">
|
|
436
|
+
<% if (i.image) { %>
|
|
437
|
+
<img src="<%= i.image %>">
|
|
438
|
+
<% } else if (i.icon) { %>
|
|
439
|
+
<i class="img <%= i.icon %>"></i>
|
|
440
|
+
<% } %>
|
|
441
|
+
<h2><%= i.title %></h2>
|
|
442
|
+
<% if (i.subtitle) { %>
|
|
443
|
+
<div class='subtitle'><%= i.subtitle %></div>
|
|
444
|
+
<% } %>
|
|
445
|
+
<div class='flexible'></div>
|
|
446
|
+
<% if (i.link) { %>
|
|
447
|
+
<div target="_blank" data-href="<%= i.link %>"><i class="fa-solid fa-circle-info"></i></div>
|
|
448
|
+
<% } %>
|
|
449
|
+
<div class='disclosure-indicator' aria-hidden="true">
|
|
450
|
+
<i class="fa-solid fa-chevron-right"></i>
|
|
451
|
+
</div>
|
|
452
|
+
</div>
|
|
453
|
+
<% }) %>
|
|
454
|
+
</div>
|
|
455
|
+
</div>
|
|
456
|
+
<% } %>
|
|
457
|
+
|
|
458
|
+
<% if (cliMenu && cliMenu.menu && cliMenu.menu.length) { %>
|
|
459
|
+
<div class='menu-container menu-column cli-column'>
|
|
460
|
+
<div class='tab-header'>
|
|
461
|
+
<h3><i class='<%= cliMenu.icon %>'></i> Terminal Agents</h3>
|
|
462
|
+
</div>
|
|
463
|
+
<% if (cliMenu.subtitle) { %>
|
|
464
|
+
<div class='column-subtitle'><%= cliMenu.subtitle %></div>
|
|
465
|
+
<% } %>
|
|
466
|
+
<div class='tab-content'>
|
|
467
|
+
<% cliMenu.menu.forEach((i) => { %>
|
|
468
|
+
<div class='tab' role="button" tabindex="0" data-index="<%= index++ %>" data-target="@<%= i.href %>" data-href="<%= i.href %>">
|
|
469
|
+
<% if (i.image) { %>
|
|
470
|
+
<img src="<%= i.image %>">
|
|
471
|
+
<% } else if (i.icon) { %>
|
|
472
|
+
<i class="img <%= i.icon %>"></i>
|
|
473
|
+
<% } %>
|
|
474
|
+
<h2><%= i.title %></h2>
|
|
475
|
+
<% if (i.subtitle) { %>
|
|
476
|
+
<div class='subtitle'><%= i.subtitle %></div>
|
|
477
|
+
<% } %>
|
|
478
|
+
<div class='flexible'></div>
|
|
479
|
+
<% if (i.link) { %>
|
|
480
|
+
<div target="_blank" data-href="<%= i.link %>"><i class="fa-solid fa-circle-info"></i></div>
|
|
481
|
+
<% } %>
|
|
482
|
+
<div class='disclosure-indicator' aria-hidden="true">
|
|
483
|
+
<i class="fa-solid fa-chevron-right"></i>
|
|
484
|
+
</div>
|
|
485
|
+
</div>
|
|
486
|
+
<% }) %>
|
|
487
|
+
</div>
|
|
488
|
+
</div>
|
|
489
|
+
<% } %>
|
|
490
|
+
|
|
491
|
+
<% if (ideMenu && ideMenu.menu && ideMenu.menu.length) { %>
|
|
492
|
+
<div class='menu-container menu-column ide-column'>
|
|
493
|
+
<div class='tab-header'>
|
|
494
|
+
<h3><i class='<%= ideMenu.icon %>'></i> IDE Agents</h3>
|
|
495
|
+
</div>
|
|
496
|
+
<% if (ideMenu.subtitle) { %>
|
|
497
|
+
<div class='column-subtitle'><%= ideMenu.subtitle %></div>
|
|
498
|
+
<% } %>
|
|
499
|
+
<div class='tab-content'>
|
|
500
|
+
<% ideMenu.menu.forEach((i) => { %>
|
|
501
|
+
<div class='tab' role="button" tabindex="0" data-index="<%= index++ %>" data-target="@<%= i.href %>" data-href="<%= i.href %>">
|
|
502
|
+
<% if (i.image) { %>
|
|
503
|
+
<img src="<%= i.image %>">
|
|
504
|
+
<% } else if (i.icon) { %>
|
|
505
|
+
<i class="img <%= i.icon %>"></i>
|
|
506
|
+
<% } %>
|
|
507
|
+
<h2><%= i.title %></h2>
|
|
508
|
+
<% if (i.subtitle) { %>
|
|
509
|
+
<div class='subtitle'><%= i.subtitle %></div>
|
|
510
|
+
<% } %>
|
|
511
|
+
<div class='flexible'></div>
|
|
512
|
+
<% if (i.link) { %>
|
|
513
|
+
<div target="_blank" data-href="<%= i.link %>"><i class="fa-solid fa-circle-info"></i></div>
|
|
514
|
+
<% } %>
|
|
515
|
+
<div class='disclosure-indicator' aria-hidden="true">
|
|
516
|
+
<i class="fa-solid fa-chevron-right"></i>
|
|
517
|
+
</div>
|
|
518
|
+
</div>
|
|
519
|
+
<% }) %>
|
|
520
|
+
</div>
|
|
521
|
+
</div>
|
|
522
|
+
<% } %>
|
|
523
|
+
</div>
|
|
524
|
+
|
|
525
|
+
<% remaining.forEach((item) => { %>
|
|
372
526
|
<% if (item.menu) { %>
|
|
373
527
|
<div class='menu-container'>
|
|
374
528
|
<div class='tab-header'>
|
|
375
|
-
<h3><i class='<%=item.icon%>'></i> <%=item.title%></h3>
|
|
529
|
+
<h3><i class='<%= item.icon %>'></i> <%= item.title %></h3>
|
|
376
530
|
</div>
|
|
377
531
|
<div class='tab-content'>
|
|
378
532
|
<% item.menu.forEach((i) => { %>
|
|
379
|
-
<div class='tab' role="button" tabindex="0" data-index="<%=index
|
|
533
|
+
<div class='tab' role="button" tabindex="0" data-index="<%= index++ %>" data-target="@<%= i.href %>" data-href="<%= i.href %>">
|
|
380
534
|
<% if (i.image) { %>
|
|
381
|
-
<img src="<%=i.image%>">
|
|
535
|
+
<img src="<%= i.image %>">
|
|
382
536
|
<% } else if (i.icon) { %>
|
|
383
|
-
<i class="img <%=i.icon%>"></i>
|
|
537
|
+
<i class="img <%= i.icon %>"></i>
|
|
384
538
|
<% } %>
|
|
385
|
-
<h2><%=i.title%></
|
|
539
|
+
<h2><%= i.title %></h2>
|
|
386
540
|
<% if (i.subtitle) { %>
|
|
387
|
-
<div class='subtitle'><%=i.subtitle%></div>
|
|
541
|
+
<div class='subtitle'><%= i.subtitle %></div>
|
|
388
542
|
<% } %>
|
|
389
543
|
<div class='flexible'></div>
|
|
390
544
|
<% if (i.link) { %>
|
|
391
|
-
|
|
545
|
+
<div target="_blank" data-href="<%= i.link %>"><i class="fa-solid fa-circle-info"></i></div>
|
|
392
546
|
<% } %>
|
|
393
547
|
<div class='disclosure-indicator' aria-hidden="true">
|
|
394
548
|
<i class="fa-solid fa-chevron-right"></i>
|
|
@@ -398,22 +552,22 @@ body.dark #update-spec {
|
|
|
398
552
|
</div>
|
|
399
553
|
</div>
|
|
400
554
|
<% } else { %>
|
|
401
|
-
<div class='tab' data-index="<%=index
|
|
555
|
+
<div class='tab' data-index="<%= index++ %>">
|
|
402
556
|
<% if (item.image) { %>
|
|
403
|
-
<img src="<%=item.image%>">
|
|
557
|
+
<img src="<%= item.image %>">
|
|
404
558
|
<% } else if (item.icon) { %>
|
|
405
|
-
<i class="img <%=item.icon%>"></i>
|
|
559
|
+
<i class="img <%= item.icon %>"></i>
|
|
406
560
|
<% } %>
|
|
407
561
|
<div class='col'>
|
|
408
|
-
<h2><%=item.title%></
|
|
562
|
+
<h2><%= item.title %></h2>
|
|
409
563
|
<% if (item.subtitle) { %>
|
|
410
|
-
<div class='subtitle'><%=item.subtitle%></div>
|
|
564
|
+
<div class='subtitle'><%= item.subtitle %></div>
|
|
411
565
|
<% } %>
|
|
412
566
|
<div class='btns'>
|
|
413
567
|
<% if (item.link) { %>
|
|
414
|
-
|
|
568
|
+
<a class='btn' target="_blank" href="<%= item.link %>"><i class="fa-solid fa-circle-info"></i></a>
|
|
415
569
|
<% } %>
|
|
416
|
-
<a class='run-btn btn' href="<%=item.href%>"><i class="fa-solid <%=item.type === "Start" ? 'fa-play' : 'fa-rocket'%>"></i> <%=item.type%></a>
|
|
570
|
+
<a class='run-btn btn' href="<%= item.href %>"><i class="fa-solid <%= item.type === "Start" ? 'fa-play' : 'fa-rocket' %>"></i> <%= item.type %></a>
|
|
417
571
|
</div>
|
|
418
572
|
</div>
|
|
419
573
|
</div>
|
package/server/views/editor.ejs
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
<script src="/xterm-addon-search-bar.js"></script>
|
|
14
14
|
<script src="/sweetalert2.js"></script>
|
|
15
15
|
<script src="/Socket.js"></script>
|
|
16
|
+
<script src="/terminal-settings.js"></script>
|
|
16
17
|
<script src="/common.js"></script>
|
|
17
18
|
<script src="/he.js"></script>
|
|
18
19
|
<script src="/opener.js"></script>
|
|
@@ -680,7 +681,14 @@ document.addEventListener("DOMContentLoaded", async () => {
|
|
|
680
681
|
if (res && res.config) {
|
|
681
682
|
config = res.config
|
|
682
683
|
}
|
|
684
|
+
const baseConfig = Object.assign({}, config)
|
|
685
|
+
if (window.PinokioTerminalSettings && typeof window.PinokioTerminalSettings.applyToConfig === 'function') {
|
|
686
|
+
config = window.PinokioTerminalSettings.applyToConfig(config)
|
|
687
|
+
}
|
|
683
688
|
const term = new Terminal(config)
|
|
689
|
+
if (window.PinokioTerminalSettings && typeof window.PinokioTerminalSettings.register === 'function') {
|
|
690
|
+
window.PinokioTerminalSettings.register(term, { baseConfig })
|
|
691
|
+
}
|
|
684
692
|
term.open(document.querySelector("#terminal"))
|
|
685
693
|
|
|
686
694
|
|
|
@@ -52,6 +52,10 @@
|
|
|
52
52
|
</div>
|
|
53
53
|
</aside>
|
|
54
54
|
<main class="files-app__main">
|
|
55
|
+
<button class="files-app__sidebar-toggle" id="files-app-toggle-sidebar" type="button" aria-controls="files-app-tree" aria-expanded="true">
|
|
56
|
+
<span class="sr-only">Hide files</span>
|
|
57
|
+
<i class="fa-solid fa-chevron-left" aria-hidden="true"></i>
|
|
58
|
+
</button>
|
|
55
59
|
<div class="files-app__tabs" id="files-app-tabs" role="tablist" aria-label="Open files"></div>
|
|
56
60
|
<div class="files-app__editor" id="files-app-editor" role="presentation"></div>
|
|
57
61
|
<div class="files-app__status" id="files-app-status" role="status" aria-live="polite"></div>
|
package/server/views/index.ejs
CHANGED
|
@@ -729,8 +729,17 @@ body.dark aside .current.selected {
|
|
|
729
729
|
<a id='downloadlogs' download class='hidden btn2' href="/pinokio/logs.zip"><i class="fa-solid fa-download"></i><div class='caption'>Download logs</div></a>
|
|
730
730
|
<a class='tab' href="/screenshots"><i class="fa-solid fa-camera"></i><div class='caption'>Screenshots</div></a>
|
|
731
731
|
<a class='tab' href="/tools"><i class="fa-solid fa-toolbox"></i><div class='caption'>Installed Tools</div></a>
|
|
732
|
-
<a class='tab' href="/
|
|
732
|
+
<a class='tab' href="/agents"><i class="fa-solid fa-robot"></i><div class='caption'>Agents</div></a>
|
|
733
733
|
<a class='tab' href="/home?mode=settings"><i class="fa-solid fa-gear"></i><div class='caption'>Settings</div></a>
|
|
734
|
+
<% if (typeof peer_qr !== 'undefined' && peer_qr) { %>
|
|
735
|
+
<div class='qr' style='padding:12px 10px; text-align:center;'>
|
|
736
|
+
<a href="<%=peer_url%>" target="_blank" style="text-decoration:none; color:inherit; display:block;">
|
|
737
|
+
<img src="<%=peer_qr%>" alt="Open <%=peer_url%>" style="width:128px; height:128px; image-rendering: pixelated;"/>
|
|
738
|
+
<div class='caption'>Scan to open</div>
|
|
739
|
+
<div class='caption' style='font-size:10px; opacity:0.7;'><%=peer_url%></div>
|
|
740
|
+
</a>
|
|
741
|
+
</div>
|
|
742
|
+
<% } %>
|
|
734
743
|
</aside>
|
|
735
744
|
</main>
|
|
736
745
|
<script>
|
|
@@ -1497,6 +1497,7 @@ body.dark .ace-editor {
|
|
|
1497
1497
|
<script src="/report.js"></script>
|
|
1498
1498
|
<script src="/normalize.js"></script>
|
|
1499
1499
|
<script src="/Socket.js"></script>
|
|
1500
|
+
<script src="/terminal-settings.js"></script>
|
|
1500
1501
|
<script src="/noty.js"></script>
|
|
1501
1502
|
<script src="/notyq.js"></script>
|
|
1502
1503
|
<script src="/xterm.js"></script>
|
|
@@ -1587,7 +1588,6 @@ body.dark .ace-editor {
|
|
|
1587
1588
|
<div><h5>Download</h5></div>
|
|
1588
1589
|
</div>
|
|
1589
1590
|
</button>
|
|
1590
|
-
<!--
|
|
1591
1591
|
<div class='category-label'>Create a web domain</div>
|
|
1592
1592
|
<button type="button" class="tab-button" data-tab="dns">
|
|
1593
1593
|
<div class='row'>
|
|
@@ -1595,7 +1595,6 @@ body.dark .ace-editor {
|
|
|
1595
1595
|
<div><h5>Web Domain</h5></div>
|
|
1596
1596
|
</div>
|
|
1597
1597
|
</button>
|
|
1598
|
-
-->
|
|
1599
1598
|
</div>
|
|
1600
1599
|
|
|
1601
1600
|
<form id="bootstrap-form">
|
|
@@ -1951,8 +1950,17 @@ body.dark .ace-editor {
|
|
|
1951
1950
|
<a id='downloadlogs' download class='hidden btn2' href="/pinokio/logs.zip"><i class="fa-solid fa-download"></i><div class='caption'>Download logs</div></a>
|
|
1952
1951
|
<a class='tab' href="/screenshots"><i class="fa-solid fa-camera"></i><div class='caption'>Screenshots</div></a>
|
|
1953
1952
|
<a class='tab' href="/tools"><i class="fa-solid fa-toolbox"></i><div class='caption'>Installed Tools</div></a>
|
|
1954
|
-
<a class='tab' href="/
|
|
1953
|
+
<a class='tab' href="/agents"><i class="fa-solid fa-robot"></i><div class='caption'>Agents</div></a>
|
|
1955
1954
|
<a class='tab' href="/home?mode=settings"><i class="fa-solid fa-gear"></i><div class='caption'>Settings</div></a>
|
|
1955
|
+
<% if (typeof peer_qr !== 'undefined' && peer_qr) { %>
|
|
1956
|
+
<div class='qr' style='padding:12px 10px; text-align:center;'>
|
|
1957
|
+
<a href="<%=peer_url%>" target="_blank" style="text-decoration:none; color:inherit; display:block;">
|
|
1958
|
+
<img src="<%=peer_qr%>" alt="Open <%=peer_url%>" style="width:128px; height:128px; image-rendering: pixelated;"/>
|
|
1959
|
+
<div class='caption'>Scan to open</div>
|
|
1960
|
+
<div class='caption' style='font-size:10px; opacity:0.7;'><%=peer_url%></div>
|
|
1961
|
+
</a>
|
|
1962
|
+
</div>
|
|
1963
|
+
<% } %>
|
|
1956
1964
|
</aside>
|
|
1957
1965
|
</main>
|
|
1958
1966
|
<div id='terminal-container' class='hidden'>
|
|
@@ -2649,7 +2657,14 @@ const createTerm = async (_theme) => {
|
|
|
2649
2657
|
if (res && res.config) {
|
|
2650
2658
|
config = res.config
|
|
2651
2659
|
}
|
|
2660
|
+
const baseConfig = Object.assign({}, config)
|
|
2661
|
+
if (window.PinokioTerminalSettings && typeof window.PinokioTerminalSettings.applyToConfig === 'function') {
|
|
2662
|
+
config = window.PinokioTerminalSettings.applyToConfig(config)
|
|
2663
|
+
}
|
|
2652
2664
|
const term = new Terminal(config)
|
|
2665
|
+
if (window.PinokioTerminalSettings && typeof window.PinokioTerminalSettings.register === 'function') {
|
|
2666
|
+
window.PinokioTerminalSettings.register(term, { baseConfig })
|
|
2667
|
+
}
|
|
2653
2668
|
term.open(document.querySelector("#terminal2"))
|
|
2654
2669
|
document.querySelector("#terminal-container").classList.remove("hidden")
|
|
2655
2670
|
|
package/server/views/install.ejs
CHANGED
|
@@ -124,6 +124,7 @@ body {
|
|
|
124
124
|
<script src="/xterm-addon-web-links.js"></script>
|
|
125
125
|
<script src="/xterm-theme.js"></script>
|
|
126
126
|
<script src="/Socket.js"></script>
|
|
127
|
+
<script src="/terminal-settings.js"></script>
|
|
127
128
|
<!--
|
|
128
129
|
<script src="/install.js"></script>
|
|
129
130
|
-->
|
|
@@ -169,7 +170,14 @@ const createTerm = async (_theme) => {
|
|
|
169
170
|
if (res && res.config) {
|
|
170
171
|
config = res.config
|
|
171
172
|
}
|
|
173
|
+
const baseConfig = Object.assign({}, config)
|
|
174
|
+
if (window.PinokioTerminalSettings && typeof window.PinokioTerminalSettings.applyToConfig === 'function') {
|
|
175
|
+
config = window.PinokioTerminalSettings.applyToConfig(config)
|
|
176
|
+
}
|
|
172
177
|
const term = new Terminal(config)
|
|
178
|
+
if (window.PinokioTerminalSettings && typeof window.PinokioTerminalSettings.register === 'function') {
|
|
179
|
+
window.PinokioTerminalSettings.register(term, { baseConfig })
|
|
180
|
+
}
|
|
173
181
|
term.open(document.querySelector("#terminal"))
|
|
174
182
|
|
|
175
183
|
term.attachCustomKeyEventHandler(event => {
|
package/server/views/layout.ejs
CHANGED
package/server/views/net.ejs
CHANGED
|
@@ -821,8 +821,17 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
821
821
|
<a id='downloadlogs' download class='hidden btn2' href="/pinokio/logs.zip"><i class="fa-solid fa-download"></i><div class='caption'>Download logs</div></a>
|
|
822
822
|
<a class='tab' href="/screenshots"><i class="fa-solid fa-camera"></i><div class='caption'>Screenshots</div></a>
|
|
823
823
|
<a class='tab' href="/tools"><i class="fa-solid fa-toolbox"></i><div class='caption'>Installed Tools</div></a>
|
|
824
|
-
<a class='tab' href="/
|
|
824
|
+
<a class='tab' href="/agents"><i class="fa-solid fa-robot"></i><div class='caption'>Agents</div></a>
|
|
825
825
|
<a class='tab' href="/home?mode=settings"><i class="fa-solid fa-gear"></i><div class='caption'>Settings</div></a>
|
|
826
|
+
<% if (typeof peer_qr !== 'undefined' && peer_qr) { %>
|
|
827
|
+
<div class='qr' style='padding:12px 10px; text-align:center;'>
|
|
828
|
+
<a href="<%=peer_url%>" target="_blank" style="text-decoration:none; color:inherit; display:block;">
|
|
829
|
+
<img src="<%=peer_qr%>" alt="Open <%=peer_url%>" style="width:128px; height:128px; image-rendering: pixelated;"/>
|
|
830
|
+
<div class='caption'>Scan to open</div>
|
|
831
|
+
<div class='caption' style='font-size:10px; opacity:0.7;'><%=peer_url%></div>
|
|
832
|
+
</a>
|
|
833
|
+
</div>
|
|
834
|
+
<% } %>
|
|
826
835
|
</aside>
|
|
827
836
|
</main>
|
|
828
837
|
<script>
|
package/server/views/network.ejs
CHANGED
|
@@ -1182,8 +1182,17 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
1182
1182
|
<a id='downloadlogs' download class='hidden btn2' href="/pinokio/logs.zip"><i class="fa-solid fa-download"></i><div class='caption'>Download logs</div></a>
|
|
1183
1183
|
<a class='tab' href="/screenshots"><i class="fa-solid fa-camera"></i><div class='caption'>Screenshots</div></a>
|
|
1184
1184
|
<a class='tab' href="/tools"><i class="fa-solid fa-toolbox"></i><div class='caption'>Installed Tools</div></a>
|
|
1185
|
-
<a class='tab' href="/
|
|
1185
|
+
<a class='tab' href="/agents"><i class="fa-solid fa-robot"></i><div class='caption'>Agents</div></a>
|
|
1186
1186
|
<a class='tab' href="/home?mode=settings"><i class="fa-solid fa-gear"></i><div class='caption'>Settings</div></a>
|
|
1187
|
+
<% if (typeof peer_qr !== 'undefined' && peer_qr) { %>
|
|
1188
|
+
<div class='qr' style='padding:12px 10px; text-align:center;'>
|
|
1189
|
+
<a href="<%=peer_url%>" target="_blank" style="text-decoration:none; color:inherit; display:block;">
|
|
1190
|
+
<img src="<%=peer_qr%>" alt="Open <%=peer_url%>" style="width:128px; height:128px; image-rendering: pixelated;"/>
|
|
1191
|
+
<div class='caption'>Scan to open</div>
|
|
1192
|
+
<div class='caption' style='font-size:10px; opacity:0.7;'><%=peer_url%></div>
|
|
1193
|
+
</a>
|
|
1194
|
+
</div>
|
|
1195
|
+
<% } %>
|
|
1187
1196
|
</aside>
|
|
1188
1197
|
</main>
|
|
1189
1198
|
<script>
|
package/server/views/pro.ejs
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
<script src="/xterm-addon-search-bar.js"></script>
|
|
14
14
|
<script src="/sweetalert2.js"></script>
|
|
15
15
|
<script src="/Socket.js"></script>
|
|
16
|
+
<script src="/terminal-settings.js"></script>
|
|
16
17
|
<script src="/common.js"></script>
|
|
17
18
|
<script src="/he.js"></script>
|
|
18
19
|
<script src="/opener.js"></script>
|
|
@@ -228,7 +229,14 @@ const createTerm = async (_theme) => {
|
|
|
228
229
|
if (res && res.config) {
|
|
229
230
|
config = res.config
|
|
230
231
|
}
|
|
232
|
+
const baseConfig = Object.assign({}, config)
|
|
233
|
+
if (window.PinokioTerminalSettings && typeof window.PinokioTerminalSettings.applyToConfig === 'function') {
|
|
234
|
+
config = window.PinokioTerminalSettings.applyToConfig(config)
|
|
235
|
+
}
|
|
231
236
|
const term = new Terminal(config)
|
|
237
|
+
if (window.PinokioTerminalSettings && typeof window.PinokioTerminalSettings.register === 'function') {
|
|
238
|
+
window.PinokioTerminalSettings.register(term, { baseConfig })
|
|
239
|
+
}
|
|
232
240
|
term.open(document.querySelector("#terminal"))
|
|
233
241
|
|
|
234
242
|
term.attachCustomKeyEventHandler(event => {
|
|
@@ -981,6 +981,7 @@ body.dark .appcanvas {
|
|
|
981
981
|
<script src="/report.js"></script>
|
|
982
982
|
<script src="/normalize.js"></script>
|
|
983
983
|
<script src="/Socket.js"></script>
|
|
984
|
+
<script src="/terminal-settings.js"></script>
|
|
984
985
|
<script src="/noty.js"></script>
|
|
985
986
|
<script src="/notyq.js"></script>
|
|
986
987
|
<script src="/xterm.js"></script>
|
|
@@ -1570,7 +1571,14 @@ async function displayResults(config) {
|
|
|
1570
1571
|
term_config = res.config
|
|
1571
1572
|
}
|
|
1572
1573
|
let socket = new Socket()
|
|
1574
|
+
const baseConfig = Object.assign({}, term_config)
|
|
1575
|
+
if (window.PinokioTerminalSettings && typeof window.PinokioTerminalSettings.applyToConfig === 'function') {
|
|
1576
|
+
term_config = window.PinokioTerminalSettings.applyToConfig(term_config)
|
|
1577
|
+
}
|
|
1573
1578
|
const term = new Terminal(term_config)
|
|
1579
|
+
if (window.PinokioTerminalSettings && typeof window.PinokioTerminalSettings.register === 'function') {
|
|
1580
|
+
window.PinokioTerminalSettings.register(term, { baseConfig })
|
|
1581
|
+
}
|
|
1574
1582
|
term.open(document.querySelector("#terminal"))
|
|
1575
1583
|
term.attachCustomKeyEventHandler(event => {
|
|
1576
1584
|
console.log({ event })
|
|
@@ -198,7 +198,6 @@ body.dark header .home {
|
|
|
198
198
|
*/
|
|
199
199
|
header .home {
|
|
200
200
|
color: var(--light-color);
|
|
201
|
-
padding: 10px;
|
|
202
201
|
}
|
|
203
202
|
body.dark hr {
|
|
204
203
|
background: white;
|
|
@@ -774,8 +773,17 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
774
773
|
<a id='downloadlogs' download class='hidden btn2' href="/pinokio/logs.zip"><i class="fa-solid fa-download"></i><div class='caption'>Download logs</div></a>
|
|
775
774
|
<a class='tab selected' href="/screenshots"><i class="fa-solid fa-camera"></i><div class='caption'>Screenshots</div></a>
|
|
776
775
|
<a class='tab' href="/tools"><i class="fa-solid fa-toolbox"></i><div class='caption'>Installed Tools</div></a>
|
|
777
|
-
<a class='tab' href="/
|
|
776
|
+
<a class='tab' href="/agents"><i class="fa-solid fa-robot"></i><div class='caption'>Agents</div></a>
|
|
778
777
|
<a class='tab' href="/home?mode=settings"><i class="fa-solid fa-gear"></i><div class='caption'>Settings</div></a>
|
|
778
|
+
<% if (typeof peer_qr !== 'undefined' && peer_qr) { %>
|
|
779
|
+
<div class='qr' style='padding:12px 10px; text-align:center;'>
|
|
780
|
+
<a href="<%=peer_url%>" target="_blank" style="text-decoration:none; color:inherit; display:block;">
|
|
781
|
+
<img src="<%=peer_qr%>" alt="Open <%=peer_url%>" style="width:128px; height:128px; image-rendering: pixelated;"/>
|
|
782
|
+
<div class='caption'>Scan to open</div>
|
|
783
|
+
<div class='caption' style='font-size:10px; opacity:0.7;'><%=peer_url%></div>
|
|
784
|
+
</a>
|
|
785
|
+
</div>
|
|
786
|
+
<% } %>
|
|
779
787
|
</aside>
|
|
780
788
|
</main>
|
|
781
789
|
<script>
|
|
@@ -198,7 +198,6 @@ body.dark header .home {
|
|
|
198
198
|
*/
|
|
199
199
|
header .home {
|
|
200
200
|
color: var(--light-color);
|
|
201
|
-
padding: 10px;
|
|
202
201
|
}
|
|
203
202
|
body.dark hr {
|
|
204
203
|
background: white;
|
|
@@ -569,8 +568,17 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
569
568
|
<a id='downloadlogs' download class='hidden btn2' href="/pinokio/logs.zip"><i class="fa-solid fa-download"></i><div class='caption'>Download logs</div></a>
|
|
570
569
|
<a class='tab' href="/screenshots"><i class="fa-solid fa-camera"></i><div class='caption'>Screenshots</div></a>
|
|
571
570
|
<a class='tab' href="/tools"><i class="fa-solid fa-toolbox"></i><div class='caption'>Installed Tools</div></a>
|
|
572
|
-
<a class='tab' href="/
|
|
571
|
+
<a class='tab' href="/agents"><i class="fa-solid fa-robot"></i><div class='caption'>Agents</div></a>
|
|
573
572
|
<a class='tab selected' href="/home?mode=settings"><i class="fa-solid fa-gear"></i><div class='caption'>Settings</div></a>
|
|
573
|
+
<% if (typeof peer_qr !== 'undefined' && peer_qr) { %>
|
|
574
|
+
<div class='qr' style='padding:12px 10px; text-align:center;'>
|
|
575
|
+
<a href="<%=peer_url%>" target="_blank" style="text-decoration:none; color:inherit; display:block;">
|
|
576
|
+
<img src="<%=peer_qr%>" alt="Open <%=peer_url%>" style="width:128px; height:128px; image-rendering: pixelated;"/>
|
|
577
|
+
<div class='caption'>Scan to open</div>
|
|
578
|
+
<div class='caption' style='font-size:10px; opacity:0.7;'><%=peer_url%></div>
|
|
579
|
+
</a>
|
|
580
|
+
</div>
|
|
581
|
+
<% } %>
|
|
574
582
|
</aside>
|
|
575
583
|
</main>
|
|
576
584
|
<script>
|
package/server/views/shell.ejs
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
<script src="/sweetalert2.js"></script>
|
|
15
15
|
<script src="/Socket.js"></script>
|
|
16
16
|
<script src="/terminal_input_tracker.js"></script>
|
|
17
|
+
<script src="/terminal-settings.js"></script>
|
|
17
18
|
<script src="/common.js"></script>
|
|
18
19
|
<script src="/he.js"></script>
|
|
19
20
|
<script src="/opener.js"></script>
|
|
@@ -927,7 +928,14 @@ document.addEventListener("DOMContentLoaded", async () => {
|
|
|
927
928
|
if (res && res.config) {
|
|
928
929
|
config = res.config
|
|
929
930
|
}
|
|
931
|
+
const baseConfig = Object.assign({}, config)
|
|
932
|
+
if (window.PinokioTerminalSettings && typeof window.PinokioTerminalSettings.applyToConfig === 'function') {
|
|
933
|
+
config = window.PinokioTerminalSettings.applyToConfig(config)
|
|
934
|
+
}
|
|
930
935
|
const term = new Terminal(config)
|
|
936
|
+
if (window.PinokioTerminalSettings && typeof window.PinokioTerminalSettings.register === 'function') {
|
|
937
|
+
window.PinokioTerminalSettings.register(term, { baseConfig })
|
|
938
|
+
}
|
|
931
939
|
term.open(document.querySelector("#terminal"))
|
|
932
940
|
const terminalContainer = document.querySelector("#terminal")
|
|
933
941
|
const dropOverlay = document.createElement("div")
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
<script src="/sweetalert2.js"></script>
|
|
15
15
|
<script src="/Socket.js"></script>
|
|
16
16
|
<script src="/terminal_input_tracker.js"></script>
|
|
17
|
+
<script src="/terminal-settings.js"></script>
|
|
17
18
|
<script src="/common.js"></script>
|
|
18
19
|
<script src="/he.js"></script>
|
|
19
20
|
<script src="/opener.js"></script>
|
|
@@ -1011,7 +1012,14 @@ document.addEventListener("DOMContentLoaded", async () => {
|
|
|
1011
1012
|
if (res && res.config) {
|
|
1012
1013
|
config = res.config
|
|
1013
1014
|
}
|
|
1015
|
+
const baseConfig = Object.assign({}, config)
|
|
1016
|
+
if (window.PinokioTerminalSettings && typeof window.PinokioTerminalSettings.applyToConfig === 'function') {
|
|
1017
|
+
config = window.PinokioTerminalSettings.applyToConfig(config)
|
|
1018
|
+
}
|
|
1014
1019
|
const term = new Terminal(config)
|
|
1020
|
+
if (window.PinokioTerminalSettings && typeof window.PinokioTerminalSettings.register === 'function') {
|
|
1021
|
+
window.PinokioTerminalSettings.register(term, { baseConfig })
|
|
1022
|
+
}
|
|
1015
1023
|
term.open(document.querySelector("#terminal"))
|
|
1016
1024
|
const terminalContainer = document.querySelector("#terminal")
|
|
1017
1025
|
const dropOverlay = document.createElement("div")
|