Changelog

Все значимые изменения в проекте KeySloth будут документированы в этом файле.

Формат основан на Keep a Changelog, и этот проект придерживается Semantic Versioning.

[Released]

[0.2.0] - 2025-09-04

Added

  • Поддержка произвольных типов файлов для шифрования/дешифрования (wildcard extensions)

Changed

  • Сбор входных файлов: рекурсивно все обычные файлы, исключая *.enc, .git/**, .DS_Store, Thumbs.db, локальный README.md
  • Перевод всех I/O операций на бинарные методы File.binread/File.binwrite
  • Обновлены проверки целостности: работают с бинарными данными
  • Обновлены CLI help и README для отражения поддержки любых типов
  • Улучшены сообщения об ошибках SSH: подсказки для Permission denied (publickey), Host key verification failed, Repository not found
  • Улучшена читаемость логов CLI: добавлены явные маркеры начала/конца выполнения команд, эмодзи ✅ для успешных действий и ⛔ для ошибок
  • Расширен диапазон совместимости с Thor: теперь '>= 1.0.1', '< 1.4.0'

Fixed

  • Исправлено: параметр backup_count из .keyslothrc ранее игнорировался (всегда хранилось 3 бэкапа). Теперь значение конфигурации применяется, а backup_count: 0 корректно отключает создание и ротацию бэкапов.
  • Исправлено: значения branch и local_path из .keyslothrc игнорировались при использовании CLI из-за дефолтов в опциях. Дефолты в CLI убраны; приоритет теперь корректный: CLI > конфиг > дефолты. Документация обновлена (автопоиск и дефолты).
  • Исправлено: keysloth status падал при форматировании времени backup'ов на некоторых окружениях (Time.strptime недоступен). Добавлено require 'time' и безопасный парсинг с rescue.
  • Исправлено: команды status, validate, restore игнорировали local_path из .keyslothrc. Теперь при отсутствии --path путь берётся из конфигурации (или дефолта), а при наличии флага — имеет приоритет.

Tests

  • Обновлены и расширены тесты file_manager_spec и git_manager_spec под wildcard и бинарный I/O
  • Добавлены тесты на подсказки SSH-ошибок в git_manager_spec

Docs

  • README: заменён раздел «Поддерживаемые типы» на «Типы файлов (любые)» и добавлены исключения
  • Обновлён test_plan с учётом новых сценариев
  • README: добавлены примеры с ed25519 и переменной KEYSLOTH_SSH_KEY_PATH

[0.1.1] - 2025-09-02

Changed

  • Переведена работа с Git на системный git (через Open3), удалена зависимость от Rugged/libgit2
  • Обновлены тесты spec/keysloth/git_manager_spec.rb под системный git
  • Улучшена SSH-аутентификация: поддержка KEYSLOTH_SSH_KEY_PATH, SSH_PRIVATE_KEY/SSH_PUBLIC_KEY через GIT_SSH_COMMAND
  • Поведение pull: git fetch + git pull --ff-only, с fallback на --unshallow
  • Очистка .enc и запись файлов выполняются через файловую систему
  • Добавлена проверка настроек автора коммита (user.name/user.email)

Docs

  • Удалены инструкции про Rugged из task/test_plan.md; уточнены требования к Git/SSH

[0.1.0] - 2023-12-15

Added

  • Первоначальный релиз KeySloth
  • Базовая функциональность шифрования/дешифрования с использованием AES-256-GCM
  • Поддержка работы с Git репозиториями через SSH
  • CLI интерфейс с командами pull, push, status, restore
  • Поддержка файлов секретов: .cer, .p12, .mobileprovisioning, .json
  • Автоматическое создание резервных копий
  • Многоуровневое логирование (DEBUG, INFO, ERROR)
  • Поддержка конфигурационных файлов .keyslothrc
  • Интеграция с CI/CD системами через переменные окружения
  • Валидация входных данных и обработка ошибок
  • Полная документация API и пользовательская документация
  • Тесты RSpec с покрытием кода
  • Линтинг кода с RuboCop
  • Поддержка Ruby 2.7+

Security

  • Реализована защита целостности данных с помощью GCM режима
  • Безопасная деривация ключей из паролей с использованием PBKDF2
  • Поддержка только SSH аутентификации для Git операций
  • Валидация путей файлов для предотвращения атак directory traversal