Как попасть в окно
- Кнопка Open full diff в раскрытой карточке дифа открывает окно целиком, без выбранного файла.
- Тап по строке файла в той же карточке открывает окно сразу с этим файлом.
- Стрелка назад в шапке возвращает в чат, а из просмотра файла — сначала обратно к списку файлов.
Окно перекрывает чат целиком, поэтому ответ агента под ним не видно: чтобы вернуться к переписке, нужно выйти из окна.
Что показывает шапка
Шапка окна сделана в том же консольном виде, что и остальные экраны: имя окна и подпись справа.
- Имя окна — y83@diff. Такой же, как у экрана изменений в Git, потому что просмотрщик файла общий.
- Счётчик файлов: один файл показан как 1 file, несколько — как N files.
- Счётчик добавленных строк: знак + и число. Число появляется, только когда строки действительно добавлялись.
- Счётчик удалённых строк: знак − и число. Число появляется, только когда строки действительно удалялись.
- Пометка cache truncated в шапке появляется, когда диф пришёл из хранилища усечённым.
Копирование дифа целиком
Кнопка копирования в шапке кладёт в буфер обмена весь диф хода разом, а не только видимую часть экрана. После копирования внизу показывается короткая подтверждающая плашка copied · diff.
Копируется ровно тот текст, который приложение получило от агента, вместе со служебными заголовками. Копировать отдельный файл можно уже внутри его просмотра: там кнопка в шапке кладёт только диф этого файла.
Список файлов
Если в ходе разбираются файлы, под шапкой появляется заголовок // files и список строк. Если разобрать нечего, вместо списка показывается одна надпись // no changes.
- У каждой строки значок документа и путь: каталог приглушён, имя файла яркое.
- Счётчики строк у файла показываются только когда они есть: плюс зелёным, минус красным.
- Стрелка в конце строки означает, что файл можно открыть.
- Путь обрезается по длине в одну строку, длинные пути не переносятся.
- Порядок файлов тот же, что пришёл от агента: приложение его не переставляет и не сортирует.
Просмотр одного файла
Тап по строке открывает просмотр файла: две колонки номеров строк, разделитель и сами строки. Просмотрщик здесь тот же самый, что и на экране изменений в Git, поэтому номера строк и полосы фрагментов выглядят одинаково в обоих местах.
- Добавленные строки подсвечены зелёным фоном, удалённые — красным, границы фрагментов — приглушённой заливкой.
- Номера строк показаны с двух сторон: слева старый, справа новый. Ширина колонок одинаковая и не прыгает при прокрутке.
- Длинные строки не переносятся, вместо этого окно прокручивается вбок.
- Табуляция разворачивается в четыре позиции при разборе, поэтому отступы в коде видны.
- Служебные пометки вроде new file или mode change видны в шапке и в теле просмотра.
- Кнопка копирования в шапке кладёт в буфер диф только этого файла.
Отдельные состояния просмотра выглядят по-разному и не путаются между собой:
- Бинарный файл — приложение честно пишет, что содержимое бинарных файлов Git не показывает.
- Конфликт слияния — показывается только итоговое состояние, а сам конфликт нужно разрешить в терминале.
- Пустой новый файл — отдельная надпись о том, что в файле нет ни одной строки.
- Без изменений — надпись о том, что diff не содержит строк, иногда вместе с режимом файла.
- Просмотр недоступен — когда разобрать диф не удалось совсем.
Про метку cache truncated
Диф хода сохраняется в память телефона, и очень большой диф может прийти усечённым. Приложение говорит об этом в двух местах: в шапке окна и под списком файлов.
Обе пометки означают одно и то же: часть строк дифа потерялась, и показано не всё. Копирование дифа тоже скопирует только то, что сохранилось, поэтому восстанавливать потерянное нужно из Git, а не из этого окна.
Технические данные
| Параметр | Значение |
|---|---|
| Имя окна в шапке | y83@diff |
| Максимум файлов в списке | 200 |
| Максимум строк дифа на файл при разборе | 4000 |
| Показывается ли префикс файлов | нет, префикс снимается |
| Подпись подсказки о копировании | copied · diff |
| Разделитель колонок номеров строк | вертикальная линия в один пиксель |
| Ширина таба при разборе дифа | 4 позиции |
| Метка об усечении | cache truncated в шапке и текстовая пометка под списком |
Что агент умеет
Агент видит диф хода у себя и может получить его разными способами: командой Git в терминале, разбором файлов и проверкой изменений перед тем, как сказать «готово».
Агент умеет читать окно через мост, если приложение сейчас на нём, и снимать снимок экрана, чтобы показать, как выглядит изменение.
Агент не открывает это окно прямой командой моста: окно живёт внутри чата и открывается только нажатием по карточке дифа или по строке файла.
Агент может сам получить полный диф без приложения — например, командой Git с путём до файла и номерами строк, — и этого часто достаточно, чтобы разобраться в правке.
Ограничения
- Список файлов ограничен 200 файлами: если агент поменял больше, остальные в окно не попадут, хотя в шапке счётчик покажет только то, что показано.
- Диф приходит целиком от агента и показывается как есть: приложение не пересчитывает его и не применяет правки само.
- Часть строк может потеряться при сохранении в память телефона. Метка cache truncated об этом честно предупреждает, но восстановить потерянное можно только через Git.
- Содержимое бинарных файлов не показывается никогда: приложение рисует только факт изменения.
- Конфликт слияния показывается в итоговом виде, разрешить его из этого окна нельзя.
- Разбор дифа берёт первые 4000 строк на файл, поэтому очень большой файл показывается не целиком.
- Диф без служебных заголовков разбирается как один файл с именем diff, и в списке он будет выглядеть именно так.
- Длинные пути обрезаются в одну строку, полный путь виден только в шапке открытого файла.
- Копирование кладёт в буфер обмена технический текст дифа, а не список файлов и не краткое описание правки.
- Шапка, счётчики и кнопки на этом экране английские.