Saltar al contenido

Una herramienta de changelog para empresas de herramientas para desarrolladores y APIs.

Un changelog que cierra el círculo.

Tus usuarios piden algo. Tu equipo lo publica. Quien lo pidió se entera. Las entradas se redactan a partir de las pull requests fusionadas, esperan tu revisión y se publican en un feed JSON o en un widget de dos líneas dentro de tu producto.

Gratis para un repositorio. Sin tarjeta.

acme.dev/changelog
  1. Apariencia

    Ya hay modo oscuro

    Actívalo en Ajustes o deja que siga el tema del sistema.

    Publicado en la issue #482, donde se pidió

  2. API

    Webhooks con reintentos durante 24 horas

    Las entregas fallidas se reintentan con backoff y cada intento aparece en el panel.

  3. Corrección

    Las exportaciones CSV mantienen tu zona horaria

    Las marcas de tiempo de una exportación ahora coinciden con las de la app.

Lo que leen tus usuarios. Redactado a partir de la pull request fusionada y publicado cuando lo apruebas.

  • Feed JSON público en todos los planes
  • Widget incrustable en dos líneas
  • Los borradores esperan revisión por defecto
  • Gratis para un repositorio, sin tarjeta
FEED JSON

Tu changelog, renderizado por tu propio código

El feed es un endpoint público sencillo con CORS abierto a cualquier origen, así que puedes leerlo desde una página, un paso de build o curl. Diez líneas de React y tu changelog forma parte de tu producto en lugar de estar a un enlace de distancia.

  • Filtra por repositorio, pagina con un cursor, hasta 50 entradas por llamada
  • ETag fuerte y Cache-Control de 60 segundos, así que un feed sin cambios responde 304
  • También un feed de roadmap, en tres columnas fijas: planned, building, shipped
Cada endpoint, campo y código de estado está en la documentación para desarrolladores
Changelog.tsx
const ID = 'YOUR_ID';
const API = 'https://api.changeloop.dev';

export function Changelog() {
  const [entries, setEntries] = useState([]);
  useEffect(() => {
    fetch(`${API}/v1/public/${ID}/changelog.json`)
      .then((r) => r.json())
      .then((feed) => setEntries(feed.data));
  }, []);
  return entries.map((e) => <Entry key={e.id} {...e} />);
}
WIDGET

O incrústalo en dos líneas

Un custom element que renderiza en un shadow root, así que ni hereda tus estilos ni se filtra en ellos. Tiene tres pestañas: tus novedades, tu roadmap y un campo donde tus usuarios pueden escribir.

  • Dos atributos, tu id de feed y el origen de la API
  • Fija una versión y sus bytes nunca cambian, o toma el último build automáticamente
  • Sin paquete npm, sin paso de build, sin clave que rotar
NovedadesHoja de rutaSugerencias
  1. Apariencia

    Ya hay modo oscuro

  2. API

    Webhooks con reintentos durante 24 horas

  3. Corrección

    Las exportaciones CSV mantienen tu zona horaria

index.html
<script src="https://api.changeloop.dev/widget.js"
        defer></script>

<changelogapp-widget
  data-public-id="YOUR_ID"
  data-api="https://api.changeloop.dev"
></changelogapp-widget>
BORRADOR

Redactado al fusionar, retenido para una persona

Se fusiona una pull request en tu rama por defecto. Changeloop lee su título y descripción y redacta una entrada para las personas que usan tu producto. Tu código fuente nunca forma parte de eso.

  • Los cambios de dependencias, el trabajo de CI y los refactors se filtran antes de redactar nada
  • Los borradores esperan en la bandeja de revisión, donde editas el texto, apruebas o descartas
  • La publicación automática existe por repositorio, desactivada hasta que la actives
yourteam/webapp
Pull request fusionada
Borrador escrito
En revisión
Publicado
feat(ui): add dark theme toggle (#517)
BORRADOR · REVISIÓN

Ya hay modo oscuro

Actívalo en Ajustes o deja que siga el tema del sistema.

AprobarEditarOmitir
FEEDBACK

Una petición llega como issue y sale como entrada

En GitHub, el campo de feedback del widget abre un issue etiquetado en tu propio repositorio, así que entra en el triaje que ya haces. Fusiona una pull request que diga fixes #12, aprueba la entrada, y comentamos en ese issue con un enlace a lo publicado.

  • Tres etiquetas en cada issue: bug o feature-request, una prioridad y from-widget
  • El correo de quien lo envía nunca llega al issue ni al modelo que lo clasifica
  • Comprueban el estado ellos mismos en el widget. Aún no les enviamos un correo.
acme/web · issue #482

Modo oscuro, por favor

feature-requestpriority:mediumfrom-widget

Registrado automáticamente desde el widget de feedback.

Publicado: Vistas guardadas en la bandeja

Incluido en todos los planes

Feed JSON del changelog

Entradas publicadas, de la más reciente a la más antigua, filtrables por repositorio y paginadas con un cursor opaco.

Feed JSON del roadmap

Planned, building y shipped, siempre en ese orden, a partir de las etiquetas de tus propios issues de GitHub.

Widget incrustable

Un custom element en un shadow root, con novedades, roadmap y feedback en tres pestañas.

Una página alojada, como alternativa

Una página sencilla para tu feed, para antes de que construyas la tuya y para los enlaces que dejamos en los issues.

Redactado a partir de pull requests fusionadas

El título y la descripción de un merge se convierten en una entrada para tus clientes. El código, no.

Bandeja de revisión

Edita el texto, aprueba o descarta. Un borrador descartado se puede recuperar más tarde.

Los cambios internos se quedan fuera

Las actualizaciones de dependencias, los cambios de CI, los refactors y las erratas nunca llegan a la cola.

Feedback en tu propio repositorio de GitHub

En GitHub, lo que se envía desde el widget abre issues etiquetados en tu repo, sin la dirección de correo de quien lo envía. Los proyectos de GitLab y Bitbucket solo alimentan el changelog.

Precio fijo para equipos

Un solo precio para repositorios ilimitados en el plan Team. Sin cobro por repositorio.

Preguntas que un desarrollador hace primero

¿Puedo renderizar el changelog en mi propia interfaz?

Sí, y de eso se trata. Cada entrada publicada se sirve desde un feed JSON público con CORS abierto a cualquier origen, sin clave y sin iniciar sesión, así que diez líneas de React bastan para renderizarlo en tus propios componentes. La documentación para desarrolladores recoge cada endpoint, campo y código de estado.

¿Qué necesita el widget de mí?

Una etiqueta script y un elemento con dos atributos, tu id de feed y el origen de la API. Se renderiza en un shadow root, así que tu CSS y el suyo nunca se cruzan. Muestra novedades, roadmap y un campo de feedback.

¿Qué lee Changeloop de mi repositorio?

En GitHub, el título y la descripción de las pull requests que se fusionan en tu rama por defecto, además de los metadatos del repositorio. La GitHub App no tiene permiso para leer los archivos de tu repositorio, cada build de Changeloop se comprueba para asegurar que nunca pide un diff, y todo lo que parezca un secreto se elimina antes de redactar el borrador. Funciona con tokens de instalación de vida corta en lugar de un token de acceso personal. GitLab y Bitbucket envían el mismo tipo de datos a través de un webhook que tú añades.

¿Se publica algo sin mí?

No, salvo que lo pidas. Los borradores esperan en la bandeja de revisión hasta que alguien los aprueba, y la publicación automática es un interruptor por repositorio que sigue desactivado hasta que lo activas.

¿Qué pasa con el feedback que envían mis usuarios?

En GitHub, abre un issue etiquetado en tu propio repositorio, marcado como bug o feature-request, con una prioridad y la etiqueta from-widget, así que entra en el triaje que ya haces. Un proyecto de GitLab o Bitbucket alimenta tu changelog, pero esto no. Abrir un issue requiere un token de acceso que deliberadamente no pedimos, y Bitbucket retiró su gestor de issues en agosto de 2026. La dirección de correo de quien lo envía se elimina antes de que el mensaje llegue a ese issue o al modelo que lo clasifica. Cuando apruebas la entrada que lo publica, comentamos en el issue con un enlace a lo publicado, y quien lo envió puede ver el estado en el widget. No le enviamos un correo, esa parte todavía no está hecha.

¿Qué es gratis y qué es de pago?

El plan Free cubre un repositorio con 20 generaciones con IA al mes, e incluye el feed de changelog, el feed de roadmap, el widget y la página alojada. El plan Team es un precio fijo para repositorios ilimitados.

Pon tu changelog dentro de tu producto.

Crea una cuenta gratuita, conecta un repositorio y apunta tu propia interfaz al feed.