This commit is contained in:
Nicholas-Xiong 2026-05-31 01:23:28 -04:00 committed by GitHub
commit 13ab270945
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 627 additions and 37 deletions

View file

@ -8,12 +8,10 @@
// talk to the OD UI directly. Polling /api/xai/auth/status is the only
// delivery channel for "auth completed".
//
// TODO(i18n): the visible strings are hardcoded English for the PoC;
// migrate to apps/web/src/i18n/types.ts before stable release.
'use client';
import { useEffect, useRef, useState } from 'react';
import { useT } from '../i18n';
interface XaiAuthStatus {
connected: boolean;
@ -128,6 +126,7 @@ async function completeOAuthManual(
}
export function XaiOAuthControl() {
const t = useT();
const [status, setStatus] = useState<XaiAuthStatus | null>(null);
const [busy, setBusy] = useState<Busy>('idle');
const [error, setError] = useState<string | null>(null);
@ -299,16 +298,14 @@ export function XaiOAuthControl() {
<>
<span className="mcp-oauth-dot mcp-oauth-dot-ok" aria-hidden />
<span>
<strong>Signed in with X.</strong>{' '}
<strong>{t('settings.xaiOAuthSignedIn')}</strong>{' '}
{expiresLabel ? (
<span className="hint">
SuperGrok subscription token expires {expiresLabel}. You can
close any open xAI browser tabs now.
{t('settings.xaiOAuthTokenExpiresHint', { date: expiresLabel })}
</span>
) : (
<span className="hint">
SuperGrok subscription connected. You can close any open xAI
browser tabs now.
{t('settings.xaiOAuthConnectedHint')}
</span>
)}
</span>
@ -317,11 +314,9 @@ export function XaiOAuthControl() {
<>
<span className="mcp-oauth-dot mcp-oauth-dot-pending" aria-hidden />
<span>
<strong>Waiting for authorization</strong>{' '}
<strong>{t('settings.xaiOAuthWaitingAuth')}</strong>{' '}
<span className="hint">
Open Design is listening for the callback in the background.
This panel will switch to <em>Signed in</em> within a few
seconds of your approving on xAI.
{t('settings.xaiOAuthWaitingAuthHint')}
</span>
</span>
</>
@ -329,11 +324,9 @@ export function XaiOAuthControl() {
<>
<span className="mcp-oauth-dot" aria-hidden />
<span>
<strong>Not signed in.</strong>{' '}
<strong>{t('settings.xaiOAuthNotSignedIn')}</strong>{' '}
<span className="hint">
Click Sign in with X to use your SuperGrok subscription for
Grok image, video, and TTS in Open Design no API key
needed.
{t('settings.xaiOAuthNotSignedInHint')}
</span>
</span>
</>
@ -342,13 +335,10 @@ export function XaiOAuthControl() {
{isAwaiting ? (
<div className="xai-oauth-warning" role="status">
<strong>Heads up:</strong> xAI may show a page that says{' '}
<em>"Cannot connect to your application"</em> (or
in Chinese). <strong>That is a UX bug on xAI's side</strong> the
authorization is still being delivered to Open Design in the
background. Stay on this panel; it will switch to{' '}
<em>Signed in with X</em> automatically. Do not retry from xAI's
page.
<strong>{t('settings.xaiOAuthWarningTitle')}</strong> xAI may show a page that says{' '}
<em>{t('settings.xaiOAuthWarningCannotConnect')}</em> (or
in Chinese). <strong>{t('settings.xaiOAuthWarningUxBug')}</strong> the
{t('settings.xaiOAuthWarningDetail')}
</div>
) : null}
@ -360,18 +350,18 @@ export function XaiOAuthControl() {
className="primary"
onClick={onConnect}
disabled={busy !== 'idle' && busy !== 'refreshing'}
title="Re-authenticate (replaces the existing token)"
title={t('settings.xaiOAuthReauthTitle')}
>
{busy === 'starting' || busy === 'awaiting'
? 'Connecting…'
: 'Reconnect'}
? t('settings.xaiOAuthConnecting')
: t('settings.xaiOAuthReconnect')}
</button>
<button
type="button"
onClick={onDisconnect}
disabled={busy !== 'idle'}
>
{busy === 'disconnecting' ? 'Disconnecting…' : 'Disconnect'}
{busy === 'disconnecting' ? t('settings.xaiOAuthDisconnecting') : t('settings.xaiOAuthDisconnect')}
</button>
</>
) : (
@ -382,15 +372,15 @@ export function XaiOAuthControl() {
onClick={onConnect}
disabled={busy !== 'idle'}
>
{busy === 'starting' ? 'Opening browser…' : 'Sign in with X'}
{busy === 'starting' ? t('settings.xaiOAuthOpeningBrowser') : t('settings.xaiOAuthSignIn')}
</button>
{isAwaiting ? (
<>
<button type="button" onClick={onRefreshStatus} disabled={busy === 'refreshing'}>
{busy === 'refreshing' ? 'Checking…' : 'Refresh status'}
{busy === 'refreshing' ? t('settings.xaiOAuthChecking') : t('settings.xaiOAuthRefreshStatus')}
</button>
<button type="button" onClick={onCancelPending}>
Cancel
{t('common.cancel')}
</button>
</>
) : null}
@ -400,9 +390,9 @@ export function XaiOAuthControl() {
{pendingAuthUrl && !connected ? (
<div className="mcp-oauth-fallback hint">
Browser tab didn't open?{' '}
{t('settings.xaiOAuthBrowserNotOpen')}{' '}
<a href={pendingAuthUrl} target="_blank" rel="noopener noreferrer">
Click here to open the authorize URL manually
{t('settings.xaiOAuthOpenManually')}
</a>
.
</div>
@ -411,13 +401,13 @@ export function XaiOAuthControl() {
{isAwaiting && pendingState ? (
<div className="xai-oauth-paste">
<p className="hint">
xAI may show a code instead of redirecting back. Paste it here:
{t('settings.xaiOAuthPasteHint')}
</p>
<div className="xai-oauth-paste-row">
<input
type="text"
value={pasteCode}
placeholder="Paste auth code from xAI"
placeholder={t('settings.xaiOAuthPastePlaceholder')}
onChange={(e) => setPasteCode(e.target.value)}
onKeyDown={(e) => {
if (e.key === 'Enter' && pasteCode.trim()) {
@ -425,14 +415,14 @@ export function XaiOAuthControl() {
}
}}
disabled={busy === 'refreshing'}
aria-label="Paste auth code from xAI"
aria-label={t('settings.xaiOAuthPastePlaceholder')}
/>
<button
type="button"
onClick={onPasteSubmit}
disabled={!pasteCode.trim() || busy === 'refreshing'}
>
{busy === 'refreshing' ? 'Submitting…' : 'Submit code'}
{busy === 'refreshing' ? t('settings.xaiOAuthSubmitting') : t('settings.xaiOAuthSubmitCode')}
</button>
</div>
</div>
@ -446,7 +436,7 @@ export function XaiOAuthControl() {
{status?.scope ? (
<div className="mcp-oauth-scope hint">
Granted scopes: <code>{status.scope}</code>
{t('settings.xaiOAuthGrantedScopes')} <code>{status.scope}</code>
</div>
) : null}
</div>

View file

@ -355,6 +355,36 @@ export const ar: Dict = {
'settings.mediaProviderReloadSuccess': 'تمت إعادة تحميل إعدادات موفري الوسائط من الـ daemon المحلي.',
'settings.mediaProviderLoadError': 'تعذر تحميل إعدادات موفري الوسائط من الـ daemon المحلي. سيُستخدم مؤقتًا ما هو محفوظ في المتصفح.',
'settings.mediaProviderComingSoonHint': 'نحن نتتبع هذه المزودات في خارطة الطريق؛ لم يقم البرنامج الخفي بشحن عميل بعد، لذا لا يوجد شيء لتكوينه.',
// xAI OAuth (XaiOAuthControl component)
'settings.xaiOAuthSignedIn': 'Signed in with X.',
'settings.xaiOAuthTokenExpiresHint': 'SuperGrok subscription token expires {date}. You can close any open xAI browser tabs now.',
'settings.xaiOAuthConnectedHint': 'SuperGrok subscription connected. You can close any open xAI browser tabs now.',
'settings.xaiOAuthWaitingAuth': 'Waiting for authorization…',
'settings.xaiOAuthWaitingAuthHint': 'Open Design is listening for the callback in the background. This panel will switch to Signed in within a few seconds of your approving on xAI.',
'settings.xaiOAuthNotSignedIn': 'Not signed in.',
'settings.xaiOAuthNotSignedInHint': 'Click Sign in with X to use your SuperGrok subscription for Grok image, video, and TTS in Open Design — no API key needed.',
'settings.xaiOAuthWarningTitle': 'Heads up:',
'settings.xaiOAuthWarningCannotConnect': '"Cannot connect to your application"',
'settings.xaiOAuthWarningUxBug': 'That is a UX bug on xAI\'s side',
'settings.xaiOAuthWarningDetail': 'the authorization is still being delivered to Open Design in the background. Stay on this panel; it will switch to Signed in with X automatically. Do not retry from xAI\'s page.',
'settings.xaiOAuthConnecting': 'Connecting…',
'settings.xaiOAuthReconnect': 'Reconnect',
'settings.xaiOAuthDisconnecting': 'Disconnecting…',
'settings.xaiOAuthDisconnect': 'Disconnect',
'settings.xaiOAuthOpeningBrowser': 'Opening browser…',
'settings.xaiOAuthSignIn': 'Sign in with X',
'settings.xaiOAuthChecking': 'Checking…',
'settings.xaiOAuthRefreshStatus': 'Refresh status',
'settings.xaiOAuthBrowserNotOpen': 'Browser tab didn\'t open?',
'settings.xaiOAuthOpenManually': 'Click here to open the authorize URL manually',
'settings.xaiOAuthPasteHint': 'xAI may show a code instead of redirecting back. Paste it here:',
'settings.xaiOAuthPastePlaceholder': 'Paste auth code from xAI',
'settings.xaiOAuthSubmitting': 'Submitting…',
'settings.xaiOAuthSubmitCode': 'Submit code',
'settings.xaiOAuthReauthTitle': 'Re-authenticate (replaces the existing token)',
'settings.xaiOAuthGrantedScopes': 'Granted scopes:',
'settings.privacy': 'Privacy',
'settings.privacyHint': 'What data is shared with the Open Design team',
'settings.privacyConsentKicker': 'Help us improve Open Design',

View file

@ -355,6 +355,36 @@ export const de: Dict = {
'settings.mediaProviderReloadSuccess': 'Die Einstellungen der Medienanbieter wurden vom lokalen Daemon neu geladen.',
'settings.mediaProviderLoadError': 'Die Einstellungen der Medienanbieter konnten nicht vom lokalen Daemon geladen werden. Vorerst werden die im Browser gespeicherten Einstellungen verwendet.',
'settings.mediaProviderComingSoonHint': 'Wir verfolgen diese für die Roadmap; der Daemon liefert noch keinen Client, daher gibt es nichts zu konfigurieren.',
// xAI OAuth (XaiOAuthControl component)
'settings.xaiOAuthSignedIn': 'Signed in with X.',
'settings.xaiOAuthTokenExpiresHint': 'SuperGrok subscription token expires {date}. You can close any open xAI browser tabs now.',
'settings.xaiOAuthConnectedHint': 'SuperGrok subscription connected. You can close any open xAI browser tabs now.',
'settings.xaiOAuthWaitingAuth': 'Waiting for authorization…',
'settings.xaiOAuthWaitingAuthHint': 'Open Design is listening for the callback in the background. This panel will switch to Signed in within a few seconds of your approving on xAI.',
'settings.xaiOAuthNotSignedIn': 'Not signed in.',
'settings.xaiOAuthNotSignedInHint': 'Click Sign in with X to use your SuperGrok subscription for Grok image, video, and TTS in Open Design — no API key needed.',
'settings.xaiOAuthWarningTitle': 'Heads up:',
'settings.xaiOAuthWarningCannotConnect': '"Cannot connect to your application"',
'settings.xaiOAuthWarningUxBug': 'That is a UX bug on xAI\'s side',
'settings.xaiOAuthWarningDetail': 'the authorization is still being delivered to Open Design in the background. Stay on this panel; it will switch to Signed in with X automatically. Do not retry from xAI\'s page.',
'settings.xaiOAuthConnecting': 'Connecting…',
'settings.xaiOAuthReconnect': 'Reconnect',
'settings.xaiOAuthDisconnecting': 'Disconnecting…',
'settings.xaiOAuthDisconnect': 'Disconnect',
'settings.xaiOAuthOpeningBrowser': 'Opening browser…',
'settings.xaiOAuthSignIn': 'Sign in with X',
'settings.xaiOAuthChecking': 'Checking…',
'settings.xaiOAuthRefreshStatus': 'Refresh status',
'settings.xaiOAuthBrowserNotOpen': 'Browser tab didn\'t open?',
'settings.xaiOAuthOpenManually': 'Click here to open the authorize URL manually',
'settings.xaiOAuthPasteHint': 'xAI may show a code instead of redirecting back. Paste it here:',
'settings.xaiOAuthPastePlaceholder': 'Paste auth code from xAI',
'settings.xaiOAuthSubmitting': 'Submitting…',
'settings.xaiOAuthSubmitCode': 'Submit code',
'settings.xaiOAuthReauthTitle': 'Re-authenticate (replaces the existing token)',
'settings.xaiOAuthGrantedScopes': 'Granted scopes:',
'settings.privacy': 'Privacy',
'settings.privacyHint': 'What data is shared with the Open Design team',
'settings.privacyConsentKicker': 'Help us improve Open Design',

View file

@ -366,6 +366,36 @@ export const en: Dict = {
'settings.mediaProviderReloadSuccess': 'Reloaded media provider settings from the local daemon.',
'settings.mediaProviderLoadError': 'Could not load media provider settings from the local daemon. Using browser-saved settings for now.',
'settings.mediaProviderComingSoonHint': 'We track these for the roadmap; the daemon doesn\'t ship a client yet, so there\'s nothing to configure.',
// xAI OAuth (XaiOAuthControl component)
'settings.xaiOAuthSignedIn': 'Signed in with X.',
'settings.xaiOAuthTokenExpiresHint': 'SuperGrok subscription token expires {date}. You can close any open xAI browser tabs now.',
'settings.xaiOAuthConnectedHint': 'SuperGrok subscription connected. You can close any open xAI browser tabs now.',
'settings.xaiOAuthWaitingAuth': 'Waiting for authorization…',
'settings.xaiOAuthWaitingAuthHint': 'Open Design is listening for the callback in the background. This panel will switch to Signed in within a few seconds of your approving on xAI.',
'settings.xaiOAuthNotSignedIn': 'Not signed in.',
'settings.xaiOAuthNotSignedInHint': 'Click Sign in with X to use your SuperGrok subscription for Grok image, video, and TTS in Open Design — no API key needed.',
'settings.xaiOAuthWarningTitle': 'Heads up:',
'settings.xaiOAuthWarningCannotConnect': '"Cannot connect to your application"',
'settings.xaiOAuthWarningUxBug': 'That is a UX bug on xAI\'s side',
'settings.xaiOAuthWarningDetail': 'the authorization is still being delivered to Open Design in the background. Stay on this panel; it will switch to Signed in with X automatically. Do not retry from xAI\'s page.',
'settings.xaiOAuthConnecting': 'Connecting…',
'settings.xaiOAuthReconnect': 'Reconnect',
'settings.xaiOAuthDisconnecting': 'Disconnecting…',
'settings.xaiOAuthDisconnect': 'Disconnect',
'settings.xaiOAuthOpeningBrowser': 'Opening browser…',
'settings.xaiOAuthSignIn': 'Sign in with X',
'settings.xaiOAuthChecking': 'Checking…',
'settings.xaiOAuthRefreshStatus': 'Refresh status',
'settings.xaiOAuthBrowserNotOpen': 'Browser tab didn\'t open?',
'settings.xaiOAuthOpenManually': 'Click here to open the authorize URL manually',
'settings.xaiOAuthPasteHint': 'xAI may show a code instead of redirecting back. Paste it here:',
'settings.xaiOAuthPastePlaceholder': 'Paste auth code from xAI',
'settings.xaiOAuthSubmitting': 'Submitting…',
'settings.xaiOAuthSubmitCode': 'Submit code',
'settings.xaiOAuthReauthTitle': 'Re-authenticate (replaces the existing token)',
'settings.xaiOAuthGrantedScopes': 'Granted scopes:',
'settings.privacy': 'Privacy',
'settings.privacyHint': 'What data is shared with the Open Design team',
'settings.privacyConsentKicker': 'Help us improve Open Design',

View file

@ -355,6 +355,36 @@ export const esES: Dict = {
'settings.mediaProviderReloadSuccess': 'Se recargaron los ajustes de los proveedores de medios desde el daemon local.',
'settings.mediaProviderLoadError': 'No se pudieron cargar los ajustes de los proveedores de medios desde el daemon local. Por ahora se usarán los ajustes guardados en el navegador.',
'settings.mediaProviderComingSoonHint': 'Rastreamos estos para la hoja de ruta; el daemon aún no incluye un cliente, por lo que no hay nada que configurar.',
// xAI OAuth (XaiOAuthControl component)
'settings.xaiOAuthSignedIn': 'Signed in with X.',
'settings.xaiOAuthTokenExpiresHint': 'SuperGrok subscription token expires {date}. You can close any open xAI browser tabs now.',
'settings.xaiOAuthConnectedHint': 'SuperGrok subscription connected. You can close any open xAI browser tabs now.',
'settings.xaiOAuthWaitingAuth': 'Waiting for authorization…',
'settings.xaiOAuthWaitingAuthHint': 'Open Design is listening for the callback in the background. This panel will switch to Signed in within a few seconds of your approving on xAI.',
'settings.xaiOAuthNotSignedIn': 'Not signed in.',
'settings.xaiOAuthNotSignedInHint': 'Click Sign in with X to use your SuperGrok subscription for Grok image, video, and TTS in Open Design — no API key needed.',
'settings.xaiOAuthWarningTitle': 'Heads up:',
'settings.xaiOAuthWarningCannotConnect': '"Cannot connect to your application"',
'settings.xaiOAuthWarningUxBug': 'That is a UX bug on xAI\'s side',
'settings.xaiOAuthWarningDetail': 'the authorization is still being delivered to Open Design in the background. Stay on this panel; it will switch to Signed in with X automatically. Do not retry from xAI\'s page.',
'settings.xaiOAuthConnecting': 'Connecting…',
'settings.xaiOAuthReconnect': 'Reconnect',
'settings.xaiOAuthDisconnecting': 'Disconnecting…',
'settings.xaiOAuthDisconnect': 'Disconnect',
'settings.xaiOAuthOpeningBrowser': 'Opening browser…',
'settings.xaiOAuthSignIn': 'Sign in with X',
'settings.xaiOAuthChecking': 'Checking…',
'settings.xaiOAuthRefreshStatus': 'Refresh status',
'settings.xaiOAuthBrowserNotOpen': 'Browser tab didn\'t open?',
'settings.xaiOAuthOpenManually': 'Click here to open the authorize URL manually',
'settings.xaiOAuthPasteHint': 'xAI may show a code instead of redirecting back. Paste it here:',
'settings.xaiOAuthPastePlaceholder': 'Paste auth code from xAI',
'settings.xaiOAuthSubmitting': 'Submitting…',
'settings.xaiOAuthSubmitCode': 'Submit code',
'settings.xaiOAuthReauthTitle': 'Re-authenticate (replaces the existing token)',
'settings.xaiOAuthGrantedScopes': 'Granted scopes:',
'settings.privacy': 'Privacy',
'settings.privacyHint': 'What data is shared with the Open Design team',
'settings.privacyConsentKicker': 'Help us improve Open Design',

View file

@ -355,6 +355,36 @@ export const fa: Dict = {
'settings.mediaProviderReloadSuccess': 'تنظیمات ارائه‌دهنده‌های رسانه از دیمن محلی دوباره بارگذاری شد.',
'settings.mediaProviderLoadError': 'بارگذاری تنظیمات ارائه‌دهنده‌های رسانه از دیمن محلی ممکن نشد. فعلاً از تنظیمات ذخیره‌شده در مرورگر استفاده می‌شود.',
'settings.mediaProviderComingSoonHint': 'ما این موارد را برای نقشه راه پیگیری می‌کنیم؛ دیمون هنوز کلاینتی ارائه نمی‌دهد، بنابراین چیزی برای پیکربندی وجود ندارد.',
// xAI OAuth (XaiOAuthControl component)
'settings.xaiOAuthSignedIn': 'Signed in with X.',
'settings.xaiOAuthTokenExpiresHint': 'SuperGrok subscription token expires {date}. You can close any open xAI browser tabs now.',
'settings.xaiOAuthConnectedHint': 'SuperGrok subscription connected. You can close any open xAI browser tabs now.',
'settings.xaiOAuthWaitingAuth': 'Waiting for authorization…',
'settings.xaiOAuthWaitingAuthHint': 'Open Design is listening for the callback in the background. This panel will switch to Signed in within a few seconds of your approving on xAI.',
'settings.xaiOAuthNotSignedIn': 'Not signed in.',
'settings.xaiOAuthNotSignedInHint': 'Click Sign in with X to use your SuperGrok subscription for Grok image, video, and TTS in Open Design — no API key needed.',
'settings.xaiOAuthWarningTitle': 'Heads up:',
'settings.xaiOAuthWarningCannotConnect': '"Cannot connect to your application"',
'settings.xaiOAuthWarningUxBug': 'That is a UX bug on xAI\'s side',
'settings.xaiOAuthWarningDetail': 'the authorization is still being delivered to Open Design in the background. Stay on this panel; it will switch to Signed in with X automatically. Do not retry from xAI\'s page.',
'settings.xaiOAuthConnecting': 'Connecting…',
'settings.xaiOAuthReconnect': 'Reconnect',
'settings.xaiOAuthDisconnecting': 'Disconnecting…',
'settings.xaiOAuthDisconnect': 'Disconnect',
'settings.xaiOAuthOpeningBrowser': 'Opening browser…',
'settings.xaiOAuthSignIn': 'Sign in with X',
'settings.xaiOAuthChecking': 'Checking…',
'settings.xaiOAuthRefreshStatus': 'Refresh status',
'settings.xaiOAuthBrowserNotOpen': 'Browser tab didn\'t open?',
'settings.xaiOAuthOpenManually': 'Click here to open the authorize URL manually',
'settings.xaiOAuthPasteHint': 'xAI may show a code instead of redirecting back. Paste it here:',
'settings.xaiOAuthPastePlaceholder': 'Paste auth code from xAI',
'settings.xaiOAuthSubmitting': 'Submitting…',
'settings.xaiOAuthSubmitCode': 'Submit code',
'settings.xaiOAuthReauthTitle': 'Re-authenticate (replaces the existing token)',
'settings.xaiOAuthGrantedScopes': 'Granted scopes:',
'settings.privacy': 'Privacy',
'settings.privacyHint': 'What data is shared with the Open Design team',
'settings.privacyConsentKicker': 'Help us improve Open Design',

View file

@ -346,6 +346,36 @@ export const fr: Dict = {
'settings.mediaProviderReloadSuccess': 'Paramètres des fournisseurs de médias rechargés depuis le daemon local.',
'settings.mediaProviderLoadError': 'Impossible de charger les paramètres des fournisseurs de médias depuis le daemon local. Utilisation temporaire des paramètres enregistrés dans le navigateur.',
'settings.mediaProviderComingSoonHint': 'Nous suivons ces fournisseurs pour la feuille de route ; le daemon ne fournit pas encore de client, il n\'y a donc rien à configurer.',
// xAI OAuth (XaiOAuthControl component)
'settings.xaiOAuthSignedIn': 'Signed in with X.',
'settings.xaiOAuthTokenExpiresHint': 'SuperGrok subscription token expires {date}. You can close any open xAI browser tabs now.',
'settings.xaiOAuthConnectedHint': 'SuperGrok subscription connected. You can close any open xAI browser tabs now.',
'settings.xaiOAuthWaitingAuth': 'Waiting for authorization…',
'settings.xaiOAuthWaitingAuthHint': 'Open Design is listening for the callback in the background. This panel will switch to Signed in within a few seconds of your approving on xAI.',
'settings.xaiOAuthNotSignedIn': 'Not signed in.',
'settings.xaiOAuthNotSignedInHint': 'Click Sign in with X to use your SuperGrok subscription for Grok image, video, and TTS in Open Design — no API key needed.',
'settings.xaiOAuthWarningTitle': 'Heads up:',
'settings.xaiOAuthWarningCannotConnect': '"Cannot connect to your application"',
'settings.xaiOAuthWarningUxBug': 'That is a UX bug on xAI\'s side',
'settings.xaiOAuthWarningDetail': 'the authorization is still being delivered to Open Design in the background. Stay on this panel; it will switch to Signed in with X automatically. Do not retry from xAI\'s page.',
'settings.xaiOAuthConnecting': 'Connecting…',
'settings.xaiOAuthReconnect': 'Reconnect',
'settings.xaiOAuthDisconnecting': 'Disconnecting…',
'settings.xaiOAuthDisconnect': 'Disconnect',
'settings.xaiOAuthOpeningBrowser': 'Opening browser…',
'settings.xaiOAuthSignIn': 'Sign in with X',
'settings.xaiOAuthChecking': 'Checking…',
'settings.xaiOAuthRefreshStatus': 'Refresh status',
'settings.xaiOAuthBrowserNotOpen': 'Browser tab didn\'t open?',
'settings.xaiOAuthOpenManually': 'Click here to open the authorize URL manually',
'settings.xaiOAuthPasteHint': 'xAI may show a code instead of redirecting back. Paste it here:',
'settings.xaiOAuthPastePlaceholder': 'Paste auth code from xAI',
'settings.xaiOAuthSubmitting': 'Submitting…',
'settings.xaiOAuthSubmitCode': 'Submit code',
'settings.xaiOAuthReauthTitle': 'Re-authenticate (replaces the existing token)',
'settings.xaiOAuthGrantedScopes': 'Granted scopes:',
'settings.privacy': 'Confidentialité',
'settings.privacyHint': 'Données partagées avec léquipe Open Design',
'settings.privacyConsentKicker': 'Aidez-nous à améliorer Open Design',

View file

@ -355,6 +355,36 @@ export const hu: Dict = {
'settings.mediaProviderReloadSuccess': 'A médiaszolgáltatók beállításai újra lettek töltve a helyi démonból.',
'settings.mediaProviderLoadError': 'Nem sikerült betölteni a médiaszolgáltatók beállításait a helyi démonból. Egyelőre a böngészőben mentett beállításokat használjuk.',
'settings.mediaProviderComingSoonHint': 'Ezeket nyomon követjük az ütemtervben; a daemon még nem szállít klienst, így nincs mit konfigurálni.',
// xAI OAuth (XaiOAuthControl component)
'settings.xaiOAuthSignedIn': 'Signed in with X.',
'settings.xaiOAuthTokenExpiresHint': 'SuperGrok subscription token expires {date}. You can close any open xAI browser tabs now.',
'settings.xaiOAuthConnectedHint': 'SuperGrok subscription connected. You can close any open xAI browser tabs now.',
'settings.xaiOAuthWaitingAuth': 'Waiting for authorization…',
'settings.xaiOAuthWaitingAuthHint': 'Open Design is listening for the callback in the background. This panel will switch to Signed in within a few seconds of your approving on xAI.',
'settings.xaiOAuthNotSignedIn': 'Not signed in.',
'settings.xaiOAuthNotSignedInHint': 'Click Sign in with X to use your SuperGrok subscription for Grok image, video, and TTS in Open Design — no API key needed.',
'settings.xaiOAuthWarningTitle': 'Heads up:',
'settings.xaiOAuthWarningCannotConnect': '"Cannot connect to your application"',
'settings.xaiOAuthWarningUxBug': 'That is a UX bug on xAI\'s side',
'settings.xaiOAuthWarningDetail': 'the authorization is still being delivered to Open Design in the background. Stay on this panel; it will switch to Signed in with X automatically. Do not retry from xAI\'s page.',
'settings.xaiOAuthConnecting': 'Connecting…',
'settings.xaiOAuthReconnect': 'Reconnect',
'settings.xaiOAuthDisconnecting': 'Disconnecting…',
'settings.xaiOAuthDisconnect': 'Disconnect',
'settings.xaiOAuthOpeningBrowser': 'Opening browser…',
'settings.xaiOAuthSignIn': 'Sign in with X',
'settings.xaiOAuthChecking': 'Checking…',
'settings.xaiOAuthRefreshStatus': 'Refresh status',
'settings.xaiOAuthBrowserNotOpen': 'Browser tab didn\'t open?',
'settings.xaiOAuthOpenManually': 'Click here to open the authorize URL manually',
'settings.xaiOAuthPasteHint': 'xAI may show a code instead of redirecting back. Paste it here:',
'settings.xaiOAuthPastePlaceholder': 'Paste auth code from xAI',
'settings.xaiOAuthSubmitting': 'Submitting…',
'settings.xaiOAuthSubmitCode': 'Submit code',
'settings.xaiOAuthReauthTitle': 'Re-authenticate (replaces the existing token)',
'settings.xaiOAuthGrantedScopes': 'Granted scopes:',
'settings.privacy': 'Privacy',
'settings.privacyHint': 'What data is shared with the Open Design team',
'settings.privacyConsentKicker': 'Help us improve Open Design',

View file

@ -350,6 +350,36 @@ export const id: Dict = {
'settings.mediaProviderReloadSuccess': 'Pengaturan penyedia media berhasil dimuat ulang dari daemon lokal.',
'settings.mediaProviderLoadError': 'Tidak dapat memuat pengaturan penyedia media dari daemon lokal. Untuk sementara menggunakan pengaturan yang tersimpan di browser.',
'settings.mediaProviderComingSoonHint': 'Kami melacak ini untuk roadmap; daemon belum mengirimkan klien, jadi tidak ada yang perlu dikonfigurasi.',
// xAI OAuth (XaiOAuthControl component)
'settings.xaiOAuthSignedIn': 'Signed in with X.',
'settings.xaiOAuthTokenExpiresHint': 'SuperGrok subscription token expires {date}. You can close any open xAI browser tabs now.',
'settings.xaiOAuthConnectedHint': 'SuperGrok subscription connected. You can close any open xAI browser tabs now.',
'settings.xaiOAuthWaitingAuth': 'Waiting for authorization…',
'settings.xaiOAuthWaitingAuthHint': 'Open Design is listening for the callback in the background. This panel will switch to Signed in within a few seconds of your approving on xAI.',
'settings.xaiOAuthNotSignedIn': 'Not signed in.',
'settings.xaiOAuthNotSignedInHint': 'Click Sign in with X to use your SuperGrok subscription for Grok image, video, and TTS in Open Design — no API key needed.',
'settings.xaiOAuthWarningTitle': 'Heads up:',
'settings.xaiOAuthWarningCannotConnect': '"Cannot connect to your application"',
'settings.xaiOAuthWarningUxBug': 'That is a UX bug on xAI\'s side',
'settings.xaiOAuthWarningDetail': 'the authorization is still being delivered to Open Design in the background. Stay on this panel; it will switch to Signed in with X automatically. Do not retry from xAI\'s page.',
'settings.xaiOAuthConnecting': 'Connecting…',
'settings.xaiOAuthReconnect': 'Reconnect',
'settings.xaiOAuthDisconnecting': 'Disconnecting…',
'settings.xaiOAuthDisconnect': 'Disconnect',
'settings.xaiOAuthOpeningBrowser': 'Opening browser…',
'settings.xaiOAuthSignIn': 'Sign in with X',
'settings.xaiOAuthChecking': 'Checking…',
'settings.xaiOAuthRefreshStatus': 'Refresh status',
'settings.xaiOAuthBrowserNotOpen': 'Browser tab didn\'t open?',
'settings.xaiOAuthOpenManually': 'Click here to open the authorize URL manually',
'settings.xaiOAuthPasteHint': 'xAI may show a code instead of redirecting back. Paste it here:',
'settings.xaiOAuthPastePlaceholder': 'Paste auth code from xAI',
'settings.xaiOAuthSubmitting': 'Submitting…',
'settings.xaiOAuthSubmitCode': 'Submit code',
'settings.xaiOAuthReauthTitle': 'Re-authenticate (replaces the existing token)',
'settings.xaiOAuthGrantedScopes': 'Granted scopes:',
'settings.privacy': 'Privacy',
'settings.privacyHint': 'What data is shared with the Open Design team',
'settings.privacyConsentKicker': 'Help us improve Open Design',

View file

@ -347,6 +347,36 @@ export const it: Dict = {
'settings.mediaProviderReloadSuccess': 'Impostazioni dei provider di media ricaricate dal daemon locale.',
'settings.mediaProviderLoadError': 'Impossibile caricare le impostazioni dei provider di media dal daemon locale. Uso temporaneo delle impostazioni salvate nel browser.',
'settings.mediaProviderComingSoonHint': 'Teniamo traccia di questi per la roadmap; il daemon non fornisce ancora un client, quindi non c\'è nulla da configurare.',
// xAI OAuth (XaiOAuthControl component)
'settings.xaiOAuthSignedIn': 'Signed in with X.',
'settings.xaiOAuthTokenExpiresHint': 'SuperGrok subscription token expires {date}. You can close any open xAI browser tabs now.',
'settings.xaiOAuthConnectedHint': 'SuperGrok subscription connected. You can close any open xAI browser tabs now.',
'settings.xaiOAuthWaitingAuth': 'Waiting for authorization…',
'settings.xaiOAuthWaitingAuthHint': 'Open Design is listening for the callback in the background. This panel will switch to Signed in within a few seconds of your approving on xAI.',
'settings.xaiOAuthNotSignedIn': 'Not signed in.',
'settings.xaiOAuthNotSignedInHint': 'Click Sign in with X to use your SuperGrok subscription for Grok image, video, and TTS in Open Design — no API key needed.',
'settings.xaiOAuthWarningTitle': 'Heads up:',
'settings.xaiOAuthWarningCannotConnect': '"Cannot connect to your application"',
'settings.xaiOAuthWarningUxBug': 'That is a UX bug on xAI\'s side',
'settings.xaiOAuthWarningDetail': 'the authorization is still being delivered to Open Design in the background. Stay on this panel; it will switch to Signed in with X automatically. Do not retry from xAI\'s page.',
'settings.xaiOAuthConnecting': 'Connecting…',
'settings.xaiOAuthReconnect': 'Reconnect',
'settings.xaiOAuthDisconnecting': 'Disconnecting…',
'settings.xaiOAuthDisconnect': 'Disconnect',
'settings.xaiOAuthOpeningBrowser': 'Opening browser…',
'settings.xaiOAuthSignIn': 'Sign in with X',
'settings.xaiOAuthChecking': 'Checking…',
'settings.xaiOAuthRefreshStatus': 'Refresh status',
'settings.xaiOAuthBrowserNotOpen': 'Browser tab didn\'t open?',
'settings.xaiOAuthOpenManually': 'Click here to open the authorize URL manually',
'settings.xaiOAuthPasteHint': 'xAI may show a code instead of redirecting back. Paste it here:',
'settings.xaiOAuthPastePlaceholder': 'Paste auth code from xAI',
'settings.xaiOAuthSubmitting': 'Submitting…',
'settings.xaiOAuthSubmitCode': 'Submit code',
'settings.xaiOAuthReauthTitle': 'Re-authenticate (replaces the existing token)',
'settings.xaiOAuthGrantedScopes': 'Granted scopes:',
'settings.privacy': 'Privacy',
'settings.privacyHint': 'Quali dati vengono condivisi con il team di Open Design',
'settings.privacyConsentKicker': 'Aiutaci a migliorare Open Design',

View file

@ -355,6 +355,36 @@ export const ja: Dict = {
'settings.mediaProviderReloadSuccess': 'ローカルデーモンからメディアプロバイダー設定を再読み込みしました。',
'settings.mediaProviderLoadError': 'ローカルデーモンからメディアプロバイダー設定を読み込めませんでした。今のところブラウザーに保存された設定を使用します。',
'settings.mediaProviderComingSoonHint': 'これらはロードマップで追跡しています。デーモンはまだクライアントを提供していないため、設定するものはありません。',
// xAI OAuth (XaiOAuthControl component)
'settings.xaiOAuthSignedIn': 'Signed in with X.',
'settings.xaiOAuthTokenExpiresHint': 'SuperGrok subscription token expires {date}. You can close any open xAI browser tabs now.',
'settings.xaiOAuthConnectedHint': 'SuperGrok subscription connected. You can close any open xAI browser tabs now.',
'settings.xaiOAuthWaitingAuth': 'Waiting for authorization…',
'settings.xaiOAuthWaitingAuthHint': 'Open Design is listening for the callback in the background. This panel will switch to Signed in within a few seconds of your approving on xAI.',
'settings.xaiOAuthNotSignedIn': 'Not signed in.',
'settings.xaiOAuthNotSignedInHint': 'Click Sign in with X to use your SuperGrok subscription for Grok image, video, and TTS in Open Design — no API key needed.',
'settings.xaiOAuthWarningTitle': 'Heads up:',
'settings.xaiOAuthWarningCannotConnect': '"Cannot connect to your application"',
'settings.xaiOAuthWarningUxBug': 'That is a UX bug on xAI\'s side',
'settings.xaiOAuthWarningDetail': 'the authorization is still being delivered to Open Design in the background. Stay on this panel; it will switch to Signed in with X automatically. Do not retry from xAI\'s page.',
'settings.xaiOAuthConnecting': 'Connecting…',
'settings.xaiOAuthReconnect': 'Reconnect',
'settings.xaiOAuthDisconnecting': 'Disconnecting…',
'settings.xaiOAuthDisconnect': 'Disconnect',
'settings.xaiOAuthOpeningBrowser': 'Opening browser…',
'settings.xaiOAuthSignIn': 'Sign in with X',
'settings.xaiOAuthChecking': 'Checking…',
'settings.xaiOAuthRefreshStatus': 'Refresh status',
'settings.xaiOAuthBrowserNotOpen': 'Browser tab didn\'t open?',
'settings.xaiOAuthOpenManually': 'Click here to open the authorize URL manually',
'settings.xaiOAuthPasteHint': 'xAI may show a code instead of redirecting back. Paste it here:',
'settings.xaiOAuthPastePlaceholder': 'Paste auth code from xAI',
'settings.xaiOAuthSubmitting': 'Submitting…',
'settings.xaiOAuthSubmitCode': 'Submit code',
'settings.xaiOAuthReauthTitle': 'Re-authenticate (replaces the existing token)',
'settings.xaiOAuthGrantedScopes': 'Granted scopes:',
'settings.privacy': 'Privacy',
'settings.privacyHint': 'What data is shared with the Open Design team',
'settings.privacyConsentKicker': 'Help us improve Open Design',

View file

@ -355,6 +355,36 @@ export const ko: Dict = {
'settings.mediaProviderReloadSuccess': '로컬 데몬에서 미디어 제공자 설정을 다시 불러왔습니다.',
'settings.mediaProviderLoadError': '로컬 데몬에서 미디어 제공자 설정을 불러오지 못했습니다. 지금은 브라우저에 저장된 설정을 사용합니다.',
'settings.mediaProviderComingSoonHint': '로드맵에서 이를 추적하고 있습니다. 데몬이 아직 클라이언트를 제공하지 않으므로 구성할 항목이 없습니다.',
// xAI OAuth (XaiOAuthControl component)
'settings.xaiOAuthSignedIn': 'Signed in with X.',
'settings.xaiOAuthTokenExpiresHint': 'SuperGrok subscription token expires {date}. You can close any open xAI browser tabs now.',
'settings.xaiOAuthConnectedHint': 'SuperGrok subscription connected. You can close any open xAI browser tabs now.',
'settings.xaiOAuthWaitingAuth': 'Waiting for authorization…',
'settings.xaiOAuthWaitingAuthHint': 'Open Design is listening for the callback in the background. This panel will switch to Signed in within a few seconds of your approving on xAI.',
'settings.xaiOAuthNotSignedIn': 'Not signed in.',
'settings.xaiOAuthNotSignedInHint': 'Click Sign in with X to use your SuperGrok subscription for Grok image, video, and TTS in Open Design — no API key needed.',
'settings.xaiOAuthWarningTitle': 'Heads up:',
'settings.xaiOAuthWarningCannotConnect': '"Cannot connect to your application"',
'settings.xaiOAuthWarningUxBug': 'That is a UX bug on xAI\'s side',
'settings.xaiOAuthWarningDetail': 'the authorization is still being delivered to Open Design in the background. Stay on this panel; it will switch to Signed in with X automatically. Do not retry from xAI\'s page.',
'settings.xaiOAuthConnecting': 'Connecting…',
'settings.xaiOAuthReconnect': 'Reconnect',
'settings.xaiOAuthDisconnecting': 'Disconnecting…',
'settings.xaiOAuthDisconnect': 'Disconnect',
'settings.xaiOAuthOpeningBrowser': 'Opening browser…',
'settings.xaiOAuthSignIn': 'Sign in with X',
'settings.xaiOAuthChecking': 'Checking…',
'settings.xaiOAuthRefreshStatus': 'Refresh status',
'settings.xaiOAuthBrowserNotOpen': 'Browser tab didn\'t open?',
'settings.xaiOAuthOpenManually': 'Click here to open the authorize URL manually',
'settings.xaiOAuthPasteHint': 'xAI may show a code instead of redirecting back. Paste it here:',
'settings.xaiOAuthPastePlaceholder': 'Paste auth code from xAI',
'settings.xaiOAuthSubmitting': 'Submitting…',
'settings.xaiOAuthSubmitCode': 'Submit code',
'settings.xaiOAuthReauthTitle': 'Re-authenticate (replaces the existing token)',
'settings.xaiOAuthGrantedScopes': 'Granted scopes:',
'settings.privacy': 'Privacy',
'settings.privacyHint': 'What data is shared with the Open Design team',
'settings.privacyConsentKicker': 'Help us improve Open Design',

View file

@ -355,6 +355,36 @@ export const pl: Dict = {
'settings.mediaProviderReloadSuccess': 'Ustawienia dostawców mediów zostały ponownie wczytane z lokalnego demona.',
'settings.mediaProviderLoadError': 'Nie udało się wczytać ustawień dostawców mediów z lokalnego demona. Na razie używane będą ustawienia zapisane w przeglądarce.',
'settings.mediaProviderComingSoonHint': 'Śledzimy je w mapie drogowej; daemon nie dostarcza jeszcze klienta, więc nie ma nic do skonfigurowania.',
// xAI OAuth (XaiOAuthControl component)
'settings.xaiOAuthSignedIn': 'Signed in with X.',
'settings.xaiOAuthTokenExpiresHint': 'SuperGrok subscription token expires {date}. You can close any open xAI browser tabs now.',
'settings.xaiOAuthConnectedHint': 'SuperGrok subscription connected. You can close any open xAI browser tabs now.',
'settings.xaiOAuthWaitingAuth': 'Waiting for authorization…',
'settings.xaiOAuthWaitingAuthHint': 'Open Design is listening for the callback in the background. This panel will switch to Signed in within a few seconds of your approving on xAI.',
'settings.xaiOAuthNotSignedIn': 'Not signed in.',
'settings.xaiOAuthNotSignedInHint': 'Click Sign in with X to use your SuperGrok subscription for Grok image, video, and TTS in Open Design — no API key needed.',
'settings.xaiOAuthWarningTitle': 'Heads up:',
'settings.xaiOAuthWarningCannotConnect': '"Cannot connect to your application"',
'settings.xaiOAuthWarningUxBug': 'That is a UX bug on xAI\'s side',
'settings.xaiOAuthWarningDetail': 'the authorization is still being delivered to Open Design in the background. Stay on this panel; it will switch to Signed in with X automatically. Do not retry from xAI\'s page.',
'settings.xaiOAuthConnecting': 'Connecting…',
'settings.xaiOAuthReconnect': 'Reconnect',
'settings.xaiOAuthDisconnecting': 'Disconnecting…',
'settings.xaiOAuthDisconnect': 'Disconnect',
'settings.xaiOAuthOpeningBrowser': 'Opening browser…',
'settings.xaiOAuthSignIn': 'Sign in with X',
'settings.xaiOAuthChecking': 'Checking…',
'settings.xaiOAuthRefreshStatus': 'Refresh status',
'settings.xaiOAuthBrowserNotOpen': 'Browser tab didn\'t open?',
'settings.xaiOAuthOpenManually': 'Click here to open the authorize URL manually',
'settings.xaiOAuthPasteHint': 'xAI may show a code instead of redirecting back. Paste it here:',
'settings.xaiOAuthPastePlaceholder': 'Paste auth code from xAI',
'settings.xaiOAuthSubmitting': 'Submitting…',
'settings.xaiOAuthSubmitCode': 'Submit code',
'settings.xaiOAuthReauthTitle': 'Re-authenticate (replaces the existing token)',
'settings.xaiOAuthGrantedScopes': 'Granted scopes:',
'settings.privacy': 'Privacy',
'settings.privacyHint': 'What data is shared with the Open Design team',
'settings.privacyConsentKicker': 'Help us improve Open Design',

View file

@ -354,6 +354,36 @@ export const ptBR: Dict = {
'settings.mediaProviderReloadSuccess': 'As configurações dos provedores de mídia foram recarregadas do daemon local.',
'settings.mediaProviderLoadError': 'Não foi possível carregar as configurações dos provedores de mídia do daemon local. Usando por enquanto as configurações salvas no navegador.',
'settings.mediaProviderComingSoonHint': 'Rastreamos estes para o roteiro; o daemon ainda não fornece um cliente, então não há nada para configurar.',
// xAI OAuth (XaiOAuthControl component)
'settings.xaiOAuthSignedIn': 'Signed in with X.',
'settings.xaiOAuthTokenExpiresHint': 'SuperGrok subscription token expires {date}. You can close any open xAI browser tabs now.',
'settings.xaiOAuthConnectedHint': 'SuperGrok subscription connected. You can close any open xAI browser tabs now.',
'settings.xaiOAuthWaitingAuth': 'Waiting for authorization…',
'settings.xaiOAuthWaitingAuthHint': 'Open Design is listening for the callback in the background. This panel will switch to Signed in within a few seconds of your approving on xAI.',
'settings.xaiOAuthNotSignedIn': 'Not signed in.',
'settings.xaiOAuthNotSignedInHint': 'Click Sign in with X to use your SuperGrok subscription for Grok image, video, and TTS in Open Design — no API key needed.',
'settings.xaiOAuthWarningTitle': 'Heads up:',
'settings.xaiOAuthWarningCannotConnect': '"Cannot connect to your application"',
'settings.xaiOAuthWarningUxBug': 'That is a UX bug on xAI\'s side',
'settings.xaiOAuthWarningDetail': 'the authorization is still being delivered to Open Design in the background. Stay on this panel; it will switch to Signed in with X automatically. Do not retry from xAI\'s page.',
'settings.xaiOAuthConnecting': 'Connecting…',
'settings.xaiOAuthReconnect': 'Reconnect',
'settings.xaiOAuthDisconnecting': 'Disconnecting…',
'settings.xaiOAuthDisconnect': 'Disconnect',
'settings.xaiOAuthOpeningBrowser': 'Opening browser…',
'settings.xaiOAuthSignIn': 'Sign in with X',
'settings.xaiOAuthChecking': 'Checking…',
'settings.xaiOAuthRefreshStatus': 'Refresh status',
'settings.xaiOAuthBrowserNotOpen': 'Browser tab didn\'t open?',
'settings.xaiOAuthOpenManually': 'Click here to open the authorize URL manually',
'settings.xaiOAuthPasteHint': 'xAI may show a code instead of redirecting back. Paste it here:',
'settings.xaiOAuthPastePlaceholder': 'Paste auth code from xAI',
'settings.xaiOAuthSubmitting': 'Submitting…',
'settings.xaiOAuthSubmitCode': 'Submit code',
'settings.xaiOAuthReauthTitle': 'Re-authenticate (replaces the existing token)',
'settings.xaiOAuthGrantedScopes': 'Granted scopes:',
'settings.privacy': 'Privacy',
'settings.privacyHint': 'What data is shared with the Open Design team',
'settings.privacyConsentKicker': 'Help us improve Open Design',

View file

@ -354,6 +354,36 @@ export const ru: Dict = {
'settings.mediaProviderReloadSuccess': 'Настройки медиапровайдеров заново загружены из локального демона.',
'settings.mediaProviderLoadError': 'Не удалось загрузить настройки медиапровайдеров из локального демона. Пока используются настройки, сохранённые в браузере.',
'settings.mediaProviderComingSoonHint': 'Мы отслеживаем их в дорожной карте; демон пока не поставляет клиент, поэтому настраивать нечего.',
// xAI OAuth (XaiOAuthControl component)
'settings.xaiOAuthSignedIn': 'Signed in with X.',
'settings.xaiOAuthTokenExpiresHint': 'SuperGrok subscription token expires {date}. You can close any open xAI browser tabs now.',
'settings.xaiOAuthConnectedHint': 'SuperGrok subscription connected. You can close any open xAI browser tabs now.',
'settings.xaiOAuthWaitingAuth': 'Waiting for authorization…',
'settings.xaiOAuthWaitingAuthHint': 'Open Design is listening for the callback in the background. This panel will switch to Signed in within a few seconds of your approving on xAI.',
'settings.xaiOAuthNotSignedIn': 'Not signed in.',
'settings.xaiOAuthNotSignedInHint': 'Click Sign in with X to use your SuperGrok subscription for Grok image, video, and TTS in Open Design — no API key needed.',
'settings.xaiOAuthWarningTitle': 'Heads up:',
'settings.xaiOAuthWarningCannotConnect': '"Cannot connect to your application"',
'settings.xaiOAuthWarningUxBug': 'That is a UX bug on xAI\'s side',
'settings.xaiOAuthWarningDetail': 'the authorization is still being delivered to Open Design in the background. Stay on this panel; it will switch to Signed in with X automatically. Do not retry from xAI\'s page.',
'settings.xaiOAuthConnecting': 'Connecting…',
'settings.xaiOAuthReconnect': 'Reconnect',
'settings.xaiOAuthDisconnecting': 'Disconnecting…',
'settings.xaiOAuthDisconnect': 'Disconnect',
'settings.xaiOAuthOpeningBrowser': 'Opening browser…',
'settings.xaiOAuthSignIn': 'Sign in with X',
'settings.xaiOAuthChecking': 'Checking…',
'settings.xaiOAuthRefreshStatus': 'Refresh status',
'settings.xaiOAuthBrowserNotOpen': 'Browser tab didn\'t open?',
'settings.xaiOAuthOpenManually': 'Click here to open the authorize URL manually',
'settings.xaiOAuthPasteHint': 'xAI may show a code instead of redirecting back. Paste it here:',
'settings.xaiOAuthPastePlaceholder': 'Paste auth code from xAI',
'settings.xaiOAuthSubmitting': 'Submitting…',
'settings.xaiOAuthSubmitCode': 'Submit code',
'settings.xaiOAuthReauthTitle': 'Re-authenticate (replaces the existing token)',
'settings.xaiOAuthGrantedScopes': 'Granted scopes:',
'settings.privacy': 'Privacy',
'settings.privacyHint': 'What data is shared with the Open Design team',
'settings.privacyConsentKicker': 'Help us improve Open Design',

View file

@ -339,6 +339,36 @@ export const th: Dict = {
'settings.mediaProviderPlaceholder': 'วาง API key',
'settings.mediaProviderBaseUrlPlaceholder': 'กำหนด Base URL แท่นค่าเริ่มต้น',
'settings.mediaProviderComingSoonHint': 'เราติดตามสิ่งเหล่านี้สำหรับแผนงาน daemon ยังไม่ได้จัดส่งไคลเอนต์ ดังนั้นจึงไม่มีอะไรให้กำหนดค่า',
// xAI OAuth (XaiOAuthControl component)
'settings.xaiOAuthSignedIn': 'Signed in with X.',
'settings.xaiOAuthTokenExpiresHint': 'SuperGrok subscription token expires {date}. You can close any open xAI browser tabs now.',
'settings.xaiOAuthConnectedHint': 'SuperGrok subscription connected. You can close any open xAI browser tabs now.',
'settings.xaiOAuthWaitingAuth': 'Waiting for authorization…',
'settings.xaiOAuthWaitingAuthHint': 'Open Design is listening for the callback in the background. This panel will switch to Signed in within a few seconds of your approving on xAI.',
'settings.xaiOAuthNotSignedIn': 'Not signed in.',
'settings.xaiOAuthNotSignedInHint': 'Click Sign in with X to use your SuperGrok subscription for Grok image, video, and TTS in Open Design — no API key needed.',
'settings.xaiOAuthWarningTitle': 'Heads up:',
'settings.xaiOAuthWarningCannotConnect': '"Cannot connect to your application"',
'settings.xaiOAuthWarningUxBug': 'That is a UX bug on xAI\'s side',
'settings.xaiOAuthWarningDetail': 'the authorization is still being delivered to Open Design in the background. Stay on this panel; it will switch to Signed in with X automatically. Do not retry from xAI\'s page.',
'settings.xaiOAuthConnecting': 'Connecting…',
'settings.xaiOAuthReconnect': 'Reconnect',
'settings.xaiOAuthDisconnecting': 'Disconnecting…',
'settings.xaiOAuthDisconnect': 'Disconnect',
'settings.xaiOAuthOpeningBrowser': 'Opening browser…',
'settings.xaiOAuthSignIn': 'Sign in with X',
'settings.xaiOAuthChecking': 'Checking…',
'settings.xaiOAuthRefreshStatus': 'Refresh status',
'settings.xaiOAuthBrowserNotOpen': 'Browser tab didn\'t open?',
'settings.xaiOAuthOpenManually': 'Click here to open the authorize URL manually',
'settings.xaiOAuthPasteHint': 'xAI may show a code instead of redirecting back. Paste it here:',
'settings.xaiOAuthPastePlaceholder': 'Paste auth code from xAI',
'settings.xaiOAuthSubmitting': 'Submitting…',
'settings.xaiOAuthSubmitCode': 'Submit code',
'settings.xaiOAuthReauthTitle': 'Re-authenticate (replaces the existing token)',
'settings.xaiOAuthGrantedScopes': 'Granted scopes:',
'settings.privacy': 'ความเป็นส่วนตัว',
'settings.privacyHint': 'ข้อมูลที่แชร์กับทีม Open Design',
'settings.privacyConsentKicker': 'ช่วยเราพัฒนา Open Design',

View file

@ -345,6 +345,36 @@ export const tr: Dict = {
'settings.mediaProviderReloadSuccess': 'Medya sağlayıcı ayarları yerel daemondan yeniden yüklendi.',
'settings.mediaProviderLoadError': 'Medya sağlayıcı ayarları yerel daemondan yüklenemedi. Şimdilik tarayıcıya kaydedilen ayarlar kullanılıyor.',
'settings.mediaProviderComingSoonHint': 'Bunları yol haritası için takip ediyoruz; daemon henüz bir istemci göndermediği için yapılandırılacak bir şey yok.',
// xAI OAuth (XaiOAuthControl component)
'settings.xaiOAuthSignedIn': 'Signed in with X.',
'settings.xaiOAuthTokenExpiresHint': 'SuperGrok subscription token expires {date}. You can close any open xAI browser tabs now.',
'settings.xaiOAuthConnectedHint': 'SuperGrok subscription connected. You can close any open xAI browser tabs now.',
'settings.xaiOAuthWaitingAuth': 'Waiting for authorization…',
'settings.xaiOAuthWaitingAuthHint': 'Open Design is listening for the callback in the background. This panel will switch to Signed in within a few seconds of your approving on xAI.',
'settings.xaiOAuthNotSignedIn': 'Not signed in.',
'settings.xaiOAuthNotSignedInHint': 'Click Sign in with X to use your SuperGrok subscription for Grok image, video, and TTS in Open Design — no API key needed.',
'settings.xaiOAuthWarningTitle': 'Heads up:',
'settings.xaiOAuthWarningCannotConnect': '"Cannot connect to your application"',
'settings.xaiOAuthWarningUxBug': 'That is a UX bug on xAI\'s side',
'settings.xaiOAuthWarningDetail': 'the authorization is still being delivered to Open Design in the background. Stay on this panel; it will switch to Signed in with X automatically. Do not retry from xAI\'s page.',
'settings.xaiOAuthConnecting': 'Connecting…',
'settings.xaiOAuthReconnect': 'Reconnect',
'settings.xaiOAuthDisconnecting': 'Disconnecting…',
'settings.xaiOAuthDisconnect': 'Disconnect',
'settings.xaiOAuthOpeningBrowser': 'Opening browser…',
'settings.xaiOAuthSignIn': 'Sign in with X',
'settings.xaiOAuthChecking': 'Checking…',
'settings.xaiOAuthRefreshStatus': 'Refresh status',
'settings.xaiOAuthBrowserNotOpen': 'Browser tab didn\'t open?',
'settings.xaiOAuthOpenManually': 'Click here to open the authorize URL manually',
'settings.xaiOAuthPasteHint': 'xAI may show a code instead of redirecting back. Paste it here:',
'settings.xaiOAuthPastePlaceholder': 'Paste auth code from xAI',
'settings.xaiOAuthSubmitting': 'Submitting…',
'settings.xaiOAuthSubmitCode': 'Submit code',
'settings.xaiOAuthReauthTitle': 'Re-authenticate (replaces the existing token)',
'settings.xaiOAuthGrantedScopes': 'Granted scopes:',
'settings.privacy': 'Privacy',
'settings.privacyHint': 'What data is shared with the Open Design team',
'settings.privacyConsentKicker': 'Help us improve Open Design',

View file

@ -356,6 +356,36 @@ export const uk: Dict = {
'settings.mediaProviderReloadSuccess': 'Налаштування медіапровайдерів повторно завантажено з локального демона.',
'settings.mediaProviderLoadError': 'Не вдалося завантажити налаштування медіапровайдерів із локального демона. Наразі використовуються налаштування, збережені в браузері.',
'settings.mediaProviderComingSoonHint': 'Ми відстежуємо їх у дорожній карті; демон ще не постачає клієнт, тому налаштовувати нічого.',
// xAI OAuth (XaiOAuthControl component)
'settings.xaiOAuthSignedIn': 'Signed in with X.',
'settings.xaiOAuthTokenExpiresHint': 'SuperGrok subscription token expires {date}. You can close any open xAI browser tabs now.',
'settings.xaiOAuthConnectedHint': 'SuperGrok subscription connected. You can close any open xAI browser tabs now.',
'settings.xaiOAuthWaitingAuth': 'Waiting for authorization…',
'settings.xaiOAuthWaitingAuthHint': 'Open Design is listening for the callback in the background. This panel will switch to Signed in within a few seconds of your approving on xAI.',
'settings.xaiOAuthNotSignedIn': 'Not signed in.',
'settings.xaiOAuthNotSignedInHint': 'Click Sign in with X to use your SuperGrok subscription for Grok image, video, and TTS in Open Design — no API key needed.',
'settings.xaiOAuthWarningTitle': 'Heads up:',
'settings.xaiOAuthWarningCannotConnect': '"Cannot connect to your application"',
'settings.xaiOAuthWarningUxBug': 'That is a UX bug on xAI\'s side',
'settings.xaiOAuthWarningDetail': 'the authorization is still being delivered to Open Design in the background. Stay on this panel; it will switch to Signed in with X automatically. Do not retry from xAI\'s page.',
'settings.xaiOAuthConnecting': 'Connecting…',
'settings.xaiOAuthReconnect': 'Reconnect',
'settings.xaiOAuthDisconnecting': 'Disconnecting…',
'settings.xaiOAuthDisconnect': 'Disconnect',
'settings.xaiOAuthOpeningBrowser': 'Opening browser…',
'settings.xaiOAuthSignIn': 'Sign in with X',
'settings.xaiOAuthChecking': 'Checking…',
'settings.xaiOAuthRefreshStatus': 'Refresh status',
'settings.xaiOAuthBrowserNotOpen': 'Browser tab didn\'t open?',
'settings.xaiOAuthOpenManually': 'Click here to open the authorize URL manually',
'settings.xaiOAuthPasteHint': 'xAI may show a code instead of redirecting back. Paste it here:',
'settings.xaiOAuthPastePlaceholder': 'Paste auth code from xAI',
'settings.xaiOAuthSubmitting': 'Submitting…',
'settings.xaiOAuthSubmitCode': 'Submit code',
'settings.xaiOAuthReauthTitle': 'Re-authenticate (replaces the existing token)',
'settings.xaiOAuthGrantedScopes': 'Granted scopes:',
'settings.privacy': 'Privacy',
'settings.privacyHint': 'What data is shared with the Open Design team',
'settings.privacyConsentKicker': 'Help us improve Open Design',

View file

@ -365,6 +365,36 @@ export const zhCN: Dict = {
'settings.mediaProviderReloadSuccess': '已从本地守护进程重新加载媒体提供方设置。',
'settings.mediaProviderLoadError': '无法从本地守护进程加载媒体提供方设置。当前将使用浏览器中保存的设置。',
'settings.mediaProviderComingSoonHint': '我们在路线图中跟踪这些提供方;守护进程尚未提供客户端,因此暂无可配置项。',
// xAI OAuth (XaiOAuthControl component)
'settings.xaiOAuthSignedIn': '已通过 X 登录。',
'settings.xaiOAuthTokenExpiresHint': 'SuperGrok 订阅令牌将于 {date} 过期。您现在可以关闭所有打开的 xAI 浏览器标签页。',
'settings.xaiOAuthConnectedHint': 'SuperGrok 订阅已连接。您现在可以关闭所有打开的 xAI 浏览器标签页。',
'settings.xaiOAuthWaitingAuth': '等待授权中…',
'settings.xaiOAuthWaitingAuthHint': 'Open Design 正在后台监听回调。在您于 xAI 上批准后的几秒钟内,此面板将切换为"已登录"状态。',
'settings.xaiOAuthNotSignedIn': '未登录。',
'settings.xaiOAuthNotSignedInHint': '点击"通过 X 登录"以使用您的 SuperGrok 订阅在 Open Design 中生成 Grok 图像、视频和 TTS — 无需 API 密钥。',
'settings.xaiOAuthWarningTitle': '注意:',
'settings.xaiOAuthWarningCannotConnect': '"无法连接到您的应用程序"',
'settings.xaiOAuthWarningUxBug': '这是 xAI 方面的用户体验问题',
'settings.xaiOAuthWarningDetail': '授权仍在后台传递给 Open Design。请留在此面板它将自动切换为"已通过 X 登录"。请勿从 xAI 页面重试。',
'settings.xaiOAuthConnecting': '连接中…',
'settings.xaiOAuthReconnect': '重新连接',
'settings.xaiOAuthDisconnecting': '断开连接中…',
'settings.xaiOAuthDisconnect': '断开连接',
'settings.xaiOAuthOpeningBrowser': '打开浏览器中…',
'settings.xaiOAuthSignIn': '通过 X 登录',
'settings.xaiOAuthChecking': '检查中…',
'settings.xaiOAuthRefreshStatus': '刷新状态',
'settings.xaiOAuthBrowserNotOpen': '浏览器标签页未打开?',
'settings.xaiOAuthOpenManually': '点击此处手动打开授权 URL',
'settings.xaiOAuthPasteHint': 'xAI 可能会显示代码而不是重定向回来。请在此处粘贴:',
'settings.xaiOAuthPastePlaceholder': '粘贴来自 xAI 的授权代码',
'settings.xaiOAuthSubmitting': '提交中…',
'settings.xaiOAuthSubmitCode': '提交代码',
'settings.xaiOAuthReauthTitle': '重新认证(将替换现有令牌)',
'settings.xaiOAuthGrantedScopes': '已授予的权限范围:',
'settings.privacy': '隐私',
'settings.privacyHint': '与 Open Design 团队共享哪些数据',
'settings.privacyConsentKicker': '帮助我们改进 Open Design',

View file

@ -357,6 +357,36 @@ export const zhTW: Dict = {
'settings.mediaProviderReloadSuccess': '已從本機守護程序重新載入媒體供應商設定。',
'settings.mediaProviderLoadError': '無法從本機守護程序載入媒體供應商設定。目前將使用瀏覽器中儲存的設定。',
'settings.mediaProviderComingSoonHint': '我們在路線圖中追蹤這些提供者;守護程式尚未提供客戶端,因此暫無可配置項。',
// xAI OAuth (XaiOAuthControl component)
'settings.xaiOAuthSignedIn': 'Signed in with X.',
'settings.xaiOAuthTokenExpiresHint': 'SuperGrok subscription token expires {date}. You can close any open xAI browser tabs now.',
'settings.xaiOAuthConnectedHint': 'SuperGrok subscription connected. You can close any open xAI browser tabs now.',
'settings.xaiOAuthWaitingAuth': 'Waiting for authorization…',
'settings.xaiOAuthWaitingAuthHint': 'Open Design is listening for the callback in the background. This panel will switch to Signed in within a few seconds of your approving on xAI.',
'settings.xaiOAuthNotSignedIn': 'Not signed in.',
'settings.xaiOAuthNotSignedInHint': 'Click Sign in with X to use your SuperGrok subscription for Grok image, video, and TTS in Open Design — no API key needed.',
'settings.xaiOAuthWarningTitle': 'Heads up:',
'settings.xaiOAuthWarningCannotConnect': '"Cannot connect to your application"',
'settings.xaiOAuthWarningUxBug': 'That is a UX bug on xAI\'s side',
'settings.xaiOAuthWarningDetail': 'the authorization is still being delivered to Open Design in the background. Stay on this panel; it will switch to Signed in with X automatically. Do not retry from xAI\'s page.',
'settings.xaiOAuthConnecting': 'Connecting…',
'settings.xaiOAuthReconnect': 'Reconnect',
'settings.xaiOAuthDisconnecting': 'Disconnecting…',
'settings.xaiOAuthDisconnect': 'Disconnect',
'settings.xaiOAuthOpeningBrowser': 'Opening browser…',
'settings.xaiOAuthSignIn': 'Sign in with X',
'settings.xaiOAuthChecking': 'Checking…',
'settings.xaiOAuthRefreshStatus': 'Refresh status',
'settings.xaiOAuthBrowserNotOpen': 'Browser tab didn\'t open?',
'settings.xaiOAuthOpenManually': 'Click here to open the authorize URL manually',
'settings.xaiOAuthPasteHint': 'xAI may show a code instead of redirecting back. Paste it here:',
'settings.xaiOAuthPastePlaceholder': 'Paste auth code from xAI',
'settings.xaiOAuthSubmitting': 'Submitting…',
'settings.xaiOAuthSubmitCode': 'Submit code',
'settings.xaiOAuthReauthTitle': 'Re-authenticate (replaces the existing token)',
'settings.xaiOAuthGrantedScopes': 'Granted scopes:',
'settings.privacy': '隱私',
'settings.privacyHint': '與 Open Design 團隊共享哪些資料',
'settings.privacyConsentKicker': '協助我們改進 Open Design',

View file

@ -367,6 +367,36 @@ export interface Dict {
'settings.mediaProviderReloadSuccess': string;
'settings.mediaProviderLoadError': string;
'settings.mediaProviderComingSoonHint': string;
// xAI OAuth (XaiOAuthControl component)
'settings.xaiOAuthSignedIn': string;
'settings.xaiOAuthTokenExpiresHint': string;
'settings.xaiOAuthConnectedHint': string;
'settings.xaiOAuthWaitingAuth': string;
'settings.xaiOAuthWaitingAuthHint': string;
'settings.xaiOAuthNotSignedIn': string;
'settings.xaiOAuthNotSignedInHint': string;
'settings.xaiOAuthWarningTitle': string;
'settings.xaiOAuthWarningCannotConnect': string;
'settings.xaiOAuthWarningUxBug': string;
'settings.xaiOAuthWarningDetail': string;
'settings.xaiOAuthConnecting': string;
'settings.xaiOAuthReconnect': string;
'settings.xaiOAuthDisconnecting': string;
'settings.xaiOAuthDisconnect': string;
'settings.xaiOAuthOpeningBrowser': string;
'settings.xaiOAuthSignIn': string;
'settings.xaiOAuthChecking': string;
'settings.xaiOAuthRefreshStatus': string;
'settings.xaiOAuthBrowserNotOpen': string;
'settings.xaiOAuthOpenManually': string;
'settings.xaiOAuthPasteHint': string;
'settings.xaiOAuthPastePlaceholder': string;
'settings.xaiOAuthSubmitting': string;
'settings.xaiOAuthSubmitCode': string;
'settings.xaiOAuthReauthTitle': string;
'settings.xaiOAuthGrantedScopes': string;
'settings.privacy': string;
'settings.privacyHint': string;
'settings.privacyConsentKicker': string;