# S09: Лента и composer Соединить UI с message use cases без обхода crypto readiness. Входной gate: S08-011. Выходной gate: S09-012. ## Задачи - [S09-001](../tasks/S09-001.md): Создать text/file bubble — front; todo. - [S09-002](../tasks/S09-002.md): Реализовать bounded timeline — front; todo. - [S09-003](../tasks/S09-003.md): Сохранить viewport при history insert — front; todo. - [S09-004](../tasks/S09-004.md): Создать multiline composer — front; todo. - [S09-005](../tasks/S09-005.md): Реализовать Enter/IME policy — front; todo. - [S09-006](../tasks/S09-006.md): Подключить composer к send/retry — front; todo. - [S09-007](../tasks/S09-007.md): Создать date separators/metadata — front; todo. - [S09-008](../tasks/S09-008.md): Создать message selection state — front; todo. - [S09-009](../tasks/S09-009.md): Создать jump-to-latest — front; todo. - [S09-010](../tasks/S09-010.md): Реализовать bounded message motion — front; todo. - [S09-011](../tasks/S09-011.md): Проверить chat keyboard/scale — qa; todo. - [S09-012](../tasks/S09-012.md): Gate: Лента и composer — qa; todo. ## Граница этапа Выходной gate проверяет evidence/готовые проверки, не реализует функции за остальные задачи. Если отдельная карточка требует слишком большой контекст — split с сохранением requirements coverage.