Skip to content

[utils.service] Adapt versionInfo to new GitHub /tags response shape #6

@Tozarin

Description

@Tozarin

Контекст

Метод versionInfo в packages/nocodb/src/services/utils.service.ts получает список тегов nocodb через https://api.github.com/repos/nocodb/nocodb/tags и берёт поле name из каждого элемента ответа:

// utils.service.ts:99 const nonBetaTags = await axios .get('https://api.github.com/repos/nocodb/nocodb/tags', { timeout: 5000 }) .then((response) => { return response.data .map((x) => x.name) .filter((v) => validate(v) && v.match(/^\d+.\d+.\d+$/)) .sort((x, y) => compareVersions(y, x)); }) .catch(() => null);

С 2026-01 GitHub изменил формат ответа /repos/{owner}/{repo}/tags: к каждому элементу добавлены поля commit.protection и commit.sha, а сам тег теперь приходит в tag.ref вместо name, в формате refs/tags/X.Y.Z. Старое поле name помечено deprecated и удалено в этой версии API.

Изменения API

Старый формат:

[{ "name": "0.260.0", "commit": { "sha": "...", "url": "..." } }]

Новый формат:

[{ "ref": "refs/tags/0.260.0", "commit": { "sha": "...", "url": "...", "protection": { "required_status_checks": { ... } } } }]

Acceptance criteria

  • versionInfo в utils.service.ts парсит тег из ref (refs/tags/X.Y.ZX.Y.Z), а не из name.
  • Регекс /^\d+\.\d+\.\d+$/ остаётся, фильтр beta/preview не трогается.
  • Если у тега нет commit.sha (защищённый протекшеном), он отбрасывается.
  • pnpm run build (или bootstrap) проходит, типы корректны.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions