Un outil de changelog pour les éditeurs de dev tools et d'API.
Un changelog qui boucle la boucle.
Tes utilisateurs demandent quelque chose. Ton équipe le livre. La personne qui a demandé est prévenue. Les entrées sont rédigées à partir des pull requests fusionnées, attendent ta relecture, puis sont publiées sur un flux JSON ou un widget de deux lignes dans ton produit.
Gratuit pour un dépôt. Sans carte bancaire.
Le mode sombre est là
Active-le dans les Réglages, ou laisse-le suivre le thème du système.
Publié sur l'issue #482, où il avait été demandé
Webhooks : nouvelles tentatives pendant 24 heures
Les livraisons échouées sont relancées avec backoff, et chaque tentative apparaît dans le tableau de bord.
Les exports CSV gardent ton fuseau horaire
Les horodatages d'un export correspondent désormais à ceux de l'app.
Ce que lisent tes utilisateurs. Rédigé à partir de la pull request fusionnée, publié dès que tu l'approuves.
- Flux JSON public sur toutes les formules
- Widget intégrable en deux lignes
- Les brouillons attendent une relecture par défaut
- Gratuit pour un dépôt, sans carte
Ton changelog, rendu par ton propre code
Le flux est un simple endpoint public avec CORS ouvert à toute origine, donc tu peux le lire depuis une page, une étape de build ou curl. Dix lignes de React et ton changelog fait partie de ton produit au lieu d'être à un lien de distance.
- Filtre par dépôt, pagine avec un curseur, jusqu'à 50 entrées par appel
- ETag fort et Cache-Control de 60 secondes, donc un flux inchangé répond 304
- Un flux roadmap aussi, en trois colonnes fixes : 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} />); }
Ou intègre-le en deux lignes
Un custom element qui se rend dans un shadow root, il n'hérite donc ni ne fuit dans tes styles. Il propose trois onglets : tes nouveautés, ta roadmap et un champ où tes utilisateurs peuvent écrire.
- Deux attributs, ton id de flux et l'origine de l'API
- Fige une version et ses octets ne changent jamais, ou prends automatiquement la dernière build
- Aucun paquet npm, aucune étape de build, aucune clé à faire tourner
Rédigé à la fusion, gardé pour une personne
Une pull request est fusionnée dans ta branche par défaut. Changeloop lit son titre et sa description et rédige une entrée pour les personnes qui utilisent ton produit. Ton code source n'en fait jamais partie.
- Les montées de dépendances, le travail de CI et les refactors sont filtrés avant même de rédiger quoi que ce soit
- Les brouillons attendent dans la boîte de relecture, où tu modifies le texte, approuves ou rejettes
- La publication automatique existe par dépôt, désactivée jusqu'à ce que tu l'actives
Le mode sombre est là
Active-le dans les Réglages, ou laisse-le suivre le thème du système.
Une demande arrive en issue et repart en entrée
Sur GitHub, le champ de feedback du widget ouvre une issue étiquetée dans ton propre dépôt, ce qui l'intègre au triage que tu fais déjà. Fusionne une pull request qui dit fixes #12, approuve l'entrée, et nous commentons cette issue avec un lien vers ce qui a été livré.
- Trois étiquettes sur chaque issue : bug ou feature-request, une priorité et from-widget
- L'adresse email de l'expéditeur n'atteint jamais l'issue ni le modèle qui la classe
- Ils vérifient eux-mêmes le statut dans le widget. Nous ne leur envoyons pas encore d'email.
Mode sombre, s'il te plaît
Déposée automatiquement depuis le widget de feedback.
Livré : vues enregistrées dans la boîte
Inclus dans toutes les formules
Flux JSON du changelog
Les entrées publiées, les plus récentes en premier, filtrables par dépôt et paginées avec un curseur opaque.
Flux JSON de la roadmap
Planned, building et shipped, toujours dans cet ordre, pilotés par les étiquettes de tes propres issues GitHub.
Widget intégrable
Un custom element dans un shadow root, avec les nouveautés, la roadmap et le feedback dans trois onglets.
Une page hébergée, en solution de repli
Une page simple pour ton flux, en attendant que tu aies construit la tienne, et pour les liens que nous laissons sur les issues.
Rédigé à partir des pull requests fusionnées
Le titre et la description d'une fusion deviennent une entrée destinée à tes utilisateurs. Pas le code.
Boîte de relecture
Modifie le texte, approuve ou rejette. Un brouillon rejeté peut être restauré plus tard.
Les changements internes sont filtrés
Les montées de dépendances, les changements de CI, les refactors et les corrections de coquilles n'arrivent jamais dans la file.
Le feedback dans ton propre dépôt GitHub
Sur GitHub, les envois du widget ouvrent des issues étiquetées dans ton dépôt, sans l'adresse email de l'expéditeur. Les projets GitLab et Bitbucket alimentent uniquement le changelog.
Un prix fixe pour l'équipe
Un seul prix pour un nombre illimité de dépôts avec la formule Team. Rien à payer en plus par dépôt.
Les questions qu'un développeur pose en premier
Puis-je afficher le changelog dans ma propre interface ?
Oui, c'est même tout l'intérêt. Chaque entrée publiée est servie par un flux JSON public avec CORS ouvert à toute origine, sans clé ni connexion, donc dix lignes de React suffisent pour l'afficher dans tes propres composants. La documentation développeurs détaille chaque endpoint, champ et code de statut.
De quoi le widget a-t-il besoin de ma part ?
Une balise script et un élément avec deux attributs : ton id de flux et l'origine de l'API. Il se rend dans un shadow root, donc ton CSS et le sien ne se croisent jamais. Il affiche les nouveautés, la roadmap et un champ de feedback.
Que lit Changeloop dans mon dépôt ?
Sur GitHub, le titre et la description des pull requests fusionnées dans ta branche par défaut, ainsi que les métadonnées du dépôt. La GitHub App n'a aucune permission de lire les fichiers de ton dépôt, chaque build de Changeloop est vérifié pour s'assurer qu'il ne demande jamais de diff, et tout ce qui ressemble à un secret est supprimé avant la rédaction du brouillon. Il passe par des jetons d'installation à courte durée de vie plutôt que par un personal access token. GitLab et Bitbucket envoient le même type de données via un webhook que tu ajoutes.
Quelque chose peut-il être publié sans moi ?
Pas si tu ne le demandes pas. Les brouillons attendent dans la boîte de relecture jusqu'à ce que quelqu'un les approuve, et la publication automatique est un réglage par dépôt, désactivé tant que tu ne l'actives pas.
Que devient le feedback envoyé par mes utilisateurs ?
Sur GitHub, il ouvre une issue étiquetée dans ton propre dépôt, avec bug ou feature-request, une priorité et l'étiquette from-widget, ce qui l'intègre au triage que tu fais déjà. Un projet GitLab ou Bitbucket alimente ton changelog, mais pas ça : ouvrir une issue demande un jeton d'accès que nous choisissons de ne pas réclamer, et Bitbucket a supprimé son gestionnaire d'issues en août 2026. L'adresse email de l'expéditeur est retirée avant que le message n'atteigne l'issue ou le modèle qui le classe. Quand tu approuves l'entrée qui livre la demande, nous commentons l'issue avec un lien vers ce qui a été livré, et l'expéditeur peut voir le statut dans le widget. Nous ne lui envoyons pas d'email, cette partie n'est pas encore développée.
Qu'est-ce qui est gratuit et qu'est-ce qui est payant ?
La formule Free couvre un dépôt avec 20 générations IA par mois, et elle inclut le flux changelog, le flux roadmap, le widget et la page hébergée. La formule Team est un prix fixe pour un nombre illimité de dépôts.
DEPUIS LE BLOG
Notes sur la pratique
Release notes en pratique
Comment écrire des release notes que les gens lisent
Changements d'API
Qu'est-ce qu'un changement cassant, et comment le livrer
Boucle de feedback
Fermer la boucle de feedback depuis le changelog
Mets ton changelog dans ton produit.
Crée un compte gratuit, connecte un dépôt et pointe ta propre interface vers le flux.


