coxpit 5.27.0 → 5.27.1
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/cockpit.ts +10 -0
- package/src/server.ts +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "coxpit",
|
|
3
|
-
"version": "5.27.
|
|
3
|
+
"version": "5.27.1",
|
|
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": "SEE LICENSE IN LICENSE.md",
|
package/src/cockpit.ts
CHANGED
|
@@ -50,6 +50,7 @@ export const COCKPIT_HTML = /* html */ `<!doctype html>
|
|
|
50
50
|
.mach{display:inline-flex;align-items:center;gap:7px;font-size:12px;color:var(--muted);border:1px solid var(--line);border-radius:7px;padding:4px 10px}
|
|
51
51
|
.mach .dot{width:6px;height:6px;border-radius:50%;background:var(--done)}
|
|
52
52
|
.vtabs{display:flex;gap:4px;margin-left:4px}
|
|
53
|
+
.ver{font-family:var(--mono);font-size:9.5px;color:var(--faint);opacity:.8}
|
|
53
54
|
.vtab{font-size:12px;color:var(--muted);padding:6px 11px;border-radius:7px;display:inline-flex;align-items:center;gap:7px;cursor:pointer;background:none;border:none;font-family:var(--mono)}
|
|
54
55
|
.vtab.on{background:var(--brand-dim);color:var(--ink);box-shadow:inset 0 0 0 1px rgba(78,201,176,.28)}
|
|
55
56
|
.vtab .g{color:var(--brand)}
|
|
@@ -382,6 +383,7 @@ export const COCKPIT_HTML = /* html */ `<!doctype html>
|
|
|
382
383
|
<button type="button" class="vtab" disabled title="Docs = 보드"><span class="g">▤</span><span class="b-txt">Docs</span></button>
|
|
383
384
|
</div>
|
|
384
385
|
<div class="right">
|
|
386
|
+
<span class="ver" id="ver" title="로드된 cockpit 버전 (캐시 확인용)">v__COXPIT_VER__</span>
|
|
385
387
|
<span class="ws" id="ws"><span class="dot"></span><span id="wstext" class="b-txt">connecting</span></span>
|
|
386
388
|
<button type="button" class="toggle" id="secretsBtn" title="시크릿(API 키) 관리 — 세션에 env 로 주입">∗<span class="b-txt"> Secrets</span></button>
|
|
387
389
|
<a class="toggle" href="/" title="보드(모니터) 뷰로">←<span class="b-txt"> Board</span></a>
|
|
@@ -404,6 +406,7 @@ export const COCKPIT_HTML = /* html */ `<!doctype html>
|
|
|
404
406
|
<button class="tc-btn" id="splitCol" title="가로 분할 — 포커스 페인을 상하로" disabled>▬ split</button>
|
|
405
407
|
<button class="tc-btn session" id="sessionBtn" title="자유 세션(폴더 지정 터미널) 열기">+<span class="b-txt"> Session</span></button>
|
|
406
408
|
<button class="tc-btn" id="fileBtn" title="파일 보기 — md·html·pdf·이미지·텍스트 뷰어(터미널 옆 페인)">▤<span class="b-txt"> File</span></button>
|
|
409
|
+
<button class="tc-btn" id="attachBtn" title="파일 첨부 — 포커스한 터미널 폴더로 업로드 + 경로 삽입 (드롭도 가능)">↥<span class="b-txt"> 첨부</span></button>
|
|
407
410
|
<button class="tc-btn" id="focusBtn" title="포커스 모드 — 트리·요청바 숨기고 페인만 (⌘.)">◱<span class="b-txt"> Focus</span></button>
|
|
408
411
|
<button class="tc-btn" id="closeBtn" title="포커스 페인 닫기(탭은 유지)" disabled>×<span class="b-txt"> pane</span></button>
|
|
409
412
|
</div>
|
|
@@ -545,6 +548,7 @@ export const COCKPIT_HTML = /* html */ `<!doctype html>
|
|
|
545
548
|
</div>
|
|
546
549
|
</div>
|
|
547
550
|
|
|
551
|
+
<input type="file" id="attachInput" multiple hidden />
|
|
548
552
|
<div class="toast" id="toast"></div>
|
|
549
553
|
|
|
550
554
|
<script src="/vendor/xterm.js"></script>
|
|
@@ -745,6 +749,8 @@ export const COCKPIT_HTML = /* html */ `<!doctype html>
|
|
|
745
749
|
var term=new window.Terminal({
|
|
746
750
|
fontFamily: "ui-monospace, 'SF Mono', Menlo, Monaco, 'Apple SD Gothic Neo', 'Noto Sans KR', monospace",
|
|
747
751
|
fontSize: isMobile() ? 11 : 12, cursorBlink: true, allowProposedApi: true, scrollback: 4000,
|
|
752
|
+
macOptionClickForcesSelection: true, // ⌥+드래그 = 로컬 선택(마우스모드 앱 안에서도) → mouseup 복사가 됨
|
|
753
|
+
rightClickSelectsWord: true,
|
|
748
754
|
theme: { background:'#0b0d12', foreground:'#dee4ec', cursor:'#4ec9b0', selectionBackground:'rgba(78,201,176,.25)', black:'#1c212c', brightBlack:'#5c6675' },
|
|
749
755
|
});
|
|
750
756
|
var fit=new window.FitAddon.FitAddon(); term.loadAddon(fit);
|
|
@@ -1214,6 +1220,10 @@ export const COCKPIT_HTML = /* html */ `<!doctype html>
|
|
|
1214
1220
|
reader.readAsDataURL(file);
|
|
1215
1221
|
});
|
|
1216
1222
|
}
|
|
1223
|
+
// 상단 "↥ 첨부" 버튼 — 포커스한 터미널 페인으로 파일 선택 업로드(드래그&드롭의 보이는 대안)
|
|
1224
|
+
var attachTarget=null;
|
|
1225
|
+
$('attachBtn').addEventListener('click', function(){ var rid=focusedRunId(); if(rid==null||isViewer(rid)||!tabs[rid]||!tabs[rid].ws){ toast('첨부할 터미널 페인을 먼저 선택하세요'); return; } attachTarget=rid; $('attachInput').value=''; $('attachInput').click(); });
|
|
1226
|
+
$('attachInput').addEventListener('change', function(){ if(attachTarget!=null && this.files && this.files.length) uploadToTab(attachTarget, this.files); attachTarget=null; });
|
|
1217
1227
|
$('panes').addEventListener('mousedown', function(e){
|
|
1218
1228
|
var g=e.target.closest('[data-gutter]'); if(!g) return; e.preventDefault();
|
|
1219
1229
|
var node=findSplit(g.dataset.gutter); if(!node) return;
|
package/src/server.ts
CHANGED
|
@@ -210,7 +210,7 @@ export async function buildServer(): Promise<FastifyInstance> {
|
|
|
210
210
|
// 플릿 보드(단일 페이지). 인증 게이트 적용됨(무인증 요청은 게이트가 login/setup 페이지로 응답).
|
|
211
211
|
app.get('/', async (_req, reply) => reply.type('text/html').send(BOARD_HTML));
|
|
212
212
|
// 터미널 우선 셸(병행 개발) — 백엔드는 보드와 공유. Phase 5에서 데스크톱 기본을 여기로 플립 예정.
|
|
213
|
-
app.get('/cockpit', async (_req, reply) => reply.type('text/html').send(COCKPIT_HTML));
|
|
213
|
+
app.get('/cockpit', async (_req, reply) => reply.type('text/html').send(COCKPIT_HTML.replace(/__COXPIT_VER__/g, config.version)));
|
|
214
214
|
|
|
215
215
|
// ─── 접근키 인증(access-key) ────────────────────────────────────
|
|
216
216
|
// 요청이 tunnel/https 를 탔나 — Secure 쿠키 여부 결정용.
|