@nanhara/hara 0.123.0 → 0.123.1
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 +12 -0
- package/dist/tui/bracketed-paste.js +9 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,18 @@ All notable changes to `@nanhara/hara`.
|
|
|
5
5
|
> Versioning (pre-1.0, SemVer-style): the **minor** (middle) number bumps for a **new feature**; the
|
|
6
6
|
> **patch** (last) number bumps for **optimizations/fixes of existing features**.
|
|
7
7
|
|
|
8
|
+
## 0.123.1 — 2026-07-15 — restore default TUI keyboard input
|
|
9
|
+
|
|
10
|
+
- **The bracketed-paste proxy now resumes the real terminal stream.** The main TUI closes its temporary
|
|
11
|
+
readline owner before Ink mounts, which leaves `process.stdin` explicitly paused. 0.123.0 forwarded raw-mode
|
|
12
|
+
calls through the new proxy but did not resume that wrapped stream, so the interface rendered while ordinary
|
|
13
|
+
keystrokes never reached the input box. The proxy now mirrors Ink's read/raw lifecycle by resuming on demand
|
|
14
|
+
and pausing again during cleanup.
|
|
15
|
+
- **The regression starts from production's actual precondition.** A paused-stdin test verifies ordinary input,
|
|
16
|
+
raw-mode enable/disable, and cleanup instead of relying only on a naturally flowing test stream. Real PTY
|
|
17
|
+
smoke covers ordinary typing, multiline bracketed paste without auto-submit, and terminal-mode restoration.
|
|
18
|
+
Users on 0.123.0 should upgrade; `HARA_TUI=0 hara` remains a temporary classic-input workaround.
|
|
19
|
+
|
|
8
20
|
## 0.123.0 — 2026-07-15 — task-aware interaction and input/security hardening
|
|
9
21
|
|
|
10
22
|
- **Conversation and execution are separate state.** Sessions now persist a bounded, redacted task record
|
|
@@ -127,10 +127,17 @@ export class BracketedPasteInput extends Readable {
|
|
|
127
127
|
}
|
|
128
128
|
incompleteTimeoutMs;
|
|
129
129
|
_read() {
|
|
130
|
-
//
|
|
130
|
+
// readline.close() explicitly pauses process.stdin before the main TUI mounts. Ink reads this
|
|
131
|
+
// proxy rather than the real terminal, so its readable demand must resume the wrapped stream.
|
|
132
|
+
// Without this hand-off the frame renders normally but every key remains stuck upstream.
|
|
133
|
+
this.source.resume?.();
|
|
131
134
|
}
|
|
132
135
|
setRawMode(enabled) {
|
|
133
136
|
this.source.setRawMode?.(enabled);
|
|
137
|
+
if (enabled)
|
|
138
|
+
this.source.resume?.();
|
|
139
|
+
else
|
|
140
|
+
this.source.pause?.();
|
|
134
141
|
return this;
|
|
135
142
|
}
|
|
136
143
|
ref() {
|
|
@@ -236,6 +243,7 @@ export class BracketedPasteInput extends Readable {
|
|
|
236
243
|
this.source.off("data", this.onData);
|
|
237
244
|
this.source.off("end", this.onEnd);
|
|
238
245
|
this.source.off("error", this.onError);
|
|
246
|
+
this.source.pause?.();
|
|
239
247
|
this.push(null);
|
|
240
248
|
}
|
|
241
249
|
}
|