@pipod/cli 0.1.23 → 0.1.25
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 +36 -5
- 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 +7 -1
- package/man/pipod.1.md +6 -0
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.TH "PIPOD" "1" "November 2026" "0.1.
|
|
1
|
+
.TH "PIPOD" "1" "November 2026" "0.1.25"
|
|
2
2
|
.SH "NAME"
|
|
3
3
|
\fBpipod\fR \- run pi coding\-agent sessions in server\-managed pods
|
|
4
4
|
.SH SYNOPSIS
|
|
@@ -713,6 +713,12 @@ Quitting detaches: the pod keeps running until the server's idle policy reaps
|
|
|
713
713
|
it or `pipod stop` stops it\. Raw pod shells are not available\.
|
|
714
714
|
Attaching to an archived pod offers to restore it first\.
|
|
715
715
|
|
|
716
|
+
The supervisor identifies the exact Pi executable it launched\. Managed installations do not
|
|
717
|
+
start a second Pi just to check its version\. A failed lookup is retried safely during attach
|
|
718
|
+
when possible, without stopping active work; a discovery failure is reported separately from
|
|
719
|
+
an actual version mismatch\. Older supervisors with a cached failed lookup need a stop/attach
|
|
720
|
+
once idle, keeping the workspace files\.
|
|
721
|
+
|
|
716
722
|
Holding a character key types it once, and a press the terminal reports in both of its
|
|
717
723
|
encodings types once too: key repeat stays available for Backspace, Tab and the arrow keys,
|
|
718
724
|
where it is useful while editing\.
|
package/man/pipod.1.md
CHANGED
|
@@ -703,6 +703,12 @@ Quitting detaches: the pod keeps running until the server's idle policy reaps
|
|
|
703
703
|
it or `pipod stop` stops it. Raw pod shells are not available.
|
|
704
704
|
Attaching to an archived pod offers to restore it first.
|
|
705
705
|
|
|
706
|
+
The supervisor identifies the exact Pi executable it launched. Managed installations do not
|
|
707
|
+
start a second Pi just to check its version. A failed lookup is retried safely during attach
|
|
708
|
+
when possible, without stopping active work; a discovery failure is reported separately from
|
|
709
|
+
an actual version mismatch. Older supervisors with a cached failed lookup need a stop/attach
|
|
710
|
+
once idle, keeping the workspace files.
|
|
711
|
+
|
|
706
712
|
Holding a character key types it once, and a press the terminal reports in both of its
|
|
707
713
|
encodings types once too: key repeat stays available for Backspace, Tab and the arrow keys,
|
|
708
714
|
where it is useful while editing.
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pipod/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.25",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@pipod/cli",
|
|
9
|
-
"version": "0.1.
|
|
9
|
+
"version": "0.1.25",
|
|
10
10
|
"license": "AGPL-3.0-only",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@earendil-works/pi-coding-agent": "1.0.2",
|