Files
helexa/helexa.ai/src/i18n/resources/fa/chat.json
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

22 lines
1.2 KiB
JSON

{
"title": "محیط گفتگو",
"badge": "گفتگو",
"lead": "این نمای گفتگوی شماست. منطق مکالمه و مؤلفه‌های رابط کاربری خود را در این صفحه متصل کنید.",
"transcriptPlaceholder": "رونوشت گفتگو در اینجا نمایش داده می‌شود. پیام‌های مدل و کاربر را در یک محفظه قابل اسکرول رندر کنید؛ در صورت تمایل آن‌ها را بر اساس نوبت گروه‌بندی کنید.",
"inputPlaceholder": "برای شروع گفتگو یک پیام بنویسید…",
"send": "ارسال",
"clear": "پاک کردن",
"newChat": "New chat",
"newProject": "New project",
"newProjectName": "New project",
"unsorted": "Unsorted",
"emptyState": "Start a conversation. Your history stays in this browser.",
"anonBanner": "You have reached the anonymous limit. Sign up for a free allocation.",
"signUp": "Sign up",
"stop": "Stop",
"topUp": "Top up",
"rateLimited": "Rate limited — wait a moment and retry.",
"needsKey": "Create an API key and enable it for chat to send as yourself.",
"manageKeysLink": "Manage keys"
}