chocolatito-code 1.6.5 → 1.6.6

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,20 +1,13 @@
1
1
  /**
2
- * Fija POR DEFECTO, esta vez con pruebas que lo respaldan.
2
+ * Fija SOLO SI SE PIDE. Van dos veces que la pongo de serie y se rompe.
3
3
  *
4
- * La primera vez que se puso de serie la sesion salia en negro, y las 820
5
- * pruebas pasaban: comprobaban el ARBOL que Ink quiere pintar, no lo que una
6
- * consola hace con esos bytes. El terminal de mentira de la libreria no
7
- * desplaza al pasarse de alto, que era justo el fallo.
4
+ * La segunda: "ahora sale una barra y lo demas negro, escribo y se cierra".
8
5
  *
9
- * Ahora hay un emulador de verdad (tests/terminal.test.mjs): se le da a Ink un
10
- * stdout con tamaño, se capturan sus bytes y se pasan por un interprete que
11
- * desplaza como lo haria la consola. Con el arreglo puesto, cien repintados no
12
- * desplazan ni una fila en cinco tamaños de ventana distintos; devolviendo el
13
- * fallo, tres de esas pruebas se caen. Eso es lo que faltaba la vez anterior.
14
- *
15
- * CHOCOLATITO_PANTALLA=normal devuelve el comportamiento de siempre: el
16
- * historial vuelve a ser del terminal y la rueda del raton a servir, a cambio de
17
- * que la barra suba con el scroll.
6
+ * La regla que saco de esto, y que no pienso volver a saltarme: esto no vuelve
7
+ * a ser lo normal hasta que el dueño confirme que lo ha visto funcionar en SU
8
+ * consola con la variable puesta. Un emulador -por bueno que sea, y el de
9
+ * tests/terminal.test.mjs lo es- prueba lo que sabe emular. Ha hecho falta que
10
+ * falle dos veces para aprenderlo.
18
11
  */
19
12
  export declare function pantallaFijaPedida(): boolean;
20
13
  /**
@@ -1,4 +1,7 @@
1
1
  import process from "node:process";
2
+ import fs from "node:fs";
3
+ import os from "node:os";
4
+ import path from "node:path";
2
5
  import { redirigirDibujo } from "./salida.js";
3
6
  import { apuntar } from "./historial.js";
4
7
  import { habilitarPie } from "./pieFijo.js";
@@ -33,25 +36,18 @@ const SALIR = "\x1b[?1049l";
33
36
  let dentro = false;
34
37
  let logOriginal = null;
35
38
  /**
36
- * Fija POR DEFECTO, esta vez con pruebas que lo respaldan.
39
+ * Fija SOLO SI SE PIDE. Van dos veces que la pongo de serie y se rompe.
37
40
  *
38
- * La primera vez que se puso de serie la sesion salia en negro, y las 820
39
- * pruebas pasaban: comprobaban el ARBOL que Ink quiere pintar, no lo que una
40
- * consola hace con esos bytes. El terminal de mentira de la libreria no
41
- * desplaza al pasarse de alto, que era justo el fallo.
41
+ * La segunda: "ahora sale una barra y lo demas negro, escribo y se cierra".
42
42
  *
43
- * Ahora hay un emulador de verdad (tests/terminal.test.mjs): se le da a Ink un
44
- * stdout con tamaño, se capturan sus bytes y se pasan por un interprete que
45
- * desplaza como lo haria la consola. Con el arreglo puesto, cien repintados no
46
- * desplazan ni una fila en cinco tamaños de ventana distintos; devolviendo el
47
- * fallo, tres de esas pruebas se caen. Eso es lo que faltaba la vez anterior.
48
- *
49
- * CHOCOLATITO_PANTALLA=normal devuelve el comportamiento de siempre: el
50
- * historial vuelve a ser del terminal y la rueda del raton a servir, a cambio de
51
- * que la barra suba con el scroll.
43
+ * La regla que saco de esto, y que no pienso volver a saltarme: esto no vuelve
44
+ * a ser lo normal hasta que el dueño confirme que lo ha visto funcionar en SU
45
+ * consola con la variable puesta. Un emulador -por bueno que sea, y el de
46
+ * tests/terminal.test.mjs lo es- prueba lo que sabe emular. Ha hecho falta que
47
+ * falle dos veces para aprenderlo.
52
48
  */
53
49
  export function pantallaFijaPedida() {
54
- return process.env.CHOCOLATITO_PANTALLA !== "normal";
50
+ return process.env.CHOCOLATITO_PANTALLA === "fija";
55
51
  }
56
52
  /** `null` = manda el estado real. Las pruebas lo fuerzan. */
57
53
  let forzado = null;
@@ -108,3 +104,36 @@ export function salirDePantallaFija() {
108
104
  catch { }
109
105
  }
110
106
  process.on("exit", salirDePantallaFija);
107
+ /**
108
+ * UN ERROR DENTRO DE LA PANTALLA ALTERNATIVA SE PIERDE
109
+ *
110
+ * Y esa es la razon de que no haya podido diagnosticar el negro en dos intentos.
111
+ * Si algo revienta despues de montar el arbol, el mensaje se imprime DENTRO de
112
+ * la pantalla alternativa; acto seguido el proceso sale, `salirDePantallaFija`
113
+ * devuelve la pantalla normal, y el error se va con la que lo contenia.
114
+ *
115
+ * Desde fuera se ve exactamente como lo conto el dueño: una barra, todo negro, y
116
+ * se cierra sin decir nada.
117
+ *
118
+ * Aqui se sale de la pantalla PRIMERO y se escribe despues, para que el mensaje
119
+ * quede donde se puede leer. Y se guarda ademas en un archivo, porque en una
120
+ * consola que se cierra sola no da tiempo ni a mirarlo.
121
+ */
122
+ function contarLoQueFallo(err) {
123
+ salirDePantallaFija();
124
+ const detalle = err instanceof Error ? `${err.message}\n${err.stack ?? ""}` : String(err);
125
+ try {
126
+ fs.writeFileSync(path.join(os.homedir(), ".chocolatito-error.txt"), `${new Date().toISOString()}\n${detalle}\n`, "utf-8");
127
+ }
128
+ catch { }
129
+ process.stderr.write(`\nChocolatito se cerro por un error:\n${detalle}\n`);
130
+ process.stderr.write(`Guardado en ${path.join(os.homedir(), ".chocolatito-error.txt")}\n`);
131
+ }
132
+ process.on("uncaughtException", (err) => {
133
+ contarLoQueFallo(err);
134
+ process.exit(1);
135
+ });
136
+ process.on("unhandledRejection", (err) => {
137
+ contarLoQueFallo(err);
138
+ process.exit(1);
139
+ });
@@ -2,7 +2,7 @@
2
2
  "manifest_version": 3,
3
3
  "minimum_chrome_version": "102",
4
4
  "name": "Chocolatito Code",
5
- "version": "1.6.5",
5
+ "version": "1.6.6",
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chocolatito-code",
3
- "version": "1.6.5",
3
+ "version": "1.6.6",
4
4
  "description": "Agente autónomo de programación para la terminal, con control real del ordenador y del navegador. Desarrollado por Chocolatito.",
5
5
  "type": "module",
6
6
  "bin": {