chocolatito-code 1.6.4 → 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,18 +1,13 @@
1
1
  /**
2
- * Fija SOLO SI SE PIDE, otra vez.
2
+ * Fija SOLO SI SE PIDE. Van dos veces que la pongo de serie y se rompe.
3
3
  *
4
- * Estuvo por defecto media hora y la sesion salia en negro: "esta fallando, no
5
- * sale nada, se bugea". Lo puse de serie sin haberlo podido abrir en un terminal
6
- * de verdad -aqui no hay TTY- y se publico roto para los clientes.
4
+ * La segunda: "ahora sale una barra y lo demas negro, escribo y se cierra".
7
5
  *
8
- * La leccion no es "la pantalla fija es mala": es que un cambio que se lleva por
9
- * delante TODO el dibujado no puede entrar por defecto verificado solo con
10
- * pruebas. Las pruebas dicen que el arbol pinta lo que debe; no dicen que la
11
- * consola de verdad se comporte como el emulador de la libreria.
12
- *
13
- * Vuelve a estar detras de CHOCOLATITO_PANTALLA=fija hasta que este vista
14
- * funcionando en una consola. El comportamiento normal es el que llevaba
15
- * funcionando toda la semana.
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.
16
11
  */
17
12
  export declare function pantallaFijaPedida(): boolean;
18
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";
@@ -21,31 +24,27 @@ import { habilitarPie } from "./pieFijo.js";
21
24
  * avisos— siguen imprimiendo directo, y en la pantalla alternativa eso escribe
22
25
  * encima de lo que Ink acaba de dibujar y descuadra el árbol entero.
23
26
  *
24
- * ES UN MODO, NO EL COMPORTAMIENTO NORMAL
27
+ * EL INTERCAMBIO
25
28
  *
26
- * Cambiar el historial del terminal por uno propio es un intercambio de verdad,
27
- * no una mejora: quien use mucho la rueda del ratón para releer sale perdiendo.
28
- * Se activa con CHOCOLATITO_PANTALLA=fija.
29
+ * Cambiar el historial del terminal por uno propio no es gratis: quien use la
30
+ * rueda del ratón para releer sale perdiendo, y a cambio se recorre con Re Pág
31
+ * y Av Pág. Se pidió así cinco veces, así que va de serie;
32
+ * CHOCOLATITO_PANTALLA=normal devuelve lo de antes.
29
33
  */
30
34
  const ENTRAR = "\x1b[?1049h";
31
35
  const SALIR = "\x1b[?1049l";
32
36
  let dentro = false;
33
37
  let logOriginal = null;
34
38
  /**
35
- * Fija SOLO SI SE PIDE, otra vez.
39
+ * Fija SOLO SI SE PIDE. Van dos veces que la pongo de serie y se rompe.
36
40
  *
37
- * Estuvo por defecto media hora y la sesion salia en negro: "esta fallando, no
38
- * sale nada, se bugea". Lo puse de serie sin haberlo podido abrir en un terminal
39
- * de verdad -aqui no hay TTY- y se publico roto para los clientes.
41
+ * La segunda: "ahora sale una barra y lo demas negro, escribo y se cierra".
40
42
  *
41
- * La leccion no es "la pantalla fija es mala": es que un cambio que se lleva por
42
- * delante TODO el dibujado no puede entrar por defecto verificado solo con
43
- * pruebas. Las pruebas dicen que el arbol pinta lo que debe; no dicen que la
44
- * consola de verdad se comporte como el emulador de la libreria.
45
- *
46
- * Vuelve a estar detras de CHOCOLATITO_PANTALLA=fija hasta que este vista
47
- * funcionando en una consola. El comportamiento normal es el que llevaba
48
- * funcionando toda la semana.
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.
49
48
  */
50
49
  export function pantallaFijaPedida() {
51
50
  return process.env.CHOCOLATITO_PANTALLA === "fija";
@@ -105,3 +104,36 @@ export function salirDePantallaFija() {
105
104
  catch { }
106
105
  }
107
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.4",
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.4",
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": {