15 Commits

Author SHA1 Message Date
Josh
0ce6c6a561 Strengthen Rust tests for #209/#210: call production code instead of re-implementing parsing
- Extract compute_capture_range() in copy_mode.rs as shared utility
- test_issue209: replace display-message re-implementation with execute_command_string() calls, add show-options popup test, flag combo tests (22->25 tests)
- test_issue210_captures: replace arithmetic formula tests with compute_capture_range() calls, add edge cases (11->12 tests)
- test_issue210_fixes: replace eval_session_filter() helper with expand_format() production calls (34->30 tests)
- Label all server-side contract tests with production code file/line refs
- All 999+ tests pass with 0 failures
2026-04-14 12:47:15 +05:30
Josh
c1ca3c4963 chore: move test/diag scripts from scripts/ to tests/
scripts/ should only contain build/install tooling.
Moved: test_scroll_inject.ps1, diag_enter_selfcontained.ps1,
diag_key_events.ps1, repro_enter_bugs.ps1
2026-04-07 00:48:02 +05:30
Your Name
8cfabd894a fix: use PROCESSOR_ARCHITECTURE env var for arch detection in install script
Fixes #158. RuntimeInformation::OSArchitecture returns null in
PowerShell 5.1 when the script is piped via stdin (irm url | iex).
Switched to PROCESSOR_ARCHITECTURE env var which works universally
across all PS versions and invocation methods. Added WoW64 correction
for 32 bit processes on 64 bit OS.
2026-03-27 17:24:32 +05:30
Your Name
dba5f5c316 fix: proper test infrastructure for install_speed and paste tests
- build.ps1: add portable zip creation in TEMP dir for test_install_speed
- test_install_speed: use TEMP zip path, revert SKIP back to FAIL for missing zip
- test_issue74_paste: use non-interactive PowerShell receiver for large paste
  verification (avoids PSReadLine interpretation and scrollback limits)
- Remove unused find_wrap_target import in server/mod.rs
2026-03-20 12:29:59 +05:30
Your Name
24cc76781f Add NSIS installer, build script, and installer test 2026-03-20 00:28:48 +05:30
Your Name
0dbc242c07 chore: update all URLs and author from marlocarlo to psmux org
- All GitHub URLs: github.com/marlocarlo/* -> github.com/psmux/*
- Author/owner: marlocarlo -> Josh
- LICENSE copyright: computersrmyfriends -> Josh
- RepoOwner, PublisherUrl, raw.githubusercontent.com updated
- winget package ID (marlocarlo.psmux) preserved as-is

Updated 33 files across src, docs, scripts, tests, CI, manifests
2026-03-17 09:31:28 +05:30
Your Name
f9eba2fd41 perf: match Windows Terminal input performance
Three optimizations based on Windows Terminal source code analysis:

1. ConPTY pipe buffer: 4KB → 64KB (WT uses 128KB)
   - Custom create_pipe_with_buffer() replaces filedescriptor::Pipe::new()
   - Reduces kernel transitions during high-throughput I/O

2. Mouse/scroll echo-tracking: all mouse events now trigger 1ms polling
   - ScrollUp/ScrollDown/MouseDown/MouseDrag/MouseUp set echo_pending_until
   - Server drops from 5ms idle poll to 1ms during mouse interaction
   - Matches WT's zero-throttle mouse → PTY pipe approach

3. Stack-allocated SGR mouse encoding (zero heap allocation per event)
   - write_mouse_to_pty uses stack [u8; 32] + std::io::Cursor
   - Eliminates format!() heap allocation on every mouse event

Benchmark results (test_perf_vs_wt.ps1):
  Keystroke P50: 0.6ms (WT ~1ms)  — BETTER
  Keystroke P90: 1.1ms (WT ~5ms)  — BETTER
  Burst P50:     0.2ms (echo mode)
  Scroll rate:   1,934 events/sec (no throttling like WT)
  Throughput:    247,684 chars/sec batched
  Concurrent:    0.6ms P50 during output flood

All 14 perf benchmarks pass. All existing tests pass.
2026-03-02 11:30:23 +05:30
computersrmyfriends
6873308359 Remove psmux ssh wrapper; simplify SSH mouse docs
- Remove run_ssh_wrap() function and 'psmux ssh' subcommand
- Remove Win10 SSH mouse hint warning
- Remove SSH wrapper help text from cli.rs
- Delete scripts/psmux-ssh.sh and psmux-ssh.ps1
- Rewrite README Mouse Over SSH section with clear compatibility table:
  SSH to Win11 server = full mouse from any client OS
  SSH to Win10 server = keyboard only (ConPTY limitation)
  Local use = full mouse on both Win10 and Win11
2026-02-24 23:55:51 +05:30
computersrmyfriends
44b81c8036 feat: mouse over SSH support + Win10 workaround
- Add 'psmux ssh' subcommand: enables mouse reporting on the LOCAL
  terminal before spawning SSH, bypassing ConPTY's DECSET filtering
  on Windows 10 servers
- Add scripts/psmux-ssh.sh and psmux-ssh.ps1 for clients without
  psmux installed (Linux/macOS/WSL/PowerShell)
- ssh_input.rs: add windows_build_number() public helper
- Show Win10 SSH mouse warning before entering raw mode (with 1.5s
  pause so user can read it before the alternate screen opens)
- Update help text in cli.rs with SSH mouse support section
- README: add Mouse Over SSH section explaining Win11 22523+ native
  support vs Win10 workaround, with client-OS comparison table

On Windows 11 build 22523+: mouse works over SSH natively from any
client OS (Linux, macOS, WSL, Windows) with plain 'ssh user@host'.
On Windows 10: use 'psmux ssh user@host' locally, or the helper
scripts, to enable mouse reporting on the local terminal directly.
2026-02-24 22:25:04 +05:30
computersrmyfriends
b1714d95bc Fix invisible text on psmux exit by resetting SGR attributes
- Add SGR reset (\x1b[0m) before leaving alternate screen to clear any
  foreground/background colors that persisted from last ratatui frame
- Add cursor style reset (\x1b[0 q) to restore terminal default cursor
- Make all cleanup code error-safe so terminal state is always restored
  even if run_remote() returns an error, preventing stuck raw mode/alt-screen
2026-02-19 17:59:59 +05:30
computersrmyfriends
41ba7f47c0 feat: add multi-arch builds for x64, x86, and ARM64 (Snapdragon)
- CI workflow now builds all 3 Windows targets
- Release workflow produces separate zips per architecture
- Install script auto-detects architecture (x64/x86/ARM64)
  with ARM64->x64 fallback via Windows emulation
2026-02-09 17:22:09 +05:30
Godwin
4b5a7a645b Fix install script for remote execution via iex 2025-12-01 21:43:05 +05:30
Godwin
0df50caa9b Add install/uninstall scripts for Windows 2025-12-01 21:39:30 +05:30
Godwin
f602b1fcdd Rename project from rustmux/rmux to pmux (PowerShell Mux) 2025-11-30 22:48:23 +05:30
rmux
679dc86702 Initial commit: rustmux terminal multiplexer 2025-11-30 01:46:34 +05:30