Conceptos

Borradores, revisiones y publicación

Cómo pasa una entrada de borrador a página publicada, y qué guarda Hollware en el camino.

Borradores, revisiones y publicación

Una entrada es una página en un locale: una colección, un locale y un slug. Su contenido es una lista de revisiones.

Revisiones

Cada create_draft y update_draft agrega una revisión: el archivo Markdown completo, con su frontmatter, exactamente como se envió. Las revisiones nunca se cambian ni se borran, así que siempre puedes ver qué decía una entrada, y cuándo.

Una entrada tiene una versión, que sube con cada cambio. update_draft recibe la versión que el agente leyó por última vez, y responde conflict con la actual cuando otra persona cambió la entrada entremedio: nada se sobrescribe por accidente.

Historial y volver atrás

Cada entrada guarda su historial: todas sus revisiones, de la más nueva a la más antigua, con quién la escribió (una persona, o el agente de su token o de su app, con el cliente que dijo ser), cuándo, su título, qué dijeron los contratos y cuál muestra el sitio ahora.

  • En el admin, abre la entrada y su pestaña Historial. Una revisión se abre junto a la más reciente, con lo que cambió marcado, y Restaurar esta versión vuelve a ella.
  • Por MCP, list_revisions las lista, get_revision lee el Markdown completo de una y restore_revision vuelve a ella.

Volver atrás nunca borra ni reescribe nada: el Markdown de la revisión anterior se guarda otra vez como una revisión nueva, con la verificación de la versión y los contratos de cualquier guardado, y el historial conserva todas las revisiones, incluida la que dejaste. La versión restaurada es un borrador hasta que la publiques, así que el sitio muestra lo que mostraba hasta entonces. Para deshacer una publicación de inmediato, restaura la revisión que el sitio mostraba antes y publícala.

Publicación

publish convierte una revisión en la publicada. Los contratos se ejecutan de nuevo en la fase de publicación, que puede ver más que una escritura: si los enlaces apuntan a entradas publicadas, si existen las traducciones.

Después:

  • los sitios que leen por el binding o por la API de lectura ven el contenido nuevo en su siguiente lectura;
  • los eventos de la publicación van a los webhooks del sitio y a IndexNow, si los tiene (en el admin, en Sitio), por una cola que reintenta; cada evento dice qué etiquetas de caché invalida.

Una entrada con cambios sin publicar sigue sirviendo su revisión publicada hasta que vuelvas a publicar. unpublish la quita de los sitios y conserva sus revisiones.

Vista previa en el sitio

En el admin, Vista previa en el sitio abre la página de la entrada en tu sitio con su última revisión, incluso si es un borrador, antes de que alguien la publique. El enlace está firmado para esa entrada y dura una hora; tu sitio lo cambia de inmediato por una cookie, así que no queda en la barra de direcciones ni en el historial. @hollware/nuxt, @hollware/astro, @hollware/react y @hollware/vue (con un servidor) hacen ese cambio, y nada de lo que responde una página en vista previa se guarda en caché. Requiere la url del sitio en el admin, en Sitio, y el secreto del Worker HOLLWARE_SECRET, que configura hollware deploy.

Programación

publish recibe publishAt, un momento en el futuro: la entrada se publica entonces, por el cron trigger del Worker, con los contratos ejecutados de nuevo en ese momento.

El fin de una publicación también se programa, para una oferta, un evento o un aviso que termina: schedule_unpublish recibe la entrada y unpublishAt, y el cron la saca de los sitios durante el minuto siguiente a esa hora, a nombre de quien lo programó, si todavía puede publicar. Programarlo de nuevo mueve la hora, unpublishAt: null lo cancela, y get_entry lo responde como unpublishAt. En el admin, una entrada publicada tiene Despublicar el, junto a Despublicar.

Cambiar la URL de una entrada

move_entry le da a una entrada otro slug, y con él otra ruta en el sitio. Conserva sus revisiones y sus traducciones, y recibe la versión que leíste, como update_draft. Mover una entrada publicada requiere content:publish, porque la página se mueve de inmediato y se purgan sus páginas.

Una entrada que alguna vez se publicó guarda su slug anterior como redirección: un sitio responde la ruta antigua con un 301 a la nueva, así los links y los buscadores la siguen. Volver a un slug anterior elimina esa redirección. list_redirects las lista, de la más nueva a la más antigua, con ambas rutas cuando la colección tiene una ruta. Un sitio las lee con listRedirects, o con createHollware().redirectFor(collection, locale, slug), y hollware export --published las escribe en redirects.json para un sitio que se construye desde archivos.

En el admin, una entrada tiene Cambiar URL, y Sitio lista las redirecciones.

Traducciones atrasadas

Una traducción es una entrada de un grupo de traducción en otro locale que el por defecto del sitio. Cuando su fuente, la entrada del grupo en el locale por defecto, cambia después de que se guardó la traducción, la traducción queda atrasada: list_entries, get_entry y get_translations responden translationOutdated: true, y el admin la marca y permite filtrar por ella. Guardar la traducción de nuevo la pone al día.

Tu Markdown

get_entry con formats: ['markdown'] entrega una revisión exactamente como entró, byte por byte. Tu contenido nunca queda atrapado en un formato propio de Hollware.