specrails-desktop 2.44.2 → 2.45.0

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.
Files changed (101) hide show
  1. package/README.md +2 -0
  2. package/client/dist/assets/{ActivityFeedPage-CL1BUXoj.js → ActivityFeedPage-D3SQklu5.js} +1 -1
  3. package/client/dist/assets/AgentBrowserCapture-DNGxE33d.js +1 -0
  4. package/client/dist/assets/AgentModeAnalyticsPane-BUvZNoj0.js +2 -0
  5. package/client/dist/assets/AgentModeCodePane-YW717UvJ.js +2 -0
  6. package/client/dist/assets/{AgentModeJobsPane-C7ELTPC1.js → AgentModeJobsPane-Cxg_eNmd.js} +1 -1
  7. package/client/dist/assets/AgentsPage-B_DCByok.js +87 -0
  8. package/client/dist/assets/{AnalyticsPage-DTsg-N5z.js → AnalyticsPage-BqV6mM2O.js} +1 -1
  9. package/client/dist/assets/CodePage-PyZKCj1B.js +3 -0
  10. package/client/dist/assets/{DesktopAnalyticsPage-Y0Z1ryQr.js → DesktopAnalyticsPage-D6WNax3K.js} +1 -1
  11. package/client/dist/assets/{DocsDialog-KeCOxvGH.js → DocsDialog-68jKUH9f.js} +1 -1
  12. package/client/dist/assets/{DocsPage-Bt1PgYPO.js → DocsPage-BoGJgRpm.js} +1 -1
  13. package/client/dist/assets/{ExportDropdown-DczgU4at.js → ExportDropdown-B2C_XLGp.js} +1 -1
  14. package/client/dist/assets/InteractiveJobComposer-l8q-r5Yy.js +19 -0
  15. package/client/dist/assets/{JobDetailModal-DKA_DUHe.js → JobDetailModal-C-X2GI9j.js} +1 -1
  16. package/client/dist/assets/JobDetailPage-C6Jdm7S9.js +1 -0
  17. package/client/dist/assets/{JobsPage-Bwoe-Fb0.js → JobsPage-DycM6Vgp.js} +1 -1
  18. package/client/dist/assets/{LoopBuilderPage-CqC4hbXb.js → LoopBuilderPage-D21GxFmL.js} +2 -2
  19. package/client/dist/assets/{LoopPreviewModal-T0zuFv6y.js → LoopPreviewModal-Bo3fYFxN.js} +1 -1
  20. package/client/dist/assets/{LoopsPage-DrQGcZv2.js → LoopsPage-BcrBw1cg.js} +1 -1
  21. package/client/dist/assets/{MinimizedChatsContext-C843Y13h.js → MinimizedChatsContext-Dsv2eHf_.js} +1 -1
  22. package/client/dist/assets/PluginsPage-BbyTmSLx.js +2 -0
  23. package/client/dist/assets/ProjectSettingsDialog-B3lEXLv7.js +1 -0
  24. package/client/dist/assets/{RepositoryDeliveries-bgIHE8ep.js → RepositoryDeliveries-ok_Wo65C.js} +1 -1
  25. package/client/dist/assets/{RepositoryScopeSelector-CZ_U_R3U.js → RepositoryScopeSelector-DU6QwNaS.js} +1 -1
  26. package/client/dist/assets/{ReviewPacketPage-DbKO6pT8.js → ReviewPacketPage-BBCeHtgd.js} +1 -1
  27. package/client/dist/assets/TemplatePreviewModal-CfNmxS6O.js +1 -0
  28. package/client/dist/assets/{TicketDetailModalContext-BbRA6cb7.js → TicketDetailModalContext-DW3eQ0I7.js} +1 -1
  29. package/client/dist/assets/{Trans-mjFZpHw1.js → Trans-BHPMWkOw.js} +1 -1
  30. package/client/dist/assets/agentRuntime-14faDjWM.js +1 -0
  31. package/client/dist/assets/agentRuntime-BIokojkJ.js +1 -0
  32. package/client/dist/assets/agentRuntime-Bu4xEcRw.js +1 -0
  33. package/client/dist/assets/agentRuntime-Cz0ASixB.js +1 -0
  34. package/client/dist/assets/agentRuntime-DESdGXLV.js +1 -0
  35. package/client/dist/assets/agentRuntime-DhX5Xy5S.js +1 -0
  36. package/client/dist/assets/agentRuntime-Dpbh_gLp.js +1 -0
  37. package/client/dist/assets/agentRuntime-jS2lplFm.js +1 -0
  38. package/client/dist/assets/{formatDistanceToNow-BIL-HxGy.js → formatDistanceToNow-Bq8iptrG.js} +1 -1
  39. package/client/dist/assets/{getTimezoneOffsetInMilliseconds-Cs9z2sdO.js → getTimezoneOffsetInMilliseconds-BVFky3l_.js} +1 -1
  40. package/client/dist/assets/index-CBLYwPw6.css +2 -0
  41. package/client/dist/assets/index-DOKftX7y.js +76 -0
  42. package/client/dist/assets/{jira-api-B2BBZQTx.js → jira-api-zrRdZFBB.js} +1 -1
  43. package/client/dist/assets/{narration-C1Px0-0j.js → narration-BA8Yw5ZL.js} +1 -1
  44. package/client/dist/assets/{narration-DQ1l_Kq6.js → narration-BuMFUS7Q.js} +1 -1
  45. package/client/dist/assets/{narration-kwzfglQo.js → narration-Bv_iQQG5.js} +1 -1
  46. package/client/dist/assets/{narration-B-ynWTpn.js → narration-C6Ost9nL.js} +1 -1
  47. package/client/dist/assets/{narration-CAXhGbzM.js → narration-CIbjo2pA.js} +1 -1
  48. package/client/dist/assets/{narration-BxHpmMv_.js → narration-CNJ2-2-a.js} +1 -1
  49. package/client/dist/assets/{narration-Bj_laZwg.js → narration-OzsPJCXM.js} +1 -1
  50. package/client/dist/assets/{narration-XISXwqZd.js → narration-zCdgiuSU.js} +1 -1
  51. package/client/dist/assets/{project-repositories-xSqimlaj.js → project-repositories-CFRaB9UB.js} +1 -1
  52. package/client/dist/assets/{settings-BLOsrXEw.js → settings-CNiERE-R.js} +1 -1
  53. package/client/dist/assets/{settings-NSWQjY5B.js → settings-ChOCVjX_.js} +1 -1
  54. package/client/dist/assets/{settings-C6s9PtRD.js → settings-CrtCs5-B.js} +1 -1
  55. package/client/dist/assets/{settings-DPjNiUsS.js → settings-DJ2jl3hJ.js} +1 -1
  56. package/client/dist/assets/{settings-FIqwhTup.js → settings-DVRVybR_.js} +1 -1
  57. package/client/dist/assets/{settings-CCNZN5Q-.js → settings-DzXZCb1h.js} +1 -1
  58. package/client/dist/assets/{settings-2Yx_9yJM.js → settings-OOyDrZQo.js} +1 -1
  59. package/client/dist/assets/{settings-CpKwTew1.js → settings-a7NIODme.js} +1 -1
  60. package/client/dist/assets/{spending-DXOcv1tn.js → spending-lTZ-bm_y.js} +1 -1
  61. package/client/dist/assets/{useDesktop-gVGoWWiY.js → useDesktop-Duv5ddAa.js} +1 -1
  62. package/client/dist/assets/useSharedWebSocket-5mj2SMKn.js +2 -0
  63. package/client/dist/index.html +17 -16
  64. package/docs/README.md +1 -0
  65. package/docs/internals/README.md +2 -0
  66. package/docs/internals/agent-runtime-framework-evaluation.md +208 -0
  67. package/docs/internals/programmatic-agent-runtime-validation.md +72 -0
  68. package/docs/internals/programmatic-agent-runtime.md +129 -0
  69. package/package.json +1 -1
  70. package/server/dist/agent-runtime-accounting.js +73 -0
  71. package/server/dist/agent-runtime-bridge.js +183 -0
  72. package/server/dist/agent-runtime-controls-router.js +44 -0
  73. package/server/dist/agent-runtime-controls.js +277 -0
  74. package/server/dist/agent-runtime-loader.js +85 -0
  75. package/server/dist/agent-runtime-paths.js +12 -0
  76. package/server/dist/agent-runtime-settings-router.js +59 -0
  77. package/server/dist/agent-runtime-settings.js +135 -0
  78. package/server/dist/agent-runtime-verification-suggestions.js +119 -0
  79. package/server/dist/core-execution.js +17 -8
  80. package/server/dist/core-node-runtime.js +12 -0
  81. package/server/dist/loop-executors.js +42 -2
  82. package/server/dist/loop-factory.js +1 -1
  83. package/server/dist/loop-run-manager.js +60 -26
  84. package/server/dist/project-registry.js +9 -0
  85. package/server/dist/project-router-settings.js +4 -0
  86. package/server/dist/rail-isolated-launch.js +18 -0
  87. package/server/dist/rails-router.js +1 -0
  88. package/server/dist/schemas/agent-runtime.schema.json +55 -0
  89. package/client/dist/assets/AgentBrowserCapture-BQem50z4.js +0 -1
  90. package/client/dist/assets/AgentModeAnalyticsPane-BC_xbT_l.js +0 -2
  91. package/client/dist/assets/AgentModeCodePane-DK-q3K6Y.js +0 -2
  92. package/client/dist/assets/AgentsPage-DbLezyI6.js +0 -87
  93. package/client/dist/assets/CodePage-DwgbeqQ_.js +0 -3
  94. package/client/dist/assets/InteractiveJobComposer-BcR6xlHU.js +0 -19
  95. package/client/dist/assets/JobDetailPage-vaOcE-cI.js +0 -1
  96. package/client/dist/assets/PluginsPage-CTUHX_Lu.js +0 -2
  97. package/client/dist/assets/ProjectSettingsDialog-DeL8md1s.js +0 -1
  98. package/client/dist/assets/TemplatePreviewModal-_CgCCV7L.js +0 -1
  99. package/client/dist/assets/index-Bfj8HvX1.css +0 -2
  100. package/client/dist/assets/index-UnaJTMIy.js +0 -76
  101. package/client/dist/assets/useSharedWebSocket-DbGL_YOt.js +0 -2
@@ -1 +1 @@
1
- import{t as e}from"./createLucideIcon-Bjbbp_KS.js";import{a as t}from"./useDesktop-gVGoWWiY.js";var n=e(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]);async function r(e){let t=await e.text(),n=t?JSON.parse(t):{};if(!e.ok)throw Error(n.error||`Request failed (${e.status})`);return n}function i(e){return e??t()}var a=e=>({method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),o={getConnection(e){return fetch(`${i(e)}/jira/connection`).then(e=>r(e))},test(e,t){return fetch(`${i(t)}/jira/test`,a(e)).then(e=>r(e))},discoverProjects(e,t){return fetch(`${i(t)}/jira/discover-projects`,a(e)).then(e=>r(e))},discoverStatuses(e,t){return fetch(`${i(t)}/jira/discover-statuses`,a(e)).then(e=>r(e))},connect(e,t){return fetch(`${i(t)}/jira/connect`,a(e)).then(e=>r(e))},setEnabled(e,t){return fetch(`${i(t)}/jira/connection`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:e})}).then(e=>r(e))},patchConnection(e,t){return fetch(`${i(t)}/jira/connection`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}).then(e=>r(e))},listStatuses(e){return fetch(`${i(e)}/jira/statuses`).then(e=>r(e))},moveSpecToStatus(e,t,n){return fetch(`${i(n)}/jira/specs/${e}/move-to-status`,a({status:t})).then(e=>r(e))},discardSpec(e,t,n){return fetch(`${i(n)}/jira/specs/${e}/discard`,a({comment:t})).then(e=>r(e))},getSpecDetails(e,t){return fetch(`${i(t)}/jira/specs/${e}/details`).then(e=>r(e))},disconnect(e){return fetch(`${i(e)}/jira/connection`,{method:`DELETE`}).then(e=>r(e))},syncNow(e){return fetch(`${i(e)}/jira/sync`,{method:`POST`}).then(e=>r(e))},resume(e){return fetch(`${i(e)}/jira/resume`,{method:`POST`}).then(e=>r(e))},listOutbox(e,t){let n=e?`?state=${e}`:``;return fetch(`${i(t)}/jira/outbox${n}`).then(e=>r(e))},retryOutbox(e,t){return fetch(`${i(t)}/jira/outbox/${e}/retry`,{method:`POST`}).then(e=>r(e))}};export{n,o as t};
1
+ import{t as e}from"./createLucideIcon-Bjbbp_KS.js";import{a as t}from"./useDesktop-Duv5ddAa.js";var n=e(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]);async function r(e){let t=await e.text(),n=t?JSON.parse(t):{};if(!e.ok)throw Error(n.error||`Request failed (${e.status})`);return n}function i(e){return e??t()}var a=e=>({method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),o={getConnection(e){return fetch(`${i(e)}/jira/connection`).then(e=>r(e))},test(e,t){return fetch(`${i(t)}/jira/test`,a(e)).then(e=>r(e))},discoverProjects(e,t){return fetch(`${i(t)}/jira/discover-projects`,a(e)).then(e=>r(e))},discoverStatuses(e,t){return fetch(`${i(t)}/jira/discover-statuses`,a(e)).then(e=>r(e))},connect(e,t){return fetch(`${i(t)}/jira/connect`,a(e)).then(e=>r(e))},setEnabled(e,t){return fetch(`${i(t)}/jira/connection`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:e})}).then(e=>r(e))},patchConnection(e,t){return fetch(`${i(t)}/jira/connection`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}).then(e=>r(e))},listStatuses(e){return fetch(`${i(e)}/jira/statuses`).then(e=>r(e))},moveSpecToStatus(e,t,n){return fetch(`${i(n)}/jira/specs/${e}/move-to-status`,a({status:t})).then(e=>r(e))},discardSpec(e,t,n){return fetch(`${i(n)}/jira/specs/${e}/discard`,a({comment:t})).then(e=>r(e))},getSpecDetails(e,t){return fetch(`${i(t)}/jira/specs/${e}/details`).then(e=>r(e))},disconnect(e){return fetch(`${i(e)}/jira/connection`,{method:`DELETE`}).then(e=>r(e))},syncNow(e){return fetch(`${i(e)}/jira/sync`,{method:`POST`}).then(e=>r(e))},resume(e){return fetch(`${i(e)}/jira/resume`,{method:`POST`}).then(e=>r(e))},listOutbox(e,t){let n=e?`?state=${e}`:``;return fetch(`${i(t)}/jira/outbox${n}`).then(e=>r(e))},retryOutbox(e,t){return fetch(`${i(t)}/jira/outbox/${e}/retry`,{method:`POST`}).then(e=>r(e))}};export{n,o as t};
@@ -1 +1 @@
1
- var e=`Verlauf`,t=`Protokoll`,n=`Bisher ist nichts passiert.`,r=`Für diesen Lauf wurde keine Aktivität erfasst.`,i={range:`Solche Läufe dauerten {{low}}–{{high}} min (letzte {{count}})`,elapsed:`Läuft seit {{minutes}} min`},a=`Aus dem erstellt, was während des Laufs tatsächlich passiert ist.`,o={start:`Schritt {{step}}: {{title}}`,startRetry:`Schritt {{step}}: {{title}} — Versuch {{iteration}}`,done:`Schritt {{step}} abgeschlossen`,doneTimed:`Schritt {{step}} in {{seconds}} s abgeschlossen`,failed:`Schritt {{step}} war nicht erfolgreich`,interrupted:`Schritt {{step}} wurde vor dem Ende abgebrochen`,doneTimedMin:`Schritt {{step}} in {{minutes}} min abgeschlossen`,role:{work:`nimmt die Änderungen vor`,verify:`prüft, ob es funktioniert`,decide:`entscheidet, ob es fertig ist`,fix:`behebt, was fehlschlug`},stalled:`Schritt {{step}} hing – {{idleMinutes}} Min. ohne Aktivität, daher hat die App ihn beendet`,startResume:`Schritt {{step}}: {{title}} – Fortsetzung nach einem Hänger`,providerLimit:`Schritt {{step}} gestoppt — das Nutzungslimit des Anbieters ist erreicht`},s={another:`Noch nicht fertig — nächste Runde`,satisfied:`Ziel erreicht — weiter`},c={reading:`Liest {{target}}`,readingBare:`Liest den Code`,editing:`Ändert {{target}}`,editingBare:`Ändert den Code`,writing:`Schreibt {{target}}`,writingBare:`Schreibt neuen Code`,searching:`Sucht nach {{target}}`,searchingBare:`Sucht im Code`,running:`Führt {{target}} aus`,runningBare:`Führt einen Befehl aus`,working:`Arbeitet an {{target}}`,workingBare:`Arbeitet`,exploring:`Sieht den Code durch`,exploringBare:`Sieht den Code durch`,testing:`Führt die Tests aus`,building:`Baut das Projekt`,typechecking:`Prüft die Typen`,linting:`Prüft den Codestil`,installing:`Installiert Abhängigkeiten`,savingWork:`Sichert die Arbeit`,checkingSpec:`Prüft die Spec`,bookkeeping:`Notiert eigene Aufzeichnungen`,bookkeepingBare:`Notiert eigene Aufzeichnungen`,writingSpec:`Schreibt den Plan`,writingSpecBare:`Schreibt den Plan`,writingFiles:`Schreibt {{files}} Dateien ({{names}}…)`,readingFiles:`Liest {{files}} Dateien ({{names}}…)`,editingFiles:`Ändert {{files}} Dateien ({{names}}…)`,delegating:`Übergibt an {{target}}`,delegatingBare:`Übergibt an einen Spezialisten`},l=`×{{count}}`,u={modeNarrated:e,modeLog:t,emptyLive:n,emptySettled:r,waiting:i,aiNote:a,step:o,decision:s,activity:c,repeats:l};export{c as activity,a as aiNote,s as decision,u as default,n as emptyLive,r as emptySettled,t as modeLog,e as modeNarrated,l as repeats,o as step,i as waiting};
1
+ var e=`Verlauf`,t=`Protokoll`,n=`Bisher ist nichts passiert.`,r=`Für diesen Lauf wurde keine Aktivität erfasst.`,i={range:`Solche Läufe dauerten {{low}}–{{high}} min (letzte {{count}})`,elapsed:`Läuft seit {{minutes}} min`},a=`Aus dem erstellt, was während des Laufs tatsächlich passiert ist.`,o={start:`Schritt {{step}}: {{title}}`,startRetry:`Schritt {{step}}: {{title}} — Versuch {{iteration}}`,done:`Schritt {{step}} abgeschlossen`,doneTimed:`Schritt {{step}} in {{seconds}} s abgeschlossen`,failed:`Schritt {{step}} war nicht erfolgreich`,interrupted:`Schritt {{step}} wurde vor dem Ende abgebrochen`,doneTimedMin:`Schritt {{step}} in {{minutes}} min abgeschlossen`,role:{work:`nimmt die Änderungen vor`,verify:`prüft, ob es funktioniert`,decide:`entscheidet, ob es fertig ist`,fix:`behebt, was fehlschlug`},stalled:`Schritt {{step}} hing – {{idleMinutes}} Min. ohne Aktivität, daher hat die App ihn beendet`,startResume:`Schritt {{step}}: {{title}} – Fortsetzung nach einem Hänger`,providerLimit:`Schritt {{step}} gestoppt — das Nutzungslimit des Anbieters ist erreicht`},s={another:`Noch nicht fertig — nächste Runde`,satisfied:`Ziel erreicht — weiter`},c={reading:`Liest {{target}}`,readingBare:`Liest den Code`,editing:`Ändert {{target}}`,editingBare:`Ändert den Code`,writing:`Schreibt {{target}}`,writingBare:`Schreibt neuen Code`,searching:`Sucht nach {{target}}`,searchingBare:`Sucht im Code`,running:`Führt {{target}} aus`,runningBare:`Führt einen Befehl aus`,working:`Arbeitet an {{target}}`,workingBare:`Arbeitet`,exploring:`Sieht den Code durch`,exploringBare:`Sieht den Code durch`,testing:`Führt die Tests aus`,building:`Baut das Projekt`,typechecking:`Prüft die Typen`,linting:`Prüft den Codestil`,installing:`Installiert Abhängigkeiten`,savingWork:`Sichert die Arbeit`,checkingSpec:`Prüft die Spec`,bookkeeping:`Notiert eigene Aufzeichnungen`,bookkeepingBare:`Notiert eigene Aufzeichnungen`,writingSpec:`Schreibt den Plan`,writingSpecBare:`Schreibt den Plan`,writingFiles:`Schreibt {{files}} Dateien ({{names}}…)`,readingFiles:`Liest {{files}} Dateien ({{names}}…)`,editingFiles:`Ändert {{files}} Dateien ({{names}}…)`,delegating:`Übergibt an {{target}}`,delegatingBare:`Übergibt an einen Spezialisten`,phase:{architect:`Entwurf der Änderung (Architekt)`,developer:`Umsetzung der Änderung (Entwickler)`,verify:`Ausführen der Verifikationsbefehle`,reviewer:`Prüfung der Umsetzung (Reviewer)`,archive:`Archivierung der geprüften Änderung`,stopped:`Die Laufzeit wurde gestoppt: {{target}}`,corrections:`Korrekturen gehen an den Entwickler zurück`}},l=`×{{count}}`,u={modeNarrated:e,modeLog:t,emptyLive:n,emptySettled:r,waiting:i,aiNote:a,step:o,decision:s,activity:c,repeats:l};export{c as activity,a as aiNote,s as decision,u as default,n as emptyLive,r as emptySettled,t as modeLog,e as modeNarrated,l as repeats,o as step,i as waiting};
@@ -1 +1 @@
1
- var e=`経過`,t=`ログ`,n=`まだ何も起きていません。`,r=`この実行では活動が記録されませんでした。`,i={range:`同種の実行は {{low}}〜{{high}} 分かかっています(直近 {{count}} 件)`,elapsed:`実行中 {{minutes}} 分`},a=`実行中に実際に起きたことから作成しています。`,o={start:`ステップ {{step}}:{{title}}`,startRetry:`ステップ {{step}}:{{title}} — {{iteration}} 回目`,done:`ステップ {{step}} 完了`,doneTimed:`ステップ {{step}} を {{seconds}} 秒で完了`,failed:`ステップ {{step}} は成功しませんでした`,interrupted:`ステップ {{step}} は完了前に中断されました`,doneTimedMin:`ステップ {{step}} を {{minutes}} 分で完了`,role:{work:`変更を加えています`,verify:`動作を確認しています`,decide:`完了かどうか判断しています`,fix:`失敗した箇所を修正しています`},stalled:`ステップ {{step}} が停止:{{idleMinutes}} 分間活動がなかったため、アプリが停止しました`,startResume:`ステップ {{step}}:{{title}} — 停止後に再開`,providerLimit:`ステップ {{step}} 停止 — プロバイダーの利用上限に達しました`},s={another:`まだ未達 — もう一周`,satisfied:`目標達成 — 次へ`},c={reading:`{{target}} を読んでいます`,readingBare:`コードを読んでいます`,editing:`{{target}} を変更しています`,editingBare:`コードを変更しています`,writing:`{{target}} を書いています`,writingBare:`新しいコードを書いています`,searching:`{{target}} を検索しています`,searchingBare:`コードを検索しています`,running:`{{target}} を実行しています`,runningBare:`コマンドを実行しています`,working:`{{target}} を進めています`,workingBare:`作業中`,exploring:`コードを見ています`,exploringBare:`コードを見ています`,testing:`テストを実行しています`,building:`プロジェクトをビルドしています`,typechecking:`型を確認しています`,linting:`コードスタイルを確認しています`,installing:`依存関係をインストールしています`,savingWork:`作業を保存しています`,checkingSpec:`仕様を確認しています`,bookkeeping:`自分用のメモを記録しています`,bookkeepingBare:`自分用のメモを記録しています`,writingSpec:`計画を書いています`,writingSpecBare:`計画を書いています`,writingFiles:`{{files}} 個のファイルを書いています({{names}}…)`,readingFiles:`{{files}} 個のファイルを読んでいます({{names}}…)`,editingFiles:`{{files}} 個のファイルを変更しています({{names}}…)`,delegating:`{{target}} に引き継いでいます`,delegatingBare:`担当に引き継いでいます`},l=`×{{count}}`,u={modeNarrated:e,modeLog:t,emptyLive:n,emptySettled:r,waiting:i,aiNote:a,step:o,decision:s,activity:c,repeats:l};export{c as activity,a as aiNote,s as decision,u as default,n as emptyLive,r as emptySettled,t as modeLog,e as modeNarrated,l as repeats,o as step,i as waiting};
1
+ var e=`経過`,t=`ログ`,n=`まだ何も起きていません。`,r=`この実行では活動が記録されませんでした。`,i={range:`同種の実行は {{low}}〜{{high}} 分かかっています(直近 {{count}} 件)`,elapsed:`実行中 {{minutes}} 分`},a=`実行中に実際に起きたことから作成しています。`,o={start:`ステップ {{step}}:{{title}}`,startRetry:`ステップ {{step}}:{{title}} — {{iteration}} 回目`,done:`ステップ {{step}} 完了`,doneTimed:`ステップ {{step}} を {{seconds}} 秒で完了`,failed:`ステップ {{step}} は成功しませんでした`,interrupted:`ステップ {{step}} は完了前に中断されました`,doneTimedMin:`ステップ {{step}} を {{minutes}} 分で完了`,role:{work:`変更を加えています`,verify:`動作を確認しています`,decide:`完了かどうか判断しています`,fix:`失敗した箇所を修正しています`},stalled:`ステップ {{step}} が停止:{{idleMinutes}} 分間活動がなかったため、アプリが停止しました`,startResume:`ステップ {{step}}:{{title}} — 停止後に再開`,providerLimit:`ステップ {{step}} 停止 — プロバイダーの利用上限に達しました`},s={another:`まだ未達 — もう一周`,satisfied:`目標達成 — 次へ`},c={reading:`{{target}} を読んでいます`,readingBare:`コードを読んでいます`,editing:`{{target}} を変更しています`,editingBare:`コードを変更しています`,writing:`{{target}} を書いています`,writingBare:`新しいコードを書いています`,searching:`{{target}} を検索しています`,searchingBare:`コードを検索しています`,running:`{{target}} を実行しています`,runningBare:`コマンドを実行しています`,working:`{{target}} を進めています`,workingBare:`作業中`,exploring:`コードを見ています`,exploringBare:`コードを見ています`,testing:`テストを実行しています`,building:`プロジェクトをビルドしています`,typechecking:`型を確認しています`,linting:`コードスタイルを確認しています`,installing:`依存関係をインストールしています`,savingWork:`作業を保存しています`,checkingSpec:`仕様を確認しています`,bookkeeping:`自分用のメモを記録しています`,bookkeepingBare:`自分用のメモを記録しています`,writingSpec:`計画を書いています`,writingSpecBare:`計画を書いています`,writingFiles:`{{files}} 個のファイルを書いています({{names}}…)`,readingFiles:`{{files}} 個のファイルを読んでいます({{names}}…)`,editingFiles:`{{files}} 個のファイルを変更しています({{names}}…)`,delegating:`{{target}} に引き継いでいます`,delegatingBare:`担当に引き継いでいます`,phase:{architect:`変更を設計中(アーキテクト)`,developer:`変更を実装中(デベロッパー)`,verify:`検証コマンドを実行中`,reviewer:`実装をレビュー中(レビュアー)`,archive:`レビュー済みの変更をアーカイブ中`,stopped:`実行エンジンが停止しました: {{target}}`,corrections:`修正をデベロッパーに差し戻し中`}},l=`×{{count}}`,u={modeNarrated:e,modeLog:t,emptyLive:n,emptySettled:r,waiting:i,aiNote:a,step:o,decision:s,activity:c,repeats:l};export{c as activity,a as aiNote,s as decision,u as default,n as emptyLive,r as emptySettled,t as modeLog,e as modeNarrated,l as repeats,o as step,i as waiting};
@@ -1 +1 @@
1
- var e=`Racconto`,t=`Registro`,n=`Non è ancora successo nulla.`,r=`Nessuna attività registrata per questa esecuzione.`,i={range:`Esecuzioni come questa hanno richiesto {{low}}–{{high}} min (ultime {{count}})`,elapsed:`In corso da {{minutes}} min`},a=`Costruito da ciò che è realmente accaduto durante l'esecuzione.`,o={start:`Passo {{step}}: {{title}}`,startRetry:`Passo {{step}}: {{title}} — tentativo {{iteration}}`,done:`Passo {{step}} completato`,doneTimed:`Passo {{step}} completato in {{seconds}} s`,failed:`Il passo {{step}} non è riuscito`,interrupted:`Il passo {{step}} è stato interrotto prima di finire`,doneTimedMin:`Passo {{step}} completato in {{minutes}} min`,role:{work:`sta applicando le modifiche`,verify:`sta verificando che funzioni`,decide:`sta decidendo se è finito`,fix:`sta correggendo ciò che è fallito`},stalled:`Il passo {{step}} si è bloccato — nessuna attività per {{idleMinutes}} min, quindi l'app l'ha fermato`,startResume:`Passo {{step}}: {{title}} — ripresa dopo un blocco`,providerLimit:`Passo {{step}} fermato — raggiunto il limite d'uso del provider`},s={another:`Non ancora — un altro giro`,satisfied:`Obiettivo raggiunto — si procede`},c={reading:`Sta leggendo {{target}}`,readingBare:`Sta leggendo il codice`,editing:`Sta modificando {{target}}`,editingBare:`Sta modificando il codice`,writing:`Sta scrivendo {{target}}`,writingBare:`Sta scrivendo nuovo codice`,searching:`Sta cercando {{target}}`,searchingBare:`Sta cercando nel codice`,running:`Sta eseguendo {{target}}`,runningBare:`Sta eseguendo un comando`,working:`Sta lavorando su {{target}}`,workingBare:`Al lavoro`,exploring:`Sta esaminando il codice`,exploringBare:`Sta esaminando il codice`,testing:`Sta eseguendo i test`,building:`Sta compilando il progetto`,typechecking:`Sta verificando i tipi`,linting:`Sta verificando lo stile del codice`,installing:`Sta installando le dipendenze`,savingWork:`Sta salvando il lavoro`,checkingSpec:`Sta verificando la spec`,bookkeeping:`Sta annotando i propri appunti`,bookkeepingBare:`Sta annotando i propri appunti`,writingSpec:`Sta scrivendo il piano`,writingSpecBare:`Sta scrivendo il piano`,writingFiles:`Sta scrivendo {{files}} file ({{names}}…)`,readingFiles:`Sta leggendo {{files}} file ({{names}}…)`,editingFiles:`Sta modificando {{files}} file ({{names}}…)`,delegating:`Passa il lavoro al {{target}}`,delegatingBare:`Passa il lavoro a uno specialista`},l=`×{{count}}`,u={modeNarrated:e,modeLog:t,emptyLive:n,emptySettled:r,waiting:i,aiNote:a,step:o,decision:s,activity:c,repeats:l};export{c as activity,a as aiNote,s as decision,u as default,n as emptyLive,r as emptySettled,t as modeLog,e as modeNarrated,l as repeats,o as step,i as waiting};
1
+ var e=`Racconto`,t=`Registro`,n=`Non è ancora successo nulla.`,r=`Nessuna attività registrata per questa esecuzione.`,i={range:`Esecuzioni come questa hanno richiesto {{low}}–{{high}} min (ultime {{count}})`,elapsed:`In corso da {{minutes}} min`},a=`Costruito da ciò che è realmente accaduto durante l'esecuzione.`,o={start:`Passo {{step}}: {{title}}`,startRetry:`Passo {{step}}: {{title}} — tentativo {{iteration}}`,done:`Passo {{step}} completato`,doneTimed:`Passo {{step}} completato in {{seconds}} s`,failed:`Il passo {{step}} non è riuscito`,interrupted:`Il passo {{step}} è stato interrotto prima di finire`,doneTimedMin:`Passo {{step}} completato in {{minutes}} min`,role:{work:`sta applicando le modifiche`,verify:`sta verificando che funzioni`,decide:`sta decidendo se è finito`,fix:`sta correggendo ciò che è fallito`},stalled:`Il passo {{step}} si è bloccato — nessuna attività per {{idleMinutes}} min, quindi l'app l'ha fermato`,startResume:`Passo {{step}}: {{title}} — ripresa dopo un blocco`,providerLimit:`Passo {{step}} fermato — raggiunto il limite d'uso del provider`},s={another:`Non ancora — un altro giro`,satisfied:`Obiettivo raggiunto — si procede`},c={reading:`Sta leggendo {{target}}`,readingBare:`Sta leggendo il codice`,editing:`Sta modificando {{target}}`,editingBare:`Sta modificando il codice`,writing:`Sta scrivendo {{target}}`,writingBare:`Sta scrivendo nuovo codice`,searching:`Sta cercando {{target}}`,searchingBare:`Sta cercando nel codice`,running:`Sta eseguendo {{target}}`,runningBare:`Sta eseguendo un comando`,working:`Sta lavorando su {{target}}`,workingBare:`Al lavoro`,exploring:`Sta esaminando il codice`,exploringBare:`Sta esaminando il codice`,testing:`Sta eseguendo i test`,building:`Sta compilando il progetto`,typechecking:`Sta verificando i tipi`,linting:`Sta verificando lo stile del codice`,installing:`Sta installando le dipendenze`,savingWork:`Sta salvando il lavoro`,checkingSpec:`Sta verificando la spec`,bookkeeping:`Sta annotando i propri appunti`,bookkeepingBare:`Sta annotando i propri appunti`,writingSpec:`Sta scrivendo il piano`,writingSpecBare:`Sta scrivendo il piano`,writingFiles:`Sta scrivendo {{files}} file ({{names}}…)`,readingFiles:`Sta leggendo {{files}} file ({{names}}…)`,editingFiles:`Sta modificando {{files}} file ({{names}}…)`,delegating:`Passa il lavoro al {{target}}`,delegatingBare:`Passa il lavoro a uno specialista`,phase:{architect:`Progettazione della modifica (architetto)`,developer:`Implementazione della modifica (sviluppatore)`,verify:`Esecuzione dei comandi di verifica`,reviewer:`Revisione dell’implementazione (revisore)`,archive:`Archiviazione della modifica revisionata`,stopped:`Il motore si è fermato: {{target}}`,corrections:`Correzioni rinviate allo sviluppatore`}},l=`×{{count}}`,u={modeNarrated:e,modeLog:t,emptyLive:n,emptySettled:r,waiting:i,aiNote:a,step:o,decision:s,activity:c,repeats:l};export{c as activity,a as aiNote,s as decision,u as default,n as emptyLive,r as emptySettled,t as modeLog,e as modeNarrated,l as repeats,o as step,i as waiting};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({activity:()=>l,aiNote:()=>o,decision:()=>c,default:()=>d,emptyLive:()=>r,emptySettled:()=>i,modeLog:()=>`Log`,modeNarrated:()=>n,repeats:()=>u,step:()=>s,waiting:()=>a}),n=`Story`,r=`Nothing has happened yet.`,i=`No activity was recorded for this run.`,a={range:`Runs like this have taken {{low}}–{{high}} min (last {{count}})`,elapsed:`Running for {{minutes}} min`},o=`Built from what actually happened during the run.`,s={start:`Step {{step}}: {{title}}`,startRetry:`Step {{step}}: {{title}} — attempt {{iteration}}`,done:`Finished step {{step}}`,doneTimed:`Finished step {{step}} in {{seconds}}s`,failed:`Step {{step}} did not succeed`,interrupted:`Step {{step}} was interrupted before it finished`,doneTimedMin:`Finished step {{step}} in {{minutes}} min`,role:{work:`making the changes`,verify:`checking it works`,decide:`deciding whether it's done`,fix:`fixing what failed`},stalled:`Step {{step}} stalled — no activity for {{idleMinutes}} min, so the app stopped it`,startResume:`Step {{step}}: {{title}} — resuming after a stall`,providerLimit:`Step {{step}} stopped — the provider's usage limit was reached`},c={another:`Not done yet — going round again`,satisfied:`Goal met — moving on`},l={reading:`Reading {{target}}`,readingBare:`Reading the code`,editing:`Changing {{target}}`,editingBare:`Changing the code`,writing:`Writing {{target}}`,writingBare:`Writing new code`,searching:`Searching for {{target}}`,searchingBare:`Searching the code`,running:`Running {{target}}`,runningBare:`Running a command`,working:`Working on {{target}}`,workingBare:`Working`,exploring:`Looking through the code`,exploringBare:`Looking through the code`,testing:`Running the tests`,building:`Building the project`,typechecking:`Checking the types`,linting:`Checking code style`,installing:`Installing dependencies`,savingWork:`Saving the work`,checkingSpec:`Checking the spec`,bookkeeping:`Recording its own notes`,bookkeepingBare:`Recording its own notes`,writingSpec:`Writing the plan`,writingSpecBare:`Writing the plan`,writingFiles:`Writing {{files}} files ({{names}}…)`,readingFiles:`Reading {{files}} files ({{names}}…)`,editingFiles:`Changing {{files}} files ({{names}}…)`,delegating:`Handing off to the {{target}}`,delegatingBare:`Handing off to a specialist`},u=`×{{count}}`,d={modeNarrated:n,modeLog:`Log`,emptyLive:r,emptySettled:i,waiting:a,aiNote:o,step:s,decision:c,activity:l,repeats:u};export{t};
1
+ import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({activity:()=>l,aiNote:()=>o,decision:()=>c,default:()=>d,emptyLive:()=>r,emptySettled:()=>i,modeLog:()=>`Log`,modeNarrated:()=>n,repeats:()=>u,step:()=>s,waiting:()=>a}),n=`Story`,r=`Nothing has happened yet.`,i=`No activity was recorded for this run.`,a={range:`Runs like this have taken {{low}}–{{high}} min (last {{count}})`,elapsed:`Running for {{minutes}} min`},o=`Built from what actually happened during the run.`,s={start:`Step {{step}}: {{title}}`,startRetry:`Step {{step}}: {{title}} — attempt {{iteration}}`,done:`Finished step {{step}}`,doneTimed:`Finished step {{step}} in {{seconds}}s`,failed:`Step {{step}} did not succeed`,interrupted:`Step {{step}} was interrupted before it finished`,doneTimedMin:`Finished step {{step}} in {{minutes}} min`,role:{work:`making the changes`,verify:`checking it works`,decide:`deciding whether it's done`,fix:`fixing what failed`},stalled:`Step {{step}} stalled — no activity for {{idleMinutes}} min, so the app stopped it`,startResume:`Step {{step}}: {{title}} — resuming after a stall`,providerLimit:`Step {{step}} stopped — the provider's usage limit was reached`},c={another:`Not done yet — going round again`,satisfied:`Goal met — moving on`},l={reading:`Reading {{target}}`,readingBare:`Reading the code`,editing:`Changing {{target}}`,editingBare:`Changing the code`,writing:`Writing {{target}}`,writingBare:`Writing new code`,searching:`Searching for {{target}}`,searchingBare:`Searching the code`,running:`Running {{target}}`,runningBare:`Running a command`,working:`Working on {{target}}`,workingBare:`Working`,exploring:`Looking through the code`,exploringBare:`Looking through the code`,testing:`Running the tests`,building:`Building the project`,typechecking:`Checking the types`,linting:`Checking code style`,installing:`Installing dependencies`,savingWork:`Saving the work`,checkingSpec:`Checking the spec`,bookkeeping:`Recording its own notes`,bookkeepingBare:`Recording its own notes`,writingSpec:`Writing the plan`,writingSpecBare:`Writing the plan`,writingFiles:`Writing {{files}} files ({{names}}…)`,readingFiles:`Reading {{files}} files ({{names}}…)`,editingFiles:`Changing {{files}} files ({{names}}…)`,delegating:`Handing off to the {{target}}`,delegatingBare:`Handing off to a specialist`,phase:{architect:`Designing the change (architect)`,developer:`Implementing the change (developer)`,verify:`Running the verification commands`,reviewer:`Reviewing the implementation (reviewer)`,archive:`Archiving the reviewed change`,stopped:`The runtime stopped: {{target}}`,corrections:`Sending corrections back to the developer`}},u=`×{{count}}`,d={modeNarrated:n,modeLog:`Log`,emptyLive:r,emptySettled:i,waiting:a,aiNote:o,step:s,decision:c,activity:l,repeats:u};export{t};
@@ -1 +1 @@
1
- var e=`Relato`,t=`Registo`,n=`Ainda não aconteceu nada.`,r=`Não foi registada atividade nesta execução.`,i={range:`Execuções como esta levaram {{low}}–{{high}} min (últimas {{count}})`,elapsed:`A correr há {{minutes}} min`},a=`Construído a partir do que realmente aconteceu durante a execução.`,o={start:`Passo {{step}}: {{title}}`,startRetry:`Passo {{step}}: {{title}} — tentativa {{iteration}}`,done:`Passo {{step}} concluído`,doneTimed:`Passo {{step}} concluído em {{seconds}} s`,failed:`O passo {{step}} não correu bem`,interrupted:`O passo {{step}} foi interrompido antes de terminar`,doneTimedMin:`Passo {{step}} concluído em {{minutes}} min`,role:{work:`a fazer as alterações`,verify:`a comprovar que funciona`,decide:`a decidir se está terminado`,fix:`a corrigir o que falhou`},stalled:`O passo {{step}} travou — sem atividade durante {{idleMinutes}} min, por isso a app parou-o`,startResume:`Passo {{step}}: {{title}} — a retomar após travar`,providerLimit:`Passo {{step}} parado — o limite de utilização do fornecedor foi atingido`},s={another:`Ainda não está — outra volta`,satisfied:`Objetivo cumprido — a seguir`},c={reading:`A ler {{target}}`,readingBare:`A ler o código`,editing:`A alterar {{target}}`,editingBare:`A alterar o código`,writing:`A escrever {{target}}`,writingBare:`A escrever código novo`,searching:`A procurar {{target}}`,searchingBare:`A procurar no código`,running:`A executar {{target}}`,runningBare:`A executar um comando`,working:`A trabalhar em {{target}}`,workingBare:`A trabalhar`,exploring:`A percorrer o código`,exploringBare:`A percorrer o código`,testing:`A executar os testes`,building:`A compilar o projeto`,typechecking:`A verificar os tipos`,linting:`A verificar o estilo do código`,installing:`A instalar dependências`,savingWork:`A guardar o trabalho`,checkingSpec:`A verificar a spec`,bookkeeping:`A registar as suas notas`,bookkeepingBare:`A registar as suas notas`,writingSpec:`A escrever o plano`,writingSpecBare:`A escrever o plano`,writingFiles:`A escrever {{files}} ficheiros ({{names}}…)`,readingFiles:`A ler {{files}} ficheiros ({{names}}…)`,editingFiles:`A alterar {{files}} ficheiros ({{names}}…)`,delegating:`A passar o trabalho ao {{target}}`,delegatingBare:`A passar o trabalho a um especialista`},l=`×{{count}}`,u={modeNarrated:e,modeLog:t,emptyLive:n,emptySettled:r,waiting:i,aiNote:a,step:o,decision:s,activity:c,repeats:l};export{c as activity,a as aiNote,s as decision,u as default,n as emptyLive,r as emptySettled,t as modeLog,e as modeNarrated,l as repeats,o as step,i as waiting};
1
+ var e=`Relato`,t=`Registo`,n=`Ainda não aconteceu nada.`,r=`Não foi registada atividade nesta execução.`,i={range:`Execuções como esta levaram {{low}}–{{high}} min (últimas {{count}})`,elapsed:`A correr há {{minutes}} min`},a=`Construído a partir do que realmente aconteceu durante a execução.`,o={start:`Passo {{step}}: {{title}}`,startRetry:`Passo {{step}}: {{title}} — tentativa {{iteration}}`,done:`Passo {{step}} concluído`,doneTimed:`Passo {{step}} concluído em {{seconds}} s`,failed:`O passo {{step}} não correu bem`,interrupted:`O passo {{step}} foi interrompido antes de terminar`,doneTimedMin:`Passo {{step}} concluído em {{minutes}} min`,role:{work:`a fazer as alterações`,verify:`a comprovar que funciona`,decide:`a decidir se está terminado`,fix:`a corrigir o que falhou`},stalled:`O passo {{step}} travou — sem atividade durante {{idleMinutes}} min, por isso a app parou-o`,startResume:`Passo {{step}}: {{title}} — a retomar após travar`,providerLimit:`Passo {{step}} parado — o limite de utilização do fornecedor foi atingido`},s={another:`Ainda não está — outra volta`,satisfied:`Objetivo cumprido — a seguir`},c={reading:`A ler {{target}}`,readingBare:`A ler o código`,editing:`A alterar {{target}}`,editingBare:`A alterar o código`,writing:`A escrever {{target}}`,writingBare:`A escrever código novo`,searching:`A procurar {{target}}`,searchingBare:`A procurar no código`,running:`A executar {{target}}`,runningBare:`A executar um comando`,working:`A trabalhar em {{target}}`,workingBare:`A trabalhar`,exploring:`A percorrer o código`,exploringBare:`A percorrer o código`,testing:`A executar os testes`,building:`A compilar o projeto`,typechecking:`A verificar os tipos`,linting:`A verificar o estilo do código`,installing:`A instalar dependências`,savingWork:`A guardar o trabalho`,checkingSpec:`A verificar a spec`,bookkeeping:`A registar as suas notas`,bookkeepingBare:`A registar as suas notas`,writingSpec:`A escrever o plano`,writingSpecBare:`A escrever o plano`,writingFiles:`A escrever {{files}} ficheiros ({{names}}…)`,readingFiles:`A ler {{files}} ficheiros ({{names}}…)`,editingFiles:`A alterar {{files}} ficheiros ({{names}}…)`,delegating:`A passar o trabalho ao {{target}}`,delegatingBare:`A passar o trabalho a um especialista`,phase:{architect:`A desenhar a alteração (arquiteto)`,developer:`A implementar a alteração (programador)`,verify:`A executar os comandos de verificação`,reviewer:`A rever a implementação (revisor)`,archive:`A arquivar a alteração revista`,stopped:`O motor parou: {{target}}`,corrections:`A devolver correções ao programador`}},l=`×{{count}}`,u={modeNarrated:e,modeLog:t,emptyLive:n,emptySettled:r,waiting:i,aiNote:a,step:o,decision:s,activity:c,repeats:l};export{c as activity,a as aiNote,s as decision,u as default,n as emptyLive,r as emptySettled,t as modeLog,e as modeNarrated,l as repeats,o as step,i as waiting};
@@ -1 +1 @@
1
- var e=`过程`,t=`日志`,n=`还没有发生任何事。`,r=`本次运行没有记录到活动。`,i={range:`同类运行耗时 {{low}}–{{high}} 分钟(最近 {{count}} 次)`,elapsed:`已运行 {{minutes}} 分钟`},a=`根据运行期间真实发生的事情生成。`,o={start:`第 {{step}} 步:{{title}}`,startRetry:`第 {{step}} 步:{{title}} — 第 {{iteration}} 次尝试`,done:`第 {{step}} 步完成`,doneTimed:`第 {{step}} 步用 {{seconds}} 秒完成`,failed:`第 {{step}} 步未成功`,interrupted:`第 {{step}} 步在完成前被中断`,doneTimedMin:`第 {{step}} 步用 {{minutes}} 分钟完成`,role:{work:`进行修改`,verify:`验证是否可用`,decide:`判断是否完成`,fix:`修复失败的部分`},stalled:`第 {{step}} 步停滞:{{idleMinutes}} 分钟无活动,应用已将其停止`,startResume:`第 {{step}} 步:{{title}}——停滞后恢复`,providerLimit:`步骤 {{step}} 已停止 — 已达到提供商用量限额`},s={another:`还没完成 — 再来一轮`,satisfied:`目标达成 — 继续`},c={reading:`正在读取 {{target}}`,readingBare:`正在读取代码`,editing:`正在修改 {{target}}`,editingBare:`正在修改代码`,writing:`正在编写 {{target}}`,writingBare:`正在编写新代码`,searching:`正在搜索 {{target}}`,searchingBare:`正在搜索代码`,running:`正在运行 {{target}}`,runningBare:`正在运行命令`,working:`正在处理 {{target}}`,workingBare:`正在工作`,exploring:`正在查看代码`,exploringBare:`正在查看代码`,testing:`正在运行测试`,building:`正在构建项目`,typechecking:`正在检查类型`,linting:`正在检查代码风格`,installing:`正在安装依赖`,savingWork:`正在保存工作`,checkingSpec:`正在检查规格`,bookkeeping:`正在记录自己的笔记`,bookkeepingBare:`正在记录自己的笔记`,writingSpec:`正在编写计划`,writingSpecBare:`正在编写计划`,writingFiles:`正在写入 {{files}} 个文件({{names}}…)`,readingFiles:`正在读取 {{files}} 个文件({{names}}…)`,editingFiles:`正在修改 {{files}} 个文件({{names}}…)`,delegating:`移交给 {{target}}`,delegatingBare:`移交给专家`},l=`×{{count}}`,u={modeNarrated:e,modeLog:t,emptyLive:n,emptySettled:r,waiting:i,aiNote:a,step:o,decision:s,activity:c,repeats:l};export{c as activity,a as aiNote,s as decision,u as default,n as emptyLive,r as emptySettled,t as modeLog,e as modeNarrated,l as repeats,o as step,i as waiting};
1
+ var e=`过程`,t=`日志`,n=`还没有发生任何事。`,r=`本次运行没有记录到活动。`,i={range:`同类运行耗时 {{low}}–{{high}} 分钟(最近 {{count}} 次)`,elapsed:`已运行 {{minutes}} 分钟`},a=`根据运行期间真实发生的事情生成。`,o={start:`第 {{step}} 步:{{title}}`,startRetry:`第 {{step}} 步:{{title}} — 第 {{iteration}} 次尝试`,done:`第 {{step}} 步完成`,doneTimed:`第 {{step}} 步用 {{seconds}} 秒完成`,failed:`第 {{step}} 步未成功`,interrupted:`第 {{step}} 步在完成前被中断`,doneTimedMin:`第 {{step}} 步用 {{minutes}} 分钟完成`,role:{work:`进行修改`,verify:`验证是否可用`,decide:`判断是否完成`,fix:`修复失败的部分`},stalled:`第 {{step}} 步停滞:{{idleMinutes}} 分钟无活动,应用已将其停止`,startResume:`第 {{step}} 步:{{title}}——停滞后恢复`,providerLimit:`步骤 {{step}} 已停止 — 已达到提供商用量限额`},s={another:`还没完成 — 再来一轮`,satisfied:`目标达成 — 继续`},c={reading:`正在读取 {{target}}`,readingBare:`正在读取代码`,editing:`正在修改 {{target}}`,editingBare:`正在修改代码`,writing:`正在编写 {{target}}`,writingBare:`正在编写新代码`,searching:`正在搜索 {{target}}`,searchingBare:`正在搜索代码`,running:`正在运行 {{target}}`,runningBare:`正在运行命令`,working:`正在处理 {{target}}`,workingBare:`正在工作`,exploring:`正在查看代码`,exploringBare:`正在查看代码`,testing:`正在运行测试`,building:`正在构建项目`,typechecking:`正在检查类型`,linting:`正在检查代码风格`,installing:`正在安装依赖`,savingWork:`正在保存工作`,checkingSpec:`正在检查规格`,bookkeeping:`正在记录自己的笔记`,bookkeepingBare:`正在记录自己的笔记`,writingSpec:`正在编写计划`,writingSpecBare:`正在编写计划`,writingFiles:`正在写入 {{files}} 个文件({{names}}…)`,readingFiles:`正在读取 {{files}} 个文件({{names}}…)`,editingFiles:`正在修改 {{files}} 个文件({{names}}…)`,delegating:`移交给 {{target}}`,delegatingBare:`移交给专家`,phase:{architect:`设计变更(架构师)`,developer:`实现变更(开发者)`,verify:`运行验证命令`,reviewer:`审阅实现(审阅者)`,archive:`归档已审阅的变更`,stopped:`运行引擎已停止:{{target}}`,corrections:`将修正返回给开发者`}},l=`×{{count}}`,u={modeNarrated:e,modeLog:t,emptyLive:n,emptySettled:r,waiting:i,aiNote:a,step:o,decision:s,activity:c,repeats:l};export{c as activity,a as aiNote,s as decision,u as default,n as emptyLive,r as emptySettled,t as modeLog,e as modeNarrated,l as repeats,o as step,i as waiting};
@@ -1 +1 @@
1
- var e=`Récit`,t=`Journal`,n=`Rien ne s'est encore passé.`,r=`Aucune activité enregistrée pour cette exécution.`,i={range:`Les exécutions de ce type ont pris {{low}}–{{high}} min (dernières {{count}})`,elapsed:`En cours depuis {{minutes}} min`},a=`Construit à partir de ce qui s'est réellement passé pendant l'exécution.`,o={start:`Étape {{step}} : {{title}}`,startRetry:`Étape {{step}} : {{title}} — tentative {{iteration}}`,done:`Étape {{step}} terminée`,doneTimed:`Étape {{step}} terminée en {{seconds}} s`,failed:`L'étape {{step}} n'a pas abouti`,interrupted:`L'étape {{step}} a été interrompue avant la fin`,doneTimedMin:`Étape {{step}} terminée en {{minutes}} min`,role:{work:`réalisation des changements`,verify:`vérification du fonctionnement`,decide:`décision : est-ce terminé ?`,fix:`correction de ce qui a échoué`},stalled:`L'étape {{step}} s'est bloquée — aucune activité pendant {{idleMinutes}} min, l'app l'a donc arrêtée`,startResume:`Étape {{step}} : {{title}} — reprise après un blocage`,providerLimit:`Étape {{step}} arrêtée — la limite d'utilisation du fournisseur a été atteinte`},s={another:`Pas encore fini — nouveau tour`,satisfied:`Objectif atteint — on continue`},c={reading:`Lecture de {{target}}`,readingBare:`Lecture du code`,editing:`Modification de {{target}}`,editingBare:`Modification du code`,writing:`Écriture de {{target}}`,writingBare:`Écriture de nouveau code`,searching:`Recherche de {{target}}`,searchingBare:`Recherche dans le code`,running:`Exécution de {{target}}`,runningBare:`Exécution d'une commande`,working:`Travail sur {{target}}`,workingBare:`Travail en cours`,exploring:`Exploration du code`,exploringBare:`Exploration du code`,testing:`Exécution des tests`,building:`Compilation du projet`,typechecking:`Vérification des types`,linting:`Vérification du style`,installing:`Installation des dépendances`,savingWork:`Enregistrement du travail`,checkingSpec:`Vérification de la spec`,bookkeeping:`Prise de ses propres notes`,bookkeepingBare:`Prise de ses propres notes`,writingSpec:`Rédaction du plan`,writingSpecBare:`Rédaction du plan`,writingFiles:`Écriture de {{files}} fichiers ({{names}}…)`,readingFiles:`Lecture de {{files}} fichiers ({{names}}…)`,editingFiles:`Modification de {{files}} fichiers ({{names}}…)`,delegating:`Transmission au {{target}}`,delegatingBare:`Transmission à un spécialiste`},l=`×{{count}}`,u={modeNarrated:e,modeLog:t,emptyLive:n,emptySettled:r,waiting:i,aiNote:a,step:o,decision:s,activity:c,repeats:l};export{c as activity,a as aiNote,s as decision,u as default,n as emptyLive,r as emptySettled,t as modeLog,e as modeNarrated,l as repeats,o as step,i as waiting};
1
+ var e=`Récit`,t=`Journal`,n=`Rien ne s'est encore passé.`,r=`Aucune activité enregistrée pour cette exécution.`,i={range:`Les exécutions de ce type ont pris {{low}}–{{high}} min (dernières {{count}})`,elapsed:`En cours depuis {{minutes}} min`},a=`Construit à partir de ce qui s'est réellement passé pendant l'exécution.`,o={start:`Étape {{step}} : {{title}}`,startRetry:`Étape {{step}} : {{title}} — tentative {{iteration}}`,done:`Étape {{step}} terminée`,doneTimed:`Étape {{step}} terminée en {{seconds}} s`,failed:`L'étape {{step}} n'a pas abouti`,interrupted:`L'étape {{step}} a été interrompue avant la fin`,doneTimedMin:`Étape {{step}} terminée en {{minutes}} min`,role:{work:`réalisation des changements`,verify:`vérification du fonctionnement`,decide:`décision : est-ce terminé ?`,fix:`correction de ce qui a échoué`},stalled:`L'étape {{step}} s'est bloquée — aucune activité pendant {{idleMinutes}} min, l'app l'a donc arrêtée`,startResume:`Étape {{step}} : {{title}} — reprise après un blocage`,providerLimit:`Étape {{step}} arrêtée — la limite d'utilisation du fournisseur a été atteinte`},s={another:`Pas encore fini — nouveau tour`,satisfied:`Objectif atteint — on continue`},c={reading:`Lecture de {{target}}`,readingBare:`Lecture du code`,editing:`Modification de {{target}}`,editingBare:`Modification du code`,writing:`Écriture de {{target}}`,writingBare:`Écriture de nouveau code`,searching:`Recherche de {{target}}`,searchingBare:`Recherche dans le code`,running:`Exécution de {{target}}`,runningBare:`Exécution d'une commande`,working:`Travail sur {{target}}`,workingBare:`Travail en cours`,exploring:`Exploration du code`,exploringBare:`Exploration du code`,testing:`Exécution des tests`,building:`Compilation du projet`,typechecking:`Vérification des types`,linting:`Vérification du style`,installing:`Installation des dépendances`,savingWork:`Enregistrement du travail`,checkingSpec:`Vérification de la spec`,bookkeeping:`Prise de ses propres notes`,bookkeepingBare:`Prise de ses propres notes`,writingSpec:`Rédaction du plan`,writingSpecBare:`Rédaction du plan`,writingFiles:`Écriture de {{files}} fichiers ({{names}}…)`,readingFiles:`Lecture de {{files}} fichiers ({{names}}…)`,editingFiles:`Modification de {{files}} fichiers ({{names}}…)`,delegating:`Transmission au {{target}}`,delegatingBare:`Transmission à un spécialiste`,phase:{architect:`Conception du changement (architecte)`,developer:`Implémentation du changement (développeur)`,verify:`Exécution des commandes de vérification`,reviewer:`Relecture de l’implémentation (relecteur)`,archive:`Archivage du changement relu`,stopped:`Le moteur s’est arrêté : {{target}}`,corrections:`Renvoi des corrections au développeur`}},l=`×{{count}}`,u={modeNarrated:e,modeLog:t,emptyLive:n,emptySettled:r,waiting:i,aiNote:a,step:o,decision:s,activity:c,repeats:l};export{c as activity,a as aiNote,s as decision,u as default,n as emptyLive,r as emptySettled,t as modeLog,e as modeNarrated,l as repeats,o as step,i as waiting};
@@ -1 +1 @@
1
- var e=`Relato`,t=`Registro`,n=`Todavía no ha pasado nada.`,r=`No se registró actividad en esta ejecución.`,i={range:`Ejecuciones como esta han tardado {{low}}–{{high}} min (últimas {{count}})`,elapsed:`Lleva {{minutes}} min`},a=`Construido a partir de lo que realmente ocurrió durante la ejecución.`,o={start:`Paso {{step}}: {{title}}`,startRetry:`Paso {{step}}: {{title}} — intento {{iteration}}`,done:`Paso {{step}} terminado`,doneTimed:`Paso {{step}} terminado en {{seconds}} s`,failed:`El paso {{step}} no salió bien`,interrupted:`El paso {{step}} se interrumpió antes de terminar`,doneTimedMin:`Paso {{step}} terminado en {{minutes}} min`,role:{work:`haciendo los cambios`,verify:`comprobando que funciona`,decide:`decidiendo si está terminado`,fix:`arreglando lo que falló`},stalled:`El paso {{step}} se atascó: sin actividad durante {{idleMinutes}} min, así que la app lo detuvo`,startResume:`Paso {{step}}: {{title}} — reanudando tras un atasco`,providerLimit:`Paso {{step}} detenido — se alcanzó el límite de uso del proveedor`},s={another:`Aún no está — otra vuelta`,satisfied:`Objetivo cumplido — seguimos`},c={reading:`Leyendo {{target}}`,readingBare:`Leyendo el código`,editing:`Cambiando {{target}}`,editingBare:`Cambiando el código`,writing:`Escribiendo {{target}}`,writingBare:`Escribiendo código nuevo`,searching:`Buscando {{target}}`,searchingBare:`Buscando en el código`,running:`Ejecutando {{target}}`,runningBare:`Ejecutando un comando`,working:`Trabajando en {{target}}`,workingBare:`Trabajando`,exploring:`Revisando el código`,exploringBare:`Revisando el código`,testing:`Ejecutando los tests`,building:`Compilando el proyecto`,typechecking:`Comprobando los tipos`,linting:`Revisando el estilo del código`,installing:`Instalando dependencias`,savingWork:`Guardando el trabajo`,checkingSpec:`Comprobando la spec`,bookkeeping:`Anotando sus propias notas`,bookkeepingBare:`Anotando sus propias notas`,writingSpec:`Escribiendo el plan`,writingSpecBare:`Escribiendo el plan`,writingFiles:`Escribiendo {{files}} archivos ({{names}}…)`,readingFiles:`Leyendo {{files}} archivos ({{names}}…)`,editingFiles:`Cambiando {{files}} archivos ({{names}}…)`,delegating:`Pasando el trabajo al {{target}}`,delegatingBare:`Pasando el trabajo a un especialista`},l=`×{{count}}`,u={modeNarrated:e,modeLog:t,emptyLive:n,emptySettled:r,waiting:i,aiNote:a,step:o,decision:s,activity:c,repeats:l};export{c as activity,a as aiNote,s as decision,u as default,n as emptyLive,r as emptySettled,t as modeLog,e as modeNarrated,l as repeats,o as step,i as waiting};
1
+ var e=`Relato`,t=`Registro`,n=`Todavía no ha pasado nada.`,r=`No se registró actividad en esta ejecución.`,i={range:`Ejecuciones como esta han tardado {{low}}–{{high}} min (últimas {{count}})`,elapsed:`Lleva {{minutes}} min`},a=`Construido a partir de lo que realmente ocurrió durante la ejecución.`,o={start:`Paso {{step}}: {{title}}`,startRetry:`Paso {{step}}: {{title}} — intento {{iteration}}`,done:`Paso {{step}} terminado`,doneTimed:`Paso {{step}} terminado en {{seconds}} s`,failed:`El paso {{step}} no salió bien`,interrupted:`El paso {{step}} se interrumpió antes de terminar`,doneTimedMin:`Paso {{step}} terminado en {{minutes}} min`,role:{work:`haciendo los cambios`,verify:`comprobando que funciona`,decide:`decidiendo si está terminado`,fix:`arreglando lo que falló`},stalled:`El paso {{step}} se atascó: sin actividad durante {{idleMinutes}} min, así que la app lo detuvo`,startResume:`Paso {{step}}: {{title}} — reanudando tras un atasco`,providerLimit:`Paso {{step}} detenido — se alcanzó el límite de uso del proveedor`},s={another:`Aún no está — otra vuelta`,satisfied:`Objetivo cumplido — seguimos`},c={reading:`Leyendo {{target}}`,readingBare:`Leyendo el código`,editing:`Cambiando {{target}}`,editingBare:`Cambiando el código`,writing:`Escribiendo {{target}}`,writingBare:`Escribiendo código nuevo`,searching:`Buscando {{target}}`,searchingBare:`Buscando en el código`,running:`Ejecutando {{target}}`,runningBare:`Ejecutando un comando`,working:`Trabajando en {{target}}`,workingBare:`Trabajando`,exploring:`Revisando el código`,exploringBare:`Revisando el código`,testing:`Ejecutando los tests`,building:`Compilando el proyecto`,typechecking:`Comprobando los tipos`,linting:`Revisando el estilo del código`,installing:`Instalando dependencias`,savingWork:`Guardando el trabajo`,checkingSpec:`Comprobando la spec`,bookkeeping:`Anotando sus propias notas`,bookkeepingBare:`Anotando sus propias notas`,writingSpec:`Escribiendo el plan`,writingSpecBare:`Escribiendo el plan`,writingFiles:`Escribiendo {{files}} archivos ({{names}}…)`,readingFiles:`Leyendo {{files}} archivos ({{names}}…)`,editingFiles:`Cambiando {{files}} archivos ({{names}}…)`,delegating:`Pasando el trabajo al {{target}}`,delegatingBare:`Pasando el trabajo a un especialista`,phase:{architect:`Diseñando el cambio (arquitecto)`,developer:`Implementando el cambio (desarrollador)`,verify:`Ejecutando los comandos de verificación`,reviewer:`Revisando la implementación (revisor)`,archive:`Archivando el cambio revisado`,stopped:`El motor se detuvo: {{target}}`,corrections:`Devolviendo correcciones al desarrollador`}},l=`×{{count}}`,u={modeNarrated:e,modeLog:t,emptyLive:n,emptySettled:r,waiting:i,aiNote:a,step:o,decision:s,activity:c,repeats:l};export{c as activity,a as aiNote,s as decision,u as default,n as emptyLive,r as emptySettled,t as modeLog,e as modeNarrated,l as repeats,o as step,i as waiting};
@@ -1 +1 @@
1
- import{l as e}from"./useSharedWebSocket-DbGL_YOt.js";function t(e){return e?e.repositories?.length?e.repositories:[{id:`primary-${e.id}`,projectId:e.id,name:e.name,path:e.path,isPrimary:!0,kind:`git`,integrationBranch:null,addedAt:e.added_at}]:[]}function n(t,n){let r=`${e}/api/projects/${encodeURIComponent(t)}`;return n?`${r}/repositories/${encodeURIComponent(n)}`:r}export{n,t};
1
+ import{l as e}from"./useSharedWebSocket-5mj2SMKn.js";function t(e){return e?e.repositories?.length?e.repositories:[{id:`primary-${e.id}`,projectId:e.id,name:e.name,path:e.path,isPrimary:!0,kind:`git`,integrationBranch:null,addedAt:e.added_at}]:[]}function n(t,n){let r=`${e}/api/projects/${encodeURIComponent(t)}`;return n?`${r}/repositories/${encodeURIComponent(n)}`:r}export{n,t};
@@ -1 +1 @@
1
- var e={title:`Idioma`,description:`Idioma de la UI para todo Desktop. Se aplica al instante — no hace falta reiniciar.`,selectLabel:`Idioma de la interfaz`,updateFailed:`No se pudo guardar la preferencia de idioma`},t={title:`Ajustes del proyecto`},n={saveFailed:`Error al guardar: {{message}}`},r={title:`Telemetría del pipeline`,description:`Captura el uso de tokens, la duración de las fases y la actividad de los subagentes para exportar diagnósticos. Activada por defecto.`,toggleLabel:`Activar telemetría del pipeline`,toggleDescription:`Cuando está activa, los datos OTEL de los jobs del pipeline se capturan en local. Usa el botón <mono>Exportar diagnóstico</mono> en cualquier tarjeta de job para descargarlos.`,enabled:`Telemetría del pipeline activada`,disabled:`Telemetría del pipeline desactivada`,saveFailed:`No se pudo guardar el ajuste de telemetría`},i={title:`Pre-prompt de rail`,description:`Instrucciones extra específicas del proyecto que se añaden a los jobs de rail implement y batch-implement, después del contexto del ticket y antes de la ejecución.`,label:`Pre-prompt`,placeholder:`Ejemplo: Prefiere cambios incrementales, mantén las migraciones retrocompatibles y añade tests para cada cambio de rail.`,helper:`Úsalo para directrices estables del proyecto que deban acompañar cada ejecución de implementación en rail.`,saveButton:`Guardar pre-prompt`,cleared:`Pre-prompt borrado`,saved:`Pre-prompt guardado`,saveFailed:`No se pudo guardar el pre-prompt`},a={title:`Pre-prompt de Freestyle`,description:`Instrucción enviada al proveedor seleccionado en Freestyle. Freestyle se salta el pipeline de OpenSpec — le entrega al proveedor este pre-prompt más el texto de la spec y le deja implementar de forma autónoma. Déjalo en blanco para usar el valor por defecto integrado.`,label:`Pre-prompt Freestyle`,placeholder:`Déjalo en blanco para usar la instrucción por defecto de Freestyle.`,helper:`El texto de la spec se añade automáticamente después de este pre-prompt. Vacío = por defecto.`,saveButton:`Guardar pre-prompt Freestyle`,resetToDefault:`Pre-prompt Freestyle restablecido al valor por defecto`,saved:`Pre-prompt Freestyle guardado`,saveFailed:`No se pudo guardar el pre-prompt Freestyle`},o={title:`Presupuesto`,description:`Define un límite de gasto diario para este proyecto. La cola se pausa automáticamente al alcanzar el límite.`,dailyLabel:`Presupuesto diario (USD)`,dailyHelper:`Déjalo en blanco para desactivarlo. El gasto se calcula sobre las últimas 24 horas.`,dailyPlaceholder:`p. ej. 5.00`,perJobLabel:`Alerta de coste por job (USD)`,perJobHelper:`Avisa cuando un único job de este proyecto supere este importe.`,perJobPlaceholder:`p. ej. 0.50`,invalidNumber:`Introduce un número positivo o déjalo en blanco para desactivar`,dailyRemoved:`Presupuesto diario eliminado`,dailySet:"Presupuesto diario fijado en ${{amount}}",perJobAlertDisabled:`Alerta de coste por job desactivada`,alertSet:"Alerta configurada para jobs de más de ${{amount}}",saveBudgetFailed:`No se pudo guardar el presupuesto`,saveThresholdFailed:`No se pudo guardar el umbral`},s={nav:{appearance:`Apariencia`,specrailsAgents:`Specrails Agents`,code:`Código`,terminal:`Terminal`,updates:`Actualizaciones`,mobile:`Móvil`,mcp:`MCP`,projects:`Proyectos`,advanced:`Avanzado`,webhooks:`Webhooks`,about:`Acerca de`,effects:`Efectos`},title:`Ajustes de Desktop`,description:`Gestiona los proyectos registrados y consulta la información de Desktop.`,registeredProjects:`Proyectos registrados`,noProjects:`Aún no hay proyectos registrados`,techUrlDescription:`URL base de la API de specrails-tech (por defecto: http://localhost:3000)`,techUrlSaved:`URL de specrails-tech guardada`,techUrlSaveFailed:`No se pudo guardar la URL`,budgetAlertsHeading:`Presupuesto y alertas`,dailyBudgetLabel:`Presupuesto diario de Desktop (USD)`,dailyBudgetHelper:`Límite global de gasto diario en todos los proyectos. Las colas se pausan automáticamente al superarlo.`,dailyBudgetPlaceholder:`p. ej. 10.00`,perJobHelper:`Avisa cuando un único job supere este importe. Déjalo en blanco para desactivarlo.`,costAlertsDisabled:`Alertas de coste desactivadas`,dailyBudgetRemoved:`Presupuesto diario de Desktop eliminado`,dailyBudgetSet:"Presupuesto diario de Desktop fijado en ${{amount}}",dailyBudgetSaveFailed:`No se pudo guardar el presupuesto diario de Desktop`,projectRemoved:`Proyecto eliminado`,projectRemoveFailed:`No se pudo eliminar el proyecto`,onboardingHeading:`Onboarding`,platformTour:`Tour de la plataforma`,platformTourDescription:`Vuelve a ver el asistente de bienvenida para repasar las funciones clave.`,replayTour:`Repetir tour`,terminalPanelHeading:`Panel de terminal`,infoHeading:`Información de Desktop`,infoPort:`Puerto`,infoProjects:`Proyectos`,infoDb:`BD de Desktop`},c={heading:`Notificaciones del sistema`,description:`Muestra notificaciones nativas de escritorio cuando los jobs se completan o fallan. Las notificaciones solo aparecen cuando la pestaña no tiene el foco.`,enableLabel:`Activar notificaciones del sistema`,notifyOn:`Notificar en:`,filterAll:`Todos (completados y fallidos)`,filterCompleted:`Solo completados`,filterFailed:`Solo fallidos`,enabledToast:`Notificaciones del sistema activadas`,disabledToast:`Notificaciones del sistema desactivadas`},l={heading:`Webhooks salientes`,description:`Notifica a herramientas externas (Slack, Zapier, CI/CD) los eventos de Desktop. Las peticiones se firman con <code>X-Specrails-Signature</code> cuando hay un secreto configurado.`,eventJobCompleted:`Job completado`,eventJobFailed:`Job fallido`,eventDailyBudgetExceeded:`Presupuesto diario superado`,statusOn:`on`,statusOff:`off`,disable:`Desactivar`,enable:`Activar`,sendTestPing:`Enviar ping de prueba`,addHeading:`Añadir webhook`,secretPlaceholder:`Secreto de firma (opcional)`,addButton:`Añadir webhook`,urlRequired:`La URL es obligatoria`,selectEvent:`Selecciona al menos un evento`,added:`Webhook añadido`,addFailed:`No se pudo añadir el webhook`,updateFailed:`No se pudo actualizar el webhook`,removed:`Webhook eliminado`,removeFailed:`No se pudo eliminar el webhook`,testPingSent:`Ping de prueba enviado`,testPingFailed:`No se pudo enviar el ping de prueba`},u={title:`Panel de terminal`,desktopDescription:`Valores por defecto de Desktop aplicados a todos los proyectos salvo que exista un override por proyecto.`,projectDescription:`Overrides por proyecto para el panel de terminal. Deja un campo sin cambios para heredar el valor por defecto de Desktop.`,fontFamily:`Familia tipográfica`,fontSize:`Tamaño de fuente ({{min}}–{{max}})`,renderMode:`Modo de renderizado`,copyOnSelect:`Copiar al seleccionar`,shellIntegration:`Integración con el shell (marcas OSC 133)`,notifyLongRunning:`Notificar comandos de larga duración`,longCommandThreshold:`Umbral de comando largo (ms)`,imageRendering:`Renderizado de imágenes inline (Sixel + iTerm2)`,browserShortcutUrl:`URL del atajo de navegador`,quickScript:`Script rápido (se pega en el terminal activo — pulsa Enter manualmente)`,reset:`Restablecer`,unsavedChanges:`Cambios sin guardar`,clearOverride:`Quitar override`,clear:`Quitar`,inheritingDefault:`Heredando el valor por defecto de Desktop`,nothingToSave:`Nada que guardar`,saved:`Ajustes del terminal guardados`},d={heading:`Sección de código`,summaryLanguage:`Idioma de los resúmenes`,monthlyBudget:`Presupuesto mensual (USD)`,budgetHelper:"Tope de gasto de `surface=file-summary` por mes natural. Las regeneraciones iniciadas por el usuario pueden sobrepasarlo."},f={taglines:{dracula:`El original — oscuro con tinte púrpura y acentos neón vivos`,"aurora-light":`Claro premium — índigo inspirado en Linear sobre blanco cálido`,"obsidian-dark":`Oscuro premium — casi negro con tinte azul y acentos eléctricos`,specrails:`Tema de marca — azul marino-índigo profundo con acentos cian saturados`,"code-rain":`Terminal de fósforo — menta suave sobre casi negro verdoso`,galaxy:`Azul de espacio profundo con una estela de hoja brillante`},heading:`Apariencia`,themeGroupLabel:`Tema`,currentlyActive:`Activo actualmente`,updateFailed:`No se pudo actualizar el tema`},p={heading:`App móvil`,description:`Controla Specrails desde la app SpecRails Companion de tu teléfono, 100 % a través de tu red local. Desactivado por defecto.`,accessOn:`Acceso móvil activado`,accessOff:`Acceso móvil desactivado`,listeningOnPort:`A la escucha en el puerto {{port}}`,notListening:`No está a la escucha`,turnOn:`Activar`,turnOff:`Desactivar`,pairWebDevice:`Emparejar companion web`,reset:`Restablecer`,resetConfirm:`¿Restablecer la identidad móvil? Todos los dispositivos emparejados se revocarán y tendrán que emparejarse de nuevo.`,identityReset:`Identidad móvil restablecida`,enableFailed:`No se pudo activar el acceso móvil: {{message}}`,disableFailed:`No se pudo desactivar el acceso móvil: {{message}}`,windowsFirewall:`El Firewall de Windows pedirá permiso para el servidor de SpecRails la primera vez que lo actives — elige «Permitir en redes privadas».`,pairedDevices:`Dispositivos emparejados`,noDevices:`Aún no hay dispositivos emparejados.`,revokeDevice:`Revocar {{name}}`},m={title:`Emparejar companion web`,description:`Abre specrails.dev/companion-app en tu teléfono y escanea este código con él.`,startFailed:`No se pudo iniciar el emparejamiento: {{error}}`,showThenScan:`Cuando tu teléfono haya escaneado esto, toca «Escanear código del teléfono» y apunta la cámara hacia tu teléfono.`,scanAnswer:`Escanear código del teléfono`,scanning:`Apunta la cámara al código de tu teléfono…`,cameraFailed:`Cámara no disponible: {{message}}`,notAnswer:`Ese QR no es una respuesta de emparejamiento.`,connecting:`Conectando…`,paired:`✓ Emparejado`,pairedToast:`Companion web emparejado`,answerRejected:`El equipo de escritorio rechazó ese código. Genera uno nuevo e inténtalo de nuevo.`,copyCode:`Copiar código`,codeCopied:`Código copiado`,cancel:`Cancelar`},h={heading:`Specrails Core`,installed:`Instalado:`,updateAvailable:`Actualización disponible: {{version}}`,upToDate:`Actualizado`,neverChecked:`Sin comprobar`,check:`Buscar actualizaciones`,checking:`Comprobando…`,update:`Actualizar a {{version}}`,downloading:`Descargando…`,materializing:`Instalando…`,affectsAll:`Afecta a todos los proyectos — sin reiniciar.`,unavailable:`Las actualizaciones del core no están disponibles en esta versión.`,toastDone:`Specrails Core actualizado a {{version}}`,toastError:`Error al actualizar el core: {{message}}`,toastUpToDate:`Specrails Core está actualizado`,toastCheckFailed:`Error al comprobar actualizaciones: {{message}}`,loadFailed:`No se pudo actualizar el estado de Core. Reintentar`,runtime:`Motor: {{version}}`,bundled:`Incluido en Desktop: {{version}}`,sources:{override:`Selección explícita`,managed:`Gestionado por Desktop`,bundled:`Incluido en Desktop`,local:`Paquete local`,global:`CLI externo`},repair:`Completar actualización {{version}}`},g={heading:`Specrails Desktop`,installed:`Instalada:`,check:`Buscar actualizaciones`,checking:`Comprobando…`,upToDate:`Tienes la última versión`,updateAvailable:`Actualización disponible: {{version}}`,autoHint:`Se comprueba automáticamente al arrancar y cada 6 horas.`,unavailable:`Las actualizaciones solo están disponibles en la app de escritorio.`,toastUpToDate:`Specrails Desktop está actualizado`,toastCheckFailed:`Error al buscar actualizaciones: {{message}}`},_={title:`{{name}} — Ajustes`,description:`Configuración del proyecto: prompts, rama base, entorno, presupuesto, telemetría y terminal.`,nav:{general:`General`,branch:`Rama base`,environment:`Entorno`,budget:`Presupuesto`,telemetry:`Telemetría`,terminal:`Terminal`}},v={title:`Rama de integración`,description:`La rama desde la que parten los rails paralelos y a la que apuntan sus PRs en borrador. Déjalo vacío para resolver automáticamente a la rama por defecto del repositorio.`,placeholder:`automático (rama por defecto)`,resolved:`Los rails parten de <mono>{{branch}}</mono>`,save:`Guardar rama`,saved:`Rama de integración guardada`,saveFailed:`No se pudo guardar la rama de integración`},y={title:`Entorno de worktrees`,description:`Elige los nombres de variables de entorno que este proyecto pasa a jobs de rail y worktrees aislados de loops. Solo se guardan nombres; los valores se leen al iniciar la ejecución, recuperándolos del login shell si faltan en el proceso de escritorio.`,label:`Variable de entorno`,placeholder:`NODE_AUTH_TOKEN`,helper:`Pulsa Enter o Añadir. Puedes pegar varios nombres separados por comas o espacios.`,add:`Añadir`,empty:`Aún no hay variables específicas para este proyecto.`,remove:`Quitar {{name}}`,save:`Guardar entorno`,saved:`Entorno de worktrees guardado`,saveFailed:`No se pudo guardar el entorno de worktrees`,invalidName:`{{name}} no es un nombre válido de variable de entorno`,noValues:`Añade solo nombres de variables, no secretos KEY=value.`},b={heading:`Specrails Agents`,description:`Personaliza los agentes del pipeline de specrails-core por proveedor de IA — modelo y esfuerzo de razonamiento. Los cambios aplican a la siguiente ejecución, sin reiniciar.`,loadFailed:`No se pudieron cargar los ajustes de agentes.`,modeDefault:`Por defecto`,modeCustom:`Personalizado`,notDetected:`No detectado`,notSignedIn:`Sin iniciar sesión`,pipeline:`Pipeline`,pipelineHint:`Modelo y esfuerzo de toda la ejecución — los subagentes los heredan salvo que los cambies abajo.`,model:`Modelo`,effort:`Esfuerzo`,defaultModel:`Por defecto ({{model}})`,defaultEffort:`Esfuerzo por defecto`,agentsTitle:`Agentes del pipeline`,agentsHint:`Modelo por agente para este proveedor.`,inheritNote:`Los subagentes de Codex heredan el modelo y esfuerzo del pipeline por diseño.`,noPerAgentNote:`Este proveedor no admite modelos por agente.`,reset:`Restaurar valores por defecto`,agentNames:{"sr-architect":`Arquitecto`,"sr-developer":`Desarrollador`,"sr-reviewer":`Revisor`}},x={heading:`Efectos`,description:`Detalles visuales de la app. Cada uno se puede desactivar aquí.`,thinkingHalo:{label:`Halo de pensamiento en el composer del agente`,description:`Mientras el agente piensa o escribe, el anillo orbitante del Constructor brilla alrededor del composer: aparece con un fundido al empezar el turno y se desvanece al terminar la respuesta.`},reducedMotion:`Respeta el ajuste de movimiento reducido del sistema: el anillo queda como un brillo estático.`,preview:`Vista previa`,previewThinking:`Pensando…`},S={language:e,page:t,errors:n,telemetry:r,prePrompt:i,freestylePrePrompt:a,budget:o,desktop:s,notifications:c,webhooks:l,terminal:u,codeSection:d,appearance:f,mobile:p,pairWeb:m,coreUpdate:h,appUpdate:g,projectDialog:_,integrationBranch:v,worktreeEnv:y,specrailsAgents:b,effects:x};export{g as appUpdate,f as appearance,o as budget,d as codeSection,h as coreUpdate,S as default,s as desktop,x as effects,n as errors,a as freestylePrePrompt,v as integrationBranch,e as language,p as mobile,c as notifications,t as page,m as pairWeb,i as prePrompt,_ as projectDialog,b as specrailsAgents,r as telemetry,u as terminal,l as webhooks,y as worktreeEnv};
1
+ var e={title:`Idioma`,description:`Idioma de la UI para todo Desktop. Se aplica al instante — no hace falta reiniciar.`,selectLabel:`Idioma de la interfaz`,updateFailed:`No se pudo guardar la preferencia de idioma`},t={title:`Ajustes del proyecto`},n={saveFailed:`Error al guardar: {{message}}`},r={title:`Telemetría del pipeline`,description:`Captura el uso de tokens, la duración de las fases y la actividad de los subagentes para exportar diagnósticos. Activada por defecto.`,toggleLabel:`Activar telemetría del pipeline`,toggleDescription:`Cuando está activa, los datos OTEL de los jobs del pipeline se capturan en local. Usa el botón <mono>Exportar diagnóstico</mono> en cualquier tarjeta de job para descargarlos.`,enabled:`Telemetría del pipeline activada`,disabled:`Telemetría del pipeline desactivada`,saveFailed:`No se pudo guardar el ajuste de telemetría`},i={title:`Pre-prompt de rail`,description:`Instrucciones extra específicas del proyecto que se añaden a los jobs de rail implement y batch-implement, después del contexto del ticket y antes de la ejecución.`,label:`Pre-prompt`,placeholder:`Ejemplo: Prefiere cambios incrementales, mantén las migraciones retrocompatibles y añade tests para cada cambio de rail.`,helper:`Úsalo para directrices estables del proyecto que deban acompañar cada ejecución de implementación en rail.`,saveButton:`Guardar pre-prompt`,cleared:`Pre-prompt borrado`,saved:`Pre-prompt guardado`,saveFailed:`No se pudo guardar el pre-prompt`},a={title:`Pre-prompt de Freestyle`,description:`Instrucción enviada al proveedor seleccionado en Freestyle. Freestyle se salta el pipeline de OpenSpec — le entrega al proveedor este pre-prompt más el texto de la spec y le deja implementar de forma autónoma. Déjalo en blanco para usar el valor por defecto integrado.`,label:`Pre-prompt Freestyle`,placeholder:`Déjalo en blanco para usar la instrucción por defecto de Freestyle.`,helper:`El texto de la spec se añade automáticamente después de este pre-prompt. Vacío = por defecto.`,saveButton:`Guardar pre-prompt Freestyle`,resetToDefault:`Pre-prompt Freestyle restablecido al valor por defecto`,saved:`Pre-prompt Freestyle guardado`,saveFailed:`No se pudo guardar el pre-prompt Freestyle`},o={title:`Presupuesto`,description:`Define un límite de gasto diario para este proyecto. La cola se pausa automáticamente al alcanzar el límite.`,dailyLabel:`Presupuesto diario (USD)`,dailyHelper:`Déjalo en blanco para desactivarlo. El gasto se calcula sobre las últimas 24 horas.`,dailyPlaceholder:`p. ej. 5.00`,perJobLabel:`Alerta de coste por job (USD)`,perJobHelper:`Avisa cuando un único job de este proyecto supere este importe.`,perJobPlaceholder:`p. ej. 0.50`,invalidNumber:`Introduce un número positivo o déjalo en blanco para desactivar`,dailyRemoved:`Presupuesto diario eliminado`,dailySet:"Presupuesto diario fijado en ${{amount}}",perJobAlertDisabled:`Alerta de coste por job desactivada`,alertSet:"Alerta configurada para jobs de más de ${{amount}}",saveBudgetFailed:`No se pudo guardar el presupuesto`,saveThresholdFailed:`No se pudo guardar el umbral`},s={nav:{appearance:`Apariencia`,specrailsAgents:`Specrails Agents`,code:`Código`,terminal:`Terminal`,updates:`Actualizaciones`,mobile:`Móvil`,mcp:`MCP`,projects:`Proyectos`,advanced:`Avanzado`,webhooks:`Webhooks`,about:`Acerca de`,effects:`Efectos`},title:`Ajustes de Desktop`,description:`Gestiona los proyectos registrados y consulta la información de Desktop.`,registeredProjects:`Proyectos registrados`,noProjects:`Aún no hay proyectos registrados`,techUrlDescription:`URL base de la API de specrails-tech (por defecto: http://localhost:3000)`,techUrlSaved:`URL de specrails-tech guardada`,techUrlSaveFailed:`No se pudo guardar la URL`,budgetAlertsHeading:`Presupuesto y alertas`,dailyBudgetLabel:`Presupuesto diario de Desktop (USD)`,dailyBudgetHelper:`Límite global de gasto diario en todos los proyectos. Las colas se pausan automáticamente al superarlo.`,dailyBudgetPlaceholder:`p. ej. 10.00`,perJobHelper:`Avisa cuando un único job supere este importe. Déjalo en blanco para desactivarlo.`,costAlertsDisabled:`Alertas de coste desactivadas`,dailyBudgetRemoved:`Presupuesto diario de Desktop eliminado`,dailyBudgetSet:"Presupuesto diario de Desktop fijado en ${{amount}}",dailyBudgetSaveFailed:`No se pudo guardar el presupuesto diario de Desktop`,projectRemoved:`Proyecto eliminado`,projectRemoveFailed:`No se pudo eliminar el proyecto`,onboardingHeading:`Onboarding`,platformTour:`Tour de la plataforma`,platformTourDescription:`Vuelve a ver el asistente de bienvenida para repasar las funciones clave.`,replayTour:`Repetir tour`,terminalPanelHeading:`Panel de terminal`,infoHeading:`Información de Desktop`,infoPort:`Puerto`,infoProjects:`Proyectos`,infoDb:`BD de Desktop`},c={heading:`Notificaciones del sistema`,description:`Muestra notificaciones nativas de escritorio cuando los jobs se completan o fallan. Las notificaciones solo aparecen cuando la pestaña no tiene el foco.`,enableLabel:`Activar notificaciones del sistema`,notifyOn:`Notificar en:`,filterAll:`Todos (completados y fallidos)`,filterCompleted:`Solo completados`,filterFailed:`Solo fallidos`,enabledToast:`Notificaciones del sistema activadas`,disabledToast:`Notificaciones del sistema desactivadas`},l={heading:`Webhooks salientes`,description:`Notifica a herramientas externas (Slack, Zapier, CI/CD) los eventos de Desktop. Las peticiones se firman con <code>X-Specrails-Signature</code> cuando hay un secreto configurado.`,eventJobCompleted:`Job completado`,eventJobFailed:`Job fallido`,eventDailyBudgetExceeded:`Presupuesto diario superado`,statusOn:`on`,statusOff:`off`,disable:`Desactivar`,enable:`Activar`,sendTestPing:`Enviar ping de prueba`,addHeading:`Añadir webhook`,secretPlaceholder:`Secreto de firma (opcional)`,addButton:`Añadir webhook`,urlRequired:`La URL es obligatoria`,selectEvent:`Selecciona al menos un evento`,added:`Webhook añadido`,addFailed:`No se pudo añadir el webhook`,updateFailed:`No se pudo actualizar el webhook`,removed:`Webhook eliminado`,removeFailed:`No se pudo eliminar el webhook`,testPingSent:`Ping de prueba enviado`,testPingFailed:`No se pudo enviar el ping de prueba`},u={title:`Panel de terminal`,desktopDescription:`Valores por defecto de Desktop aplicados a todos los proyectos salvo que exista un override por proyecto.`,projectDescription:`Overrides por proyecto para el panel de terminal. Deja un campo sin cambios para heredar el valor por defecto de Desktop.`,fontFamily:`Familia tipográfica`,fontSize:`Tamaño de fuente ({{min}}–{{max}})`,renderMode:`Modo de renderizado`,copyOnSelect:`Copiar al seleccionar`,shellIntegration:`Integración con el shell (marcas OSC 133)`,notifyLongRunning:`Notificar comandos de larga duración`,longCommandThreshold:`Umbral de comando largo (ms)`,imageRendering:`Renderizado de imágenes inline (Sixel + iTerm2)`,browserShortcutUrl:`URL del atajo de navegador`,quickScript:`Script rápido (se pega en el terminal activo — pulsa Enter manualmente)`,reset:`Restablecer`,unsavedChanges:`Cambios sin guardar`,clearOverride:`Quitar override`,clear:`Quitar`,inheritingDefault:`Heredando el valor por defecto de Desktop`,nothingToSave:`Nada que guardar`,saved:`Ajustes del terminal guardados`},d={heading:`Sección de código`,summaryLanguage:`Idioma de los resúmenes`,monthlyBudget:`Presupuesto mensual (USD)`,budgetHelper:"Tope de gasto de `surface=file-summary` por mes natural. Las regeneraciones iniciadas por el usuario pueden sobrepasarlo."},f={taglines:{dracula:`El original — oscuro con tinte púrpura y acentos neón vivos`,"aurora-light":`Claro premium — índigo inspirado en Linear sobre blanco cálido`,"obsidian-dark":`Oscuro premium — casi negro con tinte azul y acentos eléctricos`,specrails:`Tema de marca — azul marino-índigo profundo con acentos cian saturados`,"code-rain":`Terminal de fósforo — menta suave sobre casi negro verdoso`,galaxy:`Azul de espacio profundo con una estela de hoja brillante`},heading:`Apariencia`,themeGroupLabel:`Tema`,currentlyActive:`Activo actualmente`,updateFailed:`No se pudo actualizar el tema`},p={heading:`App móvil`,description:`Controla Specrails desde la app SpecRails Companion de tu teléfono, 100 % a través de tu red local. Desactivado por defecto.`,accessOn:`Acceso móvil activado`,accessOff:`Acceso móvil desactivado`,listeningOnPort:`A la escucha en el puerto {{port}}`,notListening:`No está a la escucha`,turnOn:`Activar`,turnOff:`Desactivar`,pairWebDevice:`Emparejar companion web`,reset:`Restablecer`,resetConfirm:`¿Restablecer la identidad móvil? Todos los dispositivos emparejados se revocarán y tendrán que emparejarse de nuevo.`,identityReset:`Identidad móvil restablecida`,enableFailed:`No se pudo activar el acceso móvil: {{message}}`,disableFailed:`No se pudo desactivar el acceso móvil: {{message}}`,windowsFirewall:`El Firewall de Windows pedirá permiso para el servidor de SpecRails la primera vez que lo actives — elige «Permitir en redes privadas».`,pairedDevices:`Dispositivos emparejados`,noDevices:`Aún no hay dispositivos emparejados.`,revokeDevice:`Revocar {{name}}`},m={title:`Emparejar companion web`,description:`Abre specrails.dev/companion-app en tu teléfono y escanea este código con él.`,startFailed:`No se pudo iniciar el emparejamiento: {{error}}`,showThenScan:`Cuando tu teléfono haya escaneado esto, toca «Escanear código del teléfono» y apunta la cámara hacia tu teléfono.`,scanAnswer:`Escanear código del teléfono`,scanning:`Apunta la cámara al código de tu teléfono…`,cameraFailed:`Cámara no disponible: {{message}}`,notAnswer:`Ese QR no es una respuesta de emparejamiento.`,connecting:`Conectando…`,paired:`✓ Emparejado`,pairedToast:`Companion web emparejado`,answerRejected:`El equipo de escritorio rechazó ese código. Genera uno nuevo e inténtalo de nuevo.`,copyCode:`Copiar código`,codeCopied:`Código copiado`,cancel:`Cancelar`},h={heading:`Specrails Core`,installed:`Instalado:`,updateAvailable:`Actualización disponible: {{version}}`,upToDate:`Actualizado`,neverChecked:`Sin comprobar`,check:`Buscar actualizaciones`,checking:`Comprobando…`,update:`Actualizar a {{version}}`,downloading:`Descargando…`,materializing:`Instalando…`,affectsAll:`Afecta a todos los proyectos — sin reiniciar.`,unavailable:`Las actualizaciones del core no están disponibles en esta versión.`,toastDone:`Specrails Core actualizado a {{version}}`,toastError:`Error al actualizar el core: {{message}}`,toastUpToDate:`Specrails Core está actualizado`,toastCheckFailed:`Error al comprobar actualizaciones: {{message}}`,loadFailed:`No se pudo actualizar el estado de Core. Reintentar`,runtime:`Motor: {{version}}`,bundled:`Incluido en Desktop: {{version}}`,sources:{override:`Selección explícita`,managed:`Gestionado por Desktop`,bundled:`Incluido en Desktop`,local:`Paquete local`,global:`CLI externo`},repair:`Completar actualización {{version}}`},g={heading:`Specrails Desktop`,installed:`Instalada:`,check:`Buscar actualizaciones`,checking:`Comprobando…`,upToDate:`Tienes la última versión`,updateAvailable:`Actualización disponible: {{version}}`,autoHint:`Se comprueba automáticamente al arrancar y cada 6 horas.`,unavailable:`Las actualizaciones solo están disponibles en la app de escritorio.`,toastUpToDate:`Specrails Desktop está actualizado`,toastCheckFailed:`Error al buscar actualizaciones: {{message}}`},_={title:`{{name}} — Ajustes`,description:`Configuración del proyecto: prompts, rama base, entorno, presupuesto, telemetría y terminal.`,nav:{general:`General`,branch:`Rama base`,environment:`Entorno`,budget:`Presupuesto`,telemetry:`Telemetría`,terminal:`Terminal`,agentRuntime:`Motor de agentes`}},v={title:`Rama de integración`,description:`La rama desde la que parten los rails paralelos y a la que apuntan sus PRs en borrador. Déjalo vacío para resolver automáticamente a la rama por defecto del repositorio.`,placeholder:`automático (rama por defecto)`,resolved:`Los rails parten de <mono>{{branch}}</mono>`,save:`Guardar rama`,saved:`Rama de integración guardada`,saveFailed:`No se pudo guardar la rama de integración`},y={title:`Entorno de worktrees`,description:`Elige los nombres de variables de entorno que este proyecto pasa a jobs de rail y worktrees aislados de loops. Solo se guardan nombres; los valores se leen al iniciar la ejecución, recuperándolos del login shell si faltan en el proceso de escritorio.`,label:`Variable de entorno`,placeholder:`NODE_AUTH_TOKEN`,helper:`Pulsa Enter o Añadir. Puedes pegar varios nombres separados por comas o espacios.`,add:`Añadir`,empty:`Aún no hay variables específicas para este proyecto.`,remove:`Quitar {{name}}`,save:`Guardar entorno`,saved:`Entorno de worktrees guardado`,saveFailed:`No se pudo guardar el entorno de worktrees`,invalidName:`{{name}} no es un nombre válido de variable de entorno`,noValues:`Añade solo nombres de variables, no secretos KEY=value.`},b={heading:`Specrails Agents`,description:`Personaliza los agentes del pipeline de specrails-core por proveedor de IA — modelo y esfuerzo de razonamiento. Los cambios aplican a la siguiente ejecución, sin reiniciar.`,loadFailed:`No se pudieron cargar los ajustes de agentes.`,modeDefault:`Por defecto`,modeCustom:`Personalizado`,notDetected:`No detectado`,notSignedIn:`Sin iniciar sesión`,pipeline:`Pipeline`,pipelineHint:`Modelo y esfuerzo de toda la ejecución — los subagentes los heredan salvo que los cambies abajo.`,model:`Modelo`,effort:`Esfuerzo`,defaultModel:`Por defecto ({{model}})`,defaultEffort:`Esfuerzo por defecto`,agentsTitle:`Agentes del pipeline`,agentsHint:`Modelo por agente para este proveedor.`,inheritNote:`Los subagentes de Codex heredan el modelo y esfuerzo del pipeline por diseño.`,noPerAgentNote:`Este proveedor no admite modelos por agente.`,reset:`Restaurar valores por defecto`,agentNames:{"sr-architect":`Arquitecto`,"sr-developer":`Desarrollador`,"sr-reviewer":`Revisor`}},x={heading:`Efectos`,description:`Detalles visuales de la app. Cada uno se puede desactivar aquí.`,thinkingHalo:{label:`Halo de pensamiento en el composer del agente`,description:`Mientras el agente piensa o escribe, el anillo orbitante del Constructor brilla alrededor del composer: aparece con un fundido al empezar el turno y se desvanece al terminar la respuesta.`},reducedMotion:`Respeta el ajuste de movimiento reducido del sistema: el anillo queda como un brillo estático.`,preview:`Vista previa`,previewThinking:`Pensando…`},S={language:e,page:t,errors:n,telemetry:r,prePrompt:i,freestylePrePrompt:a,budget:o,desktop:s,notifications:c,webhooks:l,terminal:u,codeSection:d,appearance:f,mobile:p,pairWeb:m,coreUpdate:h,appUpdate:g,projectDialog:_,integrationBranch:v,worktreeEnv:y,specrailsAgents:b,effects:x};export{g as appUpdate,f as appearance,o as budget,d as codeSection,h as coreUpdate,S as default,s as desktop,x as effects,n as errors,a as freestylePrePrompt,v as integrationBranch,e as language,p as mobile,c as notifications,t as page,m as pairWeb,i as prePrompt,_ as projectDialog,b as specrailsAgents,r as telemetry,u as terminal,l as webhooks,y as worktreeEnv};
@@ -1 +1 @@
1
- var e={title:`言語`,description:`Desktop 全体の UI 言語。即座に適用され、再起動は不要です。`,selectLabel:`インターフェース言語`,updateFailed:`言語設定を保存できませんでした`},t={title:`プロジェクト設定`},n={saveFailed:`保存に失敗しました: {{message}}`},r={title:`パイプラインテレメトリ`,description:`診断エクスポート用にトークン使用量、フェーズ時間、サブエージェントの活動を記録します。デフォルトはオンです。`,toggleLabel:`パイプラインテレメトリを有効化`,toggleDescription:`オンにすると、パイプラインジョブの OTEL データがローカルに記録されます。ジョブカードの <mono>診断をエクスポート</mono> ボタンからダウンロードできます。`,enabled:`パイプラインテレメトリを有効にしました`,disabled:`パイプラインテレメトリを無効にしました`,saveFailed:`テレメトリ設定の保存に失敗しました`},i={title:`レールのプレプロンプト`,description:`implement と batch-implement のレールジョブで、チケットコンテキストの後・実行前に追加されるプロジェクト固有の指示です。`,label:`プレプロンプト`,placeholder:`例: 段階的な変更を優先し、マイグレーションの後方互換性を保ち、レールの変更ごとにテストを追加すること。`,helper:`すべてのレール実装の実行に常に添えたい、安定したプロジェクト指針に使用してください。`,saveButton:`プレプロンプトを保存`,cleared:`プレプロンプトをクリアしました`,saved:`プレプロンプトを保存しました`,saveFailed:`プレプロンプトの保存に失敗しました`},a={title:`Freestyle プレプロンプト`,description:`Freestyle で選択したプロバイダーに送られる指示です。Freestyle は OpenSpec パイプラインをスキップし、このプレプロンプトとスペックテキストをプロバイダーに渡して自律的に実装させます。空欄の場合は組み込みのデフォルトを使用します。`,label:`Freestyle プレプロンプト`,placeholder:`空欄の場合はデフォルトの Freestyle 指示を使用します。`,helper:`スペックテキストはこのプレプロンプトの後に自動で追加されます。空欄 = デフォルト。`,saveButton:`Freestyle プレプロンプトを保存`,resetToDefault:`Freestyle プレプロンプトをデフォルトにリセットしました`,saved:`Freestyle プレプロンプトを保存しました`,saveFailed:`Freestyle プレプロンプトの保存に失敗しました`},o={title:`予算`,description:`このプロジェクトの1日あたりの支出上限を設定します。上限に達するとキューは自動で一時停止します。`,dailyLabel:`日次予算(USD)`,dailyHelper:`無効にするには空欄のままにします。支出は過去24時間で計算されます。`,dailyPlaceholder:`例: 5.00`,perJobLabel:`ジョブ単位のコストアラート(USD)`,perJobHelper:`このプロジェクトの単一ジョブがこの金額を超えたときにアラートします。`,perJobPlaceholder:`例: 0.50`,invalidNumber:`正の数値を入力するか、無効にするには空欄のままにしてください`,dailyRemoved:`日次予算を削除しました`,dailySet:"日次予算を ${{amount}} に設定しました",perJobAlertDisabled:`ジョブ単位のコストアラートを無効にしました`,alertSet:"${{amount}} を超えるジョブにアラートを設定しました",saveBudgetFailed:`予算の保存に失敗しました`,saveThresholdFailed:`しきい値の保存に失敗しました`},s={nav:{appearance:`外観`,specrailsAgents:`Specrails Agents`,code:`コード`,terminal:`ターミナル`,updates:`更新`,mobile:`モバイル`,mcp:`MCP`,projects:`プロジェクト`,advanced:`詳細`,webhooks:`Webhooks`,about:`概要`,effects:`エフェクト`},title:`Desktop 設定`,description:`登録済みプロジェクトの管理と Desktop 情報の表示。`,registeredProjects:`登録済みプロジェクト`,noProjects:`登録されたプロジェクトはまだありません`,techUrlDescription:`specrails-tech API のベース URL(デフォルト: http://localhost:3000)`,techUrlSaved:`specrails-tech の URL を保存しました`,techUrlSaveFailed:`URL の保存に失敗しました`,budgetAlertsHeading:`予算とアラート`,dailyBudgetLabel:`Desktop 日次予算(USD)`,dailyBudgetHelper:`全プロジェクト共通のグローバルな日次支出上限。超過するとキューは自動で一時停止します。`,dailyBudgetPlaceholder:`例: 10.00`,perJobHelper:`単一ジョブがこの金額を超えたときにアラートします。無効にするには空欄のままにします。`,costAlertsDisabled:`コストアラートを無効にしました`,dailyBudgetRemoved:`Desktop の日次予算を削除しました`,dailyBudgetSet:"Desktop の日次予算を ${{amount}} に設定しました",dailyBudgetSaveFailed:`Desktop の日次予算の保存に失敗しました`,projectRemoved:`プロジェクトを削除しました`,projectRemoveFailed:`プロジェクトの削除に失敗しました`,onboardingHeading:`オンボーディング`,platformTour:`プラットフォームツアー`,platformTourDescription:`ウェルカムウィザードを再生して主要機能を確認します。`,replayTour:`ツアーを再生`,terminalPanelHeading:`ターミナルパネル`,infoHeading:`Desktop 情報`,infoPort:`ポート`,infoProjects:`プロジェクト`,infoDb:`Desktop DB`},c={heading:`OS 通知`,description:`ジョブの完了・失敗時にネイティブのデスクトップ通知を表示します。通知はタブがフォーカスされていないときのみ表示されます。`,enableLabel:`OS 通知を有効化`,notifyOn:`通知の対象:`,filterAll:`すべて(完了と失敗)`,filterCompleted:`完了のみ`,filterFailed:`失敗のみ`,enabledToast:`OS 通知を有効にしました`,disabledToast:`OS 通知を無効にしました`},l={heading:`アウトバウンド Webhook`,description:`Desktop のイベントを外部ツール(Slack、Zapier、CI/CD)に通知します。シークレットが設定されている場合、リクエストは <code>X-Specrails-Signature</code> で署名されます。`,eventJobCompleted:`ジョブ完了`,eventJobFailed:`ジョブ失敗`,eventDailyBudgetExceeded:`日次予算超過`,statusOn:`オン`,statusOff:`オフ`,disable:`無効化`,enable:`有効化`,sendTestPing:`テスト ping を送信`,addHeading:`Webhook を追加`,secretPlaceholder:`署名シークレット(任意)`,addButton:`Webhook を追加`,urlRequired:`URL は必須です`,selectEvent:`イベントを1つ以上選択してください`,added:`Webhook を追加しました`,addFailed:`Webhook の追加に失敗しました`,updateFailed:`Webhook の更新に失敗しました`,removed:`Webhook を削除しました`,removeFailed:`Webhook の削除に失敗しました`,testPingSent:`テスト ping を送信しました`,testPingFailed:`テスト ping の送信に失敗しました`},u={title:`ターミナルパネル`,desktopDescription:`プロジェクト別のオーバーライドがない限り、すべてのプロジェクトに適用される Desktop 全体のデフォルトです。`,projectDescription:`ターミナルパネルのプロジェクト別オーバーライド。Desktop のデフォルトを継承するには、フィールドを変更しないでください。`,fontFamily:`フォントファミリー`,fontSize:`フォントサイズ({{min}}–{{max}})`,renderMode:`レンダリングモード`,copyOnSelect:`選択時にコピー`,shellIntegration:`シェル統合(OSC 133 マーク)`,notifyLongRunning:`長時間実行コマンドの通知`,longCommandThreshold:`長時間コマンドのしきい値(ms)`,imageRendering:`インライン画像レンダリング(Sixel + iTerm2)`,browserShortcutUrl:`ブラウザショートカット URL`,quickScript:`クイックスクリプト(アクティブなターミナルに貼り付け — Enter は手動)`,reset:`リセット`,unsavedChanges:`未保存の変更`,clearOverride:`オーバーライドをクリア`,clear:`クリア`,inheritingDefault:`Desktop のデフォルトを継承中`,nothingToSave:`保存する変更はありません`,saved:`ターミナル設定を保存しました`},d={heading:`Code セクション`,summaryLanguage:`要約の言語`,monthlyBudget:`月次予算(USD)`,budgetHelper:"暦月ごとの `surface=file-summary` 支出の上限。ユーザーが開始した再生成は上限を超えられます。"},f={taglines:{dracula:`オリジナル — 紫がかったダークにネオンのアクセント`,"aurora-light":`プレミアムライト — Linear風のインディゴと温かみのあるオフホワイト`,"obsidian-dark":`プレミアムダーク — 青みがかった漆黒にエレクトリックなアクセント`,specrails:`ブランドテーマ — 深いネイビーインディゴに鮮やかなシアン`,"code-rain":`蛍光ターミナル — 緑がかった漆黒にソフトミント`,galaxy:`深宇宙のブルーと輝くブレードの軌跡`},heading:`外観`,themeGroupLabel:`テーマ`,currentlyActive:`現在アクティブ`,updateFailed:`テーマの更新に失敗しました`},p={heading:`モバイルコンパニオン`,description:`スマートフォンの SpecRails Companion アプリから Specrails を操作します。通信は 100% ローカルネットワーク経由です。デフォルトはオフです。`,accessOn:`モバイルアクセス オン`,accessOff:`モバイルアクセス オフ`,listeningOnPort:`ポート {{port}} で待機中`,notListening:`待機していません`,turnOn:`オンにする`,turnOff:`オフにする`,pairWebDevice:`Web コンパニオンをペアリング`,reset:`リセット`,resetConfirm:`モバイル ID をリセットしますか?ペアリング済みのすべてのデバイスが無効化され、再ペアリングが必要になります。`,identityReset:`モバイル ID をリセットしました`,enableFailed:`モバイルアクセスを有効にできませんでした: {{message}}`,disableFailed:`モバイルアクセスを無効にできませんでした: {{message}}`,windowsFirewall:`初回有効化時に Windows ファイアウォールが SpecRails サーバーの許可を求めます — 「プライベートネットワークで許可」を選択してください。`,pairedDevices:`ペアリング済みデバイス`,noDevices:`ペアリングされたデバイスはまだありません。`,revokeDevice:`{{name}} を無効化`},m={title:`Web コンパニオンをペアリング`,description:`スマートフォンで specrails.dev/companion-app を開き、それでこのコードをスキャンしてください。`,startFailed:`ペアリングを開始できませんでした: {{error}}`,showThenScan:`スマートフォンでこれをスキャンしたら、「スマートフォンのコードをスキャン」をタップし、カメラをスマートフォンに向けてください。`,scanAnswer:`スマートフォンのコードをスキャン`,scanning:`カメラをスマートフォンのコードに向けてください…`,cameraFailed:`カメラを利用できません: {{message}}`,notAnswer:`その QR はペアリング応答ではありません。`,connecting:`接続中…`,paired:`✓ ペアリング済み`,pairedToast:`Web コンパニオンをペアリングしました`,answerRejected:`デスクトップがそのコードを拒否しました。新しいコードを生成して再試行してください。`,copyCode:`コードをコピー`,codeCopied:`コードをコピーしました`,cancel:`キャンセル`},h={heading:`Specrails Core`,installed:`インストール済み:`,updateAvailable:`アップデートあり: {{version}}`,upToDate:`最新です`,neverChecked:`未確認`,check:`アップデートを確認`,checking:`確認中…`,update:`{{version}} に更新`,downloading:`ダウンロード中…`,materializing:`インストール中…`,affectsAll:`すべてのプロジェクトに適用 — 再起動不要。`,unavailable:`このビルドではコアの更新は利用できません。`,toastDone:`Specrails Core を {{version}} に更新しました`,toastError:`コアの更新に失敗しました: {{message}}`,toastUpToDate:`Specrails Core は最新です`,toastCheckFailed:`更新の確認に失敗しました: {{message}}`,loadFailed:`Core の状態を更新できませんでした。再試行`,runtime:`ランタイム: {{version}}`,bundled:`Desktop 同梱: {{version}}`,sources:{override:`明示的な指定`,managed:`Desktop が管理`,bundled:`Desktop 同梱`,local:`ローカルパッケージ`,global:`外部 CLI`},repair:`{{version}} への更新を完了`},g={heading:`Specrails Desktop`,installed:`インストール済み:`,check:`アップデートを確認`,checking:`確認中…`,upToDate:`最新バージョンです`,updateAvailable:`アップデートあり: {{version}}`,autoHint:`起動時と6時間ごとに自動確認します。`,unavailable:`アップデートはデスクトップアプリでのみ利用できます。`,toastUpToDate:`Specrails Desktop は最新です`,toastCheckFailed:`アップデートの確認に失敗しました: {{message}}`},_={title:`{{name}} — 設定`,description:`プロジェクト設定:プロンプト、ブランチ、環境、予算、テレメトリ、ターミナル。`,nav:{general:`一般`,branch:`ブランチ`,environment:`環境`,budget:`予算`,telemetry:`テレメトリ`,terminal:`ターミナル`}},v={title:`統合ブランチ`,description:`並列レールが分岐し、ドラフト PR の対象となるブランチです。空欄にするとリポジトリのデフォルトブランチに自動解決されます。`,placeholder:`自動(リポジトリのデフォルト)`,resolved:`レールは <mono>{{branch}}</mono> から分岐します`,save:`ブランチを保存`,saved:`統合ブランチを保存しました`,saveFailed:`統合ブランチを保存できませんでした`},y={title:`Worktree 環境`,description:`このプロジェクトが rail ジョブと分離された loop worktree に渡す環境変数名を選びます。保存されるのは名前だけで、値は実行開始時に読み取られ、Desktop プロセスにない場合は login shell から復元を試みます。`,label:`環境変数`,placeholder:`NODE_AUTH_TOKEN`,helper:`Enter または追加を押します。カンマやスペース区切りで複数の名前を貼り付けられます。`,add:`追加`,empty:`このプロジェクト固有の変数はまだ設定されていません。`,remove:`{{name}} を削除`,save:`環境を保存`,saved:`Worktree 環境を保存しました`,saveFailed:`Worktree 環境を保存できませんでした`,invalidName:`{{name}} は有効な環境変数名ではありません`,noValues:`ここには変数名だけを追加してください。KEY=value のシークレットは入力しないでください。`},b={heading:`Specrails Agents`,description:`AI プロバイダーごとに specrails-core パイプラインのエージェントをカスタマイズ — モデルと推論エフォート。変更は次回の実行から適用され、再起動は不要です。`,loadFailed:`エージェント設定を読み込めませんでした。`,modeDefault:`デフォルト`,modeCustom:`カスタム`,notDetected:`未検出`,notSignedIn:`未サインイン`,pipeline:`パイプライン`,pipelineHint:`実行全体のモデルとエフォート — 下で上書きしない限りサブエージェントに継承されます。`,model:`モデル`,effort:`エフォート`,defaultModel:`デフォルト({{model}})`,defaultEffort:`デフォルトのエフォート`,agentsTitle:`パイプラインエージェント`,agentsHint:`このプロバイダーのエージェント別モデル上書き。`,inheritNote:`Codex のサブエージェントは設計上、パイプラインのモデルとエフォートを継承します。`,noPerAgentNote:`このプロバイダーはエージェント別モデルに対応していません。`,reset:`デフォルトに戻す`,agentNames:{"sr-architect":`アーキテクト`,"sr-developer":`デベロッパー`,"sr-reviewer":`レビュアー`}},x={heading:`エフェクト`,description:`アプリ内の視覚的な演出。それぞれここでオフにできます。`,thinkingHalo:{label:`エージェントコンポーザーの思考ハロー`,description:`エージェントが考えたり書いたりしている間、ビルダーの回転リングがコンポーザーの周りで光ります。ターン開始時にフェードイン、返答完了時にフェードアウトします。`},reducedMotion:`システムの「視差効果を減らす」設定に従い、リングは静的な光のままになります。`,preview:`プレビュー`,previewThinking:`考え中…`},S={language:e,page:t,errors:n,telemetry:r,prePrompt:i,freestylePrePrompt:a,budget:o,desktop:s,notifications:c,webhooks:l,terminal:u,codeSection:d,appearance:f,mobile:p,pairWeb:m,coreUpdate:h,appUpdate:g,projectDialog:_,integrationBranch:v,worktreeEnv:y,specrailsAgents:b,effects:x};export{g as appUpdate,f as appearance,o as budget,d as codeSection,h as coreUpdate,S as default,s as desktop,x as effects,n as errors,a as freestylePrePrompt,v as integrationBranch,e as language,p as mobile,c as notifications,t as page,m as pairWeb,i as prePrompt,_ as projectDialog,b as specrailsAgents,r as telemetry,u as terminal,l as webhooks,y as worktreeEnv};
1
+ var e={title:`言語`,description:`Desktop 全体の UI 言語。即座に適用され、再起動は不要です。`,selectLabel:`インターフェース言語`,updateFailed:`言語設定を保存できませんでした`},t={title:`プロジェクト設定`},n={saveFailed:`保存に失敗しました: {{message}}`},r={title:`パイプラインテレメトリ`,description:`診断エクスポート用にトークン使用量、フェーズ時間、サブエージェントの活動を記録します。デフォルトはオンです。`,toggleLabel:`パイプラインテレメトリを有効化`,toggleDescription:`オンにすると、パイプラインジョブの OTEL データがローカルに記録されます。ジョブカードの <mono>診断をエクスポート</mono> ボタンからダウンロードできます。`,enabled:`パイプラインテレメトリを有効にしました`,disabled:`パイプラインテレメトリを無効にしました`,saveFailed:`テレメトリ設定の保存に失敗しました`},i={title:`レールのプレプロンプト`,description:`implement と batch-implement のレールジョブで、チケットコンテキストの後・実行前に追加されるプロジェクト固有の指示です。`,label:`プレプロンプト`,placeholder:`例: 段階的な変更を優先し、マイグレーションの後方互換性を保ち、レールの変更ごとにテストを追加すること。`,helper:`すべてのレール実装の実行に常に添えたい、安定したプロジェクト指針に使用してください。`,saveButton:`プレプロンプトを保存`,cleared:`プレプロンプトをクリアしました`,saved:`プレプロンプトを保存しました`,saveFailed:`プレプロンプトの保存に失敗しました`},a={title:`Freestyle プレプロンプト`,description:`Freestyle で選択したプロバイダーに送られる指示です。Freestyle は OpenSpec パイプラインをスキップし、このプレプロンプトとスペックテキストをプロバイダーに渡して自律的に実装させます。空欄の場合は組み込みのデフォルトを使用します。`,label:`Freestyle プレプロンプト`,placeholder:`空欄の場合はデフォルトの Freestyle 指示を使用します。`,helper:`スペックテキストはこのプレプロンプトの後に自動で追加されます。空欄 = デフォルト。`,saveButton:`Freestyle プレプロンプトを保存`,resetToDefault:`Freestyle プレプロンプトをデフォルトにリセットしました`,saved:`Freestyle プレプロンプトを保存しました`,saveFailed:`Freestyle プレプロンプトの保存に失敗しました`},o={title:`予算`,description:`このプロジェクトの1日あたりの支出上限を設定します。上限に達するとキューは自動で一時停止します。`,dailyLabel:`日次予算(USD)`,dailyHelper:`無効にするには空欄のままにします。支出は過去24時間で計算されます。`,dailyPlaceholder:`例: 5.00`,perJobLabel:`ジョブ単位のコストアラート(USD)`,perJobHelper:`このプロジェクトの単一ジョブがこの金額を超えたときにアラートします。`,perJobPlaceholder:`例: 0.50`,invalidNumber:`正の数値を入力するか、無効にするには空欄のままにしてください`,dailyRemoved:`日次予算を削除しました`,dailySet:"日次予算を ${{amount}} に設定しました",perJobAlertDisabled:`ジョブ単位のコストアラートを無効にしました`,alertSet:"${{amount}} を超えるジョブにアラートを設定しました",saveBudgetFailed:`予算の保存に失敗しました`,saveThresholdFailed:`しきい値の保存に失敗しました`},s={nav:{appearance:`外観`,specrailsAgents:`Specrails Agents`,code:`コード`,terminal:`ターミナル`,updates:`更新`,mobile:`モバイル`,mcp:`MCP`,projects:`プロジェクト`,advanced:`詳細`,webhooks:`Webhooks`,about:`概要`,effects:`エフェクト`},title:`Desktop 設定`,description:`登録済みプロジェクトの管理と Desktop 情報の表示。`,registeredProjects:`登録済みプロジェクト`,noProjects:`登録されたプロジェクトはまだありません`,techUrlDescription:`specrails-tech API のベース URL(デフォルト: http://localhost:3000)`,techUrlSaved:`specrails-tech の URL を保存しました`,techUrlSaveFailed:`URL の保存に失敗しました`,budgetAlertsHeading:`予算とアラート`,dailyBudgetLabel:`Desktop 日次予算(USD)`,dailyBudgetHelper:`全プロジェクト共通のグローバルな日次支出上限。超過するとキューは自動で一時停止します。`,dailyBudgetPlaceholder:`例: 10.00`,perJobHelper:`単一ジョブがこの金額を超えたときにアラートします。無効にするには空欄のままにします。`,costAlertsDisabled:`コストアラートを無効にしました`,dailyBudgetRemoved:`Desktop の日次予算を削除しました`,dailyBudgetSet:"Desktop の日次予算を ${{amount}} に設定しました",dailyBudgetSaveFailed:`Desktop の日次予算の保存に失敗しました`,projectRemoved:`プロジェクトを削除しました`,projectRemoveFailed:`プロジェクトの削除に失敗しました`,onboardingHeading:`オンボーディング`,platformTour:`プラットフォームツアー`,platformTourDescription:`ウェルカムウィザードを再生して主要機能を確認します。`,replayTour:`ツアーを再生`,terminalPanelHeading:`ターミナルパネル`,infoHeading:`Desktop 情報`,infoPort:`ポート`,infoProjects:`プロジェクト`,infoDb:`Desktop DB`},c={heading:`OS 通知`,description:`ジョブの完了・失敗時にネイティブのデスクトップ通知を表示します。通知はタブがフォーカスされていないときのみ表示されます。`,enableLabel:`OS 通知を有効化`,notifyOn:`通知の対象:`,filterAll:`すべて(完了と失敗)`,filterCompleted:`完了のみ`,filterFailed:`失敗のみ`,enabledToast:`OS 通知を有効にしました`,disabledToast:`OS 通知を無効にしました`},l={heading:`アウトバウンド Webhook`,description:`Desktop のイベントを外部ツール(Slack、Zapier、CI/CD)に通知します。シークレットが設定されている場合、リクエストは <code>X-Specrails-Signature</code> で署名されます。`,eventJobCompleted:`ジョブ完了`,eventJobFailed:`ジョブ失敗`,eventDailyBudgetExceeded:`日次予算超過`,statusOn:`オン`,statusOff:`オフ`,disable:`無効化`,enable:`有効化`,sendTestPing:`テスト ping を送信`,addHeading:`Webhook を追加`,secretPlaceholder:`署名シークレット(任意)`,addButton:`Webhook を追加`,urlRequired:`URL は必須です`,selectEvent:`イベントを1つ以上選択してください`,added:`Webhook を追加しました`,addFailed:`Webhook の追加に失敗しました`,updateFailed:`Webhook の更新に失敗しました`,removed:`Webhook を削除しました`,removeFailed:`Webhook の削除に失敗しました`,testPingSent:`テスト ping を送信しました`,testPingFailed:`テスト ping の送信に失敗しました`},u={title:`ターミナルパネル`,desktopDescription:`プロジェクト別のオーバーライドがない限り、すべてのプロジェクトに適用される Desktop 全体のデフォルトです。`,projectDescription:`ターミナルパネルのプロジェクト別オーバーライド。Desktop のデフォルトを継承するには、フィールドを変更しないでください。`,fontFamily:`フォントファミリー`,fontSize:`フォントサイズ({{min}}–{{max}})`,renderMode:`レンダリングモード`,copyOnSelect:`選択時にコピー`,shellIntegration:`シェル統合(OSC 133 マーク)`,notifyLongRunning:`長時間実行コマンドの通知`,longCommandThreshold:`長時間コマンドのしきい値(ms)`,imageRendering:`インライン画像レンダリング(Sixel + iTerm2)`,browserShortcutUrl:`ブラウザショートカット URL`,quickScript:`クイックスクリプト(アクティブなターミナルに貼り付け — Enter は手動)`,reset:`リセット`,unsavedChanges:`未保存の変更`,clearOverride:`オーバーライドをクリア`,clear:`クリア`,inheritingDefault:`Desktop のデフォルトを継承中`,nothingToSave:`保存する変更はありません`,saved:`ターミナル設定を保存しました`},d={heading:`Code セクション`,summaryLanguage:`要約の言語`,monthlyBudget:`月次予算(USD)`,budgetHelper:"暦月ごとの `surface=file-summary` 支出の上限。ユーザーが開始した再生成は上限を超えられます。"},f={taglines:{dracula:`オリジナル — 紫がかったダークにネオンのアクセント`,"aurora-light":`プレミアムライト — Linear風のインディゴと温かみのあるオフホワイト`,"obsidian-dark":`プレミアムダーク — 青みがかった漆黒にエレクトリックなアクセント`,specrails:`ブランドテーマ — 深いネイビーインディゴに鮮やかなシアン`,"code-rain":`蛍光ターミナル — 緑がかった漆黒にソフトミント`,galaxy:`深宇宙のブルーと輝くブレードの軌跡`},heading:`外観`,themeGroupLabel:`テーマ`,currentlyActive:`現在アクティブ`,updateFailed:`テーマの更新に失敗しました`},p={heading:`モバイルコンパニオン`,description:`スマートフォンの SpecRails Companion アプリから Specrails を操作します。通信は 100% ローカルネットワーク経由です。デフォルトはオフです。`,accessOn:`モバイルアクセス オン`,accessOff:`モバイルアクセス オフ`,listeningOnPort:`ポート {{port}} で待機中`,notListening:`待機していません`,turnOn:`オンにする`,turnOff:`オフにする`,pairWebDevice:`Web コンパニオンをペアリング`,reset:`リセット`,resetConfirm:`モバイル ID をリセットしますか?ペアリング済みのすべてのデバイスが無効化され、再ペアリングが必要になります。`,identityReset:`モバイル ID をリセットしました`,enableFailed:`モバイルアクセスを有効にできませんでした: {{message}}`,disableFailed:`モバイルアクセスを無効にできませんでした: {{message}}`,windowsFirewall:`初回有効化時に Windows ファイアウォールが SpecRails サーバーの許可を求めます — 「プライベートネットワークで許可」を選択してください。`,pairedDevices:`ペアリング済みデバイス`,noDevices:`ペアリングされたデバイスはまだありません。`,revokeDevice:`{{name}} を無効化`},m={title:`Web コンパニオンをペアリング`,description:`スマートフォンで specrails.dev/companion-app を開き、それでこのコードをスキャンしてください。`,startFailed:`ペアリングを開始できませんでした: {{error}}`,showThenScan:`スマートフォンでこれをスキャンしたら、「スマートフォンのコードをスキャン」をタップし、カメラをスマートフォンに向けてください。`,scanAnswer:`スマートフォンのコードをスキャン`,scanning:`カメラをスマートフォンのコードに向けてください…`,cameraFailed:`カメラを利用できません: {{message}}`,notAnswer:`その QR はペアリング応答ではありません。`,connecting:`接続中…`,paired:`✓ ペアリング済み`,pairedToast:`Web コンパニオンをペアリングしました`,answerRejected:`デスクトップがそのコードを拒否しました。新しいコードを生成して再試行してください。`,copyCode:`コードをコピー`,codeCopied:`コードをコピーしました`,cancel:`キャンセル`},h={heading:`Specrails Core`,installed:`インストール済み:`,updateAvailable:`アップデートあり: {{version}}`,upToDate:`最新です`,neverChecked:`未確認`,check:`アップデートを確認`,checking:`確認中…`,update:`{{version}} に更新`,downloading:`ダウンロード中…`,materializing:`インストール中…`,affectsAll:`すべてのプロジェクトに適用 — 再起動不要。`,unavailable:`このビルドではコアの更新は利用できません。`,toastDone:`Specrails Core を {{version}} に更新しました`,toastError:`コアの更新に失敗しました: {{message}}`,toastUpToDate:`Specrails Core は最新です`,toastCheckFailed:`更新の確認に失敗しました: {{message}}`,loadFailed:`Core の状態を更新できませんでした。再試行`,runtime:`ランタイム: {{version}}`,bundled:`Desktop 同梱: {{version}}`,sources:{override:`明示的な指定`,managed:`Desktop が管理`,bundled:`Desktop 同梱`,local:`ローカルパッケージ`,global:`外部 CLI`},repair:`{{version}} への更新を完了`},g={heading:`Specrails Desktop`,installed:`インストール済み:`,check:`アップデートを確認`,checking:`確認中…`,upToDate:`最新バージョンです`,updateAvailable:`アップデートあり: {{version}}`,autoHint:`起動時と6時間ごとに自動確認します。`,unavailable:`アップデートはデスクトップアプリでのみ利用できます。`,toastUpToDate:`Specrails Desktop は最新です`,toastCheckFailed:`アップデートの確認に失敗しました: {{message}}`},_={title:`{{name}} — 設定`,description:`プロジェクト設定:プロンプト、ブランチ、環境、予算、テレメトリ、ターミナル。`,nav:{general:`一般`,branch:`ブランチ`,environment:`環境`,budget:`予算`,telemetry:`テレメトリ`,terminal:`ターミナル`,agentRuntime:`エージェント実行エンジン`}},v={title:`統合ブランチ`,description:`並列レールが分岐し、ドラフト PR の対象となるブランチです。空欄にするとリポジトリのデフォルトブランチに自動解決されます。`,placeholder:`自動(リポジトリのデフォルト)`,resolved:`レールは <mono>{{branch}}</mono> から分岐します`,save:`ブランチを保存`,saved:`統合ブランチを保存しました`,saveFailed:`統合ブランチを保存できませんでした`},y={title:`Worktree 環境`,description:`このプロジェクトが rail ジョブと分離された loop worktree に渡す環境変数名を選びます。保存されるのは名前だけで、値は実行開始時に読み取られ、Desktop プロセスにない場合は login shell から復元を試みます。`,label:`環境変数`,placeholder:`NODE_AUTH_TOKEN`,helper:`Enter または追加を押します。カンマやスペース区切りで複数の名前を貼り付けられます。`,add:`追加`,empty:`このプロジェクト固有の変数はまだ設定されていません。`,remove:`{{name}} を削除`,save:`環境を保存`,saved:`Worktree 環境を保存しました`,saveFailed:`Worktree 環境を保存できませんでした`,invalidName:`{{name}} は有効な環境変数名ではありません`,noValues:`ここには変数名だけを追加してください。KEY=value のシークレットは入力しないでください。`},b={heading:`Specrails Agents`,description:`AI プロバイダーごとに specrails-core パイプラインのエージェントをカスタマイズ — モデルと推論エフォート。変更は次回の実行から適用され、再起動は不要です。`,loadFailed:`エージェント設定を読み込めませんでした。`,modeDefault:`デフォルト`,modeCustom:`カスタム`,notDetected:`未検出`,notSignedIn:`未サインイン`,pipeline:`パイプライン`,pipelineHint:`実行全体のモデルとエフォート — 下で上書きしない限りサブエージェントに継承されます。`,model:`モデル`,effort:`エフォート`,defaultModel:`デフォルト({{model}})`,defaultEffort:`デフォルトのエフォート`,agentsTitle:`パイプラインエージェント`,agentsHint:`このプロバイダーのエージェント別モデル上書き。`,inheritNote:`Codex のサブエージェントは設計上、パイプラインのモデルとエフォートを継承します。`,noPerAgentNote:`このプロバイダーはエージェント別モデルに対応していません。`,reset:`デフォルトに戻す`,agentNames:{"sr-architect":`アーキテクト`,"sr-developer":`デベロッパー`,"sr-reviewer":`レビュアー`}},x={heading:`エフェクト`,description:`アプリ内の視覚的な演出。それぞれここでオフにできます。`,thinkingHalo:{label:`エージェントコンポーザーの思考ハロー`,description:`エージェントが考えたり書いたりしている間、ビルダーの回転リングがコンポーザーの周りで光ります。ターン開始時にフェードイン、返答完了時にフェードアウトします。`},reducedMotion:`システムの「視差効果を減らす」設定に従い、リングは静的な光のままになります。`,preview:`プレビュー`,previewThinking:`考え中…`},S={language:e,page:t,errors:n,telemetry:r,prePrompt:i,freestylePrePrompt:a,budget:o,desktop:s,notifications:c,webhooks:l,terminal:u,codeSection:d,appearance:f,mobile:p,pairWeb:m,coreUpdate:h,appUpdate:g,projectDialog:_,integrationBranch:v,worktreeEnv:y,specrailsAgents:b,effects:x};export{g as appUpdate,f as appearance,o as budget,d as codeSection,h as coreUpdate,S as default,s as desktop,x as effects,n as errors,a as freestylePrePrompt,v as integrationBranch,e as language,p as mobile,c as notifications,t as page,m as pairWeb,i as prePrompt,_ as projectDialog,b as specrailsAgents,r as telemetry,u as terminal,l as webhooks,y as worktreeEnv};
@@ -1 +1 @@
1
- var e={title:`Idioma`,description:`Idioma da UI em todo o Desktop. Aplica-se de imediato — sem reiniciar.`,selectLabel:`Idioma da interface`,updateFailed:`Não foi possível guardar a preferência de idioma`},t={title:`Definições do projeto`},n={saveFailed:`Falha ao guardar: {{message}}`},r={title:`Telemetria do pipeline`,description:`Capture uso de tokens, durações de fases e atividade de subagentes para exportação de diagnóstico. Ativada por omissão.`,toggleLabel:`Ativar telemetria do pipeline`,toggleDescription:`Quando ativa, os dados OTEL dos jobs do pipeline são capturados localmente. Use o botão <mono>Exportar diagnóstico</mono> em qualquer cartão de job para descarregar.`,enabled:`Telemetria do pipeline ativada`,disabled:`Telemetria do pipeline desativada`,saveFailed:`Falha ao guardar a definição de telemetria`},i={title:`Pre-prompt de rail`,description:`Instruções extra específicas do projeto, acrescentadas aos jobs de rail implement e batch-implement depois do contexto do ticket e antes da execução.`,label:`Pre-prompt`,placeholder:`Exemplo: Prefira alterações incrementais, mantenha as migrações retrocompatíveis e adicione testes a cada alteração de rail.`,helper:`Use isto para orientações estáveis do projeto que devem acompanhar cada execução de implementação em rail.`,saveButton:`Guardar pre-prompt`,cleared:`Pre-prompt limpo`,saved:`Pre-prompt guardado`,saveFailed:`Falha ao guardar o pre-prompt`},a={title:`Pre-prompt de Freestyle`,description:`Instrução enviada ao fornecedor selecionado em Freestyle. O Freestyle salta o pipeline OpenSpec — entrega ao fornecedor este pre-prompt mais o texto da spec e deixa-o implementar de forma autónoma. Deixe em branco para usar o valor predefinido.`,label:`Pre-prompt Freestyle`,placeholder:`Deixe em branco para usar a instrução Freestyle predefinida.`,helper:`O texto da spec é acrescentado automaticamente depois deste pre-prompt. Vazio = predefinição.`,saveButton:`Guardar pre-prompt Freestyle`,resetToDefault:`Pre-prompt Freestyle reposto na predefinição`,saved:`Pre-prompt Freestyle guardado`,saveFailed:`Falha ao guardar o pre-prompt Freestyle`},o={title:`Orçamento`,description:`Defina um limite de gasto diário para este projeto. A fila pausa automaticamente quando o limite é atingido.`,dailyLabel:`Orçamento diário (USD)`,dailyHelper:`Deixe em branco para desativar. O gasto é calculado sobre as últimas 24 horas.`,dailyPlaceholder:`ex.: 5.00`,perJobLabel:`Alerta de custo por job (USD)`,perJobHelper:`Alertar quando um único job deste projeto excede este valor.`,perJobPlaceholder:`ex.: 0.50`,invalidNumber:`Introduza um número positivo ou deixe em branco para desativar`,dailyRemoved:`Orçamento diário removido`,dailySet:"Orçamento diário definido como ${{amount}}",perJobAlertDisabled:`Alerta de custo por job desativado`,alertSet:"Alerta definido para jobs acima de ${{amount}}",saveBudgetFailed:`Falha ao guardar o orçamento`,saveThresholdFailed:`Falha ao guardar o limiar`},s={nav:{appearance:`Aparência`,specrailsAgents:`Specrails Agents`,code:`Código`,terminal:`Terminal`,updates:`Atualizações`,mobile:`Móvel`,mcp:`MCP`,projects:`Projetos`,advanced:`Avançado`,webhooks:`Webhooks`,about:`Sobre`,effects:`Efeitos`},title:`Definições do Desktop`,description:`Faça a gestão dos projetos registados e consulte informações do Desktop.`,registeredProjects:`Projetos registados`,noProjects:`Ainda não há projetos registados`,techUrlDescription:`URL base para a API specrails-tech (predefinição: http://localhost:3000)`,techUrlSaved:`URL do specrails-tech guardado`,techUrlSaveFailed:`Falha ao guardar o URL`,budgetAlertsHeading:`Orçamento e alertas`,dailyBudgetLabel:`Orçamento diário do Desktop (USD)`,dailyBudgetHelper:`Limite global de gasto diário em todos os projetos. As filas pausam automaticamente quando é excedido.`,dailyBudgetPlaceholder:`ex.: 10.00`,perJobHelper:`Alertar quando um único job excede este valor. Deixe em branco para desativar.`,costAlertsDisabled:`Alertas de custo desativados`,dailyBudgetRemoved:`Orçamento diário do Desktop removido`,dailyBudgetSet:"Orçamento diário do Desktop definido como ${{amount}}",dailyBudgetSaveFailed:`Falha ao guardar o orçamento diário do Desktop`,projectRemoved:`Projeto removido`,projectRemoveFailed:`Falha ao remover o projeto`,onboardingHeading:`Onboarding`,platformTour:`Tour da plataforma`,platformTourDescription:`Repita o assistente de boas-vindas para rever as funcionalidades principais.`,replayTour:`Repetir tour`,terminalPanelHeading:`Painel de terminal`,infoHeading:`Informações do Desktop`,infoPort:`Porta`,infoProjects:`Projetos`,infoDb:`BD do Desktop`},c={heading:`Notificações do SO`,description:`Mostrar notificações nativas do desktop quando os jobs terminam ou falham. As notificações só aparecem quando o separador não está focado.`,enableLabel:`Ativar notificações do SO`,notifyOn:`Notificar em:`,filterAll:`Tudo (concluídos e falhados)`,filterCompleted:`Apenas concluídos`,filterFailed:`Apenas falhados`,enabledToast:`Notificações do SO ativadas`,disabledToast:`Notificações do SO desativadas`},l={heading:`Webhooks de saída`,description:`Notifique ferramentas externas (Slack, Zapier, CI/CD) sobre eventos do Desktop. Os pedidos são assinados via <code>X-Specrails-Signature</code> quando há um segredo definido.`,eventJobCompleted:`Job concluído`,eventJobFailed:`Job falhado`,eventDailyBudgetExceeded:`Orçamento diário excedido`,statusOn:`ligado`,statusOff:`desligado`,disable:`Desativar`,enable:`Ativar`,sendTestPing:`Enviar ping de teste`,addHeading:`Adicionar webhook`,secretPlaceholder:`Segredo de assinatura (opcional)`,addButton:`Adicionar webhook`,urlRequired:`O URL é obrigatório`,selectEvent:`Selecione pelo menos um evento`,added:`Webhook adicionado`,addFailed:`Falha ao adicionar o webhook`,updateFailed:`Falha ao atualizar o webhook`,removed:`Webhook removido`,removeFailed:`Falha ao remover o webhook`,testPingSent:`Ping de teste enviado`,testPingFailed:`Falha ao enviar o ping de teste`},u={title:`Painel de terminal`,desktopDescription:`Predefinições do Desktop aplicadas a todos os projetos, salvo override por projeto.`,projectDescription:`Overrides por projeto para o painel de terminal. Deixe um campo inalterado para herdar a predefinição do Desktop.`,fontFamily:`Tipo de letra`,fontSize:`Tamanho da letra ({{min}}–{{max}})`,renderMode:`Modo de renderização`,copyOnSelect:`Copiar ao selecionar`,shellIntegration:`Integração com a shell (marcas OSC 133)`,notifyLongRunning:`Notificar comandos de longa duração`,longCommandThreshold:`Limiar de comando longo (ms)`,imageRendering:`Renderização de imagens inline (Sixel + iTerm2)`,browserShortcutUrl:`URL do atalho do browser`,quickScript:`Script rápido (colado no terminal ativo — Enter manualmente)`,reset:`Repor`,unsavedChanges:`Alterações não guardadas`,clearOverride:`Limpar override`,clear:`Limpar`,inheritingDefault:`A herdar a predefinição do Desktop`,nothingToSave:`Nada para guardar`,saved:`Definições do terminal guardadas`},d={heading:`Secção de código`,summaryLanguage:`Idioma dos resumos`,monthlyBudget:`Orçamento mensal (USD)`,budgetHelper:"Limite de gasto em `surface=file-summary` por mês de calendário. Regenerações iniciadas pelo utilizador podem ignorá-lo."},f={taglines:{dracula:`O original — escuro com tom púrpura e acentos néon vivos`,"aurora-light":`Claro premium — índigo inspirado no Linear sobre branco quente`,"obsidian-dark":`Escuro premium — quase preto com tom azulado e acentos elétricos`,specrails:`Tema da marca — azul-marinho-índigo profundo com acentos ciano saturados`,"code-rain":`Terminal de fósforo — menta suave sobre quase preto esverdeado`,galaxy:`Azul de espaço profundo com um rastro brilhante de lâmina`},heading:`Aspeto`,themeGroupLabel:`Tema`,currentlyActive:`Atualmente ativo`,updateFailed:`Falha ao atualizar o tema`},p={heading:`Companion móvel`,description:`Controle o Specrails a partir da app SpecRails Companion no seu telemóvel, 100% através da sua rede local. Desativado por omissão.`,accessOn:`Acesso móvel ligado`,accessOff:`Acesso móvel desligado`,listeningOnPort:`À escuta na porta {{port}}`,notListening:`Não está à escuta`,turnOn:`Ligar`,turnOff:`Desligar`,pairWebDevice:`Emparelhar companion web`,reset:`Repor`,resetConfirm:`Repor a identidade móvel? Todos os dispositivos emparelhados serão revogados e terão de emparelhar novamente.`,identityReset:`Identidade móvel reposta`,enableFailed:`Não foi possível ativar o acesso móvel: {{message}}`,disableFailed:`Não foi possível desativar o acesso móvel: {{message}}`,windowsFirewall:`A Firewall do Windows pedirá para permitir o servidor SpecRails na primeira ativação — escolha “Permitir em redes privadas”.`,pairedDevices:`Dispositivos emparelhados`,noDevices:`Ainda não há dispositivos emparelhados.`,revokeDevice:`Revogar {{name}}`},m={title:`Emparelhar companion web`,description:`Abra specrails.dev/companion-app no seu telemóvel e leia este código com ele.`,startFailed:`Não foi possível iniciar o emparelhamento: {{error}}`,showThenScan:`Depois de o seu telemóvel ler isto, toque em “Ler código do telemóvel” e aponte a câmara para o telemóvel.`,scanAnswer:`Ler código do telemóvel`,scanning:`Aponte a câmara para o código no seu telemóvel…`,cameraFailed:`Câmara indisponível: {{message}}`,notAnswer:`Esse QR não é uma resposta de emparelhamento.`,connecting:`A ligar…`,paired:`✓ Emparelhado`,pairedToast:`Companion web emparelhado`,answerRejected:`O desktop rejeitou esse código. Gere um novo e tente novamente.`,copyCode:`Copiar código`,codeCopied:`Código copiado`,cancel:`Cancelar`},h={heading:`Specrails Core`,installed:`Instalado:`,updateAvailable:`Atualização disponível: {{version}}`,upToDate:`Atualizado`,neverChecked:`Não verificado`,check:`Procurar atualizações`,checking:`A verificar…`,update:`Atualizar para {{version}}`,downloading:`A descarregar…`,materializing:`A instalar…`,affectsAll:`Aplica-se a todos os projetos — sem reiniciar.`,unavailable:`As atualizações do core não estão disponíveis nesta versão.`,toastDone:`Specrails Core atualizado para {{version}}`,toastError:`Falha na atualização do core: {{message}}`,toastUpToDate:`O Specrails Core está atualizado`,toastCheckFailed:`Falha ao verificar atualizações: {{message}}`,loadFailed:`Não foi possível atualizar o estado do Core. Tentar novamente`,runtime:`Motor: {{version}}`,bundled:`Incluído no Desktop: {{version}}`,sources:{override:`Seleção explícita`,managed:`Gerido pelo Desktop`,bundled:`Incluído no Desktop`,local:`Pacote local`,global:`CLI externa`},repair:`Concluir atualização {{version}}`},g={heading:`Specrails Desktop`,installed:`Instalada:`,check:`Verificar atualizações`,checking:`Verificando…`,upToDate:`Você está na versão mais recente`,updateAvailable:`Atualização disponível: {{version}}`,autoHint:`Verificação automática ao iniciar e a cada 6 horas.`,unavailable:`Atualizações estão disponíveis apenas no app desktop.`,toastUpToDate:`O Specrails Desktop está atualizado`,toastCheckFailed:`Falha ao verificar atualizações: {{message}}`},_={title:`{{name}} — Configurações`,description:`Configuração do projeto: prompts, branch, ambiente, orçamento, telemetria e terminal.`,nav:{general:`Geral`,branch:`Branch`,environment:`Ambiente`,budget:`Orçamento`,telemetry:`Telemetria`,terminal:`Terminal`}},v={title:`Ramo de integração`,description:`O ramo a partir do qual os rails paralelos derivam e para o qual apontam os seus PRs em rascunho. Deixe vazio para resolver automaticamente para o ramo padrão do repositório.`,placeholder:`automático (ramo padrão)`,resolved:`Os rails derivam de <mono>{{branch}}</mono>`,save:`Guardar ramo`,saved:`Ramo de integração guardado`,saveFailed:`Não foi possível guardar o ramo de integração`},y={title:`Ambiente dos worktrees`,description:`Escolha os nomes das variáveis de ambiente que este projeto passa para jobs de rail e worktrees isolados de loops. Só os nomes são guardados; os valores são lidos quando a execução começa, com recuperação a partir do login shell se faltarem no processo Desktop.`,label:`Variável de ambiente`,placeholder:`NODE_AUTH_TOKEN`,helper:`Prima Enter ou Adicionar. Pode colar vários nomes separados por vírgulas ou espaços.`,add:`Adicionar`,empty:`Ainda não há variáveis específicas para este projeto.`,remove:`Remover {{name}}`,save:`Guardar ambiente`,saved:`Ambiente dos worktrees guardado`,saveFailed:`Não foi possível guardar o ambiente dos worktrees`,invalidName:`{{name}} não é um nome válido de variável de ambiente`,noValues:`Adicione apenas nomes de variáveis, não segredos KEY=value.`},b={heading:`Specrails Agents`,description:`Personalize os agentes do pipeline specrails-core por provedor de IA — modelo e esforço de raciocínio. As mudanças valem para a próxima execução, sem reiniciar.`,loadFailed:`Não foi possível carregar as configurações dos agentes.`,modeDefault:`Padrão`,modeCustom:`Personalizado`,notDetected:`Não detectado`,notSignedIn:`Sem sessão iniciada`,pipeline:`Pipeline`,pipelineHint:`Modelo e esforço de toda a execução — os subagentes os herdam, salvo override abaixo.`,model:`Modelo`,effort:`Esforço`,defaultModel:`Padrão ({{model}})`,defaultEffort:`Esforço padrão`,agentsTitle:`Agentes do pipeline`,agentsHint:`Modelo por agente para este provedor.`,inheritNote:`Os subagentes do Codex herdam o modelo e o esforço do pipeline por design.`,noPerAgentNote:`Este provedor não suporta modelos por agente.`,reset:`Restaurar padrões`,agentNames:{"sr-architect":`Arquiteto`,"sr-developer":`Desenvolvedor`,"sr-reviewer":`Revisor`}},x={heading:`Efeitos`,description:`Detalhes visuais da app. Cada um pode ser desativado aqui.`,thinkingHalo:{label:`Halo de raciocínio no compositor do agente`,description:`Enquanto o agente pensa ou escreve, o anel orbital do Construtor brilha à volta do compositor: surge com fade ao começar o turno e desvanece quando a resposta termina.`},reducedMotion:`Respeita a definição de movimento reduzido do sistema: o anel fica como um brilho estático.`,preview:`Pré-visualização`,previewThinking:`A pensar…`},S={language:e,page:t,errors:n,telemetry:r,prePrompt:i,freestylePrePrompt:a,budget:o,desktop:s,notifications:c,webhooks:l,terminal:u,codeSection:d,appearance:f,mobile:p,pairWeb:m,coreUpdate:h,appUpdate:g,projectDialog:_,integrationBranch:v,worktreeEnv:y,specrailsAgents:b,effects:x};export{g as appUpdate,f as appearance,o as budget,d as codeSection,h as coreUpdate,S as default,s as desktop,x as effects,n as errors,a as freestylePrePrompt,v as integrationBranch,e as language,p as mobile,c as notifications,t as page,m as pairWeb,i as prePrompt,_ as projectDialog,b as specrailsAgents,r as telemetry,u as terminal,l as webhooks,y as worktreeEnv};
1
+ var e={title:`Idioma`,description:`Idioma da UI em todo o Desktop. Aplica-se de imediato — sem reiniciar.`,selectLabel:`Idioma da interface`,updateFailed:`Não foi possível guardar a preferência de idioma`},t={title:`Definições do projeto`},n={saveFailed:`Falha ao guardar: {{message}}`},r={title:`Telemetria do pipeline`,description:`Capture uso de tokens, durações de fases e atividade de subagentes para exportação de diagnóstico. Ativada por omissão.`,toggleLabel:`Ativar telemetria do pipeline`,toggleDescription:`Quando ativa, os dados OTEL dos jobs do pipeline são capturados localmente. Use o botão <mono>Exportar diagnóstico</mono> em qualquer cartão de job para descarregar.`,enabled:`Telemetria do pipeline ativada`,disabled:`Telemetria do pipeline desativada`,saveFailed:`Falha ao guardar a definição de telemetria`},i={title:`Pre-prompt de rail`,description:`Instruções extra específicas do projeto, acrescentadas aos jobs de rail implement e batch-implement depois do contexto do ticket e antes da execução.`,label:`Pre-prompt`,placeholder:`Exemplo: Prefira alterações incrementais, mantenha as migrações retrocompatíveis e adicione testes a cada alteração de rail.`,helper:`Use isto para orientações estáveis do projeto que devem acompanhar cada execução de implementação em rail.`,saveButton:`Guardar pre-prompt`,cleared:`Pre-prompt limpo`,saved:`Pre-prompt guardado`,saveFailed:`Falha ao guardar o pre-prompt`},a={title:`Pre-prompt de Freestyle`,description:`Instrução enviada ao fornecedor selecionado em Freestyle. O Freestyle salta o pipeline OpenSpec — entrega ao fornecedor este pre-prompt mais o texto da spec e deixa-o implementar de forma autónoma. Deixe em branco para usar o valor predefinido.`,label:`Pre-prompt Freestyle`,placeholder:`Deixe em branco para usar a instrução Freestyle predefinida.`,helper:`O texto da spec é acrescentado automaticamente depois deste pre-prompt. Vazio = predefinição.`,saveButton:`Guardar pre-prompt Freestyle`,resetToDefault:`Pre-prompt Freestyle reposto na predefinição`,saved:`Pre-prompt Freestyle guardado`,saveFailed:`Falha ao guardar o pre-prompt Freestyle`},o={title:`Orçamento`,description:`Defina um limite de gasto diário para este projeto. A fila pausa automaticamente quando o limite é atingido.`,dailyLabel:`Orçamento diário (USD)`,dailyHelper:`Deixe em branco para desativar. O gasto é calculado sobre as últimas 24 horas.`,dailyPlaceholder:`ex.: 5.00`,perJobLabel:`Alerta de custo por job (USD)`,perJobHelper:`Alertar quando um único job deste projeto excede este valor.`,perJobPlaceholder:`ex.: 0.50`,invalidNumber:`Introduza um número positivo ou deixe em branco para desativar`,dailyRemoved:`Orçamento diário removido`,dailySet:"Orçamento diário definido como ${{amount}}",perJobAlertDisabled:`Alerta de custo por job desativado`,alertSet:"Alerta definido para jobs acima de ${{amount}}",saveBudgetFailed:`Falha ao guardar o orçamento`,saveThresholdFailed:`Falha ao guardar o limiar`},s={nav:{appearance:`Aparência`,specrailsAgents:`Specrails Agents`,code:`Código`,terminal:`Terminal`,updates:`Atualizações`,mobile:`Móvel`,mcp:`MCP`,projects:`Projetos`,advanced:`Avançado`,webhooks:`Webhooks`,about:`Sobre`,effects:`Efeitos`},title:`Definições do Desktop`,description:`Faça a gestão dos projetos registados e consulte informações do Desktop.`,registeredProjects:`Projetos registados`,noProjects:`Ainda não há projetos registados`,techUrlDescription:`URL base para a API specrails-tech (predefinição: http://localhost:3000)`,techUrlSaved:`URL do specrails-tech guardado`,techUrlSaveFailed:`Falha ao guardar o URL`,budgetAlertsHeading:`Orçamento e alertas`,dailyBudgetLabel:`Orçamento diário do Desktop (USD)`,dailyBudgetHelper:`Limite global de gasto diário em todos os projetos. As filas pausam automaticamente quando é excedido.`,dailyBudgetPlaceholder:`ex.: 10.00`,perJobHelper:`Alertar quando um único job excede este valor. Deixe em branco para desativar.`,costAlertsDisabled:`Alertas de custo desativados`,dailyBudgetRemoved:`Orçamento diário do Desktop removido`,dailyBudgetSet:"Orçamento diário do Desktop definido como ${{amount}}",dailyBudgetSaveFailed:`Falha ao guardar o orçamento diário do Desktop`,projectRemoved:`Projeto removido`,projectRemoveFailed:`Falha ao remover o projeto`,onboardingHeading:`Onboarding`,platformTour:`Tour da plataforma`,platformTourDescription:`Repita o assistente de boas-vindas para rever as funcionalidades principais.`,replayTour:`Repetir tour`,terminalPanelHeading:`Painel de terminal`,infoHeading:`Informações do Desktop`,infoPort:`Porta`,infoProjects:`Projetos`,infoDb:`BD do Desktop`},c={heading:`Notificações do SO`,description:`Mostrar notificações nativas do desktop quando os jobs terminam ou falham. As notificações só aparecem quando o separador não está focado.`,enableLabel:`Ativar notificações do SO`,notifyOn:`Notificar em:`,filterAll:`Tudo (concluídos e falhados)`,filterCompleted:`Apenas concluídos`,filterFailed:`Apenas falhados`,enabledToast:`Notificações do SO ativadas`,disabledToast:`Notificações do SO desativadas`},l={heading:`Webhooks de saída`,description:`Notifique ferramentas externas (Slack, Zapier, CI/CD) sobre eventos do Desktop. Os pedidos são assinados via <code>X-Specrails-Signature</code> quando há um segredo definido.`,eventJobCompleted:`Job concluído`,eventJobFailed:`Job falhado`,eventDailyBudgetExceeded:`Orçamento diário excedido`,statusOn:`ligado`,statusOff:`desligado`,disable:`Desativar`,enable:`Ativar`,sendTestPing:`Enviar ping de teste`,addHeading:`Adicionar webhook`,secretPlaceholder:`Segredo de assinatura (opcional)`,addButton:`Adicionar webhook`,urlRequired:`O URL é obrigatório`,selectEvent:`Selecione pelo menos um evento`,added:`Webhook adicionado`,addFailed:`Falha ao adicionar o webhook`,updateFailed:`Falha ao atualizar o webhook`,removed:`Webhook removido`,removeFailed:`Falha ao remover o webhook`,testPingSent:`Ping de teste enviado`,testPingFailed:`Falha ao enviar o ping de teste`},u={title:`Painel de terminal`,desktopDescription:`Predefinições do Desktop aplicadas a todos os projetos, salvo override por projeto.`,projectDescription:`Overrides por projeto para o painel de terminal. Deixe um campo inalterado para herdar a predefinição do Desktop.`,fontFamily:`Tipo de letra`,fontSize:`Tamanho da letra ({{min}}–{{max}})`,renderMode:`Modo de renderização`,copyOnSelect:`Copiar ao selecionar`,shellIntegration:`Integração com a shell (marcas OSC 133)`,notifyLongRunning:`Notificar comandos de longa duração`,longCommandThreshold:`Limiar de comando longo (ms)`,imageRendering:`Renderização de imagens inline (Sixel + iTerm2)`,browserShortcutUrl:`URL do atalho do browser`,quickScript:`Script rápido (colado no terminal ativo — Enter manualmente)`,reset:`Repor`,unsavedChanges:`Alterações não guardadas`,clearOverride:`Limpar override`,clear:`Limpar`,inheritingDefault:`A herdar a predefinição do Desktop`,nothingToSave:`Nada para guardar`,saved:`Definições do terminal guardadas`},d={heading:`Secção de código`,summaryLanguage:`Idioma dos resumos`,monthlyBudget:`Orçamento mensal (USD)`,budgetHelper:"Limite de gasto em `surface=file-summary` por mês de calendário. Regenerações iniciadas pelo utilizador podem ignorá-lo."},f={taglines:{dracula:`O original — escuro com tom púrpura e acentos néon vivos`,"aurora-light":`Claro premium — índigo inspirado no Linear sobre branco quente`,"obsidian-dark":`Escuro premium — quase preto com tom azulado e acentos elétricos`,specrails:`Tema da marca — azul-marinho-índigo profundo com acentos ciano saturados`,"code-rain":`Terminal de fósforo — menta suave sobre quase preto esverdeado`,galaxy:`Azul de espaço profundo com um rastro brilhante de lâmina`},heading:`Aspeto`,themeGroupLabel:`Tema`,currentlyActive:`Atualmente ativo`,updateFailed:`Falha ao atualizar o tema`},p={heading:`Companion móvel`,description:`Controle o Specrails a partir da app SpecRails Companion no seu telemóvel, 100% através da sua rede local. Desativado por omissão.`,accessOn:`Acesso móvel ligado`,accessOff:`Acesso móvel desligado`,listeningOnPort:`À escuta na porta {{port}}`,notListening:`Não está à escuta`,turnOn:`Ligar`,turnOff:`Desligar`,pairWebDevice:`Emparelhar companion web`,reset:`Repor`,resetConfirm:`Repor a identidade móvel? Todos os dispositivos emparelhados serão revogados e terão de emparelhar novamente.`,identityReset:`Identidade móvel reposta`,enableFailed:`Não foi possível ativar o acesso móvel: {{message}}`,disableFailed:`Não foi possível desativar o acesso móvel: {{message}}`,windowsFirewall:`A Firewall do Windows pedirá para permitir o servidor SpecRails na primeira ativação — escolha “Permitir em redes privadas”.`,pairedDevices:`Dispositivos emparelhados`,noDevices:`Ainda não há dispositivos emparelhados.`,revokeDevice:`Revogar {{name}}`},m={title:`Emparelhar companion web`,description:`Abra specrails.dev/companion-app no seu telemóvel e leia este código com ele.`,startFailed:`Não foi possível iniciar o emparelhamento: {{error}}`,showThenScan:`Depois de o seu telemóvel ler isto, toque em “Ler código do telemóvel” e aponte a câmara para o telemóvel.`,scanAnswer:`Ler código do telemóvel`,scanning:`Aponte a câmara para o código no seu telemóvel…`,cameraFailed:`Câmara indisponível: {{message}}`,notAnswer:`Esse QR não é uma resposta de emparelhamento.`,connecting:`A ligar…`,paired:`✓ Emparelhado`,pairedToast:`Companion web emparelhado`,answerRejected:`O desktop rejeitou esse código. Gere um novo e tente novamente.`,copyCode:`Copiar código`,codeCopied:`Código copiado`,cancel:`Cancelar`},h={heading:`Specrails Core`,installed:`Instalado:`,updateAvailable:`Atualização disponível: {{version}}`,upToDate:`Atualizado`,neverChecked:`Não verificado`,check:`Procurar atualizações`,checking:`A verificar…`,update:`Atualizar para {{version}}`,downloading:`A descarregar…`,materializing:`A instalar…`,affectsAll:`Aplica-se a todos os projetos — sem reiniciar.`,unavailable:`As atualizações do core não estão disponíveis nesta versão.`,toastDone:`Specrails Core atualizado para {{version}}`,toastError:`Falha na atualização do core: {{message}}`,toastUpToDate:`O Specrails Core está atualizado`,toastCheckFailed:`Falha ao verificar atualizações: {{message}}`,loadFailed:`Não foi possível atualizar o estado do Core. Tentar novamente`,runtime:`Motor: {{version}}`,bundled:`Incluído no Desktop: {{version}}`,sources:{override:`Seleção explícita`,managed:`Gerido pelo Desktop`,bundled:`Incluído no Desktop`,local:`Pacote local`,global:`CLI externa`},repair:`Concluir atualização {{version}}`},g={heading:`Specrails Desktop`,installed:`Instalada:`,check:`Verificar atualizações`,checking:`Verificando…`,upToDate:`Você está na versão mais recente`,updateAvailable:`Atualização disponível: {{version}}`,autoHint:`Verificação automática ao iniciar e a cada 6 horas.`,unavailable:`Atualizações estão disponíveis apenas no app desktop.`,toastUpToDate:`O Specrails Desktop está atualizado`,toastCheckFailed:`Falha ao verificar atualizações: {{message}}`},_={title:`{{name}} — Configurações`,description:`Configuração do projeto: prompts, branch, ambiente, orçamento, telemetria e terminal.`,nav:{general:`Geral`,branch:`Branch`,environment:`Ambiente`,budget:`Orçamento`,telemetry:`Telemetria`,terminal:`Terminal`,agentRuntime:`Motor de agentes`}},v={title:`Ramo de integração`,description:`O ramo a partir do qual os rails paralelos derivam e para o qual apontam os seus PRs em rascunho. Deixe vazio para resolver automaticamente para o ramo padrão do repositório.`,placeholder:`automático (ramo padrão)`,resolved:`Os rails derivam de <mono>{{branch}}</mono>`,save:`Guardar ramo`,saved:`Ramo de integração guardado`,saveFailed:`Não foi possível guardar o ramo de integração`},y={title:`Ambiente dos worktrees`,description:`Escolha os nomes das variáveis de ambiente que este projeto passa para jobs de rail e worktrees isolados de loops. Só os nomes são guardados; os valores são lidos quando a execução começa, com recuperação a partir do login shell se faltarem no processo Desktop.`,label:`Variável de ambiente`,placeholder:`NODE_AUTH_TOKEN`,helper:`Prima Enter ou Adicionar. Pode colar vários nomes separados por vírgulas ou espaços.`,add:`Adicionar`,empty:`Ainda não há variáveis específicas para este projeto.`,remove:`Remover {{name}}`,save:`Guardar ambiente`,saved:`Ambiente dos worktrees guardado`,saveFailed:`Não foi possível guardar o ambiente dos worktrees`,invalidName:`{{name}} não é um nome válido de variável de ambiente`,noValues:`Adicione apenas nomes de variáveis, não segredos KEY=value.`},b={heading:`Specrails Agents`,description:`Personalize os agentes do pipeline specrails-core por provedor de IA — modelo e esforço de raciocínio. As mudanças valem para a próxima execução, sem reiniciar.`,loadFailed:`Não foi possível carregar as configurações dos agentes.`,modeDefault:`Padrão`,modeCustom:`Personalizado`,notDetected:`Não detectado`,notSignedIn:`Sem sessão iniciada`,pipeline:`Pipeline`,pipelineHint:`Modelo e esforço de toda a execução — os subagentes os herdam, salvo override abaixo.`,model:`Modelo`,effort:`Esforço`,defaultModel:`Padrão ({{model}})`,defaultEffort:`Esforço padrão`,agentsTitle:`Agentes do pipeline`,agentsHint:`Modelo por agente para este provedor.`,inheritNote:`Os subagentes do Codex herdam o modelo e o esforço do pipeline por design.`,noPerAgentNote:`Este provedor não suporta modelos por agente.`,reset:`Restaurar padrões`,agentNames:{"sr-architect":`Arquiteto`,"sr-developer":`Desenvolvedor`,"sr-reviewer":`Revisor`}},x={heading:`Efeitos`,description:`Detalhes visuais da app. Cada um pode ser desativado aqui.`,thinkingHalo:{label:`Halo de raciocínio no compositor do agente`,description:`Enquanto o agente pensa ou escreve, o anel orbital do Construtor brilha à volta do compositor: surge com fade ao começar o turno e desvanece quando a resposta termina.`},reducedMotion:`Respeita a definição de movimento reduzido do sistema: o anel fica como um brilho estático.`,preview:`Pré-visualização`,previewThinking:`A pensar…`},S={language:e,page:t,errors:n,telemetry:r,prePrompt:i,freestylePrePrompt:a,budget:o,desktop:s,notifications:c,webhooks:l,terminal:u,codeSection:d,appearance:f,mobile:p,pairWeb:m,coreUpdate:h,appUpdate:g,projectDialog:_,integrationBranch:v,worktreeEnv:y,specrailsAgents:b,effects:x};export{g as appUpdate,f as appearance,o as budget,d as codeSection,h as coreUpdate,S as default,s as desktop,x as effects,n as errors,a as freestylePrePrompt,v as integrationBranch,e as language,p as mobile,c as notifications,t as page,m as pairWeb,i as prePrompt,_ as projectDialog,b as specrailsAgents,r as telemetry,u as terminal,l as webhooks,y as worktreeEnv};
@@ -1 +1 @@
1
- var e={title:`Sprache`,description:`Desktop-weite UI-Sprache. Wird sofort angewendet – kein Neustart nötig.`,selectLabel:`Oberflächensprache`,updateFailed:`Spracheinstellung konnte nicht gespeichert werden`},t={title:`Projekteinstellungen`},n={saveFailed:`Speichern fehlgeschlagen: {{message}}`},r={title:`Pipeline-Telemetrie`,description:`Erfasst Token-Verbrauch, Phasendauern und Subagent-Aktivität für den Diagnose-Export. Standardmäßig an.`,toggleLabel:`Pipeline-Telemetrie aktivieren`,toggleDescription:`Wenn aktiviert, werden OTEL-Daten aus Pipeline-Jobs lokal erfasst. Verwenden Sie zum Herunterladen die Schaltfläche <mono>Diagnose exportieren</mono> auf einer beliebigen Job-Karte.`,enabled:`Pipeline-Telemetrie aktiviert`,disabled:`Pipeline-Telemetrie deaktiviert`,saveFailed:`Telemetrie-Einstellung konnte nicht gespeichert werden`},i={title:`Rail-Pre-Prompt`,description:`Zusätzliche projektspezifische Anweisungen, die an implement- und batch-implement-Rail-Jobs angehängt werden – nach dem Ticket-Kontext und vor der Ausführung.`,label:`Pre-Prompt`,placeholder:`Beispiel: Bevorzuge inkrementelle Änderungen, halte Migrationen abwärtskompatibel und füge Tests für jede Rail-Änderung hinzu.`,helper:`Für stabile Projektleitlinien, die jeden Rail-Implementierungslauf begleiten sollen.`,saveButton:`Pre-Prompt speichern`,cleared:`Pre-Prompt gelöscht`,saved:`Pre-Prompt gespeichert`,saveFailed:`Pre-Prompt konnte nicht gespeichert werden`},a={title:`Freestyle-Pre-Prompt`,description:`Anweisung, die in Freestyle an den ausgewählten Anbieter gesendet wird. Freestyle überspringt die OpenSpec-Pipeline – der Anbieter erhält diesen Pre-Prompt plus den Spec-Text und implementiert autonom. Leer lassen, um den eingebauten Standard zu verwenden.`,label:`Freestyle-Pre-Prompt`,placeholder:`Leer lassen, um die Standard-Freestyle-Anweisung zu verwenden.`,helper:`Der Spec-Text wird automatisch nach diesem Pre-Prompt angehängt. Leer = Standard.`,saveButton:`Freestyle-Pre-Prompt speichern`,resetToDefault:`Freestyle-Pre-Prompt auf Standard zurückgesetzt`,saved:`Freestyle-Pre-Prompt gespeichert`,saveFailed:`Freestyle-Pre-Prompt konnte nicht gespeichert werden`},o={title:`Budget`,description:`Tagesausgabenlimit für dieses Projekt festlegen. Die Queue pausiert automatisch, wenn das Limit erreicht ist.`,dailyLabel:`Tagesbudget (USD)`,dailyHelper:`Leer lassen zum Deaktivieren. Ausgaben werden über die letzten 24 Stunden berechnet.`,dailyPlaceholder:`z. B. 5.00`,perJobLabel:`Kostenalarm pro Job (USD)`,perJobHelper:`Alarm, wenn ein einzelner Job in diesem Projekt diesen Betrag überschreitet.`,perJobPlaceholder:`z. B. 0.50`,invalidNumber:`Positive Zahl eingeben oder leer lassen zum Deaktivieren`,dailyRemoved:`Tagesbudget entfernt`,dailySet:"Tagesbudget auf ${{amount}} gesetzt",perJobAlertDisabled:`Kostenalarm pro Job deaktiviert`,alertSet:"Alarm für Jobs über ${{amount}} gesetzt",saveBudgetFailed:`Budget konnte nicht gespeichert werden`,saveThresholdFailed:`Schwellenwert konnte nicht gespeichert werden`},s={nav:{appearance:`Darstellung`,specrailsAgents:`Specrails Agents`,code:`Code`,terminal:`Terminal`,updates:`Updates`,mobile:`Mobil`,mcp:`MCP`,projects:`Projekte`,advanced:`Erweitert`,webhooks:`Webhooks`,about:`Info`,effects:`Effekte`},title:`Desktop-Einstellungen`,description:`Registrierte Projekte verwalten und Desktop-Informationen einsehen.`,registeredProjects:`Registrierte Projekte`,noProjects:`Noch keine Projekte registriert`,techUrlDescription:`Basis-URL für die specrails-tech-API (Standard: http://localhost:3000)`,techUrlSaved:`specrails-tech-URL gespeichert`,techUrlSaveFailed:`URL konnte nicht gespeichert werden`,budgetAlertsHeading:`Budget & Alarme`,dailyBudgetLabel:`Desktop-Tagesbudget (USD)`,dailyBudgetHelper:`Globales Tagesausgabenlimit über alle Projekte. Queues pausieren automatisch bei Überschreitung.`,dailyBudgetPlaceholder:`z. B. 10.00`,perJobHelper:`Alarm, wenn ein einzelner Job diesen Betrag überschreitet. Leer lassen zum Deaktivieren.`,costAlertsDisabled:`Kostenalarme deaktiviert`,dailyBudgetRemoved:`Desktop-Tagesbudget entfernt`,dailyBudgetSet:"Desktop-Tagesbudget auf ${{amount}} gesetzt",dailyBudgetSaveFailed:`Desktop-Tagesbudget konnte nicht gespeichert werden`,projectRemoved:`Projekt entfernt`,projectRemoveFailed:`Projekt konnte nicht entfernt werden`,onboardingHeading:`Onboarding`,platformTour:`Plattform-Tour`,platformTourDescription:`Den Willkommensassistenten erneut abspielen, um die wichtigsten Funktionen zu sehen.`,replayTour:`Tour erneut abspielen`,terminalPanelHeading:`Terminal-Panel`,infoHeading:`Desktop-Informationen`,infoPort:`Port`,infoProjects:`Projekte`,infoDb:`Desktop-DB`},c={heading:`OS-Benachrichtigungen`,description:`Native Desktop-Benachrichtigungen anzeigen, wenn Jobs abgeschlossen werden oder fehlschlagen. Benachrichtigungen erscheinen nur, wenn der Tab nicht fokussiert ist.`,enableLabel:`OS-Benachrichtigungen aktivieren`,notifyOn:`Benachrichtigen bei:`,filterAll:`Alle (abgeschlossen & fehlgeschlagen)`,filterCompleted:`Nur abgeschlossen`,filterFailed:`Nur fehlgeschlagen`,enabledToast:`OS-Benachrichtigungen aktiviert`,disabledToast:`OS-Benachrichtigungen deaktiviert`},l={heading:`Ausgehende Webhooks`,description:`Externe Tools (Slack, Zapier, CI/CD) bei Desktop-Ereignissen benachrichtigen. Anfragen werden über <code>X-Specrails-Signature</code> signiert, wenn ein Secret gesetzt ist.`,eventJobCompleted:`Job abgeschlossen`,eventJobFailed:`Job fehlgeschlagen`,eventDailyBudgetExceeded:`Tagesbudget überschritten`,statusOn:`an`,statusOff:`aus`,disable:`Deaktivieren`,enable:`Aktivieren`,sendTestPing:`Test-Ping senden`,addHeading:`Webhook hinzufügen`,secretPlaceholder:`Signatur-Secret (optional)`,addButton:`Webhook hinzufügen`,urlRequired:`URL ist erforderlich`,selectEvent:`Mindestens ein Ereignis auswählen`,added:`Webhook hinzugefügt`,addFailed:`Webhook konnte nicht hinzugefügt werden`,updateFailed:`Webhook konnte nicht aktualisiert werden`,removed:`Webhook entfernt`,removeFailed:`Webhook konnte nicht entfernt werden`,testPingSent:`Test-Ping gesendet`,testPingFailed:`Test-Ping konnte nicht gesendet werden`},u={title:`Terminal-Panel`,desktopDescription:`Desktop-weite Standardwerte für alle Projekte, sofern kein projektspezifischer Override gesetzt ist.`,projectDescription:`Projektspezifische Overrides für das Terminal-Panel. Lassen Sie ein Feld unverändert, um den Desktop-Standard zu erben.`,fontFamily:`Schriftfamilie`,fontSize:`Schriftgröße ({{min}}–{{max}})`,renderMode:`Render-Modus`,copyOnSelect:`Beim Auswählen kopieren`,shellIntegration:`Shell-Integration (OSC-133-Marken)`,notifyLongRunning:`Bei lang laufenden Befehlen benachrichtigen`,longCommandThreshold:`Schwellenwert für lange Befehle (ms)`,imageRendering:`Inline-Bilddarstellung (Sixel + iTerm2)`,browserShortcutUrl:`Browser-Shortcut-URL`,quickScript:`Quick-Skript (wird ins aktive Terminal eingefügt – Enter manuell drücken)`,reset:`Zurücksetzen`,unsavedChanges:`Ungespeicherte Änderungen`,clearOverride:`Override entfernen`,clear:`Entfernen`,inheritingDefault:`Erbt Desktop-Standard`,nothingToSave:`Nichts zu speichern`,saved:`Terminal-Einstellungen gespeichert`},d={heading:`Code-Bereich`,summaryLanguage:`Sprache der Zusammenfassungen`,monthlyBudget:`Monatsbudget (USD)`,budgetHelper:"Obergrenze für `surface=file-summary`-Ausgaben pro Kalendermonat. Von Nutzern angestoßene Neugenerierungen können sie überschreiten."},f={taglines:{dracula:`Das Original — dunkel mit Violettstich und lebhaften Neon-Akzenten`,"aurora-light":`Premium hell — Linear-inspiriertes Indigo auf warmem Cremeweiß`,"obsidian-dark":`Premium dunkel — fast schwarz mit Blaustich und elektrischen Akzenten`,specrails:`Marken-Theme — tiefes Marine-Indigo mit satten Cyan-Akzenten`,"code-rain":`Phosphor-Terminal — sanftes Mint auf grünlichem Fast-Schwarz`,galaxy:`Tiefraum-Blau mit einer leuchtenden Klingenspur`},heading:`Erscheinungsbild`,themeGroupLabel:`Theme`,currentlyActive:`Derzeit aktiv`,updateFailed:`Theme konnte nicht aktualisiert werden`},p={heading:`Mobile Companion`,description:`Steuern Sie Specrails über die SpecRails Companion-App auf Ihrem Smartphone – zu 100 % über Ihr lokales Netzwerk. Standardmäßig aus.`,accessOn:`Mobilzugriff an`,accessOff:`Mobilzugriff aus`,listeningOnPort:`Lauscht auf Port {{port}}`,notListening:`Lauscht nicht`,turnOn:`Einschalten`,turnOff:`Ausschalten`,pairWebDevice:`Web-Companion koppeln`,reset:`Zurücksetzen`,resetConfirm:`Mobile Identität zurücksetzen? Alle gekoppelten Geräte werden widerrufen und müssen neu gekoppelt werden.`,identityReset:`Mobile Identität zurückgesetzt`,enableFailed:`Mobilzugriff konnte nicht aktiviert werden: {{message}}`,disableFailed:`Mobilzugriff konnte nicht deaktiviert werden: {{message}}`,windowsFirewall:`Die Windows-Firewall fragt beim ersten Aktivieren, ob der SpecRails-Server zugelassen werden soll – wählen Sie „In privaten Netzwerken zulassen“.`,pairedDevices:`Gekoppelte Geräte`,noDevices:`Noch keine Geräte gekoppelt.`,revokeDevice:`{{name}} widerrufen`},m={title:`Web-Companion koppeln`,description:`Öffnen Sie specrails.dev/companion-app auf Ihrem Smartphone und scannen Sie damit diesen Code.`,startFailed:`Koppeln konnte nicht gestartet werden: {{error}}`,showThenScan:`Nachdem Ihr Smartphone dies gescannt hat, tippen Sie auf „Code des Smartphones scannen“ und richten Sie die Kamera auf Ihr Smartphone.`,scanAnswer:`Code des Smartphones scannen`,scanning:`Richten Sie die Kamera auf den Code auf Ihrem Smartphone…`,cameraFailed:`Kamera nicht verfügbar: {{message}}`,notAnswer:`Dieser QR-Code ist keine Kopplungsantwort.`,connecting:`Verbinden…`,paired:`✓ Gekoppelt`,pairedToast:`Web-Companion gekoppelt`,answerRejected:`Der Desktop hat diesen Code abgelehnt. Erzeugen Sie einen neuen und versuchen Sie es erneut.`,copyCode:`Code kopieren`,codeCopied:`Code kopiert`,cancel:`Abbrechen`},h={heading:`Specrails Core`,installed:`Installiert:`,updateAvailable:`Update verfügbar: {{version}}`,upToDate:`Aktuell`,neverChecked:`Nicht geprüft`,check:`Nach Updates suchen`,checking:`Wird geprüft…`,update:`Auf {{version}} aktualisieren`,downloading:`Wird heruntergeladen…`,materializing:`Wird installiert…`,affectsAll:`Gilt für alle Projekte — kein Neustart nötig.`,unavailable:`Core-Updates sind in diesem Build nicht verfügbar.`,toastDone:`Specrails Core auf {{version}} aktualisiert`,toastError:`Core-Update fehlgeschlagen: {{message}}`,toastUpToDate:`Specrails Core ist aktuell`,toastCheckFailed:`Update-Prüfung fehlgeschlagen: {{message}}`,loadFailed:`Core-Status konnte nicht geladen werden. Erneut versuchen`,runtime:`Laufzeit: {{version}}`,bundled:`In Desktop enthalten: {{version}}`,sources:{override:`Explizite Auswahl`,managed:`Von Desktop verwaltet`,bundled:`In Desktop enthalten`,local:`Lokales Paket`,global:`Externe CLI`},repair:`Update auf {{version}} abschließen`},g={heading:`Specrails Desktop`,installed:`Installiert:`,check:`Nach Updates suchen`,checking:`Wird geprüft…`,upToDate:`Du hast die neueste Version`,updateAvailable:`Update verfügbar: {{version}}`,autoHint:`Wird beim Start und alle 6 Stunden automatisch geprüft.`,unavailable:`App-Updates sind nur in der Desktop-App verfügbar.`,toastUpToDate:`Specrails Desktop ist aktuell`,toastCheckFailed:`Update-Prüfung fehlgeschlagen: {{message}}`},_={title:`{{name}} — Einstellungen`,description:`Projektkonfiguration: Prompts, Branch, Umgebung, Budget, Telemetrie und Terminal.`,nav:{general:`Allgemein`,branch:`Branch`,environment:`Umgebung`,budget:`Budget`,telemetry:`Telemetrie`,terminal:`Terminal`}},v={title:`Integrationszweig`,description:`Der Branch, von dem parallele Rails abzweigen und auf den ihre Entwurfs-PRs zielen. Leer lassen, um automatisch den Standard-Branch des Repositorys zu verwenden.`,placeholder:`automatisch (Standard-Branch)`,resolved:`Rails zweigen von <mono>{{branch}}</mono> ab`,save:`Branch speichern`,saved:`Integrationszweig gespeichert`,saveFailed:`Integrationszweig konnte nicht gespeichert werden`},y={title:`Worktree-Umgebung`,description:`Wählen Sie die Namen der Umgebungsvariablen, die dieses Projekt an Rail-Jobs und isolierte Loop-Worktrees weitergibt. Gespeichert werden nur Namen; Werte werden beim Start gelesen und bei Bedarf aus der Login-Shell nachgeladen.`,label:`Umgebungsvariable`,placeholder:`NODE_AUTH_TOKEN`,helper:`Drücken Sie Enter oder Hinzufügen. Mehrere Namen können durch Kommas oder Leerzeichen getrennt eingefügt werden.`,add:`Hinzufügen`,empty:`Für dieses Projekt sind noch keine eigenen Variablen konfiguriert.`,remove:`{{name}} entfernen`,save:`Umgebung speichern`,saved:`Worktree-Umgebung gespeichert`,saveFailed:`Worktree-Umgebung konnte nicht gespeichert werden`,invalidName:`{{name}} ist kein gültiger Name für eine Umgebungsvariable`,noValues:`Fügen Sie hier nur Variablennamen hinzu, keine KEY=value-Geheimnisse.`},b={heading:`Specrails Agents`,description:`Passe die specrails-core-Pipeline-Agenten pro KI-Anbieter an — Modell und Reasoning-Aufwand. Änderungen gelten ab dem nächsten Lauf, ohne Neustart.`,loadFailed:`Agent-Einstellungen konnten nicht geladen werden.`,modeDefault:`Standard`,modeCustom:`Angepasst`,notDetected:`Nicht erkannt`,notSignedIn:`Nicht angemeldet`,pipeline:`Pipeline`,pipelineHint:`Modell und Aufwand für den gesamten Lauf — Subagenten erben sie, sofern unten nichts anderes gesetzt ist.`,model:`Modell`,effort:`Aufwand`,defaultModel:`Standard ({{model}})`,defaultEffort:`Standard-Aufwand`,agentsTitle:`Pipeline-Agenten`,agentsHint:`Modell-Override pro Agent für diesen Anbieter.`,inheritNote:`Codex-Subagenten erben Modell und Aufwand der Pipeline — by design.`,noPerAgentNote:`Dieser Anbieter unterstützt keine Modelle pro Agent.`,reset:`Standardwerte wiederherstellen`,agentNames:{"sr-architect":`Architekt`,"sr-developer":`Entwickler`,"sr-reviewer":`Reviewer`}},x={heading:`Effekte`,description:`Visuelle Akzente in der App. Jeder lässt sich hier abschalten.`,thinkingHalo:{label:`Denk-Halo am Agent-Composer`,description:`Während der Agent nachdenkt oder schreibt, leuchtet der kreisende Ring des Builders um den Composer: er blendet beim Start eines Turns ein und beim Abschluss der Antwort aus.`},reducedMotion:`Folgt der Systemeinstellung für reduzierte Bewegung: der Ring bleibt ein statisches Leuchten.`,preview:`Vorschau`,previewThinking:`Denkt nach…`},S={language:e,page:t,errors:n,telemetry:r,prePrompt:i,freestylePrePrompt:a,budget:o,desktop:s,notifications:c,webhooks:l,terminal:u,codeSection:d,appearance:f,mobile:p,pairWeb:m,coreUpdate:h,appUpdate:g,projectDialog:_,integrationBranch:v,worktreeEnv:y,specrailsAgents:b,effects:x};export{g as appUpdate,f as appearance,o as budget,d as codeSection,h as coreUpdate,S as default,s as desktop,x as effects,n as errors,a as freestylePrePrompt,v as integrationBranch,e as language,p as mobile,c as notifications,t as page,m as pairWeb,i as prePrompt,_ as projectDialog,b as specrailsAgents,r as telemetry,u as terminal,l as webhooks,y as worktreeEnv};
1
+ var e={title:`Sprache`,description:`Desktop-weite UI-Sprache. Wird sofort angewendet – kein Neustart nötig.`,selectLabel:`Oberflächensprache`,updateFailed:`Spracheinstellung konnte nicht gespeichert werden`},t={title:`Projekteinstellungen`},n={saveFailed:`Speichern fehlgeschlagen: {{message}}`},r={title:`Pipeline-Telemetrie`,description:`Erfasst Token-Verbrauch, Phasendauern und Subagent-Aktivität für den Diagnose-Export. Standardmäßig an.`,toggleLabel:`Pipeline-Telemetrie aktivieren`,toggleDescription:`Wenn aktiviert, werden OTEL-Daten aus Pipeline-Jobs lokal erfasst. Verwenden Sie zum Herunterladen die Schaltfläche <mono>Diagnose exportieren</mono> auf einer beliebigen Job-Karte.`,enabled:`Pipeline-Telemetrie aktiviert`,disabled:`Pipeline-Telemetrie deaktiviert`,saveFailed:`Telemetrie-Einstellung konnte nicht gespeichert werden`},i={title:`Rail-Pre-Prompt`,description:`Zusätzliche projektspezifische Anweisungen, die an implement- und batch-implement-Rail-Jobs angehängt werden – nach dem Ticket-Kontext und vor der Ausführung.`,label:`Pre-Prompt`,placeholder:`Beispiel: Bevorzuge inkrementelle Änderungen, halte Migrationen abwärtskompatibel und füge Tests für jede Rail-Änderung hinzu.`,helper:`Für stabile Projektleitlinien, die jeden Rail-Implementierungslauf begleiten sollen.`,saveButton:`Pre-Prompt speichern`,cleared:`Pre-Prompt gelöscht`,saved:`Pre-Prompt gespeichert`,saveFailed:`Pre-Prompt konnte nicht gespeichert werden`},a={title:`Freestyle-Pre-Prompt`,description:`Anweisung, die in Freestyle an den ausgewählten Anbieter gesendet wird. Freestyle überspringt die OpenSpec-Pipeline – der Anbieter erhält diesen Pre-Prompt plus den Spec-Text und implementiert autonom. Leer lassen, um den eingebauten Standard zu verwenden.`,label:`Freestyle-Pre-Prompt`,placeholder:`Leer lassen, um die Standard-Freestyle-Anweisung zu verwenden.`,helper:`Der Spec-Text wird automatisch nach diesem Pre-Prompt angehängt. Leer = Standard.`,saveButton:`Freestyle-Pre-Prompt speichern`,resetToDefault:`Freestyle-Pre-Prompt auf Standard zurückgesetzt`,saved:`Freestyle-Pre-Prompt gespeichert`,saveFailed:`Freestyle-Pre-Prompt konnte nicht gespeichert werden`},o={title:`Budget`,description:`Tagesausgabenlimit für dieses Projekt festlegen. Die Queue pausiert automatisch, wenn das Limit erreicht ist.`,dailyLabel:`Tagesbudget (USD)`,dailyHelper:`Leer lassen zum Deaktivieren. Ausgaben werden über die letzten 24 Stunden berechnet.`,dailyPlaceholder:`z. B. 5.00`,perJobLabel:`Kostenalarm pro Job (USD)`,perJobHelper:`Alarm, wenn ein einzelner Job in diesem Projekt diesen Betrag überschreitet.`,perJobPlaceholder:`z. B. 0.50`,invalidNumber:`Positive Zahl eingeben oder leer lassen zum Deaktivieren`,dailyRemoved:`Tagesbudget entfernt`,dailySet:"Tagesbudget auf ${{amount}} gesetzt",perJobAlertDisabled:`Kostenalarm pro Job deaktiviert`,alertSet:"Alarm für Jobs über ${{amount}} gesetzt",saveBudgetFailed:`Budget konnte nicht gespeichert werden`,saveThresholdFailed:`Schwellenwert konnte nicht gespeichert werden`},s={nav:{appearance:`Darstellung`,specrailsAgents:`Specrails Agents`,code:`Code`,terminal:`Terminal`,updates:`Updates`,mobile:`Mobil`,mcp:`MCP`,projects:`Projekte`,advanced:`Erweitert`,webhooks:`Webhooks`,about:`Info`,effects:`Effekte`},title:`Desktop-Einstellungen`,description:`Registrierte Projekte verwalten und Desktop-Informationen einsehen.`,registeredProjects:`Registrierte Projekte`,noProjects:`Noch keine Projekte registriert`,techUrlDescription:`Basis-URL für die specrails-tech-API (Standard: http://localhost:3000)`,techUrlSaved:`specrails-tech-URL gespeichert`,techUrlSaveFailed:`URL konnte nicht gespeichert werden`,budgetAlertsHeading:`Budget & Alarme`,dailyBudgetLabel:`Desktop-Tagesbudget (USD)`,dailyBudgetHelper:`Globales Tagesausgabenlimit über alle Projekte. Queues pausieren automatisch bei Überschreitung.`,dailyBudgetPlaceholder:`z. B. 10.00`,perJobHelper:`Alarm, wenn ein einzelner Job diesen Betrag überschreitet. Leer lassen zum Deaktivieren.`,costAlertsDisabled:`Kostenalarme deaktiviert`,dailyBudgetRemoved:`Desktop-Tagesbudget entfernt`,dailyBudgetSet:"Desktop-Tagesbudget auf ${{amount}} gesetzt",dailyBudgetSaveFailed:`Desktop-Tagesbudget konnte nicht gespeichert werden`,projectRemoved:`Projekt entfernt`,projectRemoveFailed:`Projekt konnte nicht entfernt werden`,onboardingHeading:`Onboarding`,platformTour:`Plattform-Tour`,platformTourDescription:`Den Willkommensassistenten erneut abspielen, um die wichtigsten Funktionen zu sehen.`,replayTour:`Tour erneut abspielen`,terminalPanelHeading:`Terminal-Panel`,infoHeading:`Desktop-Informationen`,infoPort:`Port`,infoProjects:`Projekte`,infoDb:`Desktop-DB`},c={heading:`OS-Benachrichtigungen`,description:`Native Desktop-Benachrichtigungen anzeigen, wenn Jobs abgeschlossen werden oder fehlschlagen. Benachrichtigungen erscheinen nur, wenn der Tab nicht fokussiert ist.`,enableLabel:`OS-Benachrichtigungen aktivieren`,notifyOn:`Benachrichtigen bei:`,filterAll:`Alle (abgeschlossen & fehlgeschlagen)`,filterCompleted:`Nur abgeschlossen`,filterFailed:`Nur fehlgeschlagen`,enabledToast:`OS-Benachrichtigungen aktiviert`,disabledToast:`OS-Benachrichtigungen deaktiviert`},l={heading:`Ausgehende Webhooks`,description:`Externe Tools (Slack, Zapier, CI/CD) bei Desktop-Ereignissen benachrichtigen. Anfragen werden über <code>X-Specrails-Signature</code> signiert, wenn ein Secret gesetzt ist.`,eventJobCompleted:`Job abgeschlossen`,eventJobFailed:`Job fehlgeschlagen`,eventDailyBudgetExceeded:`Tagesbudget überschritten`,statusOn:`an`,statusOff:`aus`,disable:`Deaktivieren`,enable:`Aktivieren`,sendTestPing:`Test-Ping senden`,addHeading:`Webhook hinzufügen`,secretPlaceholder:`Signatur-Secret (optional)`,addButton:`Webhook hinzufügen`,urlRequired:`URL ist erforderlich`,selectEvent:`Mindestens ein Ereignis auswählen`,added:`Webhook hinzugefügt`,addFailed:`Webhook konnte nicht hinzugefügt werden`,updateFailed:`Webhook konnte nicht aktualisiert werden`,removed:`Webhook entfernt`,removeFailed:`Webhook konnte nicht entfernt werden`,testPingSent:`Test-Ping gesendet`,testPingFailed:`Test-Ping konnte nicht gesendet werden`},u={title:`Terminal-Panel`,desktopDescription:`Desktop-weite Standardwerte für alle Projekte, sofern kein projektspezifischer Override gesetzt ist.`,projectDescription:`Projektspezifische Overrides für das Terminal-Panel. Lassen Sie ein Feld unverändert, um den Desktop-Standard zu erben.`,fontFamily:`Schriftfamilie`,fontSize:`Schriftgröße ({{min}}–{{max}})`,renderMode:`Render-Modus`,copyOnSelect:`Beim Auswählen kopieren`,shellIntegration:`Shell-Integration (OSC-133-Marken)`,notifyLongRunning:`Bei lang laufenden Befehlen benachrichtigen`,longCommandThreshold:`Schwellenwert für lange Befehle (ms)`,imageRendering:`Inline-Bilddarstellung (Sixel + iTerm2)`,browserShortcutUrl:`Browser-Shortcut-URL`,quickScript:`Quick-Skript (wird ins aktive Terminal eingefügt – Enter manuell drücken)`,reset:`Zurücksetzen`,unsavedChanges:`Ungespeicherte Änderungen`,clearOverride:`Override entfernen`,clear:`Entfernen`,inheritingDefault:`Erbt Desktop-Standard`,nothingToSave:`Nichts zu speichern`,saved:`Terminal-Einstellungen gespeichert`},d={heading:`Code-Bereich`,summaryLanguage:`Sprache der Zusammenfassungen`,monthlyBudget:`Monatsbudget (USD)`,budgetHelper:"Obergrenze für `surface=file-summary`-Ausgaben pro Kalendermonat. Von Nutzern angestoßene Neugenerierungen können sie überschreiten."},f={taglines:{dracula:`Das Original — dunkel mit Violettstich und lebhaften Neon-Akzenten`,"aurora-light":`Premium hell — Linear-inspiriertes Indigo auf warmem Cremeweiß`,"obsidian-dark":`Premium dunkel — fast schwarz mit Blaustich und elektrischen Akzenten`,specrails:`Marken-Theme — tiefes Marine-Indigo mit satten Cyan-Akzenten`,"code-rain":`Phosphor-Terminal — sanftes Mint auf grünlichem Fast-Schwarz`,galaxy:`Tiefraum-Blau mit einer leuchtenden Klingenspur`},heading:`Erscheinungsbild`,themeGroupLabel:`Theme`,currentlyActive:`Derzeit aktiv`,updateFailed:`Theme konnte nicht aktualisiert werden`},p={heading:`Mobile Companion`,description:`Steuern Sie Specrails über die SpecRails Companion-App auf Ihrem Smartphone – zu 100 % über Ihr lokales Netzwerk. Standardmäßig aus.`,accessOn:`Mobilzugriff an`,accessOff:`Mobilzugriff aus`,listeningOnPort:`Lauscht auf Port {{port}}`,notListening:`Lauscht nicht`,turnOn:`Einschalten`,turnOff:`Ausschalten`,pairWebDevice:`Web-Companion koppeln`,reset:`Zurücksetzen`,resetConfirm:`Mobile Identität zurücksetzen? Alle gekoppelten Geräte werden widerrufen und müssen neu gekoppelt werden.`,identityReset:`Mobile Identität zurückgesetzt`,enableFailed:`Mobilzugriff konnte nicht aktiviert werden: {{message}}`,disableFailed:`Mobilzugriff konnte nicht deaktiviert werden: {{message}}`,windowsFirewall:`Die Windows-Firewall fragt beim ersten Aktivieren, ob der SpecRails-Server zugelassen werden soll – wählen Sie „In privaten Netzwerken zulassen“.`,pairedDevices:`Gekoppelte Geräte`,noDevices:`Noch keine Geräte gekoppelt.`,revokeDevice:`{{name}} widerrufen`},m={title:`Web-Companion koppeln`,description:`Öffnen Sie specrails.dev/companion-app auf Ihrem Smartphone und scannen Sie damit diesen Code.`,startFailed:`Koppeln konnte nicht gestartet werden: {{error}}`,showThenScan:`Nachdem Ihr Smartphone dies gescannt hat, tippen Sie auf „Code des Smartphones scannen“ und richten Sie die Kamera auf Ihr Smartphone.`,scanAnswer:`Code des Smartphones scannen`,scanning:`Richten Sie die Kamera auf den Code auf Ihrem Smartphone…`,cameraFailed:`Kamera nicht verfügbar: {{message}}`,notAnswer:`Dieser QR-Code ist keine Kopplungsantwort.`,connecting:`Verbinden…`,paired:`✓ Gekoppelt`,pairedToast:`Web-Companion gekoppelt`,answerRejected:`Der Desktop hat diesen Code abgelehnt. Erzeugen Sie einen neuen und versuchen Sie es erneut.`,copyCode:`Code kopieren`,codeCopied:`Code kopiert`,cancel:`Abbrechen`},h={heading:`Specrails Core`,installed:`Installiert:`,updateAvailable:`Update verfügbar: {{version}}`,upToDate:`Aktuell`,neverChecked:`Nicht geprüft`,check:`Nach Updates suchen`,checking:`Wird geprüft…`,update:`Auf {{version}} aktualisieren`,downloading:`Wird heruntergeladen…`,materializing:`Wird installiert…`,affectsAll:`Gilt für alle Projekte — kein Neustart nötig.`,unavailable:`Core-Updates sind in diesem Build nicht verfügbar.`,toastDone:`Specrails Core auf {{version}} aktualisiert`,toastError:`Core-Update fehlgeschlagen: {{message}}`,toastUpToDate:`Specrails Core ist aktuell`,toastCheckFailed:`Update-Prüfung fehlgeschlagen: {{message}}`,loadFailed:`Core-Status konnte nicht geladen werden. Erneut versuchen`,runtime:`Laufzeit: {{version}}`,bundled:`In Desktop enthalten: {{version}}`,sources:{override:`Explizite Auswahl`,managed:`Von Desktop verwaltet`,bundled:`In Desktop enthalten`,local:`Lokales Paket`,global:`Externe CLI`},repair:`Update auf {{version}} abschließen`},g={heading:`Specrails Desktop`,installed:`Installiert:`,check:`Nach Updates suchen`,checking:`Wird geprüft…`,upToDate:`Du hast die neueste Version`,updateAvailable:`Update verfügbar: {{version}}`,autoHint:`Wird beim Start und alle 6 Stunden automatisch geprüft.`,unavailable:`App-Updates sind nur in der Desktop-App verfügbar.`,toastUpToDate:`Specrails Desktop ist aktuell`,toastCheckFailed:`Update-Prüfung fehlgeschlagen: {{message}}`},_={title:`{{name}} — Einstellungen`,description:`Projektkonfiguration: Prompts, Branch, Umgebung, Budget, Telemetrie und Terminal.`,nav:{general:`Allgemein`,branch:`Branch`,environment:`Umgebung`,budget:`Budget`,telemetry:`Telemetrie`,terminal:`Terminal`,agentRuntime:`Agenten-Laufzeit`}},v={title:`Integrationszweig`,description:`Der Branch, von dem parallele Rails abzweigen und auf den ihre Entwurfs-PRs zielen. Leer lassen, um automatisch den Standard-Branch des Repositorys zu verwenden.`,placeholder:`automatisch (Standard-Branch)`,resolved:`Rails zweigen von <mono>{{branch}}</mono> ab`,save:`Branch speichern`,saved:`Integrationszweig gespeichert`,saveFailed:`Integrationszweig konnte nicht gespeichert werden`},y={title:`Worktree-Umgebung`,description:`Wählen Sie die Namen der Umgebungsvariablen, die dieses Projekt an Rail-Jobs und isolierte Loop-Worktrees weitergibt. Gespeichert werden nur Namen; Werte werden beim Start gelesen und bei Bedarf aus der Login-Shell nachgeladen.`,label:`Umgebungsvariable`,placeholder:`NODE_AUTH_TOKEN`,helper:`Drücken Sie Enter oder Hinzufügen. Mehrere Namen können durch Kommas oder Leerzeichen getrennt eingefügt werden.`,add:`Hinzufügen`,empty:`Für dieses Projekt sind noch keine eigenen Variablen konfiguriert.`,remove:`{{name}} entfernen`,save:`Umgebung speichern`,saved:`Worktree-Umgebung gespeichert`,saveFailed:`Worktree-Umgebung konnte nicht gespeichert werden`,invalidName:`{{name}} ist kein gültiger Name für eine Umgebungsvariable`,noValues:`Fügen Sie hier nur Variablennamen hinzu, keine KEY=value-Geheimnisse.`},b={heading:`Specrails Agents`,description:`Passe die specrails-core-Pipeline-Agenten pro KI-Anbieter an — Modell und Reasoning-Aufwand. Änderungen gelten ab dem nächsten Lauf, ohne Neustart.`,loadFailed:`Agent-Einstellungen konnten nicht geladen werden.`,modeDefault:`Standard`,modeCustom:`Angepasst`,notDetected:`Nicht erkannt`,notSignedIn:`Nicht angemeldet`,pipeline:`Pipeline`,pipelineHint:`Modell und Aufwand für den gesamten Lauf — Subagenten erben sie, sofern unten nichts anderes gesetzt ist.`,model:`Modell`,effort:`Aufwand`,defaultModel:`Standard ({{model}})`,defaultEffort:`Standard-Aufwand`,agentsTitle:`Pipeline-Agenten`,agentsHint:`Modell-Override pro Agent für diesen Anbieter.`,inheritNote:`Codex-Subagenten erben Modell und Aufwand der Pipeline — by design.`,noPerAgentNote:`Dieser Anbieter unterstützt keine Modelle pro Agent.`,reset:`Standardwerte wiederherstellen`,agentNames:{"sr-architect":`Architekt`,"sr-developer":`Entwickler`,"sr-reviewer":`Reviewer`}},x={heading:`Effekte`,description:`Visuelle Akzente in der App. Jeder lässt sich hier abschalten.`,thinkingHalo:{label:`Denk-Halo am Agent-Composer`,description:`Während der Agent nachdenkt oder schreibt, leuchtet der kreisende Ring des Builders um den Composer: er blendet beim Start eines Turns ein und beim Abschluss der Antwort aus.`},reducedMotion:`Folgt der Systemeinstellung für reduzierte Bewegung: der Ring bleibt ein statisches Leuchten.`,preview:`Vorschau`,previewThinking:`Denkt nach…`},S={language:e,page:t,errors:n,telemetry:r,prePrompt:i,freestylePrePrompt:a,budget:o,desktop:s,notifications:c,webhooks:l,terminal:u,codeSection:d,appearance:f,mobile:p,pairWeb:m,coreUpdate:h,appUpdate:g,projectDialog:_,integrationBranch:v,worktreeEnv:y,specrailsAgents:b,effects:x};export{g as appUpdate,f as appearance,o as budget,d as codeSection,h as coreUpdate,S as default,s as desktop,x as effects,n as errors,a as freestylePrePrompt,v as integrationBranch,e as language,p as mobile,c as notifications,t as page,m as pairWeb,i as prePrompt,_ as projectDialog,b as specrailsAgents,r as telemetry,u as terminal,l as webhooks,y as worktreeEnv};
@@ -1 +1 @@
1
- var e={title:`Langue`,description:`Langue de l'interface pour tout Desktop. S'applique instantanément — aucun redémarrage requis.`,selectLabel:`Langue de l'interface`,updateFailed:`Impossible d'enregistrer la préférence de langue`},t={title:`Paramètres du projet`},n={saveFailed:`Échec de l'enregistrement : {{message}}`},r={title:`Télémétrie du pipeline`,description:`Capture l'usage des tokens, la durée des phases et l'activité des sous-agents pour l'export de diagnostic. Activé par défaut.`,toggleLabel:`Activer la télémétrie du pipeline`,toggleDescription:`Quand elle est activée, les données OTEL des jobs du pipeline sont capturées localement. Utilisez le bouton <mono>Exporter le diagnostic</mono> sur n'importe quelle carte de job pour les télécharger.`,enabled:`Télémétrie du pipeline activée`,disabled:`Télémétrie du pipeline désactivée`,saveFailed:`Échec de l'enregistrement du réglage de télémétrie`},i={title:`Pré-prompt de rail`,description:`Instructions supplémentaires propres au projet, ajoutées aux jobs de rail implement et batch-implement après le contexte du ticket et avant l'exécution.`,label:`Pré-prompt`,placeholder:`Exemple : privilégier les changements incrémentaux, garder les migrations rétrocompatibles et ajouter des tests pour chaque changement de rail.`,helper:`À utiliser pour des consignes projet stables qui doivent accompagner chaque exécution d'implémentation sur rail.`,saveButton:`Enregistrer le pré-prompt`,cleared:`Pré-prompt effacé`,saved:`Pré-prompt enregistré`,saveFailed:`Échec de l'enregistrement du pré-prompt`},a={title:`Pré-prompt Freestyle`,description:`Instruction envoyée au fournisseur sélectionné en mode Freestyle. Freestyle saute le pipeline OpenSpec — il transmet au fournisseur ce pré-prompt plus le texte de la spec et le laisse implémenter en autonomie. Laissez vide pour utiliser la valeur par défaut intégrée.`,label:`Pré-prompt Freestyle`,placeholder:`Laissez vide pour utiliser l'instruction Freestyle par défaut.`,helper:`Le texte de la spec est ajouté automatiquement après ce pré-prompt. Vide = défaut.`,saveButton:`Enregistrer le pré-prompt Freestyle`,resetToDefault:`Pré-prompt Freestyle réinitialisé à la valeur par défaut`,saved:`Pré-prompt Freestyle enregistré`,saveFailed:`Échec de l'enregistrement du pré-prompt Freestyle`},o={title:`Budget`,description:`Définissez un plafond de dépense quotidien pour ce projet. La file se met automatiquement en pause quand la limite est atteinte.`,dailyLabel:`Budget quotidien (USD)`,dailyHelper:`Laissez vide pour désactiver. La dépense est calculée sur les dernières 24 heures.`,dailyPlaceholder:`ex. 5.00`,perJobLabel:`Alerte de coût par job (USD)`,perJobHelper:`Alerte quand un seul job de ce projet dépasse ce montant.`,perJobPlaceholder:`ex. 0.50`,invalidNumber:`Saisissez un nombre positif ou laissez vide pour désactiver`,dailyRemoved:`Budget quotidien supprimé`,dailySet:`Budget quotidien défini à {{amount}} $`,perJobAlertDisabled:`Alerte de coût par job désactivée`,alertSet:`Alerte définie pour les jobs dépassant {{amount}} $`,saveBudgetFailed:`Échec de l'enregistrement du budget`,saveThresholdFailed:`Échec de l'enregistrement du seuil`},s={nav:{appearance:`Apparence`,specrailsAgents:`Specrails Agents`,code:`Code`,terminal:`Terminal`,updates:`Mises à jour`,mobile:`Mobile`,mcp:`MCP`,projects:`Projets`,advanced:`Avancé`,webhooks:`Webhooks`,about:`À propos`,effects:`Effets`},title:`Paramètres de Desktop`,description:`Gérez les projets enregistrés et consultez les informations de Desktop.`,registeredProjects:`Projets enregistrés`,noProjects:`Aucun projet enregistré pour l'instant`,techUrlDescription:`URL de base de l'API specrails-tech (par défaut : http://localhost:3000)`,techUrlSaved:`URL specrails-tech enregistrée`,techUrlSaveFailed:`Échec de l'enregistrement de l'URL`,budgetAlertsHeading:`Budget & alertes`,dailyBudgetLabel:`Budget quotidien de Desktop (USD)`,dailyBudgetHelper:`Limite de dépense quotidienne globale pour tous les projets. Les files se mettent automatiquement en pause en cas de dépassement.`,dailyBudgetPlaceholder:`ex. 10.00`,perJobHelper:`Alerte quand un seul job dépasse ce montant. Laissez vide pour désactiver.`,costAlertsDisabled:`Alertes de coût désactivées`,dailyBudgetRemoved:`Budget quotidien de Desktop supprimé`,dailyBudgetSet:`Budget quotidien de Desktop défini à {{amount}} $`,dailyBudgetSaveFailed:`Échec de l'enregistrement du budget quotidien de Desktop`,projectRemoved:`Projet supprimé`,projectRemoveFailed:`Échec de la suppression du projet`,onboardingHeading:`Onboarding`,platformTour:`Visite de la plateforme`,platformTourDescription:`Rejouez l'assistant de bienvenue pour revoir les fonctionnalités clés.`,replayTour:`Rejouer la visite`,terminalPanelHeading:`Panneau de terminal`,infoHeading:`Informations de Desktop`,infoPort:`Port`,infoProjects:`Projets`,infoDb:`BD de Desktop`},c={heading:`Notifications système`,description:`Affiche des notifications de bureau natives quand des jobs se terminent ou échouent. Les notifications n'apparaissent que lorsque l'onglet n'a pas le focus.`,enableLabel:`Activer les notifications système`,notifyOn:`Notifier pour :`,filterAll:`Tout (terminés & échoués)`,filterCompleted:`Terminés uniquement`,filterFailed:`Échoués uniquement`,enabledToast:`Notifications système activées`,disabledToast:`Notifications système désactivées`},l={heading:`Webhooks sortants`,description:`Notifiez des outils externes (Slack, Zapier, CI/CD) lors des événements de Desktop. Les requêtes sont signées via <code>X-Specrails-Signature</code> quand un secret est défini.`,eventJobCompleted:`Job terminé`,eventJobFailed:`Job en échec`,eventDailyBudgetExceeded:`Budget quotidien dépassé`,statusOn:`actif`,statusOff:`inactif`,disable:`Désactiver`,enable:`Activer`,sendTestPing:`Envoyer un ping de test`,addHeading:`Ajouter un webhook`,secretPlaceholder:`Secret de signature (facultatif)`,addButton:`Ajouter le webhook`,urlRequired:`L'URL est requise`,selectEvent:`Sélectionnez au moins un événement`,added:`Webhook ajouté`,addFailed:`Échec de l'ajout du webhook`,updateFailed:`Échec de la mise à jour du webhook`,removed:`Webhook supprimé`,removeFailed:`Échec de la suppression du webhook`,testPingSent:`Ping de test envoyé`,testPingFailed:`Échec de l'envoi du ping de test`},u={title:`Panneau de terminal`,desktopDescription:`Valeurs par défaut de Desktop, appliquées à chaque projet sauf surcharge par projet.`,projectDescription:`Surcharges par projet pour le panneau de terminal. Laissez un champ inchangé pour hériter de la valeur par défaut de Desktop.`,fontFamily:`Police`,fontSize:`Taille de police ({{min}}–{{max}})`,renderMode:`Mode de rendu`,copyOnSelect:`Copier à la sélection`,shellIntegration:`Intégration shell (marques OSC 133)`,notifyLongRunning:`Notifier les commandes de longue durée`,longCommandThreshold:`Seuil de commande longue (ms)`,imageRendering:`Rendu d'images inline (Sixel + iTerm2)`,browserShortcutUrl:`URL du raccourci navigateur`,quickScript:`Script rapide (collé dans le terminal actif — Entrée manuelle)`,reset:`Réinitialiser`,unsavedChanges:`Modifications non enregistrées`,clearOverride:`Effacer la surcharge`,clear:`Effacer`,inheritingDefault:`Hérite de la valeur par défaut de Desktop`,nothingToSave:`Rien à enregistrer`,saved:`Paramètres du terminal enregistrés`},d={heading:`Section Code`,summaryLanguage:`Langue des résumés`,monthlyBudget:`Budget mensuel (USD)`,budgetHelper:"Plafond de dépense `surface=file-summary` par mois calendaire. Les régénérations lancées par l'utilisateur peuvent le dépasser."},f={taglines:{dracula:`L'original — sombre teinté de violet aux accents néon éclatants`,"aurora-light":`Clair premium — indigo inspiré de Linear sur blanc cassé chaleureux`,"obsidian-dark":`Sombre premium — presque noir teinté de bleu aux accents électriques`,specrails:`Thème de la marque — bleu marine-indigo profond aux accents cyan saturés`,"code-rain":`Terminal phosphore — menthe douce sur fond presque noir verdâtre`,galaxy:`Bleu spatial profond avec une traînée de lame lumineuse`},heading:`Apparence`,themeGroupLabel:`Thème`,currentlyActive:`Actuellement actif`,updateFailed:`Échec de la mise à jour du thème`},p={heading:`Compagnon mobile`,description:`Contrôlez Specrails depuis l'application SpecRails Companion sur votre téléphone, 100 % via votre réseau local. Désactivé par défaut.`,accessOn:`Accès mobile activé`,accessOff:`Accès mobile désactivé`,listeningOnPort:`À l'écoute sur le port {{port}}`,notListening:`Pas à l'écoute`,turnOn:`Activer`,turnOff:`Désactiver`,pairWebDevice:`Appairer le compagnon web`,reset:`Réinitialiser`,resetConfirm:`Réinitialiser l'identité mobile ? Tous les appareils appairés seront révoqués et devront s'appairer à nouveau.`,identityReset:`Identité mobile réinitialisée`,enableFailed:`Impossible d'activer l'accès mobile : {{message}}`,disableFailed:`Impossible de désactiver l'accès mobile : {{message}}`,windowsFirewall:`Le Pare-feu Windows demandera d'autoriser le serveur SpecRails à la première activation — choisissez « Autoriser sur les réseaux privés ».`,pairedDevices:`Appareils appairés`,noDevices:`Aucun appareil appairé pour l'instant.`,revokeDevice:`Révoquer {{name}}`},m={title:`Appairer le compagnon web`,description:`Ouvrez specrails.dev/companion-app sur votre téléphone, puis scannez ce code avec.`,startFailed:`Impossible de démarrer l'appairage : {{error}}`,showThenScan:`Une fois que votre téléphone l'a scanné, appuyez sur « Scanner le code du téléphone » et pointez la caméra vers votre téléphone.`,scanAnswer:`Scanner le code du téléphone`,scanning:`Pointez la caméra vers le code sur votre téléphone…`,cameraFailed:`Caméra indisponible : {{message}}`,notAnswer:`Ce QR code n'est pas une réponse d'appairage.`,connecting:`Connexion…`,paired:`✓ Appairé`,pairedToast:`Compagnon web appairé`,answerRejected:`Le bureau a rejeté ce code. Générez-en un nouveau et réessayez.`,copyCode:`Copier le code`,codeCopied:`Code copié`,cancel:`Annuler`},h={heading:`Specrails Core`,installed:`Installé :`,updateAvailable:`Mise à jour disponible : {{version}}`,upToDate:`À jour`,neverChecked:`Non vérifié`,check:`Rechercher des mises à jour`,checking:`Vérification…`,update:`Mettre à jour vers {{version}}`,downloading:`Téléchargement…`,materializing:`Installation…`,affectsAll:`S'applique à tous les projets — aucun redémarrage requis.`,unavailable:`Les mises à jour du core ne sont pas disponibles dans cette version.`,toastDone:`Specrails Core mis à jour vers {{version}}`,toastError:`Échec de la mise à jour du core : {{message}}`,toastUpToDate:`Specrails Core est à jour`,toastCheckFailed:`Échec de la vérification : {{message}}`,loadFailed:`Impossible de charger l’état de Core. Réessayer`,runtime:`Moteur : {{version}}`,bundled:`Inclus dans Desktop : {{version}}`,sources:{override:`Sélection explicite`,managed:`Géré par Desktop`,bundled:`Inclus dans Desktop`,local:`Paquet local`,global:`CLI externe`},repair:`Terminer la mise à jour {{version}}`},g={heading:`Specrails Desktop`,installed:`Installée :`,check:`Rechercher des mises à jour`,checking:`Vérification…`,upToDate:`Vous avez la dernière version`,updateAvailable:`Mise à jour disponible : {{version}}`,autoHint:`Vérification automatique au lancement et toutes les 6 heures.`,unavailable:`Les mises à jour ne sont disponibles que dans l'app de bureau.`,toastUpToDate:`Specrails Desktop est à jour`,toastCheckFailed:`Échec de la recherche de mises à jour : {{message}}`},_={title:`{{name}} — Paramètres`,description:`Configuration du projet : prompts, branche, environnement, budget, télémétrie et terminal.`,nav:{general:`Général`,branch:`Branche`,environment:`Environnement`,budget:`Budget`,telemetry:`Télémétrie`,terminal:`Terminal`}},v={title:`Branche d'intégration`,description:`La branche depuis laquelle les rails parallèles se ramifient et que ciblent leurs PR en brouillon. Laissez vide pour résoudre automatiquement vers la branche par défaut du dépôt.`,placeholder:`automatique (branche par défaut)`,resolved:`Les rails partent de <mono>{{branch}}</mono>`,save:`Enregistrer la branche`,saved:`Branche d'intégration enregistrée`,saveFailed:`Impossible d'enregistrer la branche d'intégration`},y={title:`Environnement des worktrees`,description:`Choisissez les noms de variables d'environnement que ce projet transmet aux jobs de rail et aux worktrees isolés des loops. Seuls les noms sont enregistrés ; les valeurs sont lues au démarrage, avec récupération depuis le login shell si le processus Desktop ne les a pas.`,label:`Variable d'environnement`,placeholder:`NODE_AUTH_TOKEN`,helper:`Appuyez sur Entrée ou Ajouter. Vous pouvez coller plusieurs noms séparés par des virgules ou des espaces.`,add:`Ajouter`,empty:`Aucune variable propre à ce projet n'est encore configurée.`,remove:`Supprimer {{name}}`,save:`Enregistrer l'environnement`,saved:`Environnement des worktrees enregistré`,saveFailed:`Impossible d'enregistrer l'environnement des worktrees`,invalidName:`{{name}} n'est pas un nom de variable d'environnement valide`,noValues:`Ajoutez uniquement des noms de variables, pas de secrets KEY=value.`},b={heading:`Specrails Agents`,description:`Personnalisez les agents du pipeline specrails-core par fournisseur d'IA — modèle et effort de raisonnement. Les changements s'appliquent à la prochaine exécution, sans redémarrage.`,loadFailed:`Impossible de charger les réglages des agents.`,modeDefault:`Par défaut`,modeCustom:`Personnalisé`,notDetected:`Non détecté`,notSignedIn:`Non connecté`,pipeline:`Pipeline`,pipelineHint:`Modèle et effort pour toute l'exécution — les sous-agents en héritent sauf réglage ci-dessous.`,model:`Modèle`,effort:`Effort`,defaultModel:`Par défaut ({{model}})`,defaultEffort:`Effort par défaut`,agentsTitle:`Agents du pipeline`,agentsHint:`Modèle par agent pour ce fournisseur.`,inheritNote:`Les sous-agents Codex héritent du modèle et de l'effort du pipeline, par conception.`,noPerAgentNote:`Ce fournisseur ne prend pas en charge les modèles par agent.`,reset:`Restaurer les valeurs par défaut`,agentNames:{"sr-architect":`Architecte`,"sr-developer":`Développeur`,"sr-reviewer":`Réviseur`}},x={heading:`Effets`,description:`Touches visuelles de l'app. Chacune peut être désactivée ici.`,thinkingHalo:{label:`Halo de réflexion sur le composeur de l'agent`,description:`Pendant que l'agent réfléchit ou écrit, l'anneau orbital du Constructeur brille autour du composeur : il apparaît en fondu au début du tour et s'estompe quand la réponse se termine.`},reducedMotion:`Respecte le réglage système de réduction des animations : l'anneau reste une lueur statique.`,preview:`Aperçu`,previewThinking:`Réflexion…`},S={language:e,page:t,errors:n,telemetry:r,prePrompt:i,freestylePrePrompt:a,budget:o,desktop:s,notifications:c,webhooks:l,terminal:u,codeSection:d,appearance:f,mobile:p,pairWeb:m,coreUpdate:h,appUpdate:g,projectDialog:_,integrationBranch:v,worktreeEnv:y,specrailsAgents:b,effects:x};export{g as appUpdate,f as appearance,o as budget,d as codeSection,h as coreUpdate,S as default,s as desktop,x as effects,n as errors,a as freestylePrePrompt,v as integrationBranch,e as language,p as mobile,c as notifications,t as page,m as pairWeb,i as prePrompt,_ as projectDialog,b as specrailsAgents,r as telemetry,u as terminal,l as webhooks,y as worktreeEnv};
1
+ var e={title:`Langue`,description:`Langue de l'interface pour tout Desktop. S'applique instantanément — aucun redémarrage requis.`,selectLabel:`Langue de l'interface`,updateFailed:`Impossible d'enregistrer la préférence de langue`},t={title:`Paramètres du projet`},n={saveFailed:`Échec de l'enregistrement : {{message}}`},r={title:`Télémétrie du pipeline`,description:`Capture l'usage des tokens, la durée des phases et l'activité des sous-agents pour l'export de diagnostic. Activé par défaut.`,toggleLabel:`Activer la télémétrie du pipeline`,toggleDescription:`Quand elle est activée, les données OTEL des jobs du pipeline sont capturées localement. Utilisez le bouton <mono>Exporter le diagnostic</mono> sur n'importe quelle carte de job pour les télécharger.`,enabled:`Télémétrie du pipeline activée`,disabled:`Télémétrie du pipeline désactivée`,saveFailed:`Échec de l'enregistrement du réglage de télémétrie`},i={title:`Pré-prompt de rail`,description:`Instructions supplémentaires propres au projet, ajoutées aux jobs de rail implement et batch-implement après le contexte du ticket et avant l'exécution.`,label:`Pré-prompt`,placeholder:`Exemple : privilégier les changements incrémentaux, garder les migrations rétrocompatibles et ajouter des tests pour chaque changement de rail.`,helper:`À utiliser pour des consignes projet stables qui doivent accompagner chaque exécution d'implémentation sur rail.`,saveButton:`Enregistrer le pré-prompt`,cleared:`Pré-prompt effacé`,saved:`Pré-prompt enregistré`,saveFailed:`Échec de l'enregistrement du pré-prompt`},a={title:`Pré-prompt Freestyle`,description:`Instruction envoyée au fournisseur sélectionné en mode Freestyle. Freestyle saute le pipeline OpenSpec — il transmet au fournisseur ce pré-prompt plus le texte de la spec et le laisse implémenter en autonomie. Laissez vide pour utiliser la valeur par défaut intégrée.`,label:`Pré-prompt Freestyle`,placeholder:`Laissez vide pour utiliser l'instruction Freestyle par défaut.`,helper:`Le texte de la spec est ajouté automatiquement après ce pré-prompt. Vide = défaut.`,saveButton:`Enregistrer le pré-prompt Freestyle`,resetToDefault:`Pré-prompt Freestyle réinitialisé à la valeur par défaut`,saved:`Pré-prompt Freestyle enregistré`,saveFailed:`Échec de l'enregistrement du pré-prompt Freestyle`},o={title:`Budget`,description:`Définissez un plafond de dépense quotidien pour ce projet. La file se met automatiquement en pause quand la limite est atteinte.`,dailyLabel:`Budget quotidien (USD)`,dailyHelper:`Laissez vide pour désactiver. La dépense est calculée sur les dernières 24 heures.`,dailyPlaceholder:`ex. 5.00`,perJobLabel:`Alerte de coût par job (USD)`,perJobHelper:`Alerte quand un seul job de ce projet dépasse ce montant.`,perJobPlaceholder:`ex. 0.50`,invalidNumber:`Saisissez un nombre positif ou laissez vide pour désactiver`,dailyRemoved:`Budget quotidien supprimé`,dailySet:`Budget quotidien défini à {{amount}} $`,perJobAlertDisabled:`Alerte de coût par job désactivée`,alertSet:`Alerte définie pour les jobs dépassant {{amount}} $`,saveBudgetFailed:`Échec de l'enregistrement du budget`,saveThresholdFailed:`Échec de l'enregistrement du seuil`},s={nav:{appearance:`Apparence`,specrailsAgents:`Specrails Agents`,code:`Code`,terminal:`Terminal`,updates:`Mises à jour`,mobile:`Mobile`,mcp:`MCP`,projects:`Projets`,advanced:`Avancé`,webhooks:`Webhooks`,about:`À propos`,effects:`Effets`},title:`Paramètres de Desktop`,description:`Gérez les projets enregistrés et consultez les informations de Desktop.`,registeredProjects:`Projets enregistrés`,noProjects:`Aucun projet enregistré pour l'instant`,techUrlDescription:`URL de base de l'API specrails-tech (par défaut : http://localhost:3000)`,techUrlSaved:`URL specrails-tech enregistrée`,techUrlSaveFailed:`Échec de l'enregistrement de l'URL`,budgetAlertsHeading:`Budget & alertes`,dailyBudgetLabel:`Budget quotidien de Desktop (USD)`,dailyBudgetHelper:`Limite de dépense quotidienne globale pour tous les projets. Les files se mettent automatiquement en pause en cas de dépassement.`,dailyBudgetPlaceholder:`ex. 10.00`,perJobHelper:`Alerte quand un seul job dépasse ce montant. Laissez vide pour désactiver.`,costAlertsDisabled:`Alertes de coût désactivées`,dailyBudgetRemoved:`Budget quotidien de Desktop supprimé`,dailyBudgetSet:`Budget quotidien de Desktop défini à {{amount}} $`,dailyBudgetSaveFailed:`Échec de l'enregistrement du budget quotidien de Desktop`,projectRemoved:`Projet supprimé`,projectRemoveFailed:`Échec de la suppression du projet`,onboardingHeading:`Onboarding`,platformTour:`Visite de la plateforme`,platformTourDescription:`Rejouez l'assistant de bienvenue pour revoir les fonctionnalités clés.`,replayTour:`Rejouer la visite`,terminalPanelHeading:`Panneau de terminal`,infoHeading:`Informations de Desktop`,infoPort:`Port`,infoProjects:`Projets`,infoDb:`BD de Desktop`},c={heading:`Notifications système`,description:`Affiche des notifications de bureau natives quand des jobs se terminent ou échouent. Les notifications n'apparaissent que lorsque l'onglet n'a pas le focus.`,enableLabel:`Activer les notifications système`,notifyOn:`Notifier pour :`,filterAll:`Tout (terminés & échoués)`,filterCompleted:`Terminés uniquement`,filterFailed:`Échoués uniquement`,enabledToast:`Notifications système activées`,disabledToast:`Notifications système désactivées`},l={heading:`Webhooks sortants`,description:`Notifiez des outils externes (Slack, Zapier, CI/CD) lors des événements de Desktop. Les requêtes sont signées via <code>X-Specrails-Signature</code> quand un secret est défini.`,eventJobCompleted:`Job terminé`,eventJobFailed:`Job en échec`,eventDailyBudgetExceeded:`Budget quotidien dépassé`,statusOn:`actif`,statusOff:`inactif`,disable:`Désactiver`,enable:`Activer`,sendTestPing:`Envoyer un ping de test`,addHeading:`Ajouter un webhook`,secretPlaceholder:`Secret de signature (facultatif)`,addButton:`Ajouter le webhook`,urlRequired:`L'URL est requise`,selectEvent:`Sélectionnez au moins un événement`,added:`Webhook ajouté`,addFailed:`Échec de l'ajout du webhook`,updateFailed:`Échec de la mise à jour du webhook`,removed:`Webhook supprimé`,removeFailed:`Échec de la suppression du webhook`,testPingSent:`Ping de test envoyé`,testPingFailed:`Échec de l'envoi du ping de test`},u={title:`Panneau de terminal`,desktopDescription:`Valeurs par défaut de Desktop, appliquées à chaque projet sauf surcharge par projet.`,projectDescription:`Surcharges par projet pour le panneau de terminal. Laissez un champ inchangé pour hériter de la valeur par défaut de Desktop.`,fontFamily:`Police`,fontSize:`Taille de police ({{min}}–{{max}})`,renderMode:`Mode de rendu`,copyOnSelect:`Copier à la sélection`,shellIntegration:`Intégration shell (marques OSC 133)`,notifyLongRunning:`Notifier les commandes de longue durée`,longCommandThreshold:`Seuil de commande longue (ms)`,imageRendering:`Rendu d'images inline (Sixel + iTerm2)`,browserShortcutUrl:`URL du raccourci navigateur`,quickScript:`Script rapide (collé dans le terminal actif — Entrée manuelle)`,reset:`Réinitialiser`,unsavedChanges:`Modifications non enregistrées`,clearOverride:`Effacer la surcharge`,clear:`Effacer`,inheritingDefault:`Hérite de la valeur par défaut de Desktop`,nothingToSave:`Rien à enregistrer`,saved:`Paramètres du terminal enregistrés`},d={heading:`Section Code`,summaryLanguage:`Langue des résumés`,monthlyBudget:`Budget mensuel (USD)`,budgetHelper:"Plafond de dépense `surface=file-summary` par mois calendaire. Les régénérations lancées par l'utilisateur peuvent le dépasser."},f={taglines:{dracula:`L'original — sombre teinté de violet aux accents néon éclatants`,"aurora-light":`Clair premium — indigo inspiré de Linear sur blanc cassé chaleureux`,"obsidian-dark":`Sombre premium — presque noir teinté de bleu aux accents électriques`,specrails:`Thème de la marque — bleu marine-indigo profond aux accents cyan saturés`,"code-rain":`Terminal phosphore — menthe douce sur fond presque noir verdâtre`,galaxy:`Bleu spatial profond avec une traînée de lame lumineuse`},heading:`Apparence`,themeGroupLabel:`Thème`,currentlyActive:`Actuellement actif`,updateFailed:`Échec de la mise à jour du thème`},p={heading:`Compagnon mobile`,description:`Contrôlez Specrails depuis l'application SpecRails Companion sur votre téléphone, 100 % via votre réseau local. Désactivé par défaut.`,accessOn:`Accès mobile activé`,accessOff:`Accès mobile désactivé`,listeningOnPort:`À l'écoute sur le port {{port}}`,notListening:`Pas à l'écoute`,turnOn:`Activer`,turnOff:`Désactiver`,pairWebDevice:`Appairer le compagnon web`,reset:`Réinitialiser`,resetConfirm:`Réinitialiser l'identité mobile ? Tous les appareils appairés seront révoqués et devront s'appairer à nouveau.`,identityReset:`Identité mobile réinitialisée`,enableFailed:`Impossible d'activer l'accès mobile : {{message}}`,disableFailed:`Impossible de désactiver l'accès mobile : {{message}}`,windowsFirewall:`Le Pare-feu Windows demandera d'autoriser le serveur SpecRails à la première activation — choisissez « Autoriser sur les réseaux privés ».`,pairedDevices:`Appareils appairés`,noDevices:`Aucun appareil appairé pour l'instant.`,revokeDevice:`Révoquer {{name}}`},m={title:`Appairer le compagnon web`,description:`Ouvrez specrails.dev/companion-app sur votre téléphone, puis scannez ce code avec.`,startFailed:`Impossible de démarrer l'appairage : {{error}}`,showThenScan:`Une fois que votre téléphone l'a scanné, appuyez sur « Scanner le code du téléphone » et pointez la caméra vers votre téléphone.`,scanAnswer:`Scanner le code du téléphone`,scanning:`Pointez la caméra vers le code sur votre téléphone…`,cameraFailed:`Caméra indisponible : {{message}}`,notAnswer:`Ce QR code n'est pas une réponse d'appairage.`,connecting:`Connexion…`,paired:`✓ Appairé`,pairedToast:`Compagnon web appairé`,answerRejected:`Le bureau a rejeté ce code. Générez-en un nouveau et réessayez.`,copyCode:`Copier le code`,codeCopied:`Code copié`,cancel:`Annuler`},h={heading:`Specrails Core`,installed:`Installé :`,updateAvailable:`Mise à jour disponible : {{version}}`,upToDate:`À jour`,neverChecked:`Non vérifié`,check:`Rechercher des mises à jour`,checking:`Vérification…`,update:`Mettre à jour vers {{version}}`,downloading:`Téléchargement…`,materializing:`Installation…`,affectsAll:`S'applique à tous les projets — aucun redémarrage requis.`,unavailable:`Les mises à jour du core ne sont pas disponibles dans cette version.`,toastDone:`Specrails Core mis à jour vers {{version}}`,toastError:`Échec de la mise à jour du core : {{message}}`,toastUpToDate:`Specrails Core est à jour`,toastCheckFailed:`Échec de la vérification : {{message}}`,loadFailed:`Impossible de charger l’état de Core. Réessayer`,runtime:`Moteur : {{version}}`,bundled:`Inclus dans Desktop : {{version}}`,sources:{override:`Sélection explicite`,managed:`Géré par Desktop`,bundled:`Inclus dans Desktop`,local:`Paquet local`,global:`CLI externe`},repair:`Terminer la mise à jour {{version}}`},g={heading:`Specrails Desktop`,installed:`Installée :`,check:`Rechercher des mises à jour`,checking:`Vérification…`,upToDate:`Vous avez la dernière version`,updateAvailable:`Mise à jour disponible : {{version}}`,autoHint:`Vérification automatique au lancement et toutes les 6 heures.`,unavailable:`Les mises à jour ne sont disponibles que dans l'app de bureau.`,toastUpToDate:`Specrails Desktop est à jour`,toastCheckFailed:`Échec de la recherche de mises à jour : {{message}}`},_={title:`{{name}} — Paramètres`,description:`Configuration du projet : prompts, branche, environnement, budget, télémétrie et terminal.`,nav:{general:`Général`,branch:`Branche`,environment:`Environnement`,budget:`Budget`,telemetry:`Télémétrie`,terminal:`Terminal`,agentRuntime:`Moteur d’agents`}},v={title:`Branche d'intégration`,description:`La branche depuis laquelle les rails parallèles se ramifient et que ciblent leurs PR en brouillon. Laissez vide pour résoudre automatiquement vers la branche par défaut du dépôt.`,placeholder:`automatique (branche par défaut)`,resolved:`Les rails partent de <mono>{{branch}}</mono>`,save:`Enregistrer la branche`,saved:`Branche d'intégration enregistrée`,saveFailed:`Impossible d'enregistrer la branche d'intégration`},y={title:`Environnement des worktrees`,description:`Choisissez les noms de variables d'environnement que ce projet transmet aux jobs de rail et aux worktrees isolés des loops. Seuls les noms sont enregistrés ; les valeurs sont lues au démarrage, avec récupération depuis le login shell si le processus Desktop ne les a pas.`,label:`Variable d'environnement`,placeholder:`NODE_AUTH_TOKEN`,helper:`Appuyez sur Entrée ou Ajouter. Vous pouvez coller plusieurs noms séparés par des virgules ou des espaces.`,add:`Ajouter`,empty:`Aucune variable propre à ce projet n'est encore configurée.`,remove:`Supprimer {{name}}`,save:`Enregistrer l'environnement`,saved:`Environnement des worktrees enregistré`,saveFailed:`Impossible d'enregistrer l'environnement des worktrees`,invalidName:`{{name}} n'est pas un nom de variable d'environnement valide`,noValues:`Ajoutez uniquement des noms de variables, pas de secrets KEY=value.`},b={heading:`Specrails Agents`,description:`Personnalisez les agents du pipeline specrails-core par fournisseur d'IA — modèle et effort de raisonnement. Les changements s'appliquent à la prochaine exécution, sans redémarrage.`,loadFailed:`Impossible de charger les réglages des agents.`,modeDefault:`Par défaut`,modeCustom:`Personnalisé`,notDetected:`Non détecté`,notSignedIn:`Non connecté`,pipeline:`Pipeline`,pipelineHint:`Modèle et effort pour toute l'exécution — les sous-agents en héritent sauf réglage ci-dessous.`,model:`Modèle`,effort:`Effort`,defaultModel:`Par défaut ({{model}})`,defaultEffort:`Effort par défaut`,agentsTitle:`Agents du pipeline`,agentsHint:`Modèle par agent pour ce fournisseur.`,inheritNote:`Les sous-agents Codex héritent du modèle et de l'effort du pipeline, par conception.`,noPerAgentNote:`Ce fournisseur ne prend pas en charge les modèles par agent.`,reset:`Restaurer les valeurs par défaut`,agentNames:{"sr-architect":`Architecte`,"sr-developer":`Développeur`,"sr-reviewer":`Réviseur`}},x={heading:`Effets`,description:`Touches visuelles de l'app. Chacune peut être désactivée ici.`,thinkingHalo:{label:`Halo de réflexion sur le composeur de l'agent`,description:`Pendant que l'agent réfléchit ou écrit, l'anneau orbital du Constructeur brille autour du composeur : il apparaît en fondu au début du tour et s'estompe quand la réponse se termine.`},reducedMotion:`Respecte le réglage système de réduction des animations : l'anneau reste une lueur statique.`,preview:`Aperçu`,previewThinking:`Réflexion…`},S={language:e,page:t,errors:n,telemetry:r,prePrompt:i,freestylePrePrompt:a,budget:o,desktop:s,notifications:c,webhooks:l,terminal:u,codeSection:d,appearance:f,mobile:p,pairWeb:m,coreUpdate:h,appUpdate:g,projectDialog:_,integrationBranch:v,worktreeEnv:y,specrailsAgents:b,effects:x};export{g as appUpdate,f as appearance,o as budget,d as codeSection,h as coreUpdate,S as default,s as desktop,x as effects,n as errors,a as freestylePrePrompt,v as integrationBranch,e as language,p as mobile,c as notifications,t as page,m as pairWeb,i as prePrompt,_ as projectDialog,b as specrailsAgents,r as telemetry,u as terminal,l as webhooks,y as worktreeEnv};