From e1b6512b2dba4760eff802627c11c44e8be791aa Mon Sep 17 00:00:00 2001 From: jmoredev Date: Fri, 16 Oct 2026 18:05:02 +0200 Subject: [PATCH 1/6] docs: corrige la medicion de la banda de fallo y fija sus margenes en el arnes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit La verificacion independiente del candidato de los carteles (V1-V5 MET, sin bloqueantes) cazo dos inexactitudes en la explicacion del arreglo y una en un comentario de codigo, y propuso tres comprobaciones que las dejan fijadas: - «la banda empezaba a 0,35 u del centro» es el ALCANCE del vecino (su wrongRadius), no el primer punto que resta: el fallo se cuenta pasado snapRadius (0,6 u), porque antes la pieza coloca. Lo que pasaba de verdad con las filas a 0,95 u es que CUALQUIER tiro de mas de 0,6 u caia dentro de la banda del vecino y se imputaba a el. - «fallar de largo solo deja la pieza sin colocar, sin coste» se pasaba: con el reparto nuevo (columna 1,50 u, fila 1,75 u) el vecino no entra hasta los 0,90 u, asi que el margen sin coste pasa de 0,6 u a 0,9 u, no a infinito. - En el comentario de components.ts, 31 px es el hueco de la misma fila (el peor) y 55 px el de la misma columna, no al reves. Arnes (seccion 19): tres comprobaciones nuevas sobre los datos -que soltar sobre la propia tarjeta coloca siempre (medio lado 0,50 u < snapRadius 0,60 u), que el vecino solo cuenta pasado snapRadius (0,90 u > 0,60 u) y que el tiro de 0,7 u de esta misma seccion no llega a su banda-. Falsadas con las filas a 0,95 u, donde fallan las seis de la seccion. No se reescribe el commit ya publicado 6d5ace4: la correccion va en este. Verificado: tsc -b en 0, lint sin avisos y las secciones 17, 18 y 19 en verde. --- AGENTS.md | 2 +- src/data/components.ts | 21 ++++++++++++--------- tests/run.mjs | 23 +++++++++++++++++++++++ 3 files changed, 36 insertions(+), 10 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 229a38e..e761d97 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -194,7 +194,7 @@ Reglas de layout: | 57 | **En práctica, cada fase empieza con su cartel** | Antes el cartel salía solo al completar una fase, así que quien arrancaba la partida o saltaba de fase no veía qué había que hacer. Ahora sale al **empezar** cada fase en práctica (también la primera, y también al reiniciar), se quita solo a los 3,6 s, y el estado guarda `lastAdvance` para poder decir «Fase completada» solo cuando se llegó completando y no cuando se saltó. En examen no se monta: el examen no da explicaciones. Cubierto en §16. | | 58 | **La pieza seleccionada se ve ampliada en una ventanita** (fase 1) | En la fase 1 están todas las piezas sobre la mesa y los conectores se ven muy pequeños. Al seleccionar una, una ventanita la enseña entera: el **PNG del conector** cuando existe (más nítido que el dibujo 3D: `ps2`, `usb`, `lan`, `hdmi`, `displayport`, `dvi`, `vga`) y, si no, una **vista 3D de cerca** con la misma `ComponentVisual` (drei no trae `View` en esta versión, así que es un mini lienzo). Va al centro-abajo —la captura enseñó que a la izquierda tapaba la lista de fases—, con `pointer-events: none` para no estorbar el arrastre, solo en la fase 1 y **sin el nombre en examen** (misma regla que la 56). Cubierto en §17. | | 59 | **La ventanita del zoom se monta una vez por fase, no por pieza** | Montarla condicionada a la pieza seleccionada la desmontaba **en cada colocación** de la fase 1 (18 por partida) y **cada montaje creaba un contexto WebGL nuevo**; el que el navegador se lleva por agotamiento es el más antiguo, o sea el de la **escena principal**, y la vista 3D dejaría de pintar. Ahora el panel (y su lienzo) viven toda la fase 1 y sin selección se **ocultan** con `zoom--oculto` (así el lienzo conserva su tamaño y su contexto); fuera de la fase 1 se desmontan, porque ahí no hacen falta. Hallazgo `R4-001` de la revisión nativa; cubierto en §17, donde el ciclo **seleccionar → colocar (que deselecciona) → seleccionar** se comprueba de verdad y un marcador sobre el nodo del lienzo detecta cualquier remontaje (falsado: con el montaje condicional fallan las cinco comprobaciones de ese ciclo). | -| 60 | **Los carteles de la fase 1 se reparten en 6 × 3, con las filas a 1,75 u** | Cada cartel acepta **un solo tipo** de pieza, así que la pieza nunca se coloca en el cartel equivocado: el defecto que reportó el alumnado era de **conteo**. `endDrag` cuenta fallo cuando **no** hay cartel correcto a `snapRadius` (0,6) y **sí** uno ajeno a `wrongRadius` (0,6), y con las filas a 0,95 u esa banda empezaba **a 0,35 u del centro**, o sea 0,15 u más allá del borde visible de la tarjeta (1,0 × 0,4): soltar cerca del borde contaba el vecino y **restaba puntos** (medido en examen: 100 → 97, 0 → 1 fallos). Con 1,75 u las dos regiones ya no se solapan (1,75 ≥ 0,6 + 0,6): fallar de largo solo deja la pieza sin colocar, sin coste. El peor hueco en pantalla entre dos tarjetas pasa de **23 px a 31 px**. Cuatro filas de cinco columnas no caben más separadas —a 1,25 u la de atrás queda a 0,1 u del borde de la mesa y a 1,3 se sale—, así que la forma pasa a 6 × 3 (18 celdas exactas, sin huecos). Todo medido con la proyección de la cámara, y el agarre de la pieza en el arnés quedó unificado en `COGER_PIEZA` (el monitor caía 0,15 u por encima del punto calculado y no se dejaba coger). Cubierto en §19, con la regla geométrica, el hueco en pantalla y la suelta real a 0,7 u; falsado: con 0,95 u fallan los cuatro. | +| 60 | **Los carteles de la fase 1 se reparten en 6 × 3, con las filas a 1,75 u** | Cada cartel acepta **un solo tipo** de pieza, así que la pieza nunca se coloca en el cartel equivocado: el defecto que reportó el alumnado era de **conteo**. `endDrag` cuenta fallo cuando **no** hay cartel correcto a `snapRadius` (0,6) y **sí** uno ajeno a `wrongRadius` (0,6), y lo cuenta **pasado `snapRadius`** —antes de eso la pieza coloca—, así que lo que decide es hasta dónde alcanza el vecino: con las filas a 0,95 u su banda llegaba a los **0,35 u** del centro, 0,15 u más allá del borde visible de la tarjeta (1,0 × 0,4), de modo que **cualquier tiro de más de 0,6 u caía dentro**, contaba el vecino y **restaba puntos** (medido en examen: 100 → 97, 0 → 1 fallos). Con las filas a 1,75 u (y la columna a 1,5 u, que es el mínimo) el vecino no entra hasta los **0,9 u**: los tiros entre 0,6 y 0,9 u ya no cuestan nada y solo dejan la pieza sin colocar, y pasado 0,9 u el vecino vuelve a contar — el margen sin coste pasa de 0,6 u a 0,9 u, **no a infinito**. El peor hueco en pantalla entre dos tarjetas pasa de **23 px a 31 px**. Cuatro filas de cinco columnas no caben más separadas —a 1,25 u la de atrás queda a 0,1 u del borde de la mesa y a 1,3 se sale—, así que la forma pasa a 6 × 3 (18 celdas exactas, sin huecos). Todo medido con la proyección de la cámara, y el agarre de la pieza en el arnés quedó unificado en `COGER_PIEZA` (el monitor caía 0,15 u por encima del punto calculado y no se dejaba coger). Cubierto en §19 —regla geométrica, hueco en pantalla, suelta real a 0,7 u y los márgenes de `snapRadius` y del vecino—; falsado: con 0,95 u fallan los seis. Las dos primeras redacciones de esta fila decían que el fallo empezaba a 0,35 u y que fallar de largo no costaba nada: lo corrigió la verificación independiente (V1-V5 MET, sin bloqueantes) y los checks que la acompañan lo dejan fijado. | ## 7. Pipeline de assets 3D diff --git a/src/data/components.ts b/src/data/components.ts index f05ec4a..331acd4 100644 --- a/src/data/components.ts +++ b/src/data/components.ts @@ -661,18 +661,21 @@ export function rotationPreviewDef(target: RotationTarget, rotation: Vec3): Comp * La separación entre filas no es estética: en la fase 1 la colocación se resuelve * por cercanía al centro del cartel con `snapRadius` 0,6, y el fallo se cuenta * cuando un cartel AJENO está a `wrongRadius` (0,6) del punto donde se suelta - * (`endDrag` de `useGameStore`). Con las filas a 0,95 u —lo que había— la banda - * que cuenta el vecino empezaba a 0,35 u del centro, o sea **0,15 u más allá del - * borde visible de la tarjeta** (1,0 × 0,4): soltar cerca del borde contaba como - * fallo del cartel de al lado y restaba puntos. Ahora la fila mide 1,75 u, así que - * las dos regiones ya no se solapan (1,75 ≥ 0,6 + 0,6): fallar de largo solo - * significa que la pieza no se coloca, y el peor hueco en pantalla entre dos - * tarjetas pasa de 23 px a 31 px. + * (`endDrag` de `useGameStore`). El fallo se cuenta **pasado** `snapRadius` —antes de + * eso la pieza coloca—, así que lo que decide es hasta dónde alcanza el vecino: con + * las filas a 0,95 u, lo que había, su banda llegaba a los **0,35 u** del centro, + * 0,15 u más allá del borde visible de la tarjeta (1,0 × 0,4), y en la práctica + * **cualquier tiro de más de 0,6 u caía dentro**: soltar cerca del borde contaba + * como fallo del cartel de al lado y restaba puntos. Con la fila a 1,75 u (y la + * columna a 1,5, que es el mínimo) el vecino no entra hasta los 0,9 u: los tiros + * entre 0,6 y 0,9 u solo dejan la pieza sin colocar, y pasado ese punto el vecino + * vuelve a contar. El peor hueco en pantalla entre dos tarjetas pasa de 23 px a + * 31 px. * * Todo medido con la proyección de la cámara (`tests/`, sonda de la fase 1): cuatro * filas de 5 columnas no caben más separadas —con 1,25 la de atrás queda a 0,1 u - * del borde de la mesa y con 1,3 se sale— y seis columnas dejan 55 px de hueco - * horizontal con tres filas de 1,75. + * del borde de la mesa y con 1,3 se sale— y seis columnas dejan las tarjetas a + * 31 px en la misma fila (el peor hueco) y 55 px en la misma columna. */ const PLATE_COLS = [-3.75, -2.25, -0.75, 0.75, 2.25, 3.75] const PLATE_Z0 = -0.95 diff --git a/tests/run.mjs b/tests/run.mjs index e2011cc..d4710a0 100644 --- a/tests/run.mjs +++ b/tests/run.mjs @@ -2621,6 +2621,7 @@ async function identifyCards() { piezas: c.COMPONENTS_BY_STAGE.identify.length, snap: Math.max(...mounts.map((m) => m.snapRadius)), wrong: stage.drop.wrongRadius, + cardHalf: Math.max(w, d) / 2, minPlano, minX, minZ, @@ -2650,6 +2651,28 @@ async function identifyCards() { reparto.bordeTrasero >= reparto.mesaTrasera, `borde trasero ${reparto.bordeTrasero.toFixed(2)} u, la mesa llega a ${reparto.mesaTrasera.toFixed(2)} u`, ) + // El requisito de la persona usuaria: soltar SOBRE la tarjeta tiene que colocar + // siempre. Basta con que medio lado de la tarjeta quepa en `snapRadius`. + check( + 'carteles: soltar sobre la propia tarjeta siempre coloca', + reparto.cardHalf < reparto.snap, + `medio lado ${reparto.cardHalf.toFixed(2)} u frente a snapRadius ${reparto.snap.toFixed(2)} u`, + ) + // El fallo se cuenta PASADO `snapRadius` (antes coloca), así que lo que decide es + // hasta dónde llega el alcance del vecino: si `snapRadius` y ese alcance se + // solapan, no queda ningún tiro largo sin coste. + check( + 'carteles: el vecino solo cuenta pasado snapRadius', + reparto.minPlano - reparto.wrong > reparto.snap, + `el vecino entra en su banda a ${(reparto.minPlano - reparto.wrong).toFixed(2)} u del centro, más allá de snapRadius ${reparto.snap.toFixed(2)} u`, + ) + // El tiro que hace esta sección (0,7 u hacia el vecino más próximo) no puede + // alcanzar su banda: deja la pieza sin colocar y no cuesta nada. + check( + 'carteles: el tiro de 0,7 u hacia el vecino no llega a su banda', + reparto.minPlano >= reparto.snap + 0.7, + `separación mínima ${reparto.minPlano.toFixed(2)} u frente a ${(reparto.snap + 0.7).toFixed(2)} u`, + ) // Hueco en pantalla entre los rectángulos de dos tarjetas vecinas: es lo que se // ve («están muy pegadas»). El umbral es el medido con este reparto (31 px); con From f072eb864c77d04895e939be368a5e8705363a82 Mon Sep 17 00:00:00 2001 From: jmoredev Date: Sat, 17 Oct 2026 12:32:59 +0200 Subject: [PATCH 2/6] =?UTF-8?q?fix:=20la=20rejilla=20de=20la=20fase=201=20?= =?UTF-8?q?se=20adapta=20al=20n=C3=BAmero=20de=20piezas=20de=20la=20placa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit La fase 1 tiene una pieza por cada tipo de conector de la placa, así que su número cambia con la placa: 18 con ocho tipos y 19 en la 03, que trae uno más (vga además de dvi). La rejilla estaba fija en 6 columnas x 3 filas = 18 celdas y los carteles se repartían en `ceil(n / 6)` filas, así que con 19 piezas el reparto se rompía por dos sitios a la vez: - la pieza 19 repetía la celda de la 15 (`floor(18 / 3)` se recortaba a la última columna): medido con 200 barajados, la separación mínima entre dos piezas caía a 0,035 u (y en la misma columna visual, 0 u); - los carteles pasaban a 4 filas de 1,75 u y la de atrás caía en z = -6,2 con la mesa acabando en -4,9: cuatro carteles flotando fuera de la mesa, en pantalla a y = 111 px cuando el borde lejano de la mesa está en 154. Entre esos cuatro caían, según el barajado, los tres jacks de audio, que es lo que se reportó. Ahora `gridCols` calcula las columnas que hacen falta para las celdas que hay, hasta el suelo de separación (0,9 u entre piezas: huella 0,75 + aire; 1,5 u entre carteles: snapRadius + wrongRadius) y avisa por consola si ni así caben, en vez de dejar dos piezas compartiendo sitio en silencio. Las filas y sus separaciones no cambian, así que con 18 piezas el reparto sale idéntico al de antes (columnas ±4 a 1,6 u y carteles ±3,75 a 1,5 u) y con 19 pasa a 7 columnas sin salirse de ±4 ni de la mesa. Verificado: tsc -b y lint sin errores; `traySeparation` e `identifyCards` en las placas 01 y 03 (en rojo con la rejilla fija: cuatro comprobaciones fallidas en la 03; en verde después) y la pasada completa del arnés. --- src/data/components.ts | 133 +++++++++++++++++++++++++++++++++-------- src/data/stages.ts | 7 +++ 2 files changed, 115 insertions(+), 25 deletions(-) diff --git a/src/data/components.ts b/src/data/components.ts index 331acd4..22552ac 100644 --- a/src/data/components.ts +++ b/src/data/components.ts @@ -42,13 +42,6 @@ export const BOARD_MODEL = { rotation: ACTIVE_BOARD.rotation, } -function traySlot(stage: StageId, indexInStage: number): [number, number] { - const { cols, rows } = STAGE_BY_ID[stage].tray - const col = Math.floor(indexInStage / rows.length) - const row = indexInStage % rows.length - return [cols[Math.min(col, cols.length - 1)], rows[row]] -} - /** * Dimensión mayor con la que se dibuja una pieza en la mesa. Los modelos se * normalizan a `def.size` y luego se escalan para no pasar de 0,75 @@ -57,13 +50,89 @@ function traySlot(stage: StageId, indexInStage: number): [number, number] { */ export const TRAY_MAX_SPAN = 0.75 +/** Aire que se deja como mínimo entre dos piezas vecinas de la mesa. */ +const TRAY_MIN_GAP = 0.15 + /** Separación más pequeña entre dos líneas de una rejilla (columnas o filas). */ function gridGap(lines: number[]): number { return Math.min(...lines.slice(1).map((v, i) => Math.abs(v - lines[i]))) } -/** Aire que se deja como mínimo entre dos piezas vecinas de la mesa. */ -const TRAY_MIN_GAP = 0.15 +/** Cómo se reparten las columnas de una bandeja. */ +interface TrayGrid { + /** Nombre del reparto, para el aviso de consola. */ + name: string + /** Separación entre columnas mientras caben todas. */ + pitch: number + /** Anchura disponible para el reparto, que queda centrado en 0. */ + width: number + /** Suelo de la separación entre columnas: huella de una pieza más aire. */ + minPitch: number +} + +/** + * Columnas de una rejilla para `count` celdas repartidas en `rowCount` filas. + * + * Las filas las fija la bandeja y su separación está medida (en la fase 1: 2,1 u + * entre filas de piezas, para que la cámara oblicua no dibuje una justo detrás de + * otra, y 1,75 u entre carteles, para que el cartel de al lado no entre en la + * banda de fallo), así que el número de columnas sale del de celdas: las que hagan + * falta hasta tocar el suelo duro. + * + * Avisa por consola si ni con el suelo duro caben, porque a partir de ahí dos + * piezas compartirían celda en silencio: es el defecto que se midió con la placa + * de 19 piezas (los tres jacks de audio entre ellas). La pieza 19 repetía la celda + * de la 15 y los carteles, repartidos en `ceil(19 / 6) = 4` filas, ponían una fila + * entera **fuera de la mesa** (z = −6,2 con la mesa acabando en −4,9). + */ +function gridCols(rowCount: number, count: number, grid: TrayGrid): number[] { + const maxCols = Math.floor(grid.width / grid.minPitch) + 1 + const cols = Math.max(1, Math.min(maxCols, Math.ceil(count / rowCount))) + if (count > cols * rowCount) { + console.warn( + `bandeja: «${grid.name}» no da para ${count} celdas en ${cols}×${rowCount} ` + + `(caben ${cols * rowCount}); dos piezas compartirán sitio.`, + ) + } + const step = cols > 1 ? Math.min(grid.pitch, grid.width / (cols - 1)) : 0 + const span = step * (cols - 1) + return Array.from({ length: cols }, (_, i) => -span / 2 + i * step) +} + +/** + * Rejilla de las piezas de la fase 1: 6 columnas × 3 filas = 18 celdas para las 18 + * piezas de una placa con ocho tipos de conector, y una columna más (hasta 7, que + * dan 21) cuando la placa trae más. + * + * La anchura se queda en 8 u (±4) a propósito: más ancho sacaba piezas de la mesa + * visible (x ≈ 118 px) y las metía debajo de los paneles laterales. + */ +const PIECE_GRID: TrayGrid = { + name: 'piezas de la fase 1', + pitch: 1.6, + width: 8, + minPitch: TRAY_MAX_SPAN + TRAY_MIN_GAP, +} + +/** + * Columnas de la bandeja de una fase. La de la fase 1 se calcula la primera vez que + * hace falta, porque depende de cuántas piezas tenga la partida (`IDENTIFY_CELLS`, + * que se conoce unas líneas más abajo, cuando ya está montado el catálogo). + */ +let identifyCols: number[] | null = null +function trayCols(stage: StageId): number[] { + const { cols, rows } = STAGE_BY_ID[stage].tray + if (stage !== 'identify') return cols + return (identifyCols ??= gridCols(rows.length, IDENTIFY_CELLS, PIECE_GRID)) +} + +function traySlot(stage: StageId, indexInStage: number): [number, number] { + const { rows } = STAGE_BY_ID[stage].tray + const cols = trayCols(stage) + const col = Math.floor(indexInStage / rows.length) + const row = indexInStage % rows.length + return [cols[Math.min(col, cols.length - 1)], rows[row]] +} /** * Desplazamiento aleatorio máximo de una pieza dentro de su celda. @@ -77,8 +146,8 @@ const TRAY_MIN_GAP = 0.15 * la da el barajado, no el desplazamiento. */ export function trayJitter(stage: StageId): number { - const { cols, rows } = STAGE_BY_ID[stage].tray - const gap = Math.min(gridGap(cols), gridGap(rows)) + const { rows } = STAGE_BY_ID[stage].tray + const gap = Math.min(gridGap(trayCols(stage)), gridGap(rows)) // Una rejilla de una sola línea no tiene distancia que medir en ese eje // (`gridGap` devuelve infinito) y una de 1×1 no tiene parejas: sin este // guardia el desplazamiento saldría infinito y la pieza se iría de la mesa. @@ -495,6 +564,9 @@ function cableComponents(): RawComponent[] { const ALL_COMPONENTS: RawComponent[] = [...RAW, ...cableComponents()] +/** Celdas de la mesa de la fase 1: una por componente del catálogo. */ +const IDENTIFY_CELLS = ALL_COMPONENTS.length + export const COMPONENTS: ComponentDef[] = ALL_COMPONENTS.map((component, index) => { const indexInStage = stageCounters[component.stage]++ const variant = pickVariant(component) @@ -655,8 +727,8 @@ export function rotationPreviewDef(target: RotationTarget, rotation: Vec3): Comp } /** - * Rejilla de los carteles de la identificación: 6 columnas × 3 filas (18 carteles, - * uno por pieza, así que no sobra ninguna celda). + * Rejilla de los carteles de la identificación: 3 filas y las columnas que hagan + * falta, calculadas por `gridCols` (6 para 18 piezas, 7 para 19). * * La separación entre filas no es estética: en la fase 1 la colocación se resuelve * por cercanía al centro del cartel con `snapRadius` 0,6, y el fallo se cuenta @@ -677,21 +749,33 @@ export function rotationPreviewDef(target: RotationTarget, rotation: Vec3): Comp * del borde de la mesa y con 1,3 se sale— y seis columnas dejan las tarjetas a * 31 px en la misma fila (el peor hueco) y 55 px en la misma columna. */ -const PLATE_COLS = [-3.75, -2.25, -0.75, 0.75, 2.25, 3.75] -const PLATE_Z0 = -0.95 -const PLATE_DZ = 1.75 - -function plateSlot(index: number, rowCount: number): [number, number] { - const col = Math.min(Math.floor(index / rowCount), PLATE_COLS.length - 1) - const row = index % rowCount - return [PLATE_COLS[col], PLATE_Z0 - row * PLATE_DZ] +const CARD_ROWS = [-0.95, -2.7, -4.45] + +/** + * 1,5 u entre columnas es la separación mínima (con menos, el cartel de al lado + * entra en la banda de fallo) y la anchura disponible son 9 u (±4,5), que es donde + * caben las 7 columnas de una placa con más conectores. La forma que se elige es la + * que deja todo dentro de la mesa: repartir 19 carteles en una cuarta fila los saca + * de ella (la fila de atrás caía en z = −6,2 y la mesa acaba en −4,9). + */ +const CARD_GRID: TrayGrid = { + name: 'carteles de la fase 1', + pitch: 1.5, + width: 9, + minPitch: 1.5, +} +const CARD_COLS = gridCols(CARD_ROWS.length, IDENTIFY_CELLS, CARD_GRID) + +function plateSlot(index: number): [number, number] { + const rowCount = CARD_ROWS.length + const col = Math.min(Math.floor(index / rowCount), CARD_COLS.length - 1) + return [CARD_COLS[col], CARD_ROWS[index % rowCount]] } /** Carteles de la identificación: uno por pieza, con el nombre de su tipo. */ function identifyMounts(): MountPoint[] { - const rowCount = Math.ceil(COMPONENTS.length / PLATE_COLS.length) return COMPONENTS.map((def, index) => { - const [x, z] = plateSlot(index, rowCount) + const [x, z] = plateSlot(index) return { id: `identify_${index}`, stage: 'identify' as const, @@ -747,9 +831,8 @@ export function shuffleLayout(): void { // Los carteles se barajan aparte: si no, cada pieza caería sobre el suyo. const plates = MOUNTS_BY_STAGE.identify const plateOrder = shuffle(plates.length) - const rowCount = Math.ceil(plates.length / PLATE_COLS.length) plates.forEach((mount, i) => { - const [x, z] = plateSlot(plateOrder[i], rowCount) + const [x, z] = plateSlot(plateOrder[i]) mount.position = [x, 0.09, z] }) diff --git a/src/data/stages.ts b/src/data/stages.ts index d6edf29..aaf9869 100644 --- a/src/data/stages.ts +++ b/src/data/stages.ts @@ -39,6 +39,13 @@ export const STAGES: Stage[] = [ // lo que ocupan (0,75). El desplazamiento aleatorio se deriva de estas // separaciones (`trayJitter`), así que ensanchar la rejilla las separa. // + // Las columnas de esta fase NO son las de aquí abajo: la fase 1 tiene una + // pieza por cada tipo de conector de la placa, así que su número cambia de + // una placa a otra (18 piezas con ocho tipos, 19 si la placa trae uno más) y + // `components.ts` las deriva del catálogo (`trayCols`). Estos 6 valores son + // los que salen para 18 piezas; con 19 la rejilla pasa a 7 columnas y las + // piezas siguen dentro de ±4. Las filas SÍ son estas. + // // 6 columnas × 3 filas = 18 celdas para 18 piezas, con las filas a 2,1 u: dos // piezas de la misma columna —que la cámara oblicua dibuja una detrás de // otra— quedan a 1,4 u en profundidad (~110 px en pantalla) en vez de a 0,9. From 5fc27c133fd10d019a2293c5bb78d938bf61c2e6 Mon Sep 17 00:00:00 2001 From: jmoredev Date: Sat, 17 Oct 2026 12:32:59 +0200 Subject: [PATCH 3/6] fix: las piezas procedurales de la fase 1 se dibujan en su celda MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Las cuatro piezas que dibuja el código (los tres jacks y el USB-C, las únicas sin PNG ni .glb) no aparecían en la mesa: ni en su celda ni en ningún sitio. Medido preguntándole al lienzo pieza por pieza (pointermove sintético sobre el canvas y lectura de `document.body.style.cursor`, que `TrayItem` pone en `grab`): 0 puntos de geometría en las cuatro y todas las demás correctas. La causa está en `Align`, el ajuste de las piezas procedurales: centraba la pieza midiendo su caja envolvente con `Box3.setFromObject`, que mide en coordenadas de MUNDO, así que el centrado incluía la propia colocación de la pieza en la mesa y la dejaba en el origen del mundo: el centro de la mesa. De ahí el síntoma entero que reportó el alumnado —las cuatro apiladas en el centro (parecían desaparecer, y su cartel con el nombre sí salía, así que daba la impresión de estar fuera de la mesa)— y, al coger una con el ratón, el fantasma del arrastre saliendo en el centro de la mesa en vez de bajo el cursor. `localBox` mide cada malla multiplicada por su matriz relativa al grupo (mundo -> grupo), que es lo que ignora a los padres, y `Align` la usa. Los .glb se ajustan dentro de `GltfModel` y los conectores con imagen son un plano que no se alinea: por eso solo se veía en las procedurales y ninguna prueba lo cogía —el arnés colocaba con la lista y con los marcadores `.mount-center`—. Verificado: ROJO/VERDE con la sección 20 del arnés, que barre las 18 y las 19 piezas de la fase 1 en las placas 01 y 03. Sin el arreglo falla nombrando las cuatro piezas procedurales; con él, todas en su celda. tsc -b, lint y la pasada completa del arnés, en verde. --- src/three/ComponentModel.tsx | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/src/three/ComponentModel.tsx b/src/three/ComponentModel.tsx index e9a99b5..44775ac 100644 --- a/src/three/ComponentModel.tsx +++ b/src/three/ComponentModel.tsx @@ -10,6 +10,35 @@ import { Placeholder } from './Placeholder' const IDENTITY: Vec3 = [0, 0, 0] +/** + * Caja envolvente de un grupo **en su propio espacio**. + * + * `Box3.setFromObject` mide en coordenadas de MUNDO, así que incluye dónde está + * colocada la pieza: al centrar con ese resultado, la pieza acababa en el origen + * del mundo —el centro de la mesa— en vez de en su celda. Solo se notaba en las + * piezas procedurales (los cuatro conectores sin PNG ni .glb), que son las únicas + * que pasan por `Align` colocadas fuera del origen: los `.glb` se ajustan dentro + * de `GltfModel` y los conectores con imagen son un plano que no se alinea. + * + * Se mide multiplicando la caja de cada malla por su matriz relativa al grupo + * (mundo → grupo), que es lo que ignora a los padres. + */ +function localBox(group: THREE.Object3D): THREE.Box3 { + const box = new THREE.Box3() + const alGrupo = new THREE.Matrix4().copy(group.matrixWorld).invert() + const matriz = new THREE.Matrix4() + group.traverse((obj) => { + const mesh = obj as THREE.Mesh + if (!mesh.isMesh || !mesh.geometry) return + mesh.geometry.computeBoundingBox() + const bb = mesh.geometry.boundingBox + if (!bb) return + matriz.multiplyMatrices(alGrupo, mesh.matrixWorld) + box.union(bb.clone().applyMatrix4(matriz)) + }) + return box +} + /** * Gira un objeto ligero (placeholder) y lo reajusta: centrado en XZ y con la * base en y=0. Los modelos .glb se ajustan dentro de GltfModel, que memoriza @@ -22,8 +51,9 @@ function Align({ rotation, children }: { rotation: Vec3; children: ReactNode }) if (!group) return group.rotation.set(...rotation) group.position.set(0, 0, 0) - group.updateMatrixWorld(true) - const box = new THREE.Box3().setFromObject(group) + // Los padres primero: la caja local necesita la matriz de mundo del grupo. + group.updateWorldMatrix(true, true) + const box = localBox(group) const center = box.getCenter(new THREE.Vector3()) group.position.set(-center.x, -box.min.y, -center.z) group.updateMatrixWorld(true) From 78deaec161776d3b32dce9ce740f97ffdec43787 Mon Sep 17 00:00:00 2001 From: jmoredev Date: Sat, 17 Oct 2026 12:33:00 +0200 Subject: [PATCH 4/6] test: cubre las dos placas, el dibujo de cada pieza y quita dos falsos rojos MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cuatro cosas del arnés, todas de esta rama: - `traySeparation` e `identifyCards` corren ahora en `motherboard-01` y `motherboard-03` (la única con 19 piezas) y sus comprobaciones llevan la placa en la etiqueta: el reparto de la fase 1 depende del número de piezas, así que medir una sola placa no lo cubría. - Sección nueva (20, `identifyDrawn`): le pregunta al lienzo por la geometría de cada pieza de la fase 1 y falla si alguna no está donde dice su dato. Usa pointermove sintéticos sobre el canvas —el mismo evento que escucha R3F, y que no pasa por los paneles, que son DOM por encima— y nueve muestras por celda, así que barre las 19 piezas en un par de segundos. Era el único camino que no cubría ninguna sección: ninguna prueba cogía con el ratón una pieza procedural. - El socket de HMR de Vite ya no cuenta como error de página: en una pasada larga el servidor rechazó una reconexión y la sección del examen salió en rojo con todos sus checks funcionales en verde (esa misma sección sola: TODO OK). Si el servidor se cae de verdad, las secciones fallan por sus propios checks y el preflight `requireServer()` avisa antes de empezar. - El cartel de fase se ESPERA (`waitForSelector('.stage-banner')`) en vez de mirarlo tras un tiempo fijo: dura 3,6 s y con la máquina cargada se llegaba tarde a la lectura (falso negativo medido en una pasada de 18 minutos). Verificado: la sección 20 en rojo sin el arreglo del `Align` (falla nombrando las cuatro piezas procedurales) y en verde con él; `stageBanner` y `examDrag` en aislamiento, TODO OK; y la pasada completa. --- tests/run.mjs | 195 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 162 insertions(+), 33 deletions(-) diff --git a/tests/run.mjs b/tests/run.mjs index d4710a0..3f7191a 100644 --- a/tests/run.mjs +++ b/tests/run.mjs @@ -171,7 +171,15 @@ async function newPage(browser, url, seed) { const warns = [] page.on('pageerror', (e) => errors.push(e.message)) page.on('console', (m) => { - if (m.type() === 'error') errors.push('console: ' + m.text()) + // El socket de HMR de Vite no es un error de la aplicación: si el servidor de + // desarrollo se queda sin aceptar una reconexión —le pasó una vez en una + // pasada larga— el cliente registra un `console.error` que no tiene nada que + // ver con el simulador, y la sección entera salía en rojo por eso (los checks + // funcionales habían pasado). Si de verdad se cae el servidor, las secciones + // fallan igual por sus propios checks, y `requireServer()` avisa antes. + if (m.type() === 'error' && !/WebSocket connection to 'ws:\/\/[^']+' failed/.test(m.text())) { + errors.push('console: ' + m.text()) + } if (m.type() === 'warn') warns.push(m.text()) }) // seed: siembra localStorage ANTES de que arranque la app (el store la lee @@ -1228,7 +1236,7 @@ async function examNoHelp() { } /* ---------- 11. La mesa nunca apila dos piezas ---------- */ -async function traySeparation() { +async function traySeparation(board = 'motherboard-01') { // Dos piezas se solapan si su separación en LOS DOS ejes es menor que su // huella. Ninguna pieza dibujada supera 0,75 u en ningún eje (los modelos se // normalizan a `def.size` y luego se escalan para no pasar de 0,75; los cables @@ -1237,11 +1245,11 @@ async function traySeparation() { // siempre: antes era ±0,4 fijo y dos vecinas podían quedar a 0,1 u. const SPAN = 0.75 const RUNS = 200 - const { page, errors } = await newPage(browser, `${BASE_URL}/?board=motherboard-01`) + const { page, errors } = await newPage(browser, `${BASE_URL}/?board=${board}`) const menu = await page .waitForSelector('button.mode-card', { timeout: 60000 }) .catch(() => null) - check('mesa: menú de modos visible (sonda de datos)', !!menu) + check(`mesa (${board}): menú de modos visible (sonda de datos)`, !!menu) if (!menu) { await page.close() return @@ -1298,7 +1306,7 @@ async function traySeparation() { for (const stage of ['identify', 'board', 'ports', 'peripherals']) { const r = result[stage] check( - `mesa: ninguna pieza se solapa en «${stage}» (${RUNS} barajados)`, + `mesa (${board}): ninguna pieza se solapa en «${stage}» (${RUNS} barajados)`, r.solapados === 0 && r.peor >= SPAN, `${r.piezas} piezas, separación mínima ${r.peor} u (mínimo ${SPAN}) y ${r.solapados} pares por debajo`, ) @@ -1307,7 +1315,7 @@ async function traySeparation() { // ninguna debe esconderse detrás de otra en la misma columna visual. const id = result.identify check( - 'mesa: en la fase 1 ninguna pieza se esconde en la misma columna visual', + `mesa (${board}): en la fase 1 ninguna pieza se esconde en la misma columna visual`, id.columnaCorta === 0 && id.peorColumna >= 1.3, `misma columna: separación mínima en profundidad ${id.peorColumna} u (mínimo 1.3) y ${id.columnaCorta} pares por debajo`, ) @@ -1317,12 +1325,12 @@ async function traySeparation() { // rejilla de esa fase siga dejando más aire del mínimo (0,9 en vez de 0,75), // que es la regresión que provocó el solape cuando la rejilla se estrechó. check( - 'mesa: la identificación mantiene su suelo de diseño (0,9 u)', + `mesa (${board}): la identificación mantiene su suelo de diseño (0,9 u)`, result.identify.peor >= 0.9, `separación mínima ${result.identify.peor} u (suelo de diseño 0,9; mínimo duro 0,75)`, ) - check('mesa: sin errores', errors.length === 0, errors.join(' | ')) + check(`mesa (${board}): sin errores`, errors.length === 0, errors.join(' | ')) await page.close() } @@ -2154,8 +2162,11 @@ async function stageBanner() { .catch(() => null) await menuCards[0].click() // práctica - await page.waitForSelector('.topbar', { timeout: 60000 }) - await wait(700) + // El cartel se quita solo a los 3,6 s, así que se ESPERA a que salga en vez de + // mirar a un tiempo fijo: con la máquina cargada (la pasada entera son 18 minutos + // de Chromium con render por software) se llegaba tarde a la lectura y el cartel + // ya no estaba —falso negativo medido en una pasada completa—. + await page.waitForSelector('.stage-banner', { timeout: 60000 }) const esperado = await page.evaluate(async () => { const m = await import('/src/data/stages.ts') return m.STAGES.map((s) => ({ id: s.id, titulo: s.title, texto: s.hint, corto: s.short })) @@ -2585,13 +2596,13 @@ async function examIdentifyHint() { * observable en examen —soltar 0,7 u hacia el cartel vecino más próximo— que es lo * que hacía perder puntos. */ -async function identifyCards() { - const { page, errors } = await newPage(browser, `${BASE_URL}/?board=motherboard-01`) +async function identifyCards(board = 'motherboard-01') { + const { page, errors } = await newPage(browser, `${BASE_URL}/?board=${board}`) const cartas = await page .waitForSelector('button.mode-card', { timeout: 60000 }) .then(() => page.$$('button.mode-card')) .catch(() => []) - check('carteles: menú de modos visible', cartas.length >= 2, `${cartas.length}`) + check(`carteles (${board}): menú de modos visible`, cartas.length >= 2, `${cartas.length}`) if (cartas.length < 2) { await page.close() return @@ -2637,24 +2648,24 @@ async function identifyCards() { }) check( - 'carteles: hay uno por cada pieza', + `carteles (${board}): hay uno por cada pieza`, reparto.cuantos === reparto.piezas, `${reparto.cuantos} carteles para ${reparto.piezas} piezas`, ) check( - 'carteles: ningún cartel ajeno cabe en la banda de fallo del suyo', + `carteles (${board}): ningún cartel ajeno cabe en la banda de fallo del suyo`, reparto.minPlano >= reparto.snap + reparto.wrong, `separación mínima ${reparto.minPlano.toFixed(2)} u (X ${reparto.minX.toFixed(2)}, Z ${reparto.minZ.toFixed(2)}) frente a snapRadius + wrongRadius = ${(reparto.snap + reparto.wrong).toFixed(2)} u`, ) check( - 'carteles: la fila de atrás cabe en la mesa', + `carteles (${board}): la fila de atrás cabe en la mesa`, reparto.bordeTrasero >= reparto.mesaTrasera, `borde trasero ${reparto.bordeTrasero.toFixed(2)} u, la mesa llega a ${reparto.mesaTrasera.toFixed(2)} u`, ) // El requisito de la persona usuaria: soltar SOBRE la tarjeta tiene que colocar // siempre. Basta con que medio lado de la tarjeta quepa en `snapRadius`. check( - 'carteles: soltar sobre la propia tarjeta siempre coloca', + `carteles (${board}): soltar sobre la propia tarjeta siempre coloca`, reparto.cardHalf < reparto.snap, `medio lado ${reparto.cardHalf.toFixed(2)} u frente a snapRadius ${reparto.snap.toFixed(2)} u`, ) @@ -2662,14 +2673,14 @@ async function identifyCards() { // hasta dónde llega el alcance del vecino: si `snapRadius` y ese alcance se // solapan, no queda ningún tiro largo sin coste. check( - 'carteles: el vecino solo cuenta pasado snapRadius', + `carteles (${board}): el vecino solo cuenta pasado snapRadius`, reparto.minPlano - reparto.wrong > reparto.snap, `el vecino entra en su banda a ${(reparto.minPlano - reparto.wrong).toFixed(2)} u del centro, más allá de snapRadius ${reparto.snap.toFixed(2)} u`, ) // El tiro que hace esta sección (0,7 u hacia el vecino más próximo) no puede // alcanzar su banda: deja la pieza sin colocar y no cuesta nada. check( - 'carteles: el tiro de 0,7 u hacia el vecino no llega a su banda', + `carteles (${board}): el tiro de 0,7 u hacia el vecino no llega a su banda`, reparto.minPlano >= reparto.snap + 0.7, `separación mínima ${reparto.minPlano.toFixed(2)} u frente a ${(reparto.snap + 0.7).toFixed(2)} u`, ) @@ -2693,22 +2704,22 @@ async function identifyCards() { } } check( - 'carteles: dos tarjetas vecinas no se pegan en pantalla', + `carteles (${board}): dos tarjetas vecinas no se pegan en pantalla`, hueco >= 28, `${Math.round(hueco)} px de hueco entre las dos más próximas; hacen falta 28`, ) - check('carteles: el reparto se mide sin errores de página', errors.length === 0, errors.join(' | ')) + check(`carteles (${board}): el reparto se mide sin errores de página`, errors.length === 0, errors.join(' | ')) await page.close() // El efecto que reportó el alumnado, en examen y con el ratón: se elige la pieza // cuyo cartel tiene al vecino MÁS próximo (con el reparto anterior son las filas a // 0,95 u) y se suelta 0,7 u hacia él, que es media tarjeta más allá de su borde. - const examen = await newPage(browser, `${BASE_URL}/?board=motherboard-01`) + const examen = await newPage(browser, `${BASE_URL}/?board=${board}`) const cartasExamen = await examen.page .waitForSelector('button.mode-card', { timeout: 60000 }) .then(() => examen.page.$$('button.mode-card')) .catch(() => []) - check('carteles: el examen arranca', cartasExamen.length >= 2, `${cartasExamen.length} tarjetas`) + check(`carteles (${board}): el examen arranca`, cartasExamen.length >= 2, `${cartasExamen.length} tarjetas`) if (cartasExamen.length < 2) { await examen.page.close() return @@ -2750,7 +2761,7 @@ async function identifyCards() { const [lejos] = await proyectaFase1(examen.page, [[cerca.x, objetivo.cartel[1], cerca.z]]) const [encima] = await proyectaFase1(examen.page, [objetivo.cartel]) check( - 'carteles: la pieza, su cartel y el punto vecino se localizan en pantalla', + `carteles (${board}): la pieza, su cartel y el punto vecino se localizan en pantalla`, !!pieza && !!lejos && !!encima, `${objetivo.name}: pieza ${JSON.stringify(pieza)}, a 0,7 u ${JSON.stringify(lejos)} (vecino a ${objetivo.distancia.toFixed(2)} u)`, ) @@ -2807,22 +2818,22 @@ async function identifyCards() { const despues = await juego() const puntosDespues = await puntos() check( - 'carteles: la pieza se coge y se suelta a 0,7 u de su cartel', + `carteles (${board}): la pieza se coge y se suelta a 0,7 u de su cartel`, soltado, `${objetivo.name}`, ) check( - 'carteles: soltar pasado el borde no cuenta el cartel de al lado', + `carteles (${board}): soltar pasado el borde no cuenta el cartel de al lado`, despues.errors === antes.errors && despues.filas === antes.filas, `fallos ${antes.errors} → ${despues.errors}, filas del resumen ${antes.filas} → ${despues.filas}`, ) check( - 'carteles: soltar pasado el borde no resta puntos', + `carteles (${board}): soltar pasado el borde no resta puntos`, puntosDespues === puntosAntes, `${puntosAntes} → ${puntosDespues}`, ) check( - 'carteles: la pieza no se coloca en el cartel de al lado', + `carteles (${board}): la pieza no se coloca en el cartel de al lado`, despues.colocadas === antes.colocadas, `${antes.colocadas} → ${despues.colocadas} colocadas`, ) @@ -2833,23 +2844,140 @@ async function identifyCards() { const colocado = await arrastra(encima) const final = await juego() check( - 'carteles: sobre su propio cartel la pieza se coloca', + `carteles (${board}): sobre su propio cartel la pieza se coloca`, colocado && final.colocadas === despues.colocadas + 1, `${despues.colocadas} → ${final.colocadas} colocadas`, ) check( - 'carteles: colocar bien no cuesta ningún fallo', + `carteles (${board}): colocar bien no cuesta ningún fallo`, final.errors === despues.errors, `${despues.errors} → ${final.errors}`, ) - check('carteles: sin errores de página', examen.errors.length === 0, examen.errors.join(' | ')) + check(`carteles (${board}): sin errores de página`, examen.errors.length === 0, examen.errors.join(' | ')) await examen.page.close() } +/* ---------- 20. Cada pieza de la fase 1 se dibuja en la celda que dice su dato ---------- */ +/** + * El fallback procedural (`Placeholder`) alineaba la pieza midiendo su caja + * envolvente en coordenadas de MUNDO (`Box3.setFromObject`), así que el centrado + * incluía la propia colocación de la pieza en la mesa y la dejaba en el origen del + * mundo: el centro de la mesa. Solo se notaba en las piezas que dibuja el código + * (los tres jacks y el USB-C, que no tienen ni PNG ni .glb): su celda quedaba vacía + * y, al arrastrarlas, el fantasma salía en el centro de la mesa en vez de bajo el + * cursor. Ninguna prueba las cogía con el ratón, así que pasaba desapercibido. + * + * La comprobación no mira el código: pregunta al lienzo por la geometría. Con + * `pointermove` sintéticos sobre el canvas —que es exactamente el evento que R3F + * escucha, y que no pasa por los paneles de la interfaz porque son DOM por encima— + * comprueba que debajo del punto donde la pieza DEBERÍA estar hay algo que responde + * al ratón (el cursor se pone en `grab`). Un `page.mouse.move` por punto costaría + * minutos; así se barren todas las piezas en un par de segundos. + */ +async function identifyDrawn(board = 'motherboard-01') { + const { page, errors } = await newPage(browser, `${BASE_URL}/?board=${board}`) + const cartas = await page + .waitForSelector('button.mode-card', { timeout: 60000 }) + .then(() => page.$$('button.mode-card')) + .catch(() => []) + check(`dibujo (${board}): menú de modos visible`, cartas.length >= 2, `${cartas.length}`) + if (cartas.length < 2) { + await page.close() + return + } + await cartas[0].click() + // Las piezas con .glb tardan: se espera a que la barra de carga se vaya (si no + // aparece, porque ya estaba todo en caché, sigue de largo). + await page + .waitForFunction(() => !document.querySelector('.loadingbar'), { timeout: 120000 }) + .catch(() => null) + await wait(800) + + const datos = await page.evaluate(async () => { + const c = await import('/src/data/components.ts') + const st = await import('/src/data/stages.ts') + const assets = await import('/src/data/assets.ts') + const stage = st.STAGES[0] + return { + total: c.COMPONENTS.length, + // Las que dibuja el código (sin PNG y sin .glb): son las que destaparon el + // defecto, así que se nombran en el detalle. + procedurales: c.COMPONENTS.filter( + (d) => !assets.connectorImageUrl(d.kind) && !assets.modelUrl(d), + ).map((d) => d.id), + mundos: c.COMPONENTS.map((d) => [ + d.identifyPos[0], + stage.tray.surfaceY + 0.05, + d.identifyPos[1], + ]), + nombres: c.COMPONENTS.map((d) => d.id), + } + }) + const pantallas = await proyectaFase1(page, datos.mundos) + + const sinDibujar = await page.evaluate( + async (puntos) => { + const canvas = document.querySelector('canvas') + const rect = canvas.getBoundingClientRect() + const hayPieza = (x, y) => { + canvas.dispatchEvent( + new PointerEvent('pointermove', { + clientX: rect.left + x, + clientY: rect.top + y, + bubbles: true, + pointerId: 1, + pointerType: 'mouse', + isPrimary: true, + buttons: 0, + }), + ) + return document.body.style.cursor === 'grab' + } + // Nueve muestras alrededor del centro de la celda: el punto exacto puede caer + // en un hueco de la geometría (el latiguillo de un jack, el asa del monitor). + const offsets = [ + [0, 0], [12, 0], [-12, 0], [0, 12], [0, -12], + [12, 12], [-12, -12], [12, -12], [-12, 12], + ] + const fuera = [] + for (const p of puntos) { + const hay = offsets.some(([dx, dy]) => hayPieza(p.x + dx, p.y + dy)) + if (!hay) fuera.push(p.id) + } + return fuera + }, + pantallas.map((p, i) => ({ id: datos.nombres[i], x: p.x, y: p.y })), + ) + + check( + `dibujo (${board}): las ${datos.total} piezas de la fase 1 están dibujadas en su celda`, + sinDibujar.length === 0, + sinDibujar.length + ? `sin geometría en su celda: ${sinDibujar.join(', ')}` + : `${datos.procedurales.length} de ellas procedurales (${datos.procedurales.join(', ')})`, + ) + check(`dibujo (${board}): sin errores de página`, errors.length === 0, errors.join(' | ')) + await page.close() +} + /** * Secciones de la pasada, en orden. `ONLY=examSummary,loadingBar` acota la * ejecución a las nombradas (para falsar un cambio sin pagar la pasada entera). */ +/** + * Las dos formas que tiene hoy la fase 1: 18 piezas (una placa de ocho tipos de + * conector) y 19 (una más). La rejilla de esa fase se deriva del número de piezas + * —tanto la de las piezas como la de los carteles—, así que sus dos secciones se + * miden en las dos placas: con 19 piezas y la rejilla fija de 6 columnas, una fila + * entera de carteles caía fuera de la mesa y la pieza 19 pisaba la celda de la 15. + * La 02 tiene los mismos tipos que la 01, así que no aporta un reparto distinto. + */ +const PLACAS_FASE1 = ['motherboard-01', 'motherboard-03'] + +async function enLasDosPlacas(seccion) { + for (const board of PLACAS_FASE1) await seccion(board) +} + const SECTIONS = [ ['fullGame', fullGame], ['examGiveUpGuard', examGiveUpGuard], @@ -2860,7 +2988,7 @@ const SECTIONS = [ ['dragGhostVisible', dragGhostVisible], ['sidePanels', sidePanels], ['examNoHelp', examNoHelp], - ['traySeparation', traySeparation], + ['traySeparation', () => enLasDosPlacas(traySeparation)], ['examDrag', examDrag], ['examSummary', examSummary], ['touchDrag', touchDrag], @@ -2868,7 +2996,8 @@ const SECTIONS = [ ['stageBanner', stageBanner], ['componentZoom', componentZoom], ['examIdentifyHint', examIdentifyHint], - ['identifyCards', identifyCards], + ['identifyCards', () => enLasDosPlacas(identifyCards)], + ['identifyDrawn', () => enLasDosPlacas(identifyDrawn)], ] const ONLY = process.env.ONLY From 45b022721302dc2c3c531c406357179df0385522 Mon Sep 17 00:00:00 2001 From: jmoredev Date: Sat, 17 Oct 2026 12:33:01 +0200 Subject: [PATCH 5/6] =?UTF-8?q?feat:=20imagen=20del=20conector=20USB-C=20(?= =?UTF-8?q?Wikimedia,=20CC=20BY-SA=204.0)=20con=20su=20cr=C3=A9dito?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El cable USB-C (el señuelo de la fase 2) era el único conector sin imagen y se dibujaba con la forma procedural, que es además la que destapó el defecto del `Align` del commit anterior. Se añade `src/assets/connectors/usb-c.png`: la foto de Santeri Viinamäki en Wikimedia Commons, girada para que la clavija apunte hacia abajo como en el resto de imágenes y con el fondo quitado (PNG con transparencia, 398x600, 188 KB). El fondo se detectó por crecimiento de región desde el borde, parando en el brillo del cuerpo, en el croma y en el gradiente suavizado del contorno, y luego se limpiaron islas y agujeros y se desvaneció 1 px el alfa. Es la primera imagen del proyecto con licencia BY-SA, así que queda citada con autor, fuente, licencia y los cambios en `CREDITS.md` y en `src/data/credits.ts` (que se mantienen en paralelo), y con una nota en el README de la carpeta: el archivo se queda bajo CC BY-SA 4.0 y hay que seguir citando autor y fuente. Verificado: la sección 20 del arnés confirma que el USB-C ya no es procedural (quedan los tres jacks) y que sigue dibujado en su celda; tsc -b, lint y la pasada completa, en verde. --- CREDITS.md | 9 +++++++++ src/assets/connectors/README.md | 7 +++++++ src/assets/connectors/usb-c.png | Bin 0 -> 188197 bytes src/data/credits.ts | 9 +++++++++ 4 files changed, 25 insertions(+) create mode 100644 src/assets/connectors/usb-c.png diff --git a/CREDITS.md b/CREDITS.md index d816860..7819baa 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -1,5 +1,9 @@ # Créditos y licencias +El **código** del simulador es [MIT](../LICENSE) (usar, copiar y modificar citando +el original). Lo de abajo son los **recursos de terceros**, que mantienen su propia +licencia. + Los **modelos 3D** y las **imágenes de los conectores** de este proyecto son obra de sus autores y se usan bajo la licencia que se indica en la tabla. Se pueden consultar también dentro del simulador, en **Menú → Créditos y licencias**. @@ -64,6 +68,11 @@ Todos los modelos 3D proceden de [Sketchfab](https://sketchfab.com) y son | `displayport.png` | Conector DisplayPort | | | | | | `dvi.png` | Conector DVI | | | | | | `vga.png` | Conector VGA | | | | | +| `usb-c.png` | Conector USB-C | Santeri Viinamäki | [Wikimedia Commons](https://commons.wikimedia.org/wiki/File:USB_Type-C_plug_20170626_crop.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) | Recortada, girada y con el fondo quitado (PNG con transparencia) | + +> La imagen del USB-C es una **foto** de Wikimedia Commons: al ser **CC BY-SA**, +> el archivo `usb-c.png` (versión recortada y con fondo transparente) se +> distribuye con la misma licencia, y hay que seguir citando a su autor. ## Otras librerías diff --git a/src/assets/connectors/README.md b/src/assets/connectors/README.md index c9a62a1..0fc51d2 100644 --- a/src/assets/connectors/README.md +++ b/src/assets/connectors/README.md @@ -33,3 +33,10 @@ El nombre debe ser el `kind` del conector. Estos son los que se usan: Si un PNG falta, ese conector se dibuja con la forma procedural de `src/three/Placeholder.tsx` y el simulador sigue funcionando. + +## Créditos + +El autor, la fuente, la licencia y los cambios de cada imagen están en +[`CREDITS.md`](../../CREDITS.md) y en `src/data/credits.ts`. Ojo con +`usb-c.png`: es una foto de Wikimedia Commons con licencia **CC BY-SA 4.0**, así +que hay que seguir citando a su autor y el archivo se queda con esa licencia. diff --git a/src/assets/connectors/usb-c.png b/src/assets/connectors/usb-c.png new file mode 100644 index 0000000000000000000000000000000000000000..5fd7026aff2dda259ab58b895c245546513a7eb8 GIT binary patch literal 188197 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�xe^s1bIJO#QwWUL5sAh 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 z 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

nwa{yuK9X{Htg+M|EZas*s9j0nb9wyj@nWiBo{ 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 Date: Sat, 17 Oct 2026 12:33:01 +0200 Subject: [PATCH 6/6] =?UTF-8?q?docs:=20colaboraci=C3=B3n=20con=20rama=20y?= =?UTF-8?q?=20PR,=20sello=20de=20Gentle-AI=20y=20licencia=20MIT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tres cosas de la portada, de la licencia y del registro de decisiones: - El README lleva el enlace al repositorio, el sello «Built with Gentle-AI» (el enlace y la imagen que pide el proyecto) y una sección «Cómo colaborar» con el flujo que se pidió: nunca trabajar sobre `main`, cada cambio en su rama (`feat/…`, `fix/…`, `docs/…`) y una propuesta de cambio (PR) hacia `main` para que la revise el responsable, desde un fork si no hay permiso de escritura. Los tres enlaces responden 200. - El proyecto no tenía licencia: se añade `LICENSE` con MIT —usar, copiar y modificar citando el original—, declarada en `package.json` y explicada en el README y en la cabecera de `CREDITS.md`. Cubre el CÓDIGO: los modelos 3D y las imágenes de terceros mantienen su licencia (CC BY, y CC BY-SA 4.0 la foto del USB-C), que es lo que evita que la MIT se lea como una relicencia de todo. - `AGENTS.md`: la tabla de decisiones recoge las cinco decisiones de esta rama (61 a 65), la colaboración externa en la sección de git y el filtro del socket de HMR en la de verificación. Verificado: `npm run build` (1,47 s), `npm run lint` y la pasada completa del arnés en verde. --- AGENTS.md | 17 ++++++++++++++++ LICENSE | 21 ++++++++++++++++++++ README.md | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 4 files changed, 95 insertions(+) create mode 100644 LICENSE diff --git a/AGENTS.md b/AGENTS.md index e761d97..1726b56 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -46,6 +46,10 @@ npm run models:optimize # comprimir los .glb de public/assets/models - Nunca hacer commit, amend, push ni PR sin que lo pida explícitamente la persona usuaria. - Remoto: `origin` → https://github.com/jmoredev/PC-Simulator.git +- **Colaboración externa:** quien no trabaja aquí propone los cambios desde una + rama propia con un *pull request* hacia `main`, para que se revisen antes de + publicarse (las instrucciones para la persona colaboradora están en + `README.md`, sección «Cómo colaborar»). ## 4. Estructura de carpetas @@ -195,6 +199,12 @@ Reglas de layout: | 58 | **La pieza seleccionada se ve ampliada en una ventanita** (fase 1) | En la fase 1 están todas las piezas sobre la mesa y los conectores se ven muy pequeños. Al seleccionar una, una ventanita la enseña entera: el **PNG del conector** cuando existe (más nítido que el dibujo 3D: `ps2`, `usb`, `lan`, `hdmi`, `displayport`, `dvi`, `vga`) y, si no, una **vista 3D de cerca** con la misma `ComponentVisual` (drei no trae `View` en esta versión, así que es un mini lienzo). Va al centro-abajo —la captura enseñó que a la izquierda tapaba la lista de fases—, con `pointer-events: none` para no estorbar el arrastre, solo en la fase 1 y **sin el nombre en examen** (misma regla que la 56). Cubierto en §17. | | 59 | **La ventanita del zoom se monta una vez por fase, no por pieza** | Montarla condicionada a la pieza seleccionada la desmontaba **en cada colocación** de la fase 1 (18 por partida) y **cada montaje creaba un contexto WebGL nuevo**; el que el navegador se lleva por agotamiento es el más antiguo, o sea el de la **escena principal**, y la vista 3D dejaría de pintar. Ahora el panel (y su lienzo) viven toda la fase 1 y sin selección se **ocultan** con `zoom--oculto` (así el lienzo conserva su tamaño y su contexto); fuera de la fase 1 se desmontan, porque ahí no hacen falta. Hallazgo `R4-001` de la revisión nativa; cubierto en §17, donde el ciclo **seleccionar → colocar (que deselecciona) → seleccionar** se comprueba de verdad y un marcador sobre el nodo del lienzo detecta cualquier remontaje (falsado: con el montaje condicional fallan las cinco comprobaciones de ese ciclo). | | 60 | **Los carteles de la fase 1 se reparten en 6 × 3, con las filas a 1,75 u** | Cada cartel acepta **un solo tipo** de pieza, así que la pieza nunca se coloca en el cartel equivocado: el defecto que reportó el alumnado era de **conteo**. `endDrag` cuenta fallo cuando **no** hay cartel correcto a `snapRadius` (0,6) y **sí** uno ajeno a `wrongRadius` (0,6), y lo cuenta **pasado `snapRadius`** —antes de eso la pieza coloca—, así que lo que decide es hasta dónde alcanza el vecino: con las filas a 0,95 u su banda llegaba a los **0,35 u** del centro, 0,15 u más allá del borde visible de la tarjeta (1,0 × 0,4), de modo que **cualquier tiro de más de 0,6 u caía dentro**, contaba el vecino y **restaba puntos** (medido en examen: 100 → 97, 0 → 1 fallos). Con las filas a 1,75 u (y la columna a 1,5 u, que es el mínimo) el vecino no entra hasta los **0,9 u**: los tiros entre 0,6 y 0,9 u ya no cuestan nada y solo dejan la pieza sin colocar, y pasado 0,9 u el vecino vuelve a contar — el margen sin coste pasa de 0,6 u a 0,9 u, **no a infinito**. El peor hueco en pantalla entre dos tarjetas pasa de **23 px a 31 px**. Cuatro filas de cinco columnas no caben más separadas —a 1,25 u la de atrás queda a 0,1 u del borde de la mesa y a 1,3 se sale—, así que la forma pasa a 6 × 3 (18 celdas exactas, sin huecos). Todo medido con la proyección de la cámara, y el agarre de la pieza en el arnés quedó unificado en `COGER_PIEZA` (el monitor caía 0,15 u por encima del punto calculado y no se dejaba coger). Cubierto en §19 —regla geométrica, hueco en pantalla, suelta real a 0,7 u y los márgenes de `snapRadius` y del vecino—; falsado: con 0,95 u fallan los seis. Las dos primeras redacciones de esta fila decían que el fallo empezaba a 0,35 u y que fallar de largo no costaba nada: lo corrigió la verificación independiente (V1-V5 MET, sin bloqueantes) y los checks que la acompañan lo dejan fijado. | +| 61 | **La rejilla de la fase 1 se deriva del número de piezas** | La fase 1 tiene una pieza por cada tipo de conector de la placa, así que su número cambia con la placa: **18** con ocho tipos y **19** en la 03, que trae uno más. La rejilla estaba fija en 6 columnas × 3 filas = 18 celdas, y los carteles en `ceil(n / 6)` filas, así que con 19 piezas el reparto se rompía por dos sitios a la vez: la pieza 19 repetía la celda de la 15 (una columna de más hacía que `floor(18 / 3)` se recortara a la última) y los carteles, repartidos en `ceil(19 / 6) = 4` filas de 1,75 u, dejaban **una fila entera fuera de la mesa** —medido: borde trasero en z = −6,2 con la mesa acabando en −4,9, y en pantalla a y = 111 px, por encima del borde lejano de la mesa (y = 154)—. Es el defecto que se reportó («los cables de audio, micrófono y E/S salen fuera de la mesa»): los carteles de esos cables eran algunos de los que quedaban flotando más allá del borde, y la pieza que compartía celda desaparecía al colocarla. Ahora `gridCols` calcula las columnas que hacen falta —hasta el suelo de separación: 0,9 u entre piezas (huella 0,75 + aire), 1,5 u entre carteles (`snapRadius` + `wrongRadius`) y ±4 / ±4,5 u de ancho— y avisa por consola si ni así caben, en vez de dejar dos piezas compartiendo sitio en silencio. Las filas y sus separaciones no cambian, así que con 18 piezas el reparto sale **idéntico** al de antes, y el arnés mide las dos formas: `traySeparation` e `identifyCards` corren en `motherboard-01` y `motherboard-03` —§11 y §19—. | +| 62 | **La pieza procedural se alinea midiendo en su espacio, no en el mundo** | Las piezas que dibuja el código (`Placeholder`) se ajustan con `Align`, que centraba la pieza midiendo su caja envolvente con `Box3.setFromObject` —en coordenadas de **mundo**—, así que el centrado incluía la propia colocación en la mesa y la dejaba en el **origen del mundo**: el centro de la mesa. Solo se notaba en las **cuatro piezas procedurales de la fase 1** (los tres jacks y el USB-C, los únicos sin PNG ni `.glb`): su celda quedaba vacía —el cartel con su nombre sí salía, así que el cable parecía estar fuera de la mesa— y al cogerlas con el ratón el fantasma aparecía en el centro de la mesa en vez de bajo el cursor, de modo que al soltarlas se perdían. Los `.glb` se ajustan dentro de `GltfModel` y los conectores con imagen son un plano que no se alinea, por eso llevaba tiempo ahí sin que lo cazara nadie: lo reportó el alumnado («algunos cables de los construidos por ti salen fuera de la mesa y desaparecen»). Ahora `localBox` mide cada malla por su matriz **relativa al grupo** (mundo → grupo) y el centrado vuelve a ser el correcto. Cubierto en §20 —barrido del lienzo, pieza por pieza: ninguna puede quedarse sin geometría en su celda—; falsado: sin el arreglo falla nombrando las cuatro piezas procedurales. | +| 63 | **La imagen del USB-C es una foto de Wikimedia Commons (CC BY-SA 4.0)** | El cable USB-C (señuelo de la fase 2) era el único conector sin PNG: se dibujaba con la forma procedural, justo la que destapó el defecto del `Align` (fila 62). Se parte de la foto de Santeri Viinamäki (`USB_Type-C_plug_20170626_crop.jpg`, Commons), se gira para que la clavija apunte hacia abajo como en el resto de imágenes y se le quita el fondo (PNG con transparencia; el fondo se detecta por crecimiento de región desde el borde, parando en el gradiente del contorno). Es la primera imagen del proyecto con licencia **BY-SA**: el archivo sigue bajo CC BY-SA 4.0 y hay que seguir citando autor y fuente. Está en `CREDITS.md` y en `src/data/credits.ts`, que se mantienen en paralelo (decisión 42). | +| 64 | **La portada se presenta como proyecto colaborativo y construido con Gentle-AI** | El repositorio es público, así que el `README.md` lleva el enlace al repositorio, el sello **«Built with Gentle-AI»** (el enlace y la imagen que pide el propio proyecto) y la sección **«Cómo colaborar»** con el flujo que pide su responsable: **nunca trabajar sobre `main`**, cada cambio en su rama (`feat/…`, `fix/…`, `docs/…`) y una **propuesta de cambio (pull request) hacia `main`** para que la revise antes de fusionarla —desde un *fork* si quien colabora no tiene permiso de escritura—. El desarrollo interno sigue en `develop` (sección 3). Es documentación pura, así que no hay prueba automática: se comprobaron los tres enlaces (repositorio, destino del sello e imagen del sello, los tres 200) y el snippet HTML renderizado en la portada. | +| 65 | **El proyecto se publica con licencia MIT (el código) y los recursos de terceros mantienen la suya** | El repositorio no tenía licencia, así que se añade `LICENSE` con **MIT**: permite a cualquiera usar, copiar y modificar el producto **citando el original** (conservar el aviso de copyright y el texto de la licencia), que es exactamente lo que se pidió y sin las obligaciones de una licencia copyleft. El titular es `jmoredev` (autoría de todos los commits del proyecto), con el año del primer commit (2026). `package.json` lo declara (`"license": "MIT"`) y el `README.md` lo explica. **Lo importante**: la licencia MIT cubre el **código** —lo que hay en el repositorio salvo los recursos de terceros—, y los **modelos 3D y las imágenes** NO se relicencian: cada archivo mantiene su licencia (CC BY, CC BY-SA 4.0 la foto del USB-C), con su autor y su fuente en `CREDITS.md`; si algún día se quisiera relicenciar todo, habría que sustituir los recursos de terceros por otros propios o compatibles. GitHub enseña la licencia en el lateral del repositorio cuando el archivo `LICENSE` está en la rama por defecto (`main`), así que llega al publicarse el PR. Es documentación y metadatos: no hay prueba automática, se comprobó el texto estándar de MIT sin modificar y que `npm run build`/`lint` siguen igual. | + ## 7. Pipeline de assets 3D @@ -388,6 +398,13 @@ disfrazaba de fallo de producto: siete comprobaciones «se quedó en identificac pasada entera, que dura unos 11 minutos): `ONLY=touchDrag,loadingBar node tests/run.mjs`, con los nombres de `SECTIONS` separados por comas. +**El socket de HMR de Vite no cuenta como error de la app**: el arnés ignora los +`console.error` de `WebSocket connection to ws://… failed` (una vez, en una +pasada de 20 minutos, el servidor rechazó una reconexión y la sección «sin +errores de página» salía en rojo con todos sus checks funcionales en verde). Si +el servidor se cae de verdad, las secciones fallan por sus propios checks y +`requireServer()` avisa antes de empezar. + ## 11. Despliegue (GitHub Pages) - **URL pública (tras activar Pages):** diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..5969e71 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 jmoredev + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 4e1d4ec..2d6f143 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,13 @@ didáctica para cada componente. ![modos](https://img.shields.io/badge/modos-práctica%20%7C%20examen-38bdf8) +**Repositorio:** — si quieres +proponer un cambio, mira [Cómo colaborar](#cómo-colaborar). + + + Built with Gentle-AI + + ## Versión publicada La versión online para el aula se publica desde la rama `main` en @@ -90,6 +97,9 @@ npm run models:optimize # comprime los .glb de public/assets/models - **`develop`** → rama de trabajo; **todo el desarrollo va aquí**. - Ramas cortas desde `develop` con prefijo `feat/`, `fix/` o `docs/`. +Si vas a proponer un cambio para que se revise, sigue [Cómo +colaborar](#cómo-colaborar): rama propia y *pull request* hacia `main`. + ```bash git clone https://github.com/jmoredev/PC-Simulator.git cd PC-Simulator @@ -100,6 +110,41 @@ npm install Las decisiones de diseño, la estructura de carpetas y las convenciones están documentadas en [`AGENTS.md`](AGENTS.md). +## Cómo colaborar + +El proyecto vive en y **todo cambio +pasa por una revisión** antes de llegar a la versión publicada: se propone en una +rama y se revisa en un *pull request* hacia `main`. + +1. **Trabaja siempre en una rama**, nunca directamente sobre `main`: + + ```bash + git clone https://github.com/jmoredev/PC-Simulator.git + cd PC-Simulator + git checkout -b feat/mi-cambio # o fix/..., docs/... + ``` + +2. **Haz el cambio y pruébalo** antes de proponerlo: + + ```bash + npm run build # compila sin errores + npm run lint # sin avisos + node tests/run.mjs # arnés de pruebas (necesita el servidor de dev levantado) + ``` + +3. **Abre un *pull request* hacia `main`**, no hacia otra rama, explicando qué + cambia y por qué. El responsable del proyecto lo revisa antes de fusionarlo; + hasta entonces el cambio vive en tu rama (y en `main` no entra nada sin + revisar). + +4. **Si no tienes permiso de escritura en el repositorio**, haz antes un *fork* + con el botón **Fork** de GitHub y abre el pull request desde tu copia a + `main` del repositorio original. + +Si el cambio añade o cambia algo visible (una fase, una pieza, un texto de la +interfaz), cuenta también qué hay que mirar para comprobarlo: es lo que se +revisa en el pull request. + ## Pruebas Con el servidor de desarrollo levantado: @@ -245,6 +290,17 @@ src/ y [@react-three/drei](https://github.com/pmndrs/drei) - [Zustand](https://zustand.docs.pmnd.rs/) para el estado +## Licencia + +El **código** de este proyecto (todo lo que hay en el repositorio salvo los +recursos de terceros) es **MIT**: cualquiera puede usarlo, copiarlo y modificarlo, +**citando el original** (conservar el aviso de copyright y la licencia, ver +[`LICENSE`](LICENSE)). + +Los **modelos 3D y las imágenes** de terceros **no** entran en esa licencia: cada +archivo mantiene la suya (CC BY, CC BY-SA…), con su autor y su fuente, en +[`CREDITS.md`](CREDITS.md). + ## Créditos y licencias Los modelos 3D y las imágenes de los conectores son obra de sus autores y se usan diff --git a/package.json b/package.json index fed45e4..4fc8cba 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "private": true, "version": "0.0.0", "type": "module", + "license": "MIT", "scripts": { "dev": "vite", "build": "tsc -b && vite build",