pairpod-bot 0.2.0 → 0.3.0
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/docker.js +3 -0
- package/dist/docker.js.map +1 -1
- package/miniapp/index.html +49 -20
- package/package.json +1 -1
package/dist/docker.js
CHANGED
|
@@ -59,6 +59,7 @@ export async function attachExec(containerName, cmd, cols, rows) {
|
|
|
59
59
|
const duplex = new Duplex({
|
|
60
60
|
read() { },
|
|
61
61
|
write(chunk, _enc, cb) { raw.write(chunk); cb(); },
|
|
62
|
+
destroy(err, cb) { raw.destroy(); cb(err); },
|
|
62
63
|
});
|
|
63
64
|
let buf = Buffer.alloc(0);
|
|
64
65
|
raw.on("data", (chunk) => {
|
|
@@ -72,6 +73,8 @@ export async function attachExec(containerName, cmd, cols, rows) {
|
|
|
72
73
|
}
|
|
73
74
|
});
|
|
74
75
|
raw.on("end", () => duplex.push(null));
|
|
76
|
+
raw.on("close", () => { if (!duplex.destroyed)
|
|
77
|
+
duplex.destroy(); });
|
|
75
78
|
raw.on("error", (e) => duplex.destroy(e));
|
|
76
79
|
return {
|
|
77
80
|
stream: duplex,
|
package/dist/docker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../src/docker.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../src/docker.ts"],"names":[],"mappings":"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"}
|
package/miniapp/index.html
CHANGED
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
flex: 1;
|
|
73
73
|
min-width: 0;
|
|
74
74
|
resize: none;
|
|
75
|
-
max-height:
|
|
75
|
+
max-height: 300px;
|
|
76
76
|
padding: 8px 10px;
|
|
77
77
|
font-family: ui-monospace, Menlo, monospace;
|
|
78
78
|
font-size: clamp(14px, 3.4vw, 16px);
|
|
@@ -291,7 +291,9 @@
|
|
|
291
291
|
}
|
|
292
292
|
|
|
293
293
|
function send(data) {
|
|
294
|
-
if (ws
|
|
294
|
+
if (!ws || ws.readyState !== WebSocket.OPEN) return false;
|
|
295
|
+
ws.send(data);
|
|
296
|
+
return true;
|
|
295
297
|
}
|
|
296
298
|
|
|
297
299
|
let lastCols = 0;
|
|
@@ -351,27 +353,31 @@
|
|
|
351
353
|
|
|
352
354
|
function autoGrow() {
|
|
353
355
|
input.style.height = "auto";
|
|
354
|
-
input.style.height = Math.min(input.scrollHeight,
|
|
356
|
+
input.style.height = Math.min(input.scrollHeight, 300) + "px";
|
|
355
357
|
}
|
|
356
358
|
|
|
357
359
|
function submitInput() {
|
|
358
360
|
const text = input.value;
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
input.focus();
|
|
361
|
+
// Don't clear the box until the text is actually on the wire — otherwise a closed
|
|
362
|
+
// socket silently eats the prompt.
|
|
362
363
|
if (text.length === 0) {
|
|
363
364
|
send("\r");
|
|
364
365
|
return;
|
|
365
366
|
}
|
|
366
367
|
// When the app accepts bracketed paste, wrap the text so embedded newlines stay
|
|
367
368
|
// literal (otherwise each \n submits a line). Send Enter separately to submit.
|
|
368
|
-
//
|
|
369
|
-
|
|
370
|
-
send("\x1b[200~" + text + "\x1b[201~")
|
|
371
|
-
|
|
372
|
-
|
|
369
|
+
// Delay before Enter scales with length: a large paste takes longer to land than a short one.
|
|
370
|
+
const sent = bracketOn
|
|
371
|
+
? send("\x1b[200~" + text + "\x1b[201~")
|
|
372
|
+
: send(text);
|
|
373
|
+
if (!sent) {
|
|
374
|
+
toast("Not connected — text kept, reconnecting…");
|
|
375
|
+
return;
|
|
373
376
|
}
|
|
374
|
-
|
|
377
|
+
input.value = "";
|
|
378
|
+
autoGrow();
|
|
379
|
+
input.focus();
|
|
380
|
+
setTimeout(() => send("\r"), Math.min(120 + Math.floor(text.length / 25), 1500));
|
|
375
381
|
}
|
|
376
382
|
|
|
377
383
|
function insertNewline() {
|
|
@@ -459,7 +465,7 @@
|
|
|
459
465
|
let pinchFont = 0;
|
|
460
466
|
let lpTimer = null;
|
|
461
467
|
let selectMode = false;
|
|
462
|
-
let
|
|
468
|
+
let selAnchor = null;
|
|
463
469
|
let touchStartX = 0;
|
|
464
470
|
let touchStartY = 0;
|
|
465
471
|
let touchMoved = false;
|
|
@@ -478,11 +484,20 @@
|
|
|
478
484
|
toastTimer = setTimeout(() => t.classList.remove("show"), 1300);
|
|
479
485
|
}
|
|
480
486
|
|
|
481
|
-
function
|
|
487
|
+
function cellFromXY(x, y) {
|
|
482
488
|
const rect = termEl.getBoundingClientRect();
|
|
483
489
|
const cellH = Math.max(1, (termEl.clientHeight - 8) / term.rows);
|
|
484
|
-
const
|
|
485
|
-
|
|
490
|
+
const cellW = Math.max(1, (termEl.clientWidth - 8) / term.cols);
|
|
491
|
+
const col = Math.max(0, Math.min(term.cols - 1, Math.floor((x - rect.left - 4) / cellW)));
|
|
492
|
+
const vrow = Math.max(0, Math.min(term.rows - 1, Math.floor((y - rect.top - 4) / cellH)));
|
|
493
|
+
return { col, row: term.buffer.active.viewportY + vrow };
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
function selectBetween(a, b) {
|
|
497
|
+
const ai = a.row * term.cols + a.col;
|
|
498
|
+
const bi = b.row * term.cols + b.col;
|
|
499
|
+
const start = ai <= bi ? a : b;
|
|
500
|
+
term.select(start.col, start.row, Math.abs(bi - ai) + 1);
|
|
486
501
|
}
|
|
487
502
|
|
|
488
503
|
function copySelection() {
|
|
@@ -515,8 +530,8 @@
|
|
|
515
530
|
lpTimer = setTimeout(() => {
|
|
516
531
|
selectMode = true;
|
|
517
532
|
term.clearSelection();
|
|
518
|
-
|
|
519
|
-
|
|
533
|
+
selAnchor = cellFromXY(touchStartX, touchStartY);
|
|
534
|
+
selectBetween(selAnchor, selAnchor);
|
|
520
535
|
if (navigator.vibrate) navigator.vibrate(15);
|
|
521
536
|
toast("Select mode — drag, release to copy");
|
|
522
537
|
}, 400);
|
|
@@ -532,8 +547,7 @@
|
|
|
532
547
|
const y = e.touches[0].clientY;
|
|
533
548
|
if (selectMode) {
|
|
534
549
|
e.preventDefault();
|
|
535
|
-
|
|
536
|
-
term.selectLines(Math.min(selAnchorRow, r), Math.max(selAnchorRow, r));
|
|
550
|
+
selectBetween(selAnchor, cellFromXY(e.touches[0].clientX, y));
|
|
537
551
|
return;
|
|
538
552
|
}
|
|
539
553
|
if (!touchMoved && Math.hypot(e.touches[0].clientX - touchStartX, y - touchStartY) > 10) {
|
|
@@ -565,7 +579,22 @@
|
|
|
565
579
|
}
|
|
566
580
|
}, { passive: true });
|
|
567
581
|
|
|
582
|
+
// App mouse-mode makes xterm swallow drag-to-select; reclaim it (Shift+drag = native chars).
|
|
583
|
+
let mouseSelAnchor = null;
|
|
584
|
+
termEl.addEventListener("mousedown", (e) => {
|
|
585
|
+
if (!mouseOn || e.button !== 0 || e.shiftKey) return;
|
|
586
|
+
e.preventDefault();
|
|
587
|
+
e.stopPropagation();
|
|
588
|
+
mouseSelAnchor = cellFromXY(e.clientX, e.clientY);
|
|
589
|
+
term.clearSelection();
|
|
590
|
+
}, true);
|
|
591
|
+
termEl.addEventListener("mousemove", (e) => {
|
|
592
|
+
if (mouseSelAnchor === null) return;
|
|
593
|
+
e.preventDefault();
|
|
594
|
+
selectBetween(mouseSelAnchor, cellFromXY(e.clientX, e.clientY));
|
|
595
|
+
}, true);
|
|
568
596
|
termEl.addEventListener("mouseup", () => {
|
|
597
|
+
mouseSelAnchor = null;
|
|
569
598
|
if (Date.now() - lastTouchEnd < 700) return;
|
|
570
599
|
if (term.hasSelection()) copySelection();
|
|
571
600
|
else input.focus();
|