# ✨ Сделать экран списка своих записей и чтения текста

- **Тип:** feature
- **Категория:** Очередь — Список и экран одной записи берутся после экрана загрузки
- **Зачем:** Расшифровка сегодня доходит одним сообщением и теряется в переписке; вернуться к ней через неделю нечем.

Список своих записей открывается и листается, а готовый текст читается и
копируется целиком.

Берётся после `upload-and-status-screen`.

## Затрагивает

- новый экран списка и экран одной записи;
- постраничное чтение из контракта API;
- подпись записи в строке списка: заголовок, а пока его нет — имя файла
  отправителя;
- чтение текста отдельным адресом и показ его репликами со временем;
- копирование текста в буфер обмена;
- показ записи, которая ещё в работе, — тем же рубежом, что на экране загрузки.

## Критерии приёмки

- Список показывает записи вошедшего, новые сверху, и листается дальше первой
  страницы. Оракул — тест экрана на подставном API с двумя страницами.
- Строка списка подписана заголовком, а у записи без заголовка — именем файла
  отправителя. Оракул — тест на двух записях: с заголовком и без.
- Текст готовой записи открывается целиком, без деления на части. Оракул — тест
  на записи с текстом в сотни килобайт: на экране весь текст.
- Текст копируется одним действием. Оракул — тест: после действия в буфере обмена
  тот же текст.
- Запись в работе показывается рубежом и доходит до текста без перезагрузки
  экрана. Оракул — тест: подставной API отвечает рубежом `submitted`, затем
  `done`; экран переходит к тексту сам.

**Учесть от ревью 2026-08-12:** имя файла в хранилище несёт хвост имени, данного
отправителем, — расширение берётся из него дословно, и запись
`разговор.тайное-слово` ложится на диск именем с этим хвостом. Выхода за каталог
хранения при этом нет, проверено пятнадцатью враждебными именами. Наружу это имя
не выходит и теперь: аудио отдаётся своим адресом по идентификатору записи, а не
ссылкой хранилища, и имени файла в ней нет. На страницу попадает другое — имя,
данное отправителем, своей колонкой записи, и попадает намеренно: по нему человек
узнаёт свою запись. Отсюда обязанность экрана — показывать его текстом, а не
разметкой.

## Рамки

Поиска по тексту не делаем. Переименование записи, возврат её в работу и журнал
событий — `audiorecord-actions`; удаление — `delete-record`, проигрывание —
`play-recording-in-app`. Правки текста
не делаем — это граница из [паспорта](../../docs/passport.md): расшифровку отдаём
как есть.
