## Why Веб-UI показывал в карточках (список + шапка страницы просмотра) infohash с кнопкой копирования. Но в логах основной ключ загрузки — `download_id` (ULID), именно по нему удобно грепать и связывать события; infohash в логах второстепенен. Пользователю нужно копировать из карточки то, что реально ищется в логах. ## What Changes - В карточке списка и в шапке `/download/{id}` показываем и копируем `download.id` (ULID) вместо infohash — как основной идентификатор загрузки. - Infohash остаётся видимым только в блоке «Информация о торренте» (без изменений), где ему место рядом с сырым источником. - Поиск по списку расширяем: искать можно по **любому идентификатору** (`download.id` ИЛИ infohash), плюс прежние название/контекст. Плейсхолдер строки поиска обновлён. ## Capabilities ### New Capabilities ### Modified Capabilities - `web-ui`: основной копируемый идентификатор карточек — `download.id`, а не infohash (Requirement «Клиентские взаимодействия без сборки» и Scenario копирования); поиск по списку матчит любой идентификатор загрузки (Scenario «Серверный фильтр и поиск»). ## Impact - Шаблоны: `web/templates/index.html`, `web/templates/download.html`. - Поиск: `internal/store/list.go` (в LIKE-условие добавлен `download.id`). - View: `internal/httpapi/httpapi.go`, `internal/httpapi/download.go` (удалены осиротевшие поля `Infohash`/`InfohashShort` и хелпер `shortenHash`). - Клиент: `web/static/js/app.js` (комментарий — функция копирования теперь про идентификатор загрузки, не только infohash). - Совместимость: чисто презентационно; API-DTO и модель данных не меняются.