# Área compartida de entregables

Los archivos publicados para Sergio se almacenan en el bucket privado de Cloudflare R2 bajo el prefijo `shared-deliverables/`. Un Worker presenta únicamente los archivos incluidos en `deliverables.config.json` y los descarga desde R2.

Enlace compartido actual:

<https://entregables.ublux.app/share/892ea14c839d2b85bc9cf8c299620cc8307222a4db667ffa/>

## Publicar o actualizar archivos

1. Añade el archivo al proyecto.
2. Añade su ficha a `deliverables.config.json`.
3. Ejecuta:

```bash
npm run publish:deliverables
```

El comando calcula el SHA-256, evita volver a subir archivos sin cambios, usa carga multiparte para ficheros grandes y actualiza el manifiesto visible en el portal.

## Seguridad

El bucket continúa siendo privado. El portal solo responde bajo una dirección larga y no indexable. Cualquiera que reciba esa dirección podrá descargar los archivos, por lo que no debe reenviarse fuera del equipo.

## Vista previa en el navegador

El catálogo visual se puede abrir en línea (sin descargar el ZIP) en:

`https://entregables.ublux.app/share/<SHARE_TOKEN>/preview/catalogo/` (todas)

También:
- estructurales/intro: `.../preview/catalogo-estructura/`
- educativas: `.../preview/catalogo-educativas/`
- explicación: `.../preview/catalogo-explicacion/` (o `https://vic5.ublux.app/explicacion/`)

Los objetos viven en R2 bajo `shared-deliverables/preview/catalogo/` y el Worker los sirve en línea (sin `Content-Disposition: attachment`).

Tras cambiar `cloud/deliverables-portal/worker.js`, despliega desde esa carpeta:

```bash
cd cloud/deliverables-portal && npx wrangler deploy
```

(Requiere autenticación Cloudflare y los bindings existentes `DELIVERABLES` + `SHARE_TOKEN`.)

## VIC 5 design system
See [docs/design-system/VIC5-DESIGN-SYSTEM.md](design-system/VIC5-DESIGN-SYSTEM.md) — read before any player layout/CSS change.


## Publicación parcial (desde 2026-10-06)

`node --env-file=.env scripts/publish-deliverables.mjs tmp/deliverables-<algo>-only.json` sube **solo** los items de ese JSON,
pero el `manifest.json` del hub se compone **siempre** con `deliverables.config.json` completo (los items no subidos se listan
con los metadatos que ya tienen en R2 vía HEAD). Antes, una publicación parcial reescribía el hub solo con sus items y el worker
(`cloud/deliverables-portal/worker.js`, que solo sirve `preview/<root>/` de roots listados en el manifest) devolvía 404 en todos
los demás «Abrir» (p. ej. `preview/catalogo-explicacion/` tras publicar solo Enumeración el 2026-10-05).
