prompt=none causes silent failure when no Keycloak session exists yet.
Standard OIDC flow still provides seamless SSO when the user has an
active Keycloak session from the dashboard.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix endpoints config: use `custom` array format (not `ollama` key)
per LibreChat docs
- Add required JWT_SECRET, JWT_REFRESH_SECRET, CREDS_KEY, CREDS_IV
environment variables
- Update config version to 1.2.8
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Keycloak 26 image does not include curl, so the health check fails.
Switch to bash TCP check against /realms/master. Also replace deprecated
KEYCLOAK_ADMIN env vars with KC_BOOTSTRAP_ADMIN_USERNAME/PASSWORD, remove
obsolete compose version key, and add start_period for slower machines.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replaces the custom chat page with an external LibreChat instance that
shares Keycloak SSO for seamless auto-login. Removes Tools and Knowledge
Base pages as these are now handled by LibreChat's built-in capabilities.
- Add LibreChat service to docker-compose with Ollama backend config
- Add Keycloak OIDC client (certifai-librechat) with prompt=none for
silent SSO
- Create librechat.yaml with CERTifAI branding, Ollama endpoint, and
custom page title/logo
- Change sidebar Chat link to external URL (opens LibreChat in new tab)
- Remove chat page, tools page, knowledge base page and all related
components (chat_sidebar, chat_bubble, chat_input_bar, etc.)
- Remove tool_card, file_row components and tool/knowledge models
- Remove chat_stream SSE handler (no longer needed)
- Clean up i18n files: remove chat, tools, knowledge sections
- Dashboard article summarization via Ollama remains intact
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add a compile-time i18n system with 270 translation keys across 5 locales
(EN, DE, FR, ES, PT). Translations are embedded via include_str! and parsed
lazily into flat HashMaps with English fallback for missing keys.
- Add src/i18n module with Locale enum, t()/tw() lookup functions, and tests
- Add JSON translation files for all 5 locales under assets/i18n/
- Provide locale Signal via Dioxus context in App, persisted to localStorage
- Replace all hardcoded UI strings across 33 component/page files
- Add compact locale picker (globe icon + ISO alpha-2 code) in sidebar header
- Add click-outside backdrop dismissal for locale dropdown
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Sharang Parnerkar <parnerkarsharang@gmail.com>
Reviewed-on: #12