specrails-desktop 2.47.0 → 2.48.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 (248) hide show
  1. package/README.md +2 -0
  2. package/client/dist/assets/{ActivityFeedPage-DSCpSOGV.js → ActivityFeedPage-CGq6QhP5.js} +1 -1
  3. package/client/dist/assets/AgentBrowserCapture-C4GZ-kdf.js +1 -0
  4. package/client/dist/assets/AgentModeAnalyticsPane-_IPmL0ZS.js +2 -0
  5. package/client/dist/assets/AgentModeCodePane-B5WG5DOP.js +2 -0
  6. package/client/dist/assets/{AgentModeJobsPane-Dw3DNFkh.js → AgentModeJobsPane-w1N_HIXh.js} +1 -1
  7. package/client/dist/assets/AgentsPage-CmwnnT46.js +87 -0
  8. package/client/dist/assets/AnalyticsPage-BUMsKtsJ.js +1 -0
  9. package/client/dist/assets/CodePage-PjgywJPS.js +3 -0
  10. package/client/dist/assets/DesktopAnalyticsPage-BXY1pH4y.js +1 -0
  11. package/client/dist/assets/DocsDialog-ccQETHKB.js +11 -0
  12. package/client/dist/assets/DocsPage-DzEgplB3.js +11 -0
  13. package/client/dist/assets/{ExportDropdown-BwuvqS2Y.js → ExportDropdown-B8bBGopr.js} +1 -1
  14. package/client/dist/assets/InteractiveJobComposer-CEwGkJ8F.js +19 -0
  15. package/client/dist/assets/JobDetailModal-BYXmuTDe.js +1 -0
  16. package/client/dist/assets/JobDetailPage-CWp6MwJj.js +1 -0
  17. package/client/dist/assets/JobsPage-D1O1uyG8.js +1 -0
  18. package/client/dist/assets/{LoopBuilderPage-Byvq8Oqx.js → LoopBuilderPage-DQE-7Vby.js} +2 -2
  19. package/client/dist/assets/{LoopPreviewModal-BMC9Mgj1.js → LoopPreviewModal-Bk7zIXD5.js} +1 -1
  20. package/client/dist/assets/LoopsPage-CqG7mx56.js +1 -0
  21. package/client/dist/assets/MinimizedChatsContext-UpnqccPx.js +1 -0
  22. package/client/dist/assets/PluginsPage-CjgVvmpW.js +2 -0
  23. package/client/dist/assets/{ProjectSettingsDialog-nspqxH-M.js → ProjectSettingsDialog-D6vBCoay.js} +1 -1
  24. package/client/dist/assets/{RepositoryDeliveries-Dq9NJOWi.js → RepositoryDeliveries-C36ipKp_.js} +1 -1
  25. package/client/dist/assets/{RepositoryScopeSelector-C3jKG2z0.js → RepositoryScopeSelector-0Gz_fR1E.js} +1 -1
  26. package/client/dist/assets/ReviewPacketPage-Dr9RYs7q.js +1 -0
  27. package/client/dist/assets/TemplatePreviewModal-sCMHYFJo.js +1 -0
  28. package/client/dist/assets/TicketDetailModalContext-C5GgJlEt.js +14 -0
  29. package/client/dist/assets/{Trans-C0KyPo2O.js → Trans-9pHTy2fH.js} +1 -1
  30. package/client/dist/assets/{addspec-D2YIQ0GU.js → addspec-BOvgmcgk.js} +1 -1
  31. package/client/dist/assets/{addspec-B_TPJt-R.js → addspec-Clmyfn_R.js} +1 -1
  32. package/client/dist/assets/{addspec-A1lDQa4M.js → addspec-CsNaBpHp.js} +1 -1
  33. package/client/dist/assets/{addspec-CQBjzt24.js → addspec-D2tvWmmV.js} +1 -1
  34. package/client/dist/assets/{addspec-CLYLvaVP.js → addspec-D3nFwvD0.js} +1 -1
  35. package/client/dist/assets/{addspec-BPpZ_olp.js → addspec-DVLEhK3w.js} +1 -1
  36. package/client/dist/assets/{addspec-iFdQ6D99.js → addspec-DXbK-tb0.js} +1 -1
  37. package/client/dist/assets/{addspec-BHZd0N5F.js → addspec-OHG8DFEn.js} +1 -1
  38. package/client/dist/assets/agentRuntime-BUimiX__.js +1 -0
  39. package/client/dist/assets/agentRuntime-BcN97sAB.js +1 -0
  40. package/client/dist/assets/agentRuntime-Ckyg-ahT.js +1 -0
  41. package/client/dist/assets/agentRuntime-DJCwyX4t.js +1 -0
  42. package/client/dist/assets/agentRuntime-DVzPJOl0.js +1 -0
  43. package/client/dist/assets/agentRuntime-V9AZTG3c.js +1 -0
  44. package/client/dist/assets/agentRuntime-bAAjw1vw.js +1 -0
  45. package/client/dist/assets/agentRuntime-v4qKAYH-.js +1 -0
  46. package/client/dist/assets/{agents-DyI4rbHa.js → agents-CA5eT1d0.js} +1 -1
  47. package/client/dist/assets/{agents-_5mJMkAE.js → agents-CAgy-5uS.js} +1 -1
  48. package/client/dist/assets/{agents-BIT1UdTy.js → agents-CNm6Qzlv.js} +1 -1
  49. package/client/dist/assets/{agents-CST-lpYX.js → agents-CTwbx-fb.js} +1 -1
  50. package/client/dist/assets/{agents-C7fKfvm8.js → agents-DEGV1Vao.js} +1 -1
  51. package/client/dist/assets/{agents-DsgGMGwU.js → agents-HsDF1aQU.js} +1 -1
  52. package/client/dist/assets/{agents-Cm2JYrAa.js → agents-IQjdA-z9.js} +1 -1
  53. package/client/dist/assets/{agents-H6tVQUNP.js → agents-RkGoteXh.js} +1 -1
  54. package/client/dist/assets/analytics-BNgZ1Nj7.js +1 -0
  55. package/client/dist/assets/analytics-BlypLLR6.js +1 -0
  56. package/client/dist/assets/analytics-CoEzWPx4.js +1 -0
  57. package/client/dist/assets/analytics-DFh5lSOl.js +1 -0
  58. package/client/dist/assets/analytics-DZp-DS2U.js +1 -0
  59. package/client/dist/assets/analytics-DjLlE7jS.js +1 -0
  60. package/client/dist/assets/analytics-jzCkOec3.js +1 -0
  61. package/client/dist/assets/analytics-nZIjjtCc.js +1 -0
  62. package/client/dist/assets/{dashboard-BK_mez-z.js → dashboard-C29Qwa-L.js} +1 -1
  63. package/client/dist/assets/{dashboard-BwkjxI6H.js → dashboard-CSJzf5OT.js} +1 -1
  64. package/client/dist/assets/{dashboard-C3bDKf7s.js → dashboard-CTfEtkqX.js} +1 -1
  65. package/client/dist/assets/{dashboard-Bt0cCzeG.js → dashboard-Cr4D8oMn.js} +1 -1
  66. package/client/dist/assets/{dashboard-fRrP0Kv0.js → dashboard-Csf1yGSN.js} +1 -1
  67. package/client/dist/assets/{dashboard-CdvjGfog.js → dashboard-D40HP2ks.js} +1 -1
  68. package/client/dist/assets/dashboard-DBAP2_SQ.js +1 -0
  69. package/client/dist/assets/{dashboard-B14uYXkG.js → dashboard-DMklepmz.js} +1 -1
  70. package/client/dist/assets/file-text-CFT-xXKN.js +1 -0
  71. package/client/dist/assets/{formatDistanceToNow-D44phX1J.js → formatDistanceToNow-w_2U5pm0.js} +1 -1
  72. package/client/dist/assets/{getTimezoneOffsetInMilliseconds-EAh9LFSx.js → getTimezoneOffsetInMilliseconds-BRymg1Kk.js} +1 -1
  73. package/client/dist/assets/index-D0ScFZvR.css +2 -0
  74. package/client/dist/assets/index-DORCrgbI.js +77 -0
  75. package/client/dist/assets/jira-api-BqHbSdxK.js +1 -0
  76. package/client/dist/assets/jobs-C6qmvUAi.js +1 -0
  77. package/client/dist/assets/jobs-C9j2PuwW.js +1 -0
  78. package/client/dist/assets/jobs-DLHdDkHc.js +1 -0
  79. package/client/dist/assets/jobs-DSp9DoD_.js +1 -0
  80. package/client/dist/assets/jobs-DTQO08nJ.js +1 -0
  81. package/client/dist/assets/jobs-DoFaEl9g.js +1 -0
  82. package/client/dist/assets/jobs-Dpw6AEOP.js +1 -0
  83. package/client/dist/assets/jobs-DrF8Do8s.js +1 -0
  84. package/client/dist/assets/{narration-UWi_xIZ-.js → narration--hUhjM5v.js} +1 -1
  85. package/client/dist/assets/{narration-DiPyj06T.js → narration-CHI06czm.js} +1 -1
  86. package/client/dist/assets/{narration-DrBAf8uv.js → narration-DjKB3pQZ.js} +1 -1
  87. package/client/dist/assets/{narration-CqNvgRi9.js → narration-DtCYvRLM.js} +1 -1
  88. package/client/dist/assets/{narration-B1uGfofH.js → narration-DvLQBW9U.js} +1 -1
  89. package/client/dist/assets/{narration-BKcL4Srl.js → narration-eSx3gR0W.js} +1 -1
  90. package/client/dist/assets/{narration-OyujFouL.js → narration-n3hOA7LY.js} +1 -1
  91. package/client/dist/assets/{narration-BtjKyHVM.js → narration-thJOeT2-.js} +1 -1
  92. package/client/dist/assets/packet-BNW8ODQw.js +1 -0
  93. package/client/dist/assets/packet-CXYvfdjy.js +1 -0
  94. package/client/dist/assets/packet-CtIlB8YE.js +1 -0
  95. package/client/dist/assets/packet-DA1SJkMH.js +1 -0
  96. package/client/dist/assets/packet-DYcWfBip.js +1 -0
  97. package/client/dist/assets/packet-DseX9yKC.js +1 -0
  98. package/client/dist/assets/packet-_m5aOy_d.js +1 -0
  99. package/client/dist/assets/packet-qOemUAm3.js +1 -0
  100. package/client/dist/assets/{project-repositories-GRYdjlKB.js → project-repositories-BsCs1PPA.js} +1 -1
  101. package/client/dist/assets/provider-capabilities-Vi1ZGvAK.js +1 -0
  102. package/client/dist/assets/settings-BsehKpty.js +1 -0
  103. package/client/dist/assets/settings-CQWob3SB.js +1 -0
  104. package/client/dist/assets/settings-CgCl0hzy.js +1 -0
  105. package/client/dist/assets/settings-DLRLd22L.js +1 -0
  106. package/client/dist/assets/settings-Dn5prAFl.js +1 -0
  107. package/client/dist/assets/settings-HZSu-K4l.js +1 -0
  108. package/client/dist/assets/{settings-DEgcA0jd.js → settings-p4OVIyRh.js} +1 -1
  109. package/client/dist/assets/settings-rddaldUp.js +1 -0
  110. package/client/dist/assets/setup-B5FHuxvB.js +1 -0
  111. package/client/dist/assets/setup-BihzXadx.js +1 -0
  112. package/client/dist/assets/setup-BtC6Hg4K.js +1 -0
  113. package/client/dist/assets/setup-C9Fy9PKQ.js +1 -0
  114. package/client/dist/assets/setup-CROyqD5N.js +1 -0
  115. package/client/dist/assets/setup-DpqzaEEA.js +1 -0
  116. package/client/dist/assets/setup-Dwzt5nO1.js +1 -0
  117. package/client/dist/assets/setup-zLEDnG7N.js +1 -0
  118. package/client/dist/assets/{spending-CN9PHM65.js → spending-hcgxHP4O.js} +1 -1
  119. package/client/dist/assets/{useDesktop-iius_s5d.js → useDesktop-CAisjKWC.js} +1 -1
  120. package/client/dist/assets/{useSharedWebSocket-D7hkZ3Ka.js → useSharedWebSocket-BHIfW4QT.js} +2 -2
  121. package/client/dist/assets/wrench-BfmNO9Vw.js +1 -0
  122. package/client/dist/index.html +27 -26
  123. package/docs/guide/de/integrations/7-local-engines.md +37 -0
  124. package/docs/guide/en/integrations/7-local-engines.md +37 -0
  125. package/docs/guide/es/integrations/7-local-engines.md +37 -0
  126. package/docs/guide/fr/integrations/7-local-engines.md +37 -0
  127. package/docs/guide/it/integrations/7-local-engines.md +37 -0
  128. package/docs/guide/ja/integrations/7-local-engines.md +37 -0
  129. package/docs/guide/pt/integrations/7-local-engines.md +37 -0
  130. package/docs/guide/zh/integrations/7-local-engines.md +37 -0
  131. package/docs/internals/adding-a-provider.md +12 -0
  132. package/docs/internals/local-agent-runner.md +153 -0
  133. package/docs/internals/review-packet.md +8 -0
  134. package/docs/local-providers.md +215 -0
  135. package/local-runner/dist/specrails-local-runner.js +15815 -0
  136. package/package.json +7 -5
  137. package/server/dist/agent-chat-manager.js +8 -1
  138. package/server/dist/agent-chat-router.js +5 -2
  139. package/server/dist/agent-fence-promotion.js +53 -0
  140. package/server/dist/agent-mcp-config.js +4 -1
  141. package/server/dist/agent-runtime-bridge.js +7 -2
  142. package/server/dist/agent-runtime-controls-router.js +12 -1
  143. package/server/dist/agent-runtime-controls.js +37 -2
  144. package/server/dist/agent-runtime-effective-config.js +28 -7
  145. package/server/dist/agent-runtime-metrics.js +1 -1
  146. package/server/dist/agent-runtime-settings-router.js +76 -6
  147. package/server/dist/agent-runtime-settings.js +137 -7
  148. package/server/dist/agent-spec-framing.js +10 -4
  149. package/server/dist/binary-probe.js +12 -0
  150. package/server/dist/blueprint-router.js +3 -2
  151. package/server/dist/chat-manager.js +5 -1
  152. package/server/dist/desktop-router.js +87 -4
  153. package/server/dist/index.js +13 -0
  154. package/server/dist/interactive-job-session.js +3 -1
  155. package/server/dist/local-engine-detection.js +118 -0
  156. package/server/dist/loop-executors.js +2 -1
  157. package/server/dist/loop-role-engines.js +129 -0
  158. package/server/dist/loop-run-manager.js +4 -4
  159. package/server/dist/mcp/tools/app-settings.js +30 -4
  160. package/server/dist/mcp/tools/rails.js +1 -1
  161. package/server/dist/pr-body.js +11 -2
  162. package/server/dist/pricing.js +15 -0
  163. package/server/dist/provider-detection.js +63 -1
  164. package/server/dist/provider-selection.js +26 -1
  165. package/server/dist/providers/index.js +4 -1
  166. package/server/dist/providers/local-adapter-registry.js +56 -0
  167. package/server/dist/providers/local-adapter.js +426 -0
  168. package/server/dist/providers/registry.js +39 -4
  169. package/server/dist/rail-isolated-launch.js +3 -3
  170. package/server/dist/rails-router.js +66 -10
  171. package/server/dist/result-event.js +17 -0
  172. package/server/dist/review-packet.js +1 -0
  173. package/server/dist/schemas/agent-runtime.schema.json +10 -2
  174. package/server/dist/setup-manager.js +5 -1
  175. package/server/dist/spec-models.js +14 -2
  176. package/server/dist/worktree-node-modules.js +97 -65
  177. package/client/dist/assets/AgentBrowserCapture-mc1c5pgS.js +0 -1
  178. package/client/dist/assets/AgentModeAnalyticsPane--UkamBTm.js +0 -2
  179. package/client/dist/assets/AgentModeCodePane-DJCswsvU.js +0 -2
  180. package/client/dist/assets/AgentsPage-ChElPUL9.js +0 -87
  181. package/client/dist/assets/AnalyticsPage-BGtkFHBp.js +0 -1
  182. package/client/dist/assets/CodePage-BBnw3VGn.js +0 -3
  183. package/client/dist/assets/DesktopAnalyticsPage-B85tNScc.js +0 -1
  184. package/client/dist/assets/DocsDialog-D4cXrOMl.js +0 -11
  185. package/client/dist/assets/DocsPage-BCAbC6qy.js +0 -11
  186. package/client/dist/assets/InteractiveJobComposer-Coq-Zhk0.js +0 -19
  187. package/client/dist/assets/JobDetailModal--Mjam0Nc.js +0 -1
  188. package/client/dist/assets/JobDetailPage-B6ShWSBh.js +0 -1
  189. package/client/dist/assets/JobsPage-DHU_ep_B.js +0 -1
  190. package/client/dist/assets/LoopsPage-CFGl-Nw8.js +0 -1
  191. package/client/dist/assets/MinimizedChatsContext-DHjHBYqa.js +0 -1
  192. package/client/dist/assets/PluginsPage-BHygRnW6.js +0 -2
  193. package/client/dist/assets/ReviewPacketPage-C9mqhi65.js +0 -1
  194. package/client/dist/assets/TemplatePreviewModal-BmwoAjOr.js +0 -1
  195. package/client/dist/assets/TicketDetailModalContext-lYmoONrd.js +0 -14
  196. package/client/dist/assets/agentRuntime-62GWdc26.js +0 -1
  197. package/client/dist/assets/agentRuntime-BN1mKAuY.js +0 -1
  198. package/client/dist/assets/agentRuntime-BNBCzQLM.js +0 -1
  199. package/client/dist/assets/agentRuntime-BQE_K1GG.js +0 -1
  200. package/client/dist/assets/agentRuntime-CCU3HCtS.js +0 -1
  201. package/client/dist/assets/agentRuntime-DT72Bpdv.js +0 -1
  202. package/client/dist/assets/agentRuntime-ZfMPeeiP.js +0 -1
  203. package/client/dist/assets/agentRuntime-g3W8Ry4d.js +0 -1
  204. package/client/dist/assets/analytics-47pYygtV.js +0 -1
  205. package/client/dist/assets/analytics-B0vt1g5U.js +0 -1
  206. package/client/dist/assets/analytics-BMzCvrCU.js +0 -1
  207. package/client/dist/assets/analytics-BlFN3Zwx.js +0 -1
  208. package/client/dist/assets/analytics-CZYzL-nR.js +0 -1
  209. package/client/dist/assets/analytics-DAsb9MJ8.js +0 -1
  210. package/client/dist/assets/analytics-FXQlQ2Yt.js +0 -1
  211. package/client/dist/assets/analytics-RnFCNkah.js +0 -1
  212. package/client/dist/assets/dashboard-BfBir_6o.js +0 -1
  213. package/client/dist/assets/file-text-BcLCfcWZ.js +0 -1
  214. package/client/dist/assets/index-Cfh9aaep.css +0 -2
  215. package/client/dist/assets/index-DgMBighL.js +0 -76
  216. package/client/dist/assets/jira-api-BQR6G0YY.js +0 -1
  217. package/client/dist/assets/jobs-5PQJbdOf.js +0 -1
  218. package/client/dist/assets/jobs-B2B08Oy9.js +0 -1
  219. package/client/dist/assets/jobs-BJZtBbwb.js +0 -1
  220. package/client/dist/assets/jobs-BlWEsQb7.js +0 -1
  221. package/client/dist/assets/jobs-ConfD8xD.js +0 -1
  222. package/client/dist/assets/jobs-DMPU64ms.js +0 -1
  223. package/client/dist/assets/jobs-DojASiTp.js +0 -1
  224. package/client/dist/assets/jobs-kVHkNpB-.js +0 -1
  225. package/client/dist/assets/packet-BQ2tXfJI.js +0 -1
  226. package/client/dist/assets/packet-BdpOJ1Cy.js +0 -1
  227. package/client/dist/assets/packet-C3Ievb9R.js +0 -1
  228. package/client/dist/assets/packet-C4zJIG0Y.js +0 -1
  229. package/client/dist/assets/packet-Cx-zRuWn.js +0 -1
  230. package/client/dist/assets/packet-DUTGX52M.js +0 -1
  231. package/client/dist/assets/packet-DhsKtUPB.js +0 -1
  232. package/client/dist/assets/packet-z3LJ8Zyy.js +0 -1
  233. package/client/dist/assets/provider-capabilities-CXipwrXJ.js +0 -1
  234. package/client/dist/assets/settings-B3rWEwOx.js +0 -1
  235. package/client/dist/assets/settings-BcVoiMyw.js +0 -1
  236. package/client/dist/assets/settings-BlYvaQ7w.js +0 -1
  237. package/client/dist/assets/settings-CD5uEBiL.js +0 -1
  238. package/client/dist/assets/settings-CyhS0DLJ.js +0 -1
  239. package/client/dist/assets/settings-DCMFUGDs.js +0 -1
  240. package/client/dist/assets/settings-DmbYKyMJ.js +0 -1
  241. package/client/dist/assets/setup-2xGgu4Sk.js +0 -1
  242. package/client/dist/assets/setup-Ba11l2JA.js +0 -1
  243. package/client/dist/assets/setup-BzW4kMok.js +0 -1
  244. package/client/dist/assets/setup-COzwYhkJ.js +0 -1
  245. package/client/dist/assets/setup-CRVULhtF.js +0 -1
  246. package/client/dist/assets/setup-DgvlxwpE.js +0 -1
  247. package/client/dist/assets/setup-Dw_wYeEY.js +0 -1
  248. package/client/dist/assets/setup-ZPtEeJPW.js +0 -1
@@ -0,0 +1 @@
1
+ var e={title:`语言`,description:`Desktop 全局界面语言。即时生效,无需重启。`,selectLabel:`界面语言`,updateFailed:`无法保存语言偏好`},t={title:`项目设置`},n={saveFailed:`保存失败:{{message}}`},r={title:`流水线遥测`,description:`采集 token 用量、阶段耗时和子 Agent 活动以供诊断导出。默认开启。`,toggleLabel:`启用流水线遥测`,toggleDescription:`开启后,流水线任务的 OTEL 数据将在本地采集。在任意任务卡片上使用<mono>导出诊断</mono>按钮即可下载。`,enabled:`已启用流水线遥测`,disabled:`已禁用流水线遥测`,saveFailed:`保存遥测设置失败`},i={title:`Rail 前置提示词`,description:`追加到 implement 与 batch-implement rail 任务中的项目专属附加指令,位于工单上下文之后、开始执行之前。`,label:`前置提示词`,placeholder:`示例:优先采用增量修改,保持迁移向后兼容,并为每次 rail 变更添加测试。`,helper:`用于应随每次 rail 实现运行附带的稳定项目指引。`,saveButton:`保存前置提示词`,cleared:`前置提示词已清除`,saved:`前置提示词已保存`,saveFailed:`保存前置提示词失败`},a={title:`Freestyle 前置提示词`,description:`在 Freestyle 模式下发送给所选提供方的指令。Freestyle 跳过 OpenSpec 流水线——直接把该前置提示词加上 spec 文本交给提供方,让其自主实现。留空则使用内置默认值。`,label:`Freestyle 前置提示词`,placeholder:`留空以使用默认的 Freestyle 指令。`,helper:`spec 文本会自动追加在该前置提示词之后。留空 = 使用默认值。`,saveButton:`保存 Freestyle 前置提示词`,resetToDefault:`Freestyle 前置提示词已重置为默认值`,saved:`Freestyle 前置提示词已保存`,saveFailed:`保存 Freestyle 前置提示词失败`},o={title:`预算`,description:`为此项目设置每日支出上限。达到上限时队列自动暂停。`,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:`AI 提供商`,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 数据库`},c={heading:`系统通知`,description:`任务完成或失败时显示原生桌面通知。仅在标签页未聚焦时显示通知。`,enableLabel:`启用系统通知`,notifyOn:`通知时机:`,filterAll:`全部(完成与失败)`,filterCompleted:`仅完成`,filterFailed:`仅失败`,enabledToast:`已启用系统通知`,disabledToast:`已禁用系统通知`},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:`请至少选择一个事件`,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:`Shell 集成(OSC 133 标记)`,notifyLongRunning:`长耗时命令通知`,longCommandThreshold:`长命令阈值(ms)`,imageRendering:`内联图片渲染(Sixel + iTerm2)`,browserShortcutUrl:`浏览器快捷方式 URL`,quickScript:`快捷脚本(粘贴到活动终端——需手动按 Enter)`,reset:`重置`,unsavedChanges:`有未保存的更改`,clearOverride:`清除覆盖`,clear:`清除`,inheritingDefault:`正在继承 Desktop 默认值`,nothingToSave:`没有可保存的内容`,saved:`终端设置已保存`},d={heading:`代码板块`,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,完全经由本地网络。默认关闭。`,accessOn:`移动访问已开启`,accessOff:`移动访问已关闭`,listeningOnPort:`正在监听端口 {{port}}`,notListening:`未在监听`,turnOn:`开启`,turnOff:`关闭`,pairWebDevice:`配对网页伴侣`,reset:`重置`,resetConfirm:`确定要重置移动身份吗?所有已配对设备都将被吊销,必须重新配对。`,identityReset:`移动身份已重置`,enableFailed:`无法启用移动访问:{{message}}`,disableFailed:`无法禁用移动访问:{{message}}`,windowsFirewall:`首次启用时,Windows 防火墙会询问是否允许 SpecRails 服务器——请选择“允许在专用网络上”。`,pairedDevices:`已配对设备`,noDevices:`尚无已配对设备。`,revokeDevice:`吊销 {{name}}`},m={title:`配对网页伴侣`,description:`在手机上打开 specrails.dev/companion-app,然后用它扫描此二维码。`,startFailed:`无法开始配对:{{error}}`,showThenScan:`手机扫描此码后,点按“扫描手机的二维码”,并将摄像头对准手机。`,scanAnswer:`扫描手机的二维码`,scanning:`请将摄像头对准手机上的二维码…`,cameraFailed:`摄像头不可用:{{message}}`,notAnswer:`该二维码不是配对应答。`,connecting:`正在连接…`,paired:`✓ 已配对`,pairedToast:`网页伴侣已配对`,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:`并行 rail 从此分支创建,其草稿 PR 也以此为目标。留空则自动解析为仓库的默认分支。`,placeholder:`自动(仓库默认分支)`,resolved:`Rail 从 <mono>{{branch}}</mono> 创建分支`,save:`保存分支`,saved:`集成分支已保存`,saveFailed:`无法保存集成分支`},y={title:`Worktree 环境`,description:`选择此项目传递给 rail job 和隔离 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:`效果`,description:`应用中的视觉点缀,每一项都可以在这里关闭。`,thinkingHalo:{label:`代理输入框的思考光环`,description:`代理思考或书写时,构建器的环绕光环会围绕输入框发光:回合开始时淡入,回复结束时淡出。`},reducedMotion:`遵循系统的减少动态效果设置:光环将保持为静态光晕。`,preview:`预览`,previewThinking:`思考中…`},x={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,effects:b};export{g as appUpdate,f as appearance,o as budget,d as codeSection,h as coreUpdate,x as default,s as desktop,b 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,r as telemetry,u as terminal,l as webhooks,y as worktreeEnv};
@@ -0,0 +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:`Fournisseurs d'IA`,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:`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…`},x={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,effects:b};export{g as appUpdate,f as appearance,o as budget,d as codeSection,h as coreUpdate,x as default,s as desktop,b 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,r as telemetry,u as terminal,l as webhooks,y as worktreeEnv};
@@ -0,0 +1 @@
1
+ var e={title:`Lingua`,description:`Lingua della UI per tutto Desktop. Si applica all'istante — nessun riavvio necessario.`,selectLabel:`Lingua dell'interfaccia`,updateFailed:`Impossibile salvare la preferenza di lingua`},t={title:`Impostazioni progetto`},n={saveFailed:`Salvataggio non riuscito: {{message}}`},r={title:`Telemetria della pipeline`,description:`Cattura l'uso dei token, le durate delle fasi e l'attività dei subagent per l'export diagnostico. Attivata per impostazione predefinita.`,toggleLabel:`Abilita la telemetria della pipeline`,toggleDescription:`Quando attiva, i dati OTEL dei job della pipeline vengono catturati localmente. Usa il pulsante <mono>Esporta diagnostica</mono> su qualsiasi card di job per scaricarli.`,enabled:`Telemetria della pipeline abilitata`,disabled:`Telemetria della pipeline disabilitata`,saveFailed:`Salvataggio dell'impostazione di telemetria non riuscito`},i={title:`Pre-prompt dei rail`,description:`Istruzioni extra specifiche del progetto aggiunte ai job rail di implement e batch-implement dopo il contesto del ticket e prima dell'esecuzione.`,label:`Pre-prompt`,placeholder:`Esempio: preferisci modifiche incrementali, mantieni le migrazioni retrocompatibili e aggiungi test per ogni modifica del rail.`,helper:`Usalo per indicazioni stabili di progetto che devono accompagnare ogni run di implementazione su rail.`,saveButton:`Salva pre-prompt`,cleared:`Pre-prompt rimosso`,saved:`Pre-prompt salvato`,saveFailed:`Salvataggio del pre-prompt non riuscito`},a={title:`Pre-prompt Freestyle`,description:`Istruzione inviata al provider selezionato in Freestyle. Freestyle salta la pipeline OpenSpec — consegna al provider questo pre-prompt più il testo della spec e lo lascia implementare in autonomia. Lascia vuoto per usare il default integrato.`,label:`Pre-prompt Freestyle`,placeholder:`Lascia vuoto per usare l'istruzione Freestyle predefinita.`,helper:`Il testo della spec viene aggiunto automaticamente dopo questo pre-prompt. Vuoto = default.`,saveButton:`Salva pre-prompt Freestyle`,resetToDefault:`Pre-prompt Freestyle ripristinato al default`,saved:`Pre-prompt Freestyle salvato`,saveFailed:`Salvataggio del pre-prompt Freestyle non riuscito`},o={title:`Budget`,description:`Imposta un tetto di spesa giornaliero per questo progetto. La coda si mette in pausa automaticamente al raggiungimento del limite.`,dailyLabel:`Budget giornaliero (USD)`,dailyHelper:`Lascia vuoto per disabilitare. La spesa è calcolata sulle ultime 24 ore.`,dailyPlaceholder:`es. 5.00`,perJobLabel:`Avviso di costo per job (USD)`,perJobHelper:`Avvisa quando un singolo job di questo progetto supera questo importo.`,perJobPlaceholder:`es. 0.50`,invalidNumber:`Inserisci un numero positivo o lascia vuoto per disabilitare`,dailyRemoved:`Budget giornaliero rimosso`,dailySet:"Budget giornaliero impostato a ${{amount}}",perJobAlertDisabled:`Avviso di costo per job disabilitato`,alertSet:"Avviso impostato per i job oltre ${{amount}}",saveBudgetFailed:`Salvataggio del budget non riuscito`,saveThresholdFailed:`Salvataggio della soglia non riuscito`},s={nav:{appearance:`Aspetto`,specrailsAgents:`Provider di IA`,code:`Codice`,terminal:`Terminale`,updates:`Aggiornamenti`,mobile:`Mobile`,mcp:`MCP`,projects:`Progetti`,advanced:`Avanzate`,webhooks:`Webhooks`,about:`Info`,effects:`Effetti`},title:`Impostazioni Desktop`,description:`Gestisci i progetti registrati e visualizza le informazioni di Desktop.`,registeredProjects:`Progetti registrati`,noProjects:`Nessun progetto ancora registrato`,techUrlDescription:`URL base per l'API specrails-tech (default: http://localhost:3000)`,techUrlSaved:`URL di specrails-tech salvato`,techUrlSaveFailed:`Salvataggio dell'URL non riuscito`,budgetAlertsHeading:`Budget e avvisi`,dailyBudgetLabel:`Budget giornaliero di Desktop (USD)`,dailyBudgetHelper:`Limite di spesa giornaliero globale su tutti i progetti. Le code si mettono in pausa automaticamente al superamento.`,dailyBudgetPlaceholder:`es. 10.00`,perJobHelper:`Avvisa quando un singolo job supera questo importo. Lascia vuoto per disabilitare.`,costAlertsDisabled:`Avvisi di costo disabilitati`,dailyBudgetRemoved:`Budget giornaliero di Desktop rimosso`,dailyBudgetSet:"Budget giornaliero di Desktop impostato a ${{amount}}",dailyBudgetSaveFailed:`Salvataggio del budget giornaliero di Desktop non riuscito`,projectRemoved:`Progetto rimosso`,projectRemoveFailed:`Rimozione del progetto non riuscita`,onboardingHeading:`Onboarding`,platformTour:`Tour della piattaforma`,platformTourDescription:`Rivedi il wizard di benvenuto per ripassare le funzionalità principali.`,replayTour:`Rivedi il tour`,terminalPanelHeading:`Pannello terminale`,infoHeading:`Informazioni Desktop`,infoPort:`Porta`,infoProjects:`Progetti`,infoDb:`DB di Desktop`},c={heading:`Notifiche di sistema`,description:`Mostra notifiche desktop native quando i job vengono completati o falliscono. Le notifiche appaiono solo quando la scheda non è in primo piano.`,enableLabel:`Abilita le notifiche di sistema`,notifyOn:`Notifica per:`,filterAll:`Tutti (completati e falliti)`,filterCompleted:`Solo completati`,filterFailed:`Solo falliti`,enabledToast:`Notifiche di sistema abilitate`,disabledToast:`Notifiche di sistema disabilitate`},l={heading:`Webhook in uscita`,description:`Notifica strumenti esterni (Slack, Zapier, CI/CD) sugli eventi di Desktop. Le richieste sono firmate via <code>X-Specrails-Signature</code> quando è impostato un secret.`,eventJobCompleted:`Job completato`,eventJobFailed:`Job fallito`,eventDailyBudgetExceeded:`Budget giornaliero superato`,statusOn:`on`,statusOff:`off`,disable:`Disabilita`,enable:`Abilita`,sendTestPing:`Invia ping di test`,addHeading:`Aggiungi webhook`,secretPlaceholder:`Secret di firma (facoltativo)`,addButton:`Aggiungi webhook`,urlRequired:`L'URL è obbligatorio`,selectEvent:`Seleziona almeno un evento`,added:`Webhook aggiunto`,addFailed:`Aggiunta del webhook non riuscita`,updateFailed:`Aggiornamento del webhook non riuscito`,removed:`Webhook rimosso`,removeFailed:`Rimozione del webhook non riuscita`,testPingSent:`Ping di test inviato`,testPingFailed:`Invio del ping di test non riuscito`},u={title:`Pannello terminale`,desktopDescription:`Default a livello di Desktop applicati a ogni progetto, salvo override per progetto.`,projectDescription:`Override per progetto del pannello terminale. Lascia un campo invariato per ereditare il default di Desktop.`,fontFamily:`Famiglia di font`,fontSize:`Dimensione font ({{min}}–{{max}})`,renderMode:`Modalità di rendering`,copyOnSelect:`Copia alla selezione`,shellIntegration:`Integrazione shell (marcatori OSC 133)`,notifyLongRunning:`Notifica per comandi a lunga esecuzione`,longCommandThreshold:`Soglia comandi lunghi (ms)`,imageRendering:`Rendering immagini inline (Sixel + iTerm2)`,browserShortcutUrl:`URL scorciatoia browser`,quickScript:`Script rapido (incollato nel terminale attivo — premi Invio manualmente)`,reset:`Reimposta`,unsavedChanges:`Modifiche non salvate`,clearOverride:`Rimuovi override`,clear:`Rimuovi`,inheritingDefault:`Eredita il default di Desktop`,nothingToSave:`Niente da salvare`,saved:`Impostazioni del terminale salvate`},d={heading:`Sezione Code`,summaryLanguage:`Lingua dei riassunti`,monthlyBudget:`Budget mensile (USD)`,budgetHelper:"Tetto alla spesa `surface=file-summary` per mese di calendario. Le rigenerazioni avviate dall'utente possono superarlo."},f={taglines:{dracula:`L'originale — scuro con sfumature viola e vividi accenti neon`,"aurora-light":`Chiaro premium — indaco ispirato a Linear su bianco caldo`,"obsidian-dark":`Scuro premium — quasi nero con sfumature blu e accenti elettrici`,specrails:`Tema del brand — blu navy-indaco profondo con accenti ciano saturi`,"code-rain":`Terminale al fosforo — menta tenue su quasi nero verdastro`,galaxy:`Blu spazio profondo con una scia luminosa a lama`},heading:`Aspetto`,themeGroupLabel:`Tema`,currentlyActive:`Attualmente attivo`,updateFailed:`Aggiornamento del tema non riuscito`},p={heading:`Companion mobile`,description:`Controlla Specrails dall'app SpecRails Companion sul tuo telefono, 100% sulla tua rete locale. Disattivato per impostazione predefinita.`,accessOn:`Accesso mobile attivo`,accessOff:`Accesso mobile disattivato`,listeningOnPort:`In ascolto sulla porta {{port}}`,notListening:`Non in ascolto`,turnOn:`Attiva`,turnOff:`Disattiva`,pairWebDevice:`Associa companion web`,reset:`Reimposta`,resetConfirm:`Reimpostare l'identità mobile? Ogni dispositivo associato verrà revocato e dovrà associarsi di nuovo.`,identityReset:`Identità mobile reimpostata`,enableFailed:`Impossibile abilitare l'accesso mobile: {{message}}`,disableFailed:`Impossibile disabilitare l'accesso mobile: {{message}}`,windowsFirewall:`Alla prima attivazione Windows Firewall chiederà di consentire il server SpecRails — scegli “Consenti su reti private”.`,pairedDevices:`Dispositivi associati`,noDevices:`Nessun dispositivo ancora associato.`,revokeDevice:`Revoca {{name}}`},m={title:`Associa companion web`,description:`Apri specrails.dev/companion-app sul telefono, poi scansiona questo codice con esso.`,startFailed:`Impossibile avviare l'associazione: {{error}}`,showThenScan:`Dopo che il telefono ha scansionato questo, tocca “Scansiona il codice del telefono” e punta la fotocamera verso il telefono.`,scanAnswer:`Scansiona il codice del telefono`,scanning:`Punta la fotocamera sul codice del telefono…`,cameraFailed:`Fotocamera non disponibile: {{message}}`,notAnswer:`Quel QR non è una risposta di associazione.`,connecting:`Connessione…`,paired:`✓ Associato`,pairedToast:`Companion web associato`,answerRejected:`Il desktop ha rifiutato quel codice. Generane uno nuovo e riprova.`,copyCode:`Copia codice`,codeCopied:`Codice copiato`,cancel:`Annulla`},h={heading:`Specrails Core`,installed:`Installato:`,updateAvailable:`Aggiornamento disponibile: {{version}}`,upToDate:`Aggiornato`,neverChecked:`Non verificato`,check:`Cerca aggiornamenti`,checking:`Verifica…`,update:`Aggiorna a {{version}}`,downloading:`Download…`,materializing:`Installazione…`,affectsAll:`Si applica a tutti i progetti — nessun riavvio necessario.`,unavailable:`Gli aggiornamenti del core non sono disponibili in questa build.`,toastDone:`Specrails Core aggiornato a {{version}}`,toastError:`Aggiornamento del core non riuscito: {{message}}`,toastUpToDate:`Specrails Core è aggiornato`,toastCheckFailed:`Verifica aggiornamenti non riuscita: {{message}}`,loadFailed:`Impossibile aggiornare lo stato di Core. Riprova`,runtime:`Motore: {{version}}`,bundled:`Incluso in Desktop: {{version}}`,sources:{override:`Selezione esplicita`,managed:`Gestito da Desktop`,bundled:`Incluso in Desktop`,local:`Pacchetto locale`,global:`CLI esterna`},repair:`Completa aggiornamento {{version}}`},g={heading:`Specrails Desktop`,installed:`Installata:`,check:`Cerca aggiornamenti`,checking:`Verifica…`,upToDate:`Hai l'ultima versione`,updateAvailable:`Aggiornamento disponibile: {{version}}`,autoHint:`Controllo automatico all'avvio e ogni 6 ore.`,unavailable:`Gli aggiornamenti sono disponibili solo nell'app desktop.`,toastUpToDate:`Specrails Desktop è aggiornato`,toastCheckFailed:`Ricerca aggiornamenti non riuscita: {{message}}`},_={title:`{{name}} — Impostazioni`,description:`Configurazione del progetto: prompt, branch, ambiente, budget, telemetria e terminale.`,nav:{general:`Generale`,branch:`Branch`,environment:`Ambiente`,budget:`Budget`,telemetry:`Telemetria`,terminal:`Terminale`,agentRuntime:`Motore degli agenti`}},v={title:`Ramo di integrazione`,description:`Il ramo da cui i rail paralleli si diramano e a cui puntano le loro PR in bozza. Lascia vuoto per risolvere automaticamente al ramo predefinito del repository.`,placeholder:`automatico (ramo predefinito)`,resolved:`I rail si diramano da <mono>{{branch}}</mono>`,save:`Salva ramo`,saved:`Ramo di integrazione salvato`,saveFailed:`Impossibile salvare il ramo di integrazione`},y={title:`Ambiente dei worktree`,description:`Scegli i nomi delle variabili d'ambiente che questo progetto passa ai job dei rail e ai worktree isolati dei loop. Vengono salvati solo i nomi; i valori vengono letti all'avvio dell'esecuzione, recuperandoli dalla login shell se mancano nel processo Desktop.`,label:`Variabile d'ambiente`,placeholder:`NODE_AUTH_TOKEN`,helper:`Premi Invio o Aggiungi. Puoi incollare più nomi separati da virgole o spazi.`,add:`Aggiungi`,empty:`Non ci sono ancora variabili specifiche per questo progetto.`,remove:`Rimuovi {{name}}`,save:`Salva ambiente`,saved:`Ambiente dei worktree salvato`,saveFailed:`Impossibile salvare l'ambiente dei worktree`,invalidName:`{{name}} non è un nome valido per una variabile d'ambiente`,noValues:`Aggiungi solo nomi di variabili, non segreti KEY=value.`},b={heading:`Effetti`,description:`Tocchi visivi dell'app. Ognuno si può disattivare qui.`,thinkingHalo:{label:`Alone di riflessione sul composer dell'agente`,description:`Mentre l'agente pensa o scrive, l'anello orbitante del Builder brilla attorno al composer: appare in dissolvenza all'inizio del turno e svanisce quando la risposta si conclude.`},reducedMotion:`Rispetta l'impostazione di sistema per la riduzione del movimento: l'anello resta un bagliore statico.`,preview:`Anteprima`,previewThinking:`Sto pensando…`},x={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,effects:b};export{g as appUpdate,f as appearance,o as budget,d as codeSection,h as coreUpdate,x as default,s as desktop,b 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,r as telemetry,u as terminal,l as webhooks,y as worktreeEnv};
@@ -0,0 +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:`Proveedores de IA`,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:`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…`},x={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,effects:b};export{g as appUpdate,f as appearance,o as budget,d as codeSection,h as coreUpdate,x as default,s as desktop,b 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,r as telemetry,u as terminal,l as webhooks,y as worktreeEnv};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({appUpdate:()=>v,appearance:()=>m,budget:()=>c,codeSection:()=>p,coreUpdate:()=>_,default:()=>C,desktop:()=>l,effects:()=>S,errors:()=>i,freestylePrePrompt:()=>s,integrationBranch:()=>b,language:()=>n,mobile:()=>h,notifications:()=>u,page:()=>r,pairWeb:()=>g,prePrompt:()=>o,projectDialog:()=>y,telemetry:()=>a,terminal:()=>f,webhooks:()=>d,worktreeEnv:()=>x}),n={title:`Language`,description:`Desktop-wide UI language. Applies instantly — no restart needed.`,selectLabel:`Interface language`,updateFailed:`Could not save the language preference`},r={title:`Project Settings`},i={saveFailed:`Failed to save: {{message}}`},a={title:`Pipeline Telemetry`,description:`Capture token usage, phase durations, and subagent activity for diagnostic export. On by default.`,toggleLabel:`Enable pipeline telemetry`,toggleDescription:`When on, OTEL data from pipeline jobs is captured locally. Use the <mono>Export diagnostic</mono> button on any job card to download.`,enabled:`Pipeline telemetry enabled`,disabled:`Pipeline telemetry disabled`,saveFailed:`Failed to save telemetry setting`},o={title:`Rail Pre-prompt`,description:`Extra project-specific instructions appended to implement and batch-implement rail jobs after the ticket context and before execution.`,label:`Pre-prompt`,placeholder:`Example: Prefer incremental changes, keep migrations backward compatible, and add tests for every rail change.`,helper:`Use this for stable project guidance that should accompany every rail implementation run.`,saveButton:`Save pre-prompt`,cleared:`Pre-prompt cleared`,saved:`Pre-prompt saved`,saveFailed:`Failed to save pre-prompt`},s={title:`Freestyle pre-prompt`,description:`Instruction sent to the selected provider in Freestyle. Freestyle skips the OpenSpec pipeline — it hands the provider this pre-prompt plus the spec text and lets it implement autonomously. Leave blank to use the built-in default.`,label:`Freestyle pre-prompt`,placeholder:`Leave blank to use the default Freestyle instruction.`,helper:`The spec text is appended automatically after this pre-prompt. Empty = default.`,saveButton:`Save Freestyle pre-prompt`,resetToDefault:`Freestyle pre-prompt reset to default`,saved:`Freestyle pre-prompt saved`,saveFailed:`Failed to save Freestyle pre-prompt`},c={title:`Budget`,description:`Set a daily spend cap for this project. The queue auto-pauses when the limit is hit.`,dailyLabel:`Daily budget (USD)`,dailyHelper:`Leave blank to disable. Spend is calculated over the last 24 hours.`,dailyPlaceholder:`e.g. 5.00`,perJobLabel:`Per-job cost alert (USD)`,perJobHelper:`Alert when a single job in this project exceeds this amount.`,perJobPlaceholder:`e.g. 0.50`,invalidNumber:`Enter a positive number or leave blank to disable`,dailyRemoved:`Daily budget removed`,dailySet:"Daily budget set to ${{amount}}",perJobAlertDisabled:`Per-job cost alert disabled`,alertSet:"Alert set for jobs over ${{amount}}",saveBudgetFailed:`Failed to save budget`,saveThresholdFailed:`Failed to save threshold`},l={nav:{appearance:`Appearance`,specrailsAgents:`AI providers`,code:`Code`,terminal:`Terminal`,updates:`Updates`,mobile:`Mobile`,mcp:`MCP`,projects:`Projects`,advanced:`Advanced`,webhooks:`Webhooks`,about:`About`,effects:`Effects`},title:`Desktop Settings`,description:`Manage registered projects and view Desktop information.`,registeredProjects:`Registered Projects`,noProjects:`No projects registered yet`,techUrlDescription:`Base URL for the specrails-tech API (default: http://localhost:3000)`,techUrlSaved:`specrails-tech URL saved`,techUrlSaveFailed:`Failed to save URL`,budgetAlertsHeading:`Budget & Alerts`,dailyBudgetLabel:`Desktop daily budget (USD)`,dailyBudgetHelper:`Global daily spend limit across all projects. Queues auto-pause when exceeded.`,dailyBudgetPlaceholder:`e.g. 10.00`,perJobHelper:`Alert when a single job exceeds this amount. Leave blank to disable.`,costAlertsDisabled:`Cost alerts disabled`,dailyBudgetRemoved:`Desktop daily budget removed`,dailyBudgetSet:"Desktop daily budget set to ${{amount}}",dailyBudgetSaveFailed:`Failed to save Desktop daily budget`,projectRemoved:`Project removed`,projectRemoveFailed:`Failed to remove project`,onboardingHeading:`Onboarding`,platformTour:`Platform Tour`,platformTourDescription:`Replay the welcome wizard to review key features.`,replayTour:`Replay Tour`,terminalPanelHeading:`Terminal Panel`,infoHeading:`Desktop Information`,infoPort:`Port`,infoProjects:`Projects`,infoDb:`Desktop DB`},u={heading:`OS Notifications`,description:`Show native desktop notifications when jobs complete or fail. Notifications only appear when the tab is not focused.`,enableLabel:`Enable OS Notifications`,notifyOn:`Notify on:`,filterAll:`All (completed & failed)`,filterCompleted:`Completed only`,filterFailed:`Failed only`,enabledToast:`OS notifications enabled`,disabledToast:`OS notifications disabled`},d={heading:`Outbound Webhooks`,description:`Notify external tools (Slack, Zapier, CI/CD) on Desktop events. Requests are signed via <code>X-Specrails-Signature</code> when a secret is set.`,eventJobCompleted:`Job completed`,eventJobFailed:`Job failed`,eventDailyBudgetExceeded:`Daily budget exceeded`,statusOn:`on`,statusOff:`off`,disable:`Disable`,enable:`Enable`,sendTestPing:`Send test ping`,addHeading:`Add webhook`,secretPlaceholder:`Signing secret (optional)`,addButton:`Add Webhook`,urlRequired:`URL is required`,selectEvent:`Select at least one event`,added:`Webhook added`,addFailed:`Failed to add webhook`,updateFailed:`Failed to update webhook`,removed:`Webhook removed`,removeFailed:`Failed to remove webhook`,testPingSent:`Test ping sent`,testPingFailed:`Failed to send test ping`},f={title:`Terminal panel`,desktopDescription:`Desktop-wide defaults applied to every project unless a per-project override is set.`,projectDescription:`Per-project overrides for the terminal panel. Leave a field unchanged to inherit the Desktop default.`,fontFamily:`Font family`,fontSize:`Font size ({{min}}–{{max}})`,renderMode:`Render mode`,copyOnSelect:`Copy on select`,shellIntegration:`Shell integration (OSC 133 marks)`,notifyLongRunning:`Notify on long-running commands`,longCommandThreshold:`Long-command threshold (ms)`,imageRendering:`Inline image rendering (Sixel + iTerm2)`,browserShortcutUrl:`Browser shortcut URL`,quickScript:`Quick script (pasted into active terminal — Enter manually)`,reset:`Reset`,unsavedChanges:`Unsaved changes`,clearOverride:`Clear override`,clear:`Clear`,inheritingDefault:`Inheriting Desktop default`,nothingToSave:`Nothing to save`,saved:`Terminal settings saved`},p={heading:`Code section`,summaryLanguage:`Summary language`,monthlyBudget:`Monthly budget (USD)`,budgetHelper:"Cap on `surface=file-summary` spend per calendar month. User-initiated regenerations can override."},m={taglines:{dracula:`The original — dark purple-tinted with vivid neon accents`,"aurora-light":`Premium light — Linear-inspired indigo on warm off-white`,"obsidian-dark":`Premium dark — near-black blue-tinted with electric accents`,specrails:`Brand theme — deep navy-indigo with saturated cyan accents`,"code-rain":`Phosphor terminal — soft mint on green-tinted near-black`,galaxy:`Deep-space blue with a glowing blade trail`},heading:`Appearance`,themeGroupLabel:`Theme`,currentlyActive:`Currently active`,updateFailed:`Failed to update theme`},h={heading:`Mobile companion`,description:`Control Specrails from the SpecRails Companion app on your phone, 100% over your local network. Off by default.`,accessOn:`Mobile access on`,accessOff:`Mobile access off`,listeningOnPort:`Listening on port {{port}}`,notListening:`Not listening`,turnOn:`Turn on`,turnOff:`Turn off`,pairWebDevice:`Pair web companion`,reset:`Reset`,resetConfirm:`Reset the mobile identity? Every paired device will be revoked and must pair again.`,identityReset:`Mobile identity reset`,enableFailed:`Could not enable mobile access: {{message}}`,disableFailed:`Could not disable mobile access: {{message}}`,windowsFirewall:`Windows Firewall will ask to allow the SpecRails server on first enable — choose “Allow on private networks”.`,pairedDevices:`Paired devices`,noDevices:`No devices paired yet.`,revokeDevice:`Revoke {{name}}`},g={title:`Pair web companion`,description:`Open specrails.dev/companion-app on your phone, then scan this code with it.`,startFailed:`Could not start pairing: {{error}}`,showThenScan:`After your phone scans this, tap “Scan phone's code” and point the camera at your phone.`,scanAnswer:`Scan phone's code`,scanning:`Point the camera at the code on your phone…`,cameraFailed:`Camera unavailable: {{message}}`,notAnswer:`That QR isn't a pairing answer.`,connecting:`Connecting…`,paired:`✓ Paired`,pairedToast:`Web companion paired`,answerRejected:`The desktop rejected that code. Generate a fresh one and retry.`,copyCode:`Copy code`,codeCopied:`Code copied`,cancel:`Cancel`},_={heading:`Specrails Core`,installed:`Installed:`,updateAvailable:`Update available: {{version}}`,upToDate:`Up to date`,neverChecked:`Not checked yet`,check:`Check for updates`,checking:`Checking…`,update:`Update to {{version}}`,downloading:`Downloading…`,materializing:`Installing…`,affectsAll:`Applies to all projects — no restart needed.`,unavailable:`Core updates aren't available in this build.`,toastDone:`Specrails Core updated to {{version}}`,toastError:`Core update failed: {{message}}`,toastUpToDate:`Specrails Core is up to date`,toastCheckFailed:`Update check failed: {{message}}`,loadFailed:`Could not refresh Core status. Retry`,runtime:`Runtime: {{version}}`,bundled:`Included in Desktop: {{version}}`,sources:{override:`Explicit override`,managed:`Managed by Desktop`,bundled:`Included in Desktop`,local:`Local package`,global:`External CLI`},repair:`Finish updating {{version}}`},v={heading:`Specrails Desktop`,installed:`Installed:`,check:`Check for updates`,checking:`Checking…`,upToDate:`You're on the latest version`,updateAvailable:`Update available: {{version}}`,autoHint:`Checks automatically at launch and every 6 hours.`,unavailable:`App updates are only available in the desktop app.`,toastUpToDate:`Specrails Desktop is up to date`,toastCheckFailed:`Update check failed: {{message}}`},y={title:`{{name}} — Settings`,description:`Project-level configuration: prompts, branch, environment, budget, telemetry and terminal.`,nav:{general:`General`,branch:`Branch`,environment:`Environment`,budget:`Budget`,telemetry:`Telemetry`,terminal:`Terminal`,agentRuntime:`Agent runtime`}},b={title:`Integration branch`,description:`The branch parallel rails branch from and target their draft PRs at. Leave empty to auto-resolve to the repository's default branch.`,placeholder:`auto (repository default)`,resolved:`Rails branch off <mono>{{branch}}</mono>`,save:`Save branch`,saved:`Integration branch saved`,saveFailed:`Could not save the integration branch`},x={title:`Worktree environment`,description:`Choose environment variable names this project passes to rail jobs and isolated loop worktrees. Only names are saved; values are read when a run starts, with login-shell recovery when the desktop process is missing them.`,label:`Environment variable`,placeholder:`NODE_AUTH_TOKEN`,helper:`Press Enter or Add. You can paste several names separated by commas or spaces.`,add:`Add`,empty:`No project-specific variables configured yet.`,remove:`Remove {{name}}`,save:`Save environment`,saved:`Worktree environment saved`,saveFailed:`Could not save the worktree environment`,invalidName:`{{name}} is not a valid environment variable name`,noValues:`Add only variable names here, not KEY=value secrets.`},S={heading:`Effects`,description:`Visual flourishes across the app. Each one can be switched off here.`,thinkingHalo:{label:`Thinking halo on the agent composer`,description:`While the agent is thinking or writing, the Builder's orbiting ring glows around the composer — it fades in when a turn starts and fades out when the reply settles.`},reducedMotion:`Follows your system's reduced-motion setting: the ring stays as a static glow.`,preview:`Preview`,previewThinking:`Thinking…`},C={language:n,page:r,errors:i,telemetry:a,prePrompt:o,freestylePrePrompt:s,budget:c,desktop:l,notifications:u,webhooks:d,terminal:f,codeSection:p,appearance:m,mobile:h,pairWeb:g,coreUpdate:_,appUpdate:v,projectDialog:y,integrationBranch:b,worktreeEnv:x,effects:S};export{t};
@@ -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`,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:`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…`},x={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,effects:b};export{g as appUpdate,f as appearance,o as budget,d as codeSection,h as coreUpdate,x as default,s as desktop,b 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,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:`Provedores de IA`,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:`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…`},x={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,effects:b};export{g as appUpdate,f as appearance,o as budget,d as codeSection,h as coreUpdate,x as default,s as desktop,b 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,r as telemetry,u as terminal,l as webhooks,y as worktreeEnv};
@@ -0,0 +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:`AI プロバイダー`,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:`エフェクト`,description:`アプリ内の視覚的な演出。それぞれここでオフにできます。`,thinkingHalo:{label:`エージェントコンポーザーの思考ハロー`,description:`エージェントが考えたり書いたりしている間、ビルダーの回転リングがコンポーザーの周りで光ります。ターン開始時にフェードイン、返答完了時にフェードアウトします。`},reducedMotion:`システムの「視差効果を減らす」設定に従い、リングは静的な光のままになります。`,preview:`プレビュー`,previewThinking:`考え中…`},x={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,effects:b};export{g as appUpdate,f as appearance,o as budget,d as codeSection,h as coreUpdate,x as default,s as desktop,b 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,r as telemetry,u as terminal,l as webhooks,y as worktreeEnv};
@@ -0,0 +1 @@
1
+ var e={title:`添加项目`,description:`注册一个项目目录,以便在 Specrails 中管理。`,noProviderDetected:`未检测到 AI CLI。请先安装 Claude Code、Codex CLI、Gemini CLI 或 Kimi Code。`,pathLabel:`项目路径`,pathPlaceholder:`/Users/me/my-project`,pathHint:`项目根目录的绝对路径`,browseForFolder:`浏览文件夹`,selectProjectFolder:`选择项目文件夹`,nameLabel:`显示名称`,optional:`(可选)`,namePlaceholder:`我的项目`,nameHint:`默认为目录名`,adding:`添加中…`,submit:`添加项目`,toolsRequired_one:`添加项目需要 {{tools}}`,toolsRequired_other:`添加项目需要 {{tools}}`,errors:{pathRequired:`请输入项目路径`,addFailed:`添加项目失败`},toasts:{registered:`项目“{{name}}”已注册`},chooser:{description:`导入现有仓库,或从一个想法构建全新项目。`,existingTitle:`现有项目`,existingDescription:`注册磁盘上已存在的仓库。`,newTitle:`新项目`,newDescription:`描述一个想法,获得已初始化的仓库和里程碑 1 待办清单。`}},t={corruptedBundle:`应用包已损坏——请重新安装应用`,notInstalled:`未安装`,failedToExecute:`已找到但无法执行`,failedToExecuteAt:`在 {{path}} 找到但无法执行`,failedToExecuteWithError:`已找到但无法执行({{error}})`,failedToExecuteAtWithError:`在 {{path}} 找到但无法执行({{error}})`,needsMinimum:`已找到 {{version}}——需要 {{minVersion}}+`,unknownVersion:`未知`,installedLabel:`已安装`,verifyError:`无法在本地验证开发工具——安装时将再次校验。`,allDetected:`已检测到全部所需工具`,bundleCorruptedTitle:`应用包已损坏`,toolsRequired_one:`需要 {{count}} 个开发工具`,toolsRequired_other:`需要 {{count}} 个开发工具`,reinstallHint:`请重新安装 Specrails 应用以恢复内置工具。`,installMissingHint:`请安装缺失的工具以继续。`,moreInfo:`更多信息`,bundledBadge:`内置`,optional:`可选`,ghNoAuth:"未登录 — 请运行 `gh auth login`"},n={title:`安装开发工具`,description:`SpecRails 需要 PATH 上的 Node.js、npm、npx 和 Git。选择适合你操作系统的命令片段并运行,然后点击“我已安装,重新检测”。`,darwin:{intro:`用 Homebrew 一行命令即可装好两个工具。如果没有 brew,请使用官方下载。`,installNodeGit:`通过 Homebrew 安装 Node.js 和 Git`},win32:{intro:`Winget 随 Windows 11 及较新的 Windows 10 提供。打开 PowerShell 或终端并运行:`,installNode:`安装 Node.js LTS`,installGit:`安装 Git`,note:`安装后请重启 Specrails,以便 Windows 刷新 PATH。`},linux:{intro:`使用你发行版的包管理器:`,debian:`Debian / Ubuntu`,fedora:`Fedora / RHEL`},links:{nodeOfficial:`Node.js(官方)`,gitOfficial:`Git(官方)`,gitWindows:`Git for Windows(官方)`},showOtherPlatforms:`显示其他平台`,hideOtherPlatforms:`隐藏其他平台`,recheck:`我已安装,重新检测`,diagnostics:{copy:`复制诊断信息`,copied:`诊断信息已复制`,failed:`复制失败`},corrupted:{title:`应用包已损坏`,description:`一个或多个内置工具(Node.js、Git)无法通过验证。`,body:`此工具随 Specrails 应用内置,无法单独安装。如果你看到此消息,说明应用包可能已损坏,请重新安装 Specrails。`}},r={title:`欢迎使用 <spec>spec</spec><rails>rails</rails>`,description:`Specrails 让你在一个界面中管理多个项目。添加第一个项目即可开始。`,addFirstProject:`添加你的第一个项目`,jiraHint:`将每个项目连接到各自的 Jira 看板——规格在两个方向保持同步。`,mcpHint:`通过安全的本地 MCP 服务器把外部 AI 工具接入 Specrails:默认开启,在设置 → MCP 中管理。`,agentChatHint:`通过聊天操作 Specrails——内置 agent 通过本地 MCP 为你处理 specs、rails 和分析。可从气泡或按 ⌘⇧A 打开。`,localEnginesHint:`只有本地模型?在 设置 → Specrails Agents 中添加一个兼容 OpenAI 的端点,rails、聊天、任务等所有界面都会默认使用它。`},i=JSON.parse(`{"productTour":"产品导览","stepCount":"第 {{current}} 步,共 {{total}} 步","goToStep":"前往第 {{step}} 步:{{label}}","stepLabel":"第 {{step}} 步","dontShowAgain":"不再显示","skipTour":"跳过导览","getStarted":"开始使用","flow":{"architect":"架构师","developer":"开发者","reviewer":"审阅者","describe":"描述","specs":"规格","rails":"轨道","review":"审阅并合并","yourReview":"你的审阅","blueprint":"蓝图","approve":"批准","m1Specs":"里程碑 1 规格","milestones":"里程碑"},"language":{"nav":"语言","title":"选择你的语言","subtitle":"Specrails 支持你的语言","intro":"选择界面使用的语言,即刻生效——包括这个导览。","note":"你随时可以在设置 → 语言中更改。"},"theme":{"nav":"主题","title":"挑选你的外观","subtitle":"内置主题,即点即用","intro":"选择 Specrails 的外观 — 主题在你点击的瞬间生效。","note":"你随时可以在设置 → 外观中更改。"},"welcome":{"nav":"欢迎","title":"欢迎使用 Specrails","subtitle":"用 AI 代理交付软件的本地驾驶舱","intro":"Specrails 把一个想法变成已交付的代码,并让你<b>看见、掌控并信任</b>每一步。描述你想要的,得到精确的规格,用 Claude Code、Codex、Gemini 或 Kimi 在轨道上运行,然后决定合并什么。没有你的确认,什么都不会合并。","coreLoopLabel":"核心循环","flowCaption":"<b>描述 → 规格 → 轨道 → 审阅并合并</b>。每一步实时流式呈现,每个结果都等待你的决定。","missionLabel":"任务模式:默认","missionBody":"一段对话驱动整个应用:代理撰写规格、启动轨道、查看花费,并向你递上决策卡片。<b>你说,它做。</b>","boardLabel":"看板模式:一键切换","boardBody":"经典仪表盘:规格看板、轨道、任务、分析。用左侧栏的开关在两者间切换:<b>同样的项目,同样的数据</b>。","localNote":"<b>100% 本地 · 单用户 · 无需账号。</b>一切都在你的电脑上运行。除非<i>你</i>让代理处理它,你的代码永远不会离开笔记本。","tourNote":"这段快速导览介绍应用能做的一切,大约两分钟。"},"mission":{"nav":"任务模式","title":"你说,代理来做","subtitle":"任务模式是默认界面","intro":"在<b>任务模式</b>下,整个窗口就是与一个代理的对话,它通过自己的 <b>MCP 工具</b>驱动 Specrails:“启动三条优先级最高的规格”、“这周我花了多少?”、“给我写一条深色模式的规格”。一切都是实时的:它工作时,轨道、规格和卡片同步更新。","missionsLabel":"任务与项目","missionsBody":"每段对话都是固定到某个项目(或“主页”代表全部)的任务。在页眉切换任务,回合进行中也能发消息:它们会排队并按顺序执行。","levelsLabel":"牵绳在你手里","levelsBody":"一个实时级别,<b>观察 → 编辑 → 操作 → 自主</b>,用 <shift>Shift</shift> <tab>Tab</tab> 循环切换,限定它能走多远。它永远不会越过你设定的级别。","cardsLabel":"决策卡片","cardsBody":"启动会以固定在输入框上方的实时卡片呈现:轨道进度,然后是创建 PR / 本地集成 / 丢弃,并附上通俗易懂的审阅。回复中的规格编号、任务和循环都可点击。","workspaceLabel":"随手可用的工作区","workspaceBody":"右侧栏可在对话旁打开蓝图、任务、分析、内嵌浏览器、终端和代码浏览器,无需切换上下文。","mcpLabel":"基于本地 MCP 运行","mcpBody":"代理通过 Specrails 内嵌的 MCP 服务器工作:<b>默认开启</b>,仅限本机回环。同一服务器也让你自己的工具(Claude Desktop、Cursor 等)驱动 Specrails;在设置 → MCP 中管理。"},"builder":{"nav":"新项目","title":"从一个想法开始项目","subtitle":"构建器:在写下第一行代码前完成蓝图、规格和里程碑","intro":"添加项目 → <b>新建</b>会让代理变成<b>项目构建器</b>。描述想法;它会简短访谈你(或一键全部决定),提出产品、核心流程、平台、技术栈和里程碑,由你批准或微调。","flowLabel":"从想法到待办","flowCaption":"提交会创建仓库、工作区和里程碑 1 的待办;也可选择创建私有 GitHub 仓库。","cardsLabel":"一键决策","cardsBody":"“给我惊喜”和“批准并生成规格”以卡片形式出现在对话中;你做出的每个决定都会固定在那里作为记录。","specsLabel":"高质量规格,诚实审核","specsBody":"里程碑 1 的规格每次完整撰写两条,随后审核整批(问题、方案、范围、技术考量、六条以上验收标准),确定性门禁会拦下任何单薄的规格。","milestonesLabel":"轨道上的里程碑","milestonesBody":"启动里程碑 1 后,它会以每条最多三个规格的轨道运行,每条都叠加在前一条的分支上。<b>波次检查点</b>会在启动下一条轨道前询问,也可以开启自动继续。","progressLabel":"实时进度","progressBody":"蓝图面板显示真实计数(已交付、审阅中、已完成),只要还有未合并的内容就绝不显示“完成”。后续里程碑基于真实仓库生成。"},"authorSpecs":{"nav":"撰写规格","title":"把想法变成规格","subtitle":"六种方式精确捕捉你想构建的内容","intro":"<b>规格</b>描述你想完成的工作。按当下最合适的方式撰写:从一句话,到让代理替你调研。","agentLabel":"让代理来写","agentBody":"在任务模式下直接描述改动。代理先阅读真实代码,以实时卡片起草一条超级规格,并在你确认后保存。","exploreLabel":"探索:对话式","exploreBody":"在聊天中描述需求;实时草稿每回合重建。预设滑块调节 AI 看到多少项目上下文:从只看你的消息,到整个代码库加上你的 MCP 服务器。","quickLabel":"快速:一步到位","quickBody":"已经知道要什么?一回合生成完整规格。可选加入契约层:精确名称、数据结构、不变量和涉及文件清单,让代理不必重新发明。","websiteLabel":"来自网页","websiteBody":"打开内嵌浏览器。悬停选中元素或拖出矩形,截图、DOM 和应用的 CSS 都成为附件。","smashLabel":"SMASH 拆解大史诗","smashBody":"一键把大规格拆成一组更小的子规格;每个子项的卡片上带有简短摘要。","draftsLabel":"草稿与继续编辑","draftsBody":"把进行中的探索存为草稿工单,稍后继续;任何规格都可在探索中重新打开继续打磨。"},"rails":{"nav":"轨道与审阅","title":"在轨道上运行流水线","subtitle":"隔离的车道,以及真正读得懂的审阅","intro":"<b>轨道</b>是执行车道:最多十二条,按需创建。把规格放到轨道上按 <play>▶ 播放</play>,或<b>全部启动</b>让空闲轨道并行运行。每次运行都在自己的 git worktree 中进行,绝不触碰你的检出。","jobLabel":"每次运行做什么","flowCaption":"每个阶段实时流式呈现。结束时工作留在其分支上,应用询问你怎么办:Specrails 产出 PR,绝不自行合并。","reviewLabel":"先询问的 PR 审阅","reviewBody":"完成的规格停在<b>审阅中</b>。由你选择:创建草稿 PR、本地集成(无需远程)或丢弃。合并后转为已完成。","packetLabel":"审阅包","packetBody":"每次交付一页通俗说明:要求了什么、改了什么、AI 的报告与应用实际验证的对比、成本,附带接受 / 请求修改 / 丢弃。","steerLabel":"运行中随时引导","steerBody":"Claude 运行是交互式的:工作时可提问或改向,并以叙述式进度代替原始日志。","loopsLabel":"构建自己的循环","loopsBody":"<b>Loops</b> 是可视化构建器:串联 AI 步骤、shell 命令和一个<b>循环决策器</b>,重复直到达成目标。内置的 Implement、Batch 和 Freestyle 开箱即用。","profilesLabel":"代理配置与默认值","profilesBody":"决定运行哪些代理以及各自使用的模型:按项目配置、按轨道,或在设置 → Specrails 代理中为整台机器设置一次。","isolationLabel":"多项目,彼此隔离","isolationBody":"每个项目有自己的数据库和队列;Specrails 把自己的文件放在你的主目录下,因此你的仓库保持原样。"},"providers":{"nav":"你的代理","title":"自带代理","subtitle":"Claude Code、Codex、Gemini 与 Kimi 都是一等引擎","intro":"<b>Claude Code</b>、<b>Codex CLI</b>、<b>Gemini CLI</b> 和 <b>Kimi Code</b> 是同一契约下可互换的引擎。本机已安装并登录的都会自动检测并随处可用;无需按项目配置。","calloutLabel":"安装了多个时","calloutBody":"可<b>按规格、按轨道、按任务或按终端启动</b>选择引擎;应用会记住每个项目的上次选择。估算成本标记为 <mono>~</mono>;Kimi 不报告 token 或成本。","table":{"capability":"能力","streamingResume":"流式输出与会话恢复","native":"原生","costReporting":"成本报告","providerBilled":"提供商实际计费","estimated":"估算(~)","unavailable":"不可用","telemetry":"遥测(OTEL)","synthesized":"合成","agentProfiles":"Agent Profile"}},"cost":{"nav":"成本追踪","title":"每一分钱都有迹可循","subtitle":"每次计费调用都被记录并可视化","intro":"每次 AI 调用都会记录生命周期和提供方。若 Kimi 等提供方不报告用量或成本,这些字段会保持不可用。","analyticsLabel":"分析页面","analyticsBody":"消耗速率概览、每日时间线、热门工单、模型分布,以及成本-轮次散点图。可按周期(7 天 / 30 天 / 90 天 / 全部)和来源筛选。","perTicketLabel":"按工单统计支出","perTicketBody":"每个 spec 的详情会显示其成本和轮次,并可深链到按该工单筛选的分析页面。","honestLabel":"诚实的数字","honestBody":"Claude 成本来自提供方;Codex 和 Gemini 的估算值以 <mono>~</mono> 标注。Kimi 的 token 和 USD 成本显示为不可用,而不是零。","budgetsLabel":"预算与告警","budgetsBody":"设置每日预算和单任务成本告警;超限时应用会自动暂停队列。任何数据都可导出为 CSV 或 JSON。"},"workspace":{"nav":"工作区","title":"打造你的工作区","subtitle":"所需的一切,不必离开窗口","terminalLabel":"终端面板","terminalBody":"底部是一个真正的 VS Code 风格终端(<mod>{{mod}}</mod> <j>J</j>):WebGL 渲染、搜索、内嵌图片、拖放路径和 shell 集成。每个项目最多 10 个会话。","codeLabel":"代码浏览器","codeBody":"只读文件树和 Monaco 查看器,带有通俗的 AI 摘要和每个文件的构建故事:哪条规格改动了它、何时、为何。","browserLabel":"内嵌浏览器","browserBody":"在应用内打开链接、PR 和你的开发服务器:桌面版提供原生浏览器面板,弹窗保持 OAuth 登录可用。","integrationsLabel":"集成与 MCP","integrationsBody":"按项目的 MCP 集成市场(内置 Serena 语义导航),以及把应用暴露给你自己的 AI 工具的 Specrails MCP 服务器。","themesLabel":"主题与效果","themesBody":"六个内置主题(specrails、dracula、aurora-light、obsidian-dark、code-rain 和 galaxy),在界面绘制前应用。设置 → 效果可开关代理思考光环等视觉点缀。","chatsLabel":"可最小化的聊天","chatsBody":"把探索或 AI 编辑会话停靠为 dock 芯片,稍后继续;刷新或切换项目也不会丢失。","compareLabel":"并排比较","compareBody":"把规格拖到屏幕边缘,会滑出其他规格的选择器:像平板一样并排审阅两条。","desktopLabel":"桌面或浏览器","desktopBody":"在浏览器中使用 Specrails,或安装已签名的桌面应用(macOS 和 Windows),内置服务器、Node、git 和 GitHub CLI。"},"companion":{"nav":"移动伴侣","title":"随身携带 Specrails","subtitle":"Specrails Companion——你的流水线,尽在掌上","intro":"<b>Specrails Companion</b> 是一款网页应用,地址为 specrails.dev/companion-app——在手机上打开它(或将其添加到主屏幕),即可浏览 Spec 看板、启动或停止 rail、实时跟踪任务日志、随手查看分析数据。无需安装,无需应用商店。","localLabel":"100% 本地,一如这里的一切","localBody":"你的手机直接连接到这台电脑——点对点且加密(WebRTC)。没有云端中转、无需账号,你的代码绝不离开你的设备。","downloadLabel":"在手机上打开","downloadHint":"用手机相机扫码,或在浏览器中打开 specrails.dev/companion-app。","open":"打开 Specrails Companion","pairLabel":"配对只需十秒","pairBody":"在手机上打开 specrails.dev/companion-app,然后在这里前往设置 → 移动伴侣 → 配对网页伴侣,按照屏幕提示操作。"},"moveFast":{"nav":"快速上手","title":"以思考的速度移动","subtitle":"键盘优先,处处可用","paletteLabel":"命令面板","paletteShortcut":"<f>在任意位置按</f> <mod>{{mod}}</mod> <m>+</m> <k>K</k>","paletteBody":"切换项目、运行规格命令、跳转任意页面并查找最近任务,全部支持模糊搜索。","agentLabel":"代理","agentBody":"用 <mod>{{mod}}</mod> <shift>Shift</shift> <a>A</a> 显示/隐藏代理;用 <shift>Shift</shift> <tab>Tab</tab> 切换其级别。","terminalLabel":"终端面板","terminalBody":"用 <mod>{{mod}}</mod> <j>J</j> 切换。","shortcutsLabel":"全部快捷键","shortcutsBody":"按 <q>?</q> 查看完整速查表。","chatLabel":"右侧栏","chatBody":"用 <mod>{{mod}}</mod> <bkey>B</bkey> 切换右侧栏。","projectsLabel":"项目侧栏","projectsBody":"用 <alt>{{alt}}</alt> <mod>{{mod}}</mod> <bkey>B</bkey> 切换左侧 Arc 侧栏。","pagesLabel":"按数字切换页面与项目","pagesBody":"<mod>{{mod}}</mod> <n>1–9</n> 跳转页面;<alt>{{alt}}</alt> <mod>{{mod}}</mod> <n>1–9</n> 切换项目。","outro":"<b>导览到此结束。</b>在任务输入框里写下你想构建的东西,或从左侧栏添加项目。随时可在设置中重新打开本导览。"},"jira":{"label":"Jira 集成","body":"用 <b>Jira 看板</b> 支撑任意项目——每条规格都会成为一个 Jira 事务,双向同步:状态跟随 rail,job 结束时会发布一条评论。在添加项目时按项目配置,或随时在设置中配置。"}}`),a={addProject:e,prerequisites:t,instructions:n,welcome:r,onboarding:i};export{e as addProject,a as default,n as instructions,i as onboarding,t as prerequisites,r as welcome};
@@ -0,0 +1 @@
1
+ var e={title:`Projekt hinzufügen`,description:`Registrieren Sie ein Projektverzeichnis, um es über Specrails zu verwalten.`,noProviderDetected:`Keine KI-CLI gefunden. Installieren Sie zuerst Claude Code, Codex CLI, Gemini CLI oder Kimi Code.`,pathLabel:`Projektpfad`,pathPlaceholder:`/Users/ich/mein-projekt`,pathHint:`Absoluter Pfad zum Projekt-Root`,browseForFolder:`Ordner auswählen`,selectProjectFolder:`Projektordner auswählen`,nameLabel:`Anzeigename`,optional:`(optional)`,namePlaceholder:`Mein Projekt`,nameHint:`Standard ist der Verzeichnisname`,adding:`Wird hinzugefügt…`,submit:`Projekt hinzufügen`,toolsRequired_one:`{{tools}} wird benötigt, um ein Projekt hinzuzufügen`,toolsRequired_other:`{{tools}} werden benötigt, um ein Projekt hinzuzufügen`,errors:{pathRequired:`Projektpfad ist erforderlich`,addFailed:`Projekt konnte nicht hinzugefügt werden`},toasts:{registered:`Projekt „{{name}}“ registriert`},chooser:{description:`Bring ein bestehendes Repository mit oder baue ein ganz neues Projekt aus einer Idee.`,existingTitle:`Bestehendes Projekt`,existingDescription:`Registriere ein Repository, das bereits auf der Festplatte existiert.`,newTitle:`Neues Projekt`,newDescription:`Beschreibe eine Idee und erhalte ein aufgesetztes Repo mit einem Meilenstein-1-Backlog.`}},t={corruptedBundle:`Bundle beschädigt – App neu installieren`,notInstalled:`nicht installiert`,failedToExecute:`gefunden, aber Ausführung fehlgeschlagen`,failedToExecuteAt:`unter {{path}} gefunden, aber Ausführung fehlgeschlagen`,failedToExecuteWithError:`gefunden, aber Ausführung fehlgeschlagen ({{error}})`,failedToExecuteAtWithError:`unter {{path}} gefunden, aber Ausführung fehlgeschlagen ({{error}})`,needsMinimum:`{{version}} gefunden – benötigt {{minVersion}}+`,unknownVersion:`unbekannt`,installedLabel:`installiert`,verifyError:`Entwickler-Tools konnten lokal nicht überprüft werden – die Installation validiert sie.`,allDetected:`Alle erforderlichen Tools erkannt`,bundleCorruptedTitle:`App-Bundle beschädigt`,toolsRequired_one:`{{count}} Entwickler-Tool erforderlich`,toolsRequired_other:`{{count}} Entwickler-Tools erforderlich`,reinstallHint:`Installieren Sie die Specrails-App neu, um die mitgelieferten Tools wiederherzustellen.`,installMissingHint:`Installieren Sie die fehlenden Tools, um fortzufahren.`,moreInfo:`Mehr Infos`,bundledBadge:`mitgeliefert`,optional:`optional`,ghNoAuth:"Nicht angemeldet — führe `gh auth login` aus"},n={title:`Entwickler-Tools installieren`,description:`SpecRails benötigt Node.js, npm, npx und Git im PATH. Wählen Sie das Snippet für Ihr Betriebssystem, führen Sie es aus und klicken Sie dann auf „Installiert, erneut prüfen“.`,darwin:{intro:`Mit Homebrew bekommen Sie beide Tools in einer Zeile. Ohne brew nutzen Sie die offiziellen Downloads.`,installNodeGit:`Node.js und Git über Homebrew installieren`},win32:{intro:`Winget ist in Windows 11 und aktuellen Windows-10-Versionen enthalten. Öffnen Sie PowerShell oder Terminal und führen Sie aus:`,installNode:`Node.js LTS installieren`,installGit:`Git installieren`,note:`Starten Sie Specrails nach der Installation neu, damit Windows den PATH aktualisiert.`},linux:{intro:`Verwenden Sie den Paketmanager Ihrer Distribution:`,debian:`Debian / Ubuntu`,fedora:`Fedora / RHEL`},links:{nodeOfficial:`Node.js (offiziell)`,gitOfficial:`Git (offiziell)`,gitWindows:`Git für Windows (offiziell)`},showOtherPlatforms:`Andere Plattformen anzeigen`,hideOtherPlatforms:`Andere Plattformen ausblenden`,recheck:`Installiert, erneut prüfen`,diagnostics:{copy:`Diagnose kopieren`,copied:`Diagnose kopiert`,failed:`Kopieren fehlgeschlagen`},corrupted:{title:`App-Bundle beschädigt`,description:`Mindestens ein mitgeliefertes Tool (Node.js, Git) konnte nicht verifiziert werden.`,body:`Dieses Tool ist in der Specrails-App enthalten und kann nicht separat installiert werden. Wenn Sie diese Meldung sehen, ist das App-Bundle möglicherweise beschädigt. Bitte installieren Sie Specrails neu.`}},r={title:`Willkommen bei <spec>spec</spec><rails>rails</rails>`,description:`Specrails verwaltet mehrere Projekte über eine einzige Oberfläche. Fügen Sie Ihr erstes Projekt hinzu, um loszulegen.`,addFirstProject:`Erstes Projekt hinzufügen`,jiraHint:`Verbinde jedes Projekt mit seinem eigenen Jira-Board — Specs bleiben in beide Richtungen synchron.`,mcpHint:`Verbinde externe KI-Tools über einen sicheren lokalen MCP-Server mit Specrails: standardmäßig an, verwalte ihn unter Einstellungen → MCP.`,agentChatHint:`Steuere Specrails per Chat — ein integrierter Agent verwaltet Specs, Rails und Analysen für dich über den lokalen MCP. Öffne ihn über die Blase oder mit ⌘⇧A.`,localEnginesHint:`Nur ein lokales Modell? Füge unter Einstellungen → Specrails Agents einen OpenAI-kompatiblen Endpoint hinzu — Rails, Chat und Missionen laufen dann standardmäßig darauf.`},i=JSON.parse(`{"productTour":"Produkttour","stepCount":"Schritt {{current}} von {{total}}","goToStep":"Zu Schritt {{step}}: {{label}}","stepLabel":"Schritt {{step}}","dontShowAgain":"Nicht mehr anzeigen","skipTour":"Tour überspringen","getStarted":"Loslegen","flow":{"architect":"Architekt","developer":"Entwickler","reviewer":"Reviewer","describe":"Beschreiben","specs":"Specs","rails":"Rails","review":"Prüfen & mergen","yourReview":"Dein Review","blueprint":"Blueprint","approve":"Freigeben","m1Specs":"Specs für Meilenstein 1","milestones":"Meilensteine"},"language":{"nav":"Sprache","title":"Wählen Sie Ihre Sprache","subtitle":"Specrails spricht Ihre Sprache","intro":"Wählen Sie die Sprache für die Oberfläche. Sie gilt sofort – diese Tour eingeschlossen.","note":"Sie können sie jederzeit unter Einstellungen → Sprache ändern."},"theme":{"nav":"Theme","title":"Wählen Sie Ihren Look","subtitle":"Integrierte Themes, sofort angewendet","intro":"Wählen Sie, wie Specrails aussehen soll — das Theme wird sofort beim Klick angewendet.","note":"Sie können es jederzeit unter Einstellungen → Erscheinungsbild ändern."},"welcome":{"nav":"Willkommen","title":"Willkommen bei Specrails","subtitle":"Dein lokales Cockpit, um Software mit KI-Agenten auszuliefern","intro":"Specrails macht aus einer Idee ausgelieferten Code, und du kannst jeden Schritt <b>sehen, steuern und prüfen</b>. Beschreibe, was du willst, erhalte präzise Specs, führe sie auf Rails mit Claude Code, Codex, Gemini oder Kimi aus und entscheide, was gemergt wird. Nichts wird ohne dich gemergt.","coreLoopLabel":"Der Kernzyklus","flowCaption":"<b>Beschreiben → Specs → Rails → Prüfen & mergen</b>. Jeder Schritt streamt live, jedes Ergebnis wartet auf deine Entscheidung.","missionLabel":"Missionsmodus: der Standard","missionBody":"Eine Unterhaltung steuert die ganze App: der Agent schreibt Specs, startet Rails, prüft Ausgaben und reicht dir Entscheidungskarten. <b>Du sprichst, er handelt.</b>","boardLabel":"Board-Modus: einen Schalter entfernt","boardBody":"Das klassische Dashboard: Spec-Board, Rails, Jobs, Analytik. Wechsle mit dem Schalter in der linken Seitenleiste: <b>gleiche Projekte, gleiche Daten</b>.","localNote":"<b>100 % lokal · ein Nutzer · keine Konten.</b> Alles läuft auf deinem Rechner. Dein Code verlässt den Laptop nur, wenn <i>du</i> einen Agenten darauf startest.","tourNote":"Diese kurze Tour zeigt alles, was die App kann: etwa zwei Minuten."},"mission":{"nav":"Missionsmodus","title":"Sprich, der Agent handelt","subtitle":"Der Missionsmodus ist die Standardoberfläche","intro":"Im <b>Missionsmodus</b> ist das ganze Fenster eine Unterhaltung mit einem Agenten, der Specrails über seine eigenen <b>MCP-Tools</b> steuert: „starte die drei wichtigsten Specs“, „wie viel habe ich diese Woche ausgegeben?“, „schreib mir eine Spec für den Dark Mode“. Alles passiert live: Rails, Specs und Karten aktualisieren sich, während er arbeitet.","missionsLabel":"Missionen & Projekte","missionsBody":"Jede Unterhaltung ist eine Mission, an ein Projekt geheftet (oder an Home für alles). Wechsle Missionen im Kopfbereich, schick Nachrichten mitten im Zug: sie reihen sich ein und laufen der Reihe nach.","levelsLabel":"Du hältst die Leine","levelsBody":"Eine Live-Stufe, <b>Beobachten → Bearbeiten → Bedienen → Autonom</b>, mit <shift>Shift</shift> <tab>Tab</tab> durchgeschaltet, begrenzt, wie weit er gehen darf. Er handelt nie über der gesetzten Stufe.","cardsLabel":"Entscheidungskarten","cardsBody":"Starts erscheinen als Live-Karten über dem Composer: Rail-Fortschritt, dann PR erstellen / Lokal integrieren / Verwerfen, mit einem Review in Klartext. Spec-Nummern, Jobs und Loops in Antworten sind anklickbar.","workspaceLabel":"Ein Arbeitsbereich nebenan","workspaceBody":"Die rechte Seitenleiste öffnet Blueprint, Jobs, Analytik, einen eingebetteten Browser, das Terminal und den Code-Explorer neben der Unterhaltung, ohne Kontextwechsel.","mcpLabel":"Läuft über das lokale MCP","mcpBody":"Der Agent arbeitet über den eingebetteten Specrails-MCP-Server: <b>standardmäßig an</b>, nur Loopback. Derselbe Server lässt deine eigenen Tools (Claude Desktop, Cursor …) Specrails steuern; verwalte ihn unter Einstellungen → MCP."},"builder":{"nav":"Neues Projekt","title":"Ein Projekt aus einer Idee starten","subtitle":"Der Builder: Blueprint, Specs und Meilensteine, bevor eine Zeile Code existiert","intro":"Projekt hinzufügen → <b>Neu</b> macht den Agenten zum <b>Projekt-Builder</b>. Beschreibe die Idee; er fragt kurz nach (oder entscheidet alles mit einem Klick), schlägt Produkt, Kernablauf, Plattform, Stack und Meilensteine vor, und du gibst frei oder passt an.","flowLabel":"Von der Idee zum Backlog","flowCaption":"Der Commit legt Repository, Arbeitsbereich und das Backlog für Meilenstein 1 an; optional auch ein privates GitHub-Repo.","cardsLabel":"Entscheidungen mit einem Klick","cardsBody":"„Überrasch mich“ und „Freigeben und Specs erzeugen“ erscheinen als Karten im Verlauf; jede getroffene Entscheidung bleibt dort als Nachweis stehen.","specsLabel":"Premium-Specs, ehrlich geprüft","specsBody":"Die Specs für Meilenstein 1 werden vollständig je zwei auf einmal geschrieben, dann wird der ganze Stapel geprüft (Problem, Lösung, Umfang, technische Überlegungen, sechs oder mehr Akzeptanzkriterien) und ein deterministisches Gate blockiert alles Dünne.","milestonesLabel":"Meilensteine auf Rails","milestonesBody":"Starte Meilenstein 1 und er läuft als Rails mit bis zu drei Specs, jedes auf dem Branch des vorigen gestapelt. <b>Wellen-Checkpoints</b> fragen vor jedem nächsten Rail, oder schalte automatisches Fortfahren ein.","progressLabel":"Live-Fortschritt","progressBody":"Das Blueprint-Panel zeigt echte Zahlen (geliefert, im Review, fertig), nie „abgeschlossen“, solange etwas ungemergt ist. Spätere Meilensteine werden gegen das echte Repository erzeugt."},"authorSpecs":{"nav":"Specs schreiben","title":"Ideen zu Specs machen","subtitle":"Sechs Wege, genau festzuhalten, was gebaut werden soll","intro":"Eine <b>Spec</b> beschreibt Arbeit, die erledigt werden soll. Schreib sie, wie es gerade passt: vom Einzeiler bis zum Agenten, der für dich recherchiert.","agentLabel":"Den Agenten fragen","agentBody":"Im Missionsmodus beschreibst du einfach die Änderung. Der Agent liest zuerst den echten Code, entwirft eine Super-Spec als Live-Karte und speichert sie, wenn du es sagst.","exploreLabel":"Explore: im Gespräch","exploreBody":"Beschreibe im Chat, was du willst; ein Live-Entwurf baut sich in jedem Zug neu auf. Ein Preset-Regler bestimmt, wie viel Projektkontext die KI sieht: von nur deiner Nachricht bis zur ganzen Codebasis plus deinen MCP-Servern.","quickLabel":"Quick: in einem Zug","quickBody":"Du weißt schon, was du willst? Erzeuge eine vollständige Spec in einem Zug. Optional mit Contract Layer: exakte Namen, Datenformen, Invarianten und Dateiliste, damit die Agenten nichts neu erfinden.","websiteLabel":"Von einer Website","websiteBody":"Öffnet einen eingebetteten Browser. Wähle ein Element oder zieh ein Rechteck: Screenshot, DOM und angewandtes CSS werden zu Anhängen.","smashLabel":"Ein großes Epic SMASHen","smashBody":"Zerlege eine große Spec mit einem Klick in eine Familie kleinerer Sub-Specs; jedes Kind trägt eine Kurzfassung auf seiner Karte.","draftsLabel":"Entwürfe & Weiterbearbeiten","draftsBody":"Parke eine laufende Exploration als Entwurfs-Ticket und mach später weiter; öffne jede Spec wieder in Explore, um sie zu verfeinern."},"rails":{"nav":"Rails & Review","title":"Die Pipeline auf Rails ausführen","subtitle":"Isolierte Spuren, dann ein Review, das man wirklich lesen kann","intro":"<b>Rails</b> sind Ausführungsspuren: bis zu zwölf, nach Bedarf erstellt. Lege Specs auf ein Rail und drücke <play>▶ Play</play>, oder <b>Alle starten</b> für freie Rails parallel. Jeder Lauf arbeitet im eigenen Git-Worktree, nie in deinem Checkout.","jobLabel":"Was jeder Lauf tut","flowCaption":"Jede Phase streamt live. Am Ende bleibt die Arbeit auf ihrem Branch und die App fragt dich, was zu tun ist: Specrails erzeugt PRs, es mergt nie von selbst.","reviewLabel":"PR-Review, das zuerst fragt","reviewBody":"Fertige Specs landen <b>Im Review</b>. Du wählst: Draft-PR erstellen, lokal integrieren (ohne Remote) oder verwerfen. Der Merge setzt sie auf Fertig.","packetLabel":"Review-Paket","packetBody":"Eine Klartext-Seite pro Lieferung: was verlangt war, was sich geändert hat, was die KI berichtet gegenüber dem, was die App verifiziert hat, die Kosten, mit Annehmen / Änderungen anfordern / Verwerfen.","steerLabel":"Mitten im Lauf steuern","steerBody":"Claude-Läufe sind interaktiv: stelle Fragen oder lenke um, während sie arbeiten, und folge einem erzählten Fortschritt statt roher Logs.","loopsLabel":"Eigene Loops bauen","loopsBody":"<b>Loops</b> ist ein visueller Builder: verkette KI-Schritte, Shell-Befehle und einen <b>Loop Decider</b>, der wiederholt, bis das Ziel erreicht ist. Implement, Batch und Freestyle sind fertig dabei.","profilesLabel":"Agentenprofile & Vorgaben","profilesBody":"Lege fest, welche Agenten laufen und welches Modell jeder nutzt: pro Projektprofil, pro Rail oder einmal für die ganze Maschine unter Einstellungen → Specrails-Agenten.","isolationLabel":"Viele Projekte, isoliert","isolationBody":"Jedes Projekt hat eigene Datenbank und Warteschlange; dein Repository bleibt unberührt, weil Specrails seine Dateien in deinem Home-Ordner hält."},"providers":{"nav":"Dein Agent","title":"Bring deinen eigenen Agenten","subtitle":"Claude Code, Codex, Gemini und Kimi als vollwertige Engines","intro":"<b>Claude Code</b>, <b>Codex CLI</b>, <b>Gemini CLI</b> und <b>Kimi Code</b> sind austauschbare Engines hinter einem Vertrag. Was auf dieser Maschine installiert und angemeldet ist, wird automatisch erkannt und überall angeboten; nichts pro Projekt zu konfigurieren.","calloutLabel":"Wenn mehrere installiert sind","calloutBody":"Wähle die Engine <b>pro Spec, pro Rail, pro Mission oder pro Terminalstart</b>; die App merkt sich deine letzte Wahl pro Projekt. Geschätzte Kosten sind mit <mono>~</mono> markiert; Kimi meldet weder Tokens noch Kosten.","table":{"capability":"Fähigkeit","streamingResume":"Streaming & Sitzungsfortsetzung","native":"Nativ","costReporting":"Kostenberichte","providerBilled":"Anbieterseitig abgerechnet","estimated":"Geschätzt (~)","unavailable":"Nicht verfügbar","telemetry":"Telemetrie (OTEL)","synthesized":"Synthetisiert","agentProfiles":"Agentenprofile"}},"cost":{"nav":"Kosten verfolgen","title":"Jeden Cent im Blick","subtitle":"Jeder kostenpflichtige Aufruf, erfasst und visualisiert","intro":"Jeder KI-Aufruf erfasst Lebenszyklus und Anbieter. Nutzungs- und Kostendaten bleiben nicht verfügbar, wenn ein Anbieter wie Kimi sie nicht meldet.","analyticsLabel":"Analytics-Seite","analyticsBody":"Ein Burn-Rate-Hero, Tages-Timeline, Top-Tickets, Modellaufschlüsselung und ein Kosten-vs.-Turns-Scatter. Filtern nach Zeitraum (7d / 30d / 90d / Alle) und nach Bereich.","perTicketLabel":"Ausgaben pro Ticket","perTicketBody":"Die Detailansicht jeder Spec zeigt, was sie gekostet hat und wie viele Turns sie brauchte – mit Deep-Link in die auf dieses Ticket gefilterte Analytics-Ansicht.","honestLabel":"Ehrliche Zahlen","honestBody":"Claude-Kosten werden vom Anbieter gemeldet; Codex und Gemini können geschätzt und mit <mono>~</mono> markiert werden. Bei Kimi sind Tokens und USD-Kosten nicht verfügbar, nicht null.","budgetsLabel":"Budgets & Alarme","budgetsBody":"Legen Sie ein Tagesbudget und einen Kostenalarm pro Job fest; die App pausiert die Queue automatisch, wenn die Grenze überschritten wird. Exportieren Sie alles als CSV oder JSON."},"workspace":{"nav":"Arbeitsbereich","title":"Mach es zu deinem Arbeitsbereich","subtitle":"Alles Nötige, ohne das Fenster zu verlassen","terminalLabel":"Terminal-Panel","terminalBody":"Ein echtes Terminal im VS-Code-Stil unten (<mod>{{mod}}</mod> <j>J</j>): WebGL-Rendering, Suche, Inline-Bilder, Pfade per Drag & Drop und Shell-Integration. Bis zu 10 Sitzungen pro Projekt.","codeLabel":"Code-Explorer","codeBody":"Ein schreibgeschützter Dateibaum und Monaco-Viewer mit KI-Zusammenfassungen in Klartext und einer Entstehungsgeschichte pro Datei: welche Spec sie berührt hat, wann und warum.","browserLabel":"Eingebetteter Browser","browserBody":"Öffne Links, PRs und deinen Dev-Server in der App: ein nativer Browser-Bereich in der Desktop-Version, mit Popups, die OAuth-Logins erhalten.","integrationsLabel":"Integrationen & MCP","integrationsBody":"Ein Marktplatz für MCP-Integrationen pro Projekt (Serenas semantische Navigation ist dabei), plus der Specrails-MCP-Server, der die App deinen eigenen KI-Tools öffnet.","themesLabel":"Themes & Effekte","themesBody":"Sechs eingebaute Themes (specrails, dracula, aurora-light, obsidian-dark, code-rain und galaxy), angewandt bevor die UI zeichnet. Einstellungen → Effekte schaltet visuelle Akzente wie den Denk-Halo des Agenten.","chatsLabel":"Minimierbare Chats","chatsBody":"Parke eine Explore- oder KI-Edit-Sitzung als Dock-Chip und nimm sie später wieder auf; geht bei Reloads oder Projektwechseln nie verloren.","compareLabel":"Nebeneinander vergleichen","compareBody":"Zieh eine Spec an den Bildschirmrand und eine Auswahl deiner anderen Specs fährt herein: prüfe zwei zusammen, Tablet-Stil.","desktopLabel":"Desktop oder Browser","desktopBody":"Nutze Specrails im Browser oder hol dir die signierte Desktop-App (macOS & Windows), die Server, Node, git und GitHub-CLI mitbringt."},"companion":{"nav":"Mobiler Companion","title":"Nehmen Sie Specrails überallhin mit","subtitle":"Specrails Companion – Ihre Pipelines auf Ihrem Smartphone","intro":"<b>Specrails Companion</b> ist eine Web-App unter specrails.dev/companion-app – öffnen Sie sie auf Ihrem Smartphone (oder fügen Sie sie zu Ihrem Home-Bildschirm hinzu), um das Specs-Board zu durchstöbern, Rails zu starten und zu stoppen, Live-Job-Logs zu verfolgen und einen Blick auf die Analytics zu werfen. Keine Installation, kein App-Store.","localLabel":"100 % lokal, wie alles andere","localBody":"Ihr Smartphone verbindet sich direkt mit diesem Rechner – Peer-to-Peer und verschlüsselt (WebRTC). Kein Cloud-Relay, kein Konto, und Ihr Code verlässt nie Ihre Geräte.","downloadLabel":"Auf Ihrem Smartphone öffnen","downloadHint":"Scannen Sie den Code mit der Kamera Ihres Smartphones oder öffnen Sie specrails.dev/companion-app im Browser.","open":"Specrails Companion öffnen","pairLabel":"Die Kopplung dauert zehn Sekunden","pairBody":"Öffnen Sie auf Ihrem Smartphone specrails.dev/companion-app und gehen Sie dann hier zu Einstellungen → Mobiler Companion → Web-Companion koppeln und folgen Sie den Schritten am Bildschirm."},"moveFast":{"nav":"Schnell sein","title":"Bewege dich in Gedankengeschwindigkeit","subtitle":"Tastatur zuerst, überall","paletteLabel":"Befehlspalette","paletteShortcut":"<f>Drücke</f> <mod>{{mod}}</mod> <m>+</m> <k>K</k> <m>überall</m>","paletteBody":"Projekte wechseln, Spec-Befehle ausführen, zu jeder Seite springen und aktuelle Jobs finden, alles mit unscharfer Suche.","agentLabel":"Agent","agentBody":"Agent ein-/ausblenden mit <mod>{{mod}}</mod> <shift>Shift</shift> <a>A</a>; Stufe durchschalten mit <shift>Shift</shift> <tab>Tab</tab>.","terminalLabel":"Terminal-Panel","terminalBody":"Umschalten mit <mod>{{mod}}</mod> <j>J</j>.","shortcutsLabel":"Alle Kurzbefehle","shortcutsBody":"Drücke <q>?</q> für die komplette Übersicht.","chatLabel":"Rechte Seitenleiste","chatBody":"Rechte Seitenleiste umschalten mit <mod>{{mod}}</mod> <bkey>B</bkey>.","projectsLabel":"Projektleiste","projectsBody":"Linke Arc-Leiste umschalten mit <alt>{{alt}}</alt> <mod>{{mod}}</mod> <bkey>B</bkey>.","pagesLabel":"Seiten & Projekte per Nummer","pagesBody":"<mod>{{mod}}</mod> <n>1–9</n> springt zu einer Seite; <alt>{{alt}}</alt> <mod>{{mod}}</mod> <n>1–9</n> wechselt das Projekt.","outro":"<b>Das war die Tour.</b> Tippe in den Missions-Composer, was du bauen willst, oder füge links ein Projekt hinzu. Diese Tour lässt sich jederzeit in den Einstellungen erneut öffnen."},"jira":{"label":"Jira-Integration","body":"Hinterlege jedes Projekt mit einem <b>Jira-Board</b> — jede Spec wird zu einem Jira-Vorgang, in beide Richtungen synchronisiert: Der Status folgt dem Rail und am Ende eines Jobs wird ein Kommentar gepostet. Richte es pro Projekt beim Hinzufügen ein oder jederzeit in den Einstellungen."}}`),a={addProject:e,prerequisites:t,instructions:n,welcome:r,onboarding:i};export{e as addProject,a as default,n as instructions,i as onboarding,t as prerequisites,r as welcome};
@@ -0,0 +1 @@
1
+ var e={title:`プロジェクトを追加`,description:`プロジェクトディレクトリを登録して Specrails から管理します。`,noProviderDetected:`AI CLI が見つかりません。まず Claude Code、Codex CLI、Gemini CLI、Kimi Code のいずれかをインストールしてください。`,pathLabel:`プロジェクトパス`,pathPlaceholder:`/Users/me/my-project`,pathHint:`プロジェクトルートへの絶対パス`,browseForFolder:`フォルダを参照`,selectProjectFolder:`プロジェクトフォルダを選択`,nameLabel:`表示名`,optional:`(任意)`,namePlaceholder:`マイプロジェクト`,nameHint:`デフォルトはディレクトリ名`,adding:`追加中…`,submit:`プロジェクトを追加`,toolsRequired_one:`プロジェクトの追加には {{tools}} が必要です`,toolsRequired_other:`プロジェクトの追加には {{tools}} が必要です`,errors:{pathRequired:`プロジェクトパスは必須です`,addFailed:`プロジェクトの追加に失敗しました`},toasts:{registered:`プロジェクト「{{name}}」を登録しました`},chooser:{description:`既存のリポジトリを取り込むか、アイデアから新しいプロジェクトを作りましょう。`,existingTitle:`既存プロジェクト`,existingDescription:`ディスク上に既にあるリポジトリを登録します。`,newTitle:`新規プロジェクト`,newDescription:`アイデアを伝えると、マイルストーン1のバックログ付きでリポジトリが用意されます。`}},t={corruptedBundle:`バンドル破損 — アプリを再インストールしてください`,notInstalled:`未インストール`,failedToExecute:`見つかりましたが実行できませんでした`,failedToExecuteAt:`{{path}} に見つかりましたが実行できませんでした`,failedToExecuteWithError:`見つかりましたが実行できませんでした({{error}})`,failedToExecuteAtWithError:`{{path}} に見つかりましたが実行できませんでした({{error}})`,needsMinimum:`{{version}} が見つかりました — {{minVersion}} 以上が必要です`,unknownVersion:`不明`,installedLabel:`インストール済み`,verifyError:`開発者ツールをローカルで検証できませんでした — インストール時に検証されます。`,allDetected:`必要なツールはすべて検出されました`,bundleCorruptedTitle:`アプリバンドルが破損しています`,toolsRequired_one:`{{count}} 個の開発者ツールが必要です`,toolsRequired_other:`{{count}} 個の開発者ツールが必要です`,reinstallHint:`Specrails アプリを再インストールしてバンドルツールを復元してください。`,installMissingHint:`続行するには不足しているツールをインストールしてください。`,moreInfo:`詳細`,bundledBadge:`バンドル`,optional:`任意`,ghNoAuth:"未ログイン — `gh auth login` を実行してください"},n={title:`開発者ツールをインストール`,description:`SpecRails には PATH 上の Node.js、npm、npx、Git が必要です。お使いの OS のスニペットを選んで実行し、「インストールしました。再チェック」をクリックしてください。`,darwin:{intro:`Homebrew なら1行で両方のツールをインストールできます。brew がない場合は公式ダウンロードを利用してください。`,installNodeGit:`Homebrew で Node.js と Git をインストール`},win32:{intro:`Winget は Windows 11 および最近の Windows 10 に同梱されています。PowerShell またはターミナルを開いて実行してください:`,installNode:`Node.js LTS をインストール`,installGit:`Git をインストール`,note:`インストール後、Windows が PATH を更新するように Specrails を再起動してください。`},linux:{intro:`ディストリビューションのパッケージマネージャーを使用してください:`,debian:`Debian / Ubuntu`,fedora:`Fedora / RHEL`},links:{nodeOfficial:`Node.js(公式)`,gitOfficial:`Git(公式)`,gitWindows:`Git for Windows(公式)`},showOtherPlatforms:`他のプラットフォームを表示`,hideOtherPlatforms:`他のプラットフォームを非表示`,recheck:`インストールしました。再チェック`,diagnostics:{copy:`診断情報をコピー`,copied:`診断情報をコピーしました`,failed:`コピーに失敗しました`},corrupted:{title:`アプリバンドルが破損しています`,description:`バンドルされたツール(Node.js、Git)の一部を検証できませんでした。`,body:`このツールは Specrails アプリにバンドルされており、個別にインストールできません。このメッセージが表示される場合、アプリバンドルが破損している可能性があります。Specrails を再インストールしてください。`}},r={title:`<spec>spec</spec><rails>rails</rails> へようこそ`,description:`Specrails は複数のプロジェクトを単一のインターフェースで管理します。最初のプロジェクトを追加して始めましょう。`,addFirstProject:`最初のプロジェクトを追加`,jiraHint:`各プロジェクトを専用の Jira ボードに接続 — スペックは双方向で同期され続けます。`,mcpHint:`安全なローカル MCP サーバー経由で外部の AI ツールを Specrails に接続します。既定でオン、設定 → MCP で管理します。`,agentChatHint:`チャットで Specrails を操作 — 内蔵エージェントがローカル MCP を通じて specs・rails・分析をあなたの代わりに処理します。バブルから、または ⌘⇧A で開けます。`,localEnginesHint:`ローカルモデルしかない場合は、設定 → Specrails Agents で OpenAI 互換のエンドポイントを追加してください。レール、チャット、ミッションなどすべての画面が既定でそれを使います。`},i=JSON.parse(`{"productTour":"プロダクトツアー","stepCount":"ステップ {{current}} / {{total}}","goToStep":"ステップ {{step}} へ移動: {{label}}","stepLabel":"ステップ {{step}}","dontShowAgain":"今後表示しない","skipTour":"ツアーをスキップ","getStarted":"始める","flow":{"architect":"アーキテクト","developer":"デベロッパー","reviewer":"レビュアー","describe":"記述","specs":"スペック","rails":"レール","review":"レビューとマージ","yourReview":"あなたのレビュー","blueprint":"ブループリント","approve":"承認","m1Specs":"マイルストーン1のスペック","milestones":"マイルストーン"},"language":{"nav":"言語","title":"言語を選ぶ","subtitle":"Specrailsはあなたの言語に対応","intro":"インターフェースで使いたい言語を選んでください。即座に適用されます — このツアーも含めて。","note":"設定 → 言語でいつでも変更できます。"},"theme":{"nav":"テーマ","title":"好みの見た目を選ぶ","subtitle":"内蔵テーマを即座に適用","intro":"Specrailsの見た目を選びましょう — テーマはクリックした瞬間に適用されます。","note":"設定 → 外観でいつでも変更できます。"},"welcome":{"nav":"ようこそ","title":"Specrails へようこそ","subtitle":"AI エージェントでソフトウェアを届けるローカルのコックピット","intro":"Specrails はアイデアをリリース済みのコードに変え、すべてのステップを<b>見て、導き、信頼</b>できるようにします。欲しいものを記述し、正確なスペックを得て、Claude Code・Codex・Gemini・Kimi でレール上に実行し、何をマージするかを決めます。あなたなしでは何もマージされません。","coreLoopLabel":"中心のループ","flowCaption":"<b>記述 → スペック → レール → レビューとマージ</b>。各ステップはライブで流れ、各結果はあなたの判断を待ちます。","missionLabel":"ミッションモード:既定","missionBody":"ひとつの会話がアプリ全体を動かします。エージェントがスペックを書き、レールを起動し、コストを確認し、決定カードを差し出します。<b>あなたが話し、エージェントが動く。</b>","boardLabel":"ボードモード:スイッチひとつ","boardBody":"従来のダッシュボード:スペックボード、レール、ジョブ、分析。左サイドバーのスイッチで切り替えます。<b>同じプロジェクト、同じデータ</b>です。","localNote":"<b>100% ローカル · シングルユーザー · アカウント不要。</b>すべてあなたのマシンで動きます。<i>あなた</i>がエージェントを実行しない限り、コードはノート PC を離れません。","tourNote":"このクイックツアーではアプリでできることをひと通り紹介します。約 2 分です。"},"mission":{"nav":"ミッションモード","title":"話すだけ、エージェントが動く","subtitle":"ミッションモードが既定の画面です","intro":"<b>ミッションモード</b>では、ウィンドウ全体が、Specrails を自身の <b>MCP ツール</b>で操作するエージェントとの会話になります。「優先度上位 3 件のスペックを起動して」「今週いくら使った?」「ダークモードのスペックを書いて」。すべてライブで、作業中にレール・スペック・カードが更新されます。","missionsLabel":"ミッションとプロジェクト","missionsBody":"各会話はプロジェクト(または全体を表すホーム)にピン留めされたミッションです。ヘッダーでミッションを切り替え、ターン中でもメッセージを送れます。キューに入り順番に実行されます。","levelsLabel":"手綱はあなたの手に","levelsBody":"ライブのレベル、<b>観察 → 編集 → 操作 → 自律</b>を <shift>Shift</shift> <tab>Tab</tab> で切り替え、どこまで動けるかを制限します。設定したレベルを超えて行動することはありません。","cardsLabel":"決定カード","cardsBody":"起動はコンポーザー上部にピン留めされたライブカードとして表示されます。レールの進捗、その後 PR 作成 / ローカル統合 / 破棄と、平易な言葉のレビュー。返答内のスペック番号・ジョブ・ループはクリック可能です。","workspaceLabel":"すぐ横のワークスペース","workspaceBody":"右サイドバーから、会話の隣にブループリント、ジョブ、分析、内蔵ブラウザ、ターミナル、コードエクスプローラーを開けます。コンテキストの切り替えは不要です。","mcpLabel":"ローカル MCP 上で動作","mcpBody":"エージェントは Specrails 内蔵の MCP サーバーを通じて動きます。<b>既定でオン</b>、ループバックのみ。同じサーバーで自分のツール(Claude Desktop、Cursor など)から Specrails を操作できます。設定 → MCP で管理します。"},"builder":{"nav":"新規プロジェクト","title":"アイデアからプロジェクトを始める","subtitle":"ビルダー:コードを 1 行も書く前にブループリント、スペック、マイルストーンを","intro":"プロジェクトを追加 → <b>新規</b>で、エージェントが<b>プロジェクトビルダー</b>になります。アイデアを記述すると、短いインタビュー(またはワンクリックで全決定)のうえ、製品・コアフロー・プラットフォーム・スタック・マイルストーンを提案し、あなたが承認または調整します。","flowLabel":"アイデアからバックログへ","flowCaption":"コミットでリポジトリ、ワークスペース、マイルストーン1のバックログが作られます。任意でプライベートな GitHub リポジトリも。","cardsLabel":"ワンクリックの決定","cardsBody":"「おまかせ」と「承認してスペックを生成」はスレッド内のカードとして表示され、下した決定は記録としてそこに固定されます。","specsLabel":"プレミアムなスペックを正直に監査","specsBody":"マイルストーン1のスペックは 2 件ずつ完全に書かれ、その後バッチ全体を監査します(課題、解決策、範囲、技術的考慮、6 件以上の受け入れ基準)。決定的なゲートが薄い内容を止めます。","milestonesLabel":"レール上のマイルストーン","milestonesBody":"マイルストーン1を起動すると、最大 3 スペックのレールとして実行され、それぞれ前のブランチに積み上がります。<b>ウェーブのチェックポイント</b>が次のレールごとに確認します。自動続行も選べます。","progressLabel":"ライブの進捗","progressBody":"ブループリントパネルは実数(納品済み、レビュー中、完了)を表示し、未マージのものがある限り「完了」とは言いません。以降のマイルストーンは実際のリポジトリに対して生成されます。"},"authorSpecs":{"nav":"スペックを書く","title":"アイデアをスペックに","subtitle":"作りたいものを正確に捉える 6 つの方法","intro":"<b>スペック</b>はやってほしい作業の記述です。その時に合う方法で書きましょう。一行のメモから、エージェントに調査させるまで。","agentLabel":"エージェントに頼む","agentBody":"ミッションモードで変更内容を記述するだけ。エージェントは先に実際のコードを読み、ライブカードとしてスーパースペックを起草し、あなたの合図で保存します。","exploreLabel":"Explore:対話で","exploreBody":"チャットで要望を記述すると、ライブの下書きが毎ターン組み直されます。プリセットのスライダーで AI に見せるプロジェクトの文脈量を調整できます。メッセージのみから、コードベース全体+MCP サーバーまで。","quickLabel":"Quick:一発で","quickBody":"欲しいものが決まっているなら、1 ターンで完全なスペックを生成。任意でコントラクト層を追加:正確な名前、データ構造、不変条件、対象ファイル一覧で、エージェントに再発明させません。","websiteLabel":"Web サイトから","websiteBody":"内蔵ブラウザを開き、要素をホバー選択するか矩形をドラッグ。スクリーンショット、DOM、適用 CSS が添付になります。","smashLabel":"大きなエピックを SMASH","smashBody":"大きなスペックをワンクリックで小さなサブスペックの一群に分解。各子カードに短い要約が付きます。","draftsLabel":"ドラフトと編集の再開","draftsBody":"進行中の探索をドラフトチケットとして保留し、後で再開。どのスペックも Explore で開き直して磨き続けられます。"},"rails":{"nav":"レールとレビュー","title":"レール上でパイプラインを実行","subtitle":"隔離されたレーンと、本当に読めるレビュー","intro":"<b>レール</b>は実行レーンです。最大 12 本、必要に応じて作成。スペックをレールに置いて <play>▶ 再生</play>、または空いているレールを<b>すべて起動</b>して並列実行。各ランは専用の git worktree で動き、あなたのチェックアウトには触れません。","jobLabel":"各ランがすること","flowCaption":"各フェーズはライブで流れます。終了時、作業はブランチに残り、アプリが次の行動を尋ねます。Specrails は PR を作るだけで、自分ではマージしません。","reviewLabel":"先に尋ねる PR レビュー","reviewBody":"完了したスペックは<b>レビュー中</b>に留まります。選ぶのはあなた:ドラフト PR の作成、ローカル統合(リモート不要)、または破棄。マージで完了になります。","packetLabel":"レビューパケット","packetBody":"納品ごとの平易なページ:何を依頼したか、何が変わったか、AI の報告とアプリが検証した事実、コスト。受け入れ / 変更を依頼 / 破棄 が付きます。","steerLabel":"実行中に舵を取る","steerBody":"Claude のランは対話式です。作業中に質問や方向転換ができ、生ログではなくナレーション付きの進捗を追えます。","loopsLabel":"独自のループを作る","loopsBody":"<b>Loops</b> はビジュアルビルダーです。AI ステップ、シェルコマンド、目標達成まで繰り返す<b>ループデサイダー</b>をつなげます。Implement、Batch、Freestyle はすぐ使えます。","profilesLabel":"エージェントプロファイルと既定値","profilesBody":"どのエージェントを動かし、それぞれどのモデルを使うかを決めます。プロジェクトのプロファイル単位、レール単位、または設定 → Specrails エージェントでマシン全体に一度だけ。","isolationLabel":"多くのプロジェクトを隔離","isolationBody":"各プロジェクトは専用のデータベースとキューを持ちます。Specrails は自身のファイルをホームフォルダー下に置くため、リポジトリは手つかずのままです。"},"providers":{"nav":"あなたのエージェント","title":"自分のエージェントを持ち込む","subtitle":"Claude Code、Codex、Gemini、Kimi をファーストクラスのエンジンに","intro":"<b>Claude Code</b>、<b>Codex CLI</b>、<b>Gemini CLI</b>、<b>Kimi Code</b> はひとつの契約の下で入れ替え可能なエンジンです。このマシンにインストールされサインイン済みのものは自動検出され、どこでも使えます。プロジェクトごとの設定は不要です。","calloutLabel":"複数インストールされている場合","calloutBody":"エンジンは<b>スペック、レール、ミッション、ターミナル起動ごと</b>に選べます。アプリはプロジェクトごとに最後の選択を記憶します。推定コストは <mono>~</mono> 付き。Kimi はトークンもコストも報告しません。","table":{"capability":"機能","streamingResume":"ストリーミングとセッション再開","native":"ネイティブ","costReporting":"コストレポート","providerBilled":"プロバイダー請求額","estimated":"推定(~)","unavailable":"利用不可","telemetry":"テレメトリ(OTEL)","synthesized":"合成","agentProfiles":"エージェントプロファイル"}},"cost":{"nav":"コスト追跡","title":"1セント単位で追跡","subtitle":"課金対象のすべての呼び出しを記録・可視化","intro":"すべての AI 呼び出しでライフサイクルとプロバイダーを記録します。Kimi のように使用量やコストを報告しない場合、それらは利用不可のままです。","analyticsLabel":"分析ページ","analyticsBody":"バーンレートのヒーロー表示、日次タイムライン、トップチケット、モデル別内訳、コスト対ターン数の散布図。期間(7日 / 30日 / 90日 / 全期間)とサーフェスでフィルタできます。","perTicketLabel":"チケット別の支出","perTicketBody":"各スペックの詳細にはコストと所要ターン数が表示され、そのチケットでフィルタした分析ページへディープリンクします。","honestLabel":"正直な数字","honestBody":"Claude のコストはプロバイダー報告値、Codex と Gemini は推定の場合 <mono>~</mono> が付きます。Kimi のトークンと USD コストは 0 ではなく利用不可です。","budgetsLabel":"予算とアラート","budgetsBody":"日次予算とジョブ単位のコストアラートを設定でき、上限を超えるとアプリが自動でキューを一時停止します。すべて CSV または JSON にエクスポートできます。"},"workspace":{"nav":"ワークスペース","title":"自分のワークスペースに","subtitle":"ウィンドウを離れずに必要なものすべて","terminalLabel":"ターミナルパネル","terminalBody":"下部に VS Code 風の本物のターミナル(<mod>{{mod}}</mod> <j>J</j>)。WebGL 描画、検索、インライン画像、パスのドラッグ&ドロップ、シェル統合。プロジェクトごとに最大 10 セッション。","codeLabel":"コードエクスプローラー","codeBody":"読み取り専用のファイルツリーと Monaco ビューアー。平易な AI 要約と、ファイルごとの構築ストーリー(どのスペックが、いつ、なぜ触れたか)を表示します。","browserLabel":"内蔵ブラウザ","browserBody":"リンク、PR、開発サーバーをアプリ内で開けます。デスクトップ版ではネイティブのブラウザペインで、ポップアップも OAuth ログインを維持します。","integrationsLabel":"連携と MCP","integrationsBody":"プロジェクトごとの MCP 連携マーケットプレイス(Serena のセマンティックナビゲーションを同梱)と、アプリを自分の AI ツールへ公開する Specrails MCP サーバー。","themesLabel":"テーマとエフェクト","themesBody":"6 つの内蔵テーマ(specrails、dracula、aurora-light、obsidian-dark、code-rain、galaxy)を UI 描画前に適用。設定 → エフェクトで、エージェントの思考ハローなどの演出を切り替えられます。","chatsLabel":"最小化できるチャット","chatsBody":"Explore や AI 編集のセッションをドックのチップに退避し、後で再開。リロードやプロジェクト切り替えでも失われません。","compareLabel":"並べて比較","compareBody":"スペックを画面端へドラッグすると他のスペックのピッカーが現れ、タブレットのように 2 件を並べてレビューできます。","desktopLabel":"デスクトップかブラウザか","desktopBody":"ブラウザで Specrails を使うか、署名済みデスクトップアプリ(macOS・Windows)を入手。サーバー、Node、git、GitHub CLI を同梱しています。"},"companion":{"nav":"モバイルコンパニオン","title":"Specrails を持ち歩く","subtitle":"Specrails Companion — あなたのパイプラインを、スマートフォンで","intro":"<b>Specrails Companion</b> は specrails.dev/companion-app で使える Web アプリです — スマートフォンで開く(またはホーム画面に追加する)だけで、スペックボードの閲覧、レールの起動と停止、ジョブログのライブ追跡、分析のチェックができます。インストール不要、アプリストアも不要。","localLabel":"ほかのすべてと同じく 100% ローカル","localBody":"スマートフォンはこのコンピュータに直接接続します — ピアツーピアで暗号化(WebRTC)。クラウド中継なし、アカウント不要、コードがあなたのデバイスの外に出ることはありません。","downloadLabel":"スマートフォンで開く","downloadHint":"スマートフォンのカメラでコードをスキャンするか、ブラウザで specrails.dev/companion-app を開いてください。","open":"Specrails Companion を開く","pairLabel":"ペアリングは10秒で完了","pairBody":"スマートフォンで specrails.dev/companion-app を開き、こちらで 設定 → モバイルコンパニオン → Web コンパニオンをペアリング と進んで、画面の手順に従ってください。"},"moveFast":{"nav":"素早く動く","title":"思考の速さで動く","subtitle":"キーボードファースト、どこでも","paletteLabel":"コマンドパレット","paletteShortcut":"<f>どこでも</f> <mod>{{mod}}</mod> <m>+</m> <k>K</k> <m>を押す</m>","paletteBody":"プロジェクト切り替え、スペックコマンドの実行、任意のページへの移動、最近のジョブ検索をあいまい検索で。","agentLabel":"エージェント","agentBody":"<mod>{{mod}}</mod> <shift>Shift</shift> <a>A</a> でエージェントを表示/非表示。<shift>Shift</shift> <tab>Tab</tab> でレベルを切り替え。","terminalLabel":"ターミナルパネル","terminalBody":"<mod>{{mod}}</mod> <j>J</j> で切り替え。","shortcutsLabel":"すべてのショートカット","shortcutsBody":"<q>?</q> を押すと一覧が表示されます。","chatLabel":"右サイドバー","chatBody":"<mod>{{mod}}</mod> <bkey>B</bkey> で右サイドバーを切り替え。","projectsLabel":"プロジェクトサイドバー","projectsBody":"<alt>{{alt}}</alt> <mod>{{mod}}</mod> <bkey>B</bkey> で左の Arc サイドバーを切り替え。","pagesLabel":"番号でページとプロジェクトへ","pagesBody":"<mod>{{mod}}</mod> <n>1–9</n> でページに移動、<alt>{{alt}}</alt> <mod>{{mod}}</mod> <n>1–9</n> でプロジェクトを切り替え。","outro":"<b>ツアーは以上です。</b>ミッションのコンポーザーに作りたいものを入力するか、左サイドバーからプロジェクトを追加してください。このツアーは設定からいつでも再表示できます。"},"jira":{"label":"Jira 連携","body":"任意のプロジェクトを <b>Jira ボード</b> で裏付けます — 各スペックは Jira の課題になり、双方向で同期されます。ステータスは rail に追従し、job 完了時にコメントが投稿されます。追加時にプロジェクトごとに設定するか、いつでも設定から構成できます。"}}`),a={addProject:e,prerequisites:t,instructions:n,welcome:r,onboarding:i};export{e as addProject,a as default,n as instructions,i as onboarding,t as prerequisites,r as welcome};
@@ -0,0 +1 @@
1
+ var e={title:`Ajouter un projet`,description:`Enregistrez un répertoire de projet pour le gérer depuis Specrails.`,noProviderDetected:`Aucune CLI d'IA détectée. Installez d'abord Claude Code, Codex CLI, Gemini CLI ou Kimi Code.`,pathLabel:`Chemin du projet`,pathPlaceholder:`/Users/moi/mon-projet`,pathHint:`Chemin absolu vers la racine du projet`,browseForFolder:`Parcourir les dossiers`,selectProjectFolder:`Sélectionner le dossier du projet`,nameLabel:`Nom d'affichage`,optional:`(facultatif)`,namePlaceholder:`Mon projet`,nameHint:`Par défaut, le nom du répertoire`,adding:`Ajout...`,submit:`Ajouter le projet`,toolsRequired_one:`{{tools}} est requis pour ajouter un projet`,toolsRequired_other:`{{tools}} sont requis pour ajouter un projet`,errors:{pathRequired:`Le chemin du projet est requis`,addFailed:`Échec de l'ajout du projet`},toasts:{registered:`Projet « {{name}} » enregistré`},chooser:{description:`Apportez un dépôt existant, ou construisez un tout nouveau projet à partir d'une idée.`,existingTitle:`Projet existant`,existingDescription:`Enregistrez un dépôt qui existe déjà sur le disque.`,newTitle:`Nouveau projet`,newDescription:`Décrivez une idée et obtenez un dépôt initialisé avec un backlog du Jalon 1.`}},t={corruptedBundle:`bundle corrompu — réinstallez l'application`,notInstalled:`non installé`,failedToExecute:`trouvé mais impossible à exécuter`,failedToExecuteAt:`trouvé à {{path}} mais impossible à exécuter`,failedToExecuteWithError:`trouvé mais impossible à exécuter ({{error}})`,failedToExecuteAtWithError:`trouvé à {{path}} mais impossible à exécuter ({{error}})`,needsMinimum:`{{version}} trouvé — nécessite {{minVersion}}+`,unknownVersion:`inconnue`,installedLabel:`installé`,verifyError:`Impossible de vérifier les outils de développement en local — l'installation s'en chargera.`,allDetected:`Tous les outils requis sont détectés`,bundleCorruptedTitle:`Bundle de l'application corrompu`,toolsRequired_one:`{{count}} outil de développement requis`,toolsRequired_other:`{{count}} outils de développement requis`,reinstallHint:`Réinstallez l'application Specrails pour restaurer les outils embarqués.`,installMissingHint:`Installez les outils manquants pour continuer.`,moreInfo:`Plus d'infos`,bundledBadge:`embarqué`,optional:`optionnel`,ghNoAuth:"Non connecté — exécutez `gh auth login`"},n={title:`Installer les outils de développement`,description:`SpecRails a besoin de Node.js, npm, npx et Git sur le PATH. Choisissez le snippet pour votre OS, exécutez-le, puis cliquez sur « Je l'ai installé, revérifier ».`,darwin:{intro:`Homebrew installe les deux outils en une seule ligne. Si vous n'avez pas brew, utilisez les téléchargements officiels.`,installNodeGit:`Installer Node.js et Git via Homebrew`},win32:{intro:`Winget est fourni avec Windows 11 et les versions récentes de Windows 10. Ouvrez PowerShell ou le Terminal et exécutez :`,installNode:`Installer Node.js LTS`,installGit:`Installer Git`,note:`Après l'installation, redémarrez Specrails pour que Windows actualise le PATH.`},linux:{intro:`Utilisez le gestionnaire de paquets de votre distribution :`,debian:`Debian / Ubuntu`,fedora:`Fedora / RHEL`},links:{nodeOfficial:`Node.js (officiel)`,gitOfficial:`Git (officiel)`,gitWindows:`Git pour Windows (officiel)`},showOtherPlatforms:`Afficher les autres plateformes`,hideOtherPlatforms:`Masquer les autres plateformes`,recheck:`Je l'ai installé, revérifier`,diagnostics:{copy:`Copier les diagnostics`,copied:`Diagnostics copiés`,failed:`Échec de la copie`},corrupted:{title:`Bundle de l'application corrompu`,description:`Un ou plusieurs outils embarqués (Node.js, Git) n'ont pas pu être vérifiés.`,body:`Cet outil est embarqué avec l'application Specrails et ne peut pas être installé séparément. Si vous voyez ce message, le bundle de l'application est peut-être corrompu. Veuillez réinstaller Specrails.`}},r={title:`Bienvenue dans <spec>spec</spec><rails>rails</rails>`,description:`Specrails gère plusieurs projets depuis une seule interface. Ajoutez votre premier projet pour commencer.`,addFirstProject:`Ajouter votre premier projet`,jiraHint:`Connectez chaque projet à son propre tableau Jira — les specs restent synchronisées dans les deux sens.`,mcpHint:`Connectez des outils IA externes à Specrails via un serveur MCP local sécurisé : activé par défaut, gérez-le dans Réglages → MCP.`,agentChatHint:`Pilotez Specrails en discutant — un agent intégré gère les specs, les rails et les analyses pour vous via le MCP local. Ouvrez-le depuis la bulle ou avec ⌘⇧A.`,localEnginesHint:`Seulement un modèle local ? Ajoutez un endpoint compatible OpenAI dans Réglages → Specrails Agents et toutes les surfaces — rails, chat, missions — l'utiliseront par défaut.`},i=JSON.parse(`{"productTour":"Visite guidée","stepCount":"Étape {{current}} sur {{total}}","goToStep":"Aller à l'étape {{step}} : {{label}}","stepLabel":"Étape {{step}}","dontShowAgain":"Ne plus afficher","skipTour":"Passer la visite","getStarted":"Commencer","flow":{"architect":"Architecte","developer":"Développeur","reviewer":"Relecteur","describe":"Décrire","specs":"Specs","rails":"Rails","review":"Revue et fusion","yourReview":"Votre revue","blueprint":"Blueprint","approve":"Approuver","m1Specs":"Specs du Jalon 1","milestones":"Jalons"},"language":{"nav":"Langue","title":"Choisissez votre langue","subtitle":"Specrails parle votre langue","intro":"Choisissez la langue de l'interface. Elle s'applique instantanément — cette visite comprise.","note":"Vous pouvez en changer à tout moment dans Paramètres → Langue."},"theme":{"nav":"Thème","title":"Trouvez votre style","subtitle":"Des thèmes intégrés, appliqués instantanément","intro":"Choisissez l'apparence de Specrails — le thème s'applique dès que vous cliquez.","note":"Vous pouvez en changer à tout moment dans Paramètres → Apparence."},"welcome":{"nav":"Bienvenue","title":"Bienvenue dans Specrails","subtitle":"Votre cockpit local pour livrer du logiciel avec des agents IA","intro":"Specrails transforme une idée en code livré, et vous laisse <b>voir, piloter et vérifier</b> chaque étape. Décrivez ce que vous voulez, obtenez des specs précises, exécutez-les sur des rails avec Claude Code, Codex, Gemini ou Kimi, et décidez quoi fusionner. Rien ne fusionne sans vous.","coreLoopLabel":"La boucle centrale","flowCaption":"<b>Décrire → Specs → Rails → Revue et fusion</b>. Chaque étape est diffusée en direct et chaque résultat attend votre décision.","missionLabel":"Mode Mission : par défaut","missionBody":"Une conversation pilote toute l'app : l'agent rédige des specs, lance des rails, consulte les dépenses et vous tend des cartes de décision. <b>Vous parlez, il opère.</b>","boardLabel":"Mode Tableau : à un clic","boardBody":"Le tableau de bord classique : specs, rails, jobs, analytique. Basculez entre les deux depuis l'interrupteur de la barre latérale gauche : <b>mêmes projets, mêmes données</b>.","localNote":"<b>100 % local · mono-utilisateur · sans compte.</b> Tout tourne sur votre machine. Votre code ne quitte jamais l'ordinateur sauf si <i>vous</i> lancez un agent dessus.","tourNote":"Cette visite rapide passe en revue tout ce que l'app sait faire : environ deux minutes."},"mission":{"nav":"Mode Mission","title":"Parlez, l'agent opère","subtitle":"Le mode Mission est la surface par défaut","intro":"En <b>mode Mission</b>, toute la fenêtre est une conversation avec un agent qui pilote Specrails via ses propres <b>outils MCP</b> : « lance les trois specs prioritaires », « combien ai-je dépensé cette semaine ? », « écris-moi une spec pour le mode sombre ». Tout est en direct : rails, specs et cartes se mettent à jour pendant qu'il travaille.","missionsLabel":"Missions et projets","missionsBody":"Chaque conversation est une mission épinglée à un projet (ou à Accueil pour tout). Changez de mission depuis l'en-tête, envoyez des suites en cours de tour : elles sont mises en file et exécutées dans l'ordre.","levelsLabel":"Vous tenez la laisse","levelsBody":"Un niveau en direct, <b>Observer → Éditer → Opérer → Autonome</b>, parcouru avec <shift>Shift</shift> <tab>Tab</tab>, borne ce qu'il peut faire. Il n'agit jamais au-dessus du niveau fixé.","cardsLabel":"Cartes de décision","cardsBody":"Les lancements apparaissent comme des cartes en direct épinglées au-dessus du composeur : progression du rail, puis Créer la PR / Intégrer en local / Abandonner, avec une Revue en langage clair. Numéros de spec, jobs et loops dans les réponses sont cliquables.","workspaceLabel":"Un espace de travail à côté","workspaceBody":"La barre latérale droite ouvre Blueprint, Jobs, Analytique, un navigateur intégré, le terminal et l'explorateur de code à côté de la conversation, sans changer de contexte.","mcpLabel":"Tourne sur le MCP local","mcpBody":"L'agent travaille via le serveur MCP embarqué de Specrails, <b>activé par défaut</b>, en loopback uniquement. Ce même serveur permet à vos propres outils (Claude Desktop, Cursor…) de piloter Specrails ; gérez-le dans Réglages → MCP."},"builder":{"nav":"Nouveau projet","title":"Démarrer un projet à partir d'une idée","subtitle":"Le Constructeur : blueprint, specs et jalons avant la première ligne de code","intro":"Ajouter un projet → <b>Nouveau</b> transforme l'agent en <b>Constructeur de projet</b>. Décrivez l'idée ; il vous interroge brièvement (ou décide tout en un clic), propose produit, flux principal, plateforme, stack et jalons, et vous approuvez ou ajustez.","flowLabel":"De l'idée au backlog","flowCaption":"Le commit crée le dépôt, l'espace de travail et le backlog du Jalon 1 ; en option un dépôt GitHub privé aussi.","cardsLabel":"Décisions en un clic","cardsBody":"« Surprenez-moi » et « Approuver et générer les specs » apparaissent comme des cartes dans le fil ; chaque décision prise y reste épinglée comme trace.","specsLabel":"Specs premium, auditées honnêtement","specsBody":"Les specs du Jalon 1 sont rédigées en entier deux par deux, puis tout le lot est audité (problème, solution, périmètre, considérations techniques, six critères d'acceptation ou plus) et une barrière déterministe bloque tout ce qui est trop mince.","milestonesLabel":"Des jalons sur rails","milestonesBody":"Lancez le Jalon 1 et il s'exécute en rails de trois specs au plus, chacun empilé sur la branche du précédent. Les <b>points de contrôle par vague</b> demandent avant chaque rail suivant, ou activez la continuation automatique.","progressLabel":"Progression en direct","progressBody":"Le panneau Blueprint affiche des décomptes réels (livrées, en revue, terminées), jamais « terminé » tant que quelque chose n'est pas fusionné. Les jalons suivants sont générés contre le vrai dépôt."},"authorSpecs":{"nav":"Rédiger des specs","title":"Transformez les idées en specs","subtitle":"Six façons de capturer exactement ce que vous voulez construire","intro":"Une <b>spec</b> décrit un travail que vous voulez voir fait. Rédigez-la comme le moment l'exige : d'une ligne jusqu'à l'agent qui fait la recherche pour vous.","agentLabel":"Demandez à l'agent","agentBody":"En mode Mission, décrivez simplement le changement. L'agent lit d'abord le vrai code, rédige une super spec sous forme de carte en direct et l'enregistre quand vous le dites.","exploreLabel":"Explorer : converser","exploreBody":"Décrivez ce que vous voulez dans un chat ; un brouillon en direct se reconstruit à chaque tour. Un curseur de presets règle la quantité de contexte projet vue par l'IA : de votre seul message jusqu'au code complet plus vos serveurs MCP.","quickLabel":"Rapide : en un coup","quickBody":"Vous savez déjà ce que vous voulez ? Générez une spec complète en un seul tour. En option, enrichissez-la d'une Couche de contrat : noms exacts, formes de données, invariants et liste de fichiers pour que les agents ne réinventent rien.","websiteLabel":"Depuis un site web","websiteBody":"Ouvre un navigateur intégré. Sélectionnez un élément ou tracez un rectangle : la capture, le DOM et le CSS appliqué deviennent des pièces jointes.","smashLabel":"SMASH une grosse épopée","smashBody":"Éclatez une grande spec en une famille de sous-specs plus petites en un clic ; chaque enfant porte un court résumé sur sa carte.","draftsLabel":"Brouillons et reprise","draftsBody":"Garez une exploration en cours comme ticket brouillon et reprenez-la plus tard ; rouvrez n'importe quelle spec dans Explorer pour continuer à l'affiner."},"rails":{"nav":"Rails et revue","title":"Exécutez le pipeline sur des rails","subtitle":"Des voies isolées, puis une revue vraiment lisible","intro":"Les <b>rails</b> sont des voies d'exécution : jusqu'à douze, créées à la demande. Déposez des specs sur un rail et appuyez sur <play>▶ Play</play>, ou <b>Tout lancer</b> les rails libres en parallèle. Chaque exécution travaille dans son propre worktree git, jamais dans votre checkout.","jobLabel":"Ce que fait chaque exécution","flowCaption":"Chaque phase est diffusée en direct. À la fin, le travail reste sur sa branche et l'app vous demande quoi faire : Specrails produit des PR, il ne fusionne jamais seul.","reviewLabel":"Revue de PR qui demande d'abord","reviewBody":"Les specs terminées passent <b>En revue</b>. Vous choisissez : créer une PR brouillon, intégrer en local (sans distant), ou abandonner. La fusion les passe en Terminé.","packetLabel":"Dossier de revue","packetBody":"Une page en langage clair par livraison : ce qui a été demandé, ce qui a changé, ce que l'IA rapporte face à ce que l'app a vérifié, le coût, avec Accepter / Demander des changements / Abandonner.","steerLabel":"Pilotez en cours d'exécution","steerBody":"Les exécutions Claude sont interactives : posez des questions ou réorientez pendant le travail, et suivez une progression narrée plutôt que des logs bruts.","loopsLabel":"Construisez vos propres loops","loopsBody":"<b>Loops</b> est un constructeur visuel : enchaînez étapes IA, commandes shell et un <b>Loop Decider</b> qui répète jusqu'à atteindre l'objectif. Implement, Batch et Freestyle sont fournis prêts à l'emploi.","profilesLabel":"Profils d'agents et valeurs par défaut","profilesBody":"Décidez quels agents tournent et quel modèle chacun utilise : par profil de projet, par rail, ou une fois pour toute la machine dans Réglages → Agents Specrails.","isolationLabel":"Plusieurs projets, isolés","isolationBody":"Chaque projet a sa base de données et sa file ; votre dépôt reste intact car Specrails garde ses fichiers sous votre dossier personnel."},"providers":{"nav":"Votre agent","title":"Apportez votre propre agent","subtitle":"Claude Code, Codex, Gemini et Kimi comme moteurs de premier rang","intro":"<b>Claude Code</b>, <b>Codex CLI</b>, <b>Gemini CLI</b> et <b>Kimi Code</b> sont des moteurs interchangeables derrière un même contrat. Tout ce qui est installé et connecté sur cette machine est détecté automatiquement et proposé partout ; rien à configurer par projet.","calloutLabel":"Quand plusieurs sont installés","calloutBody":"Choisissez le moteur <b>par spec, par rail, par mission ou par lancement de terminal</b> ; l'app mémorise votre dernier choix par projet. Les coûts estimés sont marqués <mono>~</mono> ; Kimi ne rapporte ni tokens ni coût.","table":{"capability":"Capacité","streamingResume":"Streaming & reprise de session","native":"Natif","costReporting":"Suivi des coûts","providerBilled":"Facturé par le fournisseur","estimated":"Estimé (~)","unavailable":"Indisponible","telemetry":"Télémétrie (OTEL)","synthesized":"Synthétisée","agentProfiles":"Profils d'agents"}},"cost":{"nav":"Suivre les coûts","title":"Suivez chaque centime","subtitle":"Chaque invocation facturable, enregistrée et visualisée","intro":"Chaque invocation d'IA enregistre son cycle de vie et son fournisseur. L'usage et le coût restent indisponibles lorsqu'un fournisseur, tel que Kimi, ne les fournit pas.","analyticsLabel":"Page Analytics","analyticsBody":"Un hero de burn-rate, une timeline quotidienne, le top des tickets, la répartition par modèle et un nuage coût vs tours. Filtrez par période (7 j / 30 j / 90 j / Tout) et par surface.","perTicketLabel":"Dépenses par ticket","perTicketBody":"Le détail de chaque spec montre ce qu'elle a coûté et combien de tours il a fallu, avec un lien direct vers Analytics filtré sur ce ticket.","honestLabel":"Des chiffres honnêtes","honestBody":"Le coût Claude est fourni par le fournisseur ; Codex et Gemini peuvent être estimés et marqués d'un <mono>~</mono>. Pour Kimi, les tokens et le coût USD sont indisponibles, pas nuls.","budgetsLabel":"Budgets & alertes","budgetsBody":"Définissez un budget quotidien et une alerte de coût par job ; l'application met automatiquement la file en pause quand vous franchissez la limite. Exportez tout en CSV ou JSON."},"workspace":{"nav":"Espace de travail","title":"Faites-en votre espace de travail","subtitle":"Tout ce qu'il vous faut sans quitter la fenêtre","terminalLabel":"Panneau terminal","terminalBody":"Un vrai terminal façon VS Code en bas (<mod>{{mod}}</mod> <j>J</j>) : rendu WebGL, recherche, images en ligne, chemins par glisser-déposer et intégration shell. Jusqu'à 10 sessions par projet.","codeLabel":"Explorateur de code","codeBody":"Arborescence en lecture seule et visionneuse Monaco avec des résumés IA en langage clair et une histoire de construction par fichier : quelle spec l'a touché, quand et pourquoi.","browserLabel":"Navigateur intégré","browserBody":"Ouvrez liens, PR et votre serveur de dev dans l'app : un volet de navigateur natif dans la version bureau, avec des popups qui préservent les connexions OAuth.","integrationsLabel":"Intégrations et MCP","integrationsBody":"Une place de marché d'intégrations MCP par projet (la navigation sémantique Serena est fournie), plus le serveur MCP de Specrails qui expose l'app à vos propres outils IA.","themesLabel":"Thèmes et effets","themesBody":"Six thèmes intégrés (specrails, dracula, aurora-light, obsidian-dark, code-rain et galaxy) appliqués avant le rendu de l'interface. Réglages → Effets active des touches visuelles comme le halo de réflexion de l'agent.","chatsLabel":"Chats réductibles","chatsBody":"Garez une session Explorer ou Édition IA dans une puce du dock et reprenez-la plus tard ; jamais perdue entre rechargements ou changements de projet.","compareLabel":"Comparer côte à côte","compareBody":"Glissez une spec vers le bord de l'écran et un sélecteur de vos autres specs apparaît : relisez-en deux ensemble, façon tablette.","desktopLabel":"Bureau ou navigateur","desktopBody":"Utilisez Specrails dans votre navigateur, ou prenez l'app de bureau signée (macOS et Windows) qui embarque son serveur, Node, git et la CLI GitHub."},"companion":{"nav":"Compagnon mobile","title":"Emportez Specrails avec vous","subtitle":"Specrails Companion — vos pipelines, dans votre poche","intro":"<b>Specrails Companion</b> est une application web disponible sur specrails.dev/companion-app — ouvrez-la sur votre téléphone (ou ajoutez-la à votre écran d'accueil) pour parcourir le tableau des specs, lancer et arrêter des rails, suivre les logs des jobs en direct et jeter un œil aux analytics. Aucune installation, aucun app store.","localLabel":"100 % local, comme tout le reste","localBody":"Votre téléphone se connecte directement à cet ordinateur — en pair-à-pair et chiffré (WebRTC). Pas de relais cloud, pas de compte, et votre code ne quitte jamais vos appareils.","downloadLabel":"Ouvrez-la sur votre téléphone","downloadHint":"Scannez le code avec l'appareil photo de votre téléphone, ou ouvrez specrails.dev/companion-app dans son navigateur.","open":"Ouvrir Specrails Companion","pairLabel":"L'appairage prend dix secondes","pairBody":"Sur votre téléphone, ouvrez specrails.dev/companion-app, puis ici allez dans Paramètres → Compagnon mobile → Appairer le compagnon web et suivez les étapes à l'écran."},"moveFast":{"nav":"Aller vite","title":"Avancez à la vitesse de la pensée","subtitle":"Le clavier d'abord, partout","paletteLabel":"Palette de commandes","paletteShortcut":"<f>Appuyez sur</f> <mod>{{mod}}</mod> <m>+</m> <k>K</k> <m>n'importe où</m>","paletteBody":"Changez de projet, lancez des commandes de spec, allez à n'importe quelle page et retrouvez les jobs récents, tout en recherche floue.","agentLabel":"Agent","agentBody":"Affichez ou masquez l'agent avec <mod>{{mod}}</mod> <shift>Shift</shift> <a>A</a> ; parcourez son niveau avec <shift>Shift</shift> <tab>Tab</tab>.","terminalLabel":"Panneau terminal","terminalBody":"Basculez avec <mod>{{mod}}</mod> <j>J</j>.","shortcutsLabel":"Tous les raccourcis","shortcutsBody":"Appuyez sur <q>?</q> pour voir l'aide-mémoire complet.","chatLabel":"Barre latérale droite","chatBody":"Basculez la barre latérale droite avec <mod>{{mod}}</mod> <bkey>B</bkey>.","projectsLabel":"Barre des projets","projectsBody":"Basculez la barre Arc gauche avec <alt>{{alt}}</alt> <mod>{{mod}}</mod> <bkey>B</bkey>.","pagesLabel":"Pages et projets par numéro","pagesBody":"<mod>{{mod}}</mod> <n>1–9</n> ouvre une page ; <alt>{{alt}}</alt> <mod>{{mod}}</mod> <n>1–9</n> change de projet.","outro":"<b>La visite est terminée.</b> Tapez ce que vous voulez construire dans le composeur de mission, ou ajoutez un projet depuis la barre de gauche. Vous pouvez rouvrir cette visite à tout moment depuis les Réglages."},"jira":{"label":"Intégration Jira","body":"Adossez n'importe quel projet à un <b>tableau Jira</b> — chaque spec devient un ticket Jira, synchronisé dans les deux sens : le statut suit le rail et un commentaire est publié à la fin d'un job. Configurez-le par projet lors de l'ajout, ou à tout moment dans les Paramètres."}}`),a={addProject:e,prerequisites:t,instructions:n,welcome:r,onboarding:i};export{e as addProject,a as default,n as instructions,i as onboarding,t as prerequisites,r as welcome};