@lemoncat7/dsh-ssh 1.14.2 → 1.16.20

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.
Files changed (114) hide show
  1. package/README.md +10 -3
  2. package/docs/releases/1.15.0.md +16 -0
  3. package/docs/releases/1.16.0.md +19 -0
  4. package/docs/releases/1.16.1.md +7 -0
  5. package/docs/releases/1.16.10.md +8 -0
  6. package/docs/releases/1.16.11.md +5 -0
  7. package/docs/releases/1.16.12.md +9 -0
  8. package/docs/releases/1.16.13.md +7 -0
  9. package/docs/releases/1.16.14.md +7 -0
  10. package/docs/releases/1.16.15.md +5 -0
  11. package/docs/releases/1.16.16.md +5 -0
  12. package/docs/releases/1.16.17.md +5 -0
  13. package/docs/releases/1.16.18.md +5 -0
  14. package/docs/releases/1.16.19.md +21 -0
  15. package/docs/releases/1.16.2.md +7 -0
  16. package/docs/releases/1.16.20.md +7 -0
  17. package/docs/releases/1.16.3.md +11 -0
  18. package/docs/releases/1.16.4.md +10 -0
  19. package/docs/releases/1.16.5.md +9 -0
  20. package/docs/releases/1.16.6.md +7 -0
  21. package/docs/releases/1.16.7.md +7 -0
  22. package/docs/releases/1.16.8.md +19 -0
  23. package/docs/releases/1.16.9.md +7 -0
  24. package/lib/api.d.ts.map +1 -1
  25. package/lib/api.js +29 -1
  26. package/lib/api.js.map +1 -1
  27. package/lib/client-api.d.ts +1 -0
  28. package/lib/client-api.d.ts.map +1 -1
  29. package/lib/client-api.js.map +1 -1
  30. package/lib/client.d.ts.map +1 -1
  31. package/lib/client.js +381 -140
  32. package/lib/client.js.map +4 -4
  33. package/lib/commands-panel.js +1 -1
  34. package/lib/commands-panel.js.map +1 -1
  35. package/lib/domain.d.ts +3 -0
  36. package/lib/domain.d.ts.map +1 -1
  37. package/lib/domain.js +2 -0
  38. package/lib/domain.js.map +1 -1
  39. package/lib/file-transfer-workspace.d.ts.map +1 -1
  40. package/lib/file-transfer-workspace.js +4 -4
  41. package/lib/file-transfer-workspace.js.map +1 -1
  42. package/lib/host-action-menu.d.ts +10 -0
  43. package/lib/host-action-menu.d.ts.map +1 -0
  44. package/lib/host-action-menu.js +32 -0
  45. package/lib/host-action-menu.js.map +1 -0
  46. package/lib/host-select.d.ts +9 -0
  47. package/lib/host-select.d.ts.map +1 -0
  48. package/lib/host-select.js +92 -0
  49. package/lib/host-select.js.map +1 -0
  50. package/lib/locales/messages.d.ts +256 -0
  51. package/lib/locales/messages.d.ts.map +1 -1
  52. package/lib/locales/messages.js +64 -0
  53. package/lib/locales/messages.js.map +1 -1
  54. package/lib/profile-editor.d.ts.map +1 -1
  55. package/lib/profile-editor.js +4 -1
  56. package/lib/profile-editor.js.map +1 -1
  57. package/lib/remote-workspace-tree.d.ts +4 -0
  58. package/lib/remote-workspace-tree.d.ts.map +1 -1
  59. package/lib/remote-workspace-tree.js +97 -34
  60. package/lib/remote-workspace-tree.js.map +1 -1
  61. package/lib/settings-pane.js +1 -1
  62. package/lib/settings-pane.js.map +1 -1
  63. package/lib/sftp-client.d.ts +3 -1
  64. package/lib/sftp-client.d.ts.map +1 -1
  65. package/lib/sftp-client.js +11 -10
  66. package/lib/sftp-client.js.map +1 -1
  67. package/lib/sftp-path-mapping.d.ts +9 -0
  68. package/lib/sftp-path-mapping.d.ts.map +1 -0
  69. package/lib/sftp-path-mapping.js +36 -0
  70. package/lib/sftp-path-mapping.js.map +1 -0
  71. package/lib/sftp.js +1 -1
  72. package/lib/sftp.js.map +1 -1
  73. package/lib/split-icon.d.ts +4 -0
  74. package/lib/split-icon.d.ts.map +1 -0
  75. package/lib/split-icon.js +5 -0
  76. package/lib/split-icon.js.map +1 -0
  77. package/lib/sync-panel.js +1 -1
  78. package/lib/sync-panel.js.map +1 -1
  79. package/lib/terminal-bootstrap-echo.d.ts +1 -1
  80. package/lib/terminal-bootstrap-echo.d.ts.map +1 -1
  81. package/lib/terminal-bootstrap-echo.js +57 -19
  82. package/lib/terminal-bootstrap-echo.js.map +1 -1
  83. package/lib/terminal-desk-state.d.ts +71 -0
  84. package/lib/terminal-desk-state.d.ts.map +1 -0
  85. package/lib/terminal-desk-state.js +205 -0
  86. package/lib/terminal-desk-state.js.map +1 -0
  87. package/lib/terminal-desk.d.ts +16 -0
  88. package/lib/terminal-desk.d.ts.map +1 -0
  89. package/lib/terminal-desk.js +197 -0
  90. package/lib/terminal-desk.js.map +1 -0
  91. package/lib/terminal-session.d.ts +5 -1
  92. package/lib/terminal-session.d.ts.map +1 -1
  93. package/lib/terminal-session.js +52 -18
  94. package/lib/terminal-session.js.map +1 -1
  95. package/lib/terminal-transport.d.ts.map +1 -1
  96. package/lib/terminal-transport.js +7 -4
  97. package/lib/terminal-transport.js.map +1 -1
  98. package/lib/terminal-workspace-state.d.ts +45 -0
  99. package/lib/terminal-workspace-state.d.ts.map +1 -0
  100. package/lib/terminal-workspace-state.js +110 -0
  101. package/lib/terminal-workspace-state.js.map +1 -0
  102. package/lib/terminal-workspace.d.ts +2 -1
  103. package/lib/terminal-workspace.d.ts.map +1 -1
  104. package/lib/terminal-workspace.js +43 -19
  105. package/lib/terminal-workspace.js.map +1 -1
  106. package/lib/terminal.d.ts +10 -3
  107. package/lib/terminal.d.ts.map +1 -1
  108. package/lib/terminal.js +33 -4
  109. package/lib/terminal.js.map +1 -1
  110. package/lib/vault-password-dialog.d.ts +7 -0
  111. package/lib/vault-password-dialog.d.ts.map +1 -0
  112. package/lib/vault-password-dialog.js +80 -0
  113. package/lib/vault-password-dialog.js.map +1 -0
  114. package/package.json +1 -1
@@ -0,0 +1,80 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from 'react';
3
+ import { api } from './client-api.js';
4
+ import { Dialog, errorMessage } from './ui-components.js';
5
+ import { t } from './i18n.js';
6
+ import { useSshLocale } from './use-ssh-locale.js';
7
+ /** Called only from an explicit reveal/copy action, never from list rendering. */
8
+ export function VaultPasswordDialog({ entry, onClose }) {
9
+ useSshLocale();
10
+ const [password, setPassword] = useState();
11
+ const [busy, setBusy] = useState(false);
12
+ const [copied, setCopied] = useState(false);
13
+ const [error, setError] = useState();
14
+ const request = useRef();
15
+ const field = useRef(null);
16
+ useEffect(() => () => { request.current?.abort(); }, []);
17
+ const read = async () => {
18
+ const controller = new AbortController();
19
+ request.current = controller;
20
+ const result = await api(`/vault/${encodeURIComponent(entry.id)}/password`, { method: 'POST', body: '{}', signal: controller.signal });
21
+ if (controller.signal.aborted)
22
+ throw new DOMException('Aborted', 'AbortError');
23
+ return result.password;
24
+ };
25
+ const act = async (copy) => {
26
+ setBusy(true);
27
+ setError(undefined);
28
+ setCopied(false);
29
+ try {
30
+ const value = password ?? await read();
31
+ if (copy) {
32
+ let success = false;
33
+ try {
34
+ if (navigator.clipboard?.writeText) {
35
+ await navigator.clipboard.writeText(value);
36
+ success = true;
37
+ }
38
+ }
39
+ catch { /* HTTP and clipboard policies may require the selection fallback. */ }
40
+ if (request.current?.signal.aborted)
41
+ return;
42
+ if (!success) {
43
+ const node = document.createElement('textarea');
44
+ node.value = value;
45
+ node.readOnly = true;
46
+ node.style.cssText = 'position:fixed;left:-9999px;top:0;opacity:0';
47
+ const focused = document.activeElement;
48
+ try {
49
+ field.current?.parentElement?.append(node);
50
+ node.select();
51
+ success = document.execCommand('copy');
52
+ }
53
+ finally {
54
+ node.remove();
55
+ if (focused instanceof HTMLElement)
56
+ focused.focus();
57
+ }
58
+ }
59
+ if (!success)
60
+ throw Error(t('vault-password.copyFailed'));
61
+ setCopied(true);
62
+ }
63
+ else
64
+ setPassword(value);
65
+ }
66
+ catch (reason) {
67
+ if (!request.current?.signal.aborted)
68
+ setError(errorMessage(reason));
69
+ }
70
+ finally {
71
+ if (!request.current?.signal.aborted)
72
+ setBusy(false);
73
+ }
74
+ };
75
+ return _jsx(Dialog, { title: t('vault-password.title'), subtitle: `${entry.name} · ${entry.username}`, onClose: onClose, children: _jsxs("div", { className: "dsh-ssh-vault-password", children: [_jsxs("label", { className: "dsh-ssh-field", children: [_jsx("span", { children: t('client.password') }), _jsx("input", { ref: field, readOnly: true, type: password === undefined ? 'password' : 'text', autoComplete: "off", spellCheck: false, "aria-label": t('vault-password.savedPassword'), value: password ?? '', placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022", onFocus: event => event.currentTarget.select() })] }), _jsxs("div", { className: "dsh-ssh-vault-password-actions", children: [_jsx("button", { type: "button", className: "dsh-ssh-secondary-button", disabled: busy, onClick: () => { if (password !== undefined)
76
+ setPassword(undefined);
77
+ else
78
+ void act(false); }, children: password === undefined ? t('vault-password.show') : t('vault-password.hide') }), _jsx("button", { type: "button", className: "dsh-ssh-secondary-button", disabled: busy, onClick: () => { void act(true); }, children: copied ? t('client.copied') : t('vault-password.copy') })] }), busy && _jsx("p", { role: "status", className: "dsh-ssh-form-hint", children: t('vault-password.loading') }), error && _jsx("p", { role: "alert", className: "dsh-ssh-inline-error", children: error })] }) });
79
+ }
80
+ //# sourceMappingURL=vault-password-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault-password-dialog.js","sourceRoot":"","sources":["../src/vault-password-dialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACnD,OAAO,EAAE,GAAG,EAAuB,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,WAAW,CAAA;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD,kFAAkF;AAClF,MAAM,UAAU,mBAAmB,CAAC,EAAE,KAAK,EAAE,OAAO,EAA8C;IAChG,YAAY,EAAE,CAAA;IACd,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,EAAU,CAAA;IAClD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAU,CAAA;IAC5C,MAAM,OAAO,GAAG,MAAM,EAAmB,CAAA;IACzC,MAAM,KAAK,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAA;IAC5C,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACvD,MAAM,IAAI,GAAG,KAAK,IAAqB,EAAE;QACvC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QAAC,OAAO,CAAC,OAAO,GAAG,UAAU,CAAA;QACtE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAuB,UAAU,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;QAC5J,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;QAC9E,OAAO,MAAM,CAAC,QAAQ,CAAA;IACxB,CAAC,CAAA;IACD,MAAM,GAAG,GAAG,KAAK,EAAE,IAAa,EAAiB,EAAE;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QACpD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,QAAQ,IAAI,MAAM,IAAI,EAAE,CAAA;YACtC,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,OAAO,GAAG,KAAK,CAAA;gBACnB,IAAI,CAAC;oBAAC,IAAI,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC;wBAAC,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;wBAAC,OAAO,GAAG,IAAI,CAAA;oBAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,qEAAqE,CAAC,CAAC;gBAC1L,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO;oBAAE,OAAM;gBAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;oBAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;oBAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;oBACzF,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,6CAA6C,CAAA;oBAClE,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAA;oBACtC,IAAI,CAAC;wBAAC,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;wBAAC,IAAI,CAAC,MAAM,EAAE,CAAC;wBAAC,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;oBAAC,CAAC;4BACjG,CAAC;wBAAC,IAAI,CAAC,MAAM,EAAE,CAAC;wBAAC,IAAI,OAAO,YAAY,WAAW;4BAAE,OAAO,CAAC,KAAK,EAAE,CAAA;oBAAC,CAAC;gBAChF,CAAC;gBACD,IAAI,CAAC,OAAO;oBAAE,MAAM,KAAK,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAA;gBACzD,SAAS,CAAC,IAAI,CAAC,CAAA;YACjB,CAAC;;gBAAM,WAAW,CAAC,KAAK,CAAC,CAAA;QAC3B,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO;gBAAE,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;QAAC,CAAC;gBACjF,CAAC;YAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO;gBAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QAAC,CAAC;IAClE,CAAC,CAAA;IACD,OAAO,KAAC,MAAM,IAAC,KAAK,EAAE,CAAC,CAAC,sBAAsB,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,YAC9G,eAAK,SAAS,EAAC,wBAAwB,aACrC,iBAAO,SAAS,EAAC,eAAe,aAAC,yBAAO,CAAC,CAAC,iBAAiB,CAAC,GAAQ,EAAA,gBAAO,GAAG,EAAE,KAAK,EAAE,QAAQ,QAAC,IAAI,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,EAAC,KAAK,EAAC,UAAU,EAAE,KAAK,gBAAc,CAAC,CAAC,8BAA8B,CAAC,EAAE,KAAK,EAAE,QAAQ,IAAI,EAAE,EAAE,WAAW,EAAC,kDAAU,EAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,GAAI,IAAQ,EACjV,eAAK,SAAS,EAAC,gCAAgC,aAAC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,0BAA0B,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,QAAQ,KAAK,SAAS;gCAAE,WAAW,CAAC,SAAS,CAAC,CAAC;;gCAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,YAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAU,EAAA,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,0BAA0B,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,YAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAU,IAAM,EACne,IAAI,IAAI,YAAG,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,mBAAmB,YAAE,CAAC,CAAC,wBAAwB,CAAC,GAAK,EACxF,KAAK,IAAI,YAAG,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,sBAAsB,YAAE,KAAK,GAAK,IAClE,GACC,CAAA;AACX,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lemoncat7/dsh-ssh",
3
- "version": "1.14.2",
3
+ "version": "1.16.20",
4
4
  "description": "Secure SSH, FTP/FTPS/SFTP file transfer, browser terminals, proxies, port forwarding, and session-scoped AI access for DeepSeek Harness",
5
5
  "keywords": [
6
6
  "deepseek-harness",