lazyclaw 3.99.9 → 3.99.10

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.
Files changed (3) hide show
  1. package/README.md +1 -1
  2. package/cli.mjs +16 -0
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -71,7 +71,7 @@ What you see on launch (TTY only):
71
71
  │ | |__ _ _____ _ _ │
72
72
  │ | / _` |_ / || | '_| │
73
73
  │ |_\__,_/__\_, |_| │
74
- │ LazyClaw |__/ 3.99.9
74
+ │ LazyClaw |__/ 3.99.10
75
75
  ╰──────────────────────────────╯
76
76
 
77
77
  provider · anthropic
package/cli.mjs CHANGED
@@ -1521,6 +1521,13 @@ async function _arrowMenu({ title, subtitle, footer, items, defaultIdx = 0 }) {
1521
1521
  const readline = await import('node:readline');
1522
1522
  readline.emitKeypressEvents(process.stdin);
1523
1523
  if (process.stdin.setRawMode) process.stdin.setRawMode(true);
1524
+ // A previous `readline.createInterface(...).close()` (e.g. from
1525
+ // `_quickPrompt`) leaves stdin paused — the keypress listener we
1526
+ // attach below would never fire and the menu would appear frozen
1527
+ // instead of responding to arrow keys. Resume + ref defensively
1528
+ // before drawing so the picker always receives the first keypress.
1529
+ process.stdin.resume();
1530
+ if (process.stdin.ref) process.stdin.ref();
1524
1531
  let idx = Math.max(0, Math.min(items.length - 1, defaultIdx));
1525
1532
  const accent = (s) => `\x1b[38;5;208m${s}\x1b[0m`;
1526
1533
  const dim = (s) => `\x1b[2m${s}\x1b[0m`;
@@ -3765,6 +3772,15 @@ async function cmdLauncher() {
3765
3772
  async function _quickPrompt(label) {
3766
3773
  const readline = await import('node:readline');
3767
3774
  process.stdout.write('\n');
3775
+ // Make sure stdin is in cooked / line-buffered mode for the
3776
+ // duration of the prompt — a prior `_arrowMenu` may have left raw
3777
+ // mode on, in which case readline.question() never fires its
3778
+ // line-event because each byte is delivered as a keypress instead.
3779
+ if (process.stdin.isTTY && process.stdin.setRawMode) {
3780
+ try { process.stdin.setRawMode(false); } catch (_) {}
3781
+ }
3782
+ process.stdin.resume();
3783
+ if (process.stdin.ref) process.stdin.ref();
3768
3784
  const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
3769
3785
  const ans = await new Promise((resolve) => rl.question(label, resolve));
3770
3786
  rl.close();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lazyclaw",
3
- "version": "3.99.9",
3
+ "version": "3.99.10",
4
4
  "description": "Lazy, elegant terminal CLI for chatting with Claude / OpenAI / Gemini / Ollama and orchestrating multi-step LLM workflows. Banner-on-launch, slash-command ghost autocomplete, persistent sessions, local HTTP gateway.",
5
5
  "keywords": [
6
6
  "claude",