Метаданные listing (иконка, автор, описание)
Помимо manifest.json в артефакте, каталог хранит listing — данные для карточки в маркетплейсе лаунчера и в ЛК разработчика.
Источники данных
| Поле | Откуда берётся | Где редактируется |
|---|---|---|
name, version, description | manifest.json артефакта | Новая версия → новый .ryntextension |
iconUrl | Иконка из манифеста при approve (или listing) | Манифест / listing |
authorName | manifest.author или listing | Манифест / listing |
listingDescriptionHtml | Сервер (TipTap HTML) | ЛК разработчика, без новой версии |
Краткое description в манифесте — для списков и поиска. listingDescriptionHtml — rich-текст на странице детали (Markdown/HTML рендер в лаунчере).
Типы SDK
Subpath @rynt/sdk/extension-marketplace, модуль api-types.ts:
export interface MarketplaceExtensionSummary {
id: string;
name: string;
version: string;
description?: string;
iconUrl?: string;
authorName?: string;
downloadUrl: string;
artifactSha256?: string;
}
export interface MarketplaceExtensionDetail extends MarketplaceExtensionSummary {
manifest: Record<string, unknown>;
listingDescriptionHtml?: string;
extensionDependencies?: Record<string, string>;
author?: { userId: string; displayName?: string };
publishedAt: string;
declaresRegistries: RegistryDeclaration[];
extendsRegistries: RegistryExtensionContribution[];
}
export interface ExtensionListingMeta {
iconUrl?: string;
authorName?: string;
listingDescriptionHtml?: string;
}
export interface UpdateExtensionListingRequest {
listingDescriptionHtml?: string;
}Иконка в артефакте
При сборке расширения (@rynt/extension-build) локальный manifest.icon → dist/icon.png. При approve сервис может извлечь иконку из zip и сохранить URL в каталоге.
Автор задаёт author в ryntExtensionViteConfig({ manifest }) — попадает в dist/manifest.json.
См. Сборка и упаковка.
UI лаунчера
ExtensionMarketplaceDialog (master-detail):
- список: иконка, имя, автор, версия;
- деталь: иконка, бейдж автора, semver,
listingDescriptionHtml, зависимостиextensionDependencies, слотыextendsRegistries.
ЛК разработчика
Компонент ListingEditor (TipTap): редактирование listingDescriptionHtml.
| Экран | Когда |
|---|---|
SubmissionEditorView | Черновик / заявка до approve |
PublishedListingView | Уже опубликованное расширение |
Сохранение: PATCH listing (только HTML-описание) — не требует пересборки и новой версии артефакта.
API developer
| Method | Path | Назначение |
|---|---|---|
| GET | /api/v1/developer/published-extensions/:extensionId | Карточка + listing |
| PATCH | /api/v1/developer/published-extensions/:extensionId/listing | { listingDescriptionHtml } |
Полный перечень эндпоинтов — в спецификации REST каталога (05-marketplace-service.md).
Миграция БД
Поля listing хранятся в БД сервиса каталога (отдельная схема миграций).