pinokiod 7.3.8 → 7.3.10

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.
@@ -96,6 +96,48 @@ body.app-page header.navheader h1 > .flexible {
96
96
  flex: 0 0 0;
97
97
  min-width: 0;
98
98
  }
99
+ body.app-page header.navheader .nav-labeled-action {
100
+ width: auto;
101
+ min-width: 0;
102
+ height: 28px;
103
+ flex: 0 0 auto;
104
+ flex-direction: row;
105
+ align-items: center;
106
+ justify-content: center;
107
+ gap: 6px;
108
+ padding: 0 10px;
109
+ border-radius: 6px;
110
+ white-space: nowrap;
111
+ line-height: 1;
112
+ text-transform: none;
113
+ }
114
+ body.app-page header.navheader .nav-labeled-action i {
115
+ margin: 0;
116
+ padding: 0;
117
+ font-size: 13px;
118
+ line-height: 1;
119
+ }
120
+ body.app-page .ask-ai-brand-icon {
121
+ display: inline-flex;
122
+ width: 14px;
123
+ height: 14px;
124
+ flex: 0 0 14px;
125
+ background: currentColor;
126
+ -webkit-mask: url('/pinokio-mark.svg') center / contain no-repeat;
127
+ mask: url('/pinokio-mark.svg') center / contain no-repeat;
128
+ }
129
+ body.app-page header.navheader .nav-labeled-action .nav-action-label {
130
+ display: inline-block;
131
+ font-size: 12px;
132
+ line-height: 1;
133
+ font-weight: 500;
134
+ }
135
+ body.app-page header.navheader .nav-labeled-action.selected,
136
+ body.app-page header.navheader .nav-labeled-action:hover,
137
+ body.app-page header.navheader .nav-labeled-action:focus-visible {
138
+ background: var(--pinokio-sidebar-tab-active-bg);
139
+ color: var(--pinokio-sidebar-tab-active-color);
140
+ }
99
141
  .resource-usage {
100
142
  position: relative;
101
143
  flex: 0 0 auto;
@@ -1333,6 +1375,15 @@ body.dark .ask-ai-drawer-empty {
1333
1375
  body.dark .ask-ai-drawer-empty-title {
1334
1376
  color: rgba(248, 250, 252, 0.95);
1335
1377
  }
1378
+ .ask-ai-drawer-empty-subtitle {
1379
+ font-size: 12px;
1380
+ line-height: 1.4;
1381
+ margin-top: -6px;
1382
+ color: rgba(75, 85, 99, 0.78);
1383
+ }
1384
+ body.dark .ask-ai-drawer-empty-subtitle {
1385
+ color: rgba(209, 213, 219, 0.68);
1386
+ }
1336
1387
  .ask-ai-drawer-search {
1337
1388
  display: flex;
1338
1389
  align-items: center;
@@ -6233,7 +6284,8 @@ header.navheader h1 {
6233
6284
  color: #64748b;
6234
6285
  text-decoration: none;
6235
6286
  }
6236
- .mobile-bottom-nav__button i {
6287
+ .mobile-bottom-nav__button i,
6288
+ .mobile-bottom-nav__button .ask-ai-brand-icon {
6237
6289
  font-size: 14px;
6238
6290
  }
6239
6291
  .mobile-bottom-nav__button.selected {
@@ -6703,8 +6755,10 @@ header.navheader h1 {
6703
6755
  <button class='btn2' id='back' data-tippy-content="back"><div><i class="fa-solid fa-chevron-left"></i></div></button>
6704
6756
  <button class='btn2' id='forward' data-tippy-content="forward"><div><i class="fa-solid fa-chevron-right"></i></div></button>
6705
6757
  <button class='btn2' id='refresh-page' data-tippy-content="refresh"><div><i class="fa-solid fa-rotate-right"></i></div></button>
6758
+ <!-- Screen capture and X-ray mode are hidden for now.
6706
6759
  <button class='btn2' id='screenshot' data-tippy-content="screen capture"><i class="fa-solid fa-camera"></i></button>
6707
6760
  <button class='btn2' id='inspector' data-tippy-content="X-ray mode"><i class="fa-solid fa-eye"></i></button>
6761
+ -->
6708
6762
  <button class='btn2' id='menu-mobile' data-tippy-content="Tabs">
6709
6763
  <div><i class="fa-solid fa-list"></i></div>
6710
6764
  </button>
@@ -6748,6 +6802,36 @@ header.navheader h1 {
6748
6802
  </button>
6749
6803
  <% } %>
6750
6804
  <div class='flexible'></div>
6805
+ <% if (type === 'run') { %>
6806
+ <button
6807
+ type='button'
6808
+ id='ask-ai-tab'
6809
+ class="btn2 nav-labeled-action"
6810
+ data-static="ask-ai"
6811
+ data-workspace="<%=name%>"
6812
+ data-workspace-cwd="<%=path%>"
6813
+ data-ask-ai-trigger="true"
6814
+ data-tippy-content="Ask AI"
6815
+ aria-label="Ask AI"
6816
+ aria-expanded="false"
6817
+ aria-controls="ask-ai-drawer">
6818
+ <span class="ask-ai-brand-icon" aria-hidden="true"></span>
6819
+ <span class="nav-action-label">Ask AI</span>
6820
+ </button>
6821
+ <% } %>
6822
+ <% if (registryEnabled) { %>
6823
+ <button
6824
+ type='button'
6825
+ id='community-toggle'
6826
+ class="btn2 nav-labeled-action"
6827
+ data-tippy-content="Project feed"
6828
+ aria-label="Project feed"
6829
+ aria-expanded="false"
6830
+ aria-controls="community-drawer">
6831
+ <i class="fa-solid fa-rss" aria-hidden="true"></i>
6832
+ <span class="nav-action-label">Feed</span>
6833
+ </button>
6834
+ <% } %>
6751
6835
  <a class='btn2' href="/columns" data-tippy-content="split into 2 columns">
6752
6836
  <div><i class="fa-solid fa-table-columns"></i></div>
6753
6837
  </a>
@@ -6860,15 +6944,6 @@ header.navheader h1 {
6860
6944
  <% if (type === 'browse') { %>
6861
6945
  <%- include('./partials/fs_status') %>
6862
6946
  <% } %>
6863
- <% if (type === 'run') { %>
6864
- <button type='button' id='ask-ai-tab' class="btn header-item" data-static="ask-ai" data-workspace="<%=name%>" data-workspace-cwd="<%=path%>" data-ask-ai-trigger="true" data-tippy-content="Ask AI">
6865
- <div class='tab'>
6866
- <span class="menu-action-leading-icon ask-ai-brand-icon" aria-hidden="true"></span>
6867
- <div class='display'>Ask AI</div>
6868
- <div class='flexible'></div>
6869
- </div>
6870
- </button>
6871
- <% } %>
6872
6947
  <button type='button' id='logs-toggle' class="btn header-item" data-tippy-content="logs" aria-expanded="false" aria-controls="app-logs-drawer">
6873
6948
  <div class='tab'>
6874
6949
  <i class="fa-solid fa-laptop-code menu-action-leading-icon"></i>
@@ -6877,15 +6952,6 @@ header.navheader h1 {
6877
6952
  <span class='logs-new-badge hidden' id='logs-new-badge'>New</span>
6878
6953
  </div>
6879
6954
  </button>
6880
- <% if (registryEnabled) { %>
6881
- <button type='button' id='community-toggle' class="btn header-item" data-tippy-content="community">
6882
- <div class='tab'>
6883
- <i class="fa-solid fa-globe menu-action-leading-icon"></i>
6884
- <div class='display'>Community</div>
6885
- <div class='flexible'></div>
6886
- </div>
6887
- </button>
6888
- <% } %>
6889
6955
  <button type='button' id='sidebar-open-explorer' class="btn header-item" data-filepath="<%=path%>" data-tippy-content="Open in File Explorer">
6890
6956
  <div class='tab'>
6891
6957
  <i class="fa-solid fa-folder-open menu-action-leading-icon"></i>
@@ -6896,20 +6962,20 @@ header.navheader h1 {
6896
6962
  <% if (typeof autolaunch_app !== 'undefined' && autolaunch_app) { %>
6897
6963
  <div class="app-autolaunch" data-app-autolaunch data-app-id="<%=name%>">
6898
6964
  <button type="button" class="app-autolaunch-row" data-app-autolaunch-button data-enabled="<%= autolaunch_app.autolaunch_enabled ? 'true' : 'false' %>" aria-haspopup="dialog" aria-expanded="false">
6899
- <span class="app-autolaunch-label"><i class="fa-solid fa-power-off"></i><span>Auto</span></span>
6965
+ <span class="app-autolaunch-label"><i class="fa-solid fa-power-off"></i><span>Autolaunch</span></span>
6900
6966
  <span class="app-autolaunch-spacer" aria-hidden="true"></span>
6901
6967
  <span class="app-autolaunch-status" data-app-autolaunch-status><%= autolaunch_app.autolaunch_enabled ? 'ON' : 'OFF' %></span>
6902
6968
  <i class="fa-solid fa-angle-down app-autolaunch-chevron" aria-hidden="true"></i>
6903
6969
  </button>
6904
- <div class="app-autolaunch-modal hidden" data-app-autolaunch-modal role="dialog" aria-modal="true" aria-label="Auto launch">
6970
+ <div class="app-autolaunch-modal hidden" data-app-autolaunch-modal role="dialog" aria-modal="true" aria-label="Autolaunch">
6905
6971
  <div class="app-autolaunch-panel" data-app-autolaunch-panel>
6906
6972
  <div class="app-autolaunch-modal-head">
6907
6973
  <div>
6908
- <div class="app-autolaunch-title">Auto launch</div>
6974
+ <div class="app-autolaunch-title">Autolaunch</div>
6909
6975
  <div class="app-autolaunch-note">Run this app when Pinokio starts.</div>
6910
6976
  </div>
6911
6977
  <div class="app-autolaunch-modal-actions">
6912
- <button type="button" class="app-autolaunch-switch" role="switch" aria-checked="<%= autolaunch_app.autolaunch_enabled ? 'true' : 'false' %>" data-app-autolaunch-switch aria-label="Auto launch" title="Auto launch is <%= autolaunch_app.autolaunch_enabled ? 'on' : 'off' %>">
6978
+ <button type="button" class="app-autolaunch-switch" role="switch" aria-checked="<%= autolaunch_app.autolaunch_enabled ? 'true' : 'false' %>" data-app-autolaunch-switch aria-label="Autolaunch" title="Autolaunch is <%= autolaunch_app.autolaunch_enabled ? 'on' : 'off' %>">
6913
6979
  <span class="app-autolaunch-switch-label" data-app-autolaunch-switch-label><%= autolaunch_app.autolaunch_enabled ? 'ON' : 'OFF' %></span>
6914
6980
  <span class="app-autolaunch-switch-thumb" aria-hidden="true"></span>
6915
6981
  </button>
@@ -7012,7 +7078,7 @@ header.navheader h1 {
7012
7078
  <div class='ask-ai-drawer-inner'>
7013
7079
  <div class='ask-ai-drawer-bar'>
7014
7080
  <div class='ask-ai-drawer-title'>
7015
- <i class="fa-solid fa-robot" aria-hidden="true"></i>
7081
+ <span class="ask-ai-brand-icon" aria-hidden="true"></span>
7016
7082
  <span>Ask AI</span>
7017
7083
  </div>
7018
7084
  <div class='ask-ai-drawer-actions'>
@@ -7034,11 +7100,12 @@ header.navheader h1 {
7034
7100
  <div class='ask-ai-drawer-empty'>
7035
7101
  <div class='ask-ai-drawer-search'>
7036
7102
  <i class="fa-solid fa-magnifying-glass" aria-hidden="true"></i>
7037
- <input class='ask-ai-drawer-search-input' type='search' placeholder="Filter tools" autocomplete="off" spellcheck="false" aria-label="Filter Ask AI launch options">
7103
+ <input class='ask-ai-drawer-search-input' type='search' placeholder="Search shells and plugins" autocomplete="off" spellcheck="false" aria-label="Search shells and plugins">
7038
7104
  </div>
7039
- <div class='ask-ai-drawer-empty-title'>Pick a shell or plugin to launch</div>
7040
- <div class='ask-ai-drawer-picker-list' role="list" aria-label="Ask AI launch options"></div>
7041
- <div class='ask-ai-drawer-picker-status muted'>Use the Ask AI button to load launch options.</div>
7105
+ <div class='ask-ai-drawer-empty-title'>Ask an AI agent about this project</div>
7106
+ <div class='ask-ai-drawer-empty-subtitle'>Choose the shell or plugin the agent should use.</div>
7107
+ <div class='ask-ai-drawer-picker-list' role="list" aria-label="Ask AI shells and plugins"></div>
7108
+ <div class='ask-ai-drawer-picker-status muted'>Choose a shell or plugin to start an agent.</div>
7042
7109
  </div>
7043
7110
  <iframe class='ask-ai-frame hidden' title="Panel" allow="fullscreen *;" allowfullscreen></iframe>
7044
7111
  </div>
@@ -7122,9 +7189,9 @@ header.navheader h1 {
7122
7189
  <div class='community-drawer-inner'>
7123
7190
  <div class='community-drawer-bar'>
7124
7191
  <div class='community-drawer-title'>
7125
- <button type="button" class="community-drawer-home" data-tippy-content="Community home" aria-label="Community home">
7126
- <i class="fa-solid fa-globe"></i>
7127
- <span>Community</span>
7192
+ <button type="button" class="community-drawer-home" data-tippy-content="Project feed" aria-label="Project feed">
7193
+ <i class="fa-solid fa-rss"></i>
7194
+ <span>Feed</span>
7128
7195
  </button>
7129
7196
  <span class='community-drawer-status' data-state="offline" data-tippy-content="Offline" aria-label="Offline" role="img"></span>
7130
7197
  </div>
@@ -7135,7 +7202,7 @@ header.navheader h1 {
7135
7202
  <button type='button' class='btn2 community-drawer-forward' disabled data-tippy-content="Forward" aria-label="Forward">
7136
7203
  <i class="fa-solid fa-chevron-right"></i>
7137
7204
  </button>
7138
- <button type='button' class='btn2 community-drawer-refresh' disabled data-tippy-content="Refresh" aria-label="Refresh community">
7205
+ <button type='button' class='btn2 community-drawer-refresh' disabled data-tippy-content="Refresh" aria-label="Refresh feed">
7139
7206
  <i class="fa-solid fa-rotate-right"></i>
7140
7207
  </button>
7141
7208
  <button type='button' class='btn2 community-drawer-toggle' data-tippy-content="Connect to Pinokio Network" aria-label="Connect to Pinokio Network">
@@ -7144,15 +7211,15 @@ header.navheader h1 {
7144
7211
  <button type='button' class='btn2 community-drawer-expand' data-tippy-content="Expand panel" aria-label="Expand panel" aria-pressed="false">
7145
7212
  <i class="fa-solid fa-expand"></i>
7146
7213
  </button>
7147
- <button type='button' class='btn2 community-drawer-close' data-tippy-content="Close panel" aria-label="Close community panel">
7214
+ <button type='button' class='btn2 community-drawer-close' data-tippy-content="Close panel" aria-label="Close feed panel">
7148
7215
  <i class="fa-solid fa-xmark"></i>
7149
7216
  </button>
7150
7217
  </div>
7151
7218
  </div>
7152
7219
  <div class='community-drawer-location'>
7153
- <input class='community-drawer-location-input' type='text' value="" readonly aria-label="Community URL">
7220
+ <input class='community-drawer-location-input' type='text' value="" readonly aria-label="Feed URL">
7154
7221
  <div class='community-drawer-location-overlay' aria-hidden="true"></div>
7155
- <textarea class='community-drawer-location-textarea' rows="1" readonly aria-label="Community URL"></textarea>
7222
+ <textarea class='community-drawer-location-textarea' rows="1" readonly aria-label="Feed URL"></textarea>
7156
7223
  </div>
7157
7224
  <div class='community-drawer-body'>
7158
7225
  <div class='community-drawer-empty'>
@@ -7160,12 +7227,12 @@ header.navheader h1 {
7160
7227
  <div class='community-drawer-empty-icon'>
7161
7228
  <i class="fa-solid fa-plug-circle-xmark" aria-hidden="true"></i>
7162
7229
  </div>
7163
- <div class='community-drawer-empty-title'>Load Community</div>
7230
+ <div class='community-drawer-empty-title'>Load Feed</div>
7164
7231
  </div>
7165
7232
  <div class='community-drawer-empty-note muted'>Load https://pinokio.co in the panel (requires network)</div>
7166
7233
  <button type='button' class='btn community-drawer-connect'>Load</button>
7167
7234
  </div>
7168
- <iframe class='community-frame hidden' title="Community updates" allow="fullscreen *;" allowfullscreen></iframe>
7235
+ <iframe class='community-frame hidden' title="Project feed" allow="fullscreen *;" allowfullscreen></iframe>
7169
7236
  </div>
7170
7237
  </div>
7171
7238
  </aside>
@@ -7227,8 +7294,8 @@ header.navheader h1 {
7227
7294
  </div>
7228
7295
  </div>
7229
7296
  <% if (registryEnabled) { %>
7230
- <button type='button' class='btn2 mobile-bottom-nav__button mobile-nav-community' data-mobile-proxy="#community-mode-toggle" data-mobile-close-menu="true" aria-pressed="false" aria-label="Community">
7231
- <i class="fa-solid fa-globe"></i>
7297
+ <button type='button' class='btn2 mobile-bottom-nav__button mobile-nav-community' data-mobile-proxy="#community-mode-toggle" data-mobile-close-menu="true" aria-pressed="false" aria-label="Project feed">
7298
+ <i class="fa-solid fa-rss"></i>
7232
7299
  </button>
7233
7300
  <% } %>
7234
7301
  <button type='button' class='btn2 mobile-bottom-nav__button mobile-nav-logs' data-mobile-proxy="#logs-toggle" data-mobile-close-menu="true" aria-pressed="false" aria-label="Logs">
@@ -7236,7 +7303,7 @@ header.navheader h1 {
7236
7303
  </button>
7237
7304
  <% if (type === 'run') { %>
7238
7305
  <button type='button' class='btn2 mobile-bottom-nav__button mobile-nav-ask-ai' data-mobile-proxy="#ask-ai-tab" data-mobile-close-menu="true" aria-pressed="false" aria-label="Ask AI">
7239
- <i class="fa-solid fa-robot"></i>
7306
+ <span class="ask-ai-brand-icon" aria-hidden="true"></span>
7240
7307
  </button>
7241
7308
  <% } %>
7242
7309
  </nav>
@@ -15016,7 +15083,9 @@ document.addEventListener("DOMContentLoaded", () => {
15016
15083
  applyDrawerOpenState()
15017
15084
  if (askAiTrigger) {
15018
15085
  askAiTrigger.classList.remove("hidden")
15086
+ askAiTrigger.classList.toggle("selected", open)
15019
15087
  askAiTrigger.setAttribute("aria-hidden", "false")
15088
+ askAiTrigger.setAttribute("aria-expanded", open ? "true" : "false")
15020
15089
  }
15021
15090
  drawer.setAttribute("aria-hidden", open ? "false" : "true")
15022
15091
  if (resizer) {
@@ -15374,7 +15443,7 @@ document.addEventListener("DOMContentLoaded", () => {
15374
15443
  clearPickerList()
15375
15444
  const sourceTools = Array.isArray(tools) ? tools : []
15376
15445
  if (sourceTools.length === 0) {
15377
- setPickerStatus("No launch options available.")
15446
+ setPickerStatus("No shells or plugins available.")
15378
15447
  return
15379
15448
  }
15380
15449
  const normalizedQuery = normalizePickerQuery(query)
@@ -15382,7 +15451,7 @@ document.addEventListener("DOMContentLoaded", () => {
15382
15451
  ? sourceTools.filter((tool) => toolMatchesPickerQuery(tool, normalizedQuery))
15383
15452
  : sourceTools
15384
15453
  if (visibleTools.length === 0) {
15385
- setPickerStatus("No matches.")
15454
+ setPickerStatus("No matching shells or plugins.")
15386
15455
  return
15387
15456
  }
15388
15457
  const groups = new Map()
@@ -15424,7 +15493,7 @@ document.addEventListener("DOMContentLoaded", () => {
15424
15493
  }
15425
15494
  })
15426
15495
  if (!renderedCount) {
15427
- setPickerStatus("No launch options available.")
15496
+ setPickerStatus("No shells or plugins available.")
15428
15497
  return
15429
15498
  }
15430
15499
  setPickerStatus("")
@@ -15480,7 +15549,7 @@ document.addEventListener("DOMContentLoaded", () => {
15480
15549
  if (searchInput) {
15481
15550
  searchInput.value = ""
15482
15551
  }
15483
- setPickerStatus("Loading launch options...")
15552
+ setPickerStatus("Loading shells and plugins...")
15484
15553
  getAskAiTools(workspaceCwd).then((tools) => {
15485
15554
  if (requestId !== pickerRequestId) {
15486
15555
  return
@@ -15770,7 +15839,7 @@ document.addEventListener("DOMContentLoaded", () => {
15770
15839
  setLocation("")
15771
15840
  setActionState(false)
15772
15841
  setEmptyState(true)
15773
- setPickerStatus("Use the Ask AI button to load launch options.")
15842
+ setPickerStatus("Choose a shell or plugin to start an agent.")
15774
15843
  setOpen(false)
15775
15844
  window.PinokioAskAiDrawer = {
15776
15845
  openWithAgent,
@@ -16362,6 +16431,16 @@ document.addEventListener("DOMContentLoaded", () => {
16362
16431
  if (toggle) {
16363
16432
  toggle.addEventListener("click", (event) => {
16364
16433
  event.preventDefault()
16434
+ if (
16435
+ window.PinokioIsLogsPageSelected &&
16436
+ typeof window.PinokioIsLogsPageSelected === "function" &&
16437
+ window.PinokioIsLogsPageSelected() &&
16438
+ window.PinokioCloseLogsPage &&
16439
+ typeof window.PinokioCloseLogsPage === "function"
16440
+ ) {
16441
+ window.PinokioCloseLogsPage()
16442
+ return
16443
+ }
16365
16444
  if (window.PinokioOpenLogsPage && typeof window.PinokioOpenLogsPage === "function") {
16366
16445
  window.PinokioOpenLogsPage({ view: "latest" })
16367
16446
  return
@@ -16804,7 +16883,7 @@ document.addEventListener("DOMContentLoaded", () => {
16804
16883
  }
16805
16884
  if (homeBtn) {
16806
16885
  homeBtn.disabled = false
16807
- setTooltip(homeBtn, "Community home")
16886
+ setTooltip(homeBtn, "Project feed")
16808
16887
  }
16809
16888
  setNavDisabled(false)
16810
16889
  setToggleState(true)
@@ -509,9 +509,9 @@ aside .btn-tab .btn .caption {
509
509
  position: relative;
510
510
  align-items: center;
511
511
  gap: 5px;
512
- height: 30px;
513
- min-height: 30px;
514
- padding: 0 10px;
512
+ height: var(--home-filter-control-height);
513
+ min-height: var(--home-filter-control-height);
514
+ padding: 0 12px;
515
515
  border: 1px solid var(--home-sort-border);
516
516
  border-radius: 6px;
517
517
  background: var(--home-sort-bg);
@@ -581,9 +581,12 @@ aside .btn-tab .btn .caption {
581
581
  flex: 0 0 auto;
582
582
  width: 132px;
583
583
  min-width: 132px;
584
+ height: 100%;
584
585
  }
585
586
 
586
587
  .home-search-form .home-apps-sort .ts-wrapper.single .ts-control {
588
+ display: flex;
589
+ align-items: center;
587
590
  border: 0;
588
591
  outline: none;
589
592
  background: transparent;
@@ -595,6 +598,7 @@ aside .btn-tab .btn .caption {
595
598
  border-radius: 0;
596
599
  cursor: pointer;
597
600
  color: inherit;
601
+ height: 100%;
598
602
  }
599
603
 
600
604
  .home-search-form .home-apps-sort .ts-control > .item {
@@ -704,6 +708,7 @@ body.dark .home-search-form .home-apps-sort .ts-dropdown [data-selectable].optio
704
708
  color: var(--home-sort-option-hover-text);
705
709
  }
706
710
  .home-search-form {
711
+ --home-filter-control-height: 40px;
707
712
  align-items: center;
708
713
  gap: 8px;
709
714
  }
@@ -731,11 +736,11 @@ body.dark .home-search-form {
731
736
  border-bottom-color: rgba(148, 163, 184, 0.22);
732
737
  }
733
738
  .home-search-form input[type='search'].flexible {
734
- height: 30px;
735
- min-height: 30px;
739
+ height: var(--home-filter-control-height);
740
+ min-height: var(--home-filter-control-height);
736
741
  box-sizing: border-box;
737
- padding: 0 10px;
738
- border-radius: 5px;
742
+ padding: 0 12px;
743
+ border-radius: 6px;
739
744
  font-size: 12px;
740
745
  font-weight: 400;
741
746
  line-height: 1;
@@ -348,25 +348,6 @@ body.dark {
348
348
  [data-install-spinner-variant="binary-shuffle"] .install-status-grid-tile-4 {
349
349
  animation: pinokio-binary-shuffle-4 1.1s steps(1, end) infinite;
350
350
  }
351
- .install-loader-popup.swal2-popup.loader-popup {
352
- background: var(--install-status-bg) !important;
353
- color: var(--install-status-fg) !important;
354
- border: 1px solid var(--install-status-border) !important;
355
- border-radius: 999px !important;
356
- box-shadow: none !important;
357
- }
358
- .install-loader-dialog.loader-dialog {
359
- padding: 0 !important;
360
- }
361
- .install-loader-shell {
362
- display: inline-flex;
363
- align-items: center;
364
- gap: 10px;
365
- color: var(--install-status-fg);
366
- font-size: 13px;
367
- font-weight: 700;
368
- letter-spacing: 0.01em;
369
- }
370
351
  @keyframes pinokio-grid-shift-1 {
371
352
  0%, 100% { transform: translate(0, 0); }
372
353
  25% { transform: translate(11px, 0); }
@@ -641,13 +622,17 @@ const setInstallStatus = (html) => {
641
622
  }
642
623
  statusScreen.innerHTML = normalizeInstallStatusHtml(html)
643
624
  }
644
- const renderInstallLoader = (msg) => {
645
- return `
646
- <span class="install-loader-shell">
625
+ const setRestartStatus = () => {
626
+ applyInstallSpinnerVariant("corner-chase")
627
+ setInstallStatus(`
628
+ <div class="install-status-shell">
647
629
  ${INSTALL_STATUS_SPINNER_HTML}
648
- <span>${msg}</span>
649
- </span>
650
- `
630
+ <div class="install-status-copy">
631
+ <div class="install-status-title">Restarting Pinokio...</div>
632
+ <div class="install-status-detail">Applying the updated system tools. Pinokio will continue automatically.</div>
633
+ </div>
634
+ </div>
635
+ `)
651
636
  }
652
637
  const createTerm = async (_theme) => {
653
638
  //const theme = Object.assign({ }, xtermTheme.Terminal_Basic, {
@@ -844,36 +829,20 @@ document.addEventListener("DOMContentLoaded", async () => {
844
829
  }
845
830
  })
846
831
  })
847
- const LoadingDialog = {
848
- start: (msg) => {
849
- Swal.fire({
850
- html: renderInstallLoader(msg),
851
- customClass: {
852
- container: "loader-container",
853
- popup: "loader-popup install-loader-popup",
854
- htmlContainer: "loader-dialog install-loader-dialog",
855
- footer: "hidden",
856
- actions: "hidden"
857
- }
858
- });
859
- },
860
- end: () => {
861
- Swal.close()
862
- }
863
- }
864
- LoadingDialog.start("Restarting...")
832
+ setRestartStatus()
865
833
  fetch("/restart", {
866
834
  method: "post"
867
- }, () => {
835
+ }).catch((error) => {
836
+ console.warn("restart request ended early", error)
868
837
  })
869
- setInterval(async () => {
838
+ const restartPoll = setInterval(async () => {
870
839
  try {
871
840
  let res = await fetch("/bin_ready").then((res) => {
872
841
  return res.json()
873
842
  })
874
843
  if (res.success) {
875
844
  //location.href = location.href
876
- LoadingDialog.end()
845
+ clearInterval(restartPoll)
877
846
  location.href = document.querySelector("#callback").value
878
847
  }
879
848
  } catch (e) {
@@ -36,11 +36,9 @@
36
36
  width: 100%;
37
37
  box-sizing: border-box;
38
38
  background: var(--layout-dragger-bg);
39
- border-bottom: 1px solid var(--layout-dragger-border);
40
39
  }
41
40
  body.dark > #dragger {
42
41
  background: var(--layout-dragger-bg);
43
- border-bottom-color: var(--layout-dragger-border);
44
42
  }
45
43
 
46
44
  body[data-agent="electron"] {
@@ -53,6 +51,7 @@
53
51
 
54
52
  body.dark {
55
53
  --layout-background: #1b1c1d;
54
+ --layout-dragger-bg: var(--layout-background);
56
55
  --layout-gutter-bg: rgba(255, 255, 255, 0.04);
57
56
  --layout-dragger-border: rgba(255, 255, 255, 0.055);
58
57
  /*
@@ -200,7 +200,7 @@
200
200
  <% } %>
201
201
  </div>
202
202
  <% if (!logsEmbedded) { %>
203
- <%- include('partials/main_sidebar', { selected: 'logs' }) %>
203
+ <%- include('partials/main_sidebar', { selected: 'logs', showPeerAccess: false }) %>
204
204
  <% } %>
205
205
  </main>
206
206
  <script>
@@ -29,31 +29,31 @@
29
29
 
30
30
  <div class='main-sidebar-section' aria-label="Computer">
31
31
  <div class="main-sidebar-section-title">Computer</div>
32
- <a href="/home" class="tab <%= sidebarSelected === 'home' ? 'selected' : '' %>" data-tippy-content="This machine"><i class='fas fa-laptop-code'></i><div class='caption'>This machine</div></a>
33
- <a href="/network" class="tab <%= sidebarSelected === 'network' ? 'selected' : '' %>" data-tippy-content="Local network"><i class="fa-solid fa-wifi"></i><div class='caption'>Local network</div></a>
32
+ <a href="/home" class="tab <%= sidebarSelected === 'home' ? 'selected' : '' %>"><i class='fas fa-laptop-code'></i><div class='caption'>This machine</div></a>
33
+ <a href="/network" class="tab <%= sidebarSelected === 'network' ? 'selected' : '' %>"><i class="fa-solid fa-wifi"></i><div class='caption'>Local network</div></a>
34
34
  <% if (sidebarList.length > 0) { %>
35
35
  <% sidebarList.forEach(({ host, name, platform }) => { %>
36
36
  <% const selectedNet = sidebarSelectedNetName && String(name || "") === sidebarSelectedNetName; %>
37
- <a href="/net/<%=name%>" class="submenu tab <%= selectedNet ? 'selected' : '' %>" data-tippy-content="<%=name%> (<%=sidebarCurrentHost === host ? 'this machine' : host%>)"><i class="fa-brands fa-<%=brands[platform]%>"></i><div class='caption'><%=name%> (<%=sidebarCurrentHost === host ? 'this machine' : host%>)</div></a>
37
+ <a href="/net/<%=name%>" class="submenu tab <%= selectedNet ? 'selected' : '' %>"><i class="fa-brands fa-<%=brands[platform]%>"></i><div class='caption'><%=name%> (<%=sidebarCurrentHost === host ? 'this machine' : host%>)</div></a>
38
38
  <% }) %>
39
39
  <% } %>
40
40
  </div>
41
41
 
42
42
  <div class='main-sidebar-section' aria-label="Manage">
43
43
  <div class="main-sidebar-section-title">Manage</div>
44
- <a class="tab <%= sidebarSelected === 'checkpoints' ? 'selected' : '' %>" href="/checkpoints" data-tippy-content="Checkpoints"><i class="fa-solid fa-clock-rotate-left"></i><div class='caption'>Checkpoints</div></a>
45
- <a class="tab <%= sidebarSelected === 'tools' ? 'selected' : '' %>" href="/tools" data-tippy-content="Installed Tools"><i class="fa-solid fa-toolbox"></i><div class='caption'>Tools</div></a>
46
- <a class="tab <%= sidebarSelected === 'plugins' ? 'selected' : '' %>" href="/plugins" data-tippy-content="Plugins"><i class="fa-solid fa-plug-circle-bolt"></i><div class='caption'>Plugins</div></a>
47
- <a class="tab <%= sidebarSelected === 'tasks' ? 'selected' : '' %>" href="/tasks" data-tippy-content="Tasks"><i class="fa-solid fa-list-check"></i><div class='caption'>Tasks</div></a>
48
- <a class="tab <%= sidebarSelected === 'skills' ? 'selected' : '' %>" href="/skills" data-tippy-content="Skills"><i class="fa-solid fa-wand-magic-sparkles"></i><div class='caption'>Skills</div></a>
49
- <a class="tab <%= sidebarSelected === 'logs' ? 'selected' : '' %>" id='genlog' href="/logs" data-tippy-content="Logs"><i class="fa-solid fa-laptop-code"></i><div class='caption'>Logs</div></a>
44
+ <a class="tab <%= sidebarSelected === 'checkpoints' ? 'selected' : '' %>" href="/checkpoints"><i class="fa-solid fa-clock-rotate-left"></i><div class='caption'>Checkpoints</div></a>
45
+ <a class="tab <%= sidebarSelected === 'tools' ? 'selected' : '' %>" href="/tools"><i class="fa-solid fa-toolbox"></i><div class='caption'>Tools</div></a>
46
+ <a class="tab <%= sidebarSelected === 'plugins' ? 'selected' : '' %>" href="/plugins"><i class="fa-solid fa-plug-circle-bolt"></i><div class='caption'>Plugins</div></a>
47
+ <a class="tab <%= sidebarSelected === 'tasks' ? 'selected' : '' %>" href="/tasks"><i class="fa-solid fa-list-check"></i><div class='caption'>Tasks</div></a>
48
+ <a class="tab <%= sidebarSelected === 'skills' ? 'selected' : '' %>" href="/skills"><i class="fa-solid fa-wand-magic-sparkles"></i><div class='caption'>Skills</div></a>
49
+ <a class="tab <%= sidebarSelected === 'logs' ? 'selected' : '' %>" id='genlog' href="/logs"><i class="fa-solid fa-laptop-code"></i><div class='caption'>Logs</div></a>
50
50
  </div>
51
51
 
52
52
  <div class='main-sidebar-section' aria-label="Configure">
53
53
  <div class="main-sidebar-section-title">Configure</div>
54
- <a class="tab <%= sidebarSelected === 'autolaunch' ? 'selected' : '' %>" href="/autolaunch" data-tippy-content="Autolaunch"><i class="fa-solid fa-power-off"></i><div class='caption'>Autolaunch</div></a>
55
- <a href="/connect" class="tab <%= sidebarSelected === 'connect' ? 'selected' : '' %>" data-tippy-content="Login"><i class="fa-solid fa-plug"></i><div class='caption'>Login</div></a>
56
- <a class="tab <%= sidebarSelected === 'settings' ? 'selected' : '' %>" href="/home?mode=settings" data-tippy-content="Settings"><i class="fa-solid fa-gear"></i><div class='caption'>Settings</div></a>
54
+ <a class="tab <%= sidebarSelected === 'autolaunch' ? 'selected' : '' %>" href="/autolaunch"><i class="fa-solid fa-power-off"></i><div class='caption'>Autolaunch</div></a>
55
+ <a href="/connect" class="tab <%= sidebarSelected === 'connect' ? 'selected' : '' %>"><i class="fa-solid fa-plug"></i><div class='caption'>Login</div></a>
56
+ <a class="tab <%= sidebarSelected === 'settings' ? 'selected' : '' %>" href="/home?mode=settings"><i class="fa-solid fa-gear"></i><div class='caption'>Settings</div></a>
57
57
  </div>
58
58
  </nav>
59
59