Git проекта
Что изменилось в рабочем дереве целиком и как это зафиксировать. Это конец сценария, который Clauder ведёт с самого начала: завёл чат с телефона → агент наработал → посмотрел дифф → закоммитил.

Как сюда попасть
- меню чата, пункт «Git проекта» — рядом с «Файлами проекта»;
- значок ветки в шапке браузера файлов, если каталог под git;
- адресом
/git?cwd=<каталог>— годится любой каталог проекта, корень репозитория сервер находит сам.
В панели VS Code этого экрана нет: у редактора своя вкладка Source Control, и вторая дорога к тому же рядом с ней лишняя.
Что видно
Сверху — ветка с ↑/↓ относительно upstream и последний коммит; по кнопке «Ветки» — выбор существующей и заведение новой.
Дальше группы, как в git status:
- конфликты — первыми: с ними ни коммит, ни смена ветки не пройдут;
- индекс;
- не в индексе вместе с новыми файлами.
Один файл может стоять в двух группах — правка в индексе и ещё одна поверх в дереве. Так делят изменения все git-клиенты, и это не лишняя строгость: добавленный в индекс кусок и правка поверх него — две разные вещи.
У файла: буква состояния, путь (ссылка в браузер файлов), «в индекс» / «из индекса», «отменить правки» с переспросом и «показать изменения» — дифф разворачивается под файлом и пересчитывается после любого действия с индексом.
Коммит
Поле сообщения, «Предложить сообщение», галочка «Всё разом» и кнопка. Кнопка погашена, пока в индексе пусто (без галочки), есть конфликты или сообщение пустое, — подпись под ней говорит, почему именно.
«Предложить сообщение» отдаёт модели дифф индекса (или всего дерева под «Всё разом») и темы восьми последних коммитов — чтобы попасть в язык и форму репозитория. Один вопрос без инструментов, ответ подставляется в поле; править его никто не мешает.
Хуки репозитория не отключаются. Если перед коммитом гоняются тесты, с телефона они пойдут так же — поэтому у коммита таймаут две минуты против двадцати секунд у остального.
Ругань git приходит как есть: «nothing to commit», «Please tell me who you are», конфликт при смене ветки. Это те же тексты, что видно в терминале, переводить их незачем.
Что теряет работу
Единственная такая ручка — «отменить правки»: отслеживаемым делается git checkout -- …, новым git clean -f -- …. Пути обязательны, «отменить всё» одной кнопкой здесь нет нарочно: для этого есть откат к сообщению в чате, и он умеет вернуть. Клиенты переспрашивают перед каждым файлом.
Рабочие копии (worktree)
Два агента в одном каталоге дерутся за файлы. Кнопка «Чат в новом worktree…» в форме нового чата просит имя ветки, заводит копию и подменяет каталог чата на неё — чат стартует уже там. Ветка есть — берётся она, нет — заводится от текущего HEAD.
Копии лежат рядом с репозиторием: /var/www/proj → /var/www/proj-worktrees/feature-x. Внутри дерева git считал бы их неотслеженным мусором.
Уборка — секция «Рабочие копии» на этом же экране. Убрать можно только копию из списка и не главную; с незакоммиченными правками git откажет, и клиент переспросит второй раз — уже про потерю правок. Два переспроса нарочно: это единственное на экране, что стирает каталог. Ветка после уборки остаётся.
Чего здесь нет
- Push и pull. Это уже про удалённый репозиторий и его ключи, а ключ доступа Clauder — не ключ от чужого сервера.
- Правки по кускам (hunk staging): на телефоне это не читается, а на десктопе для этого есть редактор.
- Слияния и разрешение конфликтов. Конфликт показывается, но чинит его агент в чате или человек в редакторе.
Файлы с CRLF в докере
Git видит дерево так, как оно смонтировано: файлы с CRLF, которые Windows-гит считает чистыми, контейнерный показывает изменёнными целиком. Это свойство монтирования, а не панели.