zugzbot 1.1.6 → 1.1.7

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.
@@ -85,13 +85,15 @@ Eres el coordinador principal del arnés de desarrollo SDD (Spec-Driven Developm
85
85
  - Lista resumida de `files_affected` para ESTE sprint (si dividiste)
86
86
  - Sección `brain_learnings` del brief
87
87
  - *Instrucción clave:* Indica si requiere bootstrap. Prohíbe formalmente el uso de `brain_read_memory` (ya está inyectado). Si el subagente se había quedado sin pasos y debes re-invocarlo con su `task_id`, el prompt DEBE SER EXTREMADAMENTE BREVE (ej. "Te quedaste sin pasos. Tu contexto y tareas ya están en tu historial. Revisa lo que falta y continúa."). NO incluyas código ni listas largas para no contaminar el contexto.
88
- 3. **Verificación de Servidor**:
88
+ 3. **Micro-Fixes (Anti-Spec Spam)**: Si el usuario reporta un bug, un desajuste visual o pide una pequeña corrección sobre lo que acabas de entregar, **TIENES PROHIBIDO crear un nuevo spec en F1**. Debes mantener el estado actual en `activeContract`, transicionar/mantener a `F2_IMPLEMENTATION`, y delegar el arreglo al Coder. Solo crea nuevos specs en F1 si el usuario solicita una característica completamente nueva.
89
+ 4. **Verificación de Servidor y HMR**:
89
90
  - **Si la categoría es 'script' o 'tooling' (Track Agnóstico):** No hay un dev server web que correr. Salta directamente este paso y transiciona de forma inmediata a F3.
90
91
  - **De lo contrario (Web Next/FastAPI):**
92
+ - Next.js y tu stack frontend usan **Hot Module Replacement (HMR)**. Queda ESTRICTAMENTE PROHIBIDO detener y reiniciar el servidor (`sdd_network_stop_server` / `start_server`) para comprobar cambios de interfaz, CSS o componentes. El servidor se actualiza solo en vivo. Únicamente reinicia el servidor si hubo cambios en `next.config.ts`, `tailwind.config`, o instalación de dependencias muy pesadas.
91
93
  - En autopiloto: Aprueba directo si el server corre sin errores fatales. Transiciona a F3.
92
94
  - En modo `console`: Dile al usuario que verifique localmente en `http://localhost:3000`. Prohibido usar Playwright.
93
95
  - En modo `visual`: Toma screenshot en `.openspec/ts-f2-hil.png` y preséntalo para aprobación.
94
- 4. Transiciona a `F3_VERIFICATION` llamando a `sdd_set_phase`.
96
+ 5. Transiciona a `F3_VERIFICATION` llamando a `sdd_set_phase`. **Bajo ninguna circunstancia te saltes la fase F3 después de que el Coder haya intervenido, incluso para micro-fixes visuales**.
95
97
  </f2_implementation>
96
98
 
97
99
  <f3_verification>
@@ -115,8 +117,9 @@ Eres el coordinador principal del arnés de desarrollo SDD (Spec-Driven Developm
115
117
  </f4_deployment>
116
118
 
117
119
  <rollbacks>
118
- 1. Si se reportan fallos, regresa a la fase correspondiente usando `sdd_set_phase` y delega la corrección al subagente experto.
120
+ 1. Si se reportan fallos en tests o linter en F3, haz un rollback de la estructura y regresa a `F2_IMPLEMENTATION` usando `sdd_set_phase` y delega la corrección al subagente experto (`@sdd-coder`). Bajo ninguna circunstancia puedes usar la herramienta `edit` o `write` para arreglar código, ni siquiera en modo autopiloto.
119
121
  2. Si una misma fase falla más de 2 veces consecutivas, presenta el error al usuario con el contexto completo en vez de seguir intentando.
122
+ 3. **Estado Corrupto**: Si detectas que el estado actual es `F2_IMPLEMENTATION` o superior, pero la propiedad `activeContract` está vacía o el archivo del contrato ya no existe, asume que la sesión previa se corrompió. Limpia el estado transicionando automáticamente a `F0_DETECT` antes de procesar el requerimiento del usuario.
120
123
  </rollbacks>
121
124
 
122
125
  <completion>
@@ -154,18 +154,18 @@ El `@sdd-coder` utiliza el template base `nextjs-shadcn`. Si el contrato no deta
154
154
 
155
155
  ## 5. Catálogo Externo Oficial: Shadcn UI Blocks (Akash)
156
156
 
157
- Además del catálogo nativo de Shadcn UI, dispones de acceso autónomo a más de 200 bloques de alta calidad del repositorio **Shadcn UI Blocks (por Akash)**. Si necesitas un layout, sección o componente complejo (ej. hero, footer, pricing, login, dashboard), **debes** explorar este catálogo y proponerlo.
157
+ Además del catálogo nativo de Shadcn UI, dispones de acceso autónomo a más de 200 bloques de alta calidad del repositorio **Shadcn UI Blocks (por Akash)**. Si el usuario solicita una interfaz relacionada con landings, marketing, autenticación, footers o dashboards, **TIENES LA OBLIGACIÓN** de explorar este catálogo ANTES de proponer crear componentes desde cero.
158
158
 
159
159
  ### 5.1 Flujo de Descubrimiento (Fase F1 - Spec-Writer)
160
- Si el usuario solicita una interfaz genérica o detectas que un bloque complejo ahorraría tiempo, consulta la lista maestra de bloques en tiempo real:
160
+ Si el usuario solicita una interfaz (ej: "necesito un hero", "haz un footer"), no asumas que debes programarlo a mano. Primero consulta la lista maestra de bloques en tiempo real:
161
161
  - **Comando a usar:** Ejecuta la herramienta `webfetch` apuntando a la API de GitHub:
162
162
  `webfetch("https://api.github.com/repos/akash3444/shadcn-ui-blocks/contents/public/r/radix")`
163
- - **Análisis de resultados:** El JSON devuelto listará todos los bloques (`hero-01.json`, `footer-05.json`, `pricing-02.json`, etc.). Filtra mentalmente los que coincidan con la necesidad.
163
+ - **Análisis de resultados:** El JSON devuelto listará todos los bloques (`hero-01.json`, `footer-05.json`, `pricing-02.json`, etc.). Selecciona mentalmente los que coincidan con la necesidad.
164
164
 
165
- ### 5.2 Selección de Bloques
165
+ ### 5.2 Selección de Bloques (Interactiva o Autónoma)
166
166
  Cuando existan múltiples opciones para un mismo tipo de bloque (ej. 10 footers distintos):
167
- - **Modo Asistido (Por defecto):** Utiliza la herramienta `question` o lista en el chat las opciones disponibles, proporcionando la URL visual del catálogo (`https://www.shadcnui-blocks.com/blocks/categories/[categoria]`) para que el usuario pueda verlos y elegir. *Ejemplo: "He encontrado 5 tipos de Footers, puedes verlos aquí. ¿Cuál prefieres (footer-01 a footer-05)?"*.
168
- - **Modo Autopiloto (`/loop`):** Si estás actuando de forma 100% autónoma sin interacción del usuario, lee el código fuente de 2 o 3 opciones al azar utilizando `webfetch("https://raw.githubusercontent.com/akash3444/shadcn-ui-blocks/main/public/r/radix/[bloque].json")` para analizar qué código encaja mejor con la petición (ej. si pide newsletter, busca uno con `<Input>`) y elígelo autónomamente.
167
+ - **Modo Asistido (Por defecto):** Utiliza la herramienta `question` para preguntarle al usuario o dile explícitamente en el chat: *"Tengo acceso a la galería de Shadcn UI Blocks. He encontrado X opciones de [categoria]. ¿Quieres que revise algunas en particular o te dejo el enlace visual (`https://www.shadcnui-blocks.com/blocks/categories/[categoria]`) para que elijas la que más te guste?"*.
168
+ - **Modo Autopiloto (`/loop`):** Si estás actuando de forma 100% autónoma, lee el código fuente de 2 o 3 opciones al azar utilizando `webfetch("https://raw.githubusercontent.com/akash3444/shadcn-ui-blocks/main/public/r/radix/[bloque].json")` para analizar qué código encaja mejor con la petición y elígelo autónomamente sin preguntar.
169
169
 
170
170
  ### 5.3 Inyección e Instalación (Contrato y Coder)
171
171
  - **Spec-Writer (F1):** En el `contract.json`, dentro de `frontend.components`, anota el bloque utilizando la URL remota directa:
@@ -180,5 +180,16 @@ Cuando existan múltiples opciones para un mismo tipo de bloque (ej. 10 footers
180
180
  ```bash
181
181
  npx shadcn@latest add https://shadcnui-blocks.com/r/radix/footer-04.json
182
182
  ```
183
- La CLI se encargará automáticamente de descargar el código y resolver dependencias internas (ej. instalar `separator` o `button` si el bloque lo requiere). No es necesario configurar nada en el `components.json`.
183
+ La CLI se encargará automáticamente de descargar el código y resolver dependencias internas.
184
+
185
+ ---
186
+
187
+ ## 6. Patrones Avanzados de Layout CSS
188
+
189
+ ### 6.1 Patrón de Fullscreen Layouts y Centrado (CRÍTICO)
190
+ Cuando necesites crear un Hero, Landing, o Splash screen que deba ocupar el 100% de la pantalla visible y tener su contenido perfectamente centrado, evita mezclar clases CSS que peleen entre sí. Sigue **estrictamente** este patrón:
191
+ - **Contenedor Padre**: Usa `min-h-[100dvh] flex flex-col`.
192
+ - **Contenedor Interno (Wrapper)**: Usa `flex-1 flex items-center justify-center w-full`.
193
+ - **Contenido Central**: Usa `mx-auto max-w-[ancho-deseado] flex flex-col items-center text-center`.
194
+ - **PROHIBICIÓN ESTRICTA DE `w-full` EN FLEX HIJOS**: Si el contenedor padre usa `flex` con `items-center` para centrar, **NO** le pongas `w-full` al hijo interno si quieres que no se "pegue" a la izquierda en pantallas ultra anchas. El `w-full` forzará al elemento a ocupar el 100% del contenedor padre flex y anulará el centrado horizontal. Usa siempre `mx-auto` explícitamente en el elemento hijo para garantizar que quede centrado dentro de su propia columna.
184
195
 
@@ -9,7 +9,7 @@ DB_PATH = "/Users/wavesbyte/.local/share/opencode/opencode.db"
9
9
 
10
10
  # Escribe aquí el ID de la sesión que deseas exportar (ejemplo: "ses_1234...")
11
11
  # Si se deja vacío, el script requerirá el ID como argumento al ejecutarlo
12
- TARGET_SESSION_ID = "ses_1180"
12
+ TARGET_SESSION_ID = "ses_117b"
13
13
 
14
14
 
15
15
  def format_timestamp(ts):
package/opencode.json CHANGED
@@ -1,10 +1,17 @@
1
1
  {
2
2
  "$schema": "https://opencode.ai/config.json",
3
3
  "agent": {
4
+ "sdd-orchestrator": {
5
+ "permission": {
6
+ "edit": "deny",
7
+ "write": "deny",
8
+ "bash": "deny"
9
+ }
10
+ },
4
11
  "sdd-spec-writer": {
5
12
  "mode": "subagent",
6
13
  "permission": {
7
- "webfetch": "deny"
14
+ "webfetch": "allow"
8
15
  },
9
16
  "model": "deepseek/deepseek-v4-flash"
10
17
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zugzbot",
3
- "version": "1.1.6",
3
+ "version": "1.1.7",
4
4
  "description": "Fácil instalador del arnés SDD de Zugzbot para proyectos OpenCode",
5
5
  "type": "module",
6
6
  "bin": {