@saluzi/saluzi-edu 0.1.76 → 0.1.78
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/dist/cli.js +175 -62
- package/dist/parade/web/cube.js +4 -6
- package/dist/parade/web/index.html +33 -21
- package/package.json +1 -1
package/dist/parade/web/cube.js
CHANGED
|
@@ -201,20 +201,17 @@ function buildSessionRow(s, kind) {
|
|
|
201
201
|
} else {
|
|
202
202
|
text.textContent = promptText || '(running)'
|
|
203
203
|
}
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
// Jump-to-terminal icon — appears on hover, sends focus request via WS
|
|
204
|
+
// Jump-to-terminal dot — placed at left indicator, morphs into ▸ on hover
|
|
207
205
|
var jump = document.createElement('span')
|
|
208
206
|
jump.className = 'session-jump'
|
|
209
|
-
jump.textContent = '\u25B8' // ▸
|
|
210
|
-
jump.title = 'Jump to terminal'
|
|
211
207
|
jump.addEventListener('click', function (e) {
|
|
212
208
|
e.stopPropagation()
|
|
213
209
|
if (ws && ws.readyState === WebSocket.OPEN) {
|
|
214
210
|
ws.send(JSON.stringify({ type: 'focus', pid: s.pid }))
|
|
215
211
|
}
|
|
216
212
|
})
|
|
217
|
-
row.appendChild(
|
|
213
|
+
row.appendChild(text)
|
|
214
|
+
row.insertBefore(jump, row.firstChild)
|
|
218
215
|
|
|
219
216
|
return row
|
|
220
217
|
}
|
|
@@ -244,6 +241,7 @@ if (window.parade && typeof window.parade.startDrag === 'function') {
|
|
|
244
241
|
if (e.button !== 0) return // left button only
|
|
245
242
|
if (e.target.closest('#ctx-menu')) return // don't drag from menu
|
|
246
243
|
if (e.target.closest('#close-btn')) return // don't drag from close btn
|
|
244
|
+
if (e.target.closest('.session-jump')) return // don't drag from jump dot
|
|
247
245
|
var cornerEl = e.target.closest('[data-corner]')
|
|
248
246
|
if (cornerEl && typeof window.parade.startResize === 'function') {
|
|
249
247
|
window.parade.startResize(cornerEl.dataset.corner)
|
|
@@ -127,7 +127,7 @@
|
|
|
127
127
|
font-size: 10.5px;
|
|
128
128
|
line-height: 1.35;
|
|
129
129
|
color: var(--text-dim);
|
|
130
|
-
padding: 2px 0 2px
|
|
130
|
+
padding: 2px 0 2px 14px;
|
|
131
131
|
position: relative;
|
|
132
132
|
font-variant-numeric: tabular-nums;
|
|
133
133
|
display: flex;
|
|
@@ -140,25 +140,51 @@
|
|
|
140
140
|
white-space: nowrap;
|
|
141
141
|
min-width: 0;
|
|
142
142
|
}
|
|
143
|
-
.session-
|
|
144
|
-
content: '';
|
|
143
|
+
.session-jump {
|
|
145
144
|
position: absolute;
|
|
146
145
|
left: 0; top: 50%;
|
|
147
146
|
transform: translateY(-50%);
|
|
147
|
+
width: 12px; height: 12px;
|
|
148
|
+
cursor: pointer;
|
|
149
|
+
display: flex;
|
|
150
|
+
align-items: center;
|
|
151
|
+
justify-content: center;
|
|
152
|
+
color: transparent;
|
|
153
|
+
font-size: 0;
|
|
154
|
+
transition: all 0.15s ease;
|
|
155
|
+
}
|
|
156
|
+
.session-jump::before {
|
|
157
|
+
content: '';
|
|
148
158
|
width: 4px; height: 4px;
|
|
149
159
|
border-radius: 50%;
|
|
150
160
|
background: var(--purple);
|
|
161
|
+
transition: all 0.15s ease;
|
|
151
162
|
}
|
|
152
|
-
.session-
|
|
153
|
-
|
|
163
|
+
.session-jump:hover {
|
|
164
|
+
color: var(--purple-soft);
|
|
165
|
+
font-size: 12px;
|
|
166
|
+
left: -3px;
|
|
167
|
+
}
|
|
168
|
+
.session-jump:hover::before {
|
|
169
|
+
content: '\25B8';
|
|
170
|
+
width: auto; height: auto;
|
|
171
|
+
border-radius: 0;
|
|
172
|
+
background: none;
|
|
173
|
+
color: inherit;
|
|
174
|
+
font-size: inherit;
|
|
175
|
+
}
|
|
176
|
+
.session-row.blocked .session-jump::before { background: var(--amber); }
|
|
177
|
+
.session-row.blocked .session-jump:hover { color: #c9a96a; }
|
|
178
|
+
.session-row.idle .session-jump::before { background: var(--text-faint); opacity: 0.5; }
|
|
179
|
+
.session-row.idle .session-jump:hover { color: var(--purple-soft); opacity: 1; }
|
|
180
|
+
.session-row.idle .session-jump:hover::before { opacity: 1; }
|
|
154
181
|
.session-row.blocked { color: #c9a96a; }
|
|
155
|
-
.session-row.idle::before { background: var(--text-faint); opacity: 0.5; }
|
|
156
182
|
.session-row.idle { color: var(--text-faint); font-style: italic; }
|
|
157
183
|
.session-empty {
|
|
158
184
|
font-size: 10px;
|
|
159
185
|
color: var(--text-faint);
|
|
160
186
|
font-style: italic;
|
|
161
|
-
padding-left:
|
|
187
|
+
padding-left: 14px;
|
|
162
188
|
}
|
|
163
189
|
|
|
164
190
|
#more-line {
|
|
@@ -251,20 +277,6 @@
|
|
|
251
277
|
transform: scale(1.15);
|
|
252
278
|
}
|
|
253
279
|
|
|
254
|
-
/* ---- Session jump icon ---- */
|
|
255
|
-
.session-jump {
|
|
256
|
-
display: inline-block;
|
|
257
|
-
margin-left: auto;
|
|
258
|
-
padding-left: 4px;
|
|
259
|
-
cursor: pointer;
|
|
260
|
-
opacity: 0;
|
|
261
|
-
color: var(--purple-soft);
|
|
262
|
-
font-size: 9px;
|
|
263
|
-
transition: opacity 0.15s;
|
|
264
|
-
flex-shrink: 0;
|
|
265
|
-
}
|
|
266
|
-
.session-row:hover .session-jump { opacity: 0.7; }
|
|
267
|
-
.session-row:hover .session-jump:hover { opacity: 1; }
|
|
268
280
|
</style>
|
|
269
281
|
</head>
|
|
270
282
|
<body>
|