pinokiod 3.49.0 → 3.51.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/index.js +11 -0
- package/package.json +1 -1
- package/server/index.js +4 -1
- package/server/public/style.css +32 -0
- package/server/views/app.ejs +5 -1
- package/server/views/columns.ejs +13 -16
- package/server/views/connect/x.ejs +1 -0
- package/server/views/connect.ejs +1 -0
- package/server/views/container.ejs +1 -0
- package/server/views/download.ejs +1 -0
- package/server/views/explore.ejs +1 -0
- package/server/views/form.ejs +1 -0
- package/server/views/frame.ejs +1 -0
- package/server/views/github.ejs +1 -0
- package/server/views/help.ejs +1 -0
- package/server/views/index.ejs +1 -0
- package/server/views/init/index.ejs +2 -1
- package/server/views/mini.ejs +1 -0
- package/server/views/net.ejs +1 -0
- package/server/views/network.ejs +1 -0
- package/server/views/prototype/index.ejs +1 -0
- package/server/views/review.ejs +1 -0
- package/server/views/rows.ejs +13 -0
- package/server/views/screenshots.ejs +1 -0
- package/server/views/settings.ejs +1 -0
- package/server/views/setup.ejs +1 -0
- package/server/views/setup_home.ejs +1 -0
- package/server/views/tools.ejs +1 -0
package/kernel/index.js
CHANGED
|
@@ -732,6 +732,15 @@ class Kernel {
|
|
|
732
732
|
kill() {
|
|
733
733
|
process.kill(process.pid, "SIGTERM")
|
|
734
734
|
}
|
|
735
|
+
/// async fileserver() {
|
|
736
|
+
/// await this.exec({
|
|
737
|
+
/// message: `npx -y filexplorer --serveDirectory ${this.homedir}`
|
|
738
|
+
/// }, (e) => {
|
|
739
|
+
/// process.stdout.write(e.raw)
|
|
740
|
+
/// }).then(() => {
|
|
741
|
+
/// console.log("DONE")
|
|
742
|
+
/// })
|
|
743
|
+
/// }
|
|
735
744
|
async init(options) {
|
|
736
745
|
|
|
737
746
|
let home = this.store.get("home")
|
|
@@ -919,6 +928,8 @@ class Kernel {
|
|
|
919
928
|
let pwpath = this.bin.path("playwright/node_modules/playwright")
|
|
920
929
|
this.playwright = (await this.loader.load(pwpath)).resolved
|
|
921
930
|
|
|
931
|
+
//await this.fileserver()
|
|
932
|
+
|
|
922
933
|
// get env
|
|
923
934
|
if (!this.launch_complete) {
|
|
924
935
|
let interval = setInterval(async () => {
|
package/package.json
CHANGED
package/server/index.js
CHANGED
|
@@ -249,6 +249,7 @@ class Server {
|
|
|
249
249
|
}
|
|
250
250
|
let dev_url = browser_url + "/dev"
|
|
251
251
|
let review_url = browser_url + "/review"
|
|
252
|
+
let files_url = "/asset/api/" + x.name
|
|
252
253
|
|
|
253
254
|
let dns = this.kernel.pinokio_configs[x.name].dns
|
|
254
255
|
let routes = dns["@"]
|
|
@@ -275,6 +276,7 @@ class Server {
|
|
|
275
276
|
path: uri,
|
|
276
277
|
dev_url,
|
|
277
278
|
review_url,
|
|
279
|
+
files_url,
|
|
278
280
|
}
|
|
279
281
|
})
|
|
280
282
|
}
|
|
@@ -610,6 +612,7 @@ class Server {
|
|
|
610
612
|
theme: this.theme,
|
|
611
613
|
agent: this.agent,
|
|
612
614
|
src: "/_api/" + name,
|
|
615
|
+
asset: "/asset/api/" + name,
|
|
613
616
|
logs: "/_api/" + name + "/logs",
|
|
614
617
|
execUrl: "/api/" + name,
|
|
615
618
|
git_monitor_url: `/gitcommit/HEAD/${name}`,
|
|
@@ -2920,7 +2923,7 @@ class Server {
|
|
|
2920
2923
|
let https_serve = express.static(this.kernel.homedir, {
|
|
2921
2924
|
redirect: false,
|
|
2922
2925
|
})
|
|
2923
|
-
this.app.use('/asset', serve, serveIndex(this.kernel.homedir, {
|
|
2926
|
+
this.app.use('/asset', serve, serveIndex(this.kernel.homedir, {icons: true, hidden: true}))
|
|
2924
2927
|
this.app.use('/asset', (req, res, next) => {
|
|
2925
2928
|
if (req.path.match(/\.(png|jpg|jpeg|gif|ico|svg)$/)) {
|
|
2926
2929
|
res.sendFile(path.resolve(__dirname, 'public', 'pinokio-black.png'));
|
package/server/public/style.css
CHANGED
|
@@ -801,6 +801,7 @@ body {
|
|
|
801
801
|
font-family: Sans-serif;
|
|
802
802
|
font-size: 14px;
|
|
803
803
|
color: var(--light-color);
|
|
804
|
+
position: relative;
|
|
804
805
|
}
|
|
805
806
|
body.dark {
|
|
806
807
|
color: var(--dark-color);
|
|
@@ -2343,6 +2344,18 @@ body.dark .mode-selector .btn2.selected {
|
|
|
2343
2344
|
}
|
|
2344
2345
|
|
|
2345
2346
|
|
|
2347
|
+
#dragger {
|
|
2348
|
+
-webkit-app-region: drag;
|
|
2349
|
+
cursor: grab;
|
|
2350
|
+
position: absolute;
|
|
2351
|
+
top: 0;
|
|
2352
|
+
left: 0;
|
|
2353
|
+
right: 0;
|
|
2354
|
+
height: 20px;
|
|
2355
|
+
width: 100%;
|
|
2356
|
+
z-index: 1000000000000;
|
|
2357
|
+
display: none;
|
|
2358
|
+
}
|
|
2346
2359
|
|
|
2347
2360
|
|
|
2348
2361
|
|
|
@@ -2357,16 +2370,31 @@ body.minimized header .dropdown-content {
|
|
|
2357
2370
|
top: unset;
|
|
2358
2371
|
left: unset;
|
|
2359
2372
|
}
|
|
2373
|
+
|
|
2374
|
+
body.minimized.dark header h1 #close-window {
|
|
2375
|
+
background: rgb(27, 28, 29);
|
|
2376
|
+
}
|
|
2360
2377
|
body.minimized header h1 #close-window {
|
|
2361
2378
|
order: 0;
|
|
2379
|
+
background: white;
|
|
2380
|
+
border-radius: 0;
|
|
2381
|
+
position: sticky;
|
|
2382
|
+
bottom: 0;
|
|
2383
|
+
z-index: 10000000;
|
|
2362
2384
|
}
|
|
2363
2385
|
body.minimized header .home {
|
|
2364
2386
|
display: block;
|
|
2387
|
+
position: sticky;
|
|
2388
|
+
top: 0;
|
|
2365
2389
|
}
|
|
2366
2390
|
body.minimized header {
|
|
2367
2391
|
padding: 10px 0 0;
|
|
2368
2392
|
overflow: auto;
|
|
2369
2393
|
flex-shrink: 0;
|
|
2394
|
+
position: fixed;
|
|
2395
|
+
top: 0;
|
|
2396
|
+
left: 0;
|
|
2397
|
+
height: 100%;
|
|
2370
2398
|
}
|
|
2371
2399
|
body.minimized header h1 .btn2 {
|
|
2372
2400
|
padding: 10px;
|
|
@@ -2402,6 +2430,7 @@ body.minimized .appcanvas {
|
|
|
2402
2430
|
}
|
|
2403
2431
|
body.minimized main {
|
|
2404
2432
|
padding-top: 10px;
|
|
2433
|
+
padding-left: 55px;
|
|
2405
2434
|
}
|
|
2406
2435
|
body.minimized main .container {
|
|
2407
2436
|
margin-left: 0;
|
|
@@ -2409,6 +2438,9 @@ body.minimized main .container {
|
|
|
2409
2438
|
body.minimized .app-icon {
|
|
2410
2439
|
display: block;
|
|
2411
2440
|
}
|
|
2441
|
+
body.minimized #dragger {
|
|
2442
|
+
display: block;
|
|
2443
|
+
}
|
|
2412
2444
|
/*
|
|
2413
2445
|
body.minimized aside {
|
|
2414
2446
|
display: none;
|
package/server/views/app.ejs
CHANGED
|
@@ -135,6 +135,9 @@ main {
|
|
|
135
135
|
main iframe[name^=http] {
|
|
136
136
|
background: white;
|
|
137
137
|
}
|
|
138
|
+
main iframe[name^=file-browse] {
|
|
139
|
+
background: white;
|
|
140
|
+
}
|
|
138
141
|
main iframe {
|
|
139
142
|
width: 100%;
|
|
140
143
|
height: 100%;
|
|
@@ -1711,6 +1714,7 @@ body.minimized aside {
|
|
|
1711
1714
|
<script src="/tippy-bundle.umd.min.js"></script>
|
|
1712
1715
|
</head>
|
|
1713
1716
|
<body class='<%=theme%>' data-platform="<%=platform%>" data-agent="<%=agent%>">
|
|
1717
|
+
<div id='dragger'></div>
|
|
1714
1718
|
<header class='navheader grabbable'>
|
|
1715
1719
|
<h1>
|
|
1716
1720
|
<a class='home' href="/">
|
|
@@ -1822,7 +1826,7 @@ body.minimized aside {
|
|
|
1822
1826
|
</div>
|
|
1823
1827
|
<div class='menu-container'>
|
|
1824
1828
|
<div class='m n system' data-type="n">
|
|
1825
|
-
<a target="
|
|
1829
|
+
<a id='file-browse' target="file-browse" href="<%=asset%>" class='btn header-item frame-link' data-index="0">
|
|
1826
1830
|
<div class='tab'>
|
|
1827
1831
|
<i class="fa-regular fa-folder-open"></i> Files
|
|
1828
1832
|
</div>
|
package/server/views/columns.ejs
CHANGED
|
@@ -13,6 +13,18 @@ body {
|
|
|
13
13
|
display: grid;
|
|
14
14
|
grid-template-columns: var(--col0, 1fr) 6px var(--col1, 1fr);
|
|
15
15
|
gap: 0px;
|
|
16
|
+
position: relative;
|
|
17
|
+
}
|
|
18
|
+
#dragger {
|
|
19
|
+
-webkit-app-region: drag;
|
|
20
|
+
cursor: grab;
|
|
21
|
+
position: absolute;
|
|
22
|
+
top: 0;
|
|
23
|
+
left: 0;
|
|
24
|
+
right: 0;
|
|
25
|
+
height: 20px;
|
|
26
|
+
width: 100%;
|
|
27
|
+
z-index: 1000000000000;
|
|
16
28
|
}
|
|
17
29
|
body iframe {
|
|
18
30
|
border: none;
|
|
@@ -57,6 +69,7 @@ body.resizing {
|
|
|
57
69
|
<script src="/window_storage.js"></script>
|
|
58
70
|
</head>
|
|
59
71
|
<body class='<%=theme%>'>
|
|
72
|
+
<div id='dragger'></div>
|
|
60
73
|
<iframe id='col0' data-src="<%=src%>"></iframe>
|
|
61
74
|
<div id="gutter" class="gutter" tabindex="0" role="separator" aria-orientation="vertical" aria-label="Resize panels" aria-valuemin="120" aria-valuemax="0" aria-valuenow="0"></div>
|
|
62
75
|
<iframe id='col1' data-src="<%=src%>"></iframe>
|
|
@@ -82,7 +95,6 @@ body.resizing {
|
|
|
82
95
|
const urlKeyFor = (paneName) => `paneUrl:${paneName}`;
|
|
83
96
|
|
|
84
97
|
function setColumns(leftPx) {
|
|
85
|
-
console.log("setColumns", leftPx)
|
|
86
98
|
document.body.style.gridTemplateColumns = `${leftPx}px ${GUTTER}px 1fr`;
|
|
87
99
|
}
|
|
88
100
|
|
|
@@ -109,7 +121,6 @@ body.resizing {
|
|
|
109
121
|
}
|
|
110
122
|
|
|
111
123
|
function applyFromRatio(ratio) {
|
|
112
|
-
console.log("applyFromRatio", ratio)
|
|
113
124
|
const total = computeTotal();
|
|
114
125
|
let leftPx = clamp(Math.round(total * ratio), MIN, total - MIN);
|
|
115
126
|
setColumns(leftPx);
|
|
@@ -171,10 +182,8 @@ body.resizing {
|
|
|
171
182
|
let overlay = null;
|
|
172
183
|
|
|
173
184
|
function refreshLayout (splitKey) {
|
|
174
|
-
console.log("refreshLayout", splitKey)
|
|
175
185
|
let val = windowStorage.getItem(splitKey)
|
|
176
186
|
let id = splitKey.replace("splitRatio:", "")
|
|
177
|
-
console.log({ id, val })
|
|
178
187
|
if (val === "1" || val === "0") {
|
|
179
188
|
if (val === "1") {
|
|
180
189
|
id_to_hide = id + ".1"
|
|
@@ -187,20 +196,15 @@ body.resizing {
|
|
|
187
196
|
document.querySelector("#gutter").remove()
|
|
188
197
|
}
|
|
189
198
|
let existing_iframe = document.querySelector("iframe")
|
|
190
|
-
console.log("1")
|
|
191
199
|
if (existing_iframe) {
|
|
192
|
-
console.log("2")
|
|
193
200
|
document.body.className = "single"
|
|
194
201
|
} else {
|
|
195
|
-
console.log("3")
|
|
196
202
|
if (window.parent) {
|
|
197
|
-
console.log("4")
|
|
198
203
|
// if all child iframes have been removed, remove self
|
|
199
204
|
window.parent.postMessage({
|
|
200
205
|
e: "close"
|
|
201
206
|
}, "*")
|
|
202
207
|
} else {
|
|
203
|
-
console.log("5")
|
|
204
208
|
// if this is the top window, everything has been removed, so just redirect to home
|
|
205
209
|
location.href = "/"
|
|
206
210
|
}
|
|
@@ -286,17 +290,13 @@ body.resizing {
|
|
|
286
290
|
// Initialize from saved ratio if available and set ARIA
|
|
287
291
|
try {
|
|
288
292
|
const saved = parseFloat(windowStorage.getItem(splitKey) || '');
|
|
289
|
-
console.log({ saved })
|
|
290
293
|
if (!Number.isNaN(saved) && saved > 0 && saved < 1) {
|
|
291
|
-
console.log("> 1")
|
|
292
294
|
applyFromRatio(saved);
|
|
293
295
|
} else {
|
|
294
|
-
console.log("> 2")
|
|
295
296
|
updateAria(left.getBoundingClientRect().width, computeTotal());
|
|
296
297
|
refreshLayout(splitKey)
|
|
297
298
|
}
|
|
298
299
|
} catch (_) {
|
|
299
|
-
console.log("> 3")
|
|
300
300
|
updateAria(left.getBoundingClientRect().width, computeTotal());
|
|
301
301
|
}
|
|
302
302
|
|
|
@@ -334,11 +334,8 @@ body.resizing {
|
|
|
334
334
|
return
|
|
335
335
|
}
|
|
336
336
|
|
|
337
|
-
console.log('Message received from iframe:', sourceFrameId);
|
|
338
|
-
|
|
339
337
|
// Or use this approach to loop through all iframes
|
|
340
338
|
const iframes = document.querySelectorAll('iframe');
|
|
341
|
-
console.log({ splitKey })
|
|
342
339
|
for (let iframe of iframes) {
|
|
343
340
|
if (event.source === iframe.contentWindow) {
|
|
344
341
|
if (iframe.id === "col0") {
|
|
@@ -191,6 +191,7 @@ pre {
|
|
|
191
191
|
<script src="/highlight-js.js"></script>
|
|
192
192
|
</head>
|
|
193
193
|
<body class='<%=theme%>' data-agent="<%=agent%>">
|
|
194
|
+
<div id='dragger'></div>
|
|
194
195
|
<header class='navheader grabbable'>
|
|
195
196
|
<h1>
|
|
196
197
|
<a class='home' href="/"><img class='icon' src="/pinokio-black.png"></a>
|
package/server/views/connect.ejs
CHANGED
|
@@ -807,6 +807,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
807
807
|
</script>
|
|
808
808
|
</head>
|
|
809
809
|
<body class='<%=theme%>' data-agent="<%=agent%>">
|
|
810
|
+
<div id='dragger'></div>
|
|
810
811
|
<header class='navheader grabbable'>
|
|
811
812
|
<h1>
|
|
812
813
|
<a class='home' href="/"><img class='icon' src="/pinokio-black.png"></a>
|
package/server/views/explore.ejs
CHANGED
|
@@ -120,6 +120,7 @@ body main iframe {
|
|
|
120
120
|
<script src="/nav.js"></script>
|
|
121
121
|
</head>
|
|
122
122
|
<body class='<%=theme%>' data-agent="<%=agent%>">
|
|
123
|
+
<div id='dragger'></div>
|
|
123
124
|
<header class='navheader grabbable'>
|
|
124
125
|
<h1>
|
|
125
126
|
<a class='home' href="/"><img class='icon' src="/pinokio-black.png"></a>
|
package/server/views/form.ejs
CHANGED
package/server/views/frame.ejs
CHANGED
package/server/views/github.ejs
CHANGED
|
@@ -232,6 +232,7 @@ ol {
|
|
|
232
232
|
<script src="/opener.js"></script>
|
|
233
233
|
</head>
|
|
234
234
|
<body class='<%=theme%>' data-agent="<%=agent%>">
|
|
235
|
+
<div id='dragger'></div>
|
|
235
236
|
<header class='navheader grabbable'>
|
|
236
237
|
<h1>
|
|
237
238
|
<a class='home' href="/"><img class='icon' src="/pinokio-black.png"></a>
|
package/server/views/help.ejs
CHANGED
|
@@ -253,6 +253,7 @@ body.dark .item .tile .badge {
|
|
|
253
253
|
<script src="/report.js"></script>
|
|
254
254
|
</head>
|
|
255
255
|
<body class='<%=theme%>' data-agent="<%=agent%>">
|
|
256
|
+
<div id='dragger'></div>
|
|
256
257
|
<header class='navheader grabbable'>
|
|
257
258
|
<h1>
|
|
258
259
|
<a class='home' href="/"><img class='icon' src="/pinokio-black.png"></a>
|
package/server/views/index.ejs
CHANGED
|
@@ -401,6 +401,7 @@ body.dark aside .current.selected {
|
|
|
401
401
|
<script src="/urldropdown.js"></script>
|
|
402
402
|
</head>
|
|
403
403
|
<body class='<%=theme%>' data-agent="<%=agent%>">
|
|
404
|
+
<div id='dragger'></div>
|
|
404
405
|
<% if (error) { %>
|
|
405
406
|
<nav class='error-message'>
|
|
406
407
|
<div><%=error%></div>
|
|
@@ -1416,7 +1416,7 @@ body.dark .ace-editor {
|
|
|
1416
1416
|
@media only screen and (max-width: 600px) {
|
|
1417
1417
|
aside {
|
|
1418
1418
|
width: unset;
|
|
1419
|
-
flex-shrink:
|
|
1419
|
+
flex-shrink: 0;
|
|
1420
1420
|
}
|
|
1421
1421
|
aside {
|
|
1422
1422
|
padding: 0 10px;
|
|
@@ -1514,6 +1514,7 @@ body.dark .ace-editor {
|
|
|
1514
1514
|
<script src="/fseditor.js"></script>
|
|
1515
1515
|
</head>
|
|
1516
1516
|
<body class='<%=theme%>' data-platform="<%=platform%>">
|
|
1517
|
+
<div id='dragger'></div>
|
|
1517
1518
|
<header class='navheader grabbable'>
|
|
1518
1519
|
<h1>
|
|
1519
1520
|
<a class='home' href="/"><img class='icon' src="/pinokio-black.png"></a>
|
package/server/views/mini.ejs
CHANGED
|
@@ -753,6 +753,7 @@ body.dark .appcanvas {
|
|
|
753
753
|
<script src="/fseditor.js"></script>
|
|
754
754
|
</head>
|
|
755
755
|
<body class='<%=theme%>' data-platform="<%=platform%>" data-agent="<%=agent%>">
|
|
756
|
+
<div id='dragger'></div>
|
|
756
757
|
<header class='navheader grabbable'>
|
|
757
758
|
<h1>
|
|
758
759
|
<a class='home' href="/"><img class='icon' src="/pinokio-black.png"></a>
|
package/server/views/net.ejs
CHANGED
|
@@ -523,6 +523,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
523
523
|
<script src="/fseditor.js"></script>
|
|
524
524
|
</head>
|
|
525
525
|
<body class='<%=theme%>' data-agent="<%=agent%>">
|
|
526
|
+
<div id='dragger'></div>
|
|
526
527
|
<% if (error) { %>
|
|
527
528
|
<nav class='error-message'>
|
|
528
529
|
<div><%=error%></div>
|
package/server/views/network.ejs
CHANGED
|
@@ -1028,6 +1028,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
1028
1028
|
</script>
|
|
1029
1029
|
</head>
|
|
1030
1030
|
<body class='<%=theme%>' data-agent="<%=agent%>">
|
|
1031
|
+
<div id='dragger'></div>
|
|
1031
1032
|
<header class='navheader grabbable'>
|
|
1032
1033
|
<h1>
|
|
1033
1034
|
<a class='home' href="/"><img class='icon' src="/pinokio-black.png"></a>
|
|
@@ -1000,6 +1000,7 @@ body.dark .appcanvas {
|
|
|
1000
1000
|
<script src="/fseditor.js"></script>
|
|
1001
1001
|
</head>
|
|
1002
1002
|
<body class='<%=theme%>' data-platform="<%=platform%>">
|
|
1003
|
+
<div id='dragger'></div>
|
|
1003
1004
|
<header class='navheader grabbable'>
|
|
1004
1005
|
<h1>
|
|
1005
1006
|
<a class='home' href="/"><img class='icon' src="/pinokio-black.png"></a>
|
package/server/views/review.ejs
CHANGED
|
@@ -946,6 +946,7 @@ body.minimized #collapse {
|
|
|
946
946
|
<script src="/tippy-bundle.umd.min.js"></script>
|
|
947
947
|
</head>
|
|
948
948
|
<body class='<%=theme%>' data-platform="<%=platform%>" data-agent="<%=agent%>">
|
|
949
|
+
<div id='dragger'></div>
|
|
949
950
|
<header class='navheader grabbable'>
|
|
950
951
|
<h1>
|
|
951
952
|
<a class='home' href="/">
|
package/server/views/rows.ejs
CHANGED
|
@@ -13,6 +13,18 @@ body {
|
|
|
13
13
|
display: grid;
|
|
14
14
|
grid-template-rows: var(--row0, 1fr) 6px var(--row1, 1fr);
|
|
15
15
|
gap: 0px;
|
|
16
|
+
position: relative;
|
|
17
|
+
}
|
|
18
|
+
#dragger {
|
|
19
|
+
-webkit-app-region: drag;
|
|
20
|
+
cursor: grab;
|
|
21
|
+
position: absolute;
|
|
22
|
+
top: 0;
|
|
23
|
+
left: 0;
|
|
24
|
+
right: 0;
|
|
25
|
+
height: 20px;
|
|
26
|
+
width: 100%;
|
|
27
|
+
z-index: 1000000000000;
|
|
16
28
|
}
|
|
17
29
|
body iframe {
|
|
18
30
|
border: none;
|
|
@@ -57,6 +69,7 @@ body.resizing {
|
|
|
57
69
|
<script src="/window_storage.js"></script>
|
|
58
70
|
</head>
|
|
59
71
|
<body class='<%=theme%>'>
|
|
72
|
+
<div id='dragger'></div>
|
|
60
73
|
<iframe id='row0' data-src="<%=src%>"></iframe>
|
|
61
74
|
<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>
|
|
62
75
|
<iframe id='row1' data-src="<%=src%>"></iframe>
|
package/server/views/setup.ejs
CHANGED
package/server/views/tools.ejs
CHANGED