@tooee/choose 0.1.18 → 0.1.20

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ChooseOverlay.d.ts","sourceRoot":"","sources":["../src/ChooseOverlay.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAG5C,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;IACnD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpD,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB;AAED,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EAAE,aAAa,EACpB,MAAM,EACN,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,QAAQ,GACT,EAAE,kBAAkB,6BAsLpB"}
1
+ {"version":3,"file":"ChooseOverlay.d.ts","sourceRoot":"","sources":["../src/ChooseOverlay.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAG5C,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;IACnD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpD,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB;AAED,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EAAE,aAAa,EACpB,MAAM,EACN,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,QAAQ,GACT,EAAE,kBAAkB,6BAoOpB"}
@@ -1,8 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
2
2
  import { useState, useEffect, useRef, useCallback, useMemo } from "react";
3
- import { useKeyboard } from "@opentui/react";
4
3
  import { useTheme } from "@tooee/themes";
5
- import { useMode, useSetMode } from "@tooee/commands";
4
+ import { useCommand, useMode, useSetMode } from "@tooee/commands";
6
5
  import { fuzzyFilter } from "./fuzzy.js";
7
6
  export function ChooseOverlay({ items: itemsOrLoader, prompt, placeholder, emptyMessage, onSelect, onCancel, }) {
8
7
  const { theme } = useTheme();
@@ -42,49 +41,96 @@ export function ChooseOverlay({ items: itemsOrLoader, prompt, placeholder, empty
42
41
  onSelect(match.item);
43
42
  }
44
43
  }, [filteredItems, activeIndex, onSelect]);
45
- useKeyboard((key) => {
46
- if (key.name === "escape") {
47
- key.preventDefault();
48
- if (mode === "insert") {
49
- setMode("cursor");
50
- }
51
- else {
52
- onCancel();
53
- }
54
- return;
44
+ const leaveInsertModeOrCancel = useCallback(() => {
45
+ if (mode === "insert") {
46
+ setMode("cursor");
55
47
  }
56
- if (mode === "cursor") {
57
- if (key.raw === "i" || key.raw === "a") {
58
- key.preventDefault();
59
- setMode("insert");
60
- return;
61
- }
62
- if (key.raw === "j") {
63
- key.preventDefault();
64
- moveDown();
65
- return;
66
- }
67
- if (key.raw === "k") {
68
- key.preventDefault();
69
- moveUp();
70
- return;
71
- }
72
- }
73
- if (key.name === "return") {
74
- key.preventDefault();
75
- confirm();
76
- return;
77
- }
78
- if (key.name === "up" || (key.ctrl && key.name === "p")) {
79
- key.preventDefault();
80
- moveUp();
81
- return;
82
- }
83
- if (key.name === "down" || (key.ctrl && key.name === "n")) {
84
- key.preventDefault();
85
- moveDown();
86
- return;
48
+ else {
49
+ onCancel();
87
50
  }
51
+ }, [mode, onCancel, setMode]);
52
+ const enterInsertMode = useCallback(() => {
53
+ setMode("insert");
54
+ }, [setMode]);
55
+ useCommand({
56
+ id: "choose-overlay:escape",
57
+ title: "Back / cancel",
58
+ hotkey: "Escape",
59
+ modes: ["insert", "cursor"],
60
+ hidden: true,
61
+ handler: leaveInsertModeOrCancel,
62
+ });
63
+ useCommand({
64
+ id: "choose-overlay:insert-mode-i",
65
+ title: "Insert mode",
66
+ hotkey: "i",
67
+ modes: ["cursor"],
68
+ hidden: true,
69
+ handler: enterInsertMode,
70
+ });
71
+ useCommand({
72
+ id: "choose-overlay:insert-mode-a",
73
+ title: "Insert mode",
74
+ hotkey: "a",
75
+ modes: ["cursor"],
76
+ hidden: true,
77
+ handler: enterInsertMode,
78
+ });
79
+ useCommand({
80
+ id: "choose-overlay:move-down-vim",
81
+ title: "Move down",
82
+ hotkey: "j",
83
+ modes: ["cursor"],
84
+ hidden: true,
85
+ handler: moveDown,
86
+ });
87
+ useCommand({
88
+ id: "choose-overlay:move-up-vim",
89
+ title: "Move up",
90
+ hotkey: "k",
91
+ modes: ["cursor"],
92
+ hidden: true,
93
+ handler: moveUp,
94
+ });
95
+ useCommand({
96
+ id: "choose-overlay:confirm",
97
+ title: "Confirm",
98
+ hotkey: "Enter",
99
+ modes: ["insert", "cursor"],
100
+ hidden: true,
101
+ handler: confirm,
102
+ });
103
+ useCommand({
104
+ id: "choose-overlay:move-up",
105
+ title: "Move up",
106
+ hotkey: "up",
107
+ modes: ["insert", "cursor"],
108
+ hidden: true,
109
+ handler: moveUp,
110
+ });
111
+ useCommand({
112
+ id: "choose-overlay:move-up-ctrl-p",
113
+ title: "Move up",
114
+ hotkey: "ctrl+p",
115
+ modes: ["insert", "cursor"],
116
+ hidden: true,
117
+ handler: moveUp,
118
+ });
119
+ useCommand({
120
+ id: "choose-overlay:move-down",
121
+ title: "Move down",
122
+ hotkey: "down",
123
+ modes: ["insert", "cursor"],
124
+ hidden: true,
125
+ handler: moveDown,
126
+ });
127
+ useCommand({
128
+ id: "choose-overlay:move-down-ctrl-n",
129
+ title: "Move down",
130
+ hotkey: "ctrl+n",
131
+ modes: ["insert", "cursor"],
132
+ hidden: true,
133
+ handler: moveDown,
88
134
  });
89
135
  // Auto-scroll to keep active item visible
90
136
  useEffect(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"ChooseOverlay.js","sourceRoot":"","sources":["../src/ChooseOverlay.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChooseOverlay.js","sourceRoot":"","sources":["../src/ChooseOverlay.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../src/launch.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAEvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEpF,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,qBAAqB,CAAA;IACtC,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAA;CAC7B;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAyCpF"}
1
+ {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../src/launch.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAEvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEpF,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,qBAAqB,CAAA;IACtC,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAA;CAC7B;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAkDpF"}
package/dist/launch.js CHANGED
@@ -3,7 +3,7 @@ import * as fs from "node:fs";
3
3
  import * as tty from "node:tty";
4
4
  import { createCliRenderer } from "@opentui/core";
5
5
  import { createRoot } from "@opentui/react";
6
- import { TooeeProvider } from "@tooee/shell";
6
+ import { TooeeProvider, guardTerminalHealth } from "@tooee/shell";
7
7
  import { Choose } from "./Choose.js";
8
8
  export async function launch(opts) {
9
9
  // When stdin is piped (not a TTY), open /dev/tty for keyboard input
@@ -28,9 +28,18 @@ export async function launch(opts) {
28
28
  createCliRenderer({
29
29
  exitOnCtrlC: false,
30
30
  ...(ttyStdin ? { stdin: ttyStdin } : {}),
31
- }).then((r) => {
31
+ })
32
+ .then((r) => {
32
33
  renderer = r;
34
+ guardTerminalHealth(r);
33
35
  createRoot(r).render(_jsx(TooeeProvider, { initialMode: "insert", children: _jsx(Choose, { contentProvider: opts.contentProvider, options: opts.options, actions: opts.actions, onConfirm: (result) => cleanup(result), onCancel: () => cleanup(null) }) }));
36
+ })
37
+ .catch(() => {
38
+ // Renderer init failed — release /dev/tty and resolve so the caller never hangs.
39
+ if (ttyStdin) {
40
+ ttyStdin.destroy();
41
+ }
42
+ resolve(null);
34
43
  });
35
44
  });
36
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"launch.js","sourceRoot":"","sources":["../src/launch.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AASpC,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAyB;IACpD,oEAAoE;IACpE,yDAAyD;IACzD,MAAM,YAAY,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAA;IACzC,IAAI,QAAoC,CAAA;IACxC,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;QACvC,QAAQ,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IACnC,CAAC;IAED,OAAO,IAAI,OAAO,CAAsB,CAAC,OAAO,EAAE,EAAE;QAClD,IAAI,QAAQ,GAAyD,IAAI,CAAA;QAEzE,MAAM,OAAO,GAAG,CAAC,MAA2B,EAAE,EAAE;YAC9C,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,OAAO,EAAE,CAAA;YACpB,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,OAAO,EAAE,CAAA;YACpB,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,CAAA;QACjB,CAAC,CAAA;QAED,iBAAiB,CAAC;YAChB,WAAW,EAAE,KAAK;YAClB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAwC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACZ,QAAQ,GAAG,CAAC,CAAA;YACZ,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAClB,KAAC,aAAa,IAAC,WAAW,EAAC,QAAQ,YACjC,KAAC,MAAM,IACL,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EACtC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAC7B,GACY,CACjB,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../src/launch.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAEjE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AASpC,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAyB;IACpD,oEAAoE;IACpE,yDAAyD;IACzD,MAAM,YAAY,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAA;IACzC,IAAI,QAAoC,CAAA;IACxC,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;QACvC,QAAQ,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IACnC,CAAC;IAED,OAAO,IAAI,OAAO,CAAsB,CAAC,OAAO,EAAE,EAAE;QAClD,IAAI,QAAQ,GAAyD,IAAI,CAAA;QAEzE,MAAM,OAAO,GAAG,CAAC,MAA2B,EAAE,EAAE;YAC9C,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,OAAO,EAAE,CAAA;YACpB,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,OAAO,EAAE,CAAA;YACpB,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,CAAA;QACjB,CAAC,CAAA;QAED,iBAAiB,CAAC;YAChB,WAAW,EAAE,KAAK;YAClB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAwC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC;aACC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACV,QAAQ,GAAG,CAAC,CAAA;YACZ,mBAAmB,CAAC,CAAC,CAAC,CAAA;YACtB,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAClB,KAAC,aAAa,IAAC,WAAW,EAAC,QAAQ,YACjC,KAAC,MAAM,IACL,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EACtC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAC7B,GACY,CACjB,CAAA;QACH,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,iFAAiF;YACjF,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,OAAO,EAAE,CAAA;YACpB,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAA;QACf,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tooee/choose",
3
- "version": "0.1.18",
3
+ "version": "0.1.20",
4
4
  "description": "Terminal selection with fuzzy filtering",
5
5
  "keywords": [
6
6
  "cli",
@@ -37,11 +37,11 @@
37
37
  "typecheck": "tsc --noEmit"
38
38
  },
39
39
  "dependencies": {
40
- "@tooee/commands": "0.1.18",
41
- "@tooee/fuzzy": "0.1.18",
42
- "@tooee/layout": "0.1.18",
43
- "@tooee/shell": "0.1.18",
44
- "@tooee/themes": "0.1.18"
40
+ "@tooee/commands": "0.1.20",
41
+ "@tooee/fuzzy": "0.1.20",
42
+ "@tooee/layout": "0.1.20",
43
+ "@tooee/shell": "0.1.20",
44
+ "@tooee/themes": "0.1.20"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@opentui/core": "^0.2.15",
@@ -1,8 +1,7 @@
1
1
  import { useState, useEffect, useRef, useCallback, useMemo } from "react"
2
2
  import type { ScrollBoxRenderable } from "@opentui/core"
3
- import { useKeyboard } from "@opentui/react"
4
3
  import { useTheme } from "@tooee/themes"
5
- import { useMode, useSetMode } from "@tooee/commands"
4
+ import { useCommand, useMode, useSetMode } from "@tooee/commands"
6
5
  import type { ChooseItem } from "./types.js"
7
6
  import { fuzzyFilter } from "./fuzzy.js"
8
7
 
@@ -70,51 +69,97 @@ export function ChooseOverlay({
70
69
  }
71
70
  }, [filteredItems, activeIndex, onSelect])
72
71
 
73
- useKeyboard((key) => {
74
- if (key.name === "escape") {
75
- key.preventDefault()
76
- if (mode === "insert") {
77
- setMode("cursor")
78
- } else {
79
- onCancel()
80
- }
81
- return
82
- }
83
-
84
- if (mode === "cursor") {
85
- if (key.raw === "i" || key.raw === "a") {
86
- key.preventDefault()
87
- setMode("insert")
88
- return
89
- }
90
- if (key.raw === "j") {
91
- key.preventDefault()
92
- moveDown()
93
- return
94
- }
95
- if (key.raw === "k") {
96
- key.preventDefault()
97
- moveUp()
98
- return
99
- }
72
+ const leaveInsertModeOrCancel = useCallback(() => {
73
+ if (mode === "insert") {
74
+ setMode("cursor")
75
+ } else {
76
+ onCancel()
100
77
  }
78
+ }, [mode, onCancel, setMode])
101
79
 
102
- if (key.name === "return") {
103
- key.preventDefault()
104
- confirm()
105
- return
106
- }
80
+ const enterInsertMode = useCallback(() => {
81
+ setMode("insert")
82
+ }, [setMode])
107
83
 
108
- if (key.name === "up" || (key.ctrl && key.name === "p")) {
109
- key.preventDefault()
110
- moveUp()
111
- return
112
- }
113
- if (key.name === "down" || (key.ctrl && key.name === "n")) {
114
- key.preventDefault()
115
- moveDown()
116
- return
117
- }
84
+ useCommand({
85
+ id: "choose-overlay:escape",
86
+ title: "Back / cancel",
87
+ hotkey: "Escape",
88
+ modes: ["insert", "cursor"],
89
+ hidden: true,
90
+ handler: leaveInsertModeOrCancel,
91
+ })
92
+ useCommand({
93
+ id: "choose-overlay:insert-mode-i",
94
+ title: "Insert mode",
95
+ hotkey: "i",
96
+ modes: ["cursor"],
97
+ hidden: true,
98
+ handler: enterInsertMode,
99
+ })
100
+ useCommand({
101
+ id: "choose-overlay:insert-mode-a",
102
+ title: "Insert mode",
103
+ hotkey: "a",
104
+ modes: ["cursor"],
105
+ hidden: true,
106
+ handler: enterInsertMode,
107
+ })
108
+ useCommand({
109
+ id: "choose-overlay:move-down-vim",
110
+ title: "Move down",
111
+ hotkey: "j",
112
+ modes: ["cursor"],
113
+ hidden: true,
114
+ handler: moveDown,
115
+ })
116
+ useCommand({
117
+ id: "choose-overlay:move-up-vim",
118
+ title: "Move up",
119
+ hotkey: "k",
120
+ modes: ["cursor"],
121
+ hidden: true,
122
+ handler: moveUp,
123
+ })
124
+ useCommand({
125
+ id: "choose-overlay:confirm",
126
+ title: "Confirm",
127
+ hotkey: "Enter",
128
+ modes: ["insert", "cursor"],
129
+ hidden: true,
130
+ handler: confirm,
131
+ })
132
+ useCommand({
133
+ id: "choose-overlay:move-up",
134
+ title: "Move up",
135
+ hotkey: "up",
136
+ modes: ["insert", "cursor"],
137
+ hidden: true,
138
+ handler: moveUp,
139
+ })
140
+ useCommand({
141
+ id: "choose-overlay:move-up-ctrl-p",
142
+ title: "Move up",
143
+ hotkey: "ctrl+p",
144
+ modes: ["insert", "cursor"],
145
+ hidden: true,
146
+ handler: moveUp,
147
+ })
148
+ useCommand({
149
+ id: "choose-overlay:move-down",
150
+ title: "Move down",
151
+ hotkey: "down",
152
+ modes: ["insert", "cursor"],
153
+ hidden: true,
154
+ handler: moveDown,
155
+ })
156
+ useCommand({
157
+ id: "choose-overlay:move-down-ctrl-n",
158
+ title: "Move down",
159
+ hotkey: "ctrl+n",
160
+ modes: ["insert", "cursor"],
161
+ hidden: true,
162
+ handler: moveDown,
118
163
  })
119
164
 
120
165
  // Auto-scroll to keep active item visible
package/src/launch.tsx CHANGED
@@ -2,7 +2,7 @@ import * as fs from "node:fs"
2
2
  import * as tty from "node:tty"
3
3
  import { createCliRenderer } from "@opentui/core"
4
4
  import { createRoot } from "@opentui/react"
5
- import { TooeeProvider } from "@tooee/shell"
5
+ import { TooeeProvider, guardTerminalHealth } from "@tooee/shell"
6
6
  import type { ActionDefinition } from "@tooee/commands"
7
7
  import { Choose } from "./Choose.js"
8
8
  import type { ChooseContentProvider, ChooseOptions, ChooseResult } from "./types.js"
@@ -39,19 +39,28 @@ export async function launch(opts: ChooseLaunchOptions): Promise<ChooseResult |
39
39
  createCliRenderer({
40
40
  exitOnCtrlC: false,
41
41
  ...(ttyStdin ? { stdin: ttyStdin as unknown as NodeJS.ReadStream } : {}),
42
- }).then((r) => {
43
- renderer = r
44
- createRoot(r).render(
45
- <TooeeProvider initialMode="insert">
46
- <Choose
47
- contentProvider={opts.contentProvider}
48
- options={opts.options}
49
- actions={opts.actions}
50
- onConfirm={(result) => cleanup(result)}
51
- onCancel={() => cleanup(null)}
52
- />
53
- </TooeeProvider>,
54
- )
55
42
  })
43
+ .then((r) => {
44
+ renderer = r
45
+ guardTerminalHealth(r)
46
+ createRoot(r).render(
47
+ <TooeeProvider initialMode="insert">
48
+ <Choose
49
+ contentProvider={opts.contentProvider}
50
+ options={opts.options}
51
+ actions={opts.actions}
52
+ onConfirm={(result) => cleanup(result)}
53
+ onCancel={() => cleanup(null)}
54
+ />
55
+ </TooeeProvider>,
56
+ )
57
+ })
58
+ .catch(() => {
59
+ // Renderer init failed — release /dev/tty and resolve so the caller never hangs.
60
+ if (ttyStdin) {
61
+ ttyStdin.destroy()
62
+ }
63
+ resolve(null)
64
+ })
56
65
  })
57
66
  }