Files
dotfiles/.scratch/handoffs/20260721-0743-xray-proxy-05-ready-for-human.md
T
ddadmin e5323284a8 fix(install): исправлено владение каталогом .config
Зачем:
- GNU Stow сворачивал весь ~/.config в пакет zed и помещал рабочие настройки в репозиторий.

Что:
- добавлена ограниченная миграция старой ссылки с возвратом данных в домашний каталог;
- предотвращено повторное сворачивание ~/.config на свежей установке;
- добавлены проверки сохранности профиля, повторного запуска и чужих ссылок.

Проверка:
- bash tests/test_install.sh
- bash -n install.sh tests/test_install.sh
- git diff --check
2026-07-21 08:29:52 -04:00

3.5 KiB
Raw Blame History

Handoff: владение ~/.config исправлено, задача 05 готова к приёмке

Обновлён: 2026-07-21 08:18 EDT.

Состояние задачи 05

Автоматическая часть headless-xray-proxy зафиксирована коммитом fd8210d. Тикет .scratch/headless-xray-proxy/issues/05-package-delivery-and-acceptance.md находится в ready-for-human; результаты тестов и команды ручной приёмки уже записаны там. Дальше можно продолжать ручную приёмку по этому тикету.

Исправленный дефект stow

Корневая причина была в сворачивании GNU Stow: в пустом домашнем каталоге пакет zed создавал общую ссылку ~/.config -> ~/dotfiles/zed/.config. После этого рабочие настройки приложений и закрытый профиль Xray физически попадали внутрь репозитория.

install.sh теперь:

  • заранее создаёт настоящий каталог ~/.config, поэтому свежая установка создаёт только ссылку ~/.config/zed;
  • распознаёт старую ссылку лишь при точном совпадении с $DOTFILES_DIR/zed/.config;
  • оставляет управляемый каталог zed в пакете, а остальные верхнеуровневые элементы переносит в настоящий ~/.config;
  • до первого переноса проверяет, что смог полностью перечислить данные;
  • при штатной ошибке переноса возвращает уже перемещённые элементы назад;
  • не раскрывает произвольные ссылки ~/.config.

В tests/test_install.sh добавлены проверки свежей установки, миграции с вымышленным секретом, сохранения прав 600, отсутствия секрета в выводе, повторного запуска и неприкосновенности произвольной ссылки.

Проверка и живое состояние

Полный набор bash tests/test_xray_proxy_full.sh прошёл на системном Python и Python 3.8 через uv: по 79 Python-тестов, 8 проверок командной оболочки и тесты установщика. Синтаксис сценариев командной оболочки и git diff --check также прошли.

Миграция применена к текущему домашнему каталогу:

  • ~/.config — настоящий каталог;
  • ~/.config/zed указывает на пакет Zed;
  • в zed/.config остался только каталог zed;
  • рабочие каталоги приложений находятся в ~/.config;
  • ~/.config/xray-proxy/default.url — обычный файл вне репозитория, сохранил права 600 и одну непустую строку. Содержимое профиля не выводилось.

Текущее состояние Git

Не включать в коммиты посторонние неотслеживаемые agents/.agents/.skill-lock.json и scripts/setup-xray-proxy.sh.