chocolatito-code 1.4.2 → 1.4.3
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/ui/ink/Prompt.js +7 -0
- package/dist/ui/ink/montarPrompt.js +16 -0
- package/dist/ui/selector.js +10 -0
- package/extension/manifest.json +1 -1
- package/package.json +1 -1
package/dist/ui/ink/Prompt.js
CHANGED
|
@@ -13,6 +13,8 @@ export function Prompt({ alEnviar, alCancelar, cwd, promptSymbol, avisos, }) {
|
|
|
13
13
|
const [texto, setTexto] = useState("");
|
|
14
14
|
const [cursor, setCursor] = useState(0);
|
|
15
15
|
const [elegido, setElegido] = useState(0);
|
|
16
|
+
/** Contador para forzar un dibujado cuando cambia algo de fuera de React. */
|
|
17
|
+
const [, setRedibujar] = useState(0);
|
|
16
18
|
const historial = useRef(leerHistorial());
|
|
17
19
|
const [posHistorial, setPosHistorial] = useState(historial.current.length);
|
|
18
20
|
// Se escanea UNA vez por prompt, no en cada tecla: recorrer el proyecto entero
|
|
@@ -44,6 +46,11 @@ export function Prompt({ alEnviar, alCancelar, cwd, promptSymbol, avisos, }) {
|
|
|
44
46
|
// ------------------------------------------- cambiar el modo de permisos
|
|
45
47
|
if (tecla.tab && tecla.shift) {
|
|
46
48
|
cycleMode();
|
|
49
|
+
// El modo NO vive en el estado de React: lo guarda modes.ts, que lo
|
|
50
|
+
// comparten el prompt, el vigilante de teclas y el dialogo de permisos.
|
|
51
|
+
// Sin este empujon, React no tiene motivo para volver a dibujar y la barra
|
|
52
|
+
// se queda anunciando el modo anterior mientras el de verdad ya cambio.
|
|
53
|
+
setRedibujar((n) => n + 1);
|
|
47
54
|
return;
|
|
48
55
|
}
|
|
49
56
|
// ------------------------------------------------------------- enviar
|
|
@@ -90,6 +90,22 @@ export async function preguntarConInk(promptSymbol = "❯", cwd = process.cwd())
|
|
|
90
90
|
instancia.waitUntilExit().then(() => {
|
|
91
91
|
escribirTardio = null;
|
|
92
92
|
limpiarPegados();
|
|
93
|
+
// EL PROGRAMA SE CERRABA SOLO AL ELEGIR /effort
|
|
94
|
+
//
|
|
95
|
+
// Ink desreferencia stdin al desmontarse (stdin.unref) para no dejar el
|
|
96
|
+
// proceso vivo por una entrada que ya nadie escucha. Muy razonable... pero
|
|
97
|
+
// lo que viene DESPUES del prompt tambien lee el teclado: el menu de
|
|
98
|
+
// /effort, el dialogo de permisos. Con stdin sin referencia, esos se
|
|
99
|
+
// quedan esperando una tecla mientras Node ve el bucle de eventos vacio y
|
|
100
|
+
// se cierra.
|
|
101
|
+
//
|
|
102
|
+
// Visto por el usuario: escribia "/efor", pulsaba Enter sobre la
|
|
103
|
+
// recomendacion, y Chocolatito desaparecia dejandolo en la ruta de la
|
|
104
|
+
// consola. Ni error ni despedida: como si nunca hubiera estado.
|
|
105
|
+
//
|
|
106
|
+
// Se vuelve a referenciar aqui, que es el punto por el que se pasa SIEMPRE
|
|
107
|
+
// al cerrar el prompt, venga la orden de donde venga.
|
|
108
|
+
process.stdin.ref?.();
|
|
93
109
|
// Si el árbol muere sin haber entregado nada -una excepción, un Ctrl+C
|
|
94
110
|
// del sistema-, la promesa no puede quedarse colgada: el bucle se
|
|
95
111
|
// detendría para siempre sin decir por qué.
|
package/dist/ui/selector.js
CHANGED
|
@@ -24,6 +24,16 @@ export async function elegirDeLista(titulo, opciones, indiceInicial = 0) {
|
|
|
24
24
|
if (process.stdin.setRawMode)
|
|
25
25
|
process.stdin.setRawMode(true);
|
|
26
26
|
process.stdin.resume();
|
|
27
|
+
// Y referenciado, no solo reanudado. Son cosas distintas: `resume` hace que
|
|
28
|
+
// lleguen los datos, `ref` hace que Node considere que hay trabajo
|
|
29
|
+
// pendiente. Sin lo segundo, este menu se queda esperando una tecla
|
|
30
|
+
// mientras el proceso ve el bucle de eventos vacio y se cierra solo.
|
|
31
|
+
//
|
|
32
|
+
// No es hipotetico: paso justo aqui. Ink desreferencia stdin al desmontar el
|
|
33
|
+
// prompt, y al abrir este menu Chocolatito desaparecia dejando al usuario en
|
|
34
|
+
// la ruta de la consola. Se arreglo tambien alli, pero este menu no tiene
|
|
35
|
+
// por que depender de quien haya corrido antes.
|
|
36
|
+
process.stdin.ref?.();
|
|
27
37
|
/** Filas del ultimo dibujo. Se repinta encima, sin dejar restos. */
|
|
28
38
|
let filas = 0;
|
|
29
39
|
function pintar() {
|
package/extension/manifest.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"manifest_version": 3,
|
|
3
3
|
"minimum_chrome_version": "102",
|
|
4
4
|
"name": "Chocolatito Code",
|
|
5
|
-
"version": "1.4.
|
|
5
|
+
"version": "1.4.3",
|
|
6
6
|
"description": "Deja que Chocolatito Code trabaje dentro de tu Chrome, en segundo plano y con tus sesiones ya iniciadas.",
|
|
7
7
|
"permissions": [
|
|
8
8
|
"tabs",
|
package/package.json
CHANGED