@nac3/forge-cli 1.0.54 → 1.0.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -230,5 +230,296 @@
230
230
  "panel.files.empty": "(keine Dateien)",
231
231
  "panel.files.truncated": "(Liste gekürzt)",
232
232
  "panel.files.opened": "Geöffnet",
233
- "panel.files.openFailed": "Datei konnte nicht geöffnet werden."
233
+ "panel.files.openFailed": "Datei konnte nicht geöffnet werden.",
234
+ "startup.tab.tasks": "Aufgaben",
235
+ "settings.bridge.title": "Koordination zwischen Instanzen",
236
+ "settings.bridge.accept": "Gerichtete Nachrichten anderer Instanzen akzeptieren (als Chat eingefugt)",
237
+ "settings.bridge.composePlaceholder": "Nachricht an die anderen Instanzen...",
238
+ "settings.voice.title": "Sprache",
239
+ "settings.voice.mode": "Modus",
240
+ "settings.voice.modeMic": "Mikrofonmodus",
241
+ "settings.voice.stt": "STT",
242
+ "settings.voice.sttBrowser": "STT Browser",
243
+ "settings.voice.ttsEngine": "TTS-Engine",
244
+ "settings.voice.ttsBrowser": "TTS Browser",
245
+ "settings.voice.ttsVoice": "TTS-Stimme (nur Google)",
246
+ "settings.vad.title": "VAD (Stilleerkennung)",
247
+ "settings.vad.resetDefaults": "Standard zurucksetzen",
248
+ "settings.vad.engine": "Engine",
249
+ "settings.vad.engineAmplitude": "Amplitude (RMS)",
250
+ "settings.vad.engineBand": "Band 80-400Hz",
251
+ "settings.vad.baselineWindow": "Baseline-Fenster",
252
+ "settings.vad.thresholdMult": "Schwellen-Mult. (Baseline x N)",
253
+ "settings.vad.thresholdMin": "Mindestschwelle",
254
+ "settings.vad.thresholdMax": "Maximalschwelle",
255
+ "settings.vad.silence": "Stille zum Schliessen",
256
+ "settings.vad.minVoiced": "Minimale Stimme (Anti-Blip)",
257
+ "settings.vad.tick": "VAD-Tick",
258
+ "settings.vad.bandLow": "Sprachband: low (Hz)",
259
+ "settings.vad.bandHigh": "Sprachband: high (Hz)",
260
+ "settings.vad.showOverlay": "Live-Overlay anzeigen",
261
+ "settings.vad.logStats": "Statistiken pro Sitzung protokollieren",
262
+ "settings.brain.anthropicMode": "Anthropic: Modus",
263
+ "settings.brain.modePlan": "Plan (Claude-Abo)",
264
+ "settings.brain.modeConsole": "Console (API key)",
265
+ "settings.brain.modeNote": "Wird beim erneuten Offnen des Panels wirksam.",
266
+ "settings.brain.ecoEnabled": "Eco-Modus aktiviert",
267
+ "settings.brain.ecoHint": "aus = immer frontier",
268
+ "settings.brain.modelEco": "Eco-Modell",
269
+ "settings.brain.modelFrontier": "Frontier-Modell",
270
+ "settings.brain.modelMultimodal": "Multimodal-Modell",
271
+ "settings.brain.multimodalClearTitle": "Dediziertes multimodal Brain entfernen (zuruck zur automatischen Vision-Weiterleitung)",
272
+ "settings.brain.auto": "Auto",
273
+ "settings.brain.multimodalHint": "Dediziertes Brain fur Bild-Turns. Auto = automatische Vision-Weiterleitung (das frontier, wenn es sieht, sonst Hinweis).",
274
+ "settings.brain.geminiCache": "Expliziter Gemini-Cache (CachedContent)",
275
+ "settings.brain.geminiCacheHint": "Opt-in. Nutzlich bei langen Sitzungen mit Gemini Pro; bei kurzen Sitzungen reicht der kostenlose implizite Cache von 2.5.",
276
+ "settings.federation.title": "Brain-Foderation",
277
+ "settings.federation.intro": "Nutze das Brain eines anderen Forge (sein Key verlasst nie seine Maschine) oder verleihe deins. Dein Code lauft lokal; nur die Inferenz reist.",
278
+ "settings.federation.connectedTo": "Verbunden mit",
279
+ "settings.federation.disconnect": "Trennen",
280
+ "settings.federation.connectMe": "Mich verbinden",
281
+ "settings.federation.tokenPlaceholder": "Foderationscode einfugen",
282
+ "settings.federation.connect": "Verbinden",
283
+ "settings.federation.lendBrain": "Mein Brain verleihen",
284
+ "settings.federation.generateCode": "Code generieren",
285
+ "settings.federation.host": "Hosten (auf Kinder antworten)",
286
+ "settings.federation.fedBrain": "Foderations-Brain",
287
+ "settings.federation.fedBrainNote": "Das, was auf Kinder antwortet. Direkte API (DeepSeek standardmassig). Claude Plan kann nicht hosten; es braucht einen Key mit Guthaben.",
288
+ "settings.federation.codeOnce": "Code (einmalig)",
289
+ "settings.federation.copy": "Kopieren",
290
+ "settings.keys.title": "API keys (BYOK)",
291
+ "settings.keys.configure": "Konfigurieren",
292
+ "settings.keys.remove": "Entfernen",
293
+ "settings.keys.brainAnthropic": "Brain (Anthropic)",
294
+ "settings.keys.brainOpenai": "Brain (OpenAI)",
295
+ "settings.keys.brainGoogle": "Brain (Google KI)",
296
+ "settings.keys.brainDeepseek": "Brain (DeepSeek)",
297
+ "settings.keys.brainXai": "Brain (xAI / Grok)",
298
+ "settings.keys.brainMistral": "Brain (Mistral)",
299
+ "settings.keys.brainCohere": "Brain (Cohere)",
300
+ "settings.keys.sttGoogle": "STT Google",
301
+ "settings.keys.ttsGoogle": "TTS Google",
302
+ "settings.keys.ttsElevenlabs": "TTS ElevenLabs",
303
+ "settings.keys.sttWhisper": "STT Whisper",
304
+ "settings.lang.title": "Sprache",
305
+ "settings.lang.panelVoice": "Panel + Sprache",
306
+ "settings.lang.changeButton": "Sprache andern",
307
+ "settings.vault.title": "Vault (verschlusselt)",
308
+ "settings.vault.slots": "Slots",
309
+ "settings.vault.open": "Vault offnen",
310
+ "settings.license.email": "E-Mail",
311
+ "settings.license.validated": "Validiert",
312
+ "settings.license.connectHint": "Verbinde dein Polar-Konto. Gib die E-Mail ein, mit der du bezahlt hast, und wir synchronisieren deinen Plan automatisch.",
313
+ "settings.license.emailPlaceholder": "email@beispiel.com",
314
+ "settings.license.connect": "Verbinden",
315
+ "settings.license.sync": "Mit Polar synchronisieren",
316
+ "settings.license.buy": "Plan kaufen / aktivieren",
317
+ "settings.budget.title": "Budget diesen Monat",
318
+ "settings.budget.renews": "Verlangert",
319
+ "settings.budget.tokensEco": "Eco-Tokens",
320
+ "settings.budget.tokensFrontier": "Frontier-Tokens",
321
+ "settings.budget.buyExtension": "Token-Erweiterung kaufen",
322
+ "settings.limits.title": "Limits (erweitert)",
323
+ "settings.limits.editHint": "Beliebigen Wert bearbeiten + Tab/Blur speichert.",
324
+ "settings.limits.reset": "Auf Standard zurucksetzen",
325
+ "settings.bookmarks.title": "Reader-Lesezeichen",
326
+ "settings.graph.title": "Projekt-Wissensgraph",
327
+ "settings.pair.title": "Telefon verknupfen",
328
+ "settings.pair.hint": "Offne Forge Mobile, tippe auf \"Verknupfen\" und scanne diesen QR. Fertig.",
329
+ "settings.pair.generateQr": "QR generieren",
330
+ "settings.pair.cantRead": "Kamera liest den QR nicht? Kopiere diesen Code und fuge ihn in Forge Mobile ein:",
331
+ "settings.audit.viewFull": "Vollstandig anzeigen",
332
+ "settings.audit.close": "Schliessen",
333
+ "settings.audit.allKinds": "Alle Kinds",
334
+ "settings.audit.allModes": "Alle Modes",
335
+ "settings.audit.copyJson": "JSON kopieren",
336
+ "settings.audit.closeDetail": "Detail schliessen",
337
+ "settings.about.title": "Uber",
338
+ "settings.danger.title": "Gefahrenzone",
339
+ "settings.danger.warning": "Wenn ON, fuhrt Yujin JEDE Aktion ohne Bestatigung aus (einschliesslich shell.exec, rm, git push --force usw). Geschwindigkeit vor Sicherheit. Alles wird im Audit-Log aufgezeichnet.",
340
+ "settings.keyEditor.placeholder": "Fuge hier deinen API key ein",
341
+ "settings.license.title": "Lizenz",
342
+ "settings.plan": "Tarif",
343
+ "settings.audit.title": "Audit-Log",
344
+ "settings.legal.title": "Rechtliches",
345
+ "panel.status.projectSwitchFail": "Projektwechsel nicht moeglich.",
346
+ "panel.status.projectRemoveFail": "Projekt konnte nicht entfernt werden.",
347
+ "panel.status.projectAddFail": "Projekt konnte nicht hinzugefuegt werden.",
348
+ "panel.status.cancelFail": "Abbruch nicht moeglich: {reason}",
349
+ "panel.status.cancelNetError": "Netzwerkfehler beim Abbrechen der Shell.",
350
+ "panel.status.notEditable": "Diese Art von Inhalt ist nicht bearbeitbar.",
351
+ "panel.status.savedAsPicker": "Gespeichert als: {name} (am im Dialog gewaehlten Pfad).",
352
+ "panel.status.saveAsFail": "Fehler bei Speichern unter: {error} -- Fallback wird verwendet.",
353
+ "panel.status.saveFail": "Fehler beim Speichern: {error}",
354
+ "panel.status.savedAs": "Gespeichert als: {path} ({bytes} Bytes)",
355
+ "panel.status.netError": "Netzwerkfehler: {error}",
356
+ "panel.status.savedTabOnly": "Aenderungen im Tab gespeichert (nicht auf der Festplatte -- ohne file_path).",
357
+ "panel.status.saved": "Gespeichert: {path} ({bytes} Bytes)",
358
+ "panel.status.copied": "In die Zwischenablage kopiert.",
359
+ "panel.status.copyFail": "Kopieren nicht moeglich.",
360
+ "panel.status.modeAvailable": "Verfuegbare Modi: didactico, tecnico. Verwendung: /modo tecnico",
361
+ "panel.status.modeChangeFail": "Modus konnte nicht geaendert werden: {error}",
362
+ "panel.status.modeChanged": "Modus auf {target} geaendert. Der naechste Zug verwendet bereits diesen Modus.",
363
+ "panel.status.genericError": "Fehler: {error}",
364
+ "panel.status.brainTierAuto": "Brain-Tier zurueck auf auto (der Router entscheidet nach Verb / Phase).",
365
+ "panel.status.brainTierForced": "Brain-Tier fuer diese Sitzung auf \"{target}\" gesetzt. /auto kehrt zum Router zurueck.",
366
+ "panel.confirm.tabUnsaved": "Der Tab \"{title}\" hat ungespeicherte Aenderungen. Trotzdem schliessen?",
367
+ "panel.confirm.tabsUnsaved": "Es gibt Tabs mit ungespeicherten Aenderungen. Trotzdem alles schliessen?",
368
+ "panel.confirm.discardChanges": "Ungespeicherte Aenderungen verwerfen?",
369
+ "panel.confirm.removeSlot": "Slot \"{slot}\" entfernen? Dies kann nicht rueckgaengig gemacht werden.",
370
+ "panel.confirm.removeKey": "Key fuer {slot} entfernen?",
371
+ "panel.prompt.saveAs": "Speichern unter (Pfad relativ zum Projekt):",
372
+ "panel.voice.sttFallback": "Browser-STT nicht verfuegbar; serverseitiger Fallback wird verwendet.",
373
+ "panel.voice.noMicSupport": "Ihr Browser unterstuetzt keinen Mikrofonzugriff.",
374
+ "panel.voice.recordingCountdown": "Aufnahme... Auto-Stopp in {n}s",
375
+ "panel.voice.autoStopped": "Aufnahme nach 55s automatisch gestoppt (Google-STT-Limit von 1 Min). Versuchen Sie es kuerzer.",
376
+ "panel.voice.noAudio": "Kein Audio aufgenommen. Versuchen Sie es erneut.",
377
+ "panel.voice.audioTooLong": "Audio zu lang (>1 Min). Google-STT-Sync-Limit. Versuchen Sie es kuerzer.",
378
+ "panel.voice.ttsUnavailable": "Browser-TTS nicht verfuegbar; wechseln Sie in den Einstellungen zurueck zu Google.",
379
+ "panel.voice.micClosedHalfDuplex": "Mikrofon geschlossen, waehrend Yujin spricht (Halbduplex).",
380
+ "panel.voice.micBlocked": "Mikrofon blockiert. Erlauben Sie das Mikrofon fuer diese App in den Browsereinstellungen und versuchen Sie es erneut.",
381
+ "panel.voice.noMicDevice": "Kein Mikrofon auf diesem Geraet erkannt.",
382
+ "panel.voice.micOpenFail": "Mikrofon konnte nicht geoeffnet werden: {error}",
383
+ "panel.voice.micOpenListening": "Mikrofon offen, hoert zu...",
384
+ "panel.voice.listening": "Ich hoere zu...",
385
+ "panel.voice.listeningInterim": "Ich hoere zu... {text}",
386
+ "panel.voice.micBlockedBrowser": "Mikrofon vom Browser blockiert. Klicken Sie auf das Schloss-Symbol in der URL-Leiste, erlauben Sie das Mikrofon und laden Sie die Seite neu. Oder wechseln Sie STT in den Einstellungen auf \"google\" / \"whisper\", wenn Sie die API key haben.",
387
+ "panel.voice.noMicPhysical": "Kein physisches Mikrofon erkannt. Schliessen Sie eines an oder wechseln Sie STT in den Einstellungen auf \"google\" / \"whisper\".",
388
+ "panel.voice.networkRequired": "Web Speech benoetigt eine Internetverbindung (Chrome nutzt im Hintergrund Google). Versuchen Sie es ohne instabile Verbindung oder wechseln Sie STT auf \"whisper\", wenn Sie die API key haben.",
389
+ "panel.voice.langNotSupported": "Ihr Browser unterstuetzt diese Sprache fuer STT nicht. Aendern Sie die Panel-Sprache auf eine unterstuetzte (en, es, pt) oder wechseln Sie STT auf \"google\" / \"whisper\".",
390
+ "panel.voice.micError": "Mikrofonfehler: {error}",
391
+ "panel.voice.noAudioToRecognizer": "Kein Audio hat den Erkenner erreicht: Das Diktat des Browsers nimmt in dieser App nicht auf.",
392
+ "panel.voice.micOpenNoVoice": "Mikrofon offen, aber keine Stimme erkannt. Gehen Sie naeher ans Mikrofon und sprechen Sie lauter; wenn es weiterhin auftritt, funktioniert das kostenlose Diktat in dieser PWA nicht.",
393
+ "panel.voice.voiceNoText": "Stimme erkannt, aber der Browser hat keinen Text zurueckgegeben (kostenloses STT in dieser PWA nicht verfuegbar).",
394
+ "panel.voice.startingDictation": "Diktat wird gestartet...",
395
+ "panel.voice.couldNotStartMic": "Mikrofon konnte nicht gestartet werden: {error}",
396
+ "panel.status.imageTooLarge": "Bild zu gross (>6MB): {name}",
397
+ "panel.status.imageReady": "Bild bereit zum Senden: {name}",
398
+ "panel.status.imageReadFail": "Bild konnte nicht gelesen werden: {error}",
399
+ "panel.tip.attachFile": "Datei anhangen",
400
+ "panel.tip.refreshDiscovery": "Discovery aktualisieren",
401
+ "panel.tip.refreshNow": "Jetzt aktualisieren",
402
+ "panel.tip.filterByProject": "Nach Projekt filtern",
403
+ "panel.tip.concurrentRuns": "Gleichzeitige Laufe: globale / projektbezogene Limits",
404
+ "panel.tip.mcpBridges": "MCP Bridges (F101)",
405
+ "panel.tip.activity": "Agentenaktivitat + Bridge-Inspektor + Chat pro Agent",
406
+ "panel.tip.settings": "Einstellungen (Sprachmodus, STT, TTS, Schlussel, Sprache)",
407
+ "panel.tip.zoomOut": "Verkleinern (Ctrl -)",
408
+ "panel.tip.zoomReset": "Zoom zurucksetzen (Ctrl 0)",
409
+ "panel.tip.zoomIn": "Vergrossern (Ctrl +)",
410
+ "panel.tip.maximize": "Maximieren / wiederherstellen (Vollbild)",
411
+ "panel.tip.closeBoard": "Gesamtes Board schliessen",
412
+ "panel.tip.openInEditor": "In meinem Editor offnen",
413
+ "panel.tip.open": "Offnen",
414
+ "panel.tip.saveAs": "Speichern unter -- neuen Pfad wahlen (relativ zum Projekt)",
415
+ "panel.tip.codeModeDetail": "Detailliert: Dateien, Diffs und Befehle live",
416
+ "panel.tip.codeModeZen": "Sumi-e: Kunst mit gelegentlichem Text",
417
+ "panel.tip.cancelShell": "Shell-Befehl abbrechen",
418
+ "panel.tip.closeTab": "Tab schliessen",
419
+ "panel.tip.reopenNativeTabs": "Geschlossene native Tabs erneut offnen",
420
+ "panel.tip.notTestedYet": "noch nicht getestet",
421
+ "panel.aria.activity": "Aktivitat",
422
+ "panel.aria.settings": "Einstellungen",
423
+ "panel.aria.zoomOut": "Verkleinern",
424
+ "panel.aria.zoomIn": "Vergrossern",
425
+ "panel.aria.maximize": "Maximieren",
426
+ "panel.aria.closeBoard": "alle schliessen",
427
+ "panel.aria.thinking": "denkt nach",
428
+ "panel.hint.boardEmpty": "Strukturierte Inhalte erscheinen hier: Code, Tabellen, Dokumente. Bitte Yujin, etwas zu schreiben oder zu bearbeiten.",
429
+ "panel.hint.planMode": "Sie befinden sich im Plan-Modus (Abonnement). Das Board wird gezeichnet, wenn der Brain im API-Modus lauft: andern Sie es unter <strong>Einstellungen &gt; Brain &gt; Anthropic: Modus &gt; Console</strong> und offnen Sie das Panel erneut.",
430
+ "panel.hint.bookmarksEmpty": "Keine Bookmarks. Bitte Yujin \"markiere diesen Punkt als ...\" beim Lesen eines Dokuments.",
431
+ "panel.voice.replyFailed": "Sprachantwort fehlgeschlagen: {err}",
432
+ "panel.voice.replyError": "Fehler bei der Sprachantwort: {err}",
433
+ "panel.status.languageSwitchFailed": "Sprachwechsel fehlgeschlagen: {err}",
434
+ "panel.status.languageListFailed": "Sprachliste konnte nicht geladen werden",
435
+ "panel.legal.loading": "Wird geladen...",
436
+ "panel.legal.loadError": "Fehler {status} beim Laden des Dokuments.",
437
+ "panel.legal.networkError": "Netzwerkfehler: {err}",
438
+ "panel.legal.defaultTitle": "Rechtliches",
439
+ "panel.feedback.copied": "Kopiert",
440
+ "panel.feedback.copyFailed": "Kopieren fehlgeschlagen",
441
+ "panel.feedback.clipboardUnavailable": "Zwischenablage nicht verfugbar",
442
+ "panel.feedback.saving": "Wird gespeichert...",
443
+ "panel.feedback.saved": "Gespeichert.",
444
+ "panel.feedback.saveError": "Fehler beim Speichern",
445
+ "panel.feedback.netError": "Netzwerkfehler",
446
+ "panel.feedback.netErrorSaving": "Netzwerkfehler beim Speichern",
447
+ "panel.feedback.errorPrefix": "Fehler: {detail}",
448
+ "panel.pair.generating": "Wird generiert...",
449
+ "panel.pair.generateQr": "QR generieren",
450
+ "panel.pair.copy": "Kopieren",
451
+ "panel.pair.expiry": "Lauft in ~{mins} Min. ab. Bei Ablauf erneut generieren.",
452
+ "panel.pair.qrNetError": "Netzwerkfehler beim Generieren des QR.",
453
+ "panel.audit.copyJson": "JSON kopieren",
454
+ "panel.limits.resetApplied": "Zurucksetzen auf Standardwerte angewendet",
455
+ "panel.nac3.effects": "Auswirkungen: {list}",
456
+ "panel.nac3.effectsUnknown": "unbekannt",
457
+ "panel.nac3.cancel": "Abbrechen",
458
+ "panel.nac3.reject": "Ablehnen",
459
+ "panel.nac3.approve": "Genehmigen",
460
+ "panel.nac3.approveDestructive": "Genehmigen (destruktiv)",
461
+ "panel.nac3.executing": "Wird ausgefuhrt...",
462
+ "panel.tts.providerBrowser": "TTS Browser",
463
+ "panel.tts.providerGoogle": "TTS Google",
464
+ "panel.tts.providerTitle": "Klicken, um zwischen Browser (natives SpeechSynthesis, OS-Stimmen) und Google Cloud TTS (serverseitig) zu wechseln.",
465
+ "panel.stt.providerBrowser": "STT Browser",
466
+ "panel.stt.providerGoogle": "STT Google",
467
+ "panel.stt.providerWhisper": "STT Whisper",
468
+ "panel.stt.providerTitle": "Klicken, um zwischen Browser (schnell + natives es-AR + kostenlos), Google Cloud STT (serverseitig, BYOK) oder Whisper (serverseitig, BYOK) zu wechseln.",
469
+ "panel.tts.voiceTitle": "Aktuelle Stimme: {id} / {persona} ({gender}) -- {style}. Klicken zum Durchschalten. Studio = artikuliert s deutlich; Neural2 = naturliches Spanisch (haucht finales s).",
470
+ "panel.license.lendNeedsLicense": "aktiviere deine Lizenz, um deinen Brain zu verleihen",
471
+ "panel.license.emailInvalid": "Gib eine gultige E-Mail ein (mit @).",
472
+ "panel.license.connecting": "Verbindung...",
473
+ "panel.license.savingEmail": "E-Mail wird gespeichert + Synchronisierung mit Polar...",
474
+ "panel.license.syncFailedRetry": "E-Mail gespeichert, aber Sync fehlgeschlagen: {err}{http}. Wenn du gerade bezahlt hast, warte 1-2 Min. und klicke auf \"Mit Polar synchronisieren\".",
475
+ "panel.license.planOk": "OK -- Plan: {plan}.",
476
+ "panel.license.netError": "Netzwerkfehler: {err}",
477
+ "panel.license.syncing": "Synchronisierung...",
478
+ "panel.license.querying": "Server wird abgefragt...",
479
+ "panel.license.syncError": "Sync-Fehler: {err}{http}",
480
+ "panel.license.planUnchanged": "Plan unverandert: {plan}",
481
+ "panel.license.planUpdated": "Plan aktualisiert: {before} -> {after}",
482
+ "panel.license.syncWithPolar": "Mit Polar synchronisieren",
483
+ "panel.license.errorWithCode": "Fehler: {code}",
484
+ "panel.keyEditor.keyTooShort": "Key zu kurz (min. 8 Zeichen).",
485
+ "panel.bridge.coordUnavailable": "Koordination nicht verfugbar.",
486
+ "panel.bridge.statusUnavailable": "nicht verfugbar",
487
+ "panel.mcp.loadingBridges": "Bridges werden geladen...",
488
+ "panel.tools.loading": "Tools werden geladen...",
489
+ "panel.agentsChat.backPairs": "< Paare",
490
+ "panel.agentsChat.noMessages": "Keine Nachrichten in diesem Paar.",
491
+ "panel.agentsChat.noAgents": "keine Agenten",
492
+ "panel.agentsChat.pickAgent": "Wahle einen Agenten + gib Text ein, bevor du sendest.",
493
+ "panel.agentsChat.sending": "Wird gesendet...",
494
+ "panel.agentsChat.errorGeneric": "Fehler: {err}",
495
+ "panel.whatsNew.dismiss": "Schliessen",
496
+ "panel.alert.noEditor": "Kein Editor im PATH. Kopieren Sie den Pfad: {path}",
497
+ "panel.alert.pathRelative": "Der Pfad muss relativ zum Projekt sein (kein fuhrendes \"/\" oder \"..\").",
498
+ "panel.tip.saveTo": "Speichern in {path}",
499
+ "panel.tip.saveToMemory": "(Speicher)",
500
+ "panel.button.saveAs": "Speichern unter...",
501
+ "panel.aria.concurrentRuns": "Gleichzeitige Laufe",
502
+ "panel.activity.allProjects": "Alle Projekte",
503
+ "panel.activity.loadingFeed": "Feed wird geladen...",
504
+ "panel.feedback.savedShort": "gespeichert",
505
+ "panel.pair.qrFailed": "QR konnte nicht generiert werden.",
506
+ "panel.brain.modePlan": "Plan (Abonnement)",
507
+ "panel.brain.modeConsole": "Console (API-Key)",
508
+ "panel.brain.applying": "{mode} wird angewendet...",
509
+ "panel.brain.applied": "{mode} angewendet. Der nachste Zug verwendet bereits diesen Modus.",
510
+ "panel.brain.reopenHint": "Wird beim erneuten Offnen des Panels angewendet.",
511
+ "panel.brain.active": "{mode} aktiv",
512
+ "panel.bridge.roleHost": "Host",
513
+ "panel.bridge.roleClient": "Client",
514
+ "panel.bridge.instanceOne": "Instanz",
515
+ "panel.bridge.instanceMany": "Instanzen",
516
+ "panel.bridge.you": "du",
517
+ "panel.tip.deleteTask": "Aufgabe loschen",
518
+ "panel.tasks.cmdPlaceholder": "Befehl (z. B. pnpm install)...",
519
+ "panel.readAloud.code": "Code",
520
+ "panel.readAloud.codeLang": "Code in {lang}",
521
+ "panel.readAloud.file": "Datei {file}",
522
+ "panel.readAloud.content": "Inhalt: {content}",
523
+ "panel.pizarron.tabOne": "Tab",
524
+ "panel.pizarron.tabMany": "Tabs"
234
525
  }
@@ -230,5 +230,296 @@
230
230
  "panel.files.empty": "(no files)",
231
231
  "panel.files.truncated": "(list truncated)",
232
232
  "panel.files.opened": "Opened",
233
- "panel.files.openFailed": "Could not open the file."
233
+ "panel.files.openFailed": "Could not open the file.",
234
+ "startup.tab.tasks": "Tasks",
235
+ "settings.bridge.title": "Coordination between instances",
236
+ "settings.bridge.accept": "Accept directed messages from other instances (injected as chat)",
237
+ "settings.bridge.composePlaceholder": "Message to the other instances...",
238
+ "settings.voice.title": "Voice",
239
+ "settings.voice.mode": "Mode",
240
+ "settings.voice.modeMic": "mic mode",
241
+ "settings.voice.stt": "STT",
242
+ "settings.voice.sttBrowser": "STT browser",
243
+ "settings.voice.ttsEngine": "TTS engine",
244
+ "settings.voice.ttsBrowser": "TTS browser",
245
+ "settings.voice.ttsVoice": "TTS voice (Google only)",
246
+ "settings.vad.title": "VAD (silence detection)",
247
+ "settings.vad.resetDefaults": "Reset defaults",
248
+ "settings.vad.engine": "Engine",
249
+ "settings.vad.engineAmplitude": "Amplitude (RMS)",
250
+ "settings.vad.engineBand": "Band 80-400Hz",
251
+ "settings.vad.baselineWindow": "Baseline window",
252
+ "settings.vad.thresholdMult": "Threshold mult (baseline x N)",
253
+ "settings.vad.thresholdMin": "Minimum threshold",
254
+ "settings.vad.thresholdMax": "Maximum threshold",
255
+ "settings.vad.silence": "Silence to close",
256
+ "settings.vad.minVoiced": "Minimum voiced (anti-blip)",
257
+ "settings.vad.tick": "VAD tick",
258
+ "settings.vad.bandLow": "Voice band: low (Hz)",
259
+ "settings.vad.bandHigh": "Voice band: high (Hz)",
260
+ "settings.vad.showOverlay": "Show live overlay",
261
+ "settings.vad.logStats": "Log stats per session",
262
+ "settings.brain.anthropicMode": "Anthropic: mode",
263
+ "settings.brain.modePlan": "Plan (Claude subscription)",
264
+ "settings.brain.modeConsole": "Console (API key)",
265
+ "settings.brain.modeNote": "Applies when you reopen the panel.",
266
+ "settings.brain.ecoEnabled": "Eco mode enabled",
267
+ "settings.brain.ecoHint": "off = always frontier",
268
+ "settings.brain.modelEco": "Eco model",
269
+ "settings.brain.modelFrontier": "Frontier model",
270
+ "settings.brain.modelMultimodal": "Multimodal model",
271
+ "settings.brain.multimodalClearTitle": "Remove the dedicated multimodal brain (revert to automatic vision routing)",
272
+ "settings.brain.auto": "Auto",
273
+ "settings.brain.multimodalHint": "Dedicated brain for turns with images. Auto = automatic vision routing (the frontier if it sees, or a notice if not).",
274
+ "settings.brain.geminiCache": "Gemini explicit cache (CachedContent)",
275
+ "settings.brain.geminiCacheHint": "Opt-in. Useful for long sessions with Gemini Pro; for short sessions the free implicit cache of 2.5 is enough.",
276
+ "settings.federation.title": "Brain federation",
277
+ "settings.federation.intro": "Use another Forge's brain (its key never leaves its machine) or lend yours. Your code runs locally; only the inference travels.",
278
+ "settings.federation.connectedTo": "Connected to",
279
+ "settings.federation.disconnect": "Disconnect",
280
+ "settings.federation.connectMe": "Connect me",
281
+ "settings.federation.tokenPlaceholder": "Paste the federation code",
282
+ "settings.federation.connect": "Connect",
283
+ "settings.federation.lendBrain": "Lend my brain",
284
+ "settings.federation.generateCode": "Generate code",
285
+ "settings.federation.host": "Host (respond to children)",
286
+ "settings.federation.fedBrain": "Federation brain",
287
+ "settings.federation.fedBrainNote": "The one that responds to children. Direct API (DeepSeek by default). Claude Plan cannot host; it needs a key with credit.",
288
+ "settings.federation.codeOnce": "Code (single use)",
289
+ "settings.federation.copy": "Copy",
290
+ "settings.keys.title": "API keys (BYOK)",
291
+ "settings.keys.configure": "Configure",
292
+ "settings.keys.remove": "Remove",
293
+ "settings.keys.brainAnthropic": "Brain (Anthropic)",
294
+ "settings.keys.brainOpenai": "Brain (OpenAI)",
295
+ "settings.keys.brainGoogle": "Brain (Google AI)",
296
+ "settings.keys.brainDeepseek": "Brain (DeepSeek)",
297
+ "settings.keys.brainXai": "Brain (xAI / Grok)",
298
+ "settings.keys.brainMistral": "Brain (Mistral)",
299
+ "settings.keys.brainCohere": "Brain (Cohere)",
300
+ "settings.keys.sttGoogle": "STT Google",
301
+ "settings.keys.ttsGoogle": "TTS Google",
302
+ "settings.keys.ttsElevenlabs": "TTS ElevenLabs",
303
+ "settings.keys.sttWhisper": "STT Whisper",
304
+ "settings.lang.title": "Language",
305
+ "settings.lang.panelVoice": "Panel + voice",
306
+ "settings.lang.changeButton": "Change language",
307
+ "settings.vault.title": "Vault (encrypted)",
308
+ "settings.vault.slots": "Slots",
309
+ "settings.vault.open": "Open vault",
310
+ "settings.license.email": "Email",
311
+ "settings.license.validated": "Validated",
312
+ "settings.license.connectHint": "Connect your Polar account. Enter the email you paid with and we sync your plan automatically.",
313
+ "settings.license.emailPlaceholder": "email@example.com",
314
+ "settings.license.connect": "Connect",
315
+ "settings.license.sync": "Sync with Polar",
316
+ "settings.license.buy": "Buy / activate plan",
317
+ "settings.budget.title": "Budget this month",
318
+ "settings.budget.renews": "Renews",
319
+ "settings.budget.tokensEco": "Eco tokens",
320
+ "settings.budget.tokensFrontier": "Frontier tokens",
321
+ "settings.budget.buyExtension": "Buy token extension",
322
+ "settings.limits.title": "Limits (advanced)",
323
+ "settings.limits.editHint": "Edit any value + tab/blur saves.",
324
+ "settings.limits.reset": "Reset to defaults",
325
+ "settings.bookmarks.title": "Reader bookmarks",
326
+ "settings.graph.title": "Project knowledge graph",
327
+ "settings.pair.title": "Link phone",
328
+ "settings.pair.hint": "Open Forge Mobile, tap \"Link\" and scan this QR. Done.",
329
+ "settings.pair.generateQr": "Generate QR",
330
+ "settings.pair.cantRead": "Camera can't read the QR? Copy this code and paste it into Forge Mobile:",
331
+ "settings.audit.viewFull": "View full",
332
+ "settings.audit.close": "Close",
333
+ "settings.audit.allKinds": "All kinds",
334
+ "settings.audit.allModes": "All modes",
335
+ "settings.audit.copyJson": "Copy JSON",
336
+ "settings.audit.closeDetail": "Close detail",
337
+ "settings.about.title": "About",
338
+ "settings.danger.title": "Danger Zone",
339
+ "settings.danger.warning": "When ON, Yujin runs EVERY action without asking for confirmation (including shell.exec, rm, git push --force, etc). Speed over safety. Everything is recorded in the audit log.",
340
+ "settings.keyEditor.placeholder": "Paste your API key here",
341
+ "settings.license.title": "License",
342
+ "settings.plan": "Plan",
343
+ "settings.audit.title": "Audit log",
344
+ "settings.legal.title": "Legal",
345
+ "panel.status.projectSwitchFail": "Could not switch project.",
346
+ "panel.status.projectRemoveFail": "Could not remove the project.",
347
+ "panel.status.projectAddFail": "Could not add the project.",
348
+ "panel.status.cancelFail": "Could not cancel: {reason}",
349
+ "panel.status.cancelNetError": "Network error while cancelling shell.",
350
+ "panel.status.notEditable": "This type of content is not editable.",
351
+ "panel.status.savedAsPicker": "Saved as: {name} (at the path you chose in the dialog).",
352
+ "panel.status.saveAsFail": "Save As error: {error} -- using fallback.",
353
+ "panel.status.saveFail": "Error saving: {error}",
354
+ "panel.status.savedAs": "Saved as: {path} ({bytes} bytes)",
355
+ "panel.status.netError": "Network error: {error}",
356
+ "panel.status.savedTabOnly": "Changes saved in the tab (not on disk -- no file_path).",
357
+ "panel.status.saved": "Saved: {path} ({bytes} bytes)",
358
+ "panel.status.copied": "Copied to clipboard.",
359
+ "panel.status.copyFail": "Could not copy.",
360
+ "panel.status.modeAvailable": "Available modes: didactico, tecnico. Usage: /modo tecnico",
361
+ "panel.status.modeChangeFail": "Could not change the mode: {error}",
362
+ "panel.status.modeChanged": "Mode changed to {target}. The next turn already uses this mode.",
363
+ "panel.status.genericError": "Error: {error}",
364
+ "panel.status.brainTierAuto": "Brain tier back to auto (router decides by verb / phase).",
365
+ "panel.status.brainTierForced": "Brain tier forced to \"{target}\" for this session. /auto returns to the router.",
366
+ "panel.confirm.tabUnsaved": "The tab \"{title}\" has unsaved changes. Close anyway?",
367
+ "panel.confirm.tabsUnsaved": "There are tabs with unsaved changes. Close everything anyway?",
368
+ "panel.confirm.discardChanges": "Discard the unsaved changes?",
369
+ "panel.confirm.removeSlot": "Remove slot \"{slot}\"? This cannot be undone.",
370
+ "panel.confirm.removeKey": "Remove the key for {slot}?",
371
+ "panel.prompt.saveAs": "Save as (path relative to the project):",
372
+ "panel.voice.sttFallback": "Browser STT unavailable; using server-side fallback.",
373
+ "panel.voice.noMicSupport": "Your browser does not support microphone access.",
374
+ "panel.voice.recordingCountdown": "Recording... auto-stop in {n}s",
375
+ "panel.voice.autoStopped": "Recording auto-stopped at 55s (Google STT 1-min limit). Try shorter.",
376
+ "panel.voice.noAudio": "No audio captured. Try again.",
377
+ "panel.voice.audioTooLong": "Audio too long (>1 min). Google STT sync limit. Try shorter.",
378
+ "panel.voice.ttsUnavailable": "Browser TTS not available; switch back to Google in settings.",
379
+ "panel.voice.micClosedHalfDuplex": "Mic closed while Yujin speaks (half-duplex).",
380
+ "panel.voice.micBlocked": "Microphone blocked. Allow the microphone for this app in your browser settings and try again.",
381
+ "panel.voice.noMicDevice": "No microphone detected on this device.",
382
+ "panel.voice.micOpenFail": "Could not open the microphone: {error}",
383
+ "panel.voice.micOpenListening": "Mic open, listening...",
384
+ "panel.voice.listening": "I'm listening...",
385
+ "panel.voice.listeningInterim": "I'm listening... {text}",
386
+ "panel.voice.micBlockedBrowser": "Microphone blocked by the browser. Click the lock icon in the URL bar and allow microphone, then reload the page. Or switch STT to \"google\" / \"whisper\" in settings if you have the API key.",
387
+ "panel.voice.noMicPhysical": "No physical microphone detected. Connect one or switch STT to \"google\" / \"whisper\" in settings.",
388
+ "panel.voice.networkRequired": "Web Speech requires an internet connection (Chrome uses Google behind the scenes). Try without an intermittent connection or switch STT to \"whisper\" if you have the API key.",
389
+ "panel.voice.langNotSupported": "Your browser does not support this language for STT. Change the panel language to a supported one (en, es, pt) or switch STT to \"google\" / \"whisper\".",
390
+ "panel.voice.micError": "Mic error: {error}",
391
+ "panel.voice.noAudioToRecognizer": "No audio reached the recognizer: the browser's dictation is not capturing in this app.",
392
+ "panel.voice.micOpenNoVoice": "Mic open but no voice detected. Move closer to the microphone and speak louder; if it continues, free dictation does not work in this PWA.",
393
+ "panel.voice.voiceNoText": "Voice detected but the browser returned no text (free STT not available in this PWA).",
394
+ "panel.voice.startingDictation": "Starting dictation...",
395
+ "panel.voice.couldNotStartMic": "Could not start mic: {error}",
396
+ "panel.status.imageTooLarge": "Image too large (>6MB): {name}",
397
+ "panel.status.imageReady": "Image ready to send: {name}",
398
+ "panel.status.imageReadFail": "Could not read the image: {error}",
399
+ "panel.tip.attachFile": "Attach file",
400
+ "panel.tip.refreshDiscovery": "Refresh discovery",
401
+ "panel.tip.refreshNow": "Refresh now",
402
+ "panel.tip.filterByProject": "Filter by project",
403
+ "panel.tip.concurrentRuns": "Concurrent runs: global / per-project caps",
404
+ "panel.tip.mcpBridges": "MCP Bridges (F101)",
405
+ "panel.tip.activity": "Agent activity + bridge inspector + chat-per-agent",
406
+ "panel.tip.settings": "Settings (voice mode, STT, TTS, keys, language)",
407
+ "panel.tip.zoomOut": "Zoom out (Ctrl -)",
408
+ "panel.tip.zoomReset": "Reset zoom (Ctrl 0)",
409
+ "panel.tip.zoomIn": "Zoom in (Ctrl +)",
410
+ "panel.tip.maximize": "Maximize / restore (full screen)",
411
+ "panel.tip.closeBoard": "Close the whole board",
412
+ "panel.tip.openInEditor": "Open in my editor",
413
+ "panel.tip.open": "Open",
414
+ "panel.tip.saveAs": "Save as -- choose a new path (relative to the project)",
415
+ "panel.tip.codeModeDetail": "Detailed: files, diffs and commands live",
416
+ "panel.tip.codeModeZen": "Sumi-e: art with occasional text",
417
+ "panel.tip.cancelShell": "Cancel shell command",
418
+ "panel.tip.closeTab": "Close tab",
419
+ "panel.tip.reopenNativeTabs": "Reopen closed native tabs",
420
+ "panel.tip.notTestedYet": "not tested yet",
421
+ "panel.aria.activity": "Activity",
422
+ "panel.aria.settings": "Settings",
423
+ "panel.aria.zoomOut": "Zoom out",
424
+ "panel.aria.zoomIn": "Zoom in",
425
+ "panel.aria.maximize": "Maximize",
426
+ "panel.aria.closeBoard": "close all",
427
+ "panel.aria.thinking": "thinking",
428
+ "panel.hint.boardEmpty": "Structured content shows here: code, tables, documents. Ask Yujin to write or edit something.",
429
+ "panel.hint.planMode": "You are in Plan mode (subscription). The board draws when the brain runs in API mode: change it in <strong>Settings &gt; Brain &gt; Anthropic: mode &gt; Console</strong> and reopen the panel.",
430
+ "panel.hint.bookmarksEmpty": "No bookmarks. Ask Yujin \"mark this point as ...\" while reading a doc.",
431
+ "panel.voice.replyFailed": "Voice reply failed: {err}",
432
+ "panel.voice.replyError": "Voice reply error: {err}",
433
+ "panel.status.languageSwitchFailed": "Language switch failed: {err}",
434
+ "panel.status.languageListFailed": "Could not load language list",
435
+ "panel.legal.loading": "Loading...",
436
+ "panel.legal.loadError": "Error {status} loading the document.",
437
+ "panel.legal.networkError": "Network error: {err}",
438
+ "panel.legal.defaultTitle": "Legal",
439
+ "panel.feedback.copied": "Copied",
440
+ "panel.feedback.copyFailed": "Copy failed",
441
+ "panel.feedback.clipboardUnavailable": "Clipboard unavailable",
442
+ "panel.feedback.saving": "Saving...",
443
+ "panel.feedback.saved": "Saved.",
444
+ "panel.feedback.saveError": "error saving",
445
+ "panel.feedback.netError": "network error",
446
+ "panel.feedback.netErrorSaving": "network error saving",
447
+ "panel.feedback.errorPrefix": "Error: {detail}",
448
+ "panel.pair.generating": "Generating...",
449
+ "panel.pair.generateQr": "Generate QR",
450
+ "panel.pair.copy": "Copy",
451
+ "panel.pair.expiry": "Expires in ~{mins} min. Generate it again if it lapses.",
452
+ "panel.pair.qrNetError": "Network error generating the QR.",
453
+ "panel.audit.copyJson": "Copy JSON",
454
+ "panel.limits.resetApplied": "Reset to defaults applied",
455
+ "panel.nac3.effects": "Effects: {list}",
456
+ "panel.nac3.effectsUnknown": "unknown",
457
+ "panel.nac3.cancel": "Cancel",
458
+ "panel.nac3.reject": "Reject",
459
+ "panel.nac3.approve": "Approve",
460
+ "panel.nac3.approveDestructive": "Approve (destructive)",
461
+ "panel.nac3.executing": "Executing...",
462
+ "panel.tts.providerBrowser": "TTS browser",
463
+ "panel.tts.providerGoogle": "TTS Google",
464
+ "panel.tts.providerTitle": "Click to switch between browser (native SpeechSynthesis, OS voices) and Google Cloud TTS (server-side).",
465
+ "panel.stt.providerBrowser": "STT browser",
466
+ "panel.stt.providerGoogle": "STT Google",
467
+ "panel.stt.providerWhisper": "STT Whisper",
468
+ "panel.stt.providerTitle": "Click to switch between browser (fast + native es-AR + free), Google Cloud STT (server-side, BYOK) or Whisper (server-side, BYOK).",
469
+ "panel.tts.voiceTitle": "Current voice: {id} / {persona} ({gender}) -- {style}. Click to cycle. Studio = articulates s clearly; Neural2 = natural Spanish (aspirates final s).",
470
+ "panel.license.lendNeedsLicense": "activate your license to lend your brain",
471
+ "panel.license.emailInvalid": "Enter a valid email (with @).",
472
+ "panel.license.connecting": "Connecting...",
473
+ "panel.license.savingEmail": "Saving email + syncing with Polar...",
474
+ "panel.license.syncFailedRetry": "Email saved, but sync failed: {err}{http}. If you just paid, wait 1-2 min and hit \"Sync with Polar\".",
475
+ "panel.license.planOk": "OK -- plan: {plan}.",
476
+ "panel.license.netError": "Network error: {err}",
477
+ "panel.license.syncing": "Syncing...",
478
+ "panel.license.querying": "Querying server...",
479
+ "panel.license.syncError": "Sync error: {err}{http}",
480
+ "panel.license.planUnchanged": "Plan unchanged: {plan}",
481
+ "panel.license.planUpdated": "Plan updated: {before} -> {after}",
482
+ "panel.license.syncWithPolar": "Sync with Polar",
483
+ "panel.license.errorWithCode": "error: {code}",
484
+ "panel.keyEditor.keyTooShort": "Key too short (min 8 chars).",
485
+ "panel.bridge.coordUnavailable": "Coordination unavailable.",
486
+ "panel.bridge.statusUnavailable": "unavailable",
487
+ "panel.mcp.loadingBridges": "Loading bridges...",
488
+ "panel.tools.loading": "Loading tools...",
489
+ "panel.agentsChat.backPairs": "< Pairs",
490
+ "panel.agentsChat.noMessages": "No messages in this pair.",
491
+ "panel.agentsChat.noAgents": "no agents",
492
+ "panel.agentsChat.pickAgent": "Pick an agent + type text before sending.",
493
+ "panel.agentsChat.sending": "Sending...",
494
+ "panel.agentsChat.errorGeneric": "Error: {err}",
495
+ "panel.whatsNew.dismiss": "Close",
496
+ "panel.alert.noEditor": "No editor in PATH. Copy the path: {path}",
497
+ "panel.alert.pathRelative": "The path must be relative to the project (no leading \"/\" or \"..\").",
498
+ "panel.tip.saveTo": "Save to {path}",
499
+ "panel.tip.saveToMemory": "(memory)",
500
+ "panel.button.saveAs": "Save as...",
501
+ "panel.aria.concurrentRuns": "Concurrent runs",
502
+ "panel.activity.allProjects": "All projects",
503
+ "panel.activity.loadingFeed": "Loading feed...",
504
+ "panel.feedback.savedShort": "saved",
505
+ "panel.pair.qrFailed": "Could not generate the QR.",
506
+ "panel.brain.modePlan": "Plan (subscription)",
507
+ "panel.brain.modeConsole": "Console (API key)",
508
+ "panel.brain.applying": "applying {mode}...",
509
+ "panel.brain.applied": "{mode} applied. The next turn already uses this mode.",
510
+ "panel.brain.reopenHint": "Applies when you reopen the panel.",
511
+ "panel.brain.active": "{mode} active",
512
+ "panel.bridge.roleHost": "host",
513
+ "panel.bridge.roleClient": "client",
514
+ "panel.bridge.instanceOne": "instance",
515
+ "panel.bridge.instanceMany": "instances",
516
+ "panel.bridge.you": "you",
517
+ "panel.tip.deleteTask": "Delete task",
518
+ "panel.tasks.cmdPlaceholder": "command (e.g. pnpm install)...",
519
+ "panel.readAloud.code": "Code",
520
+ "panel.readAloud.codeLang": "Code in {lang}",
521
+ "panel.readAloud.file": "File {file}",
522
+ "panel.readAloud.content": "Content: {content}",
523
+ "panel.pizarron.tabOne": "tab",
524
+ "panel.pizarron.tabMany": "tabs"
234
525
  }