9remote 2.1.5 → 2.1.7
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.cjs +2 -2
- package/dist/ptyDaemon.cjs +10 -7
- package/dist/server.cjs +100 -90
- package/dist/ui/assets/{index-x-cLAYQY.js → index-6avVMwsi.js} +3831 -3663
- package/dist/ui/assets/{index-DxFTXB_J.css → index-ByjrCweb.css} +67 -20
- package/dist/ui/index.html +2 -2
- package/package.json +6 -5
|
@@ -1028,6 +1028,9 @@ button {
|
|
|
1028
1028
|
.top-0\.5{
|
|
1029
1029
|
top: 0.125rem;
|
|
1030
1030
|
}
|
|
1031
|
+
.top-1\.5{
|
|
1032
|
+
top: 0.375rem;
|
|
1033
|
+
}
|
|
1031
1034
|
.top-1\/2{
|
|
1032
1035
|
top: 50%;
|
|
1033
1036
|
}
|
|
@@ -1233,6 +1236,9 @@ button {
|
|
|
1233
1236
|
.max-h-\[calc\(100dvh-14rem\)\]{
|
|
1234
1237
|
max-height: calc(100dvh - 14rem);
|
|
1235
1238
|
}
|
|
1239
|
+
.max-h-full{
|
|
1240
|
+
max-height: 100%;
|
|
1241
|
+
}
|
|
1236
1242
|
.min-h-0{
|
|
1237
1243
|
min-height: 0px;
|
|
1238
1244
|
}
|
|
@@ -1634,6 +1640,9 @@ button {
|
|
|
1634
1640
|
.border-t-2{
|
|
1635
1641
|
border-top-width: 2px;
|
|
1636
1642
|
}
|
|
1643
|
+
.border-dashed{
|
|
1644
|
+
border-style: dashed;
|
|
1645
|
+
}
|
|
1637
1646
|
.border-border{
|
|
1638
1647
|
border-color: var(--border);
|
|
1639
1648
|
}
|
|
@@ -1662,6 +1671,9 @@ button {
|
|
|
1662
1671
|
.bg-bg{
|
|
1663
1672
|
background-color: var(--bg-main);
|
|
1664
1673
|
}
|
|
1674
|
+
.bg-black\/30{
|
|
1675
|
+
background-color: rgb(0 0 0 / 0.3);
|
|
1676
|
+
}
|
|
1665
1677
|
.bg-black\/40{
|
|
1666
1678
|
background-color: rgb(0 0 0 / 0.4);
|
|
1667
1679
|
}
|
|
@@ -1728,6 +1740,9 @@ button {
|
|
|
1728
1740
|
-o-object-fit: cover;
|
|
1729
1741
|
object-fit: cover;
|
|
1730
1742
|
}
|
|
1743
|
+
.p-0{
|
|
1744
|
+
padding: 0px;
|
|
1745
|
+
}
|
|
1731
1746
|
.p-0\.5{
|
|
1732
1747
|
padding: 0.125rem;
|
|
1733
1748
|
}
|
|
@@ -1755,6 +1770,9 @@ button {
|
|
|
1755
1770
|
.p-6{
|
|
1756
1771
|
padding: 1.5rem;
|
|
1757
1772
|
}
|
|
1773
|
+
.p-px{
|
|
1774
|
+
padding: 1px;
|
|
1775
|
+
}
|
|
1758
1776
|
.px-0\.5{
|
|
1759
1777
|
padding-left: 0.125rem;
|
|
1760
1778
|
padding-right: 0.125rem;
|
|
@@ -2299,44 +2317,45 @@ button {
|
|
|
2299
2317
|
.dot-bounce {
|
|
2300
2318
|
animation: dot-bounce 1s ease-in-out infinite;
|
|
2301
2319
|
}
|
|
2302
|
-
/* Terminal pane — fix xterm helpers overlay + focus glow (synced with web) */
|
|
2320
|
+
/* Terminal pane — fix xterm helpers overlay + focus glow (synced with web). */
|
|
2303
2321
|
.terminal-wrapper { overflow: hidden !important; }
|
|
2304
2322
|
.terminal-wrapper .xterm-viewport {
|
|
2305
2323
|
overflow-y: auto !important;
|
|
2306
2324
|
scrollbar-width: thin;
|
|
2307
|
-
scrollbar-color:
|
|
2325
|
+
scrollbar-color: transparent transparent;
|
|
2308
2326
|
}
|
|
2327
|
+
/* Native webkit thumb: transparent until viewport hovered (auto-hide) */
|
|
2309
2328
|
.terminal-wrapper .xterm-viewport::-webkit-scrollbar { width: 6px; }
|
|
2310
2329
|
.terminal-wrapper .xterm-viewport::-webkit-scrollbar-track { background: transparent; }
|
|
2311
2330
|
.terminal-wrapper .xterm-viewport::-webkit-scrollbar-thumb {
|
|
2312
|
-
background:
|
|
2331
|
+
background: transparent;
|
|
2313
2332
|
border-radius: 3px;
|
|
2314
2333
|
}
|
|
2315
|
-
.terminal-wrapper .xterm-viewport::-webkit-scrollbar-thumb
|
|
2316
|
-
background: rgba(
|
|
2334
|
+
.terminal-wrapper:hover .xterm-viewport::-webkit-scrollbar-thumb {
|
|
2335
|
+
background: rgba(128, 128, 128, 0.4);
|
|
2317
2336
|
}
|
|
2318
|
-
|
|
2337
|
+
.terminal-wrapper:hover .xterm-viewport::-webkit-scrollbar-thumb:hover {
|
|
2338
|
+
background: rgba(128, 128, 128, 0.8);
|
|
2339
|
+
}
|
|
2340
|
+
/* XTerm overlay scrollbar (JS-rendered div) — auto-hide: only .visible while scrolling/hovering. */
|
|
2319
2341
|
.terminal-wrapper .xterm .xterm-scrollable-element > .scrollbar {
|
|
2320
|
-
width:
|
|
2321
|
-
opacity:
|
|
2322
|
-
pointer-events:
|
|
2323
|
-
transition:
|
|
2342
|
+
width: 5px !important;
|
|
2343
|
+
opacity: 0 !important;
|
|
2344
|
+
pointer-events: none !important;
|
|
2345
|
+
transition: opacity 0.18s ease !important;
|
|
2324
2346
|
}
|
|
2325
2347
|
.terminal-wrapper .xterm .xterm-scrollable-element > .scrollbar .slider {
|
|
2326
|
-
width:
|
|
2327
|
-
border-radius:
|
|
2328
|
-
background: rgba(
|
|
2348
|
+
width: 5px !important;
|
|
2349
|
+
border-radius: 3px !important;
|
|
2350
|
+
background: rgba(128, 128, 128, 0.5) !important;
|
|
2329
2351
|
}
|
|
2330
2352
|
.terminal-wrapper .xterm .xterm-scrollable-element > .scrollbar .slider:hover {
|
|
2331
|
-
background: rgba(
|
|
2353
|
+
background: rgba(128, 128, 128, 0.8) !important;
|
|
2332
2354
|
}
|
|
2333
|
-
/*
|
|
2334
|
-
|
|
2335
|
-
.terminal-wrapper .xterm .xterm-scrollable-element > .scrollbar.visible,
|
|
2336
|
-
.terminal-wrapper .xterm .xterm-scrollable-element > .scrollbar.invisible {
|
|
2355
|
+
/* Show overlay scrollbar only while xterm marks it .visible (scrolling / hovering track). */
|
|
2356
|
+
.terminal-wrapper .xterm .xterm-scrollable-element > .scrollbar.visible {
|
|
2337
2357
|
opacity: 1 !important;
|
|
2338
2358
|
pointer-events: auto !important;
|
|
2339
|
-
transition: none !important;
|
|
2340
2359
|
}
|
|
2341
2360
|
.terminal-wrapper .xterm-screen { touch-action: pan-y !important; }
|
|
2342
2361
|
.xterm .xterm-helpers { z-index: 0 !important; }
|
|
@@ -2375,12 +2394,40 @@ button {
|
|
|
2375
2394
|
0%, 100% { opacity: 1; }
|
|
2376
2395
|
50% { opacity: 0.3; }
|
|
2377
2396
|
}
|
|
2397
|
+
/* AI agent status dots — idle/working/blocked/done (see lib/statusVisual.js) */
|
|
2398
|
+
/* KEEP IN SYNC with web/app/globals.css (separate build) */
|
|
2399
|
+
/* Working = spinning ring (border-top + border-right visible, others transparent). */
|
|
2400
|
+
.term-dot.pulse-soft {
|
|
2401
|
+
background: transparent !important;
|
|
2402
|
+
width: 0.6rem !important;
|
|
2403
|
+
height: 0.6rem !important;
|
|
2404
|
+
border: 2px solid rgba(59,130,246,0.25);
|
|
2405
|
+
border-top-color: #3b82f6;
|
|
2406
|
+
border-right-color: #3b82f6;
|
|
2407
|
+
animation: statusSpin 0.7s linear infinite;
|
|
2408
|
+
}
|
|
2409
|
+
@keyframes statusSpin { to { transform: rotate(360deg); } }
|
|
2410
|
+
.term-dot.pulse-strong { animation: statusPulseStrong 0.9s ease-in-out infinite; }
|
|
2411
|
+
@keyframes statusPulseStrong {
|
|
2412
|
+
0%, 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(239,68,68,0.6); }
|
|
2413
|
+
50% { transform: scale(1.3); box-shadow: 0 0 0 4px rgba(239,68,68,0); }
|
|
2414
|
+
}
|
|
2415
|
+
/* SessionList card status border — dashed + state color. */
|
|
2416
|
+
.status-border-working { border: 1px dashed #3b82f6 !important; }
|
|
2417
|
+
.status-border-blocked { border: 1px dashed #ef4444 !important; }
|
|
2418
|
+
.status-border-done { border: 1px dashed #f59e0b !important; }
|
|
2378
2419
|
/* Overlay slide-in (web parity) */
|
|
2379
2420
|
@keyframes slide-in-right { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } }
|
|
2380
2421
|
.slide-in-right { animation: slide-in-right 0.3s ease-out; }
|
|
2381
2422
|
/* Terminal header hover (web parity) */
|
|
2382
2423
|
.term-btn:hover { background: var(--surface-2); filter: brightness(0.95); }
|
|
2383
|
-
.term-tab
|
|
2424
|
+
.term-tab { border-radius: 8px; }
|
|
2425
|
+
.term-tab:not(.term-tab-active):hover { color: var(--text-main) !important; background: color-mix(in srgb, var(--surface-2) 60%, transparent); }
|
|
2426
|
+
.term-tab-active {
|
|
2427
|
+
color: var(--text-main) !important;
|
|
2428
|
+
font-weight: 600;
|
|
2429
|
+
background: color-mix(in srgb, var(--brand-500) 35%, transparent);
|
|
2430
|
+
}
|
|
2384
2431
|
.term-group-item:hover { background: var(--surface-2); }
|
|
2385
2432
|
/* Connection cards — borderless on dark, subtle border on light (session parity) */
|
|
2386
2433
|
.conn-card { border: none; }
|
package/dist/ui/index.html
CHANGED
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
const savedTheme = localStorage.getItem("9remote-theme") || "dark";
|
|
15
15
|
document.documentElement.setAttribute("data-theme", savedTheme);
|
|
16
16
|
</script>
|
|
17
|
-
<script type="module" crossorigin src="/assets/index-
|
|
18
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
17
|
+
<script type="module" crossorigin src="/assets/index-6avVMwsi.js"></script>
|
|
18
|
+
<link rel="stylesheet" crossorigin href="/assets/index-ByjrCweb.css">
|
|
19
19
|
</head>
|
|
20
20
|
<body>
|
|
21
21
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "9remote",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.7",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Remote terminal access from anywhere",
|
|
6
6
|
"main": "dist/server.cjs",
|
|
@@ -33,28 +33,29 @@
|
|
|
33
33
|
"@xterm/addon-fit": "^0.11.0",
|
|
34
34
|
"@xterm/addon-unicode11": "^0.9.0",
|
|
35
35
|
"@xterm/xterm": "^6.0.0",
|
|
36
|
-
"bufferutil": "
|
|
36
|
+
"bufferutil": "4.1.0",
|
|
37
37
|
"chalk": "^5.4.1",
|
|
38
38
|
"chokidar": "^3.6.0",
|
|
39
39
|
"edge-tts-node": "^1.5.7",
|
|
40
40
|
"http-proxy": "^1.18.1",
|
|
41
41
|
"inquirer": "^9.3.8",
|
|
42
42
|
"multicast-dns": "^7.2.5",
|
|
43
|
-
"node-datachannel": "^0.32.3",
|
|
44
43
|
"node-machine-id": "^1.1.12",
|
|
45
44
|
"node-screenshots": "^0.2.8",
|
|
46
45
|
"ora": "^8.1.1",
|
|
47
46
|
"preact": "^10.26.2",
|
|
48
47
|
"qrcode": "^1.5.4",
|
|
49
48
|
"qrcode-terminal": "^0.12.0",
|
|
50
|
-
"sharp": "
|
|
49
|
+
"sharp": "0.33.5",
|
|
51
50
|
"socket.io": "^4.8.3",
|
|
52
51
|
"socket.io-client": "^4.8.3",
|
|
53
|
-
"utf-8-validate": "
|
|
52
|
+
"utf-8-validate": "6.0.6",
|
|
54
53
|
"web-push": "^3.6.7"
|
|
55
54
|
},
|
|
56
55
|
"optionalDependencies": {
|
|
57
56
|
"@hurdlegroup/robotjs": "^0.12.1",
|
|
57
|
+
"@julusian/jpeg-turbo": "3.0.1",
|
|
58
|
+
"node-datachannel": "0.32.3",
|
|
58
59
|
"node-pty": "1.2.0-beta.12"
|
|
59
60
|
},
|
|
60
61
|
"devDependencies": {
|