fpasoterm 1.6.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.
Potentially problematic release.
This version of fpasoterm might be problematic. Click here for more details.
- package/CHANGELOG.md +230 -0
- package/CONTRIBUTING.md +67 -0
- package/INSTALL.ja.md +204 -0
- package/INSTALL.md +229 -0
- package/LICENSE +21 -0
- package/README.ja.md +389 -0
- package/README.md +607 -0
- package/bin/fpasoterm +2882 -0
- package/completions/_fpasoterm +81 -0
- package/completions/fpasoterm.bash +55 -0
- package/completions/fpasoterm.fish +64 -0
- package/completions/fpasoterm.ps1 +47 -0
- package/docs/capability-diagnostics.en.md +77 -0
- package/docs/capability-diagnostics.ja.md +63 -0
- package/docs/completion.en.md +141 -0
- package/docs/completion.ja.md +113 -0
- package/docs/config.en.md +554 -0
- package/docs/config.ja.md +544 -0
- package/docs/debugging.en.md +72 -0
- package/docs/debugging.ja.md +66 -0
- package/docs/diagnostics.en.md +69 -0
- package/docs/diagnostics.ja.md +64 -0
- package/docs/font-diagnostics.en.md +116 -0
- package/docs/font-diagnostics.ja.md +105 -0
- package/docs/fpasoterm-plugin.d.ts +51 -0
- package/docs/known-issues.en.md +23 -0
- package/docs/known-issues.ja.md +23 -0
- package/docs/plugins.en.md +266 -0
- package/docs/plugins.ja.md +176 -0
- package/docs/pr-review.en.md +177 -0
- package/docs/pr-review.ja.md +170 -0
- package/docs/release-checklist.en.md +72 -0
- package/docs/release-checklist.ja.md +71 -0
- package/docs/security.en.md +36 -0
- package/docs/security.ja.md +31 -0
- package/docs/spec.en.md +106 -0
- package/docs/spec.ja.md +99 -0
- package/docs/sshfs.en.md +28 -0
- package/docs/sshfs.ja.md +28 -0
- package/docs/sync.en.md +280 -0
- package/docs/sync.ja.md +280 -0
- package/examples/apply-default-appearance.bat +8 -0
- package/examples/apply-default-appearance.ps1 +7 -0
- package/examples/apply-default-appearance.sh +7 -0
- package/examples/apply-runtime-appearance.bat +8 -0
- package/examples/apply-runtime-appearance.ps1 +7 -0
- package/examples/apply-runtime-appearance.sh +7 -0
- package/examples/config/default-appearance.toml +36 -0
- package/examples/config/minimal.toml +30 -0
- package/examples/config/profiles.toml +20 -0
- package/examples/config/runtime-appearance.toml +24 -0
- package/examples/config/sync-folder.toml +17 -0
- package/examples/config/tui-compatibility.toml +7 -0
- package/examples/config/with-plugins.toml +33 -0
- package/examples/plugins/hello.ts +17 -0
- package/examples/plugins/status-banner.ts +14 -0
- package/examples/plugins/theme.ts +32 -0
- package/examples/plugins/welcome-banner.ts +16 -0
- package/extra/linux/icons/hicolor/128x128/apps/fpasoterm.png +0 -0
- package/extra/linux/icons/hicolor/16x16/apps/fpasoterm.png +0 -0
- package/extra/linux/icons/hicolor/192x192/apps/fpasoterm.png +0 -0
- package/extra/linux/icons/hicolor/256x256/apps/fpasoterm.png +0 -0
- package/extra/linux/icons/hicolor/32x32/apps/fpasoterm.png +0 -0
- package/extra/linux/icons/hicolor/48x48/apps/fpasoterm.png +0 -0
- package/extra/linux/icons/hicolor/512x512/apps/fpasoterm.png +0 -0
- package/extra/linux/icons/hicolor/64x64/apps/fpasoterm.png +0 -0
- package/extra/linux/io.github.oyoguhito.fpasoterm.desktop +10 -0
- package/extra/logo/fpasoterm.png +0 -0
- package/extra/macos/fpasoterm.icns +0 -0
- package/extra/windows/fpasoterm.cmd +40 -0
- package/extra/windows/fpasoterm.ico +0 -0
- package/package.json +81 -0
- package/scripts/build-artifacts.js +183 -0
- package/scripts/generate-icon.js +251 -0
- package/scripts/init-jj-empty-main +41 -0
- package/scripts/install-linux-desktop.js +238 -0
- package/scripts/run +16 -0
- package/scripts/security/scan-secrets.js +89 -0
- package/scripts/tests/smoke.js +2476 -0
- package/scripts/uninstall-desktop.js +20 -0
- package/scripts/uninstall-linux-desktop.js +96 -0
- package/scripts/uninstall-windows-path.js +94 -0
- package/src/config.js +855 -0
- package/src/renderer/confirm.html +71 -0
- package/src/renderer/index.html +223 -0
- package/src/renderer/renderer.js +4166 -0
- package/src/renderer/styles.css +969 -0
- package/src/renderer/vendor/addon-fit/addon-fit.js +2 -0
- package/src/renderer/vendor/addon-image/LICENSE +19 -0
- package/src/renderer/vendor/addon-image/addon-image.js +3 -0
- package/src/renderer/vendor/addon-web-links/LICENSE +19 -0
- package/src/renderer/vendor/addon-web-links/addon-web-links.js +2 -0
- package/src/renderer/vendor/xterm/xterm.css +292 -0
- package/src/renderer/vendor/xterm/xterm.js +2 -0
- package/src-tauri/Cargo.lock +5253 -0
- package/src-tauri/Cargo.toml +29 -0
- package/src-tauri/build.rs +140 -0
- package/src-tauri/capabilities/default.json +13 -0
- package/src-tauri/default-config.toml +128 -0
- package/src-tauri/src/main.rs +9347 -0
- package/src-tauri/tauri.conf.json +60 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>Confirm</title>
|
|
7
|
+
<style>
|
|
8
|
+
:root { color-scheme: dark; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
|
|
9
|
+
body { margin: 0; min-height: 100vh; display: grid; place-items: center; background: #171b21; color: #e8edf2; }
|
|
10
|
+
main { width: min(500px, calc(100vw - 48px)); }
|
|
11
|
+
h1 { margin: 0 0 14px; color: #f5d76e; font-size: 17px; }
|
|
12
|
+
p { margin: 0 0 24px; white-space: pre-wrap; font-size: 14px; line-height: 1.5; }
|
|
13
|
+
footer { display: flex; justify-content: flex-end; gap: 10px; }
|
|
14
|
+
button { min-width: 110px; height: 38px; border: 1px solid #3b4652; border-radius: 4px; background: #222932; color: #e8edf2; font: inherit; font-size: 14px; }
|
|
15
|
+
button:focus-visible { outline: 2px solid #f5d76e; outline-offset: 2px; }
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
<body>
|
|
19
|
+
<main role="dialog" aria-modal="true" aria-labelledby="title">
|
|
20
|
+
<h1 id="title">Close all fpasoterm windows?</h1>
|
|
21
|
+
<p id="message">This will terminate every running fpasoterm window.</p>
|
|
22
|
+
<footer>
|
|
23
|
+
<button id="cancel" type="button">Cancel</button>
|
|
24
|
+
<button id="unmount" type="button" hidden>Unmount & Close</button>
|
|
25
|
+
<button id="ok" type="button">OK</button>
|
|
26
|
+
</footer>
|
|
27
|
+
</main>
|
|
28
|
+
<script>
|
|
29
|
+
const invoke = window.__TAURI__.core.invoke;
|
|
30
|
+
const currentWindow = window.__TAURI__.window.getCurrentWindow();
|
|
31
|
+
const ok = document.getElementById('ok');
|
|
32
|
+
const cancel = document.getElementById('cancel');
|
|
33
|
+
const unmount = document.getElementById('unmount');
|
|
34
|
+
const message = document.getElementById('message');
|
|
35
|
+
invoke('sshfs_status').then((status) => {
|
|
36
|
+
if (status.mounts?.length) {
|
|
37
|
+
message.textContent += `\n\n${status.mounts.length} SSHFS mount(s) will remain active. Reopen FpasoTerm and use Window > SSHFS Mounts to unmount them.`;
|
|
38
|
+
unmount.hidden = false;
|
|
39
|
+
}
|
|
40
|
+
}).catch(() => {});
|
|
41
|
+
const focusConfirmWindow = () => {
|
|
42
|
+
currentWindow.setFocus().catch(() => {});
|
|
43
|
+
cancel.focus({ preventScroll: true });
|
|
44
|
+
};
|
|
45
|
+
focusConfirmWindow();
|
|
46
|
+
window.addEventListener('load', focusConfirmWindow);
|
|
47
|
+
setTimeout(focusConfirmWindow, 80);
|
|
48
|
+
const focusMainAndClose = () => invoke('window_cancel_close_all').catch(() => currentWindow.close().catch(() => {}));
|
|
49
|
+
const closeConfirmWindow = () => currentWindow.close().catch(() => {});
|
|
50
|
+
ok.addEventListener('click', () => invoke('window_close_all_confirmed', { unmountSshfs: false }).catch(closeConfirmWindow));
|
|
51
|
+
unmount.addEventListener('click', () => invoke('window_close_all_confirmed', { unmountSshfs: true }).catch(closeConfirmWindow));
|
|
52
|
+
cancel.addEventListener('click', focusMainAndClose);
|
|
53
|
+
window.addEventListener('keydown', (event) => {
|
|
54
|
+
if (event.key === 'Tab') {
|
|
55
|
+
event.preventDefault();
|
|
56
|
+
(document.activeElement === cancel ? ok : cancel).focus();
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (event.key === 'Enter' && document.activeElement instanceof HTMLButtonElement) {
|
|
60
|
+
event.preventDefault();
|
|
61
|
+
document.activeElement.click();
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (event.key === 'Escape') {
|
|
65
|
+
event.preventDefault();
|
|
66
|
+
focusMainAndClose();
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
</script>
|
|
70
|
+
</body>
|
|
71
|
+
</html>
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="ja">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>fpasoterm</title>
|
|
7
|
+
<link rel="stylesheet" href="./vendor/xterm/xterm.css">
|
|
8
|
+
<link rel="stylesheet" href="./styles.css">
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<header id="drag-region" data-tauri-drag-region>
|
|
12
|
+
<span id="window-title">fpasoterm</span>
|
|
13
|
+
<div id="window-controls" aria-label="Window controls">
|
|
14
|
+
<div id="window-menu">
|
|
15
|
+
<span id="terminal-log-status" hidden aria-live="polite">Logging</span>
|
|
16
|
+
<span id="sshfs-mount-status" hidden aria-live="polite">SSHFS</span>
|
|
17
|
+
<button id="window-menu-toggle" type="button" aria-label="Open window menu" aria-expanded="false" aria-keyshortcuts="Control+Shift+M Control+Shift+L">☰</button>
|
|
18
|
+
<div id="window-menu-items" role="menu" hidden>
|
|
19
|
+
<div id="keybinding-prefix" role="note">Shortcut prefix: Ctrl+Shift</div>
|
|
20
|
+
<div class="window-menu-submenu" data-menu-submenu="log">
|
|
21
|
+
<button id="log-menu-toggle" class="window-menu-submenu-toggle" type="button" role="menuitem" aria-haspopup="menu" aria-controls="log-menu-items" aria-expanded="false">Log</button>
|
|
22
|
+
<div id="log-menu-items" class="window-menu-submenu-items" role="menu" hidden>
|
|
23
|
+
<button id="terminal-log-toggle" type="button" role="menuitem" aria-keyshortcuts="Control+Shift+S">Log Start (S)</button>
|
|
24
|
+
<button id="terminal-log-show" type="button" role="menuitem" aria-keyshortcuts="Control+Shift+P">Log Show (P)</button>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
<div class="window-menu-submenu" data-menu-submenu="sync">
|
|
28
|
+
<button id="sync-menu-toggle" class="window-menu-submenu-toggle" type="button" role="menuitem" aria-haspopup="menu" aria-controls="sync-menu-items" aria-expanded="false">Sync</button>
|
|
29
|
+
<div id="sync-menu-items" class="window-menu-submenu-items" role="menu" hidden>
|
|
30
|
+
<button id="sync-status" type="button" role="menuitem">Sync Status</button>
|
|
31
|
+
<button id="sync-clean" type="button" role="menuitem">Sync Clean</button>
|
|
32
|
+
<button id="sshfs-manager" type="button" role="menuitem" aria-label="Manage SSHFS mounts">SSHFS Mounts</button>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
<div class="window-menu-submenu" data-menu-submenu="diagnostics">
|
|
36
|
+
<button id="diagnostics-menu-toggle" class="window-menu-submenu-toggle" type="button" role="menuitem" aria-haspopup="menu" aria-controls="diagnostics-menu-items" aria-expanded="false">Diagnostics</button>
|
|
37
|
+
<div id="diagnostics-menu-items" class="window-menu-submenu-items" role="menu" hidden>
|
|
38
|
+
<button id="font-glyph-test" type="button" role="menuitem" aria-label="Show font and glyph diagnostics">Font / Glyph Test</button>
|
|
39
|
+
<button id="terminal-capability-test" type="button" role="menuitem" aria-label="Show terminal capability diagnostics">Capability Test</button>
|
|
40
|
+
<button id="terminal-kill" type="button" role="menuitem" aria-label="Force-stop the current terminal process" aria-keyshortcuts="Control+Shift+K">Kill (K)</button>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
<button id="terminal-copy" type="button" role="menuitem" aria-label="Copy selected text" aria-keyshortcuts="Control+Shift+C">Copy (C)</button>
|
|
44
|
+
<button id="terminal-paste" type="button" role="menuitem" aria-label="Paste clipboard text" aria-keyshortcuts="Control+Shift+V">Paste (V)</button>
|
|
45
|
+
<div id="plugin-menu-section" class="window-menu-submenu" data-menu-submenu="plugins" hidden>
|
|
46
|
+
<button id="plugin-menu-toggle" class="window-menu-submenu-toggle" type="button" role="menuitem" aria-haspopup="menu" aria-controls="plugin-command-items" aria-expanded="false">Plugins</button>
|
|
47
|
+
<div id="plugin-command-items" class="window-menu-submenu-items" role="menu" hidden></div>
|
|
48
|
+
</div>
|
|
49
|
+
<div class="window-menu-submenu" data-menu-submenu="window">
|
|
50
|
+
<button id="window-actions-menu-toggle" class="window-menu-submenu-toggle" type="button" role="menuitem" aria-haspopup="menu" aria-controls="window-actions-menu-items" aria-expanded="false">Window</button>
|
|
51
|
+
<div id="window-actions-menu-items" class="window-menu-submenu-items" role="menu" hidden>
|
|
52
|
+
<button id="new-window" type="button" role="menuitem" aria-label="Open a new fpasoterm window" aria-keyshortcuts="Control+Shift+N">New (N)</button>
|
|
53
|
+
<button id="new-window-cwd" type="button" role="menuitem" aria-label="Open a new terminal window in the OSC 7 current directory" aria-keyshortcuts="Control+Shift+O">New CWD (o)</button>
|
|
54
|
+
<button id="terminal-broadcast" type="button" role="menuitem" aria-label="Send text to all fpasoterm windows" aria-keyshortcuts="Control+Shift+B">Broadcast (B)</button>
|
|
55
|
+
<button id="arrange-window" type="button" role="menuitem" aria-label="Arrange fpasoterm windows" aria-keyshortcuts="Control+Shift+T">Tile (T)</button>
|
|
56
|
+
<button id="close-all-windows" type="button" role="menuitem" aria-label="Close all fpasoterm windows" aria-keyshortcuts="Control+Shift+X">Close All (X)</button>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
<button id="keyboard-shortcuts-help" type="button" role="menuitem" aria-label="Show keyboard shortcuts" aria-keyshortcuts="Control+Shift+H">Help (H)</button>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
<button id="minimize-window" type="button" aria-label="Minimize">-</button>
|
|
63
|
+
<button id="maximize-window" type="button" aria-label="Maximize">[]</button>
|
|
64
|
+
<button id="close-window" type="button" aria-label="Close">x</button>
|
|
65
|
+
</div>
|
|
66
|
+
</header>
|
|
67
|
+
<main id="terminal"></main>
|
|
68
|
+
<div id="ime-preedit" hidden aria-live="polite" aria-label="IME preedit text"></div>
|
|
69
|
+
<div id="ime-status" hidden aria-live="polite">IME composing...</div>
|
|
70
|
+
<pre id="terminal-mirror" hidden aria-label="Terminal data mirror"></pre>
|
|
71
|
+
<div class="resize-edge resize-edge-top" data-resize-direction="north"></div>
|
|
72
|
+
<div class="resize-edge resize-edge-right" data-resize-direction="east"></div>
|
|
73
|
+
<div class="resize-edge resize-edge-bottom" data-resize-direction="south"></div>
|
|
74
|
+
<div class="resize-edge resize-edge-left" data-resize-direction="west"></div>
|
|
75
|
+
<div class="resize-corner resize-corner-top-left" data-resize-direction="northWest"></div>
|
|
76
|
+
<div class="resize-corner resize-corner-top-right" data-resize-direction="northEast"></div>
|
|
77
|
+
<div class="resize-corner resize-corner-bottom-right" data-resize-direction="southEast"></div>
|
|
78
|
+
<div class="resize-corner resize-corner-bottom-left" data-resize-direction="southWest"></div>
|
|
79
|
+
<section id="diagnostics-panel" hidden tabindex="-1">
|
|
80
|
+
<div class="diagnostics-toolbar" data-panel-drag-handle>
|
|
81
|
+
<span id="diagnostics-title">Diagnostics</span>
|
|
82
|
+
<div class="diagnostics-actions">
|
|
83
|
+
<select id="terminal-log-select" hidden aria-label="Terminal log files"></select>
|
|
84
|
+
<input id="terminal-log-search" type="search" hidden aria-label="Search terminal log text" placeholder="Search">
|
|
85
|
+
<button id="terminal-log-search-next" type="button" hidden aria-label="Search next match. Use N for next and P for previous.">Search</button>
|
|
86
|
+
<span id="terminal-log-search-status" hidden aria-live="polite"></span>
|
|
87
|
+
<button id="terminal-log-show-selected" type="button" hidden>Show Selected</button>
|
|
88
|
+
<button id="terminal-log-delete-selected" type="button" hidden>Delete Selected</button>
|
|
89
|
+
<button id="terminal-log-delete-all" type="button" hidden>Delete All</button>
|
|
90
|
+
<button id="check-for-updates" type="button" hidden>Check for Updates</button>
|
|
91
|
+
<select id="terminal-encoding-select" hidden aria-label="Terminal output encoding">
|
|
92
|
+
<option value="utf-8">UTF-8</option>
|
|
93
|
+
<option value="shift-jis">Shift_JIS</option>
|
|
94
|
+
<option value="euc-jp">EUC-JP</option>
|
|
95
|
+
</select>
|
|
96
|
+
<button id="terminal-encoding-apply" type="button" hidden>Save Encoding</button>
|
|
97
|
+
<button id="close-diagnostics" type="button" aria-label="Close diagnostics">Close</button>
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
<textarea id="diagnostics" readonly aria-label="Diagnostics"></textarea>
|
|
101
|
+
<pre id="font-glyph-preview" hidden tabindex="0" aria-label="Font and glyph diagnostics"></pre>
|
|
102
|
+
<pre id="terminal-capability-preview" hidden tabindex="0" aria-label="Terminal capability diagnostics"></pre>
|
|
103
|
+
<div id="diagnostics-path"></div>
|
|
104
|
+
<div id="terminal-log-confirm" hidden role="dialog" aria-modal="true" aria-labelledby="terminal-log-confirm-title">
|
|
105
|
+
<div class="terminal-log-confirm-card">
|
|
106
|
+
<div id="terminal-log-confirm-title">Confirm</div>
|
|
107
|
+
<pre id="terminal-log-confirm-message"></pre>
|
|
108
|
+
<div class="terminal-log-confirm-actions">
|
|
109
|
+
<button id="terminal-log-confirm-ok" type="button">OK</button>
|
|
110
|
+
<button id="terminal-log-confirm-cancel" type="button">Cancel</button>
|
|
111
|
+
</div>
|
|
112
|
+
</div>
|
|
113
|
+
</div>
|
|
114
|
+
</section>
|
|
115
|
+
<section id="close-all-confirm" hidden role="dialog" aria-modal="true" aria-labelledby="close-all-confirm-title">
|
|
116
|
+
<div class="terminal-log-confirm-card">
|
|
117
|
+
<div id="close-all-confirm-title">Confirm</div>
|
|
118
|
+
<pre id="close-all-confirm-message"></pre>
|
|
119
|
+
<div class="terminal-log-confirm-actions">
|
|
120
|
+
<button id="close-all-confirm-ok" type="button">OK</button>
|
|
121
|
+
<button id="close-all-confirm-cancel" type="button">Cancel</button>
|
|
122
|
+
</div>
|
|
123
|
+
</div>
|
|
124
|
+
</section>
|
|
125
|
+
<section id="terminal-broadcast-dialog" hidden role="dialog" aria-modal="true" aria-labelledby="terminal-broadcast-title">
|
|
126
|
+
<div class="terminal-log-confirm-card terminal-broadcast-card">
|
|
127
|
+
<div id="terminal-broadcast-title" class="panel-drag-title" data-panel-drag-handle>Broadcast Input</div>
|
|
128
|
+
<textarea id="terminal-broadcast-text" aria-label="Text to send to fpasoterm windows. Press Shift+Enter to send." aria-describedby="terminal-broadcast-hint" spellcheck="false"></textarea>
|
|
129
|
+
<div id="terminal-broadcast-hint"><strong>Send: Shift+Enter</strong>. New line: Enter.</div>
|
|
130
|
+
<div id="terminal-broadcast-focus-status" aria-live="polite">Keyboard focus: Input</div>
|
|
131
|
+
<div id="terminal-broadcast-control-picker">
|
|
132
|
+
<label>Control byte
|
|
133
|
+
<select id="terminal-broadcast-control" aria-label="Control byte to insert">
|
|
134
|
+
<option value="">Select</option>
|
|
135
|
+
<option value="enter">Enter / CR (0x0D)</option>
|
|
136
|
+
<option value="tab">Tab (0x09)</option>
|
|
137
|
+
<option value="ctrl-c">Ctrl+C (0x03)</option>
|
|
138
|
+
<option value="ctrl-d">Ctrl+D (0x04)</option>
|
|
139
|
+
<option value="ctrl-x">Ctrl+X (0x18)</option>
|
|
140
|
+
<option value="ctrl-z">Ctrl+Z (0x1A)</option>
|
|
141
|
+
<option value="alt-prefix">Alt prefix / Esc (0x1B)</option>
|
|
142
|
+
</select>
|
|
143
|
+
</label>
|
|
144
|
+
<button id="terminal-broadcast-control-insert" type="button">Insert</button>
|
|
145
|
+
<span id="terminal-broadcast-control-status" aria-live="polite"></span>
|
|
146
|
+
</div>
|
|
147
|
+
<fieldset id="terminal-broadcast-targets">
|
|
148
|
+
<legend>Local windows</legend>
|
|
149
|
+
<div id="terminal-broadcast-target-list" aria-live="polite"></div>
|
|
150
|
+
<div class="terminal-broadcast-target-actions">
|
|
151
|
+
<button id="terminal-broadcast-select-all" type="button">Select All</button>
|
|
152
|
+
<button id="terminal-broadcast-select-none" type="button">Select None</button>
|
|
153
|
+
</div>
|
|
154
|
+
</fieldset>
|
|
155
|
+
<label id="terminal-broadcast-sync-label"><input id="terminal-broadcast-sync" type="checkbox"> Include synced channel</label>
|
|
156
|
+
<div class="terminal-log-confirm-actions">
|
|
157
|
+
<button id="terminal-broadcast-send" type="button">Send (Shift+Enter)</button>
|
|
158
|
+
<button id="terminal-broadcast-cancel" type="button">Cancel</button>
|
|
159
|
+
</div>
|
|
160
|
+
</div>
|
|
161
|
+
</section>
|
|
162
|
+
<section id="sshfs-manager-dialog" hidden role="dialog" aria-modal="true" aria-labelledby="sshfs-manager-title">
|
|
163
|
+
<div class="terminal-log-confirm-card sshfs-manager-card">
|
|
164
|
+
<div id="sshfs-manager-title" class="panel-drag-title">SSHFS Mounts</div>
|
|
165
|
+
<p class="sshfs-manager-description">Mount a remote directory under FpasoTerm User/mounts. Passwords are used once and are never saved.</p>
|
|
166
|
+
<output id="sshfs-manager-result" tabindex="-1" aria-live="polite"></output>
|
|
167
|
+
<div class="sshfs-local-path-actions">
|
|
168
|
+
<span>Local path:</span>
|
|
169
|
+
<a id="sshfs-manager-local-path" aria-live="polite">Not mounted</a>
|
|
170
|
+
</div>
|
|
171
|
+
<label>Saved mount<select id="sshfs-manager-saved-mounts"><option value="">Select a saved mount</option></select></label>
|
|
172
|
+
<form id="sshfs-manager-form">
|
|
173
|
+
<label>SSH host<input id="sshfs-manager-host" required autocomplete="off" placeholder="host.example"></label>
|
|
174
|
+
<label>SSH user<input id="sshfs-manager-user" required autocomplete="off" placeholder="user"></label>
|
|
175
|
+
<label>SSH port<input id="sshfs-manager-port" type="number" min="1" max="65535" value="22" required></label>
|
|
176
|
+
<label>Remote absolute path<input id="sshfs-manager-remote-path" value="/" required autocomplete="off"></label>
|
|
177
|
+
<label>Local mount name<input id="sshfs-manager-mount-name" required pattern="[A-Za-z0-9._-]+" placeholder="project"></label>
|
|
178
|
+
<label>Optional SSH identity file<input id="sshfs-manager-identity-file" autocomplete="off" placeholder="Leave empty to use normal SSH selection"></label>
|
|
179
|
+
<label>Optional SSH password
|
|
180
|
+
<span class="sshfs-password-control">
|
|
181
|
+
<input id="sshfs-manager-password" type="password" autocomplete="new-password" placeholder="Never saved">
|
|
182
|
+
<button id="sshfs-manager-password-toggle" type="button" aria-controls="sshfs-manager-password" aria-pressed="false">Show</button>
|
|
183
|
+
</span>
|
|
184
|
+
</label>
|
|
185
|
+
<p class="sshfs-manager-warning">Password mode requires SSHFS support for <code>-o password_stdin</code>. Empty password uses normal SSH key, config, and agent selection.</p>
|
|
186
|
+
<div class="terminal-log-confirm-actions">
|
|
187
|
+
<button id="sshfs-manager-mount" type="submit">Mount</button>
|
|
188
|
+
<button id="sshfs-manager-unmount" type="button">Unmount</button>
|
|
189
|
+
<button id="sshfs-manager-unmount-all" type="button">Unmount All</button>
|
|
190
|
+
<button id="sshfs-manager-forget" type="button">Forget Saved</button>
|
|
191
|
+
<button id="sshfs-manager-close" type="button">Close</button>
|
|
192
|
+
</div>
|
|
193
|
+
</form>
|
|
194
|
+
</div>
|
|
195
|
+
</section>
|
|
196
|
+
<section id="terminal-broadcast-confirm" hidden role="dialog" aria-modal="true" aria-labelledby="terminal-broadcast-confirm-title">
|
|
197
|
+
<div class="terminal-log-confirm-card">
|
|
198
|
+
<div id="terminal-broadcast-confirm-title">Confirm Broadcast</div>
|
|
199
|
+
<pre id="terminal-broadcast-confirm-message"></pre>
|
|
200
|
+
<div class="terminal-log-confirm-actions">
|
|
201
|
+
<button id="terminal-broadcast-confirm-ok" type="button">Send Anyway</button>
|
|
202
|
+
<button id="terminal-broadcast-confirm-cancel" type="button">Cancel</button>
|
|
203
|
+
</div>
|
|
204
|
+
</div>
|
|
205
|
+
</section>
|
|
206
|
+
<section id="terminal-url-dialog" hidden role="dialog" aria-modal="true" aria-labelledby="terminal-url-title">
|
|
207
|
+
<div class="terminal-log-confirm-card">
|
|
208
|
+
<div id="terminal-url-title">Terminal URL</div>
|
|
209
|
+
<pre id="terminal-url-message"></pre>
|
|
210
|
+
<div class="terminal-log-confirm-actions">
|
|
211
|
+
<button id="terminal-url-copy" type="button">Copy URL</button>
|
|
212
|
+
<button id="terminal-url-open" type="button">Open Externally</button>
|
|
213
|
+
<button id="terminal-url-cancel" type="button">Cancel</button>
|
|
214
|
+
</div>
|
|
215
|
+
</div>
|
|
216
|
+
</section>
|
|
217
|
+
<script src="./vendor/xterm/xterm.js"></script>
|
|
218
|
+
<script src="./vendor/addon-fit/addon-fit.js"></script>
|
|
219
|
+
<script src="./vendor/addon-image/addon-image.js"></script>
|
|
220
|
+
<script src="./vendor/addon-web-links/addon-web-links.js"></script>
|
|
221
|
+
<script src="./renderer.js"></script>
|
|
222
|
+
</body>
|
|
223
|
+
</html>
|