- Brave Search API is now primary (if BRAVE_API_KEY set)
- NanoGPT web search is fallback if Brave fails
- Add BRAVE_API_KEY to .env, docker-compose, and deploy workflow
- Tool calling still works for AI to request searches
- Define web_search function that AI can call when needed
- AI decides autonomously when to search (no keyword matching)
- Tool calling via NanoGPT API with function definitions
- Format search results with sources for citations
- Detect keywords like 'latest', 'news', 'current', '2026' etc
- Append :online suffix to model for web search + AI response
- Retry logic: if web search fails, fall back to regular response
- Increased timeout to 90s for web search queries
- Fixed typo in fallback error handling
- Add utils/ai.js with NanoGPT integration for GLM-4.5-Air model
- Sassy system prompt: lowercase, slang, no emoji, opinionated gamer
- Conversation history per channel for context
- Update bot.js with messageCreate event for @mention responses
- Add NANO_MODEL env var for model selection