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