pinokiod 3.86.0 → 3.88.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/Dockerfile +61 -0
- package/docker-entrypoint.sh +75 -0
- package/kernel/api/hf/index.js +1 -1
- package/kernel/api/index.js +1 -1
- package/kernel/api/shell/index.js +6 -0
- package/kernel/api/terminal/index.js +166 -0
- package/kernel/bin/conda.js +3 -2
- package/kernel/bin/index.js +53 -2
- package/kernel/bin/setup.js +32 -0
- package/kernel/bin/vs.js +11 -2
- package/kernel/index.js +42 -2
- package/kernel/info.js +36 -0
- package/kernel/peer.js +42 -15
- package/kernel/router/index.js +23 -15
- package/kernel/router/localhost_static_router.js +0 -3
- package/kernel/router/pinokio_domain_router.js +333 -0
- package/kernel/shells.js +21 -1
- package/kernel/util.js +2 -2
- package/package.json +2 -1
- package/script/install-mode.js +33 -0
- package/script/pinokio.json +7 -0
- package/server/index.js +513 -173
- package/server/public/Socket.js +48 -0
- package/server/public/common.js +1441 -276
- package/server/public/fseditor.js +71 -12
- package/server/public/install.js +1 -1
- package/server/public/layout.js +740 -0
- package/server/public/modalinput.js +0 -1
- package/server/public/style.css +97 -105
- package/server/public/tab-idle-notifier.js +629 -0
- package/server/public/terminal_input_tracker.js +63 -0
- package/server/public/urldropdown.css +319 -53
- package/server/public/urldropdown.js +615 -159
- package/server/public/window_storage.js +97 -28
- package/server/socket.js +40 -9
- package/server/views/500.ejs +2 -2
- package/server/views/app.ejs +3136 -1367
- package/server/views/bookmarklet.ejs +1 -1
- package/server/views/bootstrap.ejs +1 -1
- package/server/views/columns.ejs +2 -13
- package/server/views/connect.ejs +3 -4
- package/server/views/container.ejs +1 -2
- package/server/views/d.ejs +223 -53
- package/server/views/editor.ejs +1 -1
- package/server/views/file_explorer.ejs +1 -1
- package/server/views/index.ejs +12 -11
- package/server/views/index2.ejs +4 -4
- package/server/views/init/index.ejs +4 -5
- package/server/views/install.ejs +1 -1
- package/server/views/layout.ejs +123 -0
- package/server/views/net.ejs +39 -7
- package/server/views/network.ejs +20 -6
- package/server/views/network2.ejs +1 -1
- package/server/views/old_network.ejs +2 -2
- package/server/views/partials/dynamic.ejs +3 -5
- package/server/views/partials/menu.ejs +3 -5
- package/server/views/partials/running.ejs +1 -1
- package/server/views/pro.ejs +1 -1
- package/server/views/prototype/index.ejs +1 -1
- package/server/views/review.ejs +11 -23
- package/server/views/rows.ejs +2 -13
- package/server/views/screenshots.ejs +293 -138
- package/server/views/settings.ejs +3 -4
- package/server/views/setup.ejs +1 -2
- package/server/views/shell.ejs +277 -26
- package/server/views/terminal.ejs +322 -49
- package/server/views/tools.ejs +448 -4
package/server/views/index2.ejs
CHANGED
|
@@ -271,7 +271,7 @@ body.dark .open-menu, body.dark .browse {
|
|
|
271
271
|
<a class='btn2' href="<%=portal%>" target="_blank"><div><i class="fa-solid fa-question"></i></div><div>Help</div></a>
|
|
272
272
|
<button class='btn2' id='genlog'><div><i class="fa-solid fa-laptop-code"></i></div><div>Logs</div></button>
|
|
273
273
|
<a id='downloadlogs' download class='hidden btn2' href="/pinokio/logs.zip"><div><i class="fa-solid fa-download"></i></div><div>Download logs</div></a>
|
|
274
|
-
<a class='btn2' href="
|
|
274
|
+
<a class='btn2' href="/home?mode=settings"><div><i class="fa-solid fa-gear"></i></div><div>Settings</div></a>
|
|
275
275
|
<button id='new-window' title='open a new window' class='btn2' data-agent="<%=agent%>"><div><i class="fa-solid fa-plus"></i></div><div>Window</div></button>
|
|
276
276
|
</div>
|
|
277
277
|
<% } %>
|
|
@@ -290,7 +290,7 @@ body.dark .open-menu, body.dark .browse {
|
|
|
290
290
|
<% if (dep.downloaded) { %>
|
|
291
291
|
<div class='item'><i class="fa-solid fa-check"></i> <a class='downloaded' href="<%=dep.downloaded%>" target="_blank"><%=dep.uri%></a><div class='flexible'></div></div>
|
|
292
292
|
<% } else { %>
|
|
293
|
-
<div class='item'><a class='btn' href="
|
|
293
|
+
<div class='item'><a class='btn' href="/home?mode=download&uri=<%=dep.uri%>" target="_blank"><i class="fa-solid fa-download"></i> Download</a> <%=dep.uri%><div class='flexible'></div></div>
|
|
294
294
|
<% } %>
|
|
295
295
|
<% }) %>
|
|
296
296
|
</div>
|
|
@@ -307,7 +307,7 @@ body.dark .open-menu, body.dark .browse {
|
|
|
307
307
|
<!--
|
|
308
308
|
<a class='btn create-new' href="/create"><i class="fa-solid fa-folder-plus"></i> Create</a>
|
|
309
309
|
-->
|
|
310
|
-
<a class='btn' id='explore' href="
|
|
310
|
+
<a class='btn' id='explore' href="/home?mode=explore"><i class="fa-solid fa-magnifying-glass"></i> Discover</a>
|
|
311
311
|
</div>
|
|
312
312
|
<% if (display.includes("form")) { %>
|
|
313
313
|
<input type='search' class="flexible" placeholder='Filter downloaded apps'>
|
|
@@ -475,7 +475,7 @@ body.dark .open-menu, body.dark .browse {
|
|
|
475
475
|
<h1>Welcome.</h1>
|
|
476
476
|
<br>
|
|
477
477
|
<div>Get started by installing some Pinokio scripts.</div>
|
|
478
|
-
<a href="
|
|
478
|
+
<a href="/home?mode=explore" class='btn'><i class="fa-solid fa-globe"></i> Visit Discover Page</a>
|
|
479
479
|
</div>
|
|
480
480
|
<% } %>
|
|
481
481
|
<% } else { %>
|
|
@@ -1522,7 +1522,6 @@ body.dark .ace-editor {
|
|
|
1522
1522
|
<header class='navheader grabbable'>
|
|
1523
1523
|
<h1>
|
|
1524
1524
|
<a class='home' href="/"><img class='icon' src="/pinokio-black.png"></a>
|
|
1525
|
-
<button id='collapse' class='btn2' data-tippy-content="toggle fullscreen view"><i class="fa-solid fa-bars"></i></button>
|
|
1526
1525
|
<button class='btn2' id='back' data-tippy-content="back"><div><i class="fa-solid fa-chevron-left"></i></div></button>
|
|
1527
1526
|
<button class='btn2' id='forward' data-tippy-content="forward"><div><i class="fa-solid fa-chevron-right"></i></div></button>
|
|
1528
1527
|
<button class='btn2' id='refresh-page' data-tippy-content="refresh"><div><i class="fa-solid fa-rotate-right"></i></div></button>
|
|
@@ -1965,7 +1964,7 @@ body.dark .ace-editor {
|
|
|
1965
1964
|
<aside>
|
|
1966
1965
|
<div class='btn-tab'>
|
|
1967
1966
|
<button type='button' class='btn' id='create-launcher-button'><i class="fa-solid fa-plus"></i><div class='caption'>Create</div></button>
|
|
1968
|
-
<a class='btn' id='explore' href="
|
|
1967
|
+
<a class='btn' id='explore' href="/home?mode=explore"><i class="fa-solid fa-globe"></i><div class='caption'>Discover</div></a>
|
|
1969
1968
|
</div>
|
|
1970
1969
|
<a href="/" class='tab'><i class='fas fa-laptop-code'></i><div class='caption'>This machine</div></a>
|
|
1971
1970
|
<a href="/network" class='tab'><i class="fa-solid fa-wifi"></i><div class='caption'>Local network</div></a>
|
|
@@ -1981,7 +1980,7 @@ body.dark .ace-editor {
|
|
|
1981
1980
|
<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>
|
|
1982
1981
|
<a class='tab' href="/screenshots"><i class="fa-solid fa-camera"></i><div class='caption'>Screenshots</div></a>
|
|
1983
1982
|
<a class='tab' href="/tools"><i class="fa-solid fa-toolbox"></i><div class='caption'>Installed Tools</div></a>
|
|
1984
|
-
<a class='tab' href="
|
|
1983
|
+
<a class='tab' href="/home?mode=settings"><i class="fa-solid fa-gear"></i><div class='caption'>Settings</div></a>
|
|
1985
1984
|
</aside>
|
|
1986
1985
|
</main>
|
|
1987
1986
|
<div id='terminal-container' class='hidden'>
|
|
@@ -2118,7 +2117,7 @@ function initializeAceEditors() {
|
|
|
2118
2117
|
editor.setTheme('ace/theme/textmate');
|
|
2119
2118
|
editor.session.setMode('ace/mode/sh');
|
|
2120
2119
|
editor.setOptions({
|
|
2121
|
-
fontSize: '
|
|
2120
|
+
fontSize: '12px',
|
|
2122
2121
|
showLineNumbers: true,
|
|
2123
2122
|
showGutter: true,
|
|
2124
2123
|
wrap: true,
|
|
@@ -2669,7 +2668,7 @@ const createTerm = async (_theme) => {
|
|
|
2669
2668
|
<% } %>
|
|
2670
2669
|
let config = {
|
|
2671
2670
|
scrollback: 9999999,
|
|
2672
|
-
fontSize:
|
|
2671
|
+
fontSize: 12,
|
|
2673
2672
|
theme,
|
|
2674
2673
|
}
|
|
2675
2674
|
let res = await fetch("/xterm_config").then((res) => {
|
package/server/views/install.ejs
CHANGED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
|
|
6
|
+
<title>Pinokio</title>
|
|
7
|
+
<style>
|
|
8
|
+
:root {
|
|
9
|
+
--layout-gutter-size: 6px;
|
|
10
|
+
--layout-background: #ffffff;
|
|
11
|
+
--layout-gutter-bg: rgba(0, 0, 0, 0.08);
|
|
12
|
+
--layout-gutter-bg-hover: rgba(0, 0, 0, 0.2);
|
|
13
|
+
--layout-shadow: rgba(0, 0, 0, 0.06);
|
|
14
|
+
color-scheme: light dark;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
html, body {
|
|
18
|
+
height: 100%;
|
|
19
|
+
width: 100%;
|
|
20
|
+
margin: 0;
|
|
21
|
+
padding: 0;
|
|
22
|
+
overflow: hidden;
|
|
23
|
+
background: var(--layout-background);
|
|
24
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
#dragger {
|
|
28
|
+
-webkit-app-region: drag;
|
|
29
|
+
cursor: grab;
|
|
30
|
+
display: none;
|
|
31
|
+
height: 26px;
|
|
32
|
+
width: 100%;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
body {
|
|
36
|
+
display: flex;
|
|
37
|
+
flex-direction: column;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
body[data-agent="electron"] > #dragger {
|
|
41
|
+
display: block;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
body.dark {
|
|
45
|
+
--layout-background: #1b1c1d;
|
|
46
|
+
--layout-gutter-bg: rgba(255, 255, 255, 0.1);
|
|
47
|
+
--layout-gutter-bg-hover: rgba(255, 255, 255, 0.35);
|
|
48
|
+
--layout-shadow: rgba(0, 0, 0, 0.35);
|
|
49
|
+
color: #f3f3f3;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
#layout-root {
|
|
53
|
+
position: relative;
|
|
54
|
+
width: 100%;
|
|
55
|
+
flex-grow: 1;
|
|
56
|
+
background: var(--layout-background);
|
|
57
|
+
overflow: hidden;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.layout-leaf {
|
|
61
|
+
position: absolute;
|
|
62
|
+
box-sizing: border-box;
|
|
63
|
+
box-shadow: inset 0 0 0 1px var(--layout-shadow);
|
|
64
|
+
overflow: hidden;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.layout-leaf iframe {
|
|
68
|
+
width: 100%;
|
|
69
|
+
height: 100%;
|
|
70
|
+
border: none;
|
|
71
|
+
background: transparent;
|
|
72
|
+
display: block;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.layout-gutter {
|
|
76
|
+
position: absolute;
|
|
77
|
+
background: var(--layout-gutter-bg);
|
|
78
|
+
z-index: 10;
|
|
79
|
+
transition: background 0.15s ease;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.layout-gutter:hover {
|
|
83
|
+
background: var(--layout-gutter-bg-hover);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.layout-gutter-columns {
|
|
87
|
+
cursor: col-resize;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.layout-gutter-rows {
|
|
91
|
+
cursor: row-resize;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
body.layout-resizing {
|
|
95
|
+
user-select: none;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
body.layout-resize-columns {
|
|
99
|
+
cursor: col-resize;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
body.layout-resize-rows {
|
|
103
|
+
cursor: row-resize;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
body.layout-resizing iframe {
|
|
107
|
+
pointer-events: none;
|
|
108
|
+
}
|
|
109
|
+
</style>
|
|
110
|
+
</head>
|
|
111
|
+
<body class="<%= theme %>" data-agent="<%= agent %>">
|
|
112
|
+
<div id='dragger'></div>
|
|
113
|
+
<div id="layout-root"></div>
|
|
114
|
+
<script id="pinokio-layout-config" type="application/json">
|
|
115
|
+
<%- JSON.stringify({
|
|
116
|
+
initialPath: initialPath,
|
|
117
|
+
defaultPath: defaultPath,
|
|
118
|
+
sessionId: sessionId || null
|
|
119
|
+
}) %>
|
|
120
|
+
</script>
|
|
121
|
+
<script src="/layout.js"></script>
|
|
122
|
+
</body>
|
|
123
|
+
</html>
|
package/server/views/net.ejs
CHANGED
|
@@ -537,7 +537,6 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
537
537
|
<header class='navheader grabbable'>
|
|
538
538
|
<h1>
|
|
539
539
|
<a class='home' href="/"><img class='icon' src="/pinokio-black.png"></a>
|
|
540
|
-
<button id='collapse' class='btn2' data-tippy-content="toggle fullscreen view"><i class="fa-solid fa-bars"></i></button>
|
|
541
540
|
<button class='btn2' id='back' data-tippy-content="back"><div><i class="fa-solid fa-chevron-left"></i></div></button>
|
|
542
541
|
<button class='btn2' id='forward' data-tippy-content="forward"><div><i class="fa-solid fa-chevron-right"></i></div></button>
|
|
543
542
|
<button class='btn2' id='refresh-page' data-tippy-content="refresh"><div><i class="fa-solid fa-rotate-right"></i></div></button>
|
|
@@ -545,7 +544,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
545
544
|
<button class='btn2 mobile-link-button' id='mobile-link-button' data-tippy-content="enter url"><i class="fa-solid fa-link"></i></button>
|
|
546
545
|
<form class='urlbar'>
|
|
547
546
|
<div class='url-input-container'>
|
|
548
|
-
<input type='url' placeholder='enter
|
|
547
|
+
<input type='url' placeholder='enter any local url to open in pinokio'>
|
|
549
548
|
<div class='url-dropdown' id='url-dropdown'></div>
|
|
550
549
|
</div>
|
|
551
550
|
</form>
|
|
@@ -580,7 +579,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
580
579
|
<!--
|
|
581
580
|
<div class='app-btns'>
|
|
582
581
|
<a class='btn create-new' href="/init"><i class="fa-solid fa-plus"></i> Build</a>
|
|
583
|
-
<a class='btn' id='explore' href="
|
|
582
|
+
<a class='btn' id='explore' href="/home?mode=explore"><i class="fa-solid fa-magnifying-glass"></i> Discover</a>
|
|
584
583
|
</div>
|
|
585
584
|
-->
|
|
586
585
|
<input type='search' class="flexible" placeholder='Search apps'>
|
|
@@ -644,6 +643,41 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
644
643
|
</h3>
|
|
645
644
|
</div>
|
|
646
645
|
<% }) %>
|
|
646
|
+
<% static_routes.forEach((route, index) => { %>
|
|
647
|
+
<div class='line align-top' data-index="<%=processes.length+index%>" data-name="<%=route.name%>" data-title="<%=route.name%>" data-description="<%=route.internal_router.join(' ')%>">
|
|
648
|
+
<h3>
|
|
649
|
+
<div class='item-icon'>
|
|
650
|
+
<div class='placeholder-icon'>
|
|
651
|
+
<i class="fa-solid fa-database"></i>
|
|
652
|
+
</div>
|
|
653
|
+
</div>
|
|
654
|
+
<div class='col'>
|
|
655
|
+
<div class='title'><i class="fa-solid fa-circle"></i><span><%=route.name%></span></div>
|
|
656
|
+
<div class='grid-3'>
|
|
657
|
+
<div class='section'>
|
|
658
|
+
<% route.internal_router.forEach((domain) => { %>
|
|
659
|
+
<% if (domain.endsWith(".localhost")) { %>
|
|
660
|
+
<a class='net' target="_blank" href="https://<%=domain%>">https://<%=domain%></a>
|
|
661
|
+
<% } else { %>
|
|
662
|
+
<a class='net' target="_blank" href="http://<%=domain%>">http://<%=domain%></a>
|
|
663
|
+
<% } %>
|
|
664
|
+
<% }) %>
|
|
665
|
+
</div>
|
|
666
|
+
<div class='section'>
|
|
667
|
+
<% if (route.external_ip) { %>
|
|
668
|
+
<a class='net' target="_blank" href="http://<%=route.external_ip%>">http://<%=route.external_ip%></a>
|
|
669
|
+
<% } %>
|
|
670
|
+
</div>
|
|
671
|
+
<div class='section'>
|
|
672
|
+
<% route.external_router.forEach((domain) => { %>
|
|
673
|
+
<a class='net' target="_blank" href="https://<%=domain%>">https://<%=domain%></a>
|
|
674
|
+
<% }) %>
|
|
675
|
+
</div>
|
|
676
|
+
</div>
|
|
677
|
+
</div>
|
|
678
|
+
</h3>
|
|
679
|
+
</div>
|
|
680
|
+
<% }) %>
|
|
647
681
|
<% } else { %>
|
|
648
682
|
<div class='section-container'>
|
|
649
683
|
<div class='section-col'>
|
|
@@ -733,7 +767,6 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
733
767
|
</h3>
|
|
734
768
|
<% }) %>
|
|
735
769
|
</div>
|
|
736
|
-
<!--
|
|
737
770
|
<div class='section-col'>
|
|
738
771
|
<div class='section-header'>
|
|
739
772
|
<h3>
|
|
@@ -770,7 +803,6 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
770
803
|
</h3>
|
|
771
804
|
<% }) %>
|
|
772
805
|
</div>
|
|
773
|
-
-->
|
|
774
806
|
</div>
|
|
775
807
|
<% } %>
|
|
776
808
|
</div>
|
|
@@ -778,7 +810,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
778
810
|
<aside>
|
|
779
811
|
<div class='btn-tab'>
|
|
780
812
|
<button type='button' class='btn' id='create-launcher-button'><i class="fa-solid fa-plus"></i><div class='caption'>Create</div></button>
|
|
781
|
-
<a class='btn' id='explore' href="
|
|
813
|
+
<a class='btn' id='explore' href="/home?mode=explore"><i class="fa-solid fa-globe"></i><div class='caption'>Discover</div></a>
|
|
782
814
|
</div>
|
|
783
815
|
<a href="/" class='tab'><i class='fas fa-laptop-code'></i><div class='caption'>This machine</div></a>
|
|
784
816
|
<a href="/network" class='tab'><i class="fa-solid fa-wifi"></i><div class='caption'>Local network</div></a>
|
|
@@ -798,7 +830,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
798
830
|
<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>
|
|
799
831
|
<a class='tab' href="/screenshots"><i class="fa-solid fa-camera"></i><div class='caption'>Screenshots</div></a>
|
|
800
832
|
<a class='tab' href="/tools"><i class="fa-solid fa-toolbox"></i><div class='caption'>Installed Tools</div></a>
|
|
801
|
-
<a class='tab' href="
|
|
833
|
+
<a class='tab' href="/home?mode=settings"><i class="fa-solid fa-gear"></i><div class='caption'>Settings</div></a>
|
|
802
834
|
</aside>
|
|
803
835
|
</main>
|
|
804
836
|
<script>
|
package/server/views/network.ejs
CHANGED
|
@@ -1050,7 +1050,6 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
1050
1050
|
<header class='navheader grabbable'>
|
|
1051
1051
|
<h1>
|
|
1052
1052
|
<a class='home' href="/"><img class='icon' src="/pinokio-black.png"></a>
|
|
1053
|
-
<button id='collapse' class='btn2' data-tippy-content="toggle fullscreen view"><i class="fa-solid fa-bars"></i></button>
|
|
1054
1053
|
<button class='btn2' id='back' data-tippy-content="back"><div><i class="fa-solid fa-chevron-left"></i></div></button>
|
|
1055
1054
|
<button class='btn2' id='forward' data-tippy-content="forward"><div><i class="fa-solid fa-chevron-right"></i></div></button>
|
|
1056
1055
|
<button class='btn2' id='refresh-page' data-tippy-content="refresh"><div><i class="fa-solid fa-rotate-right"></i></div></button>
|
|
@@ -1058,7 +1057,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
1058
1057
|
<button class='btn2 mobile-link-button' id='mobile-link-button' data-tippy-content="enter url"><i class="fa-solid fa-link"></i></button>
|
|
1059
1058
|
<form class='urlbar'>
|
|
1060
1059
|
<div class='url-input-container'>
|
|
1061
|
-
<input type='url' placeholder='enter
|
|
1060
|
+
<input type='url' placeholder='enter any local url to open in pinokio'>
|
|
1062
1061
|
<div class='url-dropdown' id='url-dropdown'></div>
|
|
1063
1062
|
</div>
|
|
1064
1063
|
</form>
|
|
@@ -1147,6 +1146,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
1147
1146
|
<i class="fa-solid fa-circle-notch fa-spin"></i>
|
|
1148
1147
|
</div>
|
|
1149
1148
|
<% } %>
|
|
1149
|
+
<!--
|
|
1150
1150
|
<% static_routes.forEach((route, index) => { %>
|
|
1151
1151
|
<div class='line align-top' data-index="<%=processes.length+index%>" data-name="<%=route.name%>" data-title="<%=route.name%>" data-description="<%=route.internal_router.join(' ')%>">
|
|
1152
1152
|
<h3>
|
|
@@ -1182,13 +1182,14 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
1182
1182
|
</h3>
|
|
1183
1183
|
</div>
|
|
1184
1184
|
<% }) %>
|
|
1185
|
+
-->
|
|
1185
1186
|
</div>
|
|
1186
1187
|
</div>
|
|
1187
1188
|
</div>
|
|
1188
1189
|
<aside>
|
|
1189
1190
|
<div class='btn-tab'>
|
|
1190
1191
|
<button type='button' class='btn' id='create-launcher-button'><i class="fa-solid fa-plus"></i><div class='caption'>Create</div></button>
|
|
1191
|
-
<a class='btn' id='explore' href="
|
|
1192
|
+
<a class='btn' id='explore' href="/home?mode=explore"><i class="fa-solid fa-globe"></i><div class='caption'>Discover</div></a>
|
|
1192
1193
|
</div>
|
|
1193
1194
|
<a href="/" class='tab'><i class='fas fa-laptop-code'></i><div class='caption'>This machine</div></a>
|
|
1194
1195
|
<a href="/network" class='tab selected'><i class="fa-solid fa-wifi"></i><div class='caption'>Local network</div></a>
|
|
@@ -1204,7 +1205,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
1204
1205
|
<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>
|
|
1205
1206
|
<a class='tab' href="/screenshots"><i class="fa-solid fa-camera"></i><div class='caption'>Screenshots</div></a>
|
|
1206
1207
|
<a class='tab' href="/tools"><i class="fa-solid fa-toolbox"></i><div class='caption'>Installed Tools</div></a>
|
|
1207
|
-
<a class='tab' href="
|
|
1208
|
+
<a class='tab' href="/home?mode=settings"><i class="fa-solid fa-gear"></i><div class='caption'>Settings</div></a>
|
|
1208
1209
|
</aside>
|
|
1209
1210
|
</main>
|
|
1210
1211
|
<script>
|
|
@@ -1234,9 +1235,16 @@ document.querySelector("#reset-label").addEventListener("click", async (e) => {
|
|
|
1234
1235
|
let res = await fetch("/check_peer").then((res) => {
|
|
1235
1236
|
return res.json()
|
|
1236
1237
|
})
|
|
1238
|
+
console.log("RES", res)
|
|
1237
1239
|
if (res.success) {
|
|
1238
1240
|
document.querySelector(".loading").classList.add("hidden")
|
|
1239
|
-
|
|
1241
|
+
if (res.peer_name) {
|
|
1242
|
+
console.log("> 1")
|
|
1243
|
+
location.href = "/net/" + res.peer_name
|
|
1244
|
+
} else {
|
|
1245
|
+
console.log("> 2")
|
|
1246
|
+
location.href = location.href
|
|
1247
|
+
}
|
|
1240
1248
|
}
|
|
1241
1249
|
} catch (e) {
|
|
1242
1250
|
console.log(e)
|
|
@@ -1393,7 +1401,13 @@ document.querySelector("main").addEventListener("click", async (e) => {
|
|
|
1393
1401
|
})
|
|
1394
1402
|
if (res.success) {
|
|
1395
1403
|
document.querySelector(".loading").classList.add("hidden")
|
|
1396
|
-
|
|
1404
|
+
if (res.peer_name) {
|
|
1405
|
+
console.log("> 1")
|
|
1406
|
+
location.href = "/net/" + res.peer_name
|
|
1407
|
+
} else {
|
|
1408
|
+
console.log("> 2")
|
|
1409
|
+
location.href = location.href
|
|
1410
|
+
}
|
|
1397
1411
|
}
|
|
1398
1412
|
} catch (e) {
|
|
1399
1413
|
console.log(e)
|
|
@@ -427,7 +427,7 @@ table h3 {
|
|
|
427
427
|
<a class='btn2' href="<%=portal%>" target="_blank"><div><i class="fa-solid fa-question"></i></div><div>Help</div></a>
|
|
428
428
|
<button class='btn2' id='genlog'><div><i class="fa-solid fa-laptop-code"></i></div><div>Logs</div></button>
|
|
429
429
|
<a id='downloadlogs' download class='hidden btn2' href="/pinokio/logs.zip"><div><i class="fa-solid fa-download"></i></div><div>Download logs</div></a>
|
|
430
|
-
<a class='btn2' href="
|
|
430
|
+
<a class='btn2' href="/home?mode=settings"><div><i class="fa-solid fa-gear"></i></div><div>Settings</div></a>
|
|
431
431
|
<button id='new-window' title='open a new window' class='btn2' data-agent="<%=agent%>"><div><i class="fa-solid fa-plus"></i></div><div>Window</div></button>
|
|
432
432
|
</div>
|
|
433
433
|
</h1>
|
|
@@ -409,11 +409,11 @@ input:checked + .slider:before {
|
|
|
409
409
|
<a href="/connect" class='btn2'><div><i class="fa-solid fa-circle-user"></i></div><div>Connect</div></a>
|
|
410
410
|
<div class='flexible'></div>
|
|
411
411
|
<div class='nav-btns'>
|
|
412
|
-
<a class='btn2' id='explore' href="
|
|
412
|
+
<a class='btn2' id='explore' href="/home?mode=explore"><div><i class="fa-solid fa-magnifying-glass"></i></div><div>Discover</div></a>
|
|
413
413
|
<a class='btn2' href="<%=portal%>" target="_blank"><div><i class="fa-solid fa-question"></i></div><div>Help</div></a>
|
|
414
414
|
<button class='btn2' id='genlog'><div><i class="fa-solid fa-laptop-code"></i></div><div>Logs</div></button>
|
|
415
415
|
<a id='downloadlogs' download class='hidden btn2' href="/pinokio/logs.zip"><div><i class="fa-solid fa-download"></i></div><div>Download logs</div></a>
|
|
416
|
-
<a class='btn2' href="
|
|
416
|
+
<a class='btn2' href="/home?mode=settings"><div><i class="fa-solid fa-gear"></i></div><div>Settings</div></a>
|
|
417
417
|
<button id='new-window' title='open a new window' class='btn2' data-agent="<%=agent%>"><div><i class="fa-solid fa-plus"></i></div><div>Window</div></button>
|
|
418
418
|
</div>
|
|
419
419
|
</h1>
|
|
@@ -28,14 +28,14 @@
|
|
|
28
28
|
<div class='tab'><%-item.btn%></div>
|
|
29
29
|
</div>
|
|
30
30
|
<% } else if (item.target === "_blank") { %>
|
|
31
|
-
<a <%=item.default ? 'data-default' : ''%> data-confirm="<%=item.confirm%>" data-index="<%=index+4%>" target="<%=item.target%>" data-mode="<%=item.mode%>" href="<%=item.href%>" class='btn header-item frame-link <%=item.display || ""%>'
|
|
31
|
+
<a <%=item.default ? 'data-default' : ''%> data-confirm="<%=item.confirm%>" data-index="<%=index+4%>" target="<%=item.target%>" data-mode="<%=item.mode%>" href="<%=item.href%>" class='btn header-item frame-link <%=item.display || ""%>'<%= item.target_full ? ` data-target-full="${item.target_full}"` : '' %>>
|
|
32
32
|
<div class='tab'><%-item.btn%></div>
|
|
33
33
|
<div class='loader'>
|
|
34
34
|
<i class="fa-solid fa-up-right-from-square"></i>
|
|
35
35
|
</div>
|
|
36
36
|
</a>
|
|
37
37
|
<% } else { %>
|
|
38
|
-
<a <%=item.default ? 'data-default' : ''%> data-confirm="<%=item.confirm%>" data-index="<%=index+4%>" target="<%=item.target%>" data-mode="<%=item.mode%>" href="<%=item.href%>" class='btn header-item frame-link <%=item.display || ""%>' <%=item.shell_id ? `data-shell=${item.shell_id}` : ""%> <%=item.script_id ? `data-script=${item.script_id}` : ''%>>
|
|
38
|
+
<a <%=item.default ? 'data-default' : ''%> data-confirm="<%=item.confirm%>" data-index="<%=index+4%>" target="<%=item.target%>" data-mode="<%=item.mode%>" href="<%=item.href%>" class='btn header-item frame-link <%=item.display || ""%>'<%= item.target_full ? ` data-target-full="${item.target_full}"` : '' %> <%=item.shell_id ? `data-shell=${item.shell_id}` : ""%> <%=item.script_id ? `data-script=${item.script_id}` : ''%>>
|
|
39
39
|
<% if (item.running) { %>
|
|
40
40
|
<i class="fa-solid fa-circle"></i>
|
|
41
41
|
<% } %>
|
|
@@ -46,9 +46,7 @@
|
|
|
46
46
|
</div>
|
|
47
47
|
<% } else { %>
|
|
48
48
|
<div class='loader shutdown'>
|
|
49
|
-
|
|
50
|
-
<i class="fa-solid fa-square"></i> Stop
|
|
51
|
-
</button>
|
|
49
|
+
<i class="fa-solid fa-xmark"></i>
|
|
52
50
|
</div>
|
|
53
51
|
<% } %>
|
|
54
52
|
<% } else { %>
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
<% } %>
|
|
41
41
|
</div>
|
|
42
42
|
<% } else if (item.target === "_blank") { %>
|
|
43
|
-
<a <%=item.default ? 'data-default' : ''%> data-confirm="<%=item.confirm%>" data-index="<%=index%>" target="<%=item.target%>" data-mode="<%=item.mode%>" href="<%=item.href%>" class='btn header-item frame-link <%=item.display || ""%>'
|
|
43
|
+
<a <%=item.default ? 'data-default' : ''%> data-confirm="<%=item.confirm%>" data-index="<%=index%>" target="<%=item.target%>" data-mode="<%=item.mode%>" href="<%=item.href%>" class='btn header-item frame-link <%=item.display || ""%>'<%= item.target_full ? ` data-target-full="${item.target_full}"` : '' %>>
|
|
44
44
|
<div class='tab'><%-item.btn%></div>
|
|
45
45
|
<% if (item.arrow) { %>
|
|
46
46
|
<i class="fa-solid fa-angle-right"></i>
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
</div>
|
|
51
51
|
</a>
|
|
52
52
|
<% } else { %>
|
|
53
|
-
<a <%=item.default ? 'data-default' : ''%> data-confirm="<%=item.confirm%>" data-index="<%=index%>" target="<%=item.target%>" data-mode="<%=item.mode%>" href="<%=item.href%>" class='btn header-item frame-link <%=item.display || ""%>' <%=item.shell_id ? `data-shell=${item.shell_id}` : ""%> <%=item.script_id ? `data-script=${item.script_id}` : ''%>>
|
|
53
|
+
<a <%=item.default ? 'data-default' : ''%> data-confirm="<%=item.confirm%>" data-index="<%=index%>" target="<%=item.target%>" data-mode="<%=item.mode%>" href="<%=item.href%>" class='btn header-item frame-link <%=item.display || ""%>'<%= item.target_full ? ` data-target-full="${item.target_full}"` : '' %> <%=item.shell_id ? `data-shell=${item.shell_id}` : ""%> <%=item.script_id ? `data-script=${item.script_id}` : ''%>>
|
|
54
54
|
<% if (item.running) { %>
|
|
55
55
|
<i class="fa-solid fa-circle"></i>
|
|
56
56
|
<% } %>
|
|
@@ -65,9 +65,7 @@
|
|
|
65
65
|
<i class='fa-solid fa-spin fa-circle-notch'></i>
|
|
66
66
|
<i class="fa-solid fa-chevron-right"></i>
|
|
67
67
|
-->
|
|
68
|
-
|
|
69
|
-
<i class="fa-solid fa-square"></i> Stop
|
|
70
|
-
</button>
|
|
68
|
+
<i class="fa-solid fa-xmark"></i>
|
|
71
69
|
</div>
|
|
72
70
|
<% } %>
|
|
73
71
|
<% if (item.arrow) { %>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<% dynamic.forEach((item, index) => { %>
|
|
2
|
-
<a <%=item.default ? 'data-default' : ''%> data-confirm="<%=item.confirm%>" data-index="<%=index+4%>" target="<%=item.target%>" data-mode="<%=item.mode%>" href="<%=item.href%>" class='btn header-item frame-link <%=item.display || ""%>' <%=item.shell_id ? `data-shell=${item.shell_id}` : ""%> <%=item.script_id ? `data-script=${item.script_id}` : ''%>>
|
|
2
|
+
<a <%=item.default ? 'data-default' : ''%> data-confirm="<%=item.confirm%>" data-index="<%=index+4%>" target="<%=item.target%>" data-mode="<%=item.mode%>" href="<%=item.href%>" class='btn header-item frame-link <%=item.display || ""%>'<%= item.target_full ? ` data-target-full="${item.target_full}"` : '' %> <%=item.shell_id ? `data-shell=${item.shell_id}` : ""%> <%=item.script_id ? `data-script=${item.script_id}` : ''%>>
|
|
3
3
|
<% if (item.running) { %>
|
|
4
4
|
<i class="fa-solid fa-circle"></i>
|
|
5
5
|
<% } %>
|
package/server/views/pro.ejs
CHANGED
package/server/views/review.ejs
CHANGED
|
@@ -109,12 +109,6 @@ body.dark aside {
|
|
|
109
109
|
background: var(--dark-bg);
|
|
110
110
|
border-right: 1px solid rgba(255,255,255,0.04);
|
|
111
111
|
}
|
|
112
|
-
/*
|
|
113
|
-
aside #collapse {
|
|
114
|
-
text-align: center;
|
|
115
|
-
padding: 5px;
|
|
116
|
-
}
|
|
117
|
-
*/
|
|
118
112
|
aside {
|
|
119
113
|
/*
|
|
120
114
|
display: flex;
|
|
@@ -817,11 +811,13 @@ body .app-icon {
|
|
|
817
811
|
display: none;
|
|
818
812
|
margin-right: 10px;
|
|
819
813
|
}
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
814
|
+
@media only screen and (max-width: 768px) {
|
|
815
|
+
.app-icon {
|
|
816
|
+
display: block;
|
|
817
|
+
}
|
|
818
|
+
aside {
|
|
819
|
+
display: none;
|
|
820
|
+
}
|
|
825
821
|
}
|
|
826
822
|
.top-menu {
|
|
827
823
|
padding: 10px;
|
|
@@ -839,22 +835,13 @@ body.dark .top-menu .btn2.selected {
|
|
|
839
835
|
background: black;
|
|
840
836
|
color: white;
|
|
841
837
|
}
|
|
842
|
-
body.dark.minimized #collapse {
|
|
843
|
-
color: white;
|
|
844
|
-
}
|
|
845
|
-
body.minimized #collapse {
|
|
846
|
-
border: none !important;
|
|
847
|
-
color: black;
|
|
848
|
-
}
|
|
849
|
-
#collapse {
|
|
850
|
-
border-bottom: 5px solid rgba(127, 91, 243, 0.9);
|
|
851
|
-
color: rgba(127, 91, 243, 0.9);
|
|
852
|
-
border-radius: 0;
|
|
853
|
-
}
|
|
854
838
|
#browserview-container {
|
|
855
839
|
flex-grow: 1;
|
|
856
840
|
position: relative;
|
|
857
841
|
}
|
|
842
|
+
#hidden-placeholder {
|
|
843
|
+
visibility: hidden;
|
|
844
|
+
}
|
|
858
845
|
|
|
859
846
|
@media only screen and (max-width: 1000px) {
|
|
860
847
|
.url-bar {
|
|
@@ -956,6 +943,7 @@ body.minimized #collapse {
|
|
|
956
943
|
<button class='btn2' id='forward' data-tippy-content="forward"><div><i class="fa-solid fa-chevron-right"></i></div></button>
|
|
957
944
|
<button class='btn2' id='refresh-page' data-tippy-content="refresh"><div><i class="fa-solid fa-rotate-right"></i></div></button>
|
|
958
945
|
<button class='btn2' id='screenshot' data-tippy-content="take a screenshot"><i class="fa-solid fa-camera"></i></button>
|
|
946
|
+
<button class='btn2' id='hidden-placeholder'><i class="fa-solid fa-bars"></i></button>
|
|
959
947
|
<div class='mode-selector'>
|
|
960
948
|
<a class="btn2 <%=type === 'review' ? 'selected' : ''%>" href="<%=review_tab%>"><div><i class="fa-regular fa-message"></i></div><div>Community</div></a>
|
|
961
949
|
<a class="btn2 <%=type === 'browse' ? 'selected' : ''%>" href="<%=dev_tab%>"><div><i class="fa-solid fa-code"></i></div><div>Dev</div></a>
|
package/server/views/rows.ejs
CHANGED
|
@@ -82,9 +82,9 @@ body[data-agent='electron'] {
|
|
|
82
82
|
</head>
|
|
83
83
|
<body class='<%=theme%>' data-agent="<%=agent%>">
|
|
84
84
|
<div id='dragger'></div>
|
|
85
|
-
<iframe id='row0' data-src="<%=
|
|
85
|
+
<iframe id='row0' data-src="<%= originSrc || '/' %>"></iframe>
|
|
86
86
|
<div id="gutter" class="gutter" tabindex="0" role="separator" aria-orientation="horizontal" aria-label="Resize panels" aria-valuemin="120" aria-valuemax="0" aria-valuenow="0"></div>
|
|
87
|
-
<iframe id='row1' data-src="<%=
|
|
87
|
+
<iframe id='row1' data-src="<%= targetSrc || originSrc || '/' %>"></iframe>
|
|
88
88
|
|
|
89
89
|
<script>
|
|
90
90
|
if (window !== window.top) {
|
|
@@ -384,17 +384,6 @@ body[data-agent='electron'] {
|
|
|
384
384
|
}
|
|
385
385
|
})
|
|
386
386
|
})();
|
|
387
|
-
if (document.querySelector("#collapse") && window.windowStorage) {
|
|
388
|
-
document.querySelector("#collapse").addEventListener("click", (e) => {
|
|
389
|
-
document.body.classList.toggle("minimized")
|
|
390
|
-
let frame_key = window.frameElement?.name || "";
|
|
391
|
-
if (document.body.classList.contains("minimized")) {
|
|
392
|
-
windowStorage.setItem(frame_key + ":window_mode", "minimized")
|
|
393
|
-
} else {
|
|
394
|
-
windowStorage.setItem(frame_key + ":window_mode", "full")
|
|
395
|
-
}
|
|
396
|
-
})
|
|
397
|
-
}
|
|
398
387
|
</script>
|
|
399
388
|
</body>
|
|
400
389
|
</html>
|