heyvm 1.1.0 → 1.2.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/bin/heyvm-core +0 -0
- package/package.json +1 -1
- package/ui/dist/App.d.ts.map +1 -1
- package/ui/dist/App.js +1 -6
- package/ui/dist/App.js.map +1 -1
- package/ui/dist/core/ipc.d.ts.map +1 -1
- package/ui/dist/core/ipc.js +3 -10
- package/ui/dist/core/ipc.js.map +1 -1
- package/ui/dist/index.js +36 -39
- package/ui/dist/index.js.map +1 -1
- package/ui/dist/screens/VMDetailScreen.d.ts.map +1 -1
- package/ui/dist/screens/VMDetailScreen.js +14 -1
- package/ui/dist/screens/VMDetailScreen.js.map +1 -1
- package/ui/dist/screens/tabs/FilesTab.d.ts +2 -1
- package/ui/dist/screens/tabs/FilesTab.d.ts.map +1 -1
- package/ui/dist/screens/tabs/FilesTab.js +12 -9
- package/ui/dist/screens/tabs/FilesTab.js.map +1 -1
- package/ui/dist/screens/tabs/TerminalTab.d.ts.map +1 -1
- package/ui/dist/screens/tabs/TerminalTab.js +7 -13
- package/ui/dist/screens/tabs/TerminalTab.js.map +1 -1
- package/ui/package.json +1 -0
- package/ui/dist/screens/tabs/FilesTab.ink-original.d.ts +0 -10
- package/ui/dist/screens/tabs/FilesTab.ink-original.d.ts.map +0 -1
- package/ui/dist/screens/tabs/FilesTab.ink-original.js +0 -420
- package/ui/dist/screens/tabs/FilesTab.ink-original.js.map +0 -1
package/bin/heyvm-core
CHANGED
|
Binary file
|
package/package.json
CHANGED
package/ui/dist/App.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAQrD,MAAM,CAAC,OAAO,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAQrD,MAAM,CAAC,OAAO,UAAU,GAAG,sBAyM1B"}
|
package/ui/dist/App.js
CHANGED
|
@@ -31,7 +31,7 @@ export default function App() {
|
|
|
31
31
|
setVMListVersion(v => v + 1);
|
|
32
32
|
}
|
|
33
33
|
catch (err) {
|
|
34
|
-
|
|
34
|
+
// Error handled silently
|
|
35
35
|
}
|
|
36
36
|
}, [selectedVM]);
|
|
37
37
|
// Handlers
|
|
@@ -44,16 +44,12 @@ export default function App() {
|
|
|
44
44
|
const handleAddVMSubmit = async (vm, password) => {
|
|
45
45
|
try {
|
|
46
46
|
const newVM = await ipcClient.addVM(vm);
|
|
47
|
-
console.log('[App] VM added successfully:', newVM.id);
|
|
48
47
|
// Store password in keychain after VM is added (now we have ID)
|
|
49
48
|
if (password && newVM.id) {
|
|
50
|
-
console.log('[App] Storing password for VM:', newVM.id);
|
|
51
49
|
try {
|
|
52
50
|
await ipcClient.storePassword(newVM.id, password);
|
|
53
|
-
console.log('[App] Password stored successfully');
|
|
54
51
|
}
|
|
55
52
|
catch (passErr) {
|
|
56
|
-
console.error('[App] Failed to store password:', passErr);
|
|
57
53
|
// Show error to user but don't fail VM creation
|
|
58
54
|
// Password can be re-entered later
|
|
59
55
|
}
|
|
@@ -65,7 +61,6 @@ export default function App() {
|
|
|
65
61
|
// No auto-connect - user must explicitly connect via 'c' key
|
|
66
62
|
}
|
|
67
63
|
catch (err) {
|
|
68
|
-
console.error('Failed to add VM:', err);
|
|
69
64
|
// Error is handled in AddVMScreen, this is just a fallback
|
|
70
65
|
}
|
|
71
66
|
};
|
package/ui/dist/App.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.js","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAElD,OAAO,YAAY,MAAM,2BAA2B,CAAC;AACrD,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,cAAc,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,CAAC,OAAO,UAAU,GAAG;IAC1B,yBAAyB;IACzB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAY,IAAI,CAAC,CAAC;IAC9D,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAM,UAAU,CAAC,CAAC;IAC5D,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAmB,MAAM,CAAC,CAAC;IAC/E,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAE1B,0CAA0C;IAC1C,MAAM,iBAAiB,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAChD,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,IAAI,CAAC;YACJ,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;YACxD,IAAI,SAAS,EAAE,CAAC;gBACf,aAAa,CAAC,SAAS,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACP,8BAA8B;gBAC9B,aAAa,CAAC,IAAI,CAAC,CAAC;gBACpB,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC3B,CAAC;YAED,0BAA0B;YAC1B,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,
|
|
1
|
+
{"version":3,"file":"App.js","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipc.d.ts","sourceRoot":"","sources":["../../src/core/ipc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,CAAC,MAAM,CAAC;IACd,IAAI,SAAS,EAAE;QACd,KAAK,EAAE,QAAQ,CAAC;QAChB,MAAM,EAAE,QAAQ,CAAC;QACjB,OAAO,EAAE,GAAG,CAAC;KACb,GAAG,SAAS,CAAC;CACd;AAED,qBAAa,SAAU,SAAQ,YAAY;IAC1C,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,eAAe,CAGlB;IACL,OAAO,CAAC,cAAc,CAAM;;IAU5B,OAAO,CAAC,oBAAoB;IA2B5B,OAAO,CAAC,cAAc;
|
|
1
|
+
{"version":3,"file":"ipc.d.ts","sourceRoot":"","sources":["../../src/core/ipc.ts"],"names":[],"mappings":"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"}
|
package/ui/dist/core/ipc.js
CHANGED
|
@@ -25,12 +25,12 @@ export class IPCClient extends EventEmitter {
|
|
|
25
25
|
this.handleResponse(response);
|
|
26
26
|
}
|
|
27
27
|
catch (err) {
|
|
28
|
-
|
|
28
|
+
// Parse error - ignore
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
});
|
|
32
32
|
stdout.on('error', (err) => {
|
|
33
|
-
|
|
33
|
+
// Stdout error - ignore
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
36
|
handleResponse(response) {
|
|
@@ -46,23 +46,17 @@ export class IPCClient extends EventEmitter {
|
|
|
46
46
|
this.pendingRequests.delete(requestId);
|
|
47
47
|
pending.resolve(response);
|
|
48
48
|
}
|
|
49
|
-
else {
|
|
50
|
-
console.warn('[IPC] Received response with no matching request:', response);
|
|
51
|
-
}
|
|
52
49
|
}
|
|
53
50
|
/**
|
|
54
51
|
* Send a fire-and-forget message (no response expected)
|
|
55
52
|
*/
|
|
56
53
|
send(message) {
|
|
57
54
|
if (!global.heyvmCore) {
|
|
58
|
-
console.warn('[IPC] Core process not available');
|
|
59
55
|
return;
|
|
60
56
|
}
|
|
61
57
|
const messageStr = JSON.stringify(message) + '\n';
|
|
62
58
|
global.heyvmCore.stdin.write(messageStr, (err) => {
|
|
63
|
-
|
|
64
|
-
console.error('[IPC] Failed to send message:', err);
|
|
65
|
-
}
|
|
59
|
+
// Ignore write errors
|
|
66
60
|
});
|
|
67
61
|
}
|
|
68
62
|
/**
|
|
@@ -71,7 +65,6 @@ export class IPCClient extends EventEmitter {
|
|
|
71
65
|
async sendRequest(request) {
|
|
72
66
|
// If core process not available, return mock response
|
|
73
67
|
if (!global.heyvmCore) {
|
|
74
|
-
console.warn('[IPC] Core process not available, using mock response');
|
|
75
68
|
return {
|
|
76
69
|
status: 'success',
|
|
77
70
|
message: `Mock response for ${request.action}`,
|
package/ui/dist/core/ipc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipc.js","sourceRoot":"","sources":["../../src/core/ipc.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAWtC,MAAM,OAAO,SAAU,SAAQ,YAAY;IAQ1C;QACC,KAAK,EAAE,CAAC;QARD,cAAS,GAAG,CAAC,CAAC;QACd,oBAAe,GAAG,IAAI,GAAG,EAG7B,CAAC;QACG,mBAAc,GAAG,EAAE,CAAC;QAI3B,uDAAuD;QACvD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;IACF,CAAC;IAEO,oBAAoB;QAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAU,CAAC,MAAM,CAAC;QAExC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACnC,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAExC,uCAAuC;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,iCAAiC;YAE1E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;oBAAE,SAAS;gBAE3B,IAAI,CAAC;oBACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAClC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;gBAC/B,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACd,
|
|
1
|
+
{"version":3,"file":"ipc.js","sourceRoot":"","sources":["../../src/core/ipc.ts"],"names":[],"mappings":"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"}
|
package/ui/dist/index.js
CHANGED
|
@@ -35389,7 +35389,7 @@ var require_backend = __commonJS({
|
|
|
35389
35389
|
return false;
|
|
35390
35390
|
}
|
|
35391
35391
|
}
|
|
35392
|
-
function
|
|
35392
|
+
function cleanup2() {
|
|
35393
35393
|
}
|
|
35394
35394
|
function rootSupportsProfiling(root) {
|
|
35395
35395
|
if (root.memoizedInteractions != null) {
|
|
@@ -36666,7 +36666,7 @@ var require_backend = __commonJS({
|
|
|
36666
36666
|
return idToArbitraryFiberMap.has(id);
|
|
36667
36667
|
}
|
|
36668
36668
|
return {
|
|
36669
|
-
cleanup,
|
|
36669
|
+
cleanup: cleanup2,
|
|
36670
36670
|
clearErrorsAndWarnings,
|
|
36671
36671
|
clearErrorsForFiberID,
|
|
36672
36672
|
clearWarningsForFiberID,
|
|
@@ -38568,7 +38568,7 @@ var require_backend = __commonJS({
|
|
|
38568
38568
|
}
|
|
38569
38569
|
});
|
|
38570
38570
|
}
|
|
38571
|
-
function
|
|
38571
|
+
function cleanup2() {
|
|
38572
38572
|
if (oldReconcilerMethods !== null) {
|
|
38573
38573
|
if (renderer2.Component) {
|
|
38574
38574
|
restoreMany(renderer2.Component.Mixin, oldReconcilerMethods);
|
|
@@ -39102,7 +39102,7 @@ var require_backend = __commonJS({
|
|
|
39102
39102
|
clearErrorsAndWarnings,
|
|
39103
39103
|
clearErrorsForFiberID,
|
|
39104
39104
|
clearWarningsForFiberID,
|
|
39105
|
-
cleanup,
|
|
39105
|
+
cleanup: cleanup2,
|
|
39106
39106
|
getSerializedElementValueByPath,
|
|
39107
39107
|
deletePath,
|
|
39108
39108
|
flushInitialOperations,
|
|
@@ -50809,12 +50809,10 @@ var IPCClient = class extends EventEmitter3 {
|
|
|
50809
50809
|
const response = JSON.parse(line);
|
|
50810
50810
|
this.handleResponse(response);
|
|
50811
50811
|
} catch (err) {
|
|
50812
|
-
console.error("[IPC] Failed to parse response:", line, err);
|
|
50813
50812
|
}
|
|
50814
50813
|
}
|
|
50815
50814
|
});
|
|
50816
50815
|
stdout.on("error", (err) => {
|
|
50817
|
-
console.error("[IPC] Stdout error:", err);
|
|
50818
50816
|
});
|
|
50819
50817
|
}
|
|
50820
50818
|
handleResponse(response) {
|
|
@@ -50827,8 +50825,6 @@ var IPCClient = class extends EventEmitter3 {
|
|
|
50827
50825
|
const pending = this.pendingRequests.get(requestId);
|
|
50828
50826
|
this.pendingRequests.delete(requestId);
|
|
50829
50827
|
pending.resolve(response);
|
|
50830
|
-
} else {
|
|
50831
|
-
console.warn("[IPC] Received response with no matching request:", response);
|
|
50832
50828
|
}
|
|
50833
50829
|
}
|
|
50834
50830
|
/**
|
|
@@ -50836,14 +50832,10 @@ var IPCClient = class extends EventEmitter3 {
|
|
|
50836
50832
|
*/
|
|
50837
50833
|
send(message) {
|
|
50838
50834
|
if (!global.heyvmCore) {
|
|
50839
|
-
console.warn("[IPC] Core process not available");
|
|
50840
50835
|
return;
|
|
50841
50836
|
}
|
|
50842
50837
|
const messageStr = JSON.stringify(message) + "\n";
|
|
50843
50838
|
global.heyvmCore.stdin.write(messageStr, (err) => {
|
|
50844
|
-
if (err) {
|
|
50845
|
-
console.error("[IPC] Failed to send message:", err);
|
|
50846
|
-
}
|
|
50847
50839
|
});
|
|
50848
50840
|
}
|
|
50849
50841
|
/**
|
|
@@ -50851,7 +50843,6 @@ var IPCClient = class extends EventEmitter3 {
|
|
|
50851
50843
|
*/
|
|
50852
50844
|
async sendRequest(request) {
|
|
50853
50845
|
if (!global.heyvmCore) {
|
|
50854
|
-
console.warn("[IPC] Core process not available, using mock response");
|
|
50855
50846
|
return {
|
|
50856
50847
|
status: "success",
|
|
50857
50848
|
message: `Mock response for ${request.action}`,
|
|
@@ -51943,9 +51934,7 @@ var TerminalTab = import_react28.default.memo(
|
|
|
51943
51934
|
function TerminalTab2({ vm, isActive }) {
|
|
51944
51935
|
const getTerminalDimensions = () => ({
|
|
51945
51936
|
rows: TERMINAL_ROWS,
|
|
51946
|
-
// Fixed height
|
|
51947
51937
|
cols: process.stdout.columns || 120
|
|
51948
|
-
// Dynamic width
|
|
51949
51938
|
});
|
|
51950
51939
|
const [sessionId, setSessionId] = (0, import_react28.useState)(null);
|
|
51951
51940
|
const [error, setError] = (0, import_react28.useState)(null);
|
|
@@ -51997,17 +51986,14 @@ var TerminalTab = import_react28.default.memo(
|
|
|
51997
51986
|
if (!isActive) return;
|
|
51998
51987
|
if (vm.status !== "connected") return;
|
|
51999
51988
|
if (ptyStartedRef.current) return;
|
|
52000
|
-
console.log("[Terminal] Starting PTY session...");
|
|
52001
51989
|
ptyStartedRef.current = true;
|
|
52002
51990
|
const handleReady = ({ session_id, vm_id }) => {
|
|
52003
51991
|
if (vm_id === vm.id) {
|
|
52004
|
-
console.log("[Terminal] PTY ready:", session_id);
|
|
52005
51992
|
setSessionId(session_id);
|
|
52006
51993
|
}
|
|
52007
51994
|
};
|
|
52008
51995
|
const handleError = ({ vm_id, error: errorMsg }) => {
|
|
52009
51996
|
if (vm_id === vm.id) {
|
|
52010
|
-
console.error("[Terminal] PTY error:", errorMsg);
|
|
52011
51997
|
setError(errorMsg);
|
|
52012
51998
|
}
|
|
52013
51999
|
};
|
|
@@ -52048,7 +52034,6 @@ var TerminalTab = import_react28.default.memo(
|
|
|
52048
52034
|
};
|
|
52049
52035
|
const handleExit = ({ session_id }) => {
|
|
52050
52036
|
if (session_id === sessionId) {
|
|
52051
|
-
console.log("[Terminal] PTY exited");
|
|
52052
52037
|
setSessionId(null);
|
|
52053
52038
|
setError("Terminal session closed");
|
|
52054
52039
|
}
|
|
@@ -52072,12 +52057,11 @@ var TerminalTab = import_react28.default.memo(
|
|
|
52072
52057
|
if (!sessionId || !isActive) return;
|
|
52073
52058
|
const handleResize = () => {
|
|
52074
52059
|
const dims = getTerminalDimensions();
|
|
52075
|
-
const { rows, cols } = dims;
|
|
52076
52060
|
if (emulatorRef.current) {
|
|
52077
|
-
emulatorRef.current.resize(rows, cols);
|
|
52061
|
+
emulatorRef.current.resize(dims.rows, dims.cols);
|
|
52078
52062
|
forceUpdate();
|
|
52079
52063
|
}
|
|
52080
|
-
ipcClient.resizePTY(vm.id, sessionId, rows, cols);
|
|
52064
|
+
ipcClient.resizePTY(vm.id, sessionId, dims.rows, dims.cols);
|
|
52081
52065
|
};
|
|
52082
52066
|
process.stdout.on("resize", handleResize);
|
|
52083
52067
|
return () => {
|
|
@@ -52086,7 +52070,6 @@ var TerminalTab = import_react28.default.memo(
|
|
|
52086
52070
|
}, [sessionId, isActive, vm.id]);
|
|
52087
52071
|
(0, import_react28.useEffect)(() => {
|
|
52088
52072
|
if (vm.status === "disconnected" && sessionId) {
|
|
52089
|
-
console.log("[Terminal] VM disconnected, closing PTY");
|
|
52090
52073
|
ipcClient.closePTY(vm.id, sessionId);
|
|
52091
52074
|
ptyStartedRef.current = false;
|
|
52092
52075
|
setSessionId(null);
|
|
@@ -52195,7 +52178,7 @@ function parseMouseEvent(data) {
|
|
|
52195
52178
|
|
|
52196
52179
|
// src/screens/tabs/FilesTab.tsx
|
|
52197
52180
|
var VISIBLE_FILES = 15;
|
|
52198
|
-
function FilesTab({ vm, isActive }) {
|
|
52181
|
+
function FilesTab({ vm, isActive, headerOffset }) {
|
|
52199
52182
|
const [activePane, setActivePane] = (0, import_react29.useState)("local");
|
|
52200
52183
|
const [localPath, setLocalPath] = (0, import_react29.useState)(process.env.HOME || "/");
|
|
52201
52184
|
const [remotePath, setRemotePath] = (0, import_react29.useState)("/");
|
|
@@ -52318,30 +52301,30 @@ function FilesTab({ vm, isActive }) {
|
|
|
52318
52301
|
visualRow: -1,
|
|
52319
52302
|
isValid: false
|
|
52320
52303
|
};
|
|
52321
|
-
const HEADER_OFFSET = 20;
|
|
52322
52304
|
const PANE_HEADER = 1;
|
|
52323
52305
|
const BORDER_WIDTH = 1;
|
|
52324
|
-
const vmListWidth = Math.floor(terminalWidth * 0.
|
|
52306
|
+
const vmListWidth = Math.floor(terminalWidth * 0.35);
|
|
52325
52307
|
const filesTabStart = vmListWidth;
|
|
52326
52308
|
const filesTabWidth = terminalWidth - vmListWidth;
|
|
52327
52309
|
const filesPaneMidpoint = filesTabStart + Math.floor(filesTabWidth / 2);
|
|
52328
|
-
|
|
52310
|
+
const x = mouseX - 1;
|
|
52311
|
+
if (x < filesPaneMidpoint) {
|
|
52329
52312
|
result.pane = "local";
|
|
52330
52313
|
} else {
|
|
52331
52314
|
result.pane = "remote";
|
|
52332
52315
|
}
|
|
52333
|
-
const fileListTop =
|
|
52316
|
+
const fileListTop = headerOffset + PANE_HEADER + BORDER_WIDTH;
|
|
52334
52317
|
const fileListBottom = fileListTop + VISIBLE_FILES;
|
|
52335
52318
|
if (mouseY < fileListTop || mouseY >= fileListBottom) {
|
|
52336
52319
|
return result;
|
|
52337
52320
|
}
|
|
52338
|
-
result.visualRow = mouseY - fileListTop;
|
|
52321
|
+
result.visualRow = mouseY - 1 - fileListTop;
|
|
52339
52322
|
const files = result.pane === "local" ? localFiles : remoteFiles;
|
|
52340
52323
|
const scroll = result.pane === "local" ? localScroll : remoteScroll;
|
|
52341
52324
|
result.fileIndex = scroll + result.visualRow;
|
|
52342
52325
|
result.isValid = result.fileIndex >= 0 && result.fileIndex < files.length;
|
|
52343
52326
|
return result;
|
|
52344
|
-
}, [localFiles, remoteFiles, localScroll, remoteScroll]);
|
|
52327
|
+
}, [localFiles, remoteFiles, localScroll, remoteScroll, headerOffset]);
|
|
52345
52328
|
const detectClickType = (0, import_react29.useCallback)((currentClick) => {
|
|
52346
52329
|
if (!lastClickState) return "single";
|
|
52347
52330
|
const timeDelta = currentClick.time - lastClickState.time;
|
|
@@ -52710,6 +52693,7 @@ function FilesTab({ vm, isActive }) {
|
|
|
52710
52693
|
|
|
52711
52694
|
// src/screens/VMDetailScreen.tsx
|
|
52712
52695
|
var VMDetailScreen_default = import_react30.default.memo(function VMDetailScreen({ vm, activeTab, onTabChange, isActive, onVMUpdated }) {
|
|
52696
|
+
const filesTabHeaderOffset = 9;
|
|
52713
52697
|
const getStatusColor = () => {
|
|
52714
52698
|
if (vm.status === "connected") return "green";
|
|
52715
52699
|
if (vm.status === "connecting") return "yellow";
|
|
@@ -52753,7 +52737,7 @@ var VMDetailScreen_default = import_react30.default.memo(function VMDetailScreen
|
|
|
52753
52737
|
color: activeTab === "files" ? "cyan" : "gray"
|
|
52754
52738
|
},
|
|
52755
52739
|
"Files"
|
|
52756
|
-
))), /* @__PURE__ */ import_react30.default.createElement(Box_default, { flexGrow: 1, flexDirection: "column" }, activeTab === "overview" ? /* @__PURE__ */ import_react30.default.createElement(OverviewTab_default, { vm, isActive, onVMUpdated }) : activeTab === "terminal" ? /* @__PURE__ */ import_react30.default.createElement(TerminalTab_default, { vm, isActive }) : /* @__PURE__ */ import_react30.default.createElement(FilesTab, { vm, isActive })), /* @__PURE__ */ import_react30.default.createElement(Box_default, { borderStyle: "single", borderColor: "gray", paddingX: 1 }, getContextHelp()));
|
|
52740
|
+
))), /* @__PURE__ */ import_react30.default.createElement(Box_default, { flexGrow: 1, flexDirection: "column" }, activeTab === "overview" ? /* @__PURE__ */ import_react30.default.createElement(OverviewTab_default, { vm, isActive, onVMUpdated }) : activeTab === "terminal" ? /* @__PURE__ */ import_react30.default.createElement(TerminalTab_default, { vm, isActive }) : /* @__PURE__ */ import_react30.default.createElement(FilesTab, { vm, isActive, headerOffset: filesTabHeaderOffset })), /* @__PURE__ */ import_react30.default.createElement(Box_default, { borderStyle: "single", borderColor: "gray", paddingX: 1 }, getContextHelp()));
|
|
52757
52741
|
}, (prevProps, nextProps) => {
|
|
52758
52742
|
return prevProps.activeTab === nextProps.activeTab && prevProps.isActive === nextProps.isActive && prevProps.vm.id === nextProps.vm.id && prevProps.vm.status === nextProps.vm.status && prevProps.vm.name === nextProps.vm.name;
|
|
52759
52743
|
});
|
|
@@ -52779,7 +52763,6 @@ function App2() {
|
|
|
52779
52763
|
}
|
|
52780
52764
|
setVMListVersion((v) => v + 1);
|
|
52781
52765
|
} catch (err) {
|
|
52782
|
-
console.error("Failed to refresh VM:", err);
|
|
52783
52766
|
}
|
|
52784
52767
|
}, [selectedVM]);
|
|
52785
52768
|
const handleSelectVM = (vm) => {
|
|
@@ -52790,14 +52773,10 @@ function App2() {
|
|
|
52790
52773
|
const handleAddVMSubmit = async (vm, password) => {
|
|
52791
52774
|
try {
|
|
52792
52775
|
const newVM = await ipcClient.addVM(vm);
|
|
52793
|
-
console.log("[App] VM added successfully:", newVM.id);
|
|
52794
52776
|
if (password && newVM.id) {
|
|
52795
|
-
console.log("[App] Storing password for VM:", newVM.id);
|
|
52796
52777
|
try {
|
|
52797
52778
|
await ipcClient.storePassword(newVM.id, password);
|
|
52798
|
-
console.log("[App] Password stored successfully");
|
|
52799
52779
|
} catch (passErr) {
|
|
52800
|
-
console.error("[App] Failed to store password:", passErr);
|
|
52801
52780
|
}
|
|
52802
52781
|
}
|
|
52803
52782
|
setShowAddVMModal(false);
|
|
@@ -52805,7 +52784,6 @@ function App2() {
|
|
|
52805
52784
|
setActivePaneSide("right");
|
|
52806
52785
|
setActiveTab("overview");
|
|
52807
52786
|
} catch (err) {
|
|
52808
|
-
console.error("Failed to add VM:", err);
|
|
52809
52787
|
}
|
|
52810
52788
|
};
|
|
52811
52789
|
const handleVMDeleted = () => {
|
|
@@ -52920,11 +52898,30 @@ function App2() {
|
|
|
52920
52898
|
}
|
|
52921
52899
|
|
|
52922
52900
|
// src/index.tsx
|
|
52923
|
-
|
|
52901
|
+
process.stdout.write(base_exports.enterAlternativeScreen);
|
|
52902
|
+
process.stdout.write(base_exports.cursorHide);
|
|
52903
|
+
var { waitUntilExit, cleanup } = render_default(/* @__PURE__ */ import_react32.default.createElement(App2, null), {
|
|
52924
52904
|
exitOnCtrlC: false
|
|
52925
52905
|
// Don't exit on Ctrl+C - let App handle it
|
|
52926
52906
|
});
|
|
52927
|
-
|
|
52907
|
+
var exitHandler = () => {
|
|
52908
|
+
cleanup();
|
|
52909
|
+
process.stdout.write(base_exports.cursorShow);
|
|
52910
|
+
process.stdout.write(base_exports.exitAlternativeScreen);
|
|
52911
|
+
};
|
|
52912
|
+
process.on("SIGINT", exitHandler);
|
|
52913
|
+
process.on("SIGTERM", exitHandler);
|
|
52914
|
+
process.on("exit", exitHandler);
|
|
52915
|
+
process.on("uncaughtException", () => {
|
|
52916
|
+
exitHandler();
|
|
52917
|
+
process.exit(1);
|
|
52918
|
+
});
|
|
52919
|
+
process.on("unhandledRejection", () => {
|
|
52920
|
+
exitHandler();
|
|
52921
|
+
process.exit(1);
|
|
52922
|
+
});
|
|
52923
|
+
await waitUntilExit();
|
|
52924
|
+
exitHandler();
|
|
52928
52925
|
/*! Bundled license information:
|
|
52929
52926
|
|
|
52930
52927
|
react/cjs/react.production.min.js:
|
package/ui/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,GAAG,MAAM,UAAU,CAAC;AAE3B,2CAA2C;AAC3C,sEAAsE;AACtE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,oBAAC,GAAG,OAAG,EAAE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,GAAG,MAAM,UAAU,CAAC;AAE3B,4CAA4C;AAC5C,oFAAoF;AACpF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;AACzD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAE7C,2CAA2C;AAC3C,sEAAsE;AACtE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,oBAAC,GAAG,OAAG,EAAE;IAClD,WAAW,EAAE,KAAK,EAAE,2CAA2C;CAC/D,CAAC,CAAC;AAEH,oCAAoC;AACpC,MAAM,WAAW,GAAG,GAAG,EAAE;IACxB,OAAO,EAAE,CAAC;IACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,8CAA8C;AAC9C,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAClC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACnC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAEhC,2BAA2B;AAC3B,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACpC,WAAW,EAAE,CAAC;IACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;IACrC,WAAW,EAAE,CAAC;IACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC;AAEH,sBAAsB;AACtB,MAAM,aAAa,EAAE,CAAC;AAEtB,aAAa;AACb,WAAW,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VMDetailScreen.d.ts","sourceRoot":"","sources":["../../src/screens/VMDetailScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAKhD,UAAU,mBAAmB;IAC5B,EAAE,EAAE,EAAE,CAAC;IACP,SAAS,EAAE,GAAG,CAAC;IACf,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC;;AAED,
|
|
1
|
+
{"version":3,"file":"VMDetailScreen.d.ts","sourceRoot":"","sources":["../../src/screens/VMDetailScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAKhD,UAAU,mBAAmB;IAC5B,EAAE,EAAE,EAAE,CAAC;IACP,SAAS,EAAE,GAAG,CAAC;IACf,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC;;AAED,wBA4HG"}
|
|
@@ -5,6 +5,19 @@ import TerminalTab from './tabs/TerminalTab.js';
|
|
|
5
5
|
import FilesTab from './tabs/FilesTab.js';
|
|
6
6
|
export default React.memo(function VMDetailScreen({ vm, activeTab, onTabChange, isActive, onVMUpdated }) {
|
|
7
7
|
// Tab state is now controlled by parent (no local state or key handlers)
|
|
8
|
+
// Calculate header offset for mouse coordinate mapping in FilesTab
|
|
9
|
+
// With full-screen alternate buffer mode, coordinates always start at (0,0)
|
|
10
|
+
// This offset is now a simple count of UI elements above the file list:
|
|
11
|
+
// - padding(1) empty line
|
|
12
|
+
// - header line 1: "● VM_NAME STATUS"
|
|
13
|
+
// - header line 2: " user@host"
|
|
14
|
+
// - marginTop(1) before separator
|
|
15
|
+
// - separator line: "────────"
|
|
16
|
+
// - marginBottom(1) after header box
|
|
17
|
+
// - tabs line: "Overview | Terminal | Files"
|
|
18
|
+
// - marginBottom(1) after tabs
|
|
19
|
+
// Total: 9 lines before FilesTab content starts
|
|
20
|
+
const filesTabHeaderOffset = 9;
|
|
8
21
|
const getStatusColor = () => {
|
|
9
22
|
if (vm.status === 'connected')
|
|
10
23
|
return 'green';
|
|
@@ -114,7 +127,7 @@ export default React.memo(function VMDetailScreen({ vm, activeTab, onTabChange,
|
|
|
114
127
|
activeTab === 'terminal' ? '▶' : '|',
|
|
115
128
|
" "),
|
|
116
129
|
React.createElement(Text, { bold: activeTab === 'files', color: activeTab === 'files' ? 'cyan' : 'gray' }, "Files"))),
|
|
117
|
-
React.createElement(Box, { flexGrow: 1, flexDirection: "column" }, activeTab === 'overview' ? (React.createElement(OverviewTab, { vm: vm, isActive: isActive, onVMUpdated: onVMUpdated })) : activeTab === 'terminal' ? (React.createElement(TerminalTab, { vm: vm, isActive: isActive })) : (React.createElement(FilesTab, { vm: vm, isActive: isActive }))),
|
|
130
|
+
React.createElement(Box, { flexGrow: 1, flexDirection: "column" }, activeTab === 'overview' ? (React.createElement(OverviewTab, { vm: vm, isActive: isActive, onVMUpdated: onVMUpdated })) : activeTab === 'terminal' ? (React.createElement(TerminalTab, { vm: vm, isActive: isActive })) : (React.createElement(FilesTab, { vm: vm, isActive: isActive, headerOffset: filesTabHeaderOffset }))),
|
|
118
131
|
React.createElement(Box, { borderStyle: "single", borderColor: "gray", paddingX: 1 }, getContextHelp())));
|
|
119
132
|
}, (prevProps, nextProps) => {
|
|
120
133
|
// Only re-render if these critical props change
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VMDetailScreen.js","sourceRoot":"","sources":["../../src/screens/VMDetailScreen.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"VMDetailScreen.js","sourceRoot":"","sources":["../../src/screens/VMDetailScreen.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,8 @@ import type { VM } from '../../core/types.js';
|
|
|
3
3
|
interface FilesTabProps {
|
|
4
4
|
vm: VM;
|
|
5
5
|
isActive: boolean;
|
|
6
|
+
headerOffset: number;
|
|
6
7
|
}
|
|
7
|
-
export default function FilesTab({ vm, isActive }: FilesTabProps): React.JSX.Element;
|
|
8
|
+
export default function FilesTab({ vm, isActive, headerOffset }: FilesTabProps): React.JSX.Element;
|
|
8
9
|
export {};
|
|
9
10
|
//# sourceMappingURL=FilesTab.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilesTab.d.ts","sourceRoot":"","sources":["../../../src/screens/tabs/FilesTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAIxE,OAAO,KAAK,EAAE,EAAE,EAAY,MAAM,qBAAqB,CAAC;AAIxD,UAAU,aAAa;IACtB,EAAE,EAAE,EAAE,CAAC;IACP,QAAQ,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"FilesTab.d.ts","sourceRoot":"","sources":["../../../src/screens/tabs/FilesTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAIxE,OAAO,KAAK,EAAE,EAAE,EAAY,MAAM,qBAAqB,CAAC;AAIxD,UAAU,aAAa;IACtB,EAAE,EAAE,EAAE,CAAC;IACP,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACrB;AAID,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,aAAa,qBAwyB7E"}
|
|
@@ -5,7 +5,7 @@ import * as path from 'path';
|
|
|
5
5
|
import { ipcClient } from '../../core/ipc.js';
|
|
6
6
|
import { parseMouseEvent } from '../../utils/mouseParser.js';
|
|
7
7
|
const VISIBLE_FILES = 15;
|
|
8
|
-
export default function FilesTab({ vm, isActive }) {
|
|
8
|
+
export default function FilesTab({ vm, isActive, headerOffset }) {
|
|
9
9
|
const [activePane, setActivePane] = useState('local');
|
|
10
10
|
const [localPath, setLocalPath] = useState(process.env.HOME || '/');
|
|
11
11
|
const [remotePath, setRemotePath] = useState('/');
|
|
@@ -149,40 +149,43 @@ export default function FilesTab({ vm, isActive }) {
|
|
|
149
149
|
isValid: false
|
|
150
150
|
};
|
|
151
151
|
// Calculate layout metrics
|
|
152
|
-
//
|
|
153
|
-
|
|
152
|
+
// Use headerOffset prop from parent component (accounts for VMDetailScreen's header, tabs, etc.)
|
|
153
|
+
// Plus FilesTab's own pane header and border
|
|
154
154
|
const PANE_HEADER = 1;
|
|
155
155
|
const BORDER_WIDTH = 1;
|
|
156
|
-
// VM list panel takes up ~
|
|
156
|
+
// VM list panel takes up ~35% of terminal width on the left
|
|
157
157
|
// Files tab starts after VM list panel
|
|
158
|
-
const vmListWidth = Math.floor(terminalWidth * 0.
|
|
158
|
+
const vmListWidth = Math.floor(terminalWidth * 0.35);
|
|
159
159
|
const filesTabStart = vmListWidth;
|
|
160
160
|
const filesTabWidth = terminalWidth - vmListWidth;
|
|
161
161
|
// Midpoint between the two file panes (within the Files tab area)
|
|
162
162
|
const filesPaneMidpoint = filesTabStart + Math.floor(filesTabWidth / 2);
|
|
163
163
|
// Determine pane from X coordinate
|
|
164
|
-
|
|
164
|
+
// Convert from 1-based SGR coordinates to 0-based
|
|
165
|
+
const x = mouseX - 1;
|
|
166
|
+
if (x < filesPaneMidpoint) {
|
|
165
167
|
result.pane = 'local';
|
|
166
168
|
}
|
|
167
169
|
else {
|
|
168
170
|
result.pane = 'remote';
|
|
169
171
|
}
|
|
170
172
|
// Calculate file list Y bounds
|
|
171
|
-
const fileListTop =
|
|
173
|
+
const fileListTop = headerOffset + PANE_HEADER + BORDER_WIDTH;
|
|
172
174
|
const fileListBottom = fileListTop + VISIBLE_FILES;
|
|
173
175
|
// Check if click is within file list area
|
|
174
176
|
if (mouseY < fileListTop || mouseY >= fileListBottom) {
|
|
175
177
|
return result; // Clicked on header or outside
|
|
176
178
|
}
|
|
177
179
|
// Calculate file index
|
|
178
|
-
|
|
180
|
+
// Convert from 1-based SGR coordinates to 0-based array indexing
|
|
181
|
+
result.visualRow = (mouseY - 1) - fileListTop;
|
|
179
182
|
const files = result.pane === 'local' ? localFiles : remoteFiles;
|
|
180
183
|
const scroll = result.pane === 'local' ? localScroll : remoteScroll;
|
|
181
184
|
result.fileIndex = scroll + result.visualRow;
|
|
182
185
|
// Validate
|
|
183
186
|
result.isValid = result.fileIndex >= 0 && result.fileIndex < files.length;
|
|
184
187
|
return result;
|
|
185
|
-
}, [localFiles, remoteFiles, localScroll, remoteScroll]);
|
|
188
|
+
}, [localFiles, remoteFiles, localScroll, remoteScroll, headerOffset]);
|
|
186
189
|
const detectClickType = useCallback((currentClick) => {
|
|
187
190
|
if (!lastClickState)
|
|
188
191
|
return 'single';
|