0.26.0

Итерация 22 плана аудита: DX и полировка.

Added

  • Argon2id для хеширования паролей вместо bcrypt. Обратная совместимость: bcrypt-хеши проверяются корректно и автоматически мигрируются в argon2id при следующем логине (rehash on login). Функция NeedsRehash(hash) определяет необходимость перешифрования.
  • macOS sandbox-exec: новый backend SandboxSandboxExec в security/sandbox.go. Генерирует Seatbelt-profile с ограничением файлового доступа (read/write только внутри workspace, read-only для системных путей), разрешением сети и fork. Функция WrapCommand(command, workspace, workDir, backend) — единая точка входа для всех sandbox-бекендов. DetectSandboxBackend() автоматически выбирает доступный backend по ОС.
  • UI-индикатор sandbox: в SystemInfo добавлено поле Sandbox (bwrap / sandbox-exec / disabled). В настройках permissions агента добавлена опция «Sandbox-exec (macOS)».
  • TAIGACLAW_PORT env-переменная для настройки порта без CLI-флагов. Валидация: 1-65535, при ошибке — fallback на 14888 с предупреждением в stderr.
  • TAIGACLAW_DATA_DIR env-переменная для указания каталога данных. Путь по умолчанию по XDG-стандартам: macOS ~/Library/Application Support/TaigaClaw, Linux $XDG_DATA_HOME/taigaclaw (или ~/.local/share/taigaclaw), Windows %LOCALAPPDATA%/TaigaClaw.
  • Миграция из legacy ~/.taigaclaw: при первом запуске с новым путём данных файлы (БД, секреты) автоматически переносятся из ~/.taigaclaw. Пустой старый каталог удаляется.
  • README.md: полная документация проекта — архитектура, компоненты, ENV-переменные, CLI-флаги, платформы, сборка, тестирование.
  • Тесты: 6 тестов Argon2id (hash/check/bcrypt-compat/rehash/invalid/different-hashes), 7 тестов sandbox (detect/available/wrap/exec-bwrap/none).

Changed

  • go.mod: миграция nhooyr.io/websocketgithub.com/coder/websocket (официальный successor). Минимальная версия Go — 1.25.5 (определяется зависимостями).
  • defaultDataDir(): переработан с поддержкой XDG (Linux), Application Support (macOS), LOCALAPPDATA (Windows).
  • WrapCommandBwrap в exec.go: заменён на WrapCommand с поддержкой всех бекендов sandbox. Убрана проверка runtime.GOOS из exec.go (делегирована в sandbox.go).