AACsearch
История изменений

Формат журнала изменений

Как AACSearch фиксирует изменения по API, SDK, виджету, коннекторам и дашборду. Шесть бакетов в стиле Keep-a-Changelog с явными migration-нотами для breaking-изменений.

AACSearch использует формат в стиле Keep a Changelog с шестью бакетами и небольшим набором соглашений под мульти-продуктовую поверхность (API, SDK, виджет, коннекторы, дашборд).

Шесть бакетов

Каждая запись под датой/релизом попадает ровно в один из:

БакетКогда использовать
AddedНовая функция, эндпоинт, параметр, страница, опция конфигурации.
ChangedПоведение существующей функции изменилось обратно совместимо (defaults, копия, рендер, производительность).
FixedBugfix, устраняющий некорректное поведение. Описываем симптом, не имплементацию.
DeprecatedФункция всё ещё работает, но будет удалена. Обязательно указываем target удаления (дата или релиз).
RemovedФункция удалена. Обязательно дата удаления и ссылка на migration guide, если есть.
SecuritySecurity-релевантное изменение. CVE / advisory ID — если публичный; severity — иначе.

Порядок внутри даты/релиза: Added → Changed → Fixed → Deprecated → Removed → Security. Пустые бакеты пропускаем.

Changelog по компонентам

Сводный /changelog — хронологический фид всего user-facing. У каждого компонента есть отдельная страница, чтобы потребитель именно этой поверхности (например, апгрейдер SDK) мог следить за нужным срезом без нерелевантного шума:

  • API — изменения REST + oRPC + webhook payload.
  • SDK — release notes @aacsearch/client, @aacsearch/react, @aacsearch/widget, Python SDK.
  • Widget@aacsearch/widget (vanilla JS, Shadow DOM).
  • Connectors — webhook-коннекторы платформ (PrestaShop, Bitrix, Shopify, в будущем — другие).

Одно изменение часто попадает в две точки (API-добавление, к которому вышел SDK-метод). Не дублируем текст — каноническая запись в одной странице, кросс-ссылка из другой.

Анатомия записи

### Added

- **Search**: Открыли параметр `include_fields` для JOIN в search-процедурах.
  `SearchDocumentsInput.includeFields` принимает синтаксис JOIN
  `$Category(id, name)`. (AAC-569)

Обязательно:

  • Жирный scope-tag — область кода (Search, Widget, Knowledge, Billing, Dashboard, API, SDK, Connectors, Auth, Marketing).
  • Первое предложение описывает user-visible поведение, не имплементацию. "Синонимы теперь применяются в multi-search" — лучше чем "отрефакторили synonym matcher".
  • Issue/task ref в скобках (AAC-XXX, #NN) — чтобы трассировать.

Опционально:

  • Маркер breaking change: префиксуем bullet ⚠ Breaking для любого изменения, требующего действия читателя. Всегда сопровождается migration-нотой.
  • Code/curl-сниппет для добавленных/изменённых API.

Breaking changes и migration-ноты

Изменение breaking, если требует от существующего клиента обновить код, конфиг или данные. Для каждого breaking:

  1. Маркер ⚠ Breaking в бакете (обычно Changed или Removed).
  2. Открываем соответствующую запись в /migration/<from-version>, если миграция длиннее двух предложений.
  3. Линкуем на migration-страницу из changelog-записи.
  4. Упоминаем в release-анонсе/блоге, если он есть.

Тихих breaking changes избегаем — доверие они подрывают быстрее, чем любая фича его строит.

Связь с roadmap

Roadmap-айтемы из Status & Roadmap ссылаются на этот changelog при отгрузке. Конвенция:

Per-page status-бейджи

Страницы фич, которые недавно зашипились, носят status: new во frontmatter ~30 дней. Это пуллит страницу в "Recently shipped" на docs-главной, потом снимается на следующем sweep.

Вне scope формата

Эта страница описывает changelog. Коммуникация SLA / uptime / доступности и инцидентов принадлежит /operations/status (Roadmap v1.0 — см. Claim status) и не входит в changelog.

On this page