@pipod/cli 0.1.24 → 0.1.26
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/dist/cli.js +1 -0
- package/dist/cli.js.map +1 -1
- package/docs/keyboard-input.md +23 -4
- package/man/pipod-config.5 +1 -1
- package/man/pipod.1 +1 -1
- package/npm-shrinkwrap.json +272 -685
- package/package.json +3 -3
package/docs/keyboard-input.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# Keyboard input in the attached TUI
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
into escape-sequence gibberish.
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
Input defects can turn one key press into several characters, the same character twice, or
|
|
4
|
+
into escape-sequence gibberish. These guards run in the local byte path, ahead of both the
|
|
5
|
+
built-in editor and pod-rendered extension editors. They live in `src/client/runtime/` rather
|
|
6
|
+
than pinning a different pi-tui, because pods and the launcher share the pinned version.
|
|
7
7
|
|
|
8
8
|
## The path
|
|
9
9
|
|
|
@@ -101,6 +101,25 @@ Left open deliberately: the reversed order (raw text first, then the CSI-u). No
|
|
|
101
101
|
terminal writes it, and deduping it would mean dropping a key *event* on suspicion — the one
|
|
102
102
|
direction where a mistake loses input.
|
|
103
103
|
|
|
104
|
+
## 4. Reconnect must not leave the editor unguarded
|
|
105
|
+
|
|
106
|
+
Session replacement clears Pi's extension UI before asynchronously refreshing the remote
|
|
107
|
+
state. That also removes the launcher's input listeners, even though the same local editor
|
|
108
|
+
continues accepting keys. Previously the guards returned only when the refreshed session
|
|
109
|
+
bound its UI: typing during recovery bypassed both the encoding and repeat guards. A failed
|
|
110
|
+
refresh could leave them absent until a later successful recovery. The socket being connected
|
|
111
|
+
does not mean this refresh has finished.
|
|
112
|
+
|
|
113
|
+
`remote-runtime.ts` now rewires the launcher's listeners synchronously after invalidating the
|
|
114
|
+
old UI, before awaiting any refresh. The normal UI bind still unsubscribes and rewires them
|
|
115
|
+
against the new context. This keeps one set of guards active throughout reconnect, pod switch,
|
|
116
|
+
and session replacement, including refresh failures, without restarting the terminal or
|
|
117
|
+
suppressing deliberate repeated presses.
|
|
118
|
+
|
|
119
|
+
Measured on a live pod with the pinned Pi pair: a single dual-encoded press during the real
|
|
120
|
+
reconnect refresh inserted `bb` before the fix and `b` after it. The terminal retained one stdin
|
|
121
|
+
reader; the defect was a missing guard during recovery, not duplicate stdin subscriptions.
|
|
122
|
+
|
|
104
123
|
## Accepted rows
|
|
105
124
|
|
|
106
125
|
Measured with a pty harness against pi 1.0.2 + pi-tui 1.0.2 (the pinned pair), driving
|
package/man/pipod-config.5
CHANGED
package/man/pipod.1
CHANGED