Skip to content

fix(P0): contiene los crashes de render y cura el nav - #93

Open
0xultravioleta wants to merge 4 commits into
mainfrom
develop
Open

fix(P0): contiene los crashes de render y cura el nav#93
0xultravioleta wants to merge 4 commits into
mainfrom
develop

Conversation

@0xultravioleta

Copy link
Copy Markdown
Collaborator

P0 en produccion

/events (y practicamente todos los links) mostraban "Algo salio mal".

Causa raiz

El commit c4e8a7c metio dos cosas a la vez que juntas tumbaron el sitio:

  1. /agents crasheaba en CADA render. AgentDiscovery llamaba t('...').map() sobre 6 claves i18n que son arrays, sin { returnObjects: true }. En i18next v24 eso devuelve un string, y .map() lanza TypeError. Confirmado empiricamente contra la version instalada (24.2.3).
  2. El ErrorBoundary que agrego ese mismo commit nunca se reseteaba. Ese unico crash dejaba el error pegado en toda la app hasta recargar. Por eso /events (que esta sana) y el resto de links se veian rotos: era arrastre, no culpa de cada pagina.

Fixes

  • ErrorBoundary + App.js: reset por ruta (resetKey={pathname}). Un crash queda contenido a su pagina en vez de cascadear. (Blindaje estructural: esto solo ya evita que un crash futuro tumbe el sitio.)
  • AgentDiscovery: returnObjects + guardas Array.isArray. Mata el crash raiz.
  • useSnapshotData: proposals/leaderboard siempre arrays (un 200 de Snapshot con campos null rompia /metrics).
  • Snapshot: guardas en author y fechas invalidas.
  • StreamSummaryCard: streamer opcional.
  • Courses: guarda de thumbnail y courses siempre array.
  • ApplicationStatus: fallback ante estado desconocido de la API.
  • HamburgerMenu: Bounties condicionado como en desktop (antes era link muerto a NotFound en movil).

Las 5 guardas de datos no son teoricas: ya estaban disparando por los endpoints caidos.

Nav curado

  • Barra (7 core): Historia, Token, Metricas, Snapshot, Productos y Servicios, Eventos, Watch to Earn
  • More: Facilitador + Abrir app, Resumenes, Colecciones NFT, Contribuidores, Multifirmantes, Cursos, Agents, Links
  • BLOG fuera del nav (posts.js esta vacio)

Verificacion

  • Build de produccion compila (exit 0)
  • Cero warnings nuevos (incluso se limpio uno preexistente)
  • 10 archivos, +139 / -125

Nota: con CI=true el build falla por warnings de lint preexistentes (Card.js, PaywallModal.jsx, SwapWidgetV2.jsx...) ajenos a este PR.

🤖 Generated with Claude Code

0xultravioleta and others added 4 commits July 21, 2026 17:13
…por ahora, decision Saul)

Co-Authored-By: Claude <noreply@anthropic.com>
…ibilidad verificada)

Co-Authored-By: Claude <noreply@anthropic.com>
Causa raiz: el commit c4e8a7c metio dos cosas a la vez que juntas tumbaron
el sitio entero.

1. /agents crasheaba en CADA render. AgentDiscovery llamaba t('...').map()
   sobre 6 claves i18n que son arrays, sin { returnObjects: true }. En
   i18next v24 eso devuelve un string y .map() lanza TypeError.
2. El ErrorBoundary que agrego ese mismo commit nunca se reseteaba. Asi que
   ese unico crash dejaba "Algo salio mal" pegado en TODA la app hasta
   recargar. Por eso /events (que esta sana) y el resto de los links se
   veian rotos: era arrastre, no culpa de cada pagina.

Fixes:
- ErrorBoundary + App.js: reset por ruta (resetKey={pathname}). Un crash
  queda contenido a su pagina en vez de cascadear a todo el sitio.
- AgentDiscovery: returnObjects + guardas Array.isArray. Mata el crash raiz.
- useSnapshotData: proposals/leaderboard siempre arrays. Un 200 de Snapshot
  con campos null rompia /metrics.
- Snapshot: guardas en author y en fechas invalidas.
- StreamSummaryCard: streamer opcional.
- Courses: guarda de thumbnail y courses siempre array.
- ApplicationStatus: fallback ante estado desconocido de la API.
- HamburgerMenu: Bounties condicionado como en desktop; antes era un link
  muerto a NotFound en movil.

Nav curado: barra con 7 core (Historia, Token, Metricas, Snapshot, Productos
y Servicios, Eventos, Watch to Earn); el resto bajo "More"; BLOG fuera del
nav porque posts.js esta vacio.

Verificado: build de produccion compila (exit 0) y el comportamiento de
i18next confirmado empiricamente contra la version instalada (24.2.3).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
El flag REACT_APP_SHOW_SIGNUP_BUTTONS vivia en la consola de Amplify (.env
esta gitignored), asi que no se podia apagar desde un commit. Se remueve el
boton en codigo, que es determinista y reversible con un revert.

El flag queda muerto en src/. El modal de ApplicationForm se deja montado
(nunca se abre desde el hero); /aplicar sigue sirviendo el formulario.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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