pinokiod 3.40.0 → 3.42.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/api/browser/index.js +3 -1
- package/kernel/api/cloudflare/index.js +3 -3
- package/kernel/api/index.js +187 -51
- package/kernel/api/loading/index.js +15 -0
- package/kernel/api/process/index.js +7 -0
- package/kernel/api/shell/index.js +0 -2
- package/kernel/bin/browserless.js +22 -0
- package/kernel/bin/caddy.js +36 -4
- package/kernel/bin/index.js +4 -1
- package/kernel/bin/setup.js +38 -5
- package/kernel/connect/backend.js +110 -0
- package/kernel/connect/config.js +171 -0
- package/kernel/connect/index.js +18 -7
- package/kernel/connect/providers/huggingface/index.js +98 -0
- package/kernel/connect/providers/x/index.js +0 -1
- package/kernel/environment.js +91 -19
- package/kernel/git.js +46 -3
- package/kernel/index.js +119 -39
- package/kernel/peer.js +40 -5
- package/kernel/plugin.js +3 -2
- package/kernel/procs.js +27 -20
- package/kernel/prototype.js +30 -16
- package/kernel/router/common.js +1 -1
- package/kernel/router/connector.js +1 -3
- package/kernel/router/index.js +38 -4
- package/kernel/router/localhost_home_router.js +5 -1
- package/kernel/router/localhost_port_router.js +27 -1
- package/kernel/router/localhost_static_router.js +93 -0
- package/kernel/router/localhost_variable_router.js +14 -9
- package/kernel/router/peer_peer_router.js +3 -0
- package/kernel/router/peer_static_router.js +43 -0
- package/kernel/router/peer_variable_router.js +15 -14
- package/kernel/router/processor.js +26 -1
- package/kernel/router/rewriter.js +59 -0
- package/kernel/scripts/git/commit +11 -1
- package/kernel/shell.js +8 -3
- package/kernel/util.js +65 -6
- package/package.json +2 -1
- package/server/index.js +1048 -970
- package/server/public/common.js +382 -1
- package/server/public/fscreator.js +0 -1
- package/server/public/loading.js +17 -0
- package/server/public/notifyinput.js +0 -1
- package/server/public/opener.js +4 -2
- package/server/public/style.css +310 -11
- package/server/socket.js +7 -1
- package/server/views/app.ejs +1747 -351
- package/server/views/columns.ejs +338 -0
- package/server/views/connect/huggingface.ejs +353 -0
- package/server/views/connect/index.ejs +410 -0
- package/server/views/connect/x.ejs +43 -9
- package/server/views/connect.ejs +709 -49
- package/server/views/container.ejs +357 -0
- package/server/views/d.ejs +251 -62
- package/server/views/download.ejs +54 -10
- package/server/views/editor.ejs +11 -0
- package/server/views/explore.ejs +40 -15
- package/server/views/file_explorer.ejs +25 -246
- package/server/views/form.ejs +44 -1
- package/server/views/frame.ejs +39 -1
- package/server/views/github.ejs +48 -11
- package/server/views/help.ejs +48 -7
- package/server/views/index.ejs +119 -58
- package/server/views/index2.ejs +3 -4
- package/server/views/init/index.ejs +651 -197
- package/server/views/install.ejs +1 -1
- package/server/views/mini.ejs +47 -18
- package/server/views/net.ejs +199 -67
- package/server/views/network.ejs +229 -93
- package/server/views/network2.ejs +3 -4
- package/server/views/old_network.ejs +3 -3
- package/server/views/prototype/index.ejs +48 -11
- package/server/views/review.ejs +1005 -0
- package/server/views/rows.ejs +341 -0
- package/server/views/screenshots.ejs +1020 -0
- package/server/views/settings.ejs +160 -23
- package/server/views/setup.ejs +49 -7
- package/server/views/setup_home.ejs +43 -10
- package/server/views/shell.ejs +7 -1
- package/server/views/start.ejs +14 -9
- package/server/views/terminal.ejs +13 -2
- package/server/views/tools.ejs +1015 -0
|
@@ -49,20 +49,15 @@
|
|
|
49
49
|
display: flex;
|
|
50
50
|
align-items: center;
|
|
51
51
|
}
|
|
52
|
-
|
|
53
|
-
background: none !important;
|
|
54
|
-
}
|
|
52
|
+
/*
|
|
55
53
|
.btn {
|
|
56
54
|
margin-right: 5px;
|
|
57
55
|
font-weight: normal;
|
|
58
56
|
padding: 5px 15px;
|
|
59
57
|
min-width: 100px;
|
|
60
58
|
text-align: center;
|
|
61
|
-
/*
|
|
62
|
-
background: rgba(0,0,0,0.9);
|
|
63
|
-
*/
|
|
64
|
-
border: 1px solid rgba(0,0,0,0.9);
|
|
65
59
|
}
|
|
60
|
+
*/
|
|
66
61
|
.items {
|
|
67
62
|
max-width: 600px;
|
|
68
63
|
margin: 50px auto;
|
|
@@ -87,7 +82,6 @@ body.dark .item {
|
|
|
87
82
|
.titleview h1 {
|
|
88
83
|
word-break: break-word;
|
|
89
84
|
font-size: 40px;
|
|
90
|
-
font-weight: lighter;
|
|
91
85
|
margin-bottom: 10px;
|
|
92
86
|
}
|
|
93
87
|
.item > .d {
|
|
@@ -100,12 +94,9 @@ body.dark .item {
|
|
|
100
94
|
font-weight: bold;
|
|
101
95
|
padding-bottom: 5px;
|
|
102
96
|
}
|
|
103
|
-
body.dark .item .explanation {
|
|
104
|
-
color: rgba(240, 0, 0,1);
|
|
105
|
-
}
|
|
106
97
|
.item .explanation {
|
|
107
98
|
padding-top: 5px;
|
|
108
|
-
color:
|
|
99
|
+
color: #bf411d;
|
|
109
100
|
font-size: 12px;
|
|
110
101
|
}
|
|
111
102
|
.item input[type=text] {
|
|
@@ -181,7 +172,7 @@ body.dark .loading {
|
|
|
181
172
|
}
|
|
182
173
|
body.dark .btn {
|
|
183
174
|
color: white;
|
|
184
|
-
|
|
175
|
+
background: rgba(255,255,255,0.1);
|
|
185
176
|
}
|
|
186
177
|
body.light {
|
|
187
178
|
/*
|
|
@@ -250,7 +241,99 @@ body.dark .keys pre {
|
|
|
250
241
|
.swal2-title {
|
|
251
242
|
text-align: center !important;
|
|
252
243
|
}
|
|
244
|
+
main {
|
|
245
|
+
display: flex;
|
|
246
|
+
}
|
|
247
|
+
aside {
|
|
248
|
+
width: 200px;
|
|
249
|
+
display: block;
|
|
250
|
+
flex-shrink: 0;
|
|
251
|
+
}
|
|
252
|
+
aside .tab i {
|
|
253
|
+
width: 20px;
|
|
254
|
+
text-align: center;
|
|
255
|
+
}
|
|
256
|
+
body.dark aside .tab {
|
|
257
|
+
color: white;
|
|
258
|
+
}
|
|
259
|
+
body.dark aside .tab:hover, aside .tab:hover {
|
|
260
|
+
color: royalblue !important;
|
|
261
|
+
opacity: 1;
|
|
262
|
+
}
|
|
263
|
+
aside .tab {
|
|
264
|
+
display: flex;
|
|
265
|
+
align-items: center;
|
|
266
|
+
gap: 5px;
|
|
267
|
+
color: black;
|
|
268
|
+
text-decoration: none;
|
|
269
|
+
padding: 10px;
|
|
270
|
+
font-size: 12px;
|
|
271
|
+
opacity: 0.5;
|
|
272
|
+
border-left: 10px solid transparent;
|
|
273
|
+
}
|
|
274
|
+
body.dark aside .tab.selected {
|
|
275
|
+
color: white;
|
|
276
|
+
}
|
|
277
|
+
aside .selected {
|
|
278
|
+
font-weight: bold;
|
|
279
|
+
opacity: 1;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
@media only screen and (max-width: 800px) {
|
|
283
|
+
body {
|
|
284
|
+
display: flex !important;
|
|
285
|
+
flex-direction: row !important;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
@media only screen and (max-width: 600px) {
|
|
289
|
+
aside {
|
|
290
|
+
width: unset;
|
|
291
|
+
flex-shrink: unset;
|
|
292
|
+
}
|
|
293
|
+
aside {
|
|
294
|
+
padding: 0 10px;
|
|
295
|
+
}
|
|
296
|
+
aside .tab i {
|
|
297
|
+
width: 100%;
|
|
298
|
+
}
|
|
299
|
+
aside .tab .caption {
|
|
300
|
+
display: none;
|
|
301
|
+
}
|
|
302
|
+
aside .tab {
|
|
303
|
+
margin: 0;
|
|
304
|
+
padding: 10px;
|
|
305
|
+
border-left: none;
|
|
306
|
+
}
|
|
307
|
+
aside .btn-tab {
|
|
308
|
+
flex-direction: column;
|
|
309
|
+
padding: 10px 0;
|
|
310
|
+
}
|
|
311
|
+
aside .btn-tab .btn {
|
|
312
|
+
display: flex;
|
|
313
|
+
justify-content: center;
|
|
314
|
+
}
|
|
315
|
+
aside .btn-tab .btn .caption {
|
|
316
|
+
display: none;
|
|
317
|
+
}
|
|
318
|
+
header .flexible {
|
|
319
|
+
min-width: unset;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
@media only screen and (max-width: 480px) {
|
|
324
|
+
.btn2 {
|
|
325
|
+
padding: 5px;
|
|
326
|
+
font-size: 11px;
|
|
327
|
+
}
|
|
328
|
+
.nav-btns {
|
|
329
|
+
flex-grow: 1;
|
|
330
|
+
justify-content: center;
|
|
331
|
+
padding: 0;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
253
334
|
</style>
|
|
335
|
+
<script src="/popper.min.js"></script>
|
|
336
|
+
<script src="/tippy-bundle.umd.min.js"></script>
|
|
254
337
|
<script src="/hotkeys.min.js"></script>
|
|
255
338
|
<script src="/sweetalert2.js"></script>
|
|
256
339
|
<script src="/noty.js"></script>
|
|
@@ -275,9 +358,9 @@ body.dark .keys pre {
|
|
|
275
358
|
<header class='navheader grabbable'>
|
|
276
359
|
<h1>
|
|
277
360
|
<a class='home' href="/"><img class='icon' src="/pinokio-black.png"></a>
|
|
278
|
-
<button class='btn2' id='back'><div><i class="fa-solid fa-chevron-left"></i></div
|
|
279
|
-
<button class='btn2' id='forward'><div><i class="fa-solid fa-chevron-right"></i></div
|
|
280
|
-
<button class='btn2' id='refresh-page'><div><i class="fa-solid fa-rotate-right"></i></div
|
|
361
|
+
<button class='btn2' id='back' data-tippy-content="back"><div><i class="fa-solid fa-chevron-left"></i></div></button>
|
|
362
|
+
<button class='btn2' id='forward' data-tippy-content="forward"><div><i class="fa-solid fa-chevron-right"></i></div></button>
|
|
363
|
+
<button class='btn2' id='refresh-page' data-tippy-content="refresh"><div><i class="fa-solid fa-rotate-right"></i></div></button>
|
|
281
364
|
<% paths.forEach((path) => { %>
|
|
282
365
|
<% if (path.action) { %>
|
|
283
366
|
<a class='path nav-button' id="<%=path.id%>" onclick="<%=path.action%>"><%-path.name%></a>
|
|
@@ -285,18 +368,51 @@ body.dark .keys pre {
|
|
|
285
368
|
<a class='path' href="<%=path.path%>"><%-path.name%></a>
|
|
286
369
|
<% } %>
|
|
287
370
|
<% }) %>
|
|
371
|
+
<button class='btn2' id='screenshot' data-tippy-content="take a screenshot"><i class="fa-solid fa-camera"></i></button>
|
|
288
372
|
<div class='flexible'></div>
|
|
289
|
-
<
|
|
290
|
-
<
|
|
373
|
+
<a class='btn2' href="/columns" data-tippy-content="split into 2 columns">
|
|
374
|
+
<div><i class="fa-solid fa-table-columns"></i></div>
|
|
375
|
+
</a>
|
|
376
|
+
<a class='btn2' href="/rows" data-tippy-content="split into 2 rows">
|
|
377
|
+
<div><i class="fa-solid fa-table-columns fa-rotate-270"></i></div>
|
|
378
|
+
</a>
|
|
379
|
+
<div class="dropdown btn2">
|
|
380
|
+
<button class='btn2' id='window-management'>
|
|
381
|
+
<div><i class="fa-solid fa-plus"></i></div>
|
|
382
|
+
</button>
|
|
383
|
+
<div class="dropdown-content" id="dropdown-content">
|
|
384
|
+
<button class='btn2' id='clone-win' data-tippy-content="clone this window">
|
|
385
|
+
<div><i class="fa-solid fa-clone"></i><div>clone this window</div></div>
|
|
386
|
+
</button>
|
|
387
|
+
<button id='new-window' data-tippy-content="open a new window" title='open a new window' class='btn2' data-agent="<%=agent%>">
|
|
388
|
+
<div><i class="fa-solid fa-plus"></i><div>new window</div></div>
|
|
389
|
+
</button>
|
|
390
|
+
</div>
|
|
291
391
|
</div>
|
|
292
392
|
<!--
|
|
293
|
-
<div class=
|
|
294
|
-
<button class='btn2' id='
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
<
|
|
393
|
+
<div class="dropdown btn2">
|
|
394
|
+
<button class='btn2' id='window-management'>
|
|
395
|
+
<div><i class="fa-regular fa-window-restore"></i></div>
|
|
396
|
+
</button>
|
|
397
|
+
<div class="dropdown-content" id="dropdown-content">
|
|
398
|
+
<button class='btn2' id='clone-win' data-tippy-content="clone this window">
|
|
399
|
+
<div><i class="fa-solid fa-clone"></i><div>clone this window</div></div>
|
|
400
|
+
</button>
|
|
401
|
+
<a class='btn2' href="/columns" data-tippy-content="split into 2 columns">
|
|
402
|
+
<div><i class="fa-solid fa-table-columns"></i><div>split columns</div></div>
|
|
403
|
+
</a>
|
|
404
|
+
<a class='btn2' href="/rows" data-tippy-content="split into 2 rows">
|
|
405
|
+
<div><i class="fa-solid fa-table-columns fa-rotate-270"></i><div>split rows</div></div>
|
|
406
|
+
</a>
|
|
407
|
+
<button id='new-window' data-tippy-content="open a new window" title='open a new window' class='btn2' data-agent="<%=agent%>">
|
|
408
|
+
<div><i class="fa-solid fa-plus"></i><div>new window</div></div>
|
|
409
|
+
</button>
|
|
410
|
+
</div>
|
|
298
411
|
</div>
|
|
299
412
|
-->
|
|
413
|
+
<button class='btn2 hidden' id='close-window' data-tippy-content='close this section'>
|
|
414
|
+
<div><i class="fa-solid fa-xmark"></i></div>
|
|
415
|
+
</button>
|
|
300
416
|
</h1>
|
|
301
417
|
</header>
|
|
302
418
|
<main>
|
|
@@ -440,6 +556,27 @@ body.dark .keys pre {
|
|
|
440
556
|
<% } %>
|
|
441
557
|
</div>
|
|
442
558
|
</div>
|
|
559
|
+
<aside>
|
|
560
|
+
<div class='btn-tab'>
|
|
561
|
+
<a href="/init" class='btn'><i class="fa-solid fa-plus"></i><div class='caption'>Create</div></a>
|
|
562
|
+
<a class='btn' id='explore' href="/?mode=explore"><i class="fa-solid fa-globe"></i><div class='caption'>Discover</div></a>
|
|
563
|
+
</div>
|
|
564
|
+
<a href="/" class='tab'><i class='fas fa-laptop-code'></i><div class='caption'>This machine</div></a>
|
|
565
|
+
<a href="/network" class='tab'><i class="fa-solid fa-wifi"></i><div class='caption'>Local network</div></a>
|
|
566
|
+
<% if (list.length > 0) { %>
|
|
567
|
+
<% let brands = { win32: "windows", darwin: "apple", linux: "Linux" } %>
|
|
568
|
+
<% list.forEach(({ host, name, platform, processes }, index) => { %>
|
|
569
|
+
<a href="/net/<%=name%>" class='submenu tab'><i class="fa-brands fa-<%=brands[platform]%>"></i><div class='caption'><%=name%> (<%=current_host === host ? 'this machine' : host%>)</div></a>
|
|
570
|
+
<% }) %>
|
|
571
|
+
<% } %>
|
|
572
|
+
<a href="/connect" class='tab'><i class="fa-solid fa-plug"></i><div class='caption'>Login</div></a>
|
|
573
|
+
<a class='tab' href="<%=portal%>" target="_blank"><i class="fa-solid fa-question"></i><div class='caption'>Help</div></a>
|
|
574
|
+
<a class='tab' id='genlog'><i class="fa-solid fa-laptop-code"></i><div class='caption'>Logs</div></a>
|
|
575
|
+
<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>
|
|
576
|
+
<a class='tab' href="/screenshots"><i class="fa-solid fa-camera"></i><div class='caption'>Screenshots</div></a>
|
|
577
|
+
<a class='tab' href="/tools"><i class="fa-solid fa-toolbox"></i><div class='caption'>Installed Tools</div></a>
|
|
578
|
+
<a class='tab selected' href="/?mode=settings"><i class="fa-solid fa-gear"></i><div class='caption'>Settings</div></a>
|
|
579
|
+
</aside>
|
|
443
580
|
</main>
|
|
444
581
|
<script>
|
|
445
582
|
document.addEventListener("DOMContentLoaded", async () => {
|
package/server/views/setup.ejs
CHANGED
|
@@ -109,6 +109,12 @@ body {
|
|
|
109
109
|
.timestamp {
|
|
110
110
|
color: rgba(0,0,0,0.5);
|
|
111
111
|
}
|
|
112
|
+
@media only screen and (max-width: 800px) {
|
|
113
|
+
body {
|
|
114
|
+
display: flex !important;
|
|
115
|
+
flex-direction: row !important;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
112
118
|
</style>
|
|
113
119
|
<script src="/hotkeys.min.js"></script>
|
|
114
120
|
<script src="/sweetalert2.js"></script>
|
|
@@ -129,15 +135,51 @@ body {
|
|
|
129
135
|
<header class='grabbable'>
|
|
130
136
|
<h1>
|
|
131
137
|
<a class='path' href="/"><%-logo%></a>
|
|
138
|
+
<button class='btn2' id='screenshot' data-tippy-content="take a screenshot"><i class="fa-solid fa-camera"></i></button>
|
|
132
139
|
<div class='flexible'></div>
|
|
133
|
-
<
|
|
134
|
-
<
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
<
|
|
138
|
-
|
|
140
|
+
<a class='btn2' href="/columns" data-tippy-content="split into 2 columns">
|
|
141
|
+
<div><i class="fa-solid fa-table-columns"></i></div>
|
|
142
|
+
</a>
|
|
143
|
+
<a class='btn2' href="/rows" data-tippy-content="split into 2 rows">
|
|
144
|
+
<div><i class="fa-solid fa-table-columns fa-rotate-270"></i></div>
|
|
145
|
+
</a>
|
|
146
|
+
<div class="dropdown btn2">
|
|
147
|
+
<button class='btn2' id='window-management'>
|
|
148
|
+
<div><i class="fa-solid fa-plus"></i></div>
|
|
149
|
+
</button>
|
|
150
|
+
<div class="dropdown-content" id="dropdown-content">
|
|
151
|
+
<button class='btn2' id='clone-win' data-tippy-content="clone this window">
|
|
152
|
+
<div><i class="fa-solid fa-clone"></i><div>clone this window</div></div>
|
|
153
|
+
</button>
|
|
154
|
+
<button id='new-window' data-tippy-content="open a new window" title='open a new window' class='btn2' data-agent="<%=agent%>">
|
|
155
|
+
<div><i class="fa-solid fa-plus"></i><div>new window</div></div>
|
|
156
|
+
</button>
|
|
157
|
+
</div>
|
|
139
158
|
</div>
|
|
140
|
-
|
|
159
|
+
<!--
|
|
160
|
+
<div class="dropdown btn2">
|
|
161
|
+
<button class='btn2' id='window-management'>
|
|
162
|
+
<div><i class="fa-regular fa-window-restore"></i></div>
|
|
163
|
+
</button>
|
|
164
|
+
<div class="dropdown-content" id="dropdown-content">
|
|
165
|
+
<button class='btn2' id='clone-win' data-tippy-content="clone this window">
|
|
166
|
+
<div><i class="fa-solid fa-clone"></i><div>clone this window</div></div>
|
|
167
|
+
</button>
|
|
168
|
+
<a class='btn2' href="/columns" data-tippy-content="split into 2 columns">
|
|
169
|
+
<div><i class="fa-solid fa-table-columns"></i><div>split columns</div></div>
|
|
170
|
+
</a>
|
|
171
|
+
<a class='btn2' href="/rows" data-tippy-content="split into 2 rows">
|
|
172
|
+
<div><i class="fa-solid fa-table-columns fa-rotate-270"></i><div>split rows</div></div>
|
|
173
|
+
</a>
|
|
174
|
+
<button id='new-window' data-tippy-content="open a new window" title='open a new window' class='btn2' data-agent="<%=agent%>">
|
|
175
|
+
<div><i class="fa-solid fa-plus"></i><div>new window</div></div>
|
|
176
|
+
</button>
|
|
177
|
+
</div>
|
|
178
|
+
</div>
|
|
179
|
+
-->
|
|
180
|
+
<button class='btn2 hidden' id='close-window' data-tippy-content='close this section'>
|
|
181
|
+
<div><i class="fa-solid fa-xmark"></i></div>
|
|
182
|
+
</button>
|
|
141
183
|
</h1>
|
|
142
184
|
</header>
|
|
143
185
|
<% if (requirements_pending) { %>
|
|
@@ -152,18 +152,51 @@ body.dark .card {
|
|
|
152
152
|
<header class='grabbable'>
|
|
153
153
|
<h1>
|
|
154
154
|
<a class='path' href="/"><%-logo%></a>
|
|
155
|
+
<button class='btn2' id='screenshot' data-tippy-content="take a screenshot"><i class="fa-solid fa-camera"></i></button>
|
|
155
156
|
<div class='flexible'></div>
|
|
156
|
-
<
|
|
157
|
-
<
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
<
|
|
164
|
-
|
|
165
|
-
|
|
157
|
+
<a class='btn2' href="/columns" data-tippy-content="split into 2 columns">
|
|
158
|
+
<div><i class="fa-solid fa-table-columns"></i></div>
|
|
159
|
+
</a>
|
|
160
|
+
<a class='btn2' href="/rows" data-tippy-content="split into 2 rows">
|
|
161
|
+
<div><i class="fa-solid fa-table-columns fa-rotate-270"></i></div>
|
|
162
|
+
</a>
|
|
163
|
+
<div class="dropdown btn2">
|
|
164
|
+
<button class='btn2' id='window-management'>
|
|
165
|
+
<div><i class="fa-solid fa-plus"></i></div>
|
|
166
|
+
</button>
|
|
167
|
+
<div class="dropdown-content" id="dropdown-content">
|
|
168
|
+
<button class='btn2' id='clone-win' data-tippy-content="clone this window">
|
|
169
|
+
<div><i class="fa-solid fa-clone"></i><div>clone this window</div></div>
|
|
170
|
+
</button>
|
|
171
|
+
<button id='new-window' data-tippy-content="open a new window" title='open a new window' class='btn2' data-agent="<%=agent%>">
|
|
172
|
+
<div><i class="fa-solid fa-plus"></i><div>new window</div></div>
|
|
173
|
+
</button>
|
|
174
|
+
</div>
|
|
175
|
+
</div>
|
|
176
|
+
<!--
|
|
177
|
+
<div class="dropdown btn2">
|
|
178
|
+
<button class='btn2' id='window-management'>
|
|
179
|
+
<div><i class="fa-regular fa-window-restore"></i></div>
|
|
180
|
+
</button>
|
|
181
|
+
<div class="dropdown-content" id="dropdown-content">
|
|
182
|
+
<button class='btn2' id='clone-win' data-tippy-content="clone this window">
|
|
183
|
+
<div><i class="fa-solid fa-clone"></i><div>clone this window</div></div>
|
|
184
|
+
</button>
|
|
185
|
+
<a class='btn2' href="/columns" data-tippy-content="split into 2 columns">
|
|
186
|
+
<div><i class="fa-solid fa-table-columns"></i><div>split columns</div></div>
|
|
187
|
+
</a>
|
|
188
|
+
<a class='btn2' href="/rows" data-tippy-content="split into 2 rows">
|
|
189
|
+
<div><i class="fa-solid fa-table-columns fa-rotate-270"></i><div>split rows</div></div>
|
|
190
|
+
</a>
|
|
191
|
+
<button id='new-window' data-tippy-content="open a new window" title='open a new window' class='btn2' data-agent="<%=agent%>">
|
|
192
|
+
<div><i class="fa-solid fa-plus"></i><div>new window</div></div>
|
|
193
|
+
</button>
|
|
194
|
+
</div>
|
|
166
195
|
</div>
|
|
196
|
+
-->
|
|
197
|
+
<button class='btn2 hidden' id='close-window' data-tippy-content='close this section'>
|
|
198
|
+
<div><i class="fa-solid fa-xmark"></i></div>
|
|
199
|
+
</button>
|
|
167
200
|
</h1>
|
|
168
201
|
</h1>
|
|
169
202
|
</header>
|
package/server/views/shell.ejs
CHANGED
|
@@ -111,6 +111,9 @@ header {
|
|
|
111
111
|
.navheader {
|
|
112
112
|
padding-bottom: 0;
|
|
113
113
|
}
|
|
114
|
+
.navheader h1 {
|
|
115
|
+
align-items: center;
|
|
116
|
+
}
|
|
114
117
|
/*
|
|
115
118
|
.navheader {
|
|
116
119
|
background: var(--dark-bg);
|
|
@@ -135,6 +138,9 @@ body.frozen {
|
|
|
135
138
|
padding: 0;
|
|
136
139
|
}
|
|
137
140
|
#status-window {
|
|
141
|
+
display: flex;
|
|
142
|
+
align-items: center;
|
|
143
|
+
font-size: 14px;
|
|
138
144
|
/*
|
|
139
145
|
flex-grow: 1;
|
|
140
146
|
text-align: right;
|
|
@@ -721,7 +727,7 @@ document.addEventListener("DOMContentLoaded", async () => {
|
|
|
721
727
|
//key: "\x1b[200~" + text + "\x1b[201~",
|
|
722
728
|
key: text,
|
|
723
729
|
id: shell_id,
|
|
724
|
-
paste: true
|
|
730
|
+
// paste: true
|
|
725
731
|
})
|
|
726
732
|
|
|
727
733
|
})
|
package/server/views/start.ejs
CHANGED
|
@@ -224,17 +224,22 @@ footer .btn.go-home {
|
|
|
224
224
|
<main>
|
|
225
225
|
<div>
|
|
226
226
|
<div class='card'>
|
|
227
|
-
<img src="<%=image%>"
|
|
227
|
+
<img src="<%=image%>" onerror="this.src='/pinokio-black.png'"/>
|
|
228
228
|
<div class='title'><%=name%></div>
|
|
229
|
-
<% if (
|
|
230
|
-
|
|
231
|
-
<
|
|
232
|
-
|
|
229
|
+
<% if (launchable) { %>
|
|
230
|
+
<% if (link) { %>
|
|
231
|
+
<a href="<%=link%>" id='save' class='btn'>
|
|
232
|
+
<span class='save'><i class="fa-solid fa-play"></i> Launch</span>
|
|
233
|
+
</a>
|
|
234
|
+
<% } %>
|
|
235
|
+
<div class='auto'>
|
|
236
|
+
<input type='checkbox' <%=autolaunch ? 'checked' : ''%> id='autolaunch' />
|
|
237
|
+
<label for='autolaunch'>automatically launch</label>
|
|
238
|
+
</div>
|
|
239
|
+
<% } else { %>
|
|
240
|
+
<h1>Offline</h1>
|
|
241
|
+
<div><%=url%> is not running.</div>
|
|
233
242
|
<% } %>
|
|
234
|
-
<div class='auto'>
|
|
235
|
-
<input type='checkbox' <%=autolaunch ? 'checked' : ''%> id='autolaunch' />
|
|
236
|
-
<label for='autolaunch'>automatically launch</label>
|
|
237
|
-
</div>
|
|
238
243
|
<div class='message'></div>
|
|
239
244
|
</div>
|
|
240
245
|
</div>
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
<script src="/common.js"></script>
|
|
17
17
|
<script src="/he.js"></script>
|
|
18
18
|
<script src="/opener.js"></script>
|
|
19
|
+
<script src="/loading.js"></script>
|
|
19
20
|
<!--
|
|
20
21
|
<script src="/nav.js"></script>
|
|
21
22
|
-->
|
|
@@ -325,7 +326,6 @@ document.addEventListener("DOMContentLoaded", async () => {
|
|
|
325
326
|
document.querySelector(".run .starting").classList.add("hidden")
|
|
326
327
|
document.querySelector(".run .stop").classList.remove("hidden")
|
|
327
328
|
} else if (packet.type === 'disconnect') {
|
|
328
|
-
debugger
|
|
329
329
|
refreshParent(packet)
|
|
330
330
|
reloadMemory()
|
|
331
331
|
this.term.write("\r\nDisconnected...\r\n")
|
|
@@ -333,7 +333,6 @@ document.addEventListener("DOMContentLoaded", async () => {
|
|
|
333
333
|
this.socket.close()
|
|
334
334
|
document.querySelector(".run .play").classList.remove("hidden")
|
|
335
335
|
document.querySelector(".run .stop").classList.add("hidden")
|
|
336
|
-
debugger
|
|
337
336
|
|
|
338
337
|
<% if (kill_message) { %>
|
|
339
338
|
n.Noty({
|
|
@@ -465,6 +464,18 @@ document.addEventListener("DOMContentLoaded", async () => {
|
|
|
465
464
|
//uri: "~" + location.pathname,
|
|
466
465
|
uri: packet.id
|
|
467
466
|
})
|
|
467
|
+
} else if (packet.type === "loading.start") {
|
|
468
|
+
LoadingDialog.start(packet.data.message)
|
|
469
|
+
this.socket.respond({
|
|
470
|
+
response: {},
|
|
471
|
+
uri: packet.id
|
|
472
|
+
})
|
|
473
|
+
} else if (packet.type === "loading.end") {
|
|
474
|
+
LoadingDialog.end()
|
|
475
|
+
this.socket.respond({
|
|
476
|
+
response: {},
|
|
477
|
+
uri: packet.id
|
|
478
|
+
})
|
|
468
479
|
} else if (packet.type === "input") {
|
|
469
480
|
let params = packet.data
|
|
470
481
|
let type = (params.type ? params.type : "modal")
|