coxpit 5.0.1 → 5.0.2
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/src/board.ts +9 -5
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "coxpit",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.2",
|
|
4
4
|
"description": "Self-hosted cockpit for running a fleet of AI coding agents across your own machines — parallel worktree runs, live board, compare & merge, web terminal, design capture.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
package/src/board.ts
CHANGED
|
@@ -58,7 +58,10 @@ export const BOARD_HTML = /* html */ `<!doctype html>
|
|
|
58
58
|
.mdot.on{background:var(--s-done)}
|
|
59
59
|
|
|
60
60
|
/* ── layout ─────────────────────────────── */
|
|
61
|
-
|
|
61
|
+
/* fixed viewport height so the rail stays put and each column scrolls on its own
|
|
62
|
+
(the board grew tall with many cards and dragged the rail's + New below the fold) */
|
|
63
|
+
.layout{display:grid;grid-template-columns:318px 1fr;height:calc(100vh - 55px);overflow:hidden}
|
|
64
|
+
.layout > aside,.layout > main{min-height:0}
|
|
62
65
|
aside{border-right:1px solid var(--line);padding:20px 18px;background:var(--surface);
|
|
63
66
|
display:flex;flex-direction:column;gap:26px}
|
|
64
67
|
main{padding:20px;overflow:auto}
|
|
@@ -138,7 +141,7 @@ export const BOARD_HTML = /* html */ `<!doctype html>
|
|
|
138
141
|
/* rail repo-row actions — icon-ghost, never white: transparent bg · muted icon · hover ink + surface */
|
|
139
142
|
#repoList .repo .rmbtn{background:transparent;border:1px solid transparent;color:var(--muted);cursor:pointer;
|
|
140
143
|
padding:3px;display:inline-flex;border-radius:6px;transition:color .15s,background .15s,border-color .15s}
|
|
141
|
-
#repoList .repo .rmbtn:hover{color:var(--ink);background:var(--
|
|
144
|
+
#repoList .repo .rmbtn:hover{color:var(--ink);background:var(--surface2)}
|
|
142
145
|
#repoList .repo .rmbtn .ic{width:13px;height:13px;color:inherit}
|
|
143
146
|
.navi{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:8px;color:var(--muted);
|
|
144
147
|
cursor:pointer;font-size:13px;border:none;background:transparent;width:100%;text-align:left;font-family:var(--sans)}
|
|
@@ -221,7 +224,8 @@ export const BOARD_HTML = /* html */ `<!doctype html>
|
|
|
221
224
|
.dd-btn:hover{border-color:var(--line-hi)}
|
|
222
225
|
.dd.open .dd-btn{border-color:rgba(78,201,176,.55)}
|
|
223
226
|
.dd-lbl{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
|
|
224
|
-
.dd-car{color:var(--faint);
|
|
227
|
+
.dd-car{color:var(--faint);display:inline-flex;align-items:center;transition:transform .15s}
|
|
228
|
+
.dd-car .ic{width:13px;height:13px}
|
|
225
229
|
.dd.open .dd-car{transform:rotate(180deg)}
|
|
226
230
|
.dd-panel{position:absolute;top:calc(100% + 5px);left:0;right:0;z-index:40;background:var(--surface2);
|
|
227
231
|
border:1px solid var(--line-hi);border-radius:9px;box-shadow:var(--shadow);max-height:230px;
|
|
@@ -710,7 +714,7 @@ export const BOARD_HTML = /* html */ `<!doctype html>
|
|
|
710
714
|
.menu-btn{display:none;font-size:15px;padding:5px 10px}
|
|
711
715
|
.scrim{position:fixed;inset:0;top:54px;background:rgba(5,7,10,.5);z-index:29;display:none}
|
|
712
716
|
@media (max-width:860px){
|
|
713
|
-
.layout{grid-template-columns:1fr;
|
|
717
|
+
.layout{grid-template-columns:1fr;height:calc(100dvh - 55px)}
|
|
714
718
|
/* 사이드바 = 오프캔버스 드로어 — 플릿이 첫 화면, 런처는 ☰ 뒤에 */
|
|
715
719
|
.menu-btn{display:inline-flex}
|
|
716
720
|
aside{position:fixed;top:54px;bottom:0;left:0;width:min(86vw,340px);max-width:100vw;z-index:30;
|
|
@@ -1199,7 +1203,7 @@ function dressSelect(id){
|
|
|
1199
1203
|
const sel = $(id); if(!sel || sel.dataset.dd) return;
|
|
1200
1204
|
sel.dataset.dd = '1';
|
|
1201
1205
|
const dd = document.createElement('div'); dd.className = 'dd';
|
|
1202
|
-
dd.innerHTML = '<button type="button" class="dd-btn"><span class="dd-lbl"></span><span class="dd-car"
|
|
1206
|
+
dd.innerHTML = '<button type="button" class="dd-btn"><span class="dd-lbl"></span><span class="dd-car"><svg class="ic"><use href="#i-chevron-down"/></svg></span></button><div class="dd-panel"></div>';
|
|
1203
1207
|
sel.parentNode.insertBefore(dd, sel);
|
|
1204
1208
|
sel.style.display = 'none';
|
|
1205
1209
|
dd.querySelector('.dd-btn').addEventListener('click', (e)=>{
|