All notable changes to LLM Council Plus will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Docker support (PR #5): Single-container deployment via
docker compose up -d --buildserving both frontend and API on port 8001. Thanks @kcelsi! - Docker healthcheck: Backend liveness polling via
/api/healthevery 30s with automatic restart on failure - Non-root container user: Container now runs as
appuserfor reduced attack surface docs/directory: New structured documentation folderdocs/DOCKER.md: Comprehensive Docker deployment guide covering environment variables, persistent storage, Ollama integration, reverse proxy setup (nginx/Caddy with SSE notes), upgrades, and troubleshooting
- CORS hardening: Dev-ports regex (
5173|5174|3000) is now suppressed when the built frontend is present (Docker/production mode) — same-origin deployments no longer expose API to external dev-port origins - Root cleanup: Removed stub
main.py; movedQUICKSTART.mdandTEST_PLAN_SEARCH.mdintodocs/ - README: Docker section condensed to quick-start + link to
docs/DOCKER.md; stale CORS description updated
- Ollama Configuration: Fixed an issue where the "Local (Ollama)" toggle was disabled even when Ollama was connected (PR #4). Thanks @patrickgamer!
- Serper.dev Integration: Google Search via Serper API with 2,500 free queries
- DuckDuckGo Search Optimization: Intelligent query processing with intent detection, hybrid web+news search, and relevance reranking
- Search Settings: Configurable result count (5-15) and hybrid mode toggle for DuckDuckGo
- Query Intent Detection: Automatically detects current events, factual, comparison, and research queries
- Auto-save Council Config: Council members and chairman selections now auto-save (no more forgetting to click Save)
- Council Validation: Prevent saving incomplete configurations (empty member slots or missing chairman)
- Improved Font Readability: Switched markdown headers and model names from stylized 'Syne' to readable 'Plus Jakarta Sans'
- Search Query Processing: DuckDuckGo now automatically removes conversational fluff and adds temporal context
- Search Provider Auto-switch: Testing a search API key now auto-saves and switches to that provider
- YAKE keyword extraction setting now only shows for Tavily/Brave (DuckDuckGo has built-in optimization)
- Font inconsistency between Stage 3 (Chairman) and Stage 1/2 responses
- CORS support for additional frontend port (5174)
- Mobile Responsiveness: Full mobile support with hamburger menu, responsive layouts, and touch-friendly UI
- Chat History Search: Filter conversations by title in the sidebar
- Source Validation: Disable model source toggles when API key not configured with helpful tooltips
- Version Display: Show version number in sidebar and settings
- UI Redesign: New "Council Chamber" dark theme with refined glassmorphism
- Typography: Updated font stack (Syne, Plus Jakarta Sans, Source Serif 4, JetBrains Mono)
- Hero Animations: Staggered fade-in animations for welcome screen elements
- Auto-cleanup of empty conversations when switching or creating new ones
- Duplicate API route in backend
- Duplicate CSS blocks causing style conflicts
- React key anti-pattern in message list
- Redundant decorator in provider base class
- 3-stage deliberation system (Individual Responses → Peer Ranking → Chairman Synthesis)
- Multi-provider support: OpenRouter, Ollama, Groq, Direct providers, Custom endpoints
- Web search integration: DuckDuckGo, Tavily, Brave with Jina Reader
- Execution modes: Chat Only, Chat + Ranking, Full Deliberation
- Conversation persistence with JSON storage
- Settings management with import/export
- "I'm Feeling Lucky" random model selection