pinokiod 3.23.0 → 3.25.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/exec/index.js +67 -0
- package/kernel/api/index.js +1 -0
- package/kernel/plugin.js +40 -10
- package/kernel/prototype.js +23 -0
- package/kernel/router/index.js +13 -0
- package/kernel/router/localhost_home_router.js +11 -0
- package/kernel/shell.js +30 -6
- package/kernel/shell_parser.js +267 -0
- package/kernel/shells.js +52 -45
- package/kernel/util.js +5 -1
- package/package.json +2 -1
- package/server/index.js +335 -136
- package/server/public/style.css +26 -1
- package/server/socket.js +13 -9
- package/server/views/app.ejs +122 -32
- package/server/views/d.ejs +284 -0
- package/server/views/env_editor.ejs +12 -0
- package/server/views/index.ejs +94 -14
- package/server/views/init/index.ejs +248 -81
- package/server/views/net.ejs +13 -8
- package/server/views/network.ejs +10 -3
- package/server/views/partials/dynamic.ejs +4 -1
- package/server/views/partials/menu.ejs +3 -0
- package/server/views/partials/running.ejs +22 -0
- package/server/views/settings.ejs +1 -1
- package/server/views/start.ejs +233 -0
|
@@ -220,6 +220,15 @@ footer .btn.go-home {
|
|
|
220
220
|
.env-description {
|
|
221
221
|
margin-bottom: 10px;
|
|
222
222
|
}
|
|
223
|
+
.warning {
|
|
224
|
+
padding: 10px;
|
|
225
|
+
margin: 10px 0 20px;
|
|
226
|
+
border-left: 5px solid rgba(0,0,0,0.1);
|
|
227
|
+
}
|
|
228
|
+
.warning a {
|
|
229
|
+
text-decoration: none;
|
|
230
|
+
color: royalblue;
|
|
231
|
+
}
|
|
223
232
|
</style>
|
|
224
233
|
<script>
|
|
225
234
|
document.addEventListener("DOMContentLoaded", async () => {
|
|
@@ -281,6 +290,9 @@ document.addEventListener("DOMContentLoaded", async () => {
|
|
|
281
290
|
</div>
|
|
282
291
|
</div>
|
|
283
292
|
<% } %>
|
|
293
|
+
<div class='warning'>
|
|
294
|
+
This will execute the 3rd party script downloaded from <a href="<%=gitRemote%>" target="_blank"><%=gitRemote%>.</a>
|
|
295
|
+
</div>
|
|
284
296
|
<footer>
|
|
285
297
|
<a href="/" class='btn go-home'><i class='fa-solid fa-home'></i> home</a>
|
|
286
298
|
<div class='flexible'></div>
|
package/server/views/index.ejs
CHANGED
|
@@ -18,6 +18,35 @@
|
|
|
18
18
|
<link href="/electron.css" rel="stylesheet"/>
|
|
19
19
|
<% } %>
|
|
20
20
|
<style>
|
|
21
|
+
.bubble {
|
|
22
|
+
position: relative;
|
|
23
|
+
background: rgba(0,0,0,0.1);
|
|
24
|
+
color: #333;
|
|
25
|
+
border-radius: 10px;
|
|
26
|
+
padding: 10px 15px;
|
|
27
|
+
font-size: 14px;
|
|
28
|
+
flex-grow: 1;
|
|
29
|
+
line-height: 1.4;
|
|
30
|
+
margin: 0 10px;
|
|
31
|
+
font-weight: bold;
|
|
32
|
+
}
|
|
33
|
+
/* Left-side tail */
|
|
34
|
+
.bubble::before {
|
|
35
|
+
content: "";
|
|
36
|
+
position: absolute;
|
|
37
|
+
top: 10px; /* Vertical alignment of the tail */
|
|
38
|
+
left: -20px; /* Positioning outside the bubble */
|
|
39
|
+
border-width: 10px;
|
|
40
|
+
border-style: solid;
|
|
41
|
+
border-color: transparent rgba(0,0,0,0.1) transparent transparent;
|
|
42
|
+
}
|
|
43
|
+
body.dark .bubble {
|
|
44
|
+
background: rgba(0,0,0,0.4);
|
|
45
|
+
color: white;
|
|
46
|
+
}
|
|
47
|
+
body.dark .bubble:before {
|
|
48
|
+
border-color: transparent rgba(0,0,0,0.4) transparent transparent;
|
|
49
|
+
}
|
|
21
50
|
.line2 {
|
|
22
51
|
display: flex;
|
|
23
52
|
align-items: center;
|
|
@@ -253,11 +282,33 @@ aside .tab.selected {
|
|
|
253
282
|
font-weight: bold;
|
|
254
283
|
opacity: 1;
|
|
255
284
|
}
|
|
285
|
+
#suggestion {
|
|
286
|
+
padding: 20px;
|
|
287
|
+
display: flex;
|
|
288
|
+
align-items: center;
|
|
289
|
+
}
|
|
290
|
+
#suggestion img {
|
|
291
|
+
width: 50px;
|
|
292
|
+
height: 50px;
|
|
293
|
+
}
|
|
294
|
+
#suggestion h4 {
|
|
295
|
+
margin: 0;
|
|
296
|
+
}
|
|
297
|
+
/*
|
|
298
|
+
#suggestion .prompt {
|
|
299
|
+
padding: 10px 15px;
|
|
300
|
+
margin: 10px 0;
|
|
301
|
+
border-left: 10px solid rgba(0,0,0,0.1);
|
|
302
|
+
}
|
|
303
|
+
*/
|
|
256
304
|
body.dark aside .current.selected {
|
|
257
305
|
/*
|
|
258
306
|
border-left: 10px solid white;
|
|
259
307
|
*/
|
|
260
308
|
}
|
|
309
|
+
.container {
|
|
310
|
+
margin-right: 20px;
|
|
311
|
+
}
|
|
261
312
|
@media only screen and (max-width: 480px) {
|
|
262
313
|
.btn2 {
|
|
263
314
|
padding: 5px;
|
|
@@ -365,21 +416,13 @@ body.dark aside .current.selected {
|
|
|
365
416
|
</div>
|
|
366
417
|
<% } %>
|
|
367
418
|
</header>
|
|
368
|
-
<% if (ishome) { %>
|
|
369
|
-
<form class='search'>
|
|
370
|
-
<div class='app-btns'>
|
|
371
|
-
<a class='btn create-new' href="/init"><i class="fa-solid fa-plus"></i> Build</a>
|
|
372
|
-
<a class='btn' id='explore' href="/?mode=explore"><i class="fa-solid fa-magnifying-glass"></i> Discover</a>
|
|
373
|
-
</div>
|
|
374
|
-
<% if (display.includes("form")) { %>
|
|
375
|
-
<input type='search' class="flexible" placeholder='Filter local apps'>
|
|
376
|
-
<% } else { %>
|
|
377
|
-
<% } %>
|
|
378
|
-
</form>
|
|
379
|
-
<% } %>
|
|
380
419
|
<main>
|
|
381
420
|
<div id='terminal' class='hidden'></div>
|
|
382
421
|
<aside>
|
|
422
|
+
<div class='btn-tab'>
|
|
423
|
+
<a href="/init" class='btn'><i class="fa-solid fa-plus"></i> Create</a>
|
|
424
|
+
<a class='btn' id='explore' href="/?mode=explore"><i class="fa-solid fa-globe"></i> Discover</a>
|
|
425
|
+
</div>
|
|
383
426
|
<a href="/" class='tab selected'><i class='fas fa-laptop-code'></i> Local</a>
|
|
384
427
|
<a href="/network" class='tab'><i class="fa-solid fa-wifi"></i> Network</a>
|
|
385
428
|
<% if (list.length > 0) { %>
|
|
@@ -388,10 +431,33 @@ body.dark aside .current.selected {
|
|
|
388
431
|
<a href="/net/<%=name%>" class='submenu tab'><i class="fa-brands fa-<%=brands[platform]%>"></i> <%=name%> (<%=current_host === host ? 'this machine' : host%>)</a>
|
|
389
432
|
<% }) %>
|
|
390
433
|
<% } %>
|
|
391
|
-
<div class='tab'><i class="fa-solid fa-code"></i> Dev</div>
|
|
392
434
|
</aside>
|
|
393
435
|
<div class='container'>
|
|
394
436
|
<% if (ishome) { %>
|
|
437
|
+
<form class='search'>
|
|
438
|
+
<div class='app-btns'>
|
|
439
|
+
<!--
|
|
440
|
+
<a class='btn create-new' href="/init"><i class="fa-solid fa-plus"></i> Build</a>
|
|
441
|
+
<a class='btn' id='explore' href="/?mode=explore"><i class="fa-solid fa-globe"></i> Discover</a>
|
|
442
|
+
-->
|
|
443
|
+
<!--
|
|
444
|
+
<a class='btn' id='explore' href="/?mode=explore"><i class="fa-solid fa-magnifying-glass"></i> Discover</a>
|
|
445
|
+
-->
|
|
446
|
+
</div>
|
|
447
|
+
<% if (display.includes("form")) { %>
|
|
448
|
+
<input type='search' class="flexible" placeholder='Search apps'>
|
|
449
|
+
<% } else { %>
|
|
450
|
+
<% } %>
|
|
451
|
+
</form>
|
|
452
|
+
<% } %>
|
|
453
|
+
<% if (ishome) { %>
|
|
454
|
+
<!--
|
|
455
|
+
<div id='suggestion' class='hidden'>
|
|
456
|
+
<img src="/pinokio-black.png"/>
|
|
457
|
+
<div class='bubble prompt'></div>
|
|
458
|
+
<button id='create-ai' class='btn'>Create</button>
|
|
459
|
+
</div>
|
|
460
|
+
-->
|
|
395
461
|
<% if (running.length > 0) { %>
|
|
396
462
|
<div class='running-apps'>
|
|
397
463
|
<% running.forEach((item) => { %>
|
|
@@ -497,7 +563,10 @@ body.dark aside .current.selected {
|
|
|
497
563
|
<% } %>
|
|
498
564
|
</div>
|
|
499
565
|
<div class='col'>
|
|
500
|
-
<div class='title'
|
|
566
|
+
<div class='title'>
|
|
567
|
+
<i class="fa-solid fa-circle"></i>
|
|
568
|
+
<span><%=item.name%></span>
|
|
569
|
+
</div>
|
|
501
570
|
<div class='uri'><%=item.filepath%></div>
|
|
502
571
|
<div class='description'><%=item.description%></div>
|
|
503
572
|
<div class='menu-btns'>
|
|
@@ -746,7 +815,18 @@ const renderSearch = () => {
|
|
|
746
815
|
}
|
|
747
816
|
}
|
|
748
817
|
|
|
818
|
+
// suggest(target.value)
|
|
819
|
+
|
|
749
820
|
}
|
|
821
|
+
//const suggest = (str) => {
|
|
822
|
+
// // suggestion
|
|
823
|
+
// if (str.length > 0) {
|
|
824
|
+
// document.querySelector("#suggestion").classList.remove("hidden")
|
|
825
|
+
// } else {
|
|
826
|
+
// document.querySelector("#suggestion").classList.add("hidden")
|
|
827
|
+
// }
|
|
828
|
+
// document.querySelector("#suggestion .prompt").innerHTML = str
|
|
829
|
+
//}
|
|
750
830
|
|
|
751
831
|
renderSearch()
|
|
752
832
|
|