pinokiod 3.41.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.
Files changed (82) hide show
  1. package/kernel/api/browser/index.js +3 -1
  2. package/kernel/api/cloudflare/index.js +3 -3
  3. package/kernel/api/index.js +187 -51
  4. package/kernel/api/loading/index.js +15 -0
  5. package/kernel/api/process/index.js +7 -0
  6. package/kernel/api/shell/index.js +0 -2
  7. package/kernel/bin/browserless.js +22 -0
  8. package/kernel/bin/caddy.js +36 -4
  9. package/kernel/bin/index.js +4 -1
  10. package/kernel/bin/setup.js +38 -5
  11. package/kernel/connect/backend.js +110 -0
  12. package/kernel/connect/config.js +171 -0
  13. package/kernel/connect/index.js +18 -7
  14. package/kernel/connect/providers/huggingface/index.js +98 -0
  15. package/kernel/connect/providers/x/index.js +0 -1
  16. package/kernel/environment.js +91 -19
  17. package/kernel/git.js +46 -3
  18. package/kernel/index.js +119 -39
  19. package/kernel/peer.js +40 -5
  20. package/kernel/plugin.js +3 -2
  21. package/kernel/procs.js +27 -20
  22. package/kernel/prototype.js +30 -16
  23. package/kernel/router/common.js +1 -1
  24. package/kernel/router/connector.js +1 -3
  25. package/kernel/router/index.js +38 -4
  26. package/kernel/router/localhost_home_router.js +5 -1
  27. package/kernel/router/localhost_port_router.js +27 -1
  28. package/kernel/router/localhost_static_router.js +93 -0
  29. package/kernel/router/localhost_variable_router.js +14 -9
  30. package/kernel/router/peer_peer_router.js +3 -0
  31. package/kernel/router/peer_static_router.js +43 -0
  32. package/kernel/router/peer_variable_router.js +15 -14
  33. package/kernel/router/processor.js +26 -1
  34. package/kernel/router/rewriter.js +59 -0
  35. package/kernel/scripts/git/commit +11 -1
  36. package/kernel/shell.js +8 -3
  37. package/kernel/util.js +65 -6
  38. package/package.json +2 -1
  39. package/server/index.js +1037 -964
  40. package/server/public/common.js +382 -1
  41. package/server/public/fscreator.js +0 -1
  42. package/server/public/loading.js +17 -0
  43. package/server/public/notifyinput.js +0 -1
  44. package/server/public/opener.js +4 -2
  45. package/server/public/style.css +310 -11
  46. package/server/socket.js +7 -1
  47. package/server/views/app.ejs +1747 -351
  48. package/server/views/columns.ejs +338 -0
  49. package/server/views/connect/huggingface.ejs +353 -0
  50. package/server/views/connect/index.ejs +410 -0
  51. package/server/views/connect/x.ejs +43 -9
  52. package/server/views/connect.ejs +709 -49
  53. package/server/views/container.ejs +357 -0
  54. package/server/views/d.ejs +251 -62
  55. package/server/views/download.ejs +54 -10
  56. package/server/views/editor.ejs +11 -0
  57. package/server/views/explore.ejs +40 -15
  58. package/server/views/file_explorer.ejs +25 -246
  59. package/server/views/form.ejs +44 -1
  60. package/server/views/frame.ejs +39 -1
  61. package/server/views/github.ejs +48 -11
  62. package/server/views/help.ejs +48 -7
  63. package/server/views/index.ejs +119 -58
  64. package/server/views/index2.ejs +3 -4
  65. package/server/views/init/index.ejs +651 -197
  66. package/server/views/install.ejs +1 -1
  67. package/server/views/mini.ejs +47 -18
  68. package/server/views/net.ejs +199 -67
  69. package/server/views/network.ejs +220 -94
  70. package/server/views/network2.ejs +3 -4
  71. package/server/views/old_network.ejs +3 -3
  72. package/server/views/prototype/index.ejs +48 -11
  73. package/server/views/review.ejs +1005 -0
  74. package/server/views/rows.ejs +341 -0
  75. package/server/views/screenshots.ejs +1020 -0
  76. package/server/views/settings.ejs +160 -23
  77. package/server/views/setup.ejs +49 -7
  78. package/server/views/setup_home.ejs +43 -10
  79. package/server/views/shell.ejs +7 -1
  80. package/server/views/start.ejs +14 -9
  81. package/server/views/terminal.ejs +13 -2
  82. package/server/views/tools.ejs +1015 -0
@@ -216,7 +216,9 @@ body.dark .open-menu, body.dark .browse {
216
216
  color: royalblue !important;
217
217
  }
218
218
  .open-menu, .browse {
219
+ /*
219
220
  width: 80px;
221
+ */
220
222
  border-radius: 0 !important;
221
223
  background: rgba(0,0,0,0.04) !important;
222
224
  color: black !important;
@@ -246,7 +248,6 @@ aside {
246
248
  width: 200px;
247
249
  display: block;
248
250
  flex-shrink: 0;
249
- border-right: 1px solid rgba(0,0,0,0.04);
250
251
  }
251
252
  body.dark aside .tab:hover, aside .tab:hover {
252
253
  color: royalblue !important;
@@ -255,12 +256,18 @@ body.dark aside .tab:hover, aside .tab:hover {
255
256
  aside .tab i {
256
257
  width: 20px;
257
258
  text-align: center;
259
+ display: block;
258
260
  }
259
261
  body.dark aside .tab {
260
262
  color: white;
261
263
  }
264
+ aside .tab.hidden {
265
+ padding: 0;
266
+ }
262
267
  aside .tab {
263
- display: block;
268
+ display: flex;
269
+ align-items: center;
270
+ gap: 5px;
264
271
  color: black;
265
272
  text-decoration: none;
266
273
  padding: 10px;
@@ -307,7 +314,47 @@ body.dark aside .current.selected {
307
314
  */
308
315
  }
309
316
  .container {
310
- margin-right: 20px;
317
+ margin-left: 20px;
318
+ }
319
+ @media only screen and (max-width: 800px) {
320
+ body {
321
+ display: flex !important;
322
+ flex-direction: row !important;
323
+ }
324
+ }
325
+ @media only screen and (max-width: 600px) {
326
+ aside {
327
+ width: unset;
328
+ flex-shrink: unset;
329
+ }
330
+ aside {
331
+ padding: 0 10px;
332
+ }
333
+ aside .tab i {
334
+ width: 100%;
335
+ }
336
+ aside .tab .caption {
337
+ display: none;
338
+ }
339
+ aside .tab {
340
+ margin: 0;
341
+ padding: 10px;
342
+ border-left: none;
343
+ }
344
+ aside .btn-tab {
345
+ flex-direction: column;
346
+ padding: 10px 0;
347
+ }
348
+ aside .btn-tab .btn {
349
+ display: flex;
350
+ justify-content: center;
351
+ }
352
+ aside .btn-tab .btn .caption {
353
+ display: none;
354
+ }
355
+ header .flexible {
356
+ min-width: unset;
357
+ }
311
358
  }
312
359
  @media only screen and (max-width: 480px) {
313
360
  .btn2 {
@@ -332,10 +379,11 @@ body.dark aside .current.selected {
332
379
  <script src="/Socket.js"></script>
333
380
  <script src="/install.js"></script>
334
381
  <script src="/common.js"></script>
335
- <script src="/opener.js"></script>
336
382
  <script src="/nav.js"></script>
337
383
  <script src="/fuse.js"></script>
338
384
  <script src="/report.js"></script>
385
+ <script src="/popper.min.js"></script>
386
+ <script src="/tippy-bundle.umd.min.js"></script>
339
387
  <script src="/filepond-plugin-file-validate-type.min.js"></script>
340
388
  <script src="/filepond-plugin-image-exif-orientation.min.js"></script>
341
389
  <script src="/filepond-plugin-image-preview.min.js"></script>
@@ -362,21 +410,30 @@ body.dark aside .current.selected {
362
410
  <h1>
363
411
  <% if (ishome) { %>
364
412
  <a class='home' href="/"><img class='icon' src="/pinokio-black.png"></a>
365
- <button class='btn2' id='back'><div><i class="fa-solid fa-chevron-left"></i></div><div>Prev</div></button>
366
- <button class='btn2' id='forward'><div><i class="fa-solid fa-chevron-right"></i></div><div>Next</div></button>
367
- <button class='btn2' id='refresh-page'><div><i class="fa-solid fa-rotate-right"></i></div><div>Refresh</div></button>
368
- <div class='url-bar'>
369
- <% if (current_urls.https) { %>
370
- <a class='https-url' target="_blank" href="<%=current_urls.https%>"><i class="fa-solid fa-square-arrow-up-right"></i> <%=current_urls.https%></a>
371
- <% } %>
372
- <% if (current_urls.http) { %>
373
- <a class='http-url' target="_blank" href="<%=current_urls.http%>"><i class="fa-solid fa-square-arrow-up-right"></i> <%=current_urls.http%></a>
374
- <% } %>
413
+ <button class='btn2' id='back' data-tippy-content="back"><div><i class="fa-solid fa-chevron-left"></i></div></button>
414
+ <button class='btn2' id='forward' data-tippy-content="forward"><div><i class="fa-solid fa-chevron-right"></i></div></button>
415
+ <button class='btn2' id='refresh-page' data-tippy-content="refresh"><div><i class="fa-solid fa-rotate-right"></i></div></button>
416
+ <button class='btn2' id='screenshot' data-tippy-content="take a screenshot"><i class="fa-solid fa-camera"></i></button>
417
+ <form class='urlbar'><input type='url' placeholder='enter a local url'></form>
418
+ <a class='btn2' href="/columns" data-tippy-content="split into 2 columns">
419
+ <div><i class="fa-solid fa-table-columns"></i></div>
420
+ </a>
421
+ <a class='btn2' href="/rows" data-tippy-content="split into 2 rows">
422
+ <div><i class="fa-solid fa-table-columns fa-rotate-270"></i></div>
423
+ </a>
424
+ <div class="dropdown btn2">
425
+ <button class='btn2' id='window-management'>
426
+ <div><i class="fa-solid fa-plus"></i></div>
427
+ </button>
428
+ <div class="dropdown-content" id="dropdown-content">
429
+ <button class='btn2' id='clone-win' data-tippy-content="clone this window">
430
+ <div><i class="fa-solid fa-clone"></i><div>clone this window</div></div>
431
+ </button>
432
+ <button id='new-window' data-tippy-content="open a new window" title='open a new window' class='btn2' data-agent="<%=agent%>">
433
+ <div><i class="fa-solid fa-plus"></i><div>new window</div></div>
434
+ </button>
435
+ </div>
375
436
  </div>
376
- <a href="/connect" class='btn2'><div><i class="fa-solid fa-circle-user"></i></div><div>Connect</div></a>
377
- <!--
378
- <button id='newfolder' class='btn2'><div><i class="fa-solid fa-folder-plus"></i></div><div>New Folder</div></button>
379
- -->
380
437
  <% } %>
381
438
  <% paths.forEach((path) => { %>
382
439
  <% if (path.action) { %>
@@ -385,15 +442,9 @@ body.dark aside .current.selected {
385
442
  <a class='path' href="<%=path.path%>"><%-path.name%></a>
386
443
  <% } %>
387
444
  <% }) %>
388
- <% if (ishome) { %>
389
- <div class='nav-btns'>
390
- <a class='btn2' href="<%=portal%>" target="_blank"><div><i class="fa-solid fa-question"></i></div><div>Help</div></a>
391
- <button class='btn2' id='genlog'><div><i class="fa-solid fa-laptop-code"></i></div><div>Logs</div></button>
392
- <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>
393
- <a class='btn2' href="/?mode=settings"><div><i class="fa-solid fa-gear"></i></div><div>Settings</div></a>
394
- <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>
395
- </div>
396
- <% } %>
445
+ <button class='btn2 hidden' id='close-window' data-tippy-content='close this section'>
446
+ <div><i class="fa-solid fa-xmark"></i></div>
447
+ </button>
397
448
  </h1>
398
449
  <% if (!ishome) { %>
399
450
  <div class='runner'>
@@ -418,23 +469,6 @@ body.dark aside .current.selected {
418
469
  </header>
419
470
  <main>
420
471
  <div id='terminal' class='hidden'></div>
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>
426
- <a href="/" class='tab selected'><i class='fas fa-laptop-code'></i> Local</a>
427
- <a href="/network" class='tab'><i class="fa-solid fa-wifi"></i> Network</a>
428
- <% if (list.length > 0) { %>
429
- <% let brands = { win32: "windows", darwin: "apple", linux: "Linux" } %>
430
- <% list.forEach(({ host, name, platform, processes }, index) => { %>
431
- <!--
432
- <a href="http://<%=host%>:42000" class='submenu tab' target="_blank"><i class="fa-brands fa-<%=brands[platform]%>"></i> <%=name%> (<%=current_host === host ? 'this machine' : host%>)</a>
433
- -->
434
- <a href="/net/<%=name%>" class='submenu tab'><i class="fa-brands fa-<%=brands[platform]%>"></i> <%=name%> (<%=current_host === host ? 'this machine' : host%>)</a>
435
- <% }) %>
436
- <% } %>
437
- </aside>
438
472
  <div class='container'>
439
473
  <% if (ishome) { %>
440
474
  <form class='search'>
@@ -464,11 +498,11 @@ body.dark aside .current.selected {
464
498
  <% if (running.length > 0) { %>
465
499
  <div class='running-apps'>
466
500
  <% running.forEach((item) => { %>
467
- <a href="<%=item.browser_url%>" data-description="<%=item.description%>" data-index="<%=item.index%>" data-name="<%=item.name%>" data-title="<%=item.name%>" data-uri="<%=item.uri%>" data-icon="<%=item.icon%>" data-path="<%=item.path%>" data-iconpath="<%=item.iconpath ? item.iconpath : ''%>" class='line align-top'>
501
+ <a target="<%=item.target || '_self'%>" href="<%=item.browser_url%>" data-description="<%=item.description%>" data-index="<%=item.index%>" data-name="<%=item.name%>" data-title="<%=item.name%>" data-uri="<%=item.uri%>" data-icon="<%=item.icon%>" data-path="<%=item.path%>" data-iconpath="<%=item.iconpath ? item.iconpath : ''%>" class='line align-top'>
468
502
  <h3>
469
503
  <div class='item-icon'>
470
504
  <% if (item.icon) { %>
471
- <img src="<%=item.icon%>">
505
+ <img src="<%=item.icon%>" onerror="this.src='/pinokio-black.png'"/>
472
506
  <% } else { %>
473
507
  <% if (theme === 'dark') { %>
474
508
  <img src="/pinokio-white.png">
@@ -485,9 +519,12 @@ body.dark aside .current.selected {
485
519
  <div class='uri'><%=item.filepath%></div>
486
520
  <div class='description'><%=item.description%></div>
487
521
  <div class='menu-btns'>
488
- <button class='btn browse' data-src="<%=item.browser_url%>/dev">
522
+ <button class='btn browse' data-src="<%=item.dev_url%>">
489
523
  <i class='fa-solid fa-code'></i> Dev
490
524
  </button>
525
+ <button class='btn browse' data-src="<%=item.review_url%>">
526
+ <i class="fa-regular fa-message"></i> Community
527
+ </button>
491
528
  <button class='btn open-menu'>
492
529
  <i class="fa-solid fa-bars"></i><span> Menu</span>
493
530
  </button>
@@ -496,13 +533,13 @@ body.dark aside .current.selected {
496
533
  <button class='btn' data-filepath="<%=item.filepath%>">
497
534
  <i class="fa-solid fa-folder-open"></i> Open</button>
498
535
  </button>
499
- <button class='btn copy-menu' data-src="<%=item.browser_url%>/dev">
536
+ <button class='btn copy-menu'>
500
537
  <i class='fa-solid fa-copy'></i> Copy
501
538
  </button>
502
- <button class='btn move-menu' data-src="<%=item.browser_url%>/dev" data-disable="To move the folder, the app should not be running.">
539
+ <button class='btn move-menu' data-disable="To move the folder, the app should not be running.">
503
540
  <i class="fa-solid fa-right-to-bracket"></i> Move
504
541
  </button>
505
- <button class='btn edit-menu' data-src="<%=item.browser_url%>/dev">
542
+ <button class='btn edit-menu'>
506
543
  <i class='fa-solid fa-pen-to-square'></i> Edit
507
544
  </button>
508
545
  <button class='btn del' data-src="<%=item.url%>" data-disable="To delete the folder, the app should not be running.">
@@ -552,11 +589,11 @@ body.dark aside .current.selected {
552
589
  <div class='header-label'>Not Running</div>
553
590
  -->
554
591
  <% notRunning.forEach((item) => { %>
555
- <a href="<%=item.browser_url%>" data-description="<%=item.description%>" data-index="<%=item.index%>" data-name="<%=item.name%>" data-title="<%=item.name%>" data-uri="<%=item.uri%>" data-icon="<%=item.icon%>" data-path="<%=item.path%>" data-iconpath="<%=item.iconpath ? item.iconpath : ''%>" class='line align-top'>
592
+ <a target="<%=item.target || '_self'%>" href="<%=item.browser_url%>" data-description="<%=item.description%>" data-index="<%=item.index%>" data-name="<%=item.name%>" data-title="<%=item.name%>" data-uri="<%=item.uri%>" data-icon="<%=item.icon%>" data-path="<%=item.path%>" data-iconpath="<%=item.iconpath ? item.iconpath : ''%>" class='line align-top'>
556
593
  <h3>
557
594
  <div class='item-icon'>
558
595
  <% if (item.icon) { %>
559
- <img src="<%=item.icon%>">
596
+ <img src="<%=item.icon%>" onerror="this.src='/pinokio-black.png'"/>
560
597
  <% } else { %>
561
598
  <% if (theme === 'dark') { %>
562
599
  <img src="/pinokio-white.png">
@@ -573,9 +610,12 @@ body.dark aside .current.selected {
573
610
  <div class='uri'><%=item.filepath%></div>
574
611
  <div class='description'><%=item.description%></div>
575
612
  <div class='menu-btns'>
576
- <button class='btn browse' data-src="<%=item.browser_url%>/dev">
613
+ <button class='btn browse' data-src="<%=item.dev_url%>">
577
614
  <i class='fa-solid fa-code'></i> Dev
578
615
  </button>
616
+ <button class='btn browse' data-src="<%=item.review_url%>">
617
+ <i class="fa-regular fa-message"></i> Community
618
+ </button>
579
619
  <button class='btn open-menu'>
580
620
  <i class="fa-solid fa-bars"></i><span> Menu</span>
581
621
  </button>
@@ -584,13 +624,13 @@ body.dark aside .current.selected {
584
624
  <button class='btn' data-filepath="<%=item.filepath%>">
585
625
  <i class="fa-solid fa-folder-open"></i> Open</button>
586
626
  </button>
587
- <button class='btn copy-menu' data-src="<%=item.browser_url%>/dev">
627
+ <button class='btn copy-menu'>
588
628
  <i class='fa-solid fa-copy'></i> Copy
589
629
  </button>
590
- <button class='btn move-menu' data-src="<%=item.browser_url%>/dev">
630
+ <button class='btn move-menu'>
591
631
  <i class="fa-solid fa-right-to-bracket"></i> Move
592
632
  </button>
593
- <button class='btn edit-menu' data-src="<%=item.browser_url%>/dev">
633
+ <button class='btn edit-menu'>
594
634
  <i class='fa-solid fa-pen-to-square'></i> Edit
595
635
  </button>
596
636
  <button class='btn del' data-src="<%=item.url%>">
@@ -630,7 +670,7 @@ body.dark aside .current.selected {
630
670
  <% } %>
631
671
  <% } else { %>
632
672
  <% items.forEach((item, index) => { %>
633
- <a data-description="<%=item.description%>" data-index="<%=index%>" data-name="<%=item.name%>" data-uri="<%=item.uri%>" class='line thick' href="<%=item.url%>">
673
+ <a target="<%=item.target || '_self'%>" data-description="<%=item.description%>" data-index="<%=index%>" data-name="<%=item.name%>" data-uri="<%=item.uri%>" class='line thick' href="<%=item.url%>">
634
674
  <h3>
635
675
  <% if (item.icon) { %>
636
676
  <i class="<%=item.icon%>"></i>
@@ -661,6 +701,27 @@ body.dark aside .current.selected {
661
701
  -->
662
702
  <% } %>
663
703
  </div>
704
+ <aside>
705
+ <div class='btn-tab'>
706
+ <a href="/init" class='btn'><i class="fa-solid fa-plus"></i><div class='caption'>Create</div></a>
707
+ <a class='btn' id='explore' href="/?mode=explore"><i class="fa-solid fa-globe"></i><div class='caption'>Discover</div></a>
708
+ </div>
709
+ <a href="/" class='tab selected'><i class='fas fa-laptop-code'></i><div class='caption'>This machine</div></a>
710
+ <a href="/network" class='tab'><i class="fa-solid fa-wifi"></i><div class='caption'>Local network</div></a>
711
+ <% if (list.length > 0) { %>
712
+ <% let brands = { win32: "windows", darwin: "apple", linux: "Linux" } %>
713
+ <% list.forEach(({ host, name, platform, processes }, index) => { %>
714
+ <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>
715
+ <% }) %>
716
+ <% } %>
717
+ <a href="/connect" class='tab'><i class="fa-solid fa-plug"></i><div class='caption'>Login</div></a>
718
+ <a class='tab' href="<%=portal%>" target="_blank"><i class="fa-solid fa-question"></i><div class='caption'>Help</div></a>
719
+ <a class='tab' id='genlog'><i class="fa-solid fa-laptop-code"></i><div class='caption'>Logs</div></a>
720
+ <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>
721
+ <a class='tab' href="/screenshots"><i class="fa-solid fa-camera"></i><div class='caption'>Screenshots</div></a>
722
+ <a class='tab' href="/tools"><i class="fa-solid fa-toolbox"></i><div class='caption'>Installed Tools</div></a>
723
+ <a class='tab' href="/?mode=settings"><i class="fa-solid fa-gear"></i><div class='caption'>Settings</div></a>
724
+ </aside>
664
725
  </main>
665
726
  <script>
666
727
  let paths = location.pathname.split("/").filter(x=>x)
@@ -963,7 +1024,6 @@ if (document.querySelector("form input[type=search]")) {
963
1024
  // return res.json()
964
1025
  // })
965
1026
  // if (res.launch_complete) {
966
- // debugger
967
1027
  // console.log("launched")
968
1028
  // clearInterval(interval)
969
1029
  // location.href = location.href
@@ -1434,5 +1494,6 @@ if (document.querySelector("#cloudflare")) {
1434
1494
  <% } %>
1435
1495
 
1436
1496
  </script>
1497
+ <script src="/opener.js"></script>
1437
1498
  </body>
1438
1499
  </html>
@@ -243,9 +243,9 @@ body.dark .open-menu, body.dark .browse {
243
243
  <h1>
244
244
  <% if (ishome) { %>
245
245
  <a class='home' href="/"><img class='icon' src="/pinokio-black.png"></a>
246
- <button class='btn2' id='back'><div><i class="fa-solid fa-chevron-left"></i></div><div>Prev</div></button>
247
- <button class='btn2' id='forward'><div><i class="fa-solid fa-chevron-right"></i></div><div>Next</div></button>
248
- <button class='btn2' id='refresh-page'><div><i class="fa-solid fa-rotate-right"></i></div><div>Refresh</div></button>
246
+ <button class='btn2' id='back'><div><i class="fa-solid fa-chevron-left"></i></div></button>
247
+ <button class='btn2' id='forward'><div><i class="fa-solid fa-chevron-right"></i></div></button>
248
+ <button class='btn2' id='refresh-page'><div><i class="fa-solid fa-rotate-right"></i></div></button>
249
249
  <div class='url-bar'>
250
250
  <% if (current_urls.https) { %>
251
251
  <a class='https-url' target="_blank" href="<%=current_urls.https%>"><i class="fa-solid fa-square-arrow-up-right"></i> <%=current_urls.https%></a>
@@ -255,7 +255,6 @@ body.dark .open-menu, body.dark .browse {
255
255
  <% } %>
256
256
  </div>
257
257
  <a href="/network" class='btn2'><div><i class="fa-solid fa-wifi"></i></div><div>Network</div></a>
258
- <a href="/connect" class='btn2'><div><i class="fa-solid fa-circle-user"></i></div><div>Connect</div></a>
259
258
  <!--
260
259
  <button id='newfolder' class='btn2'><div><i class="fa-solid fa-folder-plus"></i></div><div>New Folder</div></button>
261
260
  -->