Skip to content

El botón Código ya sirve: ver el código de la sala en vivo - #130

Merged
ErickUser1 merged 1 commit into
mainfrom
feat/ver-codigo
Oct 14, 2026
Merged

ErickUser1 merged 1 commit into
mainfrom
feat/ver-codigo

Conversation

@ErickUser1

Copy link
Copy Markdown
Owner

Por qué

El botón "Código", junto a "Vista previa", estaba apagado con el aviso "Todavía no se puede ver el código desde aquí". Tres personas del experimento pidieron ver el código, y a quien hace sitios para clientes le sirve para confiar en lo que generó el agente.

Qué cambia

Server

  • engine/codigo.ts:
    • archivosDelProyecto(dir) usa git ls-files --cached --others --exclude-standard, así que respeta el .git/info/exclude que pone Multi y quedan fuera .env, node_modules, dist, etc. Tope de 2000 rutas.
    • leerArchivoDelProyecto(dir, ruta) solo sirve rutas de esa lista, y además comprueba que la ruta resuelta quede dentro del workspace. Los binarios (byte NUL) y los archivos de más de 300 KB salen sin contenido.
  • GET /rooms/:id/codigo y GET /rooms/:id/codigo/archivo?ruta=…, bajo /rooms para que el proxy del preview no los intercepte. Usan la misma autorización que exportar el zip y van con no-store.

Web

  • CodigoView.tsx, cargado con lazy (chunk aparte de ~23 KB gzip):
    • árbol de archivos plegable y archivo con números de línea;
    • resaltado con highlight.js (core más 10 lenguajes) y colores acordes al negro de Multi;
    • botón Copiar.
  • En vivo: con file:changed recarga el archivo abierto si cambió y refresca la lista con debounce. El archivo recién tocado se marca en naranja.
  • El switch "Vista previa / Código" ahora funciona:
    • es por persona, como el ancho de vista;
    • el código va encima del iframe, así que al volver la app sigue igual;
    • en salas de documento "Código" queda apagado.
  • Celular: el árbol se vuelve un selector arriba, y el switch vuelve a mostrarse (antes se escondía porque Código no hacía nada).
  • Textos nuevos en es y en; se quitó vistaCodigoPronto.

Pruebas

  • demo:ver-codigo (nuevo, en el CI), 14/14:
    • la lista incluye el código y excluye .env, node_modules y dist;
    • .env, ../../etc/passwd, /etc/passwd, node_modules/..., src/../.env y rutas inexistentes no devuelven nada;
    • un PNG sale como binario y un archivo enorme sale sin contenido.
  • Todas las demos del CI pasan, igual que typecheck y build.
  • Playwright con el server real y el agente simulado:
    • árbol src/App.tsx | package.json | server.js, sin .env; abre src/App.tsx con resaltado;
    • GET …/codigo/archivo?ruta=.env responde 404;
    • el agente escribió mientras el visor estaba abierto y la lista pasó de 4 a 5 archivos sola;
    • "Vista previa" regresa a la app;
    • en celular (390px) se ve el selector y no hay scroll horizontal.

🤖 Generated with Claude Code

https://claude.ai/code/session_01HJ5oT2Xm3VZMvbPAcgKbz4


Generated by Claude Code

Estaba apagado con un "todavía no se puede". Ahora abre el proyecto de la
sala de solo lectura: árbol de archivos, resaltado de sintaxis, copiar, y se
actualiza solo mientras el agente escribe (el archivo recién tocado se
marca en naranja). En el celular el árbol es un selector.

Solo enseña lo que git considera el proyecto (ls-files sin ignorados), así
que el .env, node_modules y dist no salen, y la API solo sirve rutas de esa
lista. highlight.js va en un chunk aparte que baja solo quien lo abre.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJ5oT2Xm3VZMvbPAcgKbz4
@ErickUser1
ErickUser1 merged commit 4b3b353 into main Oct 14, 2026
2 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.

2 participants