pinokiod 7.5.45 → 7.5.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/server/views/app.ejs +28 -3
- package/server/views/download.ejs +0 -23
- package/test/launch-settings-ui.test.js +27 -0
package/package.json
CHANGED
package/server/views/app.ejs
CHANGED
|
@@ -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:
|
|
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
|
-
|
|
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
|
|
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;
|
|
@@ -122,30 +122,7 @@ body.frozen {
|
|
|
122
122
|
<header class='grabbable'>
|
|
123
123
|
<h1>
|
|
124
124
|
<a class='home' href="/home"><img class='icon' src="/pinokio-black.png"></a>
|
|
125
|
-
<button class='btn2' id='minimize-header' data-tippy-content="fullscreen" title='fullscreen'>
|
|
126
|
-
<div><i class="fa-solid fa-expand"></i></div>
|
|
127
|
-
</button>
|
|
128
|
-
<a class='btn2 pinokio-explore-nav-button' href="/home?mode=explore" data-pinokio-explore-nav="true" data-tippy-content="Explore" title="Explore" aria-label="Explore">
|
|
129
|
-
<div><i class="fa-solid fa-globe" aria-hidden="true"></i></div>
|
|
130
|
-
</a>
|
|
131
|
-
<button class='btn2' id='back' data-tippy-content="back"><div><i class="fa-solid fa-chevron-left"></i></div></button>
|
|
132
|
-
<button class='btn2' id='forward' data-tippy-content="forward"><div><i class="fa-solid fa-chevron-right"></i></div></button>
|
|
133
|
-
<button class='btn2' id='refresh-page' data-tippy-content="refresh"><div><i class="fa-solid fa-rotate-right"></i></div></button>
|
|
134
|
-
<button class='btn2' id='screenshot' data-tippy-content="screen capture"><i class="fa-solid fa-camera"></i></button>
|
|
135
|
-
<button class='btn2' id='inspector' data-tippy-content="X-ray mode"><i class="fa-solid fa-eye"></i></button>
|
|
136
125
|
<div class='flexible'></div>
|
|
137
|
-
<a class='btn2' href="/columns" data-tippy-content="split into 2 columns">
|
|
138
|
-
<div><i class="fa-solid fa-table-columns"></i></div>
|
|
139
|
-
</a>
|
|
140
|
-
<a class='btn2' href="/rows" data-tippy-content="split into 2 rows">
|
|
141
|
-
<div><i class="fa-solid fa-table-columns fa-rotate-270"></i></div>
|
|
142
|
-
</a>
|
|
143
|
-
<button class='btn2' id='new-window' data-tippy-content="open a new window" title='open a new window' data-agent="<%=agent%>">
|
|
144
|
-
<div><i class="fa-solid fa-plus"></i></div>
|
|
145
|
-
</button>
|
|
146
|
-
<button class='btn2 hidden' id='close-window' data-tippy-content='close this section'>
|
|
147
|
-
<div><i class="fa-solid fa-xmark"></i></div>
|
|
148
|
-
</button>
|
|
149
126
|
</h1>
|
|
150
127
|
</header>
|
|
151
128
|
<% if (requirements_pending) { %>
|
|
@@ -636,6 +636,33 @@ test("navbar URL picker is hidden without removing URL dropdown behavior", async
|
|
|
636
636
|
assert.match(script, /showMobileModal/)
|
|
637
637
|
})
|
|
638
638
|
|
|
639
|
+
test("app navbar stays on one line when app identity and Home Server controls are present", async () => {
|
|
640
|
+
const appView = await fs.readFile(path.resolve(root, "server/views/app.ejs"), "utf8")
|
|
641
|
+
|
|
642
|
+
assert.match(appView, /body\.app-page > header\.navheader h1\s*\{[\s\S]*box-sizing:\s*border-box;[\s\S]*flex-wrap:\s*nowrap;/)
|
|
643
|
+
assert.match(appView, /body\.app-page > header\.navheader h1 > \.home,[\s\S]*body\.app-page > header\.navheader h1 > \.home-server-popover\s*\{[\s\S]*flex:\s*0 0 auto;/)
|
|
644
|
+
assert.match(appView, /body\.app-page header\.navheader h1 > \.flexible\s*\{[\s\S]*flex:\s*0 0 0;[\s\S]*margin-left:\s*auto;/)
|
|
645
|
+
assert.match(appView, /\.app-header-identity\s*\{[\s\S]*flex:\s*1 1 auto;[\s\S]*max-width:\s*none;/)
|
|
646
|
+
assert.doesNotMatch(appView, /nav-action-label\s*\{[^}]*display:\s*none;/)
|
|
647
|
+
assert.match(appView, /@media only screen and \(max-width: 1180px\)\s*\{[\s\S]*\.resource-chip--vram[\s\S]*display:\s*none !important;/)
|
|
648
|
+
})
|
|
649
|
+
|
|
650
|
+
test("download page header does not show browser chrome controls", async () => {
|
|
651
|
+
const downloadView = await fs.readFile(path.resolve(root, "server/views/download.ejs"), "utf8")
|
|
652
|
+
|
|
653
|
+
assert.match(downloadView, /<header class='grabbable'>[\s\S]*<a class='home' href="\/home">[\s\S]*<div class='flexible'><\/div>[\s\S]*<\/header>/)
|
|
654
|
+
assert.doesNotMatch(downloadView, /id=['"]minimize-header['"]/)
|
|
655
|
+
assert.doesNotMatch(downloadView, /pinokio-explore-nav-button/)
|
|
656
|
+
assert.doesNotMatch(downloadView, /id=['"]back['"]/)
|
|
657
|
+
assert.doesNotMatch(downloadView, /id=['"]forward['"]/)
|
|
658
|
+
assert.doesNotMatch(downloadView, /id=['"]refresh-page['"]/)
|
|
659
|
+
assert.doesNotMatch(downloadView, /id=['"]screenshot['"]/)
|
|
660
|
+
assert.doesNotMatch(downloadView, /id=['"]inspector['"]/)
|
|
661
|
+
assert.doesNotMatch(downloadView, /href="\/columns"/)
|
|
662
|
+
assert.doesNotMatch(downloadView, /href="\/rows"/)
|
|
663
|
+
assert.doesNotMatch(downloadView, /id=['"]new-window['"]/)
|
|
664
|
+
})
|
|
665
|
+
|
|
639
666
|
test("home server dropdown exposes router-discovered non-Pinokio routes separately", () => {
|
|
640
667
|
const server = Object.create(Server.prototype)
|
|
641
668
|
const routes = server.collectHomeServerRoutes({
|