Skip to content

Remix: hacer una copia de un proyecto para experimentar sin tocar el original - #150

Merged
ErickUser1 merged 1 commit into
mainfrom
feat/remix
Oct 23, 2026
Merged

ErickUser1 merged 1 commit into
mainfrom
feat/remix

Conversation

@ErickUser1

Copy link
Copy Markdown
Owner

Qué cambia

Un compa quería sacar el código del juego de box para probar algo sin romperlo. Hasta ahora solo había dos formas: descargar el .zip o meterse a la misma sala.

  • Botón "Remix" junto a Compartir. Crea una copia del proyecto y te lleva ahí.
  • En el remix aparece "Remix de X · Volver al original".
  • En el original aparece la lista "N remixes" para brincar entre ellos. Se actualiza en vivo cuando alguien hace uno, y deja una línea en el chat: "Damian hizo un remix de este proyecto".
  • Los nombres se numeran para distinguirlos: "(remix)", "(remix 2)", etc.

Cómo funciona

Cada remix es una sala aparte, ligada al original con la columna origen_id. No es una rama dentro de la misma sala, por lo multijugador: así el original sigue corriendo intacto y nadie le cambia la vista previa a los demás.

Qué se copia:

  • Se copia lo último guardado, con extractTo (git archive HEAD), que es lo mismo que sale en el .zip.
  • No se copian el .env, node_modules, dist ni la base *.db, porque cualquiera con el link puede hacer un remix.
  • Tampoco el chat, la conexión de Supabase ni lo publicado.

Cambios por archivo:

  • Base de datos (storage/): columna origen_id y remixesDe(id).
  • createRemix(origen) (rooms.ts): copia, hace un commit "Remix de…", le pone nombre y arranca la vista previa. Si la sala no tiene nada guardado, lanza un error claro.
  • POST /rooms/:id/remix: además emite room:remixes a la sala original. El joined ahora trae origen y remixes.
  • La Sala: botón, chip y lista desplegable en Remix.tsx, con textos en español e inglés y diseño para celular.

Pruebas

  • npm run typecheck, npm run build y todas las demos del CI pasan.

  • demo:remix (17 checks), nueva en el CI. Revisa que:

    • el remix trae el código;
    • no trae .env, node_modules, *.db ni lo que no estaba guardado;
    • el vínculo y el nombre se guardan;
    • el segundo remix sale numerado;
    • cambiar el remix no toca el original, y el remix tiene su propio historial;
    • una sala vacía da un error claro.
  • Playwright en compu y celular, recorrido completo:

    • Remix → sala nueva con el chip y su vista previa;
    • "Volver al original";
    • "2 remixes" en la lista;
    • la lista lleva al remix.

    Sin errores en la página.


Generated by Claude Code

…original

Un compa quería sacar el código del juego de box para probar algo sin
romperlo, y la única forma era el .zip o meterse a la misma sala.

- Botón "Remix" junto a Compartir: crea una sala nueva con una copia del
  proyecto y te lleva ahí.
- En el remix, "Remix de X · Volver al original".
- En el original, la lista "N remixes" para brincar entre ellos, que se
  actualiza en vivo cuando alguien hace uno, y una línea en el chat.

Por dentro cada remix es una sala aparte ligada al original (columna
origen_id), no una rama en la misma sala: así el original sigue corriendo
intacto y nadie le cambia la vista previa a los demás.

Se copia lo último guardado con extractTo (git archive HEAD, lo mismo que el
.zip), así que no viajan el .env, node_modules, dist ni la base *.db: cualquiera
con el link puede hacer un remix. Tampoco el chat, Supabase ni lo publicado.
Los nombres se numeran: "(remix)", "(remix 2)"…

demo:remix (17 checks) entra al CI.

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