- Зачем:
- копии списка в профилях разошлись: в PowerShell и VS Code не хватало
::1 и [::1], из-за чего один и тот же хост то шёл мимо прокси, то нет.
- Что:
- profile.ps1 и server-env-setup приведены к выдаче proxy-client.
- добавлен tests/test_proxy_env_sync.py — сверяет каждую копию с эталоном
DEFAULT_NO_PROXY_EXTRA и списки обхода Windows между собой.
- в файлах-копиях и README указан эталон и тест, который ловит расхождение.
- Проверка:
- python3 tests/test_proxy_env_sync.py (2 OK, на подложенном расхождении падает).
- python3 tests/test_proxy_client.py (54 OK), bash tests/test_proxy_launchers.sh (8 PASS).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Зачем:
- при существующем ~/.config/kitty/kitty.conf stow печатал
"All operations aborted" и откатывал все пакеты, а install.sh падал
по pipefail, не дойдя до настройки claude, opencode и .bashrc.
- Что:
- добавлена backup_conflicting_kitty_files: неуправляемые файлы и чужие
симлинки в ~/.config/kitty уносятся в .bak с временной меткой перед stow.
- собственные симлинки пакета пропускаются, поэтому повторный запуск
install.sh не плодит бэкапы.
- добавлены тесты на существующий файл, чужой симлинк и повторный запуск.
- из таблицы пакетов README убран zed: он не в PACKAGES с ab4c7c7.
- Проверка:
- bash tests/test_install.sh
- Зачем:
- конфиг kitty не был под контролем версий, а свёрнутый stow-каталог
приводил бы к попаданию рантайм-файлов kitty в репозиторий.
- Что:
- добавлен пакет kitty с минимальным kitty.conf и current-theme.conf
вместо 112 КБ sample-конфига от старой версии.
- в install.sh kitty добавлен в PACKAGES, а ~/.config/kitty создаётся
заранее настоящим каталогом, чтобы stow линковал по файлам.
- тест folding переведён с невыпиленного zed на kitty, устаревшая
проверка ~/.config/zed в тесте миграции заменена на assert_not_exists.
- Проверка:
- bash tests/test_install.sh
- Зачем:
- в таблице настроек Claude не было упоминания скрипта статусной строки,
хотя install.sh теперь копирует его в ~/.claude.
- Что:
- в строку про Claude добавлено «statusline-command.sh → копия из репозитория».
- Проверка:
- grep -n statusline README.md.
- Зачем:
- требуется единообразное окружение терминала на обеих ОС.
- Что:
- добавлен выбор локальной оболочки и меню запуска по платформе.
- настроены JetBrains Mono и XWayland для корректной рамки окна в GNOME.
- пакет WezTerm включён в установку через stow и описан в README.
- Проверка:
- wezterm show-keys, bash -n install.sh и stow --simulate --restow wezterm.
- Зачем:
- Codex app-server обходил прокси, а Claude удерживал окно Windows Terminal.
- Что:
- добавлен общий ~/.codex/.env и упрощён запуск Codex Desktop.
- ярлык Claude переведён на скрытый запуск через wscript.exe.
- документация приведена в соответствие с новой схемой.
- Проверка:
- соединения ChatGPT.exe и codex.exe направлены через 127.0.0.1:12334.
- проверены синтаксис PowerShell, состояние chezmoi и ярлык; Claude проверен вручную.
- Зачем:
- Claude Proxy не запускался при установке Claude из Microsoft Store.
- Что:
- сохранён прежний запуск обычного claude.exe.
- добавлена активация пакетного приложения по AUMID с параметрами прокси.
- генератор ярлыка получил поддержку значка из пакета Claude.
- Проверка:
- обе ветки запуска завершились с кодом 0.
- сетевой процесс Claude подключился к 127.0.0.1:12334.
- Зачем:
- обновлённое приложение запрещает прямой запуск ChatGPT.exe из WindowsApps.
- Что:
- запуск переведён на активацию пакета по AUMID.
- добавлены параметры Chromium для подключения к hproxy.local.
- описание ярлыка обновлено в README.
- Проверка:
- установленный скрипт завершился с кодом 0.
- сетевой процесс Codex подключился к 127.0.0.1:12334.
- Зачем:
- нужен отдельный запуск Claude Desktop через hproxy.local без системного прокси.
- Что:
- добавлен PowerShell-скрипт с переменными прокси и параметрами Electron.
- добавлено идемпотентное создание ярлыка Claude Proxy через chezmoi.
- описано правило полного закрытия уже запущенного Claude.
- Проверка:
- проверены PowerShell-синтаксис, аргументы запуска и WSLENV через подмену Start-Process.
- двумя прогонами с подменой COM проверена идемпотентность создания ярлыка.
- выполнены chezmoi managed и git diff --cached --check.
- Зачем:
- свежая установка могла превратить ~/.local в ссылку на пакет и записать Xray в репозиторий.
- Что:
- перед Stow теперь гарантируются настоящие ~/.local/bin и ~/.config/proxy-client без раскрытия посторонних ссылок.
- добавлены регрессионные проверки свежего HOME и посторонней ссылки ~/.local.
- README перестроены вокруг установки, выбора режима и ежедневного использования.
- Проверка:
- bash tests/test_install.sh.
- bash tests/test_proxy_launchers.sh.
- bash -n install.sh tests/test_install.sh.
- git diff --cached --check.
- Зачем:
- прежнее имя выпячивало Xray, хотя клиент поддерживает также внешний прокси, а два каталога конфигурации были неочевидны.
- Что:
- пакет, CLI, конфигурация, состояние, тесты и документация переименованы в proxy-client.
- машинный конфиг, профиль и два явных примера собраны в одном пользовательском каталоге.
- свежая установка защищена от сворачивания каталога конфигурации внутрь репозитория.
- Проверка:
- bash tests/test_proxy_client_full.sh.
- bash tests/test_install.sh.
- ручные start, status и xray run -test; незавершённая сетевая приёмка записана в handoff.
- Зачем:
- новые команды должны быть в справочнике, а непроверенная Windows-часть — зафиксирована как задача.
- Что:
- README: абзац про pclaude/pcodex и строки в таблицах bash/PowerShell-функций.
- TODO: добавлен ручной чеклист проверки PowerShell-части на Windows.
- Проверка:
- git show --stat HEAD.
- Зачем:
- Claude Code перезаписывает settings.json при каждом «always allow», что создавало
конфликт с managed-копией из dotfiles при повторном запуске install.sh.
- Что:
- settings.json удалён из репозитория, Claude Code владеет им полностью.
- создан settings.local.json (базовые permissions + statusLine), деплоится через симлинк.
- install.sh: копирование + шаблон заменены на ln -sf с бэкапом и guard для edge cases.
- check.sh: проверка обновлена под симлинк вместо «файл + chmod 444».
- тесты: старый тест копирования заменён на 4 новых (симлинк, бэкап, директория, stow-миграция).
- Проверка:
- bash tests/test_install.sh (15 тестов).
- bash agents/.agents/skills/dotfiles-check/check.sh.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- существует два проекта opencode, ссылка устраняет путаницу.
- Что:
- название Opencode в таблице AI-инструментов обёрнуто в ссылку на anomalyco/opencode.
- Проверка:
- открыть README.md, убедиться что ссылка ведёт на правильный репозиторий.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- winget install не обновляет PATH текущей сессии; без перезапуска
chezmoi не находит pwsh и запускает скрипты через PS 5.1.
- Что:
- добавлен комментарий между установкой пакетов и chezmoi apply.
- Проверка:
- визуальная проверка README.md
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- README вырос органически и перестал соответствовать тому, как человек его читает: quick start был на строке 80, требования после инструкций, Windows-справочник внутри установки, прокси и секреты размазаны по 4 местам.
- Что:
- добавлен quick start наверху (3 команды для каждой платформы).
- содержимое сгруппировано по платформе: Linux/WSL (stow), Windows (chezmoi), AI-инструменты.
- прокси, секреты и Git baseline консолидированы в отдельные секции.
- добавлены секции «Справочник» (bash/pwsh функции, точки расширения) и «Дизайн-решения».
- удалены дубли и заглушки (Stow вручную, Zed placeholder, VS Code Server как отдельная секция).
- Проверка:
- визуальный просмотр README.md.
- git diff --check — нет trailing whitespace / CRLF.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- нужно убрать line-ending noise в репозитории и сделать Windows-слой безопаснее для запуска без установленного pwsh.
- Что:
- добавлена `.gitattributes` с LF-базой для текста и CRLF-исключениями для `.bat` и `.cmd`.
- `README.md` нормализован в LF и quick start дополнен явной установкой PowerShell 7.
- `chezmoi`-скрипты переведены на guard, совместимый с PowerShell 5.1, а запись `settings.json` переведена на `utf8BOM`.
- Проверка:
- `git diff --check`.
- `powershell.exe -NoProfile -ExecutionPolicy Bypass -File chezmoi\\.chezmoiscripts\\run_before_10-migrate-gitconfig.ps1`.
- `powershell.exe -NoProfile -ExecutionPolicy Bypass -File chezmoi\\.chezmoiscripts\\run_20-configure-windows-terminal.ps1`.
- `chezmoi -S C:\\Users\\dmitry\\dotfiles\\chezmoi apply --dry-run --verbose`.
- Зачем:
- нужно перенести привычные proxy_on/proxy_off/myip из bash в pwsh и убрать устаревший codevpn.
- нужно сделать Windows Git baseline проще и предсказуемее, чтобы effective значения и проверки не путались.
- Что:
- в managed profile PowerShell 7 добавлены `proxy_on`, `proxy_off`, `myip` и удалён `codevpn`.
- Git baseline перенесён в `~/.gitconfig`, а `~/.gitconfig.local` оставлен только для локальных и персональных override-настроек.
- README уточнён: legacy-статус Windows PowerShell 5.1, новые helper-функции и корректная команда проверки Git-конфига.
- Проверка:
- `chezmoi -S "$HOME\dotfiles\chezmoi" apply --force`
- `pwsh -NoLogo -Command ''Get-Command proxy_on,proxy_off,myip,Reload-Profile,wt-here; Test-Path function:codevpn''`
- `git config --global --includes --list --show-origin`
- Зачем:
- нужно перенести стабильную Windows-конфигурацию в dotfiles без поломки существующего stow/install.sh workflow для Linux и WSL.
- нужно убрать типичные проблемы Git на Windows, включая line endings, из ручной настройки машины.
- Что:
- добавлен отдельный source dir `chezmoi/` с tiny stub для PowerShell 7 и managed profile в `~/.config/powershell`.
- добавлены идемпотентная настройка Windows Terminal и managed Git baseline с миграцией локальных настроек в `~/.gitconfig.local`.
- обновлён README: описан Windows workflow, helper-функции pwsh и состав Git baseline без персональных данных.
- Проверка:
- `chezmoi -S "$HOME\dotfiles\chezmoi" apply`
- `pwsh -NoLogo -Command ''$PSVersionTable.PSVersion.ToString(); chcp; [Console]::InputEncoding.WebName; [Console]::OutputEncoding.WebName''`
- `git config --global --includes --list --show-origin`
- Зачем:
- старая команда в wsl.conf дублировала записи в /etc/hosts при каждом ребуте.
- настройка hproxy.local не была задокументирована в репозитории.
- Что:
- создан идемпотентный скрипт scripts/setup-hproxy.sh (sed + append).
- в install.sh добавлен интерактивный вопрос о подключении скрипта в wsl.conf.
- в README.md добавлена документация по настройке hproxy.local (NAT и Mirror).
- Проверка:
- cat /etc/wsl.conf, wsl --shutdown, getent hosts hproxy.local.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Зачем:
- нужен воспроизводимый способ установки на новую машину и защита от перезаписи tracked-файлов ИИ-инструментами.
- Что:
- добавлен install.sh: stow всех пакетов, создание settings.local.json, chmod 444 на settings.json, автопатч .bashrc.
- claude/settings.json разделён на базовый (permissions, statusLine) и локальный (model, effortLevel в settings.local.json).
- добавлен .concept-software.ru в NO_PROXY в server-env-setup и bash_functions.
- README переработан: install.sh как рекомендуемый способ, документация двухуровневых настроек Claude, Developer Mode hint, расширенное описание VS Code прокси.
- Проверка:
- git clone + ./install.sh на чистой машине.
- Зачем:
- требуется передавать переменные из ~/.env.secrets в окружение VS Code Server в WSL.
- Что:
- добавлен stow-пакет vscode с файлом ~/.vscode-server/server-env-setup.
- реализована загрузка ~/.env.secrets через source в режиме fail-open с warning в stderr.
- обновлен README: раздел VS Code (WSL), установка через stow/вручную, reconnect и обработка конфликтов.
- Проверка:
- bash -n vscode/.vscode-server/server-env-setup.
- stow -nvt ~ vscode.
- запуск скрипта с валидным, отсутствующим и битым ~/.env.secrets в изолированном HOME.
- Add .chezmoiroot to preserve stow structure
- Add .chezmoiignore to exclude Linux-only packages on Windows
- Add PowerShell scripts for path conversion and skills symlinks
- Update README with Windows installation instructions
- Tested: vim, agents, codex, claude, opencode configs work on Windows
Зачем: Claude загружает user skills из ~/.claude/skills и не видел общий каталог ~/.agents/skills.
Что: добавлен пакет claude с symlink ~/.claude/skills на общие skills, исправлен YAML frontmatter skill conventional-commits, обновлен README с новой схемой и stow командой.
Проверка: stow -nvv claude и проверка лога rg "Loaded 1 unique skills" /tmp/claude-skills-check-2.log.
Зачем: имя файла не отражало его содержимое (функции bash), что вводило в заблуждение.
Что: переименован файл, обновлены все ссылки в .bashrc, README.md, .env.example.
Проверка: ln -s dotfiles/bash/.bash_functions ~/.bash_functions, source ~/.bashrc, proxy_on.
Зачем: разделение публичных и приватных переменных окружения для безопасного хранения API ключей.
Что: создан шаблон .env.secrets.example, обновлен .bashrc для загрузки ~/.env.secrets, добавлено исключение в .gitignore, обновлена документация.
Проверка: cp bash/.env.secrets.example ~/.env.secrets, source ~/.bashrc, echo $CONTEXT7_API_KEY.
Зачем: настройка рабочего окружения для инструмента opencode с поддержкой conventional commits.
Что: созданы конфигурационные файлы, добавлен bashrc, gitignore, документация и skill для коммитов.
Проверка: git status, проверка наличия файлов в opencode/.config/.