Files
helexa/helexa.ai
rob thijssen 508b326bf7
All checks were successful
CI / Format (push) Successful in 32s
CI / CUDA type-check (push) Successful in 1m37s
CI / Clippy (push) Successful in 3m22s
CI / Test (push) Successful in 7m4s
CI / Build cortex SRPM (push) Has been skipped
CI / Publish cortex to COPR (push) Has been skipped
CI / Build neuron SRPM (push) Has been skipped
CI / Publish neuron to COPR (push) Has been skipped
CI / Bump version in source (push) Has been skipped
feat(F5): authenticated chat + key usage integration
Signing in upgrades the chat workspace from anonymous to account-scoped.

- Auth context exposes accountId (resolved on login and on reload for an
  existing token) so the chat can scope its Dexie owner and the dashboard
  can query.
- Chat: when authed, owner switches to the account id (anon history was
  already re-owned via claimAnonymousData on login), the anon message cap
  is lifted (budget is enforced upstream by the account allocation), the
  full default model (VITE_DEFAULT_MODEL) is used, and the user's API key
  is sent as the bearer.
- The bearer is the raw key the user stored locally via "use for chat on
  this device" in the key-creation modal (client-side only — consistent
  with no server-side secrets). Signed in without a stored key → a banner
  prompts creating/enabling one (sending is disabled until then).
- Error mapping: insufficient_quota → top-up link (/account) when authed,
  sign-up (/register) when anon; rate_limit_exceeded → a wait-and-retry
  hint; both distinct from generic errors.
- New chat (topUp/rateLimited/needsKey/manageKeysLink) and account
  (keys.useForChat/usedForChat) i18n keys across all languages.

Validated: lint, typecheck, build, i18n:check all green. Explicit-path
commit; no node_modules/dist.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F6o3ddqmYNh9kzdwq6eowh
2026-06-23 11:55:48 +03:00
..

helexa.ai

The public-beta frontend for the helexa mesh: a chat-first landing experience (anonymous + authenticated, with all chat history kept client-side in IndexedDB — no server-side history), a /mission page on European digital sovereignty, and full account self-service (register, recover, manage API keys, set per-key limits, redeem top-up codes) against helexa-upstream.

Vite + React (SWC) + TypeScript + react-bootstrap + react-router + react-i18next. Lives as a top-level folder in the cortex monorepo; it is not a Cargo crate.

Develop

cd helexa.ai
npm install
cp .env.example .env.local   # adjust backend URLs
npm run dev                  # vite dev server, proxies /v1+/health → router, /api → upstream

Other scripts: npm run build (tsc -b && vite builddist/), npm run preview, npm run lint, npm run typecheck.

In dev, vite.config.ts proxies the mesh data-plane (helexa-router) and the account control-plane (helexa-upstream) same-origin. Run a local router (cargo run -p helexa-router) for the chat path and a local helexa-upstream for the account path.

Status

F0 scaffold. Theming + i18n (33 languages, usage-ordered selector), the /mission page, the chat workspace (Dexie + streaming), and the account dashboard land in subsequent phases — see ~/.claude/plans/we-need-to-plan-modular-graham.md.