mirror of
https://github.com/tiennm99/goclaw.git
synced 2026-08-01 00:21:07 +00:00
* fix(channels): start outbound dispatcher before channel check StartAll() returned early when no channels existed at boot, skipping the dispatchOutbound goroutine. Channels loaded later via Reload() assumed the dispatcher was running, causing outbound messages (agent responses) to never reach Telegram. Move dispatcher startup before the empty-channel early return so dynamically loaded channels always have a running consumer. * feat(ui): add LLM provider warning on overview page and ignore plans dir Show alert when no providers configured or all disabled, linking to provider settings. Add plans/ to .gitignore. * feat(onboard): add provider connectivity verification and placeholder seeding - Add onboard_verify.go: verify API keys via POST to chat/completions endpoint (401/403 = fatal, 400/422 = key valid, 5xx = warn) - Verify all configured providers before seeding in auto-onboard - Seed disabled placeholder providers (OpenRouter, Synthetic, AliCloud API/Sub) for UI discoverability after managed data seeding * refactor: reuse provider layer for bootstrap key verification - Replace raw HTTP requests with provider.Chat() calls, matching the existing verify pattern in internal/http/provider_verify.go - Respect config base URL overrides (GOCLAW_ANTHROPIC_BASE_URL, etc.) - Only block bootstrap if the primary provider key is invalid; secondary provider failures are logged as warnings - Add friendlyProviderError for human-readable error extraction Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: ntduc <ntduc@cpp.ai.vn> Co-authored-by: viettranx <viettranx@gmail.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>