ghostterm 1.2.1 → 1.2.3

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/CHANGELOG.md CHANGED
@@ -1,9 +1,29 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.2.3 (2026-03-17)
4
+
5
+ ### Features (Frontend)
6
+ - **Long-press acceleration** — Backspace, arrow keys, Space, scroll buttons repeat with increasing speed (150ms → 30ms)
7
+ - **Tap feedback** — all buttons show scale + color animation on press
8
+ - **Paste button always visible** — shows "no file" when empty, glows on upload
9
+ - **iOS file picker fix** — transparent file input overlay (bypasses iOS trusted gesture restriction)
10
+ - **Service Worker removed** — fixes stale cache preventing updates
11
+ - **Landing page SEO** — Open Graph tags, Twitter cards, PWA meta
12
+
13
+ ### Bug Fixes
14
+ - **Cloudflare deploy** — must use `--branch=main` for production (was deploying to Preview)
15
+ - **D-pad escape sequences** — `data-repeat` attribute now properly converts `\x1b` to ESC character
16
+ - **Removed debug console.log** — no longer leaks sessionId to browser console
17
+
18
+ ## 1.2.2 (2026-03-17)
19
+
20
+ ### Bug Fixes
21
+ - **Windows fully hidden** — use VBS launcher instead of `windowsHide` (which still showed in taskbar)
22
+
3
23
  ## 1.2.1 (2026-03-17)
4
24
 
5
25
  ### Bug Fixes
6
- - **Windows background mode** — fixed node-pty crash in detached mode by using `windowsHide` instead of raw detach
26
+ - **Windows background mode** — fixed node-pty crash in detached mode
7
27
  - **Supervisor crash loop** — fixed `--supervisor` arg being caught by "already running" check
8
28
 
9
29
  ## 1.2.0 (2026-03-17)
package/README.md CHANGED
@@ -91,16 +91,18 @@ Open **[ghostterm.pages.dev](https://ghostterm.pages.dev)** in any mobile browse
91
91
  - **Quick keys** — one-tap `y`/`n` for Claude Code approvals
92
92
  - **12345 numpad** — tap to pop up number selection for CLI surveys/prompts (raw keypress, no Enter)
93
93
  - **D-pad** — arrow keys, Enter, Tab, Shift+Tab, Space
94
+ - **Long-press acceleration** — hold Backspace, arrow keys, Space, or scroll buttons to repeat with increasing speed
94
95
  - **`claude` button** — quick-launch menu: new session, resume, continue, dangerous mode
95
96
  - **Ctrl+C (Stop)** — interrupt running processes
96
97
  - **Text input** — full keyboard input with Send button
98
+ - **Tap feedback** — all buttons show visual press animation
97
99
  - **Copy mode** — select and copy terminal text
98
100
 
99
101
  ### File Transfer
100
102
 
101
103
  - **Screen** — capture your terminal screen and send it to your PC as a file
102
104
  - **File upload** — upload files directly from your phone to your desktop
103
- - **Paste button** — after uploading, shows shortened filename; tap to paste the file path into the terminal
105
+ - **Paste button** — always visible; glows for 5 seconds after upload with shortened filename; tap to paste the file path into the terminal
104
106
 
105
107
  ### Visual
106
108
 
package/bin/ghostterm.js CHANGED
@@ -510,17 +510,24 @@ function handleSubcommand() {
510
510
  const out = fs.openSync(LOG_FILE, 'a');
511
511
 
512
512
  if (os.platform() === 'win32') {
513
- // Windows: spawn with hidden window (windowsHide) but NOT detached
514
- // node-pty requires a console; detached:true removes the console and crashes
515
- // windowsHide:true creates a hidden console window
516
- const child = spawn(process.execPath, [__filename, '--supervisor'], {
517
- detached: true,
518
- windowsHide: true,
519
- stdio: ['ignore', out, out],
520
- env: { ...process.env },
521
- });
522
- child.unref();
523
- fs.writeFileSync(PID_FILE, String(child.pid));
513
+ // Windows: use VBS to launch completely hidden (no taskbar, no window)
514
+ // node-pty needs a console; VBS ws.Run with 0 = hidden window
515
+ const vbsFile = path.join(CRED_DIR, 'launcher.vbs');
516
+ const cmd = `"${process.execPath}" "${__filename}" --supervisor`;
517
+ fs.writeFileSync(vbsFile,
518
+ `Set ws = CreateObject("WScript.Shell")\n` +
519
+ `ws.Run "${cmd.replace(/"/g, '""')}", 0, False\n`
520
+ );
521
+ require('child_process').execSync(`cscript //nologo "${vbsFile}"`, { stdio: 'ignore' });
522
+ // Wait for supervisor to write PID file
523
+ const waitUntil = Date.now() + 10000;
524
+ while (Date.now() < waitUntil) {
525
+ if (fs.existsSync(PID_FILE)) {
526
+ const pid = fs.readFileSync(PID_FILE, 'utf8').trim();
527
+ if (pid && isRunning(parseInt(pid))) break;
528
+ }
529
+ Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 500);
530
+ }
524
531
  } else {
525
532
  // macOS/Linux: detached works fine
526
533
  const child = spawn(process.execPath, [__filename, '--supervisor'], {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ghostterm",
3
- "version": "1.2.1",
3
+ "version": "1.2.3",
4
4
  "description": "Mobile terminal for Claude Code — control your PC from your phone",
5
5
  "bin": {
6
6
  "ghostterm": "bin/ghostterm.js"