chocolatito-code 1.3.3 → 1.3.4

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.
@@ -5,13 +5,13 @@ export declare function colorizeSilkscreenLine(line: string): string;
5
5
  export declare function renderMascotLines(isBlinking?: boolean): string[];
6
6
  export declare function buildBannerContent(cwd: string, model: EspectroModel, isBlinking?: boolean): string;
7
7
  /**
8
- * Ventana por debajo de esto y no se ancla nada: el hueco se comeria el banner.
9
- * Con 16 filas quedan tres o cuatro libres, que ya es una separacion util.
8
+ * Ventana por debajo de esto y no se ancla nada: no sobra sitio y el hueco solo
9
+ * serviria para empujar el banner fuera de la pantalla.
10
10
  */
11
11
  export declare const FILAS_MINIMAS_PARA_ANCLAR = 16;
12
12
  /**
13
- * Filas en blanco que hay que soltar tras `contenido` para que lo siguiente que
14
- * se pinte caiga al fondo de la ventana. Cero si no cabe o no hace falta.
13
+ * Filas en blanco que hay que soltar ANTES de `contenido` para que el prompt
14
+ * acabe pegado al fondo de la ventana. Cero si no cabe o no hace falta.
15
15
  *
16
16
  * Se exporta para poder comprobar la cuenta: dentro de un terminal esto no se
17
17
  * revisa a ojo, y pasarse de una fila hace desaparecer la primera del banner.
@@ -20,16 +20,18 @@ export declare function filasParaAnclar(contenido: string, filasDeVentana: numbe
20
20
  /**
21
21
  * ANCLAR EL PROMPT AL FONDO DE LA VENTANA
22
22
  *
23
- * El usuario lo enseno con una captura y una frase: "mira hay espacio y no es
24
- * fijo como te decia, eso debe estar fijo en la parte de abajo". Con la sesion
25
- * recien empezada, el contenido no llega al final de la pantalla, asi que el
26
- * marco del prompt se queda a media altura con hueco vacio DEBAJO. Se lee como
27
- * si el programa estuviera a medio dibujar.
23
+ * El usuario lo enseño con una captura: "mira hay espacio y no es fijo, eso debe
24
+ * estar fijo en la parte de abajo". Con la sesion recien empezada el contenido
25
+ * no llega al final de la pantalla, asi que el marco del prompt se quedaba a
26
+ * media altura con hueco vacio DEBAJO.
28
27
  *
29
- * Se arregla soltando las filas en blanco que faltan justo detras del banner. A
30
- * partir de ahi el prompt nace abajo, y ya no se mueve de ahi en toda la sesion:
31
- * el contenido solo crece hacia abajo, y cuando llega al final el terminal
32
- * desplaza, asi que el marco vuelve a quedar en las ultimas filas.
28
+ * POR QUE EL HUECO VA ARRIBA Y NO ABAJO
29
+ *
30
+ * La primera version soltaba las filas en blanco DETRAS del banner. Anclaba,
31
+ * si, pero dejaba un claro enorme entre el banner y el prompt que se leia como
32
+ * un dibujo a medio hacer. Puestas DELANTE, el banner y el prompt quedan
33
+ * pegados en la parte baja y el hueco queda arriba, donde se lee como lo que es:
34
+ * una sesion que acaba de empezar.
33
35
  *
34
36
  * NO se usa la region de scroll ni la pantalla alternativa: las dos se llevan
35
37
  * por delante el historial del terminal, y aqui media sesion consiste en subir
package/dist/ui/banner.js CHANGED
@@ -115,13 +115,27 @@ export function buildBannerContent(cwd, model, isBlinking = false) {
115
115
  return ["", ...combinedRows, ""].join("\n");
116
116
  }
117
117
  /**
118
- * Ventana por debajo de esto y no se ancla nada: el hueco se comeria el banner.
119
- * Con 16 filas quedan tres o cuatro libres, que ya es una separacion util.
118
+ * Ventana por debajo de esto y no se ancla nada: no sobra sitio y el hueco solo
119
+ * serviria para empujar el banner fuera de la pantalla.
120
120
  */
121
121
  export const FILAS_MINIMAS_PARA_ANCLAR = 16;
122
122
  /**
123
- * Filas en blanco que hay que soltar tras `contenido` para que lo siguiente que
124
- * se pinte caiga al fondo de la ventana. Cero si no cabe o no hace falta.
123
+ * Filas que se imprimen DESPUES del banner y hay que dejarles sitio.
124
+ *
125
+ * Son el aviso del atajo (su texto ya trae un salto dentro, mas el que anade
126
+ * console.log: 2 filas) y el marco del prompt (barra, entrada, barra, estado: 4).
127
+ *
128
+ * AQUI ESTABA EL FALLO DEL ZORRO CORTADO
129
+ *
130
+ * La primera version rellenaba hasta la ultima fila y se olvidaba de estas seis.
131
+ * Al imprimirse despues, el terminal desplazaba seis filas y se llevaba por
132
+ * arriba la cabeza del zorro. El usuario lo vio en cuanto abrio: "hay mucho
133
+ * espacio y se baja y se corta el zorrito al iniciar".
134
+ */
135
+ const FILAS_DESPUES_DEL_BANNER = 6;
136
+ /**
137
+ * Filas en blanco que hay que soltar ANTES de `contenido` para que el prompt
138
+ * acabe pegado al fondo de la ventana. Cero si no cabe o no hace falta.
125
139
  *
126
140
  * Se exporta para poder comprobar la cuenta: dentro de un terminal esto no se
127
141
  * revisa a ojo, y pasarse de una fila hace desaparecer la primera del banner.
@@ -131,22 +145,24 @@ export function filasParaAnclar(contenido, filasDeVentana) {
131
145
  return 0;
132
146
  // El `console.log` anade su propio salto: por eso la altura del bloque es una
133
147
  // linea mas de las que trae el texto.
134
- const alto = contenido.split("\n").length;
135
- return Math.max(0, filasDeVentana - alto - 1);
148
+ const alto = contenido.split("\n").length + 1;
149
+ return Math.max(0, filasDeVentana - alto - FILAS_DESPUES_DEL_BANNER);
136
150
  }
137
151
  /**
138
152
  * ANCLAR EL PROMPT AL FONDO DE LA VENTANA
139
153
  *
140
- * El usuario lo enseno con una captura y una frase: "mira hay espacio y no es
141
- * fijo como te decia, eso debe estar fijo en la parte de abajo". Con la sesion
142
- * recien empezada, el contenido no llega al final de la pantalla, asi que el
143
- * marco del prompt se queda a media altura con hueco vacio DEBAJO. Se lee como
144
- * si el programa estuviera a medio dibujar.
154
+ * El usuario lo enseño con una captura: "mira hay espacio y no es fijo, eso debe
155
+ * estar fijo en la parte de abajo". Con la sesion recien empezada el contenido
156
+ * no llega al final de la pantalla, asi que el marco del prompt se quedaba a
157
+ * media altura con hueco vacio DEBAJO.
158
+ *
159
+ * POR QUE EL HUECO VA ARRIBA Y NO ABAJO
145
160
  *
146
- * Se arregla soltando las filas en blanco que faltan justo detras del banner. A
147
- * partir de ahi el prompt nace abajo, y ya no se mueve de ahi en toda la sesion:
148
- * el contenido solo crece hacia abajo, y cuando llega al final el terminal
149
- * desplaza, asi que el marco vuelve a quedar en las ultimas filas.
161
+ * La primera version soltaba las filas en blanco DETRAS del banner. Anclaba,
162
+ * si, pero dejaba un claro enorme entre el banner y el prompt que se leia como
163
+ * un dibujo a medio hacer. Puestas DELANTE, el banner y el prompt quedan
164
+ * pegados en la parte baja y el hueco queda arriba, donde se lee como lo que es:
165
+ * una sesion que acaba de empezar.
150
166
  *
151
167
  * NO se usa la region de scroll ni la pantalla alternativa: las dos se llevan
152
168
  * por delante el historial del terminal, y aqui media sesion consiste en subir
@@ -154,12 +170,12 @@ export function filasParaAnclar(contenido, filasDeVentana) {
154
170
  */
155
171
  export function showBanner(cwd, model, state = "idle") {
156
172
  const content = buildBannerContent(cwd, model, state === "blink");
173
+ if (process.stdout.isTTY) {
174
+ const relleno = filasParaAnclar(content, process.stdout.rows || 0);
175
+ if (relleno > 0)
176
+ dibujar("\n".repeat(relleno));
177
+ }
157
178
  console.log(content);
158
- if (!process.stdout.isTTY)
159
- return;
160
- const relleno = filasParaAnclar(content, process.stdout.rows || 0);
161
- if (relleno > 0)
162
- dibujar("\n".repeat(relleno));
163
179
  }
164
180
  export async function animateStartupBanner(cwd, model) {
165
181
  // Impresión limpia instantánea sin animaciones lentas en el terminal
@@ -2,7 +2,7 @@
2
2
  "manifest_version": 3,
3
3
  "minimum_chrome_version": "102",
4
4
  "name": "Chocolatito Code",
5
- "version": "1.3.3",
5
+ "version": "1.3.4",
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.3.3",
3
+ "version": "1.3.4",
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": {