Зачем: - GNU Stow сворачивал весь ~/.config в пакет zed и помещал рабочие настройки в репозиторий. Что: - добавлена ограниченная миграция старой ссылки с возвратом данных в домашний каталог; - предотвращено повторное сворачивание ~/.config на свежей установке; - добавлены проверки сохранности профиля, повторного запуска и чужих ссылок. Проверка: - bash tests/test_install.sh - bash -n install.sh tests/test_install.sh - git diff --check
55 lines
3.5 KiB
Markdown
55 lines
3.5 KiB
Markdown
# 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`.
|