|
1 | 1 | # CHANGELOG |
| 2 | +## Version 0.63.2 (July 2026) |
| 3 | + |
| 4 | +**Released**: July 14, 2026 |
| 5 | + |
| 6 | +This patch release stabilizes EX/SRX remote shell sessions, improves interactive terminal input handling, and adds a convenience helper for sending command batches. (#32) |
| 7 | + |
| 8 | +--- |
| 9 | + |
| 10 | +### 1. NEW FEATURES |
| 11 | + |
| 12 | +#### **Remote Shell Command Batches (`send_commands`)** |
| 13 | +`ShellSession` now supports `send_commands()` to send multiple shell commands without manually appending line endings: |
| 14 | + |
| 15 | +```python |
| 16 | +from mistapi.device_utils import ex |
| 17 | + |
| 18 | +with ex.createShellSession(apisession, site_id, device_id) as session: |
| 19 | + session.send_commands(["configure", "show | display set | no-more", "exit"]) |
| 20 | + while data := session.recv(timeout=0.5): |
| 21 | + print(data.decode("utf-8", errors="replace"), end="") |
| 22 | +``` |
| 23 | + |
| 24 | +--- |
| 25 | + |
| 26 | +### 2. IMPROVEMENTS |
| 27 | + |
| 28 | +#### **Remote Shell Readiness Handling** |
| 29 | +`ShellSession` now waits for the initial shell output before sending the first keystrokes, then buffers that initial output so callers still receive the banner or prompt on the next `recv()` call. This avoids losing early commands when the WebSocket is connected but the remote PTY is not yet ready. |
| 30 | + |
| 31 | +#### **Interactive Shell Input Handling** |
| 32 | +`interactiveShell()` now uses platform-specific terminal input loops instead of `sshkeyboard`: |
| 33 | +- POSIX terminals use raw-mode input so keystrokes are forwarded directly to the device. |
| 34 | +- Windows consoles map special keys, such as arrows and navigation keys, to terminal escape sequences. |
| 35 | +- Non-interactive stdin now raises a clear `RuntimeError` instructing callers to use `ShellSession` / `createShellSession()` for programmatic access. |
| 36 | + |
| 37 | +#### **Dependency Cleanup** |
| 38 | +Removed the unused `sshkeyboard` dependency and updated the lockfile. |
| 39 | + |
| 40 | +--- |
| 41 | + |
| 42 | +### 3. BUG FIXES |
| 43 | + |
| 44 | +#### **Remote Shell Close Races** |
| 45 | +`ShellSession.send()` now handles WebSocket close races during the readiness wait or `send_binary()` call, preventing teardown windows from surfacing as `WebSocketConnectionClosedException` crashes. |
| 46 | + |
| 47 | +--- |
| 48 | + |
2 | 49 | ## Version 0.63.1 (June 2026) |
3 | 50 |
|
4 | 51 | **Released**: June 14, 2026 |
|
0 commit comments