0.167.6

Fixed

  • Структурирование выпадающего списка моделей в шапке чата. В выпадающем списке выбора модели на /chat (web/src/lib/components/chat/ChatHeader.svelte) названия отображались неструктурно: использовался технический идентификатор mdl.name (например, claude-3-5-sonnet-20240620) вместо человеко-читаемого display_name, а плоская сортировка бэкенда по m.name (internal/store/sqlite.go:6554, PG-аналог postgres.go:6431) после подстановки display_name выглядела хаотично из-за смешения моделей разных провайдеров. Все остальные места приложения (Настройки → Модели, agents/[id]/models, SubagentProfileEditor) уже использовали конвенцию display_name || name — список в чате был единственным исключением. Фикс (только фронтенд, 1 файл): отображение display_name || name в триггере и пунктах списка; разовая загрузка api.providerConfigs.list() при монтировании для построения карты provider_id → LLMProviderConfig; сортировка моделей по display_name (localeCompare); группировка по провайдеру с заголовком группы (имя провайдера) и бейджем провайдера в каждой строке; группы отсортированы по имени провайдера (стабильный порядок при переключении агентов); скролл для длинных списков (max-h-[70vh] overflow-y-auto), липкий заголовок «Выбор модели»; чек-иконка выбора добавлена и к пункту «По умолчанию». Устойчивость: если провайдеры не загрузились — плоский список с display_name; если модель ссылается на неизвестного провайдера — заголовок «Другой провайдер»; ошибка загрузки логируется в console.warn. Backend, API endpoint, тип Model и useChatSwitch.svelte.ts не менялись. Связанный техдолг: (P3) — handleModelSwitch оптимистично обновляет selectedModelId и глотает ошибку сохранения (предсуществующий код, обнаружен при ocr review).