Lightweight i18n without react-i18next: a LocaleProvider context +
useLocale() hook with {{var}} interpolation, auto-detect from
navigator.language, persisted to localStorage.
98 translation keys across 4 locale files (en/zh-CN/zh-TW/it).
All user-visible strings in App/Brain/Profiling/ErrorBoundary are
now t() calls. Language switcher added to the sidebar footer.
Build clean (tsc + vite), 18 tests pass.
colibrì web
React/Vite interface for an OpenAI-compatible colibrì server.
npm install
npm run dev
The default endpoint is http://127.0.0.1:8000/v1. Start the API server from
PR #21 (or any compatible backend), then use Probe server to load its models.
Local validation:
npm test
npm run build
Besides Chat and Brain, the Profiling tab charts where the engine spent
each turn's wall time (I/O wait, expert matmul, attention, LM head) from the
server's /profile endpoint — a rolling window of per-turn PROF snapshots
emitted by the engine.
The test suite stays browser-light: API requests use a mocked fetch, while
runtime capability and storage behavior are covered through pure helpers. It
checks that /health and /profile are resolved next to (not below) the OpenAI /v1 prefix,
supports both boolean and numeric scheduler.active responses, and sends the
colibrì-specific cache_slot field only when KV-slot support was advertised.
The endpoint and selected model are persisted locally. API keys are intentionally
memory-only; startup/persistence also removes the legacy colibri.apiKey value.