Skip to content

fix: bloque A del plan — seis fallos que se ven usando el producto - #91

Merged
JoseSerpaCode merged 6 commits into
mainfrom
fix/bloque-a
Aug 25, 2026
Merged

JoseSerpaCode merged 6 commits into
mainfrom
fix/bloque-a

Conversation

@JoseSerpaCode

Copy link
Copy Markdown
Owner

Sustituye a #88, #89 y #90, que se ramaron por separado y declaraban versiones que chocaban entre sí. Aquí van las seis con una sola versión, 1.27.0.

Qué pasaba
A.3 🔒 El 404 de rechazar una solicitud devolvía la fila entera de friendships —ids del otro usuario, marcas de tiempo— a quien acababa de fallar los permisos, más un console.log de cada intento. Sus dos hermanos responden con la frase a secas
A.2 El hub marcaba vencida una tarea que vence hoy: comparaba en UTC. lib/fechas.ts ya advertía del caso nombrando Bogotá y exponía vencida(); el hub reimplementó la comparación
A.1 Renombrar un tipo de fábrica no se veía en ninguna parte. La regla estaba copiada cinco veces y las cinco ignoraban el nombre escrito. Ahora una sola función: se traduce mientras el tipo esté intacto, gana el nombre propio en cuanto se cambia
A.5 No se podían estimar horas al crear. Faltaba en el formulario y en el INSERT, mientras update() sí lo permitía
A.6 Las etiquetas no salían en «Mis Tareas» del hub aunque el tablero sí las enseñara. Faltaban la consulta y el sitio donde pintarlas
A.7 El panel de atajos de la KB prometía Ctrl+K y Ctrl+U, que el navegador se queda. Y sus cinco textos estaban en inglés a mano

Plan de pruebas

  • npm run lint, npm run typecheck — limpios
  • 331 unitarias (9 nuevas), 243 e2e (6 nuevas)
  • Cada una verificada reintroduciendo su fallo a mano: fallan
  • La de fechas fija la hora del sistema a las 22:00 en UTC-5, que es lo único que reproduce el de UTC

🤖 Generated with Claude Code

JoseSerpaCode and others added 6 commits August 24, 2026 18:33
Dos fallos pequeños de riesgo alto.

- `friends/reject/[id].ts` devolvía `dbState` con el `SELECT *` de la amistad a
  quien acababa de fallar la comprobación de permisos, más un `console.log` de
  cada intento. Sus dos hermanos responden con la frase a secas.
- El contador de vencidas del hub comparaba en UTC, así que en UTC-5 marcaba
  como vencida una entrega de hoy a partir de las siete de la tarde.
  `lib/fechas.ts` ya tenía `vencida()` y su comentario advierte del caso
  nombrando Bogotá; el hub reimplementó la comparación a mano.

Las dos pruebas verificadas reintroduciendo su fallo. La de fechas fija la hora
del sistema, que es lo único que reproduce el de UTC.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
La regla que decide qué nombre enseñar estaba copiada cinco veces, y las cinco
ignoraban el nombre escrito cuando el tipo era de fábrica: ganaba siempre la
traducción de la clave. Renombrar «Task» a «Incidencia» solo se veía al reabrir
el diálogo de renombrar, que lo lee de un `data-name`.

Se traduce mientras el tipo esté intacto y gana el nombre propio en cuanto
alguien lo cambia — la misma regla que el proyecto ya aplica a etiquetas y a
tipos propios. Compara contra el nombre con el que nació, para no quitarle la
traducción a quien nunca renombra.

Las cinco copias pasan a `nombreVisible()`, junto a `mapaPorClave()`.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
El hueco estaba en las dos capas: el formulario no tenía el campo y
`IssueService.create()` ni incluía la columna en su `INSERT`, mientras
`update()` sí la tenía entre sus campos permitidos. Había que crear el ticket y
volver a abrirlo. `due_date`, idéntico en dificultad, sí estaba.

El número se limpia en el servidor: llega de fuera y la columna es REAL, así
que un texto o un negativo habrían acabado en los totales del sprint.

De paso, los dos mensajes de ese formulario que seguían en inglés.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
# Conflicts:
#	CHANGELOG.md
#	package-lock.json
#	package.json
# Conflicts:
#	CHANGELOG.md
#	package-lock.json
#	package.json
- El hub no enseñaba las etiquetas de una tarea aunque el tablero sí, y es
  donde se mira para decidir qué tocar. Faltaban las dos mitades: la consulta y
  el sitio donde pintarlas. Se leen con `deVarias()`, el lector en lote que ya
  usa el tablero.
- El panel de atajos de la KB listaba `Ctrl+K` y `Ctrl+U`, que el navegador se
  queda para su barra de búsqueda y para «ver código fuente». Prometer un atajo
  que no funciona es peor que no listarlo. Sus cinco textos estaban además en
  inglés a mano.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@JoseSerpaCode
JoseSerpaCode merged commit 21c1b31 into main Aug 25, 2026
1 check passed
@JoseSerpaCode
JoseSerpaCode deleted the fix/bloque-a branch August 25, 2026 00:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant