pinokiod 7.5.44 → 7.5.46

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 (36) hide show
  1. package/package.json +1 -1
  2. package/server/index.js +403 -24
  3. package/server/public/style.css +0 -264
  4. package/server/public/urldropdown.css +7 -0
  5. package/server/views/app.ejs +30 -3
  6. package/server/views/app_search_test.ejs +2 -0
  7. package/server/views/connect/x.ejs +2 -0
  8. package/server/views/container.ejs +2 -0
  9. package/server/views/create.ejs +3 -0
  10. package/server/views/editor.ejs +3 -0
  11. package/server/views/env_editor.ejs +2 -0
  12. package/server/views/explore.ejs +2 -0
  13. package/server/views/general_editor.ejs +3 -0
  14. package/server/views/help.ejs +2 -0
  15. package/server/views/index.ejs +539 -2
  16. package/server/views/init/index.ejs +2 -0
  17. package/server/views/keys.ejs +2 -0
  18. package/server/views/mini.ejs +2 -0
  19. package/server/views/net.ejs +2 -0
  20. package/server/views/network.ejs +887 -94
  21. package/server/views/partials/app_navheader.ejs +2 -0
  22. package/server/views/partials/home_action_modal.ejs +22 -0
  23. package/server/views/partials/home_server_popover.ejs +21 -0
  24. package/server/views/partials/home_server_popover_assets.ejs +1262 -0
  25. package/server/views/partials/main_sidebar.ejs +1 -221
  26. package/server/views/pro.ejs +7 -0
  27. package/server/views/prototype/index.ejs +2 -0
  28. package/server/views/review.ejs +2 -0
  29. package/server/views/screenshots.ejs +2 -0
  30. package/server/views/settings.ejs +2 -0
  31. package/server/views/shell.ejs +7 -0
  32. package/server/views/task.ejs +2 -0
  33. package/server/views/terminal.ejs +2 -0
  34. package/server/views/terminals.ejs +2 -0
  35. package/test/launch-settings-ui.test.js +366 -0
  36. package/test/main-sidebar.test.js +26 -16
@@ -1553,270 +1553,6 @@ body.main-sidebar-page aside.main-sidebar .tab.selected .main-sidebar-action-ico
1553
1553
  -webkit-mask: url('/pinokio-mark.svg') center / 14px 14px no-repeat;
1554
1554
  mask: url('/pinokio-mark.svg') center / 14px 14px no-repeat;
1555
1555
  }
1556
- .main-sidebar-peer-dialog[hidden],
1557
- .main-sidebar-peer-dialog-panel[hidden] {
1558
- display: none !important;
1559
- }
1560
- .main-sidebar-peer-dialog {
1561
- position: fixed;
1562
- inset: 0;
1563
- z-index: 10000;
1564
- display: grid;
1565
- place-items: center;
1566
- box-sizing: border-box;
1567
- padding: 16px;
1568
- }
1569
- .main-sidebar-peer-dialog-backdrop {
1570
- position: absolute;
1571
- inset: 0;
1572
- width: 100%;
1573
- height: 100%;
1574
- appearance: none;
1575
- border: 0;
1576
- border-radius: 0;
1577
- background: rgba(15, 23, 42, 0.28);
1578
- cursor: default;
1579
- }
1580
- body.dark .main-sidebar-peer-dialog-backdrop {
1581
- background: rgba(0, 0, 0, 0.44);
1582
- }
1583
- .main-sidebar-peer-dialog-surface {
1584
- position: relative;
1585
- width: min(300px, calc(100vw - 32px));
1586
- max-height: calc(100vh - 32px);
1587
- box-sizing: border-box;
1588
- overflow: auto;
1589
- padding: 10px;
1590
- border: 1px solid var(--pinokio-sidebar-tabbar-border);
1591
- border-radius: 8px;
1592
- background: var(--pinokio-sidebar-tabbar-bg);
1593
- color: var(--pinokio-sidebar-tab-active-color);
1594
- box-shadow: 0 18px 45px rgba(15, 23, 42, 0.18);
1595
- }
1596
- body.dark .main-sidebar-peer-dialog-surface {
1597
- box-shadow: 0 18px 45px rgba(0, 0, 0, 0.42);
1598
- }
1599
- .main-sidebar-peer-dialog-header {
1600
- display: grid;
1601
- grid-template-columns: 30px minmax(0, 1fr) 28px;
1602
- align-items: center;
1603
- gap: 8px;
1604
- }
1605
- .main-sidebar-peer-dialog-icon,
1606
- .main-sidebar-peer-dialog-close,
1607
- .main-sidebar-peer-copy {
1608
- width: 28px;
1609
- height: 28px;
1610
- min-width: 28px;
1611
- display: inline-flex;
1612
- align-items: center;
1613
- justify-content: center;
1614
- box-sizing: border-box;
1615
- border-radius: 6px;
1616
- }
1617
- .main-sidebar-peer-dialog-icon {
1618
- background: var(--pinokio-sidebar-tab-active-bg);
1619
- color: var(--pinokio-sidebar-icon-active);
1620
- }
1621
- .main-sidebar-peer-dialog-heading {
1622
- min-width: 0;
1623
- }
1624
- .main-sidebar-peer-dialog-title {
1625
- color: var(--pinokio-sidebar-tab-active-color);
1626
- font-size: 13px;
1627
- font-weight: 650;
1628
- line-height: 1.2;
1629
- letter-spacing: 0;
1630
- }
1631
- .main-sidebar-peer-dialog-subtitle {
1632
- margin-top: 2px;
1633
- color: var(--pinokio-sidebar-action-muted);
1634
- font-size: 11px;
1635
- font-weight: 500;
1636
- line-height: 1.2;
1637
- letter-spacing: 0;
1638
- overflow: hidden;
1639
- text-overflow: ellipsis;
1640
- white-space: nowrap;
1641
- }
1642
- .main-sidebar-peer-dialog-close,
1643
- .main-sidebar-peer-copy {
1644
- appearance: none;
1645
- border: 0;
1646
- background: transparent;
1647
- color: var(--pinokio-sidebar-icon-muted);
1648
- cursor: pointer;
1649
- transition: background-color 120ms ease, color 120ms ease;
1650
- }
1651
- .main-sidebar-peer-dialog-close:hover,
1652
- .main-sidebar-peer-dialog-close:focus-visible,
1653
- .main-sidebar-peer-copy:hover,
1654
- .main-sidebar-peer-copy:focus-visible {
1655
- background: var(--pinokio-sidebar-tab-hover);
1656
- color: var(--pinokio-sidebar-icon-active);
1657
- outline: none;
1658
- }
1659
- .main-sidebar-peer-dialog-tabs {
1660
- display: flex;
1661
- gap: 2px;
1662
- margin-top: 10px;
1663
- padding: 2px;
1664
- border-radius: 7px;
1665
- background: var(--pinokio-sidebar-control-bg);
1666
- }
1667
- .main-sidebar-peer-dialog-tab {
1668
- flex: 1 1 0;
1669
- min-width: 0;
1670
- appearance: none;
1671
- border: 0;
1672
- border-radius: 5px;
1673
- padding: 5px 7px;
1674
- background: transparent;
1675
- color: var(--pinokio-sidebar-tab-muted);
1676
- font: inherit;
1677
- font-size: 11px;
1678
- font-weight: 600;
1679
- line-height: 1.2;
1680
- letter-spacing: 0;
1681
- overflow: hidden;
1682
- text-overflow: ellipsis;
1683
- white-space: nowrap;
1684
- cursor: pointer;
1685
- }
1686
- .main-sidebar-peer-dialog-tab:hover,
1687
- .main-sidebar-peer-dialog-tab:focus-visible,
1688
- .main-sidebar-peer-dialog-tab.is-active {
1689
- background: var(--pinokio-sidebar-control-active-bg);
1690
- color: var(--pinokio-sidebar-tab-active-color);
1691
- outline: none;
1692
- }
1693
- .main-sidebar-peer-dialog-body {
1694
- margin-top: 10px;
1695
- }
1696
- .main-sidebar-peer-dialog-panel {
1697
- display: grid;
1698
- justify-items: center;
1699
- gap: 8px;
1700
- }
1701
- .main-sidebar-peer-qr-link {
1702
- display: block;
1703
- box-sizing: border-box;
1704
- padding: 10px;
1705
- border-radius: 6px;
1706
- background: #ffffff;
1707
- line-height: 0;
1708
- }
1709
- .main-sidebar-peer-qr-image {
1710
- width: 174px;
1711
- height: 174px;
1712
- display: block;
1713
- image-rendering: pixelated;
1714
- }
1715
- .main-sidebar-peer-caption {
1716
- width: 100%;
1717
- color: var(--pinokio-sidebar-tab-active-color);
1718
- font-size: 12px;
1719
- font-weight: 650;
1720
- line-height: 1.25;
1721
- text-align: center;
1722
- letter-spacing: 0;
1723
- overflow-wrap: anywhere;
1724
- }
1725
- .main-sidebar-peer-local-note {
1726
- width: 100%;
1727
- color: var(--pinokio-sidebar-action-muted);
1728
- font-size: 10px;
1729
- font-weight: 500;
1730
- line-height: 1.35;
1731
- text-align: center;
1732
- letter-spacing: 0;
1733
- }
1734
- .main-sidebar-peer-url-row {
1735
- width: 100%;
1736
- display: grid;
1737
- grid-template-columns: minmax(0, 1fr) 28px;
1738
- align-items: center;
1739
- gap: 6px;
1740
- }
1741
- .main-sidebar-peer-url {
1742
- min-width: 0;
1743
- display: block;
1744
- padding: 6px 7px;
1745
- border-radius: 6px;
1746
- background: var(--pinokio-sidebar-control-bg);
1747
- color: var(--pinokio-sidebar-tab-muted);
1748
- font-size: 10px;
1749
- font-weight: 600;
1750
- line-height: 1.2;
1751
- letter-spacing: 0;
1752
- text-decoration: none;
1753
- overflow: hidden;
1754
- text-overflow: ellipsis;
1755
- white-space: nowrap;
1756
- }
1757
- .main-sidebar-peer-url:hover,
1758
- .main-sidebar-peer-url:focus-visible {
1759
- color: var(--pinokio-sidebar-tab-active-color);
1760
- outline: none;
1761
- }
1762
- .main-sidebar-peer-setup {
1763
- display: grid;
1764
- gap: 12px;
1765
- }
1766
- .main-sidebar-peer-setup-copy {
1767
- margin: 0;
1768
- color: var(--pinokio-sidebar-tab-active-color);
1769
- font-size: 12px;
1770
- font-weight: 500;
1771
- line-height: 1.45;
1772
- letter-spacing: 0;
1773
- }
1774
- .main-sidebar-peer-setup-actions {
1775
- display: flex;
1776
- flex-wrap: wrap;
1777
- gap: 8px;
1778
- }
1779
- .main-sidebar-peer-setup-primary,
1780
- .main-sidebar-peer-setup-secondary {
1781
- min-height: 32px;
1782
- display: inline-flex;
1783
- align-items: center;
1784
- justify-content: center;
1785
- box-sizing: border-box;
1786
- border-radius: 6px;
1787
- padding: 7px 10px;
1788
- font-size: 12px;
1789
- font-weight: 650;
1790
- line-height: 1.2;
1791
- letter-spacing: 0;
1792
- text-decoration: none;
1793
- cursor: pointer;
1794
- transition: background-color 120ms ease, border-color 120ms ease, color 120ms ease;
1795
- }
1796
- .main-sidebar-peer-setup-primary {
1797
- border: 1px solid var(--pinokio-sidebar-tab-active-color);
1798
- background: var(--pinokio-sidebar-tab-active-color);
1799
- color: var(--pinokio-sidebar-tabbar-bg);
1800
- }
1801
- .main-sidebar-peer-setup-primary:hover,
1802
- .main-sidebar-peer-setup-primary:focus-visible {
1803
- border-color: var(--pinokio-sidebar-icon-active);
1804
- background: var(--pinokio-sidebar-icon-active);
1805
- color: var(--pinokio-sidebar-tabbar-bg);
1806
- outline: none;
1807
- }
1808
- .main-sidebar-peer-setup-secondary {
1809
- appearance: none;
1810
- border: 1px solid var(--pinokio-sidebar-tabbar-border);
1811
- background: var(--pinokio-sidebar-control-bg);
1812
- color: var(--pinokio-sidebar-tab-active-color);
1813
- }
1814
- .main-sidebar-peer-setup-secondary:hover,
1815
- .main-sidebar-peer-setup-secondary:focus-visible {
1816
- background: var(--pinokio-sidebar-tab-hover);
1817
- color: var(--pinokio-sidebar-icon-active);
1818
- outline: none;
1819
- }
1820
1556
  @media only screen and (min-width: 601px) {
1821
1557
  body.main-sidebar-page {
1822
1558
  display: flex;
@@ -1568,6 +1568,13 @@ body.dark .urlbar input[type=url] {
1568
1568
  .mobile-link-button {
1569
1569
  display: none;
1570
1570
  }
1571
+ header.navheader .urlbar {
1572
+ pointer-events: none;
1573
+ visibility: hidden;
1574
+ }
1575
+ header.navheader #mobile-link-button {
1576
+ display: none !important;
1577
+ }
1571
1578
  .url-modal-overlay {
1572
1579
  background: rgba(15, 23, 42, 0.4);
1573
1580
  -webkit-backdrop-filter: blur(12px);
@@ -70,9 +70,22 @@ body.dark .app-header-identity {
70
70
  0 1px 2px rgba(2, 6, 23, 0.35);
71
71
  color: rgba(248, 250, 252, 0.94);
72
72
  }
73
+ body.app-page > header.navheader h1 {
74
+ width: 100%;
75
+ max-width: 100%;
76
+ min-width: 0;
77
+ box-sizing: border-box;
78
+ flex-wrap: nowrap;
79
+ }
80
+ body.app-page > header.navheader h1 > .home,
81
+ body.app-page > header.navheader h1 > .btn2,
82
+ body.app-page > header.navheader h1 > .sep,
83
+ body.app-page > header.navheader h1 > .home-server-popover {
84
+ flex: 0 0 auto;
85
+ }
73
86
  .app-header-info {
74
87
  position: relative;
75
- flex: 0 1 auto;
88
+ flex: 1 1 auto;
76
89
  min-width: 0;
77
90
  display: inline-flex;
78
91
  align-items: center;
@@ -87,7 +100,8 @@ body.dark .app-header-identity {
87
100
  align-items: center;
88
101
  gap: 8px;
89
102
  min-width: 0;
90
- max-width: min(260px, 32vw);
103
+ width: 100%;
104
+ max-width: none;
91
105
  height: 22px;
92
106
  padding: 0 4px;
93
107
  margin: 0 -4px;
@@ -266,6 +280,7 @@ body.dark .app-header-identity-separator {
266
280
  body.app-page header.navheader h1 > .flexible {
267
281
  flex: 0 0 0;
268
282
  min-width: 0;
283
+ margin-left: auto;
269
284
  }
270
285
  body.app-page header.navheader .nav-labeled-action {
271
286
  width: auto;
@@ -309,9 +324,17 @@ body.app-page header.navheader .nav-labeled-action:focus-visible {
309
324
  background: var(--pinokio-sidebar-tab-active-bg);
310
325
  color: var(--pinokio-sidebar-tab-active-color);
311
326
  }
327
+ @media only screen and (max-width: 1180px) {
328
+ body.app-page header.navheader .app-header-identity-separator,
329
+ body.app-page header.navheader .resource-chip--cpu,
330
+ body.app-page header.navheader .resource-chip--ram,
331
+ body.app-page header.navheader .resource-chip--vram {
332
+ display: none !important;
333
+ }
334
+ }
312
335
  .resource-usage {
313
336
  position: relative;
314
- flex: 0 0 auto;
337
+ flex: 0 1 auto;
315
338
  min-width: 0;
316
339
  display: inline-flex;
317
340
  align-items: center;
@@ -327,6 +350,8 @@ body.app-page header.navheader .nav-labeled-action:focus-visible {
327
350
  gap: 8px;
328
351
  height: 22px;
329
352
  min-width: 0;
353
+ max-width: 100%;
354
+ overflow: hidden;
330
355
  padding: 0 7px;
331
356
  margin: 0;
332
357
  border-radius: 999px;
@@ -8180,6 +8205,7 @@ body.dark .pinokio-custom-terminal-header {
8180
8205
  <span class="nav-action-label">Feed</span>
8181
8206
  </button>
8182
8207
  <% } %>
8208
+ <%- include('partials/home_server_popover') %>
8183
8209
  <a class='btn2' href="/columns" data-tippy-content="split into 2 columns">
8184
8210
  <div><i class="fa-solid fa-table-columns"></i></div>
8185
8211
  </a>
@@ -8194,6 +8220,7 @@ body.dark .pinokio-custom-terminal-header {
8194
8220
  </button>
8195
8221
  </h1>
8196
8222
  </header>
8223
+ <%- include('partials/home_server_popover_assets') %>
8197
8224
  <div class='appcanvas vertical <%=type === "browse" ? "dev-workspace" : ""%>' data-page-error="<%= error ? '1' : '0' %>">
8198
8225
  <% if (type !== 'files') { %>
8199
8226
  <button type='button' class='app-sidebar-peek-trigger' data-app-sidebar-peek-trigger aria-label='Show app navigation' aria-controls='app-sidebar' aria-expanded='false'></button>
@@ -127,6 +127,7 @@ document.addEventListener('DOMContentLoaded', function() {
127
127
  <div class="url-dropdown" id="url-dropdown" style="display: none;"></div>
128
128
  </div>
129
129
  </form>
130
+ <%- include('partials/home_server_popover') %>
130
131
  <a class="btn2" href="/columns" data-tippy-content="split into 2 columns">
131
132
  <div><i class="fa-solid fa-table-columns"></i></div>
132
133
  </a>
@@ -141,6 +142,7 @@ document.addEventListener('DOMContentLoaded', function() {
141
142
  </button>
142
143
  </h1>
143
144
  </header>
145
+ <%- include('partials/home_server_popover_assets') %>
144
146
  <main>
145
147
  <div class="search-shell">
146
148
  <div class="search-card">
@@ -206,6 +206,7 @@ pre {
206
206
  <button class='btn2' id='screenshot' data-tippy-content="screen capture"><i class="fa-solid fa-camera"></i></button>
207
207
  <button class='btn2' id='inspector' data-tippy-content="X-ray mode"><i class="fa-solid fa-eye"></i></button>
208
208
  <div class='flexible'></div>
209
+ <%- include('../partials/home_server_popover') %>
209
210
  <a class='btn2' href="/columns" data-tippy-content="split into 2 columns">
210
211
  <div><i class="fa-solid fa-table-columns"></i></div>
211
212
  </a>
@@ -221,6 +222,7 @@ pre {
221
222
  </button>
222
223
  </h1>
223
224
  </header>
225
+ <%- include('../partials/home_server_popover_assets') %>
224
226
  <main>
225
227
  <div class='head'>
226
228
  <h3><i class="fa-brands fa-x-twitter"></i><br><br>Connect with X.com</h3>
@@ -348,6 +348,7 @@ iframe {
348
348
  <div class='url-dropdown' id='url-dropdown'></div>
349
349
  </div>
350
350
  </form>
351
+ <%- include('partials/home_server_popover') %>
351
352
  <a class='btn2' href="/columns" data-tippy-content="split into 2 columns">
352
353
  <div><i class="fa-solid fa-table-columns"></i></div>
353
354
  </a>
@@ -362,6 +363,7 @@ iframe {
362
363
  </button>
363
364
  </h1>
364
365
  </header>
366
+ <%- include('partials/home_server_popover_assets') %>
365
367
  <iframe class='mainframe' src="<%=src%>" allow="fullscreen *;" allowfullscreen></iframe>
366
368
  <script src="/urldropdown.js"></script>
367
369
  <script>
@@ -20,8 +20,11 @@
20
20
  <header class="navheader grabbable">
21
21
  <h1>
22
22
  <a class="home" href="/home"><img class="icon" src="/pinokio-black.png" /></a>
23
+ <div class="flexible"></div>
24
+ <%- include('partials/home_server_popover') %>
23
25
  </h1>
24
26
  </header>
27
+ <%- include('partials/home_server_popover_assets') %>
25
28
  <main>
26
29
  <div class="container create-page">
27
30
  <div id="create-page-root" class="create-page-root" aria-live="polite"></div>
@@ -1007,6 +1007,8 @@ const reloadMemory = async () => {
1007
1007
  <a class='path' href="<%=path.path%>"><%-path.name%></a>
1008
1008
  <% } %>
1009
1009
  <% }) %>
1010
+ <div class='flexible'></div>
1011
+ <%- include('partials/home_server_popover') %>
1010
1012
  </h1>
1011
1013
  <% if (false) { %>
1012
1014
  <a class='gitremote' data-filepath="<%=filepath%>"><%=filepath%></a>
@@ -1032,6 +1034,7 @@ const reloadMemory = async () => {
1032
1034
  </div>
1033
1035
  <% } %>
1034
1036
  </header>
1037
+ <%- include('partials/home_server_popover_assets') %>
1035
1038
  <% if (requirements_pending) { %>
1036
1039
  <div class='requirements'>
1037
1040
  <div class='content'>
@@ -524,6 +524,7 @@ document.addEventListener("DOMContentLoaded", async () => {
524
524
  <a class='home-button home' href="/home"><i class='fa-solid fa-home'></i></a>
525
525
  <% } %>
526
526
  <div class='flexible'></div>
527
+ <%- include('partials/home_server_popover') %>
527
528
  <div class='nav-btns'>
528
529
  <a class='btn' href="<%=editorpath%>"><i class="fa-solid fa-pen-to-square"></i> Edit file</a>
529
530
  <button class='btn' id='open-fs' data-filepath="<%=filepath%>"><i class="fa-solid fa-eye"></i> Open in File Explorer</button>
@@ -533,6 +534,7 @@ document.addEventListener("DOMContentLoaded", async () => {
533
534
  </div>
534
535
  </h1>
535
536
  </header>
537
+ <%- include('partials/home_server_popover_assets') %>
536
538
  <% } %>
537
539
  <div id='editor' class='<%=init ? "hidden" : ""%>'>
538
540
  <% items.forEach((item) => { %>
@@ -159,6 +159,7 @@ body.dark .explore-url {
159
159
  <button class='btn2' id='screenshot' data-tippy-content="screen capture"><i class="fa-solid fa-camera"></i></button>
160
160
  <button class='btn2' id='inspector' data-tippy-content="X-ray mode"><i class="fa-solid fa-eye"></i></button>
161
161
  <input id="explore-url" class="explore-url" type="url" readonly spellcheck="false" value="">
162
+ <%- include('partials/home_server_popover') %>
162
163
  <a class='btn2' href="/columns" data-tippy-content="split into 2 columns">
163
164
  <div><i class="fa-solid fa-table-columns"></i></div>
164
165
  </a>
@@ -173,6 +174,7 @@ body.dark .explore-url {
173
174
  </button>
174
175
  </h1>
175
176
  </header>
177
+ <%- include('partials/home_server_popover_assets') %>
176
178
  <main>
177
179
  <% if (theme === "dark") { %>
178
180
  <iframe name="<%=schema%>" src="<%=discover_dark%>" <%=agent === "electron" ? "no-referrer" : ""%> allow="fullscreen *;" allowfullscreen></iframe>
@@ -190,6 +190,8 @@ document.addEventListener("DOMContentLoaded", async () => {
190
190
  <h1>
191
191
  <a class='home' href="/home"><img class='icon' src="/pinokio-black.png"></a>
192
192
  <%=filepath%>
193
+ <div class='flexible'></div>
194
+ <%- include('partials/home_server_popover') %>
193
195
  </h1>
194
196
  <div class='runner'>
195
197
  <div id='save' class='btn disabled'>
@@ -198,6 +200,7 @@ document.addEventListener("DOMContentLoaded", async () => {
198
200
  <button class='btn' id='open-fs' data-filepath="<%=filepath%>"><i class="fa-solid fa-eye"></i> Open in File Explorer</button>
199
201
  </div>
200
202
  </header>
203
+ <%- include('partials/home_server_popover_assets') %>
201
204
  <div class='containers'>
202
205
  <main>
203
206
  <div id='editor'><%=content%></div>
@@ -268,6 +268,7 @@ body.dark .item .tile .badge {
268
268
  <button class='btn2' id='screenshot' data-tippy-content="screen capture"><i class="fa-solid fa-camera"></i></button>
269
269
  <button class='btn2' id='inspector' data-tippy-content="X-ray mode"><i class="fa-solid fa-eye"></i></button>
270
270
  <div class='flexible'></div>
271
+ <%- include('partials/home_server_popover') %>
271
272
  <a class='btn2' href="/columns" data-tippy-content="split into 2 columns">
272
273
  <div><i class="fa-solid fa-table-columns"></i></div>
273
274
  </a>
@@ -282,6 +283,7 @@ body.dark .item .tile .badge {
282
283
  </button>
283
284
  </h1>
284
285
  </header>
286
+ <%- include('partials/home_server_popover_assets') %>
285
287
  <main>
286
288
  <div class='container'>
287
289
  <div class='titleview'>