diff --git a/packages/app/src/components/prompt-input.tsx b/packages/app/src/components/prompt-input.tsx index 41cf7d30ca34..14101bc60e6d 100644 --- a/packages/app/src/components/prompt-input.tsx +++ b/packages/app/src/components/prompt-input.tsx @@ -79,6 +79,7 @@ import { PromptImageAttachments } from "./prompt-input/image-attachments" import { PromptDragOverlay } from "./prompt-input/drag-overlay" import { promptPlaceholder } from "./prompt-input/placeholder" import { createPromptInputTransientState } from "./prompt-input/transient-state" +import { createVoiceInput, type VoiceErrorKind } from "./prompt-input/voice" import { showToast } from "@/utils/toast" import { ImagePreview } from "@opencode-ai/ui/image-preview" import type { ReferenceInfo } from "@opencode-ai/sdk/v2/client" @@ -1101,6 +1102,27 @@ export const PromptInput: Component = (props) => { return true } + const voice = createVoiceInput({ + lang: () => language.locale(), + onFinal: (text) => { + addPart({ type: "text", content: text, start: 0, end: text.length }) + }, + onError: (kind) => { + const keys: Partial> = { + "not-allowed": "prompt.voice.error.notAllowed", + "no-speech": "prompt.voice.error.noSpeech", + "audio-capture": "prompt.voice.error.audioCapture", + network: "prompt.voice.error.network", + "service-not-allowed": "prompt.voice.error.serviceNotAllowed", + "language-not-supported": "prompt.voice.error.languageNotSupported", + unknown: "prompt.voice.error.generic", + } + const key = keys[kind] + if (!key) return + showToast({ variant: "error", title: language.t(key) }) + }, + }) + const addToHistory = (prompt: Prompt, mode: "normal" | "shell") => { history.add(prompt, mode, mode === "shell" ? [] : historyComments()) } @@ -1501,7 +1523,7 @@ export const PromptInput: Component = (props) => { onMouseDown={(e) => { const target = e.target if (!(target instanceof HTMLElement)) return - if (target.closest('[data-action="prompt-attach"], [data-action="prompt-submit"]')) { + if (target.closest('[data-action="prompt-attach"], [data-action="prompt-submit"], [data-action="prompt-voice"]')) { return } editorRef?.focus() @@ -1575,6 +1597,21 @@ export const PromptInput: Component = (props) => { />
+ + + voice.toggle()} + /> + + void) | null + onerror: ((event: any) => void) | null + onend: (() => void) | null + start: () => void + stop: () => void + abort: () => void +} + +export type VoiceInputOptions = { + lang: () => string + onFinal: (text: string) => void + onError: (kind: VoiceErrorKind) => void +} + +const LOCALE_TAGS: Record = { + ru: "ru-RU", + uk: "uk-UA", + en: "en-US", + zh: "zh-CN", + zht: "zh-TW", + ko: "ko-KR", + de: "de-DE", + es: "es-ES", + fr: "fr-FR", + da: "da-DK", + ja: "ja-JP", + pl: "pl-PL", + ar: "ar-SA", + no: "nb-NO", + br: "pt-BR", + th: "th-TH", + bs: "bs-BA", + tr: "tr-TR", + hi: "hi-IN", + nl: "nl-NL", + id: "id-ID", + vi: "vi-VN", + it: "it-IT", + ur: "ur-PK", + pa: "pa-IN", + az: "az-AZ", + fi: "fi-FI", + sv: "sv-SE", + am: "am-ET", + cs: "cs-CZ", + hu: "hu-HU", + ro: "ro-RO", + ca: "ca-ES", + sk: "sk-SK", +} + +const fallbackLang = () => + typeof navigator !== "undefined" && typeof navigator.language === "string" && navigator.language + ? navigator.language + : "en-US" + +export function createVoiceInput(options: VoiceInputOptions) { + const supported = + typeof window !== "undefined" && typeof getSpeechRecognitionCtor(window) !== "undefined" + const [listening, setListening] = createSignal(false) + + let recognition: SpeechRecognitionLike | undefined + let active = false + let disposed = false + + const speechLang = () => { + const locale = options.lang() + const base = locale.split("-")[0]?.toLowerCase() ?? "" + return LOCALE_TAGS[base] ?? fallbackLang() + } + + const ensure = () => { + if (recognition) return recognition + const Ctor = getSpeechRecognitionCtor(window) + if (!Ctor) throw new Error("Speech recognition is not supported") + const rec = new Ctor() + rec.lang = speechLang() + rec.continuous = true + rec.interimResults = true + rec.onresult = (event) => { + const results = event.results + for (let i = event.resultIndex; i < results.length; i++) { + const result = results[i] + if (!result.isFinal) continue + const text = String(result[0]?.transcript ?? "").trim() + if (text) options.onFinal(text) + } + } + rec.onerror = (event) => { + const kind = String(event.error ?? "unknown") + const interrupted = kind === "aborted" || kind === "no-speech" + active = false + setListening(false) + if (!disposed && !interrupted) options.onError(kind as VoiceErrorKind) + } + rec.onend = () => { + const wasActive = active + active = false + setListening(false) + if (wasActive && !disposed) { + try { + rec.start() + active = true + setListening(true) + } catch { + // restart failed, surface as generic error + options.onError("unknown") + } + } + } + recognition = rec + return rec + } + + const start = () => { + if (!supported || active || disposed) return + try { + const rec = ensure() + active = true + setListening(true) + rec.start() + } catch { + active = false + setListening(false) + options.onError("unknown") + } + } + + const stop = () => { + if (!recognition || !active) return + active = false + setListening(false) + try { + recognition.stop() + } catch { + try { + recognition.abort() + } catch { + // ignore + } + } + } + + const toggle = () => { + if (active) { + stop() + return + } + start() + } + + onCleanup(() => { + disposed = true + stop() + }) + + return { supported: () => supported, listening, toggle, start, stop } +} diff --git a/packages/app/src/components/session/session-budget.tsx b/packages/app/src/components/session/session-budget.tsx new file mode 100644 index 000000000000..c085f2618660 --- /dev/null +++ b/packages/app/src/components/session/session-budget.tsx @@ -0,0 +1,158 @@ +import { Show, createMemo, createSignal } from "solid-js" +import { Button } from "@opencode-ai/ui/button" +import { Icon } from "@opencode-ai/ui/icon" +import { useLanguage } from "@/context/language" +import { useSDK } from "@/context/sdk" +import { useSync } from "@/context/sync" +import { useSessionLayout } from "@/pages/session/session-layout" +import { showToast } from "@/utils/toast" + +export function SessionBudget() { + const sync = useSync() + const sdk = useSDK() + const language = useLanguage() + const { params } = useSessionLayout() + + const info = createMemo(() => (params.id ? sync().session.get(params.id) : undefined)) + const budget = createMemo(() => info()?.budget) + const cost = createMemo(() => info()?.cost ?? 0) + const usd = createMemo( + () => + new Intl.NumberFormat(language.intl(), { + style: "currency", + currency: "USD", + }), + ) + + const [editing, setEditing] = createSignal(false) + const [draft, setDraft] = createSignal("") + let inputRef!: HTMLInputElement + + const usage = createMemo(() => { + const limit = budget() + if (!limit) return 0 + return Math.max(0, Math.min(1, cost() / limit)) + }) + + const startEdit = () => { + setDraft(budget() !== undefined ? String(budget()) : "") + setEditing(true) + requestAnimationFrame(() => { + inputRef?.focus() + inputRef?.select() + }) + } + + const cancelEdit = () => { + setEditing(false) + } + + const apply = async (next: number | undefined) => { + const sessionID = params.id + const current = info() + if (!sessionID || !current) return + const previous = current.budget + sync().session.remember({ ...current, budget: next }) + try { + await sdk().client.session.update({ sessionID, budget: next ?? null }) + } catch (err) { + sync().session.remember({ ...current, budget: previous }) + showToast({ + variant: "error", + title: language.t("common.requestFailed"), + description: err instanceof Error ? err.message : undefined, + }) + } + } + + const save = () => { + const raw = draft().trim() + if (!raw) { + void apply(undefined) + setEditing(false) + return + } + const parsed = Number(raw) + if (!Number.isFinite(parsed) || parsed < 0) return + void apply(parsed) + setEditing(false) + } + + return ( +
+
+
{language.t("context.budget.title")}
+
+ + + + +
+
+ + + {budget() !== undefined + ? `${usd().format(cost())} / ${usd().format(budget()!)}` + : language.t("context.budget.unset")} +
+ } + > +
+
+ $ + setDraft(event.currentTarget.value)} + onKeyDown={(event) => { + if (event.key === "Enter") { + event.preventDefault() + save() + } + if (event.key === "Escape") { + event.preventDefault() + cancelEdit() + } + }} + onBlur={save} + class="w-20 bg-transparent text-12-medium text-text-strong focus:outline-none" + aria-label={language.t("context.budget.edit")} + /> +
+
+ + + +
+
= 1, + "bg-text-text-base": usage() < 1, + }} + style={{ width: `${usage() * 100}%` }} + /> +
+ +
+ ) +} diff --git a/packages/app/src/components/session/session-context-tab.tsx b/packages/app/src/components/session/session-context-tab.tsx index a0758f3eacae..a1b1ef20c7ea 100644 --- a/packages/app/src/components/session/session-context-tab.tsx +++ b/packages/app/src/components/session/session-context-tab.tsx @@ -21,6 +21,7 @@ import { useSessionLayout } from "@/pages/session/session-layout" import { getSessionContext } from "./session-context-metrics" import { estimateSessionContextBreakdown, type SessionContextBreakdownKey } from "./session-context-breakdown" import { createSessionContextFormatter } from "./session-context-format" +import { SessionBudget } from "./session-budget" const BREAKDOWN_COLOR: Record = { system: "var(--syntax-info)", @@ -314,6 +315,8 @@ export function SessionContextTab() {
+ + 0}>
{language.t("context.breakdown.title")}
diff --git a/packages/app/src/i18n/am.ts b/packages/app/src/i18n/am.ts index bda48350e532..0b342f1e73be 100644 --- a/packages/app/src/i18n/am.ts +++ b/packages/app/src/i18n/am.ts @@ -374,6 +374,15 @@ export const dict = { "prompt.attachment.remove": "ዓባሪን አስወግድ", "prompt.action.send": "ላክ", "prompt.action.stop": "አቁም", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "የማይደገፍ ዓባሪ", "prompt.toast.pasteUnsupported.description": "ምስሎች፣ ፒዲኤፎች ወይም የጽሑፍ ፋይሎች ብቻ እዚህ ጋር ሊጣመሩ ይችላሉ።", "prompt.toast.attachmentDuplicate.title": "ይህ ፋይል አስቀድሞ ተሰቅሏል", @@ -562,6 +571,10 @@ export const dict = { "context.usage.cost": "ዋጋ", "context.usage.clickToView": "አውድ ለማየት ጠቅ ያድርጉ", "context.usage.view": "የአውድ አጠቃቀምን ይመልከቱ", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "እንግሊዝኛ", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -721,6 +734,8 @@ export const dict = { "session.messages.loading": "መልእክቶችን በመጫን ላይ...", "session.messages.jumpToLatest": "ወደ የቅርብ ጊዜ ዝለል", "session.context.addToContext": "{{selection}}ን ወደ አውድ አክል", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "የሚደረጉ ሥራዎች", "session.todo.collapse": "ስብስብ", "session.todo.expand": "ዘርጋ", diff --git a/packages/app/src/i18n/ar.ts b/packages/app/src/i18n/ar.ts index 3f55b3084088..92a7d6f0aa37 100644 --- a/packages/app/src/i18n/ar.ts +++ b/packages/app/src/i18n/ar.ts @@ -383,6 +383,15 @@ export const dict = { "prompt.attachment.remove": "إزالة المرفق", "prompt.action.send": "إرسال", "prompt.action.stop": "إيقاف", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "مرفق غير مدعوم", "prompt.toast.attachmentDuplicate.title": "تم تحميل هذا الملف بالفعل", "prompt.toast.pasteUnsupported.description": "يمكن إرفاق الصور أو ملفات PDF أو الملفات النصية فقط هنا.", @@ -568,6 +577,10 @@ export const dict = { "context.usage.cost": "تكلفة", "context.usage.clickToView": "انقر لعرض السياق", "context.usage.view": "عرض استخدام السياق", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -716,6 +729,8 @@ export const dict = { "session.messages.loading": "جارٍ تحميل الرسائل...", "session.messages.jumpToLatest": "الانتقال إلى الأحدث", "session.context.addToContext": "إضافة {{selection}} إلى السياق", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "المهام", "session.todo.collapse": "طي", "session.todo.expand": "توسيع", diff --git a/packages/app/src/i18n/az.ts b/packages/app/src/i18n/az.ts index d818ae57fd6c..e41500bd7abe 100644 --- a/packages/app/src/i18n/az.ts +++ b/packages/app/src/i18n/az.ts @@ -381,6 +381,15 @@ export const dict = { "prompt.attachment.remove": "Əlavəni sil", "prompt.action.send": "Göndər", "prompt.action.stop": "Dayandır", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Dəstəklənməyən əlavə", "prompt.toast.pasteUnsupported.description": "Buraya yalnız şəkillər, PDF-lər və ya mətn faylları əlavə edilə bilər.", "prompt.toast.attachmentDuplicate.title": "Bu fayl artıq yüklənib", @@ -578,6 +587,10 @@ export const dict = { "context.usage.cost": "Xərc", "context.usage.clickToView": "Kontekstə baxmaq üçün klikləyin", "context.usage.view": "Kontekst istifadəsinə bax", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -744,6 +757,8 @@ export const dict = { "session.messages.loading": "Mesajlar yüklənir...", "session.messages.jumpToLatest": "Ən sonuncuya keç", "session.context.addToContext": "{{selection}} kontekstə əlavə et", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Tapşırıqlar", "session.todo.collapse": "Yığ", "session.todo.expand": "Genişlət", diff --git a/packages/app/src/i18n/bg.ts b/packages/app/src/i18n/bg.ts index 7f63d1fa4b3e..ec81b7401636 100644 --- a/packages/app/src/i18n/bg.ts +++ b/packages/app/src/i18n/bg.ts @@ -381,6 +381,15 @@ export const dict = { "prompt.attachment.remove": "Премахване на прикачения файл", "prompt.action.send": "Изпратете", "prompt.action.stop": "Спрете", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Неподдържан прикачен файл", "prompt.toast.pasteUnsupported.description": "Тук могат да се прикачват само изображения, PDF или текстови файлове.", "prompt.toast.attachmentDuplicate.title": "Този файл вече е качен", @@ -576,6 +585,10 @@ export const dict = { "context.usage.cost": "цена", "context.usage.clickToView": "Кликнете, за да видите контекста", "context.usage.view": "Преглед на използването на контекста", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "английски", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -740,6 +753,8 @@ export const dict = { "session.messages.loading": "Съобщенията се зареждат...", "session.messages.jumpToLatest": "Преминете към най-новото", "session.context.addToContext": "Добавете {{selection}} към контекста", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Задачи", "session.todo.collapse": "Свиване", "session.todo.expand": "Разширяване", diff --git a/packages/app/src/i18n/bn.ts b/packages/app/src/i18n/bn.ts index 5f0698ab64f1..4fe6a1ce7ce1 100644 --- a/packages/app/src/i18n/bn.ts +++ b/packages/app/src/i18n/bn.ts @@ -378,6 +378,15 @@ export const dict: Record = { "prompt.attachment.remove": "সংযুক্তি সরান", "prompt.action.send": "পাঠান", "prompt.action.stop": "থামো", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "অসমর্থিত সংযুক্তি", "prompt.toast.pasteUnsupported.description": "এখানে শুধুমাত্র ছবি, পিডিএফ বা টেক্সট ফাইল সংযুক্ত করা যাবে।", "prompt.toast.attachmentDuplicate.title": "এই ফাইল ইতিমধ্যে আপলোড করা হয়েছে", @@ -571,6 +580,10 @@ export const dict: Record = { "context.usage.cost": "খরচ", "context.usage.clickToView": "প্রসঙ্গ দেখতে ক্লিক করুন", "context.usage.view": "প্রসঙ্গ ব্যবহার দেখুন", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -734,6 +747,8 @@ export const dict: Record = { "session.messages.loading": "বার্তা লোড হচ্ছে...", "session.messages.jumpToLatest": "সর্বশেষে ঝাঁপ দাও", "session.context.addToContext": "প্রসঙ্গে {{selection}} যোগ করুন", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "টোডোস", "session.todo.collapse": "সঙ্কুচিত", "session.todo.expand": "প্রসারিত করুন", diff --git a/packages/app/src/i18n/br.ts b/packages/app/src/i18n/br.ts index 09da845ccb53..69a1f097424c 100644 --- a/packages/app/src/i18n/br.ts +++ b/packages/app/src/i18n/br.ts @@ -385,6 +385,15 @@ export const dict = { "prompt.attachment.remove": "Remover anexo", "prompt.action.send": "Enviar", "prompt.action.stop": "Parar", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Anexo não suportado", "prompt.toast.attachmentDuplicate.title": "Este arquivo já foi enviado", "prompt.toast.pasteUnsupported.description": "Apenas imagens, PDFs ou arquivos de texto podem ser anexados aqui.", @@ -572,6 +581,10 @@ export const dict = { "context.usage.cost": "Custo", "context.usage.clickToView": "Clique para ver o contexto", "context.usage.view": "Ver uso do contexto", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -724,6 +737,8 @@ export const dict = { "session.messages.loading": "Carregando mensagens...", "session.messages.jumpToLatest": "Ir para a mais recente", "session.context.addToContext": "Adicionar {{selection}} ao contexto", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Tarefas", "session.todo.collapse": "Recolher", "session.todo.expand": "Expandir", diff --git a/packages/app/src/i18n/bs.ts b/packages/app/src/i18n/bs.ts index feb41c651a87..d83163a9c526 100644 --- a/packages/app/src/i18n/bs.ts +++ b/packages/app/src/i18n/bs.ts @@ -405,6 +405,15 @@ export const dict = { "prompt.attachment.remove": "Ukloni prilog", "prompt.action.send": "Pošalji", "prompt.action.stop": "Zaustavi", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Nepodržan prilog", "prompt.toast.attachmentDuplicate.title": "Ova datoteka je već učitana", @@ -606,6 +615,10 @@ export const dict = { "context.usage.cost": "Trošak", "context.usage.clickToView": "Klikni da vidiš kontekst", "context.usage.view": "Prikaži korištenje konteksta", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", @@ -780,6 +793,8 @@ export const dict = { "session.messages.jumpToLatest": "Idi na najnovije", "session.context.addToContext": "Dodaj {{selection}} u kontekst", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Zadaci", "session.todo.collapse": "Sažmi", "session.todo.expand": "Proširi", diff --git a/packages/app/src/i18n/ca.ts b/packages/app/src/i18n/ca.ts index 21ad325607a6..87bcaad2226e 100644 --- a/packages/app/src/i18n/ca.ts +++ b/packages/app/src/i18n/ca.ts @@ -380,6 +380,15 @@ export const dict = { "prompt.attachment.remove": "Elimina el fitxer adjunt", "prompt.action.send": "Enviar", "prompt.action.stop": "Atureu-vos", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Fitxer adjunt no compatible", "prompt.toast.pasteUnsupported.description": "Aquí només es poden adjuntar imatges, PDFs o fitxers de text.", "prompt.toast.attachmentDuplicate.title": "Aquest fitxer ja s'ha penjat", @@ -575,6 +584,10 @@ export const dict = { "context.usage.cost": "Cost", "context.usage.clickToView": "Feu clic per veure el context", "context.usage.view": "Veure l'ús del context", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "Anglès", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -740,6 +753,8 @@ export const dict = { "session.messages.loading": "S'estan carregant els missatges...", "session.messages.jumpToLatest": "Ves a l'últim", "session.context.addToContext": "Afegeix {{selection}} al context", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Tots", "session.todo.collapse": "Col·lapse", "session.todo.expand": "Expandir", diff --git a/packages/app/src/i18n/cs.ts b/packages/app/src/i18n/cs.ts index d79d4eb5a7f8..9a0d3c1ff400 100644 --- a/packages/app/src/i18n/cs.ts +++ b/packages/app/src/i18n/cs.ts @@ -378,6 +378,15 @@ export const dict = { "prompt.attachment.remove": "Odstraňte přílohu", "prompt.action.send": "Odeslat", "prompt.action.stop": "Přestaň", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Nepodporovaná příloha", "prompt.toast.pasteUnsupported.description": "Zde lze připojit pouze obrázky, PDFs nebo textové soubory.", "prompt.toast.attachmentDuplicate.title": "Tento soubor již byl nahrán", @@ -572,6 +581,10 @@ export const dict = { "context.usage.cost": "náklady", "context.usage.clickToView": "Kliknutím zobrazíte kontext", "context.usage.view": "Zobrazit kontextové použití", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "anglicky", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -734,6 +747,8 @@ export const dict = { "session.messages.loading": "Načítání zpráv...", "session.messages.jumpToLatest": "Přejít na nejnovější", "session.context.addToContext": "Přidejte {{selection}} do kontextu", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Úkoly", "session.todo.collapse": "kolaps", "session.todo.expand": "Rozbalit", diff --git a/packages/app/src/i18n/da.ts b/packages/app/src/i18n/da.ts index 87737b094240..dc79238015e5 100644 --- a/packages/app/src/i18n/da.ts +++ b/packages/app/src/i18n/da.ts @@ -302,6 +302,15 @@ export const dict = { "prompt.attachment.remove": "Fjern vedhæftning", "prompt.action.send": "Send", "prompt.action.stop": "Stop", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Ikke understøttet vedhæftning", "prompt.toast.attachmentDuplicate.title": "Denne fil er allerede uploadet", @@ -487,6 +496,10 @@ export const dict = { "context.usage.cost": "Omkostning", "context.usage.clickToView": "Klik for at se kontekst", "context.usage.view": "Se kontekstforbrug", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", @@ -658,6 +671,8 @@ export const dict = { "session.messages.jumpToLatest": "Gå til seneste", "session.context.addToContext": "Tilføj {{selection}} til kontekst", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Opgaver", "session.todo.collapse": "Skjul", "session.todo.expand": "Udvid", diff --git a/packages/app/src/i18n/de.ts b/packages/app/src/i18n/de.ts index 00849598c5c5..7ffd8d2d2f64 100644 --- a/packages/app/src/i18n/de.ts +++ b/packages/app/src/i18n/de.ts @@ -289,6 +289,15 @@ export const dict = { "prompt.attachment.remove": "Anhang entfernen", "prompt.action.send": "Senden", "prompt.action.stop": "Stoppen", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Nicht unterstützter Anhang", "prompt.toast.attachmentDuplicate.title": "Diese Datei wurde bereits hochgeladen", "prompt.toast.pasteUnsupported.description": "Hier können nur Bilder, PDFs oder Textdateien angehängt werden.", @@ -463,6 +472,10 @@ export const dict = { "context.usage.cost": "Kosten", "context.usage.clickToView": "Klicken, um Kontext anzuzeigen", "context.usage.view": "Kontextnutzung anzeigen", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -617,6 +630,8 @@ export const dict = { "session.messages.loading": "Nachrichten werden geladen…", "session.messages.jumpToLatest": "Zur neuesten Nachricht springen", "session.context.addToContext": "{{selection}} zum Kontext hinzufügen", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Aufgaben", "session.todo.collapse": "Einklappen", "session.todo.expand": "Ausklappen", diff --git a/packages/app/src/i18n/dv.ts b/packages/app/src/i18n/dv.ts index 27b5fea86999..6d23f7dc18aa 100644 --- a/packages/app/src/i18n/dv.ts +++ b/packages/app/src/i18n/dv.ts @@ -383,6 +383,15 @@ export const dict = { "prompt.attachment.remove": "އެޓޭޗްމަންޓް ނަގާށެވެ", "prompt.action.send": "ފޮނުވުން", "prompt.action.stop": "ހުއްޓުން", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "ސަޕޯޓް ނުކުރާ އެޓޭޗްމަންޓެވެ", "prompt.toast.pasteUnsupported.description": "މިތަނުގައި އެޓޭޗް ކުރެވޭނީ ހަމައެކަނި ތަސްވީރު، PDFs، ނުވަތަ ޓެކްސްޓް ފައިލްތަކެވެ.", @@ -579,6 +588,10 @@ export const dict = { "context.usage.cost": "ހަރަދު", "context.usage.clickToView": "ކޮންޓެކްސްޓް ބަލާލުމަށް ކްލިކް ކުރާށެވެ", "context.usage.view": "ކޮންޓެކްސްޓް ބޭނުންކުރުން ބަލާށެވެ", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "އިނގިރޭސި", "language.zh": "简体中文 ގެ ވާހަކައެވެ", "language.zht": "繁體中文 ގެ ވާހަކައެވެ", @@ -746,6 +759,8 @@ export const dict = { "session.messages.loading": "މެސެޖުތައް ލޯޑް ކުރަނީ...", "session.messages.jumpToLatest": "އެންމެ ފަހުގެ ވާހަކައަށް ފުންމާލާށެވެ", "session.context.addToContext": "ކޮންޓެކްސްޓަށް {{selection}} އިތުރުކުރުން", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "ޓޮޑޯސް އެވެ", "session.todo.collapse": "ހޭނެތިގެން ވެއްޓުން", "session.todo.expand": "އިތުރުކުރުން", diff --git a/packages/app/src/i18n/dz.ts b/packages/app/src/i18n/dz.ts index 3b2ad46ca304..012c296b23fe 100644 --- a/packages/app/src/i18n/dz.ts +++ b/packages/app/src/i18n/dz.ts @@ -382,6 +382,15 @@ export const dict: Record = { "prompt.attachment.remove": "མཉམ་སྦྲགས་རྩ་བསྐྲད་གཏང་།", "prompt.action.send": "བཏང༌ནི", "prompt.action.stop": "བཀག་པ", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "རྒྱབ་སྐྱོར་མེད་པའི་མཉམ་སྦྲགས།", "prompt.toast.pasteUnsupported.description": "པར་རིས་དང་པི་ཌི་ཨེཕ་ ཡང་ན་ ཚིག་ཡིག་ཡིག་སྣོད་ཚུ་རྐྱངམ་ཅིག་ ནཱ་ལུ་མཉམ་སྦྲགས་འབད་བཏུབ།", @@ -580,6 +589,10 @@ export const dict: Record = { "context.usage.cost": "གོང་ཚད", "context.usage.clickToView": "སྐབས་དོན་བལྟ་ནི་ལུ་ཨེབ་གཏང་།", "context.usage.view": "སྐབས་དོན་ལག་ལེན་བལྟ།", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -747,6 +760,8 @@ export const dict: Record = { "session.messages.loading": "འཕྲིན་དོན་ཚུ་མངོན་གསལ་འབད་དོ།...", "session.messages.jumpToLatest": "གསར་ཤོས་ལུ་མཆོངས།", "session.context.addToContext": "{{selection}} སྐབས་དོན་ལུ་ཁ་སྐོང་བརྐྱབ།", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "ཊོ་ཌོས།", "session.todo.collapse": "རམ་པ", "session.todo.expand": "རྒྱ་སྐྱེད་གཏང་ནི", diff --git a/packages/app/src/i18n/el.ts b/packages/app/src/i18n/el.ts index 8f91b46af010..3b7f21e57c44 100644 --- a/packages/app/src/i18n/el.ts +++ b/packages/app/src/i18n/el.ts @@ -379,6 +379,15 @@ export const dict = { "prompt.attachment.remove": "Κατάργηση συνημμένου", "prompt.action.send": "Αποστολή", "prompt.action.stop": "Διακοπή", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Μη υποστηριζόμενο συνημμένο", "prompt.toast.pasteUnsupported.description": "Εδώ επισυνάπτονται μόνο εικόνες, αρχεία PDF ή αρχεία κειμένου.", "prompt.toast.attachmentDuplicate.title": "Αυτό το αρχείο έχει ήδη μεταφορτωθεί", @@ -575,6 +584,10 @@ export const dict = { "context.usage.cost": "Κόστος", "context.usage.clickToView": "Κάντε κλικ για προβολή του περιβάλλοντος", "context.usage.view": "Προβολή χρήσης περιβάλλοντος", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "Αγγλικά", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -742,6 +755,8 @@ export const dict = { "session.messages.loading": "Φόρτωση μηνυμάτων...", "session.messages.jumpToLatest": "Μετάβαση στο πιο πρόσφατο", "session.context.addToContext": "Προσθήκη {{selection}} στο περιβάλλον", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Εκκρεμότητες", "session.todo.collapse": "Σύμπτυξη", "session.todo.expand": "Ανάπτυξη", diff --git a/packages/app/src/i18n/en.ts b/packages/app/src/i18n/en.ts index 62d4dc1ae6e9..396fd588be4b 100644 --- a/packages/app/src/i18n/en.ts +++ b/packages/app/src/i18n/en.ts @@ -307,6 +307,15 @@ export const dict = { "prompt.attachment.remove": "Remove attachment", "prompt.action.send": "Send", "prompt.action.stop": "Stop", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Unsupported attachment", "prompt.toast.pasteUnsupported.description": "Only images, PDFs, or text files can be attached here.", @@ -517,6 +526,11 @@ export const dict = { "context.usage.clickToView": "Click to view context", "context.usage.view": "View context usage", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", + "language.en": "English", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -701,6 +715,8 @@ export const dict = { "session.messages.jumpToLatest": "Jump to latest", "session.context.addToContext": "Add {{selection}} to context", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Todos", "session.todo.collapse": "Collapse", "session.todo.expand": "Expand", diff --git a/packages/app/src/i18n/es.ts b/packages/app/src/i18n/es.ts index 9e9ff2c36750..ab9312ba82a8 100644 --- a/packages/app/src/i18n/es.ts +++ b/packages/app/src/i18n/es.ts @@ -405,6 +405,15 @@ export const dict = { "prompt.attachment.remove": "Eliminar adjunto", "prompt.action.send": "Enviar", "prompt.action.stop": "Detener", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Adjunto no compatible", "prompt.toast.attachmentDuplicate.title": "Este archivo ya se ha subido", @@ -608,6 +617,10 @@ export const dict = { "context.usage.cost": "Costo", "context.usage.clickToView": "Haz clic para ver contexto", "context.usage.view": "Ver uso del contexto", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", @@ -783,6 +796,8 @@ export const dict = { "session.messages.jumpToLatest": "Ir al mensaje más reciente", "session.context.addToContext": "Añadir {{selection}} al contexto", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Tareas", "session.todo.collapse": "Contraer", "session.todo.expand": "Expandir", diff --git a/packages/app/src/i18n/et.ts b/packages/app/src/i18n/et.ts index d78296675e3d..71636670050a 100644 --- a/packages/app/src/i18n/et.ts +++ b/packages/app/src/i18n/et.ts @@ -377,6 +377,15 @@ export const dict = { "prompt.attachment.remove": "Eemalda manus", "prompt.action.send": "Saada", "prompt.action.stop": "Peatus", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Toetamata manus", "prompt.toast.pasteUnsupported.description": "Siia saab lisada ainult pilte, PDFs või tekstifaile.", "prompt.toast.attachmentDuplicate.title": "See fail on juba üles laaditud", @@ -568,6 +577,10 @@ export const dict = { "context.usage.cost": "Maksumus", "context.usage.clickToView": "Klõpsake konteksti vaatamiseks", "context.usage.view": "Vaadake kontekstikasutust", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "inglise keel", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -730,6 +743,8 @@ export const dict = { "session.messages.loading": "Sõnumite laadimine...", "session.messages.jumpToLatest": "Hüppa uusimale", "session.context.addToContext": "Lisage konteksti {{selection}}", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Ülesanded", "session.todo.collapse": "Ahenda", "session.todo.expand": "Laienda", diff --git a/packages/app/src/i18n/fa.ts b/packages/app/src/i18n/fa.ts index 0d3d721b5324..fd647a80c1fb 100644 --- a/packages/app/src/i18n/fa.ts +++ b/packages/app/src/i18n/fa.ts @@ -378,6 +378,15 @@ export const dict = { "prompt.attachment.remove": "حذف پیوست", "prompt.action.send": "ارسال کنید", "prompt.action.stop": "توقف کنید", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "پیوست پشتیبانی نشده است", "prompt.toast.pasteUnsupported.description": "فقط تصاویر، PDFs، یا فایل های متنی را می توان در اینجا پیوست کرد.", "prompt.toast.attachmentDuplicate.title": "این فایل قبلا آپلود شده است", @@ -571,6 +580,10 @@ export const dict = { "context.usage.cost": "هزینه", "context.usage.clickToView": "برای مشاهده متن کلیک کنید", "context.usage.view": "مشاهده استفاده از زمینه", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "انگلیسی", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -733,6 +746,8 @@ export const dict = { "session.messages.loading": "در حال بارگیری پیام ها...", "session.messages.jumpToLatest": "پرش به آخرین", "session.context.addToContext": "{{selection}} را به متن اضافه کنید", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "کارهای انجام‌دادنی", "session.todo.collapse": "فرو ریختن", "session.todo.expand": "گسترش دهید", diff --git a/packages/app/src/i18n/fi.ts b/packages/app/src/i18n/fi.ts index aa9c92574cff..7f806e6ceee2 100644 --- a/packages/app/src/i18n/fi.ts +++ b/packages/app/src/i18n/fi.ts @@ -285,6 +285,15 @@ export const dict = { "prompt.attachment.remove": "Poista liite", "prompt.action.send": "Lähetä", "prompt.action.stop": "Pysäytä", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Liitettä ei tueta", "prompt.toast.pasteUnsupported.description": "Vain kuvia, PDF-tiedostoja tai tekstitiedostoja voi liittää tähän.", "prompt.toast.attachmentDuplicate.title": "Tämä tiedosto on jo ladattu", @@ -467,6 +476,10 @@ export const dict = { "context.usage.cost": "Kustannukset", "context.usage.clickToView": "Näytä konteksti napsauttamalla", "context.usage.view": "Näytä kontekstin käyttö", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -632,6 +645,8 @@ export const dict = { "session.messages.loading": "Ladataan viestejä...", "session.messages.jumpToLatest": "Siirry uusimpaan", "session.context.addToContext": "Lisää {{selection}} kontekstiin", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Tehtävät", "session.todo.collapse": "Kutista", "session.todo.expand": "Laajenna", diff --git a/packages/app/src/i18n/fo.ts b/packages/app/src/i18n/fo.ts index 4329a35b4247..195911ff05c4 100644 --- a/packages/app/src/i18n/fo.ts +++ b/packages/app/src/i18n/fo.ts @@ -377,6 +377,15 @@ export const dict = { "prompt.attachment.remove": "Strika viðheftið", "prompt.action.send": "Send", "prompt.action.stop": "Steðga", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Óstuðlað viðhefti", "prompt.toast.pasteUnsupported.description": "Bert myndir, PDFs, ella tekstfílur kunnu viðheftast her.", "prompt.toast.attachmentDuplicate.title": "Hendan fílan er longu løgd upp.", @@ -571,6 +580,10 @@ export const dict = { "context.usage.cost": "Kostnaður", "context.usage.clickToView": "Trýst fyri at síggja samanhang", "context.usage.view": "Vís samanhangsnýtslu", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "Enskt", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -734,6 +747,8 @@ export const dict = { "session.messages.loading": "Heinta boð...", "session.messages.jumpToLatest": "Hopp til nýggjasta", "session.context.addToContext": "Legg {{selection}} til samanhang", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Uppgávur", "session.todo.collapse": "Kollaps", "session.todo.expand": "Víðka", diff --git a/packages/app/src/i18n/fr.ts b/packages/app/src/i18n/fr.ts index 3c89860a4490..6cc6eb6d4dd5 100644 --- a/packages/app/src/i18n/fr.ts +++ b/packages/app/src/i18n/fr.ts @@ -388,6 +388,15 @@ export const dict = { "prompt.attachment.remove": "Supprimer la pièce jointe", "prompt.action.send": "Envoyer", "prompt.action.stop": "Arrêter", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Pièce jointe non prise en charge", "prompt.toast.attachmentDuplicate.title": "Ce fichier a déjà été téléversé", "prompt.toast.pasteUnsupported.description": @@ -578,6 +587,10 @@ export const dict = { "context.usage.cost": "Coût", "context.usage.clickToView": "Cliquez pour voir le contexte", "context.usage.view": "Voir l'utilisation du contexte", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -734,6 +747,8 @@ export const dict = { "session.messages.loading": "Chargement des messages...", "session.messages.jumpToLatest": "Aller au message le plus récent", "session.context.addToContext": "Ajouter {{selection}} au contexte", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Tâches", "session.todo.collapse": "Réduire", "session.todo.expand": "Développer", diff --git a/packages/app/src/i18n/hi.ts b/packages/app/src/i18n/hi.ts index 0aaf8e14dc6d..a844686c9b5a 100644 --- a/packages/app/src/i18n/hi.ts +++ b/packages/app/src/i18n/hi.ts @@ -385,6 +385,15 @@ export const dict = { "prompt.attachment.remove": "अनुलग्नक हटाएँ", "prompt.action.send": "भेजें", "prompt.action.stop": "रोकें", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "असमर्थित अनुलग्नक", "prompt.toast.pasteUnsupported.description": "यहां केवल छवियां, PDFs, या टेक्स्ट फ़ाइलें संलग्न की जा सकती हैं।", "prompt.toast.attachmentDuplicate.title": "यह फ़ाइल पहले ही अपलोड की जा चुकी है", @@ -580,6 +589,10 @@ export const dict = { "context.usage.cost": "लागत", "context.usage.clickToView": "कॉन्टेक्स्ट देखने के लिए क्लिक करें", "context.usage.view": "कॉन्टेक्स्ट उपयोग देखें", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -744,6 +757,8 @@ export const dict = { "session.messages.loading": "संदेश लोड हो रहे हैं...", "session.messages.jumpToLatest": "नवीनतम पर जाएं", "session.context.addToContext": "{{selection}} को कॉन्टेक्स्ट में जोड़ें", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "कार्य सूची", "session.todo.collapse": "संकुचित करें", "session.todo.expand": "विस्तृत करें", diff --git a/packages/app/src/i18n/hr.ts b/packages/app/src/i18n/hr.ts index 2130c88ada2d..a52b88327a80 100644 --- a/packages/app/src/i18n/hr.ts +++ b/packages/app/src/i18n/hr.ts @@ -382,6 +382,15 @@ export const dict = { "prompt.attachment.remove": "Ukloni privitak", "prompt.action.send": "Poslati", "prompt.action.stop": "Zaustavi", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Nepodržani privitak", "prompt.toast.pasteUnsupported.description": "Ovdje se mogu priložiti samo slike, PDF-ovi ili tekstualne datoteke.", "prompt.toast.attachmentDuplicate.title": "Ova datoteka je već učitana", @@ -577,6 +586,10 @@ export const dict = { "context.usage.cost": "trošak", "context.usage.clickToView": "Kliknite za pregled konteksta", "context.usage.view": "Pogledajte korištenje konteksta", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "engleski", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -741,6 +754,8 @@ export const dict = { "session.messages.loading": "Učitavanje poruka...", "session.messages.jumpToLatest": "Skoči na najnovije", "session.context.addToContext": "Dodajte {{selection}} u kontekst", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Zadaci", "session.todo.collapse": "Kolaps", "session.todo.expand": "Proširiti", diff --git a/packages/app/src/i18n/hu.ts b/packages/app/src/i18n/hu.ts index 664abf8ee4c0..fe51c3dbe73f 100644 --- a/packages/app/src/i18n/hu.ts +++ b/packages/app/src/i18n/hu.ts @@ -382,6 +382,15 @@ export const dict = { "prompt.attachment.remove": "Távolítsa el a mellékletet", "prompt.action.send": "Elküld", "prompt.action.stop": "Leállítás", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Nem támogatott melléklet", "prompt.toast.pasteUnsupported.description": "Ide csak képeket, PDF-eket vagy szöveges fájlokat lehet csatolni.", "prompt.toast.attachmentDuplicate.title": "Ezt a fájlt már feltöltötték", @@ -576,6 +585,10 @@ export const dict = { "context.usage.cost": "Költség", "context.usage.clickToView": "Kattintson a kontextus megtekintéséhez", "context.usage.view": "Tekintse meg a környezethasználatot", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "angol", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -741,6 +754,8 @@ export const dict = { "session.messages.loading": "Üzenetek betöltése...", "session.messages.jumpToLatest": "Ugrás a legújabbra", "session.context.addToContext": "Adja hozzá a {{selection}}-t a kontextushoz", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Feladatok", "session.todo.collapse": "Összeomlás", "session.todo.expand": "Bontsa ki", diff --git a/packages/app/src/i18n/hy.ts b/packages/app/src/i18n/hy.ts index 6eac43b5e6dd..344a99943570 100644 --- a/packages/app/src/i18n/hy.ts +++ b/packages/app/src/i18n/hy.ts @@ -380,6 +380,15 @@ export const dict = { "prompt.attachment.remove": "Հեռացնել հավելվածը", "prompt.action.send": "Ուղարկել", "prompt.action.stop": "Կանգնեցնել", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Չաջակցվող հավելված", "prompt.toast.pasteUnsupported.description": "Այստեղ կարող են կցվել միայն պատկերներ, PDF կամ տեքստային ֆայլեր։", "prompt.toast.attachmentDuplicate.title": "Այս ֆայլն արդեն վերբեռնվել է", @@ -575,6 +584,10 @@ export const dict = { "context.usage.cost": "Արժեքը", "context.usage.clickToView": "Սեղմեք՝ համատեքստը դիտելու համար", "context.usage.view": "Դիտել համատեքստի օգտագործումը", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "Անգլերեն", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -739,6 +752,8 @@ export const dict = { "session.messages.loading": "Բեռնվում է հաղորդագրություններ...", "session.messages.jumpToLatest": "Անցնել վերջին", "session.context.addToContext": "Ավելացնել {{selection}} համատեքստում", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Անելիքներ", "session.todo.collapse": "Ծալել", "session.todo.expand": "Ընդարձակել", diff --git a/packages/app/src/i18n/id.ts b/packages/app/src/i18n/id.ts index 96dc3c7592e4..2e9b58a4cb9b 100644 --- a/packages/app/src/i18n/id.ts +++ b/packages/app/src/i18n/id.ts @@ -405,6 +405,15 @@ export const dict = { "prompt.attachment.remove": "Hapus lampiran", "prompt.action.send": "Kirim", "prompt.action.stop": "Hentikan", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Lampiran tidak didukung", "prompt.toast.pasteUnsupported.description": "Hanya gambar, PDF, atau berkas teks yang dapat dilampirkan di sini.", @@ -616,6 +625,10 @@ export const dict = { "context.usage.cost": "Biaya", "context.usage.clickToView": "Klik untuk melihat konteks", "context.usage.view": "Lihat penggunaan konteks", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", @@ -802,6 +815,8 @@ export const dict = { "session.messages.jumpToLatest": "Lompat ke pesan terbaru", "session.context.addToContext": "Tambahkan {{selection}} ke konteks", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Tugas", "session.todo.collapse": "Ciutkan", "session.todo.expand": "Bentangkan", diff --git a/packages/app/src/i18n/is.ts b/packages/app/src/i18n/is.ts index a45ed9a40cb0..1e1a41cc1109 100644 --- a/packages/app/src/i18n/is.ts +++ b/packages/app/src/i18n/is.ts @@ -382,6 +382,15 @@ export const dict = { "prompt.attachment.remove": "Fjarlægðu viðhengi", "prompt.action.send": "Senda", "prompt.action.stop": "Stöðva", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Óstudd viðhengi", "prompt.toast.pasteUnsupported.description": "Aðeins er hægt að hengja myndir, PDF-skjöl eða textaskrár hér við.", "prompt.toast.attachmentDuplicate.title": "Þessari skrá hefur þegar verið hlaðið upp", @@ -575,6 +584,10 @@ export const dict = { "context.usage.cost": "Kostnaður", "context.usage.clickToView": "Smelltu til að skoða samhengi", "context.usage.view": "Skoða samhengisnotkun", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "ensku", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -737,6 +750,8 @@ export const dict = { "session.messages.loading": "Hleður skilaboð...", "session.messages.jumpToLatest": "Farðu í nýjasta", "session.context.addToContext": "Bættu {{selection}} við samhengi", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Verkefnalisti", "session.todo.collapse": "Hrun", "session.todo.expand": "Stækkaðu", diff --git a/packages/app/src/i18n/it.ts b/packages/app/src/i18n/it.ts index a093e11485a3..9dc39212cb92 100644 --- a/packages/app/src/i18n/it.ts +++ b/packages/app/src/i18n/it.ts @@ -287,6 +287,15 @@ export const dict = { "prompt.attachment.remove": "Rimuovi l'allegato", "prompt.action.send": "Invia", "prompt.action.stop": "Interrompi", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Allegato non supportato", "prompt.toast.pasteUnsupported.description": "Qui è possibile allegare solo immagini, PDF o file di testo.", "prompt.toast.attachmentDuplicate.title": "Questo file è già stato caricato", @@ -485,6 +494,10 @@ export const dict = { "context.usage.cost": "Costo", "context.usage.clickToView": "Fai clic per visualizzare il contesto", "context.usage.view": "Visualizza l'utilizzo del contesto", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -650,6 +663,8 @@ export const dict = { "session.messages.loading": "Caricamento messaggi...", "session.messages.jumpToLatest": "Vai all'ultimo", "session.context.addToContext": "Aggiungi {{selection}} al contesto", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Attività", "session.todo.collapse": "Comprimi", "session.todo.expand": "Espandi", diff --git a/packages/app/src/i18n/ja.ts b/packages/app/src/i18n/ja.ts index b96e8b544b2b..059770c43e91 100644 --- a/packages/app/src/i18n/ja.ts +++ b/packages/app/src/i18n/ja.ts @@ -382,6 +382,15 @@ export const dict = { "prompt.attachment.remove": "添付ファイルを削除", "prompt.action.send": "送信", "prompt.action.stop": "停止", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "サポートされていない添付ファイル", "prompt.toast.attachmentDuplicate.title": "このファイルはすでにアップロードされています", "prompt.toast.pasteUnsupported.description": "画像、PDF、またはテキストファイルのみ添付できます。", @@ -570,6 +579,10 @@ export const dict = { "context.usage.cost": "コスト", "context.usage.clickToView": "クリックしてコンテキストを表示", "context.usage.view": "コンテキスト使用量を表示", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -719,6 +732,8 @@ export const dict = { "session.messages.loading": "メッセージを読み込み中...", "session.messages.jumpToLatest": "最新へジャンプ", "session.context.addToContext": "{{selection}}をコンテキストに追加", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "ToDo", "session.todo.collapse": "折りたたむ", "session.todo.expand": "展開", diff --git a/packages/app/src/i18n/ka.ts b/packages/app/src/i18n/ka.ts index be052930a2ec..74863881d46d 100644 --- a/packages/app/src/i18n/ka.ts +++ b/packages/app/src/i18n/ka.ts @@ -378,6 +378,15 @@ export const dict = { "prompt.attachment.remove": "დანართის წაშლა", "prompt.action.send": "გაგზავნა", "prompt.action.stop": "შეჩერება", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "მხარდაუჭერელი დანართი", "prompt.toast.pasteUnsupported.description": "აქ შეიძლება დაერთოს მხოლოდ სურათები, PDF ან ტექსტური ფაილები.", "prompt.toast.attachmentDuplicate.title": "ეს ფაილი უკვე ატვირთულია", @@ -571,6 +580,10 @@ export const dict = { "context.usage.cost": "ღირებულება", "context.usage.clickToView": "დააწკაპუნეთ კონტექსტის სანახავად", "context.usage.view": "კონტექსტის გამოყენების ნახვა", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "ინგლისური", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -734,6 +747,8 @@ export const dict = { "session.messages.loading": "იტვირთება შეტყობინებები...", "session.messages.jumpToLatest": "გადადით უახლესზე", "session.context.addToContext": "დაამატე {{selection}} კონტექსტში", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "დავალებები", "session.todo.collapse": "ჩაკეცვა", "session.todo.expand": "გაფართოება", diff --git a/packages/app/src/i18n/km.ts b/packages/app/src/i18n/km.ts index 7f1b61fe3667..244a60c85514 100644 --- a/packages/app/src/i18n/km.ts +++ b/packages/app/src/i18n/km.ts @@ -377,6 +377,15 @@ export const dict = { "prompt.attachment.remove": "លុបឯកសារភ្ជាប់ចេញ", "prompt.action.send": "ផ្ញើ", "prompt.action.stop": "ឈប់", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "ឯកសារភ្ជាប់ដែលមិនគាំទ្រ", "prompt.toast.pasteUnsupported.description": "មានតែរូបភាព PDF ឬឯកសារអត្ថបទប៉ុណ្ណោះដែលអាចភ្ជាប់មកទីនេះបាន។", "prompt.toast.attachmentDuplicate.title": "ឯកសារនេះត្រូវបានផ្ទុកឡើងរួចហើយ", @@ -570,6 +579,10 @@ export const dict = { "context.usage.cost": "តម្លៃ", "context.usage.clickToView": "ចុចដើម្បីមើលបរិបទ", "context.usage.view": "មើលការប្រើប្រាស់បរិបទ", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "ភាសាអង់គ្លេស", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -731,6 +744,8 @@ export const dict = { "session.messages.loading": "កំពុងផ្ទុកសារ...", "session.messages.jumpToLatest": "លោតទៅចុងក្រោយបំផុត។", "session.context.addToContext": "បន្ថែម {{selection}} ទៅបរិបទ", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "អ្វីដែលត្រូវធ្វើ", "session.todo.collapse": "ដួលរលំ", "session.todo.expand": "ពង្រីក", diff --git a/packages/app/src/i18n/ko.ts b/packages/app/src/i18n/ko.ts index b96fb4c59471..ecab30ab0292 100644 --- a/packages/app/src/i18n/ko.ts +++ b/packages/app/src/i18n/ko.ts @@ -271,6 +271,15 @@ export const dict = { "prompt.attachment.remove": "첨부 파일 제거", "prompt.action.send": "전송", "prompt.action.stop": "중지", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "지원되지 않는 첨부 파일", "prompt.toast.attachmentDuplicate.title": "이 파일은 이미 업로드되었습니다", "prompt.toast.pasteUnsupported.description": "이미지, PDF 또는 텍스트 파일만 첨부할 수 있습니다.", @@ -373,6 +382,10 @@ export const dict = { "context.usage.cost": "비용", "context.usage.clickToView": "컨텍스트를 보려면 클릭", "context.usage.view": "컨텍스트 사용량 보기", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -495,6 +508,8 @@ export const dict = { "session.messages.loading": "메시지 로드 중...", "session.messages.jumpToLatest": "최신으로 이동", "session.context.addToContext": "컨텍스트에 {{selection}} 추가", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "할 일", "session.todo.collapse": "접기", "session.todo.expand": "펼치기", diff --git a/packages/app/src/i18n/lo.ts b/packages/app/src/i18n/lo.ts index acdc26df08aa..55cacc59edbf 100644 --- a/packages/app/src/i18n/lo.ts +++ b/packages/app/src/i18n/lo.ts @@ -377,6 +377,15 @@ export const dict = { "prompt.attachment.remove": "ເອົາໄຟລ໌ແນບອອກ", "prompt.action.send": "ສົ່ງ", "prompt.action.stop": "ຢຸດ", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "ບໍ່ຮອງຮັບໄຟລ໌ແນບ", "prompt.toast.pasteUnsupported.description": "ພຽງແຕ່ຮູບພາບ, PDFs, ຫຼືໄຟລ໌ຂໍ້ຄວາມສາມາດຕິດຢູ່ນີ້.", "prompt.toast.attachmentDuplicate.title": "ໄຟລ໌ນີ້ໄດ້ຖືກອັບໂຫລດໄປກ່ອນແລ້ວ", @@ -568,6 +577,10 @@ export const dict = { "context.usage.cost": "ຄ່າໃຊ້ຈ່າຍ", "context.usage.clickToView": "ຄລິກເພື່ອເບິ່ງບໍລິບົດ", "context.usage.view": "ເບິ່ງການໃຊ້ງານບໍລິບົດ", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "ພາສາອັງກິດ", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -729,6 +742,8 @@ export const dict = { "session.messages.loading": "ກຳລັງໂຫຼດຂໍ້ຄວາມ...", "session.messages.jumpToLatest": "ຂ້າມໄປຫາຫຼ້າສຸດ", "session.context.addToContext": "ເພີ່ມ {{selection}} ໃສ່ບໍລິບົດ", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "ສິ່ງທີ່ຕ້ອງເຮັດ", "session.todo.collapse": "ຫຍໍ້ລົງ", "session.todo.expand": "ຂະຫຍາຍ", diff --git a/packages/app/src/i18n/lt.ts b/packages/app/src/i18n/lt.ts index ba161eb31879..aafa5b0552fc 100644 --- a/packages/app/src/i18n/lt.ts +++ b/packages/app/src/i18n/lt.ts @@ -383,6 +383,15 @@ export const dict = { "prompt.attachment.remove": "Pašalinti priedą", "prompt.action.send": "Siųsti", "prompt.action.stop": "Stabdyti", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Nepalaikomas priedas", "prompt.toast.pasteUnsupported.description": "Čia galima pridėti tik vaizdus, ​​PDF arba tekstinius failus.", "prompt.toast.attachmentDuplicate.title": "Šis failas jau buvo įkeltas", @@ -577,6 +586,10 @@ export const dict = { "context.usage.cost": "Kaina", "context.usage.clickToView": "Spustelėkite norėdami pamatyti kontekstą", "context.usage.view": "Peržiūrėkite kontekstinį naudojimą", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "anglų kalba", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -741,6 +754,8 @@ export const dict = { "session.messages.loading": "Įkeliami pranešimai...", "session.messages.jumpToLatest": "Pereiti prie naujausio", "session.context.addToContext": "Pridėkite {{selection}} prie konteksto", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Užduotys", "session.todo.collapse": "Sutraukti", "session.todo.expand": "Išskleisti", diff --git a/packages/app/src/i18n/lv.ts b/packages/app/src/i18n/lv.ts index df4c5b2dcd91..ce004eb3fbe6 100644 --- a/packages/app/src/i18n/lv.ts +++ b/packages/app/src/i18n/lv.ts @@ -378,6 +378,15 @@ export const dict = { "prompt.attachment.remove": "Noņemt pielikumu", "prompt.action.send": "Sūtīt", "prompt.action.stop": "Apturēt", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Neatbalstīts pielikums", "prompt.toast.pasteUnsupported.description": "Šeit var pievienot tikai attēlus, PDF vai teksta failus.", "prompt.toast.attachmentDuplicate.title": "Šis fails jau ir augšupielādēts", @@ -571,6 +580,10 @@ export const dict = { "context.usage.cost": "Izmaksas", "context.usage.clickToView": "Noklikšķiniet, lai skatītu kontekstu", "context.usage.view": "Skatīt konteksta izlietojumu", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -736,6 +749,8 @@ export const dict = { "session.messages.loading": "Notiek ziņojumu ielāde...", "session.messages.jumpToLatest": "Pāriet uz jaunāko", "session.context.addToContext": "Pievienot {{selection}} kontekstam", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Darāmais", "session.todo.collapse": "Sakļaut", "session.todo.expand": "Izvērst", diff --git a/packages/app/src/i18n/mk.ts b/packages/app/src/i18n/mk.ts index 01e60baa408b..4b3f79183224 100644 --- a/packages/app/src/i18n/mk.ts +++ b/packages/app/src/i18n/mk.ts @@ -379,6 +379,15 @@ export const dict = { "prompt.attachment.remove": "Отстранете го прилогот", "prompt.action.send": "Испрати", "prompt.action.stop": "Стоп", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Неподдржан прилог", "prompt.toast.pasteUnsupported.description": "Овде може да се прикачат само слики, PDFs или текстуални датотеки.", "prompt.toast.attachmentDuplicate.title": "Оваа датотека е веќе поставена", @@ -574,6 +583,10 @@ export const dict = { "context.usage.cost": "Цена", "context.usage.clickToView": "Кликнете за да го видите контекстот", "context.usage.view": "Погледнете ја употребата на контекстот", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "Англиски јазик", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -738,6 +751,8 @@ export const dict = { "session.messages.loading": "Се вчитуваат пораки...", "session.messages.jumpToLatest": "Скокни до најновото", "session.context.addToContext": "Додајте {{selection}} во контекст", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Тодос", "session.todo.collapse": "Колапс", "session.todo.expand": "Прошири", diff --git a/packages/app/src/i18n/mn.ts b/packages/app/src/i18n/mn.ts index 41c4fa085d1a..30979564d218 100644 --- a/packages/app/src/i18n/mn.ts +++ b/packages/app/src/i18n/mn.ts @@ -381,6 +381,15 @@ export const dict = { "prompt.attachment.remove": "Хавсралтыг устгана уу", "prompt.action.send": "Илгээх", "prompt.action.stop": "Зогс", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Дэмжигдээгүй хавсралт", "prompt.toast.pasteUnsupported.description": "Энд зөвхөн зураг, PDFс, эсвэл текст файлыг хавсаргах боломжтой.", "prompt.toast.attachmentDuplicate.title": "Энэ файлыг аль хэдийн байршуулсан байна", @@ -575,6 +584,10 @@ export const dict = { "context.usage.cost": "Зардал", "context.usage.clickToView": "Контекстийг харахын тулд товшино уу", "context.usage.view": "Контекст ашиглалтыг харах", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "Англи", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -740,6 +753,8 @@ export const dict = { "session.messages.loading": "Мессежүүдийг ачаалж байна...", "session.messages.jumpToLatest": "Сүүлийнх рүү шилжих", "session.context.addToContext": "Контекст {{selection}} нэмнэ үү", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Тодос", "session.todo.collapse": "Нурах", "session.todo.expand": "Өргөтгөх", diff --git a/packages/app/src/i18n/ms.ts b/packages/app/src/i18n/ms.ts index 2c3783d43b7d..d0ae1f4622a6 100644 --- a/packages/app/src/i18n/ms.ts +++ b/packages/app/src/i18n/ms.ts @@ -378,6 +378,15 @@ export const dict = { "prompt.attachment.remove": "Buang lampiran", "prompt.action.send": "Hantar", "prompt.action.stop": "Henti", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Lampiran tidak disokong", "prompt.toast.pasteUnsupported.description": "Hanya imej, PDF, atau fail teks boleh dilampirkan di sini.", "prompt.toast.attachmentDuplicate.title": "Fail ini telah dimuat naik", @@ -571,6 +580,10 @@ export const dict = { "context.usage.cost": "Kos", "context.usage.clickToView": "Klik untuk lihat konteks", "context.usage.view": "Lihat penggunaan konteks", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -732,6 +745,8 @@ export const dict = { "session.messages.loading": "Memuat mesej...", "session.messages.jumpToLatest": "Lompat ke terkini", "session.context.addToContext": "Tambah {{selection}} ke konteks", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Senarai Tugasan", "session.todo.collapse": "Runtuhkan", "session.todo.expand": "Kembangkan", diff --git a/packages/app/src/i18n/my.ts b/packages/app/src/i18n/my.ts index 6046f337ff06..68575b95579a 100644 --- a/packages/app/src/i18n/my.ts +++ b/packages/app/src/i18n/my.ts @@ -381,6 +381,15 @@ export const dict = { "prompt.attachment.remove": "ပူးတွဲပါဖိုင်ကို ဖယ်ရှားပါ။", "prompt.action.send": "ပို့ပါ။", "prompt.action.stop": "ရပ်ပါ။", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "ပူးတွဲပါဖိုင်ကို ပံ့ပိုးမထားပါ။", "prompt.toast.pasteUnsupported.description": "ရုပ်ပုံများ၊ PDF များ သို့မဟုတ် စာသားဖိုင်များကိုသာ ဤနေရာတွင် ပူးတွဲနိုင်ပါသည်။", @@ -577,6 +586,10 @@ export const dict = { "context.usage.cost": "ကုန်ကျစရိတ်", "context.usage.clickToView": "ဆက်စပ်အကြောင်းအရာကို ကြည့်ရန် နှိပ်ပါ။", "context.usage.view": "ဆက်စပ်အကြောင်းအရာ အသုံးပြုမှုကို ကြည့်ပါ။", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "အင်္ဂလိပ်", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -742,6 +755,8 @@ export const dict = { "session.messages.loading": "မက်ဆေ့ချ်များကို ဖွင့်နေသည်...", "session.messages.jumpToLatest": "နောက်ဆုံးသို့ ခုန်ပါ။", "session.context.addToContext": "{{selection}} ကို ဆက်စပ်အကြောင်းအရာထဲ ထည့်ပါ။", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "လုပ်စရာများ", "session.todo.collapse": "ခေါက်သိမ်းပါ။", "session.todo.expand": "ချဲ့ပါ။", diff --git a/packages/app/src/i18n/ne.ts b/packages/app/src/i18n/ne.ts index cc60bff9f400..a7fd9413e947 100644 --- a/packages/app/src/i18n/ne.ts +++ b/packages/app/src/i18n/ne.ts @@ -379,6 +379,15 @@ export const dict: Record = { "prompt.attachment.remove": "संलग्नक हटाउनुहोस्", "prompt.action.send": "पठाउनुहोस्", "prompt.action.stop": "रोक्नुहोस्", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "असमर्थित संलग्नक", "prompt.toast.pasteUnsupported.description": "केवल छविहरू, PDF हरू, वा पाठ फाइलहरू यहाँ संलग्न गर्न सकिन्छ।", "prompt.toast.attachmentDuplicate.title": "यो फाइल पहिले नै अपलोड गरिएको छ", @@ -572,6 +581,10 @@ export const dict: Record = { "context.usage.cost": "लागत", "context.usage.clickToView": "सन्दर्भ हेर्न क्लिक गर्नुहोस्", "context.usage.view": "सन्दर्भ प्रयोग हेर्नुहोस्", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -736,6 +749,8 @@ export const dict: Record = { "session.messages.loading": "सन्देशहरू लोड गर्दै...", "session.messages.jumpToLatest": "नवीनतममा जानुहोस्", "session.context.addToContext": "सन्दर्भमा {{selection}} थप्नुहोस्", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "गर्नुपर्ने कामहरू", "session.todo.collapse": "संक्षिप्त गर्नुहोस्", "session.todo.expand": "विस्तार गर्नुहोस्", diff --git a/packages/app/src/i18n/nl.ts b/packages/app/src/i18n/nl.ts index 6fb1dc09f24b..894ac02de7f7 100644 --- a/packages/app/src/i18n/nl.ts +++ b/packages/app/src/i18n/nl.ts @@ -378,6 +378,15 @@ export const dict = { "prompt.attachment.remove": "Bijlage verwijderen", "prompt.action.send": "Verzenden", "prompt.action.stop": "Stop", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Niet-ondersteunde bijlage", "prompt.toast.pasteUnsupported.description": "Hier kunnen alleen afbeeldingen, pdf's of tekstbestanden worden bijgevoegd.", @@ -577,6 +586,10 @@ export const dict = { "context.usage.cost": "Kosten", "context.usage.clickToView": "Klik om de context te bekijken", "context.usage.view": "Bekijk contextgebruik", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "Engels", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -742,6 +755,8 @@ export const dict = { "session.messages.loading": "Berichten laden...", "session.messages.jumpToLatest": "Ga naar de laatste", "session.context.addToContext": "Voeg {{selection}} toe aan de context", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Taken", "session.todo.collapse": "Samenvouwen", "session.todo.expand": "Uitvouwen", diff --git a/packages/app/src/i18n/no.ts b/packages/app/src/i18n/no.ts index 11958029dc38..0d26ad22e988 100644 --- a/packages/app/src/i18n/no.ts +++ b/packages/app/src/i18n/no.ts @@ -395,6 +395,15 @@ export const dict = { "prompt.attachment.remove": "Fjern vedlegg", "prompt.action.send": "Send", "prompt.action.stop": "Stopp", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Ikke støttet vedlegg", "prompt.toast.attachmentDuplicate.title": "Denne filen er allerede lastet opp", @@ -511,6 +520,10 @@ export const dict = { "context.usage.cost": "Kostnad", "context.usage.clickToView": "Klikk for å se kontekst", "context.usage.view": "Se kontekstforbruk", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", @@ -658,6 +671,8 @@ export const dict = { "session.messages.jumpToLatest": "Hopp til nyeste", "session.context.addToContext": "Legg til {{selection}} i kontekst", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Oppgaver", "session.todo.collapse": "Skjul", "session.todo.expand": "Utvid", diff --git a/packages/app/src/i18n/pa.ts b/packages/app/src/i18n/pa.ts index 6298581c0aab..189b3e717b46 100644 --- a/packages/app/src/i18n/pa.ts +++ b/packages/app/src/i18n/pa.ts @@ -384,6 +384,15 @@ export const dict = { "prompt.attachment.remove": "منسلکہ ہٹا دیو", "prompt.action.send": "گھلو", "prompt.action.stop": "روکو", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "غیر تعاون یافتہ منسلکہ", "prompt.toast.pasteUnsupported.description": "ایتھے صرف تصویراں، پی ڈی ایف، یا ٹیکسٹ فائلاں منسلک کیتیاں جا سکدیاں نیں۔", @@ -581,6 +590,10 @@ export const dict = { "context.usage.cost": "لاگت", "context.usage.clickToView": "سیاق و سباق ویکھن لئی کلک کرو", "context.usage.view": "سیاق و سباق دا استعمال ویکھو", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "انگریجی", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -743,6 +756,8 @@ export const dict = { "session.messages.loading": "سنیہے لوڈ ہو رۓ...", "session.messages.jumpToLatest": "تازہ ترین تے جاؤ", "session.context.addToContext": "سیاق و سباق چ {{selection}} شامل کرو", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "ٹوڈوس", "session.todo.collapse": "سمیٹو", "session.todo.expand": "کھولو", diff --git a/packages/app/src/i18n/pl.ts b/packages/app/src/i18n/pl.ts index 9b3c927498d8..bcce6b7c0bb4 100644 --- a/packages/app/src/i18n/pl.ts +++ b/packages/app/src/i18n/pl.ts @@ -385,6 +385,15 @@ export const dict = { "prompt.attachment.remove": "Usuń załącznik", "prompt.action.send": "Wyślij", "prompt.action.stop": "Zatrzymaj", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Nieobsługiwany załącznik", "prompt.toast.attachmentDuplicate.title": "Ten plik został już przesłany", "prompt.toast.pasteUnsupported.description": "Można tutaj załączać tylko obrazy, pliki PDF lub pliki tekstowe.", @@ -572,6 +581,10 @@ export const dict = { "context.usage.cost": "Koszt", "context.usage.clickToView": "Kliknij, aby zobaczyć kontekst", "context.usage.view": "Pokaż użycie kontekstu", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -723,6 +736,8 @@ export const dict = { "session.messages.loading": "Ładowanie wiadomości...", "session.messages.jumpToLatest": "Przejdź do najnowszych", "session.context.addToContext": "Dodaj {{selection}} do kontekstu", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Zadania", "session.todo.collapse": "Zwiń", "session.todo.expand": "Rozwiń", diff --git a/packages/app/src/i18n/ro.ts b/packages/app/src/i18n/ro.ts index c84f9a4ee76e..1766cc21fa75 100644 --- a/packages/app/src/i18n/ro.ts +++ b/packages/app/src/i18n/ro.ts @@ -377,6 +377,15 @@ export const dict = { "prompt.attachment.remove": "Elimină atașamentul", "prompt.action.send": "Trimite", "prompt.action.stop": "Oprește", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Atașament neacceptat", "prompt.toast.pasteUnsupported.description": "Poți atașa doar imagini, PDF-uri sau fișiere text aici.", "prompt.toast.attachmentDuplicate.title": "Acest fișier a fost deja încărcat", @@ -571,6 +580,10 @@ export const dict = { "context.usage.cost": "Cost", "context.usage.clickToView": "Apasă pentru a vedea contextul", "context.usage.view": "Vezi utilizarea contextului", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -736,6 +749,8 @@ export const dict = { "session.messages.loading": "Se încarcă mesajele...", "session.messages.jumpToLatest": "Sari la cele mai recente", "session.context.addToContext": "Adaugă {{selection}} la context", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Sarcini", "session.todo.collapse": "Restrânge", "session.todo.expand": "Extinde", diff --git a/packages/app/src/i18n/ru.ts b/packages/app/src/i18n/ru.ts index cf4fa8d8f4ca..90e02f7b8ea9 100644 --- a/packages/app/src/i18n/ru.ts +++ b/packages/app/src/i18n/ru.ts @@ -403,6 +403,15 @@ export const dict = { "prompt.attachment.remove": "Удалить вложение", "prompt.action.send": "Отправить", "prompt.action.stop": "Остановить", + "prompt.action.voiceInput": "Голосовой ввод", + "prompt.action.voiceStop": "Остановить голосовой ввод", + "prompt.voice.error.notAllowed": "Доступ к микрофону запрещён", + "prompt.voice.error.noSpeech": "Речь не распознана", + "prompt.voice.error.audioCapture": "Не удалось получить доступ к микрофону", + "prompt.voice.error.network": "Распознавание речи недоступно", + "prompt.voice.error.serviceNotAllowed": "Сервис распознавания речи недоступен", + "prompt.voice.error.languageNotSupported": "Распознавание речи не поддерживает этот язык", + "prompt.voice.error.generic": "Ошибка распознавания речи", "prompt.toast.pasteUnsupported.title": "Неподдерживаемое вложение", "prompt.toast.attachmentDuplicate.title": "Этот файл уже загружен", @@ -605,6 +614,10 @@ export const dict = { "context.usage.cost": "Стоимость", "context.usage.clickToView": "Нажмите для просмотра контекста", "context.usage.view": "Показать использование контекста", + "context.budget.title": "Бюджет сессии", + "context.budget.unset": "Бюджет не задан", + "context.budget.edit": "Изменить бюджет", + "context.budget.clear": "Сбросить", "language.en": "English", "language.zh": "简体中文", @@ -777,6 +790,8 @@ export const dict = { "session.messages.jumpToLatest": "Перейти к последнему", "session.context.addToContext": "Добавить {{selection}} в контекст", + "session.budget.exceeded.title": "Бюджет сессии исчерпан", + "session.budget.exceeded.description": "Сессия достигла лимита бюджета. Увеличьте или сбросьте бюджет, чтобы продолжить.", "session.todo.title": "Задачи", "session.todo.collapse": "Свернуть", "session.todo.expand": "Развернуть", diff --git a/packages/app/src/i18n/si.ts b/packages/app/src/i18n/si.ts index 00ca188b1581..0b9d59193ce6 100644 --- a/packages/app/src/i18n/si.ts +++ b/packages/app/src/i18n/si.ts @@ -377,6 +377,15 @@ export const dict: Record = { "prompt.attachment.remove": "ඇමුණුම ඉවත් කරන්න", "prompt.action.send": "යවන්න", "prompt.action.stop": "නවත්වන්න", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "සහාය නොදක්වන ඇමුණුම", "prompt.toast.pasteUnsupported.description": "පින්තූර, PDF හෝ පෙළ ගොනු පමණක් මෙහි ඇමිණිය හැක.", "prompt.toast.attachmentDuplicate.title": "මෙම ගොනුව දැනටමත් උඩුගත කර ඇත", @@ -570,6 +579,10 @@ export const dict: Record = { "context.usage.cost": "පිරිවැය", "context.usage.clickToView": "සන්දර්භය බැලීමට ක්ලික් කරන්න", "context.usage.view": "සන්දර්භය භාවිතය බලන්න", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -731,6 +744,8 @@ export const dict: Record = { "session.messages.loading": "පණිවිඩ පූරණය කරමින්...", "session.messages.jumpToLatest": "නවතම වෙත පනින්න", "session.context.addToContext": "සන්දර්භය වෙත {{selection}} එක් කරන්න", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "ටෝඩෝස්", "session.todo.collapse": "හකුළන්න", "session.todo.expand": "පුළුල් කරන්න", diff --git a/packages/app/src/i18n/sk.ts b/packages/app/src/i18n/sk.ts index 9992e06cc4af..178f7604813a 100644 --- a/packages/app/src/i18n/sk.ts +++ b/packages/app/src/i18n/sk.ts @@ -377,6 +377,15 @@ export const dict = { "prompt.attachment.remove": "Odstrániť prílohu", "prompt.action.send": "Odoslať", "prompt.action.stop": "Zastaviť", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Nepodporovaná príloha", "prompt.toast.pasteUnsupported.description": "Pripojiť možno len obrázky, PDF alebo textové súbory.", "prompt.toast.attachmentDuplicate.title": "Tento súbor už bol nahraný", @@ -570,6 +579,10 @@ export const dict = { "context.usage.cost": "Náklady", "context.usage.clickToView": "Kliknite na zobrazenie kontextu", "context.usage.view": "Zobraziť využitie kontextu", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -732,6 +745,8 @@ export const dict = { "session.messages.loading": "Načítavam správy...", "session.messages.jumpToLatest": "Prejsť na najnovšie", "session.context.addToContext": "Pridať {{selection}} do kontextu", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Úlohy", "session.todo.collapse": "Zbaliť", "session.todo.expand": "Rozbaliť", diff --git a/packages/app/src/i18n/sl.ts b/packages/app/src/i18n/sl.ts index 3c23fcd7f708..77afb13641e5 100644 --- a/packages/app/src/i18n/sl.ts +++ b/packages/app/src/i18n/sl.ts @@ -377,6 +377,15 @@ export const dict = { "prompt.attachment.remove": "Odstrani prilogo", "prompt.action.send": "Pošlji", "prompt.action.stop": "Ustavi", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Nepodprta priloga", "prompt.toast.pasteUnsupported.description": "Sem lahko priložite samo slike, datoteke PDF ali besedilne datoteke.", "prompt.toast.attachmentDuplicate.title": "Ta datoteka je že naložena", @@ -572,6 +581,10 @@ export const dict = { "context.usage.cost": "Stroški", "context.usage.clickToView": "Kliknite za ogled konteksta", "context.usage.view": "Oglejte si uporabo konteksta", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "angleščina", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -734,6 +747,8 @@ export const dict = { "session.messages.loading": "Nalaganje sporočil ...", "session.messages.jumpToLatest": "Skoči na najnovejšo", "session.context.addToContext": "Dodajte {{selection}} v kontekst", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Opravila", "session.todo.collapse": "Strni", "session.todo.expand": "Razširi", diff --git a/packages/app/src/i18n/sq.ts b/packages/app/src/i18n/sq.ts index ca94793ab0e6..8471bec46268 100644 --- a/packages/app/src/i18n/sq.ts +++ b/packages/app/src/i18n/sq.ts @@ -378,6 +378,15 @@ export const dict = { "prompt.attachment.remove": "Hiq shtojcën", "prompt.action.send": "Dërgo", "prompt.action.stop": "Ndalo", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Bashkëngjitje e pambështetur", "prompt.toast.pasteUnsupported.description": "Këtu mund të bashkëngjiten vetëm imazhe, skedarë PDF ose skedarë teksti.", @@ -573,6 +582,10 @@ export const dict = { "context.usage.cost": "Kostoja", "context.usage.clickToView": "Klikoni për të parë kontekstin", "context.usage.view": "Shikoni përdorimin e kontekstit", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "anglisht", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -737,6 +750,8 @@ export const dict = { "session.messages.loading": "Po ngarkon mesazhet...", "session.messages.jumpToLatest": "Kalo tek e fundit", "session.context.addToContext": "Shtoni {{selection}} në kontekst", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Detyrat", "session.todo.collapse": "Kolapsi", "session.todo.expand": "Zgjerojeni", diff --git a/packages/app/src/i18n/sr.ts b/packages/app/src/i18n/sr.ts index f059160087d8..0da6ee184f61 100644 --- a/packages/app/src/i18n/sr.ts +++ b/packages/app/src/i18n/sr.ts @@ -378,6 +378,15 @@ export const dict = { "prompt.attachment.remove": "Уклоните прилог", "prompt.action.send": "Пошаљи", "prompt.action.stop": "Стоп", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Неподржани прилог", "prompt.toast.pasteUnsupported.description": "Овде се могу приложити само слике, PDFс или текстуалне датотеке.", "prompt.toast.attachmentDuplicate.title": "Ова датотека је већ отпремљена", @@ -572,6 +581,10 @@ export const dict = { "context.usage.cost": "Цена", "context.usage.clickToView": "Кликните да бисте видели контекст", "context.usage.view": "Погледајте употребу контекста", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "енглески", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -735,6 +748,8 @@ export const dict = { "session.messages.loading": "Учитавање порука...", "session.messages.jumpToLatest": "Скочи на најновије", "session.context.addToContext": "Додајте {{selection}} у контекст", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Тодос", "session.todo.collapse": "Скупи", "session.todo.expand": "Прошири", diff --git a/packages/app/src/i18n/sv.ts b/packages/app/src/i18n/sv.ts index 39b363c6b657..4259967dacb2 100644 --- a/packages/app/src/i18n/sv.ts +++ b/packages/app/src/i18n/sv.ts @@ -379,6 +379,15 @@ export const dict = { "prompt.attachment.remove": "Ta bort bilagan", "prompt.action.send": "Skicka", "prompt.action.stop": "Stoppa", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Bilaga som inte stöds", "prompt.toast.pasteUnsupported.description": "Endast bilder, PDF-filer eller textfiler kan bifogas här.", "prompt.toast.attachmentDuplicate.title": "Den här filen har redan laddats upp", @@ -576,6 +585,10 @@ export const dict = { "context.usage.cost": "Kostnad", "context.usage.clickToView": "Klicka för att visa kontexten", "context.usage.view": "Visa kontextanvändning", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -739,6 +752,8 @@ export const dict = { "session.messages.loading": "Läser in meddelanden...", "session.messages.jumpToLatest": "Hoppa till senaste", "session.context.addToContext": "Lägg till {{selection}} i kontexten", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Att göra", "session.todo.collapse": "Fäll ihop", "session.todo.expand": "Fäll ut", diff --git a/packages/app/src/i18n/tg.ts b/packages/app/src/i18n/tg.ts index ffa08409f684..f8e4b782ac7b 100644 --- a/packages/app/src/i18n/tg.ts +++ b/packages/app/src/i18n/tg.ts @@ -379,6 +379,15 @@ export const dict = { "prompt.attachment.remove": "Замимаро хориҷ кунед", "prompt.action.send": "Фиристодан", "prompt.action.stop": "Ист", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Замимаи дастгирӣнашаванда", "prompt.toast.pasteUnsupported.description": "Дар ин ҷо танҳо тасвирҳо, PDFс ё файлҳои матнӣ замима кардан мумкин аст.", @@ -574,6 +583,10 @@ export const dict = { "context.usage.cost": "Арзиш", "context.usage.clickToView": "Барои дидани контекст клик кунед", "context.usage.view": "Истифодаи контекстро бинед", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "англисӣ", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -737,6 +750,8 @@ export const dict = { "session.messages.loading": "Паёмҳо бор карда мешаванд...", "session.messages.jumpToLatest": "Ба охирин гузаред", "session.context.addToContext": "Ба контекст {{selection}} илова кунед", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Тодос", "session.todo.collapse": "Фурӯпошӣ", "session.todo.expand": "Васеъ кунед", diff --git a/packages/app/src/i18n/th.ts b/packages/app/src/i18n/th.ts index 1a0e9db72b1b..a4cecf9e2662 100644 --- a/packages/app/src/i18n/th.ts +++ b/packages/app/src/i18n/th.ts @@ -402,6 +402,15 @@ export const dict = { "prompt.attachment.remove": "เอาไฟล์แนบออก", "prompt.action.send": "ส่ง", "prompt.action.stop": "หยุด", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "ไฟล์แนบที่ไม่รองรับ", "prompt.toast.attachmentDuplicate.title": "ไฟล์นี้ถูกอัปโหลดแล้ว", @@ -601,6 +610,10 @@ export const dict = { "context.usage.cost": "ต้นทุน", "context.usage.clickToView": "คลิกเพื่อดูบริบท", "context.usage.view": "ดูการใช้บริบท", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", @@ -771,6 +784,8 @@ export const dict = { "session.messages.jumpToLatest": "ไปที่ล่าสุด", "session.context.addToContext": "เพิ่ม {{selection}} ไปยังบริบท", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "สิ่งที่ต้องทำ", "session.todo.collapse": "ย่อ", "session.todo.expand": "ขยาย", diff --git a/packages/app/src/i18n/tk.ts b/packages/app/src/i18n/tk.ts index 2b144c6a26c7..5e6d5f1c6a3e 100644 --- a/packages/app/src/i18n/tk.ts +++ b/packages/app/src/i18n/tk.ts @@ -378,6 +378,15 @@ export const dict = { "prompt.attachment.remove": "Goşundyny aýyryň", "prompt.action.send": "Iber", "prompt.action.stop": "Dur", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Goldaw berilmeýän goşundy", "prompt.toast.pasteUnsupported.description": "Bu ýerde diňe suratlar, PDF ýa-da tekst faýllary birikdirilip bilner.", "prompt.toast.attachmentDuplicate.title": "Bu faýl eýýäm ýüklendi", @@ -572,6 +581,10 @@ export const dict = { "context.usage.cost": "Bahasy", "context.usage.clickToView": "Konteksti görmek üçin basyň", "context.usage.view": "Kontekstiň ulanylyşyny görüň", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "Iňlis", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -734,6 +747,8 @@ export const dict = { "session.messages.loading": "Habarlary ýüklemek ...", "session.messages.jumpToLatest": "Iň soňkusyna geçiň", "session.context.addToContext": "Mazmuna {{selection}} goşuň", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Edilmeli işler", "session.todo.collapse": "Apseykylmak", "session.todo.expand": "Giňeltmek", diff --git a/packages/app/src/i18n/tr.ts b/packages/app/src/i18n/tr.ts index 85623036e429..f86c734f0a18 100644 --- a/packages/app/src/i18n/tr.ts +++ b/packages/app/src/i18n/tr.ts @@ -409,6 +409,15 @@ export const dict = { "prompt.attachment.remove": "Eki kaldır", "prompt.action.send": "Gönder", "prompt.action.stop": "Durdur", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Desteklenmeyen ek", "prompt.toast.attachmentDuplicate.title": "Bu dosya zaten yüklendi", @@ -609,6 +618,10 @@ export const dict = { "context.usage.cost": "Maliyet", "context.usage.clickToView": "Bağlamı görüntüle", "context.usage.view": "Bağlam kullanımını görüntüle", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", @@ -784,6 +797,8 @@ export const dict = { "session.messages.jumpToLatest": "En sona atla", "session.context.addToContext": "{{selection}} bağlama ekle", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Görevler", "session.todo.collapse": "Daralt", "session.todo.expand": "Genişlet", diff --git a/packages/app/src/i18n/uk.ts b/packages/app/src/i18n/uk.ts index 54732a87b7eb..561a13c8476d 100644 --- a/packages/app/src/i18n/uk.ts +++ b/packages/app/src/i18n/uk.ts @@ -406,6 +406,15 @@ export const dict = { "prompt.attachment.remove": "Видалити вкладення", "prompt.action.send": "Надіслати", "prompt.action.stop": "Зупинити", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Непідтримуване вкладення", "prompt.toast.attachmentDuplicate.title": "Цей файл уже завантажено", @@ -619,6 +628,10 @@ export const dict = { "context.usage.cost": "Вартість", "context.usage.clickToView": "Натисніть, щоб переглянути контекст", "context.usage.view": "Переглянути використання контексту", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", @@ -806,6 +819,8 @@ export const dict = { "session.messages.jumpToLatest": "Перейти до останніх", "session.context.addToContext": "Додати {{selection}} до контексту", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Завдання", "session.todo.collapse": "Згорнути", "session.todo.expand": "Розгорнути", diff --git a/packages/app/src/i18n/ur.ts b/packages/app/src/i18n/ur.ts index 2ab69e7aec71..b136f5df5e74 100644 --- a/packages/app/src/i18n/ur.ts +++ b/packages/app/src/i18n/ur.ts @@ -387,6 +387,15 @@ export const dict = { "prompt.attachment.remove": "منسلکہ کو ہٹا دیں۔", "prompt.action.send": "بھیجیں۔", "prompt.action.stop": "روکیں", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "غیر تعاون یافتہ منسلکہ", "prompt.toast.pasteUnsupported.description": "یہاں صرف تصاویر، PDFs، یا ٹیکسٹ فائلیں منسلک کی جا سکتی ہیں۔", "prompt.toast.attachmentDuplicate.title": "یہ فائل پہلے ہی اپ لوڈ ہو چکی ہے", @@ -583,6 +592,10 @@ export const dict = { "context.usage.cost": "لاگت", "context.usage.clickToView": "سیاق و سباق دیکھنے کے لیے کلک کریں۔", "context.usage.view": "سیاق و سباق کا استعمال دیکھیں", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -746,6 +759,8 @@ export const dict = { "session.messages.loading": "پیغامات لوڈ ہو رہے ہیں...", "session.messages.jumpToLatest": "تازہ ترین پر جائیں", "session.context.addToContext": "{{selection}} کو سیاق و سباق میں شامل کریں۔", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "زیر التوا کام", "session.todo.collapse": "سمیٹیں", "session.todo.expand": "پھیلائیں۔", diff --git a/packages/app/src/i18n/uz.ts b/packages/app/src/i18n/uz.ts index 8cb7097fc07a..decb2ecb9939 100644 --- a/packages/app/src/i18n/uz.ts +++ b/packages/app/src/i18n/uz.ts @@ -380,6 +380,15 @@ export const dict = { "prompt.attachment.remove": "Qo'shimchani olib tashlang", "prompt.action.send": "Yuborish", "prompt.action.stop": "To'xtang", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Qoʻllab-quvvatlanmaydigan biriktirma", "prompt.toast.pasteUnsupported.description": "Bu yerda faqat rasmlar, PDF yoki matnli fayllar biriktirilishi mumkin.", "prompt.toast.attachmentDuplicate.title": "Bu fayl allaqachon yuklangan", @@ -574,6 +583,10 @@ export const dict = { "context.usage.cost": "Narxi", "context.usage.clickToView": "Kontekstni ko'rish uchun bosing", "context.usage.view": "Kontekstdan foydalanishni ko'rish", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "Ingliz", "language.zh": "shīngīshīn", "language.zht": "línìnìnì", @@ -739,6 +752,8 @@ export const dict = { "session.messages.loading": "Xabarlar yuklanmoqda...", "session.messages.jumpToLatest": "Eng oxirgisiga oʻtish", "session.context.addToContext": "Kontekstga {{selection}} qo'shing", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "Vazifalar", "session.todo.collapse": "Yiqilish", "session.todo.expand": "Kengaytirish", diff --git a/packages/app/src/i18n/vi.ts b/packages/app/src/i18n/vi.ts index 06fda4ce707c..ce3906f8b515 100644 --- a/packages/app/src/i18n/vi.ts +++ b/packages/app/src/i18n/vi.ts @@ -385,6 +385,15 @@ export const dict = { "prompt.attachment.remove": "Xóa tệp đính kèm", "prompt.action.send": "Gửi", "prompt.action.stop": "Dừng", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "Tệp đính kèm không được hỗ trợ", "prompt.toast.pasteUnsupported.description": "Chỉ có thể đính kèm hình ảnh, tệp PDF hoặc tệp văn bản ở đây.", "prompt.toast.attachmentDuplicate.title": "Tệp này đã được tải lên", @@ -581,6 +590,10 @@ export const dict = { "context.usage.cost": "Chi phí", "context.usage.clickToView": "Nhấn vào đây để xem ngữ cảnh", "context.usage.view": "Xem cách sử dụng ngữ cảnh", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", "language.zht": "繁體中文", @@ -744,6 +757,8 @@ export const dict = { "session.messages.loading": "Đang tải tin nhắn...", "session.messages.jumpToLatest": "Chuyển đến mới nhất", "session.context.addToContext": "Thêm {{selection}} vào ngữ cảnh", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "việc cần làm", "session.todo.collapse": "Thu gọn", "session.todo.expand": "Mở rộng", diff --git a/packages/app/src/i18n/zh.ts b/packages/app/src/i18n/zh.ts index b0ba0453479b..7e65ec214129 100644 --- a/packages/app/src/i18n/zh.ts +++ b/packages/app/src/i18n/zh.ts @@ -422,6 +422,15 @@ export const dict = { "prompt.attachment.remove": "移除附件", "prompt.action.send": "发送", "prompt.action.stop": "停止", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "不支持的附件", "prompt.toast.attachmentDuplicate.title": "此文件已上传", "prompt.toast.pasteUnsupported.description": "此处仅能附加图片、PDF 或文本文件。", @@ -614,6 +623,10 @@ export const dict = { "context.usage.cost": "成本", "context.usage.clickToView": "点击查看上下文", "context.usage.view": "查看上下文用量", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", @@ -769,6 +782,8 @@ export const dict = { "session.messages.loading": "正在加载消息...", "session.messages.jumpToLatest": "跳转到最新", "session.context.addToContext": "将 {{selection}} 添加到上下文", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "待办事项", "session.todo.collapse": "折叠", "session.todo.expand": "展开", diff --git a/packages/app/src/i18n/zht.ts b/packages/app/src/i18n/zht.ts index 6cc3d555289d..f30f779ed331 100644 --- a/packages/app/src/i18n/zht.ts +++ b/packages/app/src/i18n/zht.ts @@ -402,6 +402,15 @@ export const dict = { "prompt.attachment.remove": "移除附件", "prompt.action.send": "傳送", "prompt.action.stop": "停止", + "prompt.action.voiceInput": "Voice input", + "prompt.action.voiceStop": "Stop voice input", + "prompt.voice.error.notAllowed": "Microphone access denied", + "prompt.voice.error.noSpeech": "No speech detected", + "prompt.voice.error.audioCapture": "Could not access the microphone", + "prompt.voice.error.network": "Speech recognition unavailable", + "prompt.voice.error.serviceNotAllowed": "Speech recognition service unavailable", + "prompt.voice.error.languageNotSupported": "Speech recognition does not support this language", + "prompt.voice.error.generic": "Speech recognition failed", "prompt.toast.pasteUnsupported.title": "不支援的附件", "prompt.toast.attachmentDuplicate.title": "此檔案已上傳", @@ -598,6 +607,10 @@ export const dict = { "context.usage.cost": "成本", "context.usage.clickToView": "按一下以檢視上下文", "context.usage.view": "檢視上下文用量", + "context.budget.title": "Session budget", + "context.budget.unset": "No budget set", + "context.budget.edit": "Edit budget", + "context.budget.clear": "Clear", "language.en": "English", "language.zh": "简体中文", @@ -765,6 +778,8 @@ export const dict = { "session.messages.jumpToLatest": "跳到最新", "session.context.addToContext": "將 {{selection}} 新增到上下文", + "session.budget.exceeded.title": "Session budget reached", + "session.budget.exceeded.description": "The session reached its budget. Increase or clear the budget to continue.", "session.todo.title": "待辦事項", "session.todo.collapse": "收合", "session.todo.expand": "展開", diff --git a/packages/app/src/pages/session.tsx b/packages/app/src/pages/session.tsx index 2e647e0f4789..a061e5854b17 100644 --- a/packages/app/src/pages/session.tsx +++ b/packages/app/src/pages/session.tsx @@ -111,6 +111,8 @@ const emptyFollowups: FollowupItem[] = [] type ChangeMode = "git" | "branch" | "turn" type VcsMode = "git" | "branch" +const budgetNotified = new Set() + const sessionViewState = () => ({ messageId: undefined as string | undefined, mobileTab: "session" as "session" | "changes", @@ -532,6 +534,24 @@ export default function Page() { } const info = createMemo(() => (params.id ? sync().session.get(params.id) : undefined)) + + createEffect(() => { + const id = params.id + if (!id) return + const sessionInfo = info() + const limit = sessionInfo?.budget + if (!limit) return + const cost = sessionInfo?.cost + if (typeof cost !== "number" || cost < limit) return + if (sync().data.session_working(id)) return + if (budgetNotified.has(id)) return + budgetNotified.add(id) + showToast({ + variant: "error", + title: language.t("session.budget.exceeded.title"), + description: language.t("session.budget.exceeded.description"), + }) + }) const isChildSession = createMemo(() => !!info()?.parentID) const canReview = createMemo(() => !!sync().project) const reviewTab = createMemo(() => isDesktop()) diff --git a/packages/desktop/src/main/windows.ts b/packages/desktop/src/main/windows.ts index 6e7b8f3ff9b5..04bbbe4e0963 100644 --- a/packages/desktop/src/main/windows.ts +++ b/packages/desktop/src/main/windows.ts @@ -23,7 +23,8 @@ const rendererProtocol = "oc" const rendererHost = "renderer" const clipboardWritePermission = "clipboard-sanitized-write" const notificationPermission = "notifications" -const rendererPermissions = new Set([clipboardWritePermission, notificationPermission]) +const mediaPermission = "media" +const rendererPermissions = new Set([clipboardWritePermission, notificationPermission, mediaPermission]) const oc2Theme = oc2ThemeJson as DesktopTheme const oc2Background = { light: resolveThemeVariant(oc2Theme.light, false)["background-base"], diff --git a/packages/ui/src/components/icon.tsx b/packages/ui/src/components/icon.tsx index a16fad0c32aa..481dfb949af8 100644 --- a/packages/ui/src/components/icon.tsx +++ b/packages/ui/src/components/icon.tsx @@ -104,6 +104,8 @@ const icons = { providers: ``, models: ``, "arrow-undo-down": ``, + mic: ``, + "mic-active": ``, } const spriteID = "opencode-icon-sprite"