# 02. Упростить установщик пакета, shell-тесты и запускалку Status: ready-for-agent Спецификация: `../spec.md` (читать целиком). ## Файлы - `proxy-client/install.sh` - `proxy-client/.config/proxy-client/shell.bash` — только если упрощение очевидно; поведение `proxy_on`/`proxy_off`/`pclaude`/`pcodex` не меняется. - `tests/test_proxy_client_install.sh`, `tests/test_proxy_launchers.sh`, `tests/test_proxy_client_full.sh` - `proxy-client/README.md` — только разделы «Установка» и «Ручное подключение без установщика» (остальное правит задача 01; при конфликте правки перечитай файл и повтори). Не трогать: `proxy-client/.local/bin/proxy-client`, Python-тесты, корневой `install.sh` и `tests/test_install.sh` (кроме случая, если они ломаются от твоих правок — тогда минимально поправь и сообщи). ## Что сделать 1. Пункт 5 спецификации: `install.sh` ставит три симлинка напрямую (`ln -s`), без Stow и `STOW_IGNORE_PATTERNS`. Повторный запуск — ничего не меняет. Чужие файлы не перезаписывает и перечисляет все конфликты сразу (битая ссылка — тоже конфликт). `~/.local` и `~/.config`, которые сами ссылки, допустимы. Блок в `~/.bashrc` — дописать, если нет маркера; `--no-shell-setup` сохраняется. Машинные `config` и `default.url` никогда не ссылаются из пакета. 2. Тесты установщика: свежая установка (три ссылки, права, `bash -ic` после установки находит `proxy-client` и `proxy_on`), повторный запуск ничего не меняет, конфликты (включая битую ссылку) без частичной установки, машинные файлы сохраняются, `--no-shell-setup`, родительские каталоги-ссылки работают. Тесты удалённого поведения — удалить. 3. Тесты функций Bash: вместо переопределения внутренней `_proxy_cli` — поддельный исполняемый файл через `PROXY_CLIENT_BIN` (посмотри, как это сделано в `tests/test_chatgpt_proxy_launcher.sh`). Удалить тест голого `declare -F`, тест «владение перенесено» (охрана давнего рефакторинга) и ловушки `curl`. Сохранить: `proxy_on` применяет переменные, неуспешный `env` не меняет окружение, `proxy_off` чистит восемь переменных, `pclaude`/`pcodex` передают аргументы и код выхода, `.bash_custom` подключает модули. 4. `tests/test_proxy_client_full.sh` запускает только тесты proxy-client (Python-тесты proxy-client, env_sync, shell-тесты proxy-client). Прогон под Python 3.8 через `uv` — если `uv` есть, иначе предупреждение и пропуск. В README (раздел «Установка» или новый короткий раздел в конце — согласуй с задачей 01 через простоту: одна строка команды) — как запускать. ## Готово, когда - Все изменённые shell-тесты зелёные; `tests/test_install.sh` тоже зелёный. - Тесты не требуют установленного `stow`. - `bash -n` и (если есть) `shellcheck` для изменённых скриптов чистые. - Не коммитить: коммиты делает оркестратор. Отчёт: строки до/после, время до/после, принятые самостоятельно решения, что осталось спорным.