Skip to content

El eje del grafo etiquetaba las 75 releases y perdia 62 por el borde - #1010

Merged
github-actions[bot] merged 1 commit into
developfrom
fix/el-eje-etiqueta-las-setenta-y-cinco
Oct 12, 2026
Merged

github-actions[bot] merged 1 commit into
developfrom
fix/el-eje-etiqueta-las-setenta-y-cinco

Conversation

@frapercan

Copy link
Copy Markdown
Owner

Lo que se ve

El eje de la pagina del grafo muestra una fila de etiquetas regular, GOA 156
a GOA 168, repartida por todo el ancho, mientras los puntos estan apinados a la
izquierda. No hay relacion entre una cosa y la otra, y no hay scroll.

Por que

FrameTimeline etiqueta todas las marcas de anotacion. Su propia nota dice
que se escribio para "an axis with a band and a dozen ticks"; el registro le
entrega hoy 141 marcas, 75 de ellas releases.

spread() empuja cada etiqueta a la derecha hasta despejar la anterior por 70 px.
75 x 70 = 5.250 px de etiquetas dentro de un viewBox de 900 que se escala al
contenedor, asi que unas 62 se dibujan pasado el borde y se recortan en
silencio. Las que sobreviven quedan a intervalos uniformes de 70 px: la lista
regular de la captura.

El overflow-x-auto que ya lleva el <figure> no ayuda, porque el svg se escala
al contenedor y nunca hay nada mas ancho que scrollear.

Las dos mitades del arreglo

1. Etiquetar solo lo que la nota llama load bearing: los dos extremos de la
ventana, lo que caiga dentro, y el pivote. Se anaden la release justo anterior a
la apertura y la primera pasada del cierre, que son las dos que dicen cuanta
anotacion deja la ventana a cada lado. Las demas conservan punto, color y
<title>, asi que la forma de la serie sigue ahi y el hover sigue nombrando
cualquiera de ellas.

2. Acotar spread() entre lo y hi. Empujaba SOLO a la derecha, asi que un
grupo pegado al borde se salia igual: las marcas de la ventana estan al final de
una serie de nueve anos y cinco etiquetas bastaban para poner la ultima en
x=956 dentro de un viewBox de 900. Esto lo encontro el test, no yo: con la
primera mitad sola, el caso seguia fallando. Ahora empuja, desplaza el grupo
entero si se paso de hi, y vuelve a empujar desde lo por si ese
desplazamiento saco la cabeza por el otro lado.

Tests

Seis nuevos en tests/frameTimeline.test.tsx, construidos sobre 75 marcas con
la forma del payload real:

  • cada release conserva su punto, asi que la serie no se pierde;
  • se etiquetan como mucho 6, no 75;
  • se nombran los dos extremos de la ventana y lo que hay dentro;
  • se nombran la anterior a la ventana y la primera pasada;
  • ninguna etiqueta cae fuera del dibujo, que es lo que fallaba;
  • ninguna se pinta en x="undefined".

Mutaciones comprobadas una a una: sin restringir las etiquetas fallan 2, sin
acotar el spread falla 1.

Los 86 tests de la suite web en verde, y tsc --noEmit sin errores nuevos (el
unico que queda, useUrlParam.test.tsx: Cannot find name 'beforeEach', es
identico en develop).

FrameTimeline etiquetaba TODAS las marcas de anotacion. Su propia nota dice
que se escribio para "an axis with a band and a dozen ticks", y el registro
le entrega ahora 141 marcas, 75 de ellas releases.

spread() empujaba cada etiqueta a la derecha hasta despejar la anterior por
70 px. 75 x 70 son 5.250 px de etiquetas dentro de un viewBox de 900 que se
escala al contenedor, asi que unas 62 se dibujaban pasado el borde derecho y
se recortaban en silencio. Las que sobrevivian quedaban a intervalos
uniformes de 70 px, que es lo que se ve en pantalla: una lista regular sin
relacion con las fechas de debajo, que es justo lo unico que este grafico
existe para mostrar. El overflow-x-auto del figure no ayudaba, porque el svg
se escala al contenedor y nunca hay nada mas ancho que scrollear.

DOS MITADES, y las dos hacen falta.

1. Solo se etiquetan las marcas que la nota llama load bearing: los dos
extremos de la ventana, lo que caiga dentro, y el pivote. Se anaden la
release justo anterior a la apertura y la primera pasada del cierre, que son
las que dicen cuanta anotacion deja la ventana a cada lado. Las demas
conservan punto, color y <title>, asi que la forma de la serie sigue ahi y
el hover sigue nombrando cualquiera.

2. spread() se acota entre lo y hi. Empujaba SOLO a la derecha, asi que un
grupo pegado al borde derecho se salia igual: las marcas de la ventana estan
al final de una serie de nueve anos y CINCO etiquetas bastaban para poner la
ultima en x=956 dentro de un viewBox de 900. Lo encontro el test, no yo.
Ahora empuja, desplaza el grupo entero si se paso de hi, y vuelve a empujar
desde lo por si ese desplazamiento saco la cabeza por el otro lado.

Seis tests nuevos con las 75 marcas reales. Cada mitad tiene su mutacion
comprobada: sin restringir fallan 2, sin acotar falla 1. Los 86 de la suite
web en verde y tsc sin errores nuevos.
@github-actions
github-actions Bot enabled auto-merge (squash) October 12, 2026 20:30
@codecov

codecov Bot commented Oct 12, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 88.00%. Comparing base (d8bc801) to head (aba8aa5).
⚠️ Report is 109 commits behind head on develop.

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##           develop    #1010      +/-   ##
===========================================
+ Coverage    87.85%   88.00%   +0.15%     
===========================================
  Files          306      330      +24     
  Lines        23414    25590    +2176     
===========================================
+ Hits         20570    22521    +1951     
- Misses        2844     3069     +225     

see 41 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions
github-actions Bot merged commit e851716 into develop Oct 12, 2026
19 checks passed
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