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.
Ya hay modo oscuro
Actívalo en Ajustes o deja que siga el tema del sistema.
Publicado en la issue #482, donde se pidió
Webhooks con reintentos durante 24 horas
Las entregas fallidas se reintentan con backoff y cada intento aparece en el panel.
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
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
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} />); }
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
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
Ya hay modo oscuro
Actívalo en Ajustes o deja que siga el tema del sistema.
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.
Modo oscuro, por favor
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.
DESDE EL BLOG
Notas sobre la práctica
Release notes en la práctica
Cómo escribir notas de versión que la gente realmente lea
Cambios de API
Qué es un cambio que rompe algo, y cómo lanzarlo
Ciclo de feedback
Cerrar el ciclo de feedback desde el changelog
Pon tu changelog dentro de tu producto.
Crea una cuenta gratuita, conecta un repositorio y apunta tu propia interfaz al feed.


