# Журнал изменений Все заметные изменения проекта будут документироваться в этом файле. Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.0.0/), и этот проект придерживается [Semantic Versioning](https://semver.org/spec/v2.0.0.html) ## [2.2.0] - 2025-06-08 ### Добавлено - Универсальный интерфейс `Identifiable` для всех сущностей с ID - Универсальный класс `EntityService` для стандартных CRUD-операций - Универсальный интерфейс `Repository` для базовых операций с данными - Утилитарный класс `Formatter` с методом `asTable()` для форматирования таблиц ### Изменено - **[BREAKING]** Обобщение CLI-команд для поддержки разных типов сущностей через `EntityService` - Рефакторинг `TaskService` для расширения `EntityService` вместо собственной реализации - Переименование `InMemoryTaskRepository` → `InMemoryRepository` с поддержкой generics - Унификация работы с моделью `Task` через интерфейс `Identifiable` - Вынесение логики форматирования таблиц из `ListCommand` в отдельный utility-класс - Обновление `ListCommand` и `SearchCommand` для использования `Formatter.asTable()` - Замена метода `list()` на `getAll()` в сервисном слое ### Технические улучшения - Улучшена типобезопасность через использование generics - Повышена переиспользуемость кода за счёт вынесения общей логики - Упрощена архитектура через унификацию интерфейсов - Удалено дублирование кода форматирования между командами ## [2.1.0] - 2025-06-01 ### Добавлено - Команда `search <текст>` для поиска задач по тексту (реализован класс `SearchCommand`) - Метод `search(String query)` в `TaskService` для поддержки поиска задач - Рефакторинг: вынесение общего функционала отображения задач в отдельный метод `formatWithTable()` в классе `ListCommand` ### Изменено - Обновлены внутренние зависимости между компонентами CLI (`SearchCommand`, `ListCommand`) и моделью данных (`Task`, `SimpleTask`) - Добавлена обработка минимальной длины поискового запроса (3 символа) в `SearchCommand` ## [2.0.0] - 2025-05-29 ### Добавлено - Базовая функциональность для управления задачами - Команды: create, list, delete, complete - Консольный интерфейс для взаимодействия с приложением - In-memory хранилище задач