Forge
markdowndeeb25a2
1# Skia chat entities
2
3## Два пути «карточек»
4
5| Сущность | Рендер | Когда |
6|----------|--------|--------|
7| **Topic** (`SkiaChatTopicCard`) | `SkiaKit.SkiaSectionedCard` — секции Тема / Теги / Саммари; `SkiaTileGridLayout` | Картотека тем в overview |
8| **Product spine** (`SkiaChatBubbleEntity` + `CardPanel`) | `SkiaChatBubbleRenderer` | Сквозная линия продукта над лентой |
9
10Topic и spine **намеренно разделены**: topic = drill-in по `ThreadId`; spine = ортогональная линия ([ADR 0096](../../../docs/adr/0096-intercom-topic-card-summary-and-product-spine.md)).
11
12## Лента сообщений (flat feed)
13
14| Сущность | `SkiaChatBubbleKind` | Когда |
15|----------|----------------------|--------|
16| **Сообщения** (`SkiaChatMessageFeedEntity`) | `Feed` | user / agent / thinking / tool — role rail + тело через **`SkiaChatFeedLayout`** ([ADR 0123](../../../docs/adr/0123-intercom-full-skia-surface-evolution.md)) |
17| **Slash outcome** (`SkiaChatSlashCommandEntity`) | отдельный flat row | `/help`, `/build run`, … |
18| **Clarification** | `Feed` | пакеты уточнений |
19| **Навигация** (заголовок ветки, «Назад к темам») | `Feed` | компактные meta-строки |
20
21`SkiaChatBubbleKind.Standard` остаётся для legacy/особых случаев; **не** для обычных реплик в detail-ленте.
22
23## Пайплайн
24
25`ChatSurfaceSnapshot` → `ChatSurfaceEntityFactory` (Creator) → `ISkiaChatEntity` → `SkiaChatLayoutEngine` → `SkiaChatSurfaceControl`.
26
27Примитивы карточек/сетки/темы: [`Views/SkiaKit/README.md`](../../SkiaKit/README.md).
28
29UI-строки: `ChatProductSpinePresentation`, `ChatThreadOverviewPresentation` (Features/Chat).
30
View only · write via MCP/CIDE