termites 1.0.19 → 1.0.21

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 (2) hide show
  1. package/package.json +1 -1
  2. package/server.js +21 -14
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "termites",
3
- "version": "1.0.19",
3
+ "version": "1.0.21",
4
4
  "description": "Web terminal with server-client architecture for remote shell access",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/server.js CHANGED
@@ -717,17 +717,12 @@ class TermitesServer {
717
717
  <button data-mod="ctrl" class="mod-btn">Ctrl</button>
718
718
  <button data-mod="alt" class="mod-btn">Alt</button>
719
719
  <div class="sep"></div>
720
- <button data-key="ArrowUp">↑</button>
721
- <button data-key="ArrowDown">↓</button>
722
720
  <button data-key="ArrowLeft">←</button>
723
721
  <button data-key="ArrowRight">→</button>
722
+ <button data-key="ArrowUp">↑</button>
723
+ <button data-key="ArrowDown">↓</button>
724
724
  <div class="sep"></div>
725
725
  <button data-seq="/">/</button>
726
- <button data-seq="\\x03">^C</button>
727
- <button data-seq="\\x04">^D</button>
728
- <button data-seq="\\x1a">^Z</button>
729
- <button data-seq="\\x0c">^L</button>
730
- <div class="sep"></div>
731
726
  <button id="copy-btn">Copy</button>
732
727
  <button id="paste-btn">Paste</button>
733
728
  <button id="select-btn" class="mod-btn">Select</button>
@@ -1037,17 +1032,23 @@ class TermitesServer {
1037
1032
  btn.addEventListener('click', handler);
1038
1033
  });
1039
1034
 
1040
- // Copy button - copy selection or last line
1041
- document.getElementById('copy-btn').addEventListener('click', async () => {
1035
+ // Copy button - copy selection
1036
+ const copyBtn = document.getElementById('copy-btn');
1037
+ const handleCopy = async (e) => {
1038
+ e.preventDefault();
1042
1039
  const selection = term.getSelection();
1043
1040
  if (selection) {
1044
1041
  await navigator.clipboard.writeText(selection);
1045
1042
  term.clearSelection();
1046
1043
  }
1047
- });
1044
+ };
1045
+ copyBtn.addEventListener('touchstart', handleCopy, { passive: false });
1046
+ copyBtn.addEventListener('click', handleCopy);
1048
1047
 
1049
1048
  // Paste button
1050
- document.getElementById('paste-btn').addEventListener('click', async () => {
1049
+ const pasteBtn = document.getElementById('paste-btn');
1050
+ const handlePaste = async (e) => {
1051
+ e.preventDefault();
1051
1052
  try {
1052
1053
  const text = await navigator.clipboard.readText();
1053
1054
  if (text && ws?.readyState === WebSocket.OPEN && selectedClientId) {
@@ -1057,14 +1058,18 @@ class TermitesServer {
1057
1058
  console.error('Paste failed:', e);
1058
1059
  }
1059
1060
  term.focus();
1060
- });
1061
+ };
1062
+ pasteBtn.addEventListener('touchstart', handlePaste, { passive: false });
1063
+ pasteBtn.addEventListener('click', handlePaste);
1061
1064
 
1062
1065
  // Select mode button - enables touch selection
1063
1066
  let selectMode = false;
1064
1067
  const selectBtn = document.getElementById('select-btn');
1065
1068
  const termContainer = document.getElementById('terminal-container');
1066
1069
 
1067
- selectBtn.addEventListener('click', () => {
1070
+ const toggleSelectMode = (e) => {
1071
+ e.preventDefault();
1072
+ e.stopPropagation();
1068
1073
  selectMode = !selectMode;
1069
1074
  selectBtn.classList.toggle('active', selectMode);
1070
1075
  termContainer.style.touchAction = selectMode ? 'none' : '';
@@ -1076,7 +1081,9 @@ class TermitesServer {
1076
1081
  termContainer.classList.remove('select-mode');
1077
1082
  term.clearSelection();
1078
1083
  }
1079
- });
1084
+ };
1085
+ selectBtn.addEventListener('touchstart', toggleSelectMode, { passive: false });
1086
+ selectBtn.addEventListener('click', toggleSelectMode);
1080
1087
 
1081
1088
  // Handle touch selection
1082
1089
  let touchStartPos = null;