pinokiod 1.3.4 → 1.3.6

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.
Files changed (38) hide show
  1. package/kernel/api/index.js +15 -1
  2. package/kernel/index.js +29 -0
  3. package/kernel/shell.js +28 -0
  4. package/package.json +3 -2
  5. package/script/index.js +3 -2
  6. package/server/index.js +41 -3
  7. package/server/public/css/all.css +93 -9
  8. package/server/public/css/all.min.css +6 -3
  9. package/server/public/css/brands.css +80 -2
  10. package/server/public/css/brands.min.css +3 -3
  11. package/server/public/css/fontawesome.css +15 -9
  12. package/server/public/css/fontawesome.min.css +6 -3
  13. package/server/public/css/regular.css +2 -2
  14. package/server/public/css/regular.min.css +2 -2
  15. package/server/public/css/solid.css +2 -2
  16. package/server/public/css/solid.min.css +2 -2
  17. package/server/public/css/svg-with-js.css +11 -6
  18. package/server/public/css/svg-with-js.min.css +3 -3
  19. package/server/public/css/v4-font-face.css +2 -2
  20. package/server/public/css/v4-font-face.min.css +2 -2
  21. package/server/public/css/v4-shims.css +2 -2
  22. package/server/public/css/v4-shims.min.css +2 -2
  23. package/server/public/css/v5-font-face.css +2 -2
  24. package/server/public/css/v5-font-face.min.css +2 -2
  25. package/server/public/style.css +4 -2
  26. package/server/public/webfonts/fa-brands-400.ttf +0 -0
  27. package/server/public/webfonts/fa-brands-400.woff2 +0 -0
  28. package/server/public/webfonts/fa-regular-400.ttf +0 -0
  29. package/server/public/webfonts/fa-regular-400.woff2 +0 -0
  30. package/server/public/webfonts/fa-solid-900.ttf +0 -0
  31. package/server/public/webfonts/fa-solid-900.woff2 +0 -0
  32. package/server/public/webfonts/fa-v4compatibility.ttf +0 -0
  33. package/server/public/webfonts/fa-v4compatibility.woff2 +0 -0
  34. package/server/views/browser-experimental.ejs +1250 -0
  35. package/server/views/browser.ejs +20 -2
  36. package/server/views/help.ejs +330 -0
  37. package/server/views/index.ejs +7 -1
  38. package/server/views/settings.ejs +40 -2
@@ -1,5 +1,6 @@
1
1
  <html>
2
2
  <head>
3
+ <title><%=config.title%></title>
3
4
  <meta charset="UTF-8">
4
5
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
5
6
  <link href="/css/fontawesome.min.css" rel="stylesheet">
@@ -281,6 +282,10 @@ body.dark .grid-btns {
281
282
  display: grid;
282
283
  grid-template-columns: repeat(2, 1fr);
283
284
  grid-template-rows: repeat(2, 1fr);
285
+ /*
286
+ grid-template-columns: repeat(3, 1fr);
287
+ grid-template-rows: repeat(1, 1fr);
288
+ */
284
289
  box-sizing: border-box;
285
290
  }
286
291
  .grid-btns .btn2 {
@@ -518,12 +523,23 @@ body.dark .loader-container {
518
523
  <i class="fa-solid fa-plus"></i>
519
524
  </div>
520
525
  <div class='flexible'></div>
526
+ <!--
521
527
  <div class='grid-btns'>
522
528
  <a class='btn2' href="/?mode=explore" id='explore'><div><i class="fa-solid fa-globe"></i></div><div>Discover</div></a>
523
529
  <a class='btn2' id='report'><div><i class="fa-solid fa-bug"></i></div><div>Report Bug</div></a>
524
530
  <a class='btn2' href='https://discord.gg/TQdNwadtE4' target="_blank"><div><i class="fa-brands fa-discord"></i></div><div>Discord</div></a>
525
531
  <a class='btn2' href='https://twitter.com/cocktailpeanut' target="_blank"><div><i class="fa-brands fa-twitter"></i></div><div>Twitter</div></a>
526
532
  </div>
533
+ -->
534
+ <div class='grid-btns'>
535
+ <button class='btn2' id='clone-tab'><div><i class='fa-regular fa-copy'></i></div><div>Clone</div></button>
536
+ <a class='btn2' id='open-browser' target="_blank" href="" features="browser"><div><i class="fa-solid fa-square-arrow-up-right"></i></div><div>Popout</div></a>
537
+ <button class='btn2' id='reload'><div><i class="fa-solid fa-rotate-right"></i></div><div>Refresh</div></button>
538
+ <!--
539
+ <a class='btn2' id='report'><div><i class="fa-solid fa-bug"></i></div><div>Help</div></a>
540
+ -->
541
+ <a class='btn2' href="/?mode=help"><div><i class="fa-regular fa-face-smile"></i></div><div>Help</div></a>
542
+ </div>
527
543
  <div class='footer'>
528
544
  <a class='header-item logo' href="/"><i class="fa-solid fa-house"></i></a>
529
545
  <a class='header-item logo' href="/?mode=settings"><i class="fa-solid fa-gear"></i></a>
@@ -542,9 +558,11 @@ body.dark .loader-container {
542
558
  <button class='btn2' id='back'><i class="fa-solid fa-chevron-left"></i></button>
543
559
  <button class='btn2' id='forward'><i class="fa-solid fa-chevron-right"></i></button>
544
560
  <% } %>
561
+ <!--
545
562
  <button class='btn2' id='clone-tab'><i class='fa-regular fa-copy'></i> Clone</button>
546
563
  <a class='btn2' id='open-browser' target="_blank" href="" features="browser"><i class="fa-solid fa-square-arrow-up-right"></i> Popout</a>
547
564
  <button class='btn2' id='reload'><i class="fa-solid fa-rotate-right"></i> Refresh</button>
565
+ -->
548
566
  <!--
549
567
  <button class='btn2 logo' id='reload'><i class="fa-solid fa-rotate-right"></i></button>
550
568
  -->
@@ -667,7 +685,7 @@ const renderSelection = (e, force) => {
667
685
  console.log("# 1")
668
686
  if (location.hash && location.hash.length > 0) {
669
687
  console.log("# 2")
670
- document.querySelector(".bar").classList.remove("hidden")
688
+ // document.querySelector(".bar").classList.remove("hidden")
671
689
  //let id = getTarget(location.hash.slice(1))
672
690
  let id = location.hash.slice(1)
673
691
 
@@ -967,7 +985,7 @@ console.log("loaded before", loaded)
967
985
  renderSelection()
968
986
  //renderCursor()
969
987
  console.log("loaded after", loaded)
970
- Reporter()
988
+ //Reporter()
971
989
  document.querySelector("#reload").addEventListener("click", (e) => {
972
990
  /*
973
991
  // get selected
@@ -0,0 +1,330 @@
1
+ <html>
2
+ <head>
3
+ <meta charset="UTF-8">
4
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
5
+ <link href="/xterm.min.css" rel="stylesheet" />
6
+ <link href="/css/fontawesome.min.css" rel="stylesheet">
7
+ <link href="/css/solid.min.css" rel="stylesheet">
8
+ <link href="/css/regular.min.css" rel="stylesheet">
9
+ <link href="/css/brands.min.css" rel="stylesheet">
10
+ <link href="/markdown.css" rel="stylesheet"/>
11
+ <link href="/noty.css" rel="stylesheet"/>
12
+ <link href="/style.css" rel="stylesheet"/>
13
+ <% if (agent === "electron") { %>
14
+ <link href="/electron.css" rel="stylesheet"/>
15
+ <% } %>
16
+ <style>
17
+ .line2 {
18
+ display: flex;
19
+ align-items: center;
20
+ cursor: pointer;
21
+ background: rgba(0,0,100,0.04);
22
+ }
23
+ .line2 a {
24
+ text-decoration: none;
25
+ color: black;
26
+ }
27
+ .status {
28
+ padding: 10px;
29
+ margin: 10px;
30
+ border-radius: 10px;
31
+ }
32
+ .status.offline {
33
+ background: silver;
34
+ }
35
+ .status.online {
36
+ background: yellowgreen;
37
+ }
38
+ .switch {
39
+ padding: 10px;
40
+ margin: 10px 0;
41
+ }
42
+ .switch[data-online=true] {
43
+ color: yellowgreen;
44
+ }
45
+ .button {
46
+ padding: 10px;
47
+ }
48
+ .on, .off {
49
+ display: flex;
50
+ align-items: center;
51
+ }
52
+ .btn {
53
+ margin-right: 5px;
54
+ font-weight: normal;
55
+ }
56
+ .items {
57
+ max-width: 600px;
58
+ margin: 50px auto;
59
+ }
60
+ .item {
61
+ margin: 0;
62
+ /*
63
+ border-top: 1px solid rgba(255,255,255,0.1);
64
+ border-bottom: 1px solid rgba(255,255,255,0.1);
65
+ */
66
+ padding: 20px 0;
67
+ }
68
+ .titleview h1 {
69
+ word-break: break-word;
70
+ font-size: 40px;
71
+ text-transform: uppercase;
72
+ letter-spacing: -1px;
73
+ }
74
+ .item > .d {
75
+ padding-bottom: 10px;
76
+ }
77
+ .item button {
78
+ padding: 10px 20px;
79
+ }
80
+ .item label {
81
+ display: block;
82
+ text-transform: capitalize;
83
+ font-size: 30px;
84
+ font-weight: bold;
85
+ padding-bottom: 5px;
86
+ letter-spacing: -1px;
87
+ }
88
+ .item .explanation {
89
+ padding-top: 5px;
90
+ color: brown;
91
+ font-size: 12px;
92
+ font-weight: bold;
93
+ font-family: verdana;
94
+ }
95
+ body.dark .item input[type=text] {
96
+ background: rgba(255,255,255,0.1);
97
+ color: white;
98
+ }
99
+ body.dark .item select {
100
+ color: white;
101
+ background: rgba(255,255,255,0.1);
102
+ }
103
+ .item input[type=text] {
104
+ padding: 10px;
105
+ flex-grow: 1;
106
+ border: none;
107
+ background: rgba(0,0,0,0.05);
108
+ width: 100%;
109
+ }
110
+ .item select {
111
+ -webkit-appearance: none;
112
+ -moz-appearance: none;
113
+ appearance: none;
114
+
115
+ background: rgba(0,0,0,0.05);
116
+ padding: 10px;
117
+ box-sizing: border-box;
118
+ width: 100%;
119
+ border: none;
120
+ }
121
+ .item img {
122
+ width: 100px;
123
+ }
124
+ .item .title {
125
+ text-decoration: none;
126
+ color: royalblue;
127
+ }
128
+ .item .col {
129
+ padding: 10px;
130
+ }
131
+ .item .col > * {
132
+ margin: 5px 0;
133
+ }
134
+ .item .stat {
135
+ color: rgba(0,0,0,0.8);
136
+ display: flex;
137
+ }
138
+ .item .stat > * {
139
+ margin-right: 15px;
140
+ }
141
+ .timestamp {
142
+ color: rgba(0,0,0,0.5);
143
+ }
144
+ .loading {
145
+ padding: 10px 20px;
146
+ text-align: center;
147
+ }
148
+ body.light {
149
+ /*
150
+ background: var(--light-nav-bg);
151
+ */
152
+ }
153
+ /*
154
+ form {
155
+ text-align: center;
156
+ }
157
+ body.dark header .btn2 {
158
+ color: var(--light-link-color);
159
+ }
160
+ header .btn2 {
161
+ color: var(--light-color);
162
+ }
163
+ */
164
+ /*
165
+ body.dark header .home {
166
+ color: var(--light-link-color);
167
+ }
168
+ */
169
+ header .home {
170
+ color: var(--light-color);
171
+ padding: 10px;
172
+ }
173
+ body.dark hr {
174
+ background: white;
175
+ }
176
+ hr {
177
+ opacity: 0.03;
178
+ background: black;
179
+ margin: 10px 0;
180
+ height: 1px;
181
+ border: none;
182
+ }
183
+ .reset-cache-loading {
184
+ padding: 10px;
185
+ background: rgba(0,0,0,0.1);
186
+ margin-bottom: 10px;
187
+ text-align: center;
188
+ }
189
+ .reset-bin-loading {
190
+ padding: 10px;
191
+ background: rgba(0,0,0,0.1);
192
+ margin-bottom: 10px;
193
+ text-align: center;
194
+ }
195
+ .footer {
196
+ margin-top: 10px;
197
+ }
198
+ a.link {
199
+ color: royalblue;
200
+ }
201
+ .item .tile h2 {
202
+ margin: 0;
203
+ font-size: 18px;
204
+ }
205
+ body.dark .item .tile h2 a {
206
+ color: white;
207
+ }
208
+ body.dark .item .tile .badge {
209
+ background: white;
210
+ color: black;
211
+ }
212
+ .item .tile h2 a {
213
+ color: black;
214
+ }
215
+ .item .tile .badge {
216
+ background: black;
217
+ color: white;
218
+ padding: 4px 8px;
219
+ border-radius: 2px;
220
+ display: inline-block;
221
+ font-size: 12px;
222
+ vertical-align: middle;
223
+ }
224
+ .item .tile div {
225
+ padding: 5px 0;
226
+ }
227
+ .item .tile {
228
+ color: gray;
229
+ display: block;
230
+ padding: 10px 0;
231
+ }
232
+ </style>
233
+ <script src="/hotkeys.min.js"></script>
234
+ <script src="/sweetalert2.js"></script>
235
+ <script src="/noty.js"></script>
236
+ <script src="/notyq.js"></script>
237
+ <script src="/xterm.js"></script>
238
+ <script src="/xterm-addon-fit.js"></script>
239
+ <script src="/xterm-addon-web-links.js"></script>
240
+ <script src="/xterm-theme.js"></script>
241
+ <script src="/sweetalert2.js"></script>
242
+ <script src="/install.js"></script>
243
+ <script src="/timeago.min.js"></script>
244
+ <script src="/common.js"></script>
245
+ <script src="/opener.js"></script>
246
+ <script src="/nav.js"></script>
247
+ <script src="/report.js"></script>
248
+ </head>
249
+ <body class='<%=theme%>'>
250
+ <header class='grabbable'>
251
+ <h1>
252
+ <a class='home' href="/"><i class="fa-solid fa-house"></i></a>
253
+ <div class='flexible'></div>
254
+ </h1>
255
+ </header>
256
+ <main>
257
+ <div class='container'>
258
+ <div class='titleview'>
259
+ <h1>Community</h1>
260
+ <hr>
261
+ <div class='item'>
262
+ <label><i class="fa-brands fa-discord"></i> Discord</label>
263
+ <div>
264
+ Having issues? Generate a logs.zip file, and share it in <a class='link' href="https://discord.gg/TQdNwadtE4" target="_blank">Pinokio Discord</a>
265
+ <div class='footer'>
266
+ <div id='genlog' class='btn'>Generate logs.zip</div>
267
+ <a id='downloadlogs' download class='hidden btn' href="/pinokio/logs.zip"><i class="fa-solid fa-download"></i> Download logs.zip</a>
268
+ </div>
269
+ </div>
270
+ </div>
271
+ <hr>
272
+ <div class='item'>
273
+ <label><i class="fa-brands fa-x-twitter"></i></label>
274
+ <div>
275
+ Pinokio dev on X:
276
+ <div class='footer'>
277
+ <a class='btn' href='https://x.com/cocktailpeanut' target="_blank"><i class="fa-brands fa-x-twitter"></i> @cocktailpeanut</a>
278
+ </div>
279
+ </div>
280
+ </div>
281
+ <hr>
282
+ <div class='item'>
283
+ <label><i class="fa-brands fa-github"></i> Community Docs</label>
284
+ <div>Community documents (Github repositories tagged with <b>pinokio-community</b> will show up here)</div>
285
+ <br>
286
+ <div class='community'></div>
287
+ </div>
288
+ <hr/>
289
+ </div>
290
+ </div>
291
+ </main>
292
+ <script>
293
+ document.addEventListener("DOMContentLoaded", async () => {
294
+ //Reporter()
295
+
296
+ document.querySelector("#genlog").addEventListener("click", (e) => {
297
+ e.preventDefault()
298
+ e.stopPropagation()
299
+ e.target.innerHTML = '<i class="fa-solid fa-circle-notch fa-spin"></i>'
300
+ fetch("/pinokio/log", {
301
+ method: "post",
302
+ }).then((res) => {
303
+ console.log("RES", res)
304
+ let btn = document.querySelector("#genlog")
305
+ let btn2 = document.querySelector("#downloadlogs")
306
+ btn2.classList.remove("hidden")
307
+ btn.innerHTML = '<i class="fa-solid fa-circle-check"></i> Generated!'
308
+ //btn.classList.add("hidden")
309
+ })
310
+ })
311
+
312
+ fetch("https://api.github.com/search/repositories?q=topic:pinokio-community&sort=stargazers_count&direction=desc").then((res) => {
313
+ return res.json()
314
+ }).then((res) => {
315
+ let html = res.items.map((item) => {
316
+ return `<div class='tile'>
317
+ <h2>
318
+ <span class='badge'><i class="fa-solid fa-star"></i> ${item.stargazers_count}</span>
319
+ <a target="_blank" href="${item.html_url}">${item.name}</a>
320
+ </h2>
321
+ <div>${item.description ? item.description : ''}</div>
322
+ </div>`
323
+ }).join("")
324
+ document.querySelector(".community").innerHTML = html
325
+
326
+ })
327
+ })
328
+ </script>
329
+ </body>
330
+ </html>
@@ -1,5 +1,6 @@
1
1
  <html>
2
2
  <head>
3
+ <title>Pinokio</title>
3
4
  <meta charset="UTF-8">
4
5
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
5
6
  <link href="/xterm.min.css" rel="stylesheet" />
@@ -123,12 +124,17 @@ header .runner {
123
124
  <a class='btn2' data-filepath="<%=filepath%>"><div><i class="fa-regular fa-folder-open"></i></div><div>Files</div></a>
124
125
  <% } %>
125
126
  <a id='wifi' data-proxy="<%=proxy.proxy%>" class='btn2'><div><i class="fa-solid fa-wifi"></i></div><div>WiFi</div></a>
127
+ <!--
126
128
  <a class='btn2' id='report'><div><i class="fa-solid fa-bug"></i></div><div>Report Bug</div></a>
127
129
  <a class='btn2' href='https://discord.gg/TQdNwadtE4' target="_blank"><div><i class="fa-brands fa-discord"></i></div><div>Discord</div></a>
128
130
  <a class='btn2' href='https://twitter.com/cocktailpeanut' target="_blank"><div><i class="fa-brands fa-twitter"></i></div><div>Twitter</div></a>
129
- <!--<a class='btn2' href='https://dev.pinokio.computer' target="_blank"><div><i class="fa-solid fa-shapes"></i></div><div>Develop</div></a>-->
130
131
  <a class='btn2' href='https://dev.pinokio.computer' target="_blank"><div><i class="fa-solid fa-laptop-code"></i></div><div>Develop</div></a>
132
+ -->
131
133
  <a class='btn2' href="/?mode=settings"><div><i class="fa-solid fa-gear"></i></div><div>Settings</div></a>
134
+ <!--
135
+ <a class='btn2' id='report'><div><i class="fa-solid fa-question"></i></div><div>Help</div></a>
136
+ -->
137
+ <a class='btn2' href="/?mode=help"><div><i class="fa-regular fa-face-smile"></i></div><div>Help</div></a>
132
138
  </div>
133
139
  <button id='new-window' title='open a new window'><i class="fa-solid fa-plus"></i></button>
134
140
  <% } %>
@@ -305,8 +305,8 @@ hr {
305
305
  </div>
306
306
  </div>
307
307
  <div class='item'>
308
- <label><i class="fa-solid fa-folder-open"></i> cache</label>
309
- <div class='d'>Reset the cache folder and start fresh from scratch</div>
308
+ <label><i class="fa-solid fa-folder-open"></i> server cache</label>
309
+ <div class='d'>Reset the pinokio server cache folder and start fresh from scratch</div>
310
310
  <div class='reset-cache-loading hidden'>
311
311
  <i class="fa-solid fa-circle-notch fa-spin"></i> Stand by. Do not close this window..
312
312
  </div>
@@ -315,6 +315,18 @@ hr {
315
315
  <button class='red btn' id='del-cache'><i class="fa-solid fa-trash-can"></i> Reset</button>
316
316
  </div>
317
317
  </div>
318
+ <% if (agent === "electron") { %>
319
+ <div class='item'>
320
+ <label><i class="fa-solid fa-folder-open"></i> browser cache</label>
321
+ <div class='d'>Reset the pinokio browser cache</div>
322
+ <div class='reset-browser-cache-loading hidden'>
323
+ <i class="fa-solid fa-circle-notch fa-spin"></i> Stand by. Do not close this window..
324
+ </div>
325
+ <div>
326
+ <button class='red btn' id='del-browser-cache'><i class="fa-solid fa-trash-can"></i> Reset Browser Cache</button>
327
+ </div>
328
+ </div>
329
+ <% } %>
318
330
  <div class='item'>
319
331
  <label><i class="fa-solid fa-folder-open"></i> drive</label>
320
332
  <div class='d'>Shared virtual drives</div>
@@ -382,6 +394,32 @@ document.addEventListener("DOMContentLoaded", async () => {
382
394
  }
383
395
  })
384
396
  <% } %>
397
+ <% if (agent === "electron") { %>
398
+ document.querySelector("#del-browser-cache").addEventListener("click", async (e) => {
399
+ console.log("del-browser-cache")
400
+ let proceed = confirm("Are you sure you wish to delete the browser cache? This will remove all cookies and site data")
401
+ if (proceed) {
402
+ document.querySelector(".reset-browser-cache-loading").classList.remove("hidden")
403
+ document.querySelector("#del-browser-cache").classList.add("hidden")
404
+ let res = await fetch("/pinokio/delete", {
405
+ method: "post",
406
+ headers: {
407
+ "Content-Type": "application/json"
408
+ },
409
+ body: JSON.stringify({ type: "browser-cache" })
410
+ }).then((res) => {
411
+ return res.json()
412
+ })
413
+ console.log(res)
414
+ document.querySelector(".reset-browser-cache-loading").classList.add("hidden")
415
+ if (res.error) {
416
+ alert(res.error)
417
+ } else {
418
+ location.href = location.href
419
+ }
420
+ }
421
+ })
422
+ <% } %>
385
423
  document.querySelector("form").addEventListener("submit", async (e) => {
386
424
  e.preventDefault()
387
425
  e.stopPropagation()