Перейти к содержимому

Инструмент changelog для компаний, создающих инструменты для разработчиков и API.

Changelog, который замыкает цикл.

Пользователи о чём-то просят. Ваша команда это делает. Тот, кто просил, узнаёт об этом. Записи составляются из объединённых pull request'ов, ждут вашей проверки, а затем публикуются в JSON-фид или в двухстрочный виджет в вашем продукте.

Бесплатно для одного репозитория. Банковская карта не нужна.

acme.dev/changelog
  1. Оформление

    Появилась тёмная тема

    Включите её в Настройках или пусть она следует системной теме.

    Опубликовано в issue #482, где её просили

  2. API

    Webhook'и повторяются в течение 24 часов

    Неудачные доставки повторяются с backoff, а каждая попытка видна в дашборде.

  3. Исправление

    Экспорт в CSV сохраняет часовой пояс

    Время в экспорте теперь совпадает с тем, что в приложении.

Это читают ваши пользователи. Составлено из объединённого pull request'а и опубликовано, когда вы его одобрите.

  • Публичный JSON-фид в каждом плане
  • Встройте виджет двумя строками
  • Черновики по умолчанию ждут проверки
  • Бесплатно для одного репозитория, без карты
JSON-ФИД

Ваш changelog, отрендеренный вашим собственным кодом

Фид — это простой публичный endpoint с открытым CORS для любого источника, так что вы можете читать его со страницы, шага сборки или curl. Десяти строк React достаточно, и ваш changelog становится частью вашего продукта, а не ссылкой в стороне.

  • Фильтруйте по репозиторию, постраничная навигация через курсор, до 50 записей за вызов
  • Надёжный ETag и 60-секундный Cache-Control, так что неизменённый фид отвечает 304
  • Также фид roadmap с тремя фиксированными колонками: planned, building, shipped
Каждый endpoint, поле и код статуса в документации для разработчиков
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} />);
}
ВИДЖЕТ

Или встройте двумя строками

Custom element, рендерящийся в shadow root, поэтому он не наследует ваши стили и не влияет на них. Есть три вкладки: ваши обновления, roadmap и поле, где ваши пользователи могут писать.

  • Два атрибута: ID вашего фида и источник вашего API
  • Зафиксируйте версию, чтобы байты никогда не менялись, или получайте новейшую сборку автоматически
  • Без npm-пакета, без шага сборки, без ключа для ротации
ОбновленияПланыОтзывы
  1. Оформление

    Появилась тёмная тема

  2. API

    Webhook'и повторяются в течение 24 часов

  3. Исправление

    Экспорт в CSV сохраняет часовой пояс

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>
ЧЕРНОВИК

Составляется при объединении, зарезервировано для одного человека

Pull request объединяется с веткой по умолчанию. Changeloop читает его заголовок и описание и пишет запись для людей, использующих ваш продукт. Ваш исходный код никогда в этом не участвует.

  • Обновления зависимостей, задачи CI и рефакторинг отфильтровываются до того, как что-либо составлено
  • Черновики ждут в папке проверки, где вы редактируете текст, одобряете или отклоняете
  • Автопубликация настраивается для каждого репозитория, выключена, пока вы её не включите
yourteam/webapp
Pull request объединён
Черновик написан
На проверке
Опубликовано
feat(ui): add dark theme toggle (#517)
ЧЕРНОВИК · ПРОВЕРКА

Появилась тёмная тема

Включите её в Настройках или пусть она следует системной теме.

ОдобритьИзменитьПропустить
ОБРАТНАЯ СВЯЗЬ

Запрос приходит как issue, выходит как запись

На GitHub поле обратной связи виджета открывает помеченный issue в вашем собственном репозитории, так что он попадает в ту же сортировку, что вы уже делаете. Объедините pull request со словами fixes #12, одобрите запись, и мы оставим комментарий к этому issue со ссылкой на то, что было доставлено.

  • Три метки на каждом issue: bug или feature-request, приоритет и from-widget
  • Email отправителя никогда не попадает в issue или в модель, которая его классифицирует
  • Они сами проверяют статус в виджете. Мы пока не отправляем им email.
acme/web · issue #482

Тёмная тема, пожалуйста

feature-requestpriority:mediumfrom-widget

Автоматически подано из виджета обратной связи.

Доставлено: сохранённые просмотры во входящих

Включено в каждый план

JSON-фид changelog

Опубликованные записи, сначала новые, с фильтром по репозиторию и постраничной навигацией через непрозрачный курсор.

JSON-фид roadmap

Planned, building и shipped, всегда в этом порядке, на основе меток на ваших собственных issue в GitHub.

Встраиваемый виджет

Custom element в shadow root: обновления, roadmap и обратная связь на трёх вкладках.

Размещённая страница как резервный вариант

Простая страница для вашего фида: пока вы не сделали свою, и для ссылок, которые мы оставляем в issue.

Составляется из объединённых pull request'ов

Заголовок и описание объединения превращаются в запись для клиентов. Код в этом не участвует.

Папка проверки

Отредактируйте текст, одобрите или отклоните. Отклонённый черновик можно потом восстановить.

Внутренние изменения отфильтрованы

Обновления зависимостей, изменения CI, рефакторинг и исправления опечаток никогда не попадают в очередь.

Обратная связь в вашем собственном репозитории GitHub

На GitHub отправки из виджета открывают помеченные issue в вашем репозитории, без email отправителя. Проекты GitLab и Bitbucket наполняют только changelog.

Фиксированная цена для команды

Одна цена за неограниченное количество репозиториев в плане Team. Никакой платы за каждый репозиторий.

Вопросы, которые разработчик задаёт в первую очередь

Могу ли я рендерить changelog в своём собственном интерфейсе?

Да, в этом и смысл. Каждая опубликованная запись отдаётся из публичного JSON-фида с открытым CORS для любого источника, без ключа и без входа, так что десяти строк React достаточно, чтобы отрендерить её в ваших собственных компонентах. В документации для разработчиков есть каждый endpoint, поле и код статуса.

Что нужно от меня виджету?

Тег script и один элемент с двумя атрибутами: ID вашего фида и источник API. Он рендерится в shadow root, так что ваш CSS и его CSS никогда не пересекаются. Он показывает обновления, roadmap и поле для обратной связи.

Что Changeloop читает из моего репозитория?

На GitHub это заголовок и описание pull request'ов, которые объединяются с веткой по умолчанию, плюс метаданные репозитория. У GitHub App нет разрешения читать файлы вашего репозитория, каждая сборка Changeloop проверяется на то, что она никогда не запрашивает дифф, а всё, что похоже на секрет, удаляется до того, как пишется черновик. Он работает через короткоживущие токены установки, а не через personal access token. GitLab и Bitbucket передают такие же данные через добавленный вами webhook.

Публикуется ли что-нибудь без меня?

Нет, если вы сами этого не попросите. Черновики ждут в папке проверки, пока кто-нибудь их не одобрит, а автопубликация настраивается для каждого репозитория отдельно и выключена, пока вы её не включите.

Что происходит с обратной связью от моих пользователей?

На GitHub она открывает помеченный issue в вашем собственном репозитории, с меткой bug или feature-request, приоритетом и меткой from-widget, так что он попадает в сортировку, которую вы уже ведёте. Проект GitLab или Bitbucket наполняет ваш changelog, но этого не делает. Чтобы создать issue, нужен токен доступа, который мы сознательно не запрашиваем, а Bitbucket убрал свой issue tracker в августе 2026 года. Email отправителя удаляется до того, как сообщение попадёт в этот issue или в модель, которая его классифицирует. Когда вы одобряете запись, с которой это выходит, мы оставляем в issue комментарий со ссылкой на то, что было доставлено, и отправитель может видеть статус в виджете. Мы не отправляем ему email, эта часть ещё не реализована.

Что бесплатно, а что платно?

План Free охватывает один репозиторий с 20 генерациями AI в месяц и включает фид changelog, фид roadmap, виджет и размещённую страницу. План Team — единая фиксированная цена за неограниченное количество репозиториев.

Разместите свой changelog внутри своего продукта.

Создайте бесплатный аккаунт, подключите репозиторий и направьте свой собственный интерфейс на фид.