Исправления
- WhatsApp
selfChatModeтеперь симметрично блокирует входящие сообщения —classifyInboundранее фильтровал только исходящие (fromMe=true) сообщения, поэтому личное сообщение или сообщение в группме всё равно маршрутизировалось к привязанной сессии даже при включённом режиме самочата — агент мог отвечать от имени пользователя вне самочатов. Теперь входящие из не-самочатов отбрасываются при включённомselfChatMode, с новой причиной пропускаnon_self_chat_inboundдля ясности логов. Обратная совместимость сохранена: приselfChatMode=falseвходящие от контактов по-прежнему обрабатываются как и раньше.
Улучшения
- Вспомогательные функции чата вынесены в отдельный модуль и покрыты тестами —
formatFollowUpSection,truncateForChipTooltipиnormalizeFollowUpsMarkdownперенесены изChatDisplay.tsxв sibling-модульChatDisplay.follow-ups.tsс 13 целенаправленными тестами, охватывающими регрессию цитаты более 1000 символов, каноническую форму сообщения, нумерацию нескольких ответов, парсер обратного преобразования и поведение подсказки чипа. Добавлен узкий субпуть экспорта@craft-agent/ui/annotations/follow-up-state, чтобы тесты могли импортировать чистые функции без подключения pdfjs и специфичных для Vite импортов через UI-баррель. - Потребитель потоковой передачи SDK
queryLlmвынесен для тестируемости — Перемещён вclaude-llm-query.tsс 12 новыми тестами, охватывающими пути ошибок (выброшенных и возвращаемых), структурированный вывод и блок отображенияcall_llm. - Предкоммитный типчек теперь автоматически обнаруживает TS-workspace —
scripts/typecheck-staged.shранее использовал жёстко закодированный allowlist из 8 workspace, поэтому изменения в новых или переименованных workspace (messaging-*,apps/cli,apps/webuiи т.д.) молча пропускали хук. Теперь он обходитapps/<X>/иpackages/<X>/и выполняет типчек любого workspace сtsconfig.json, предпочитаяbun run typecheck, если он определён. Выявлено и исправлено четыре существующие ошибки типизации, которые старый allowlist скрывал (apps/cliтипизация вебхуков,apps/marketingобновление lib до ES2023 + переименованиеcard.codeHtml+ защита индексированного доступа,apps/webuiвыравнивание tsconfig с Electron). electron:devтеперь создаёт воркер WhatsApp при запуске —scripts/electron-dev.tsсоздавал MCP-серверы и сервер агента Pi, но не воркер WhatsApp, поэтому свежие checkout сталкивались сMODULE_NOT_FOUNDнаdist/worker.cjsпри первой попытке подключить WhatsApp — запутанно, потому что адаптер Electron сообщает об этом как о завершении воркера, а не ошибке отсутствующей сборки. Настройка разработки теперь вызывает каноническийscripts/build-wa-worker.ts(~70 мс), чтобы воркер оставался в синхроне при каждом запуске.
Несовместимые изменения
- Нет. Никаких изменений схем, IPC или протоколов.