specrails-desktop 2.64.2 → 2.65.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 (1116) hide show
  1. package/README.md +1 -1
  2. package/cli/dist/status.js +3 -0
  3. package/client/dist/assets/ActivityFeedPage-ByVKYII-.js +1 -0
  4. package/client/dist/assets/AgentBrowserCapture-BGUTjhUr.js +1 -0
  5. package/client/dist/assets/AgentModeAnalyticsPane-CtOLDDjB.js +2 -0
  6. package/client/dist/assets/AgentModeCodePane-CDhUKarT.js +2 -0
  7. package/client/dist/assets/AgentModeJobsPane-BAa_oEHJ.js +1 -0
  8. package/client/dist/assets/AgentsPage-D32hG4Ve.js +120 -0
  9. package/client/dist/assets/AnalyticsPage-BU50zeG6.js +5 -0
  10. package/client/dist/assets/BudgetCard-DP_jxwaD.js +55 -0
  11. package/client/dist/assets/CodePage-jiYnKGpp.js +3 -0
  12. package/client/dist/assets/CostValue-Bvn8674q.js +1 -0
  13. package/client/dist/assets/DesktopAnalyticsPage-CF__H4e3.js +1 -0
  14. package/client/dist/assets/DocView-RrAp70zp.js +11 -0
  15. package/client/dist/assets/DocsDialog-DkqHU-JF.js +1 -0
  16. package/client/dist/assets/DocsPage-C6X089zC.js +1 -0
  17. package/client/dist/assets/ExportDropdown-C5-o8y3K.js +1 -0
  18. package/client/dist/assets/HelpHint-Crf9_uoR.js +1 -0
  19. package/client/dist/assets/IntegrationsPage-aflU3KHK.js +1 -0
  20. package/client/dist/assets/InteractiveJobComposer-CEMMhyyJ.js +19 -0
  21. package/client/dist/assets/JobDetailModal-BVJ6hyRs.js +1 -0
  22. package/client/dist/assets/JobDetailPage-DHzBUmox.js +1 -0
  23. package/client/dist/assets/JobsPage-o-LAqkwC.js +1 -0
  24. package/client/dist/assets/LoopBuilderPage-DbSVmXBM.js +1 -0
  25. package/client/dist/assets/LoopPreviewModal-DbJcVyN1.js +1 -0
  26. package/client/dist/assets/{LoopWindowSurface-DE0v2K1p.js → LoopWindowSurface-Co1ZK26V.js} +1 -1
  27. package/client/dist/assets/LoopsPage-C4lgkPXB.js +2 -0
  28. package/client/dist/assets/MinimizedChatsContext-742ypO8n.js +1 -0
  29. package/client/dist/assets/PluginsPage-Acks9ges.js +2 -0
  30. package/client/dist/assets/RailTrack-BfLmBzBh.js +1 -0
  31. package/client/dist/assets/{RepositoryScopeSelector-2eSqR9WK.js → RepositoryScopeSelector-DcxbKI9w.js} +1 -1
  32. package/client/dist/assets/ReviewPacketPage-CAVSIOAJ.js +7 -0
  33. package/client/dist/assets/TemplatePreviewModal-C23SYCTm.js +1 -0
  34. package/client/dist/assets/TicketDetailModalContext-B-Gtm6Ob.js +23 -0
  35. package/client/dist/assets/Trans-C6J0cLyh.js +1 -0
  36. package/client/dist/assets/a11y-prefs-BqoP5goK.js +1 -0
  37. package/client/dist/assets/activity-BBWfoUOG.js +1 -0
  38. package/client/dist/assets/activity-BM_skann.js +1 -0
  39. package/client/dist/assets/activity-Cevl82ke.js +1 -0
  40. package/client/dist/assets/activity-CmACk5W5.js +1 -0
  41. package/client/dist/assets/activity-D9LBw3PQ.js +1 -0
  42. package/client/dist/assets/activity-Dspbb9lz.js +1 -0
  43. package/client/dist/assets/activity-FPjYIjv9.js +1 -0
  44. package/client/dist/assets/activity-nLCKMUKt.js +1 -0
  45. package/client/dist/assets/addspec-BI4jDMhA.js +1 -0
  46. package/client/dist/assets/addspec-BldTv7Tl.js +1 -0
  47. package/client/dist/assets/addspec-Cdq-2EcC.js +1 -0
  48. package/client/dist/assets/addspec-DH5M16BQ.js +1 -0
  49. package/client/dist/assets/addspec-DOFo9pD5.js +1 -0
  50. package/client/dist/assets/addspec-DPkwhdmL.js +1 -0
  51. package/client/dist/assets/addspec-Dzy12Pv3.js +1 -0
  52. package/client/dist/assets/addspec-skTs6EEW.js +1 -0
  53. package/client/dist/assets/agent-B_UEUy7Y.js +1 -0
  54. package/client/dist/assets/agent-BarjlhTA.js +1 -0
  55. package/client/dist/assets/agent-BfqIITo5.js +1 -0
  56. package/client/dist/assets/agent-Bt9a7Kyj.js +1 -0
  57. package/client/dist/assets/agent-C3689RwP.js +1 -0
  58. package/client/dist/assets/agent-CrmboTAi.js +1 -0
  59. package/client/dist/assets/agent-DcsoTnuE.js +1 -0
  60. package/client/dist/assets/agent-GDZoYwd4.js +1 -0
  61. package/client/dist/assets/{agentRuntime-es2ymSl-.js → agentRuntime-BYH70bKY.js} +1 -1
  62. package/client/dist/assets/agentRuntime-BijLh8I9.js +1 -0
  63. package/client/dist/assets/{agentRuntime-BzuwQQgn.js → agentRuntime-BvyuETPe.js} +1 -1
  64. package/client/dist/assets/{agentRuntime-BDvbJMmS.js → agentRuntime-C2WI6HQh.js} +1 -1
  65. package/client/dist/assets/{agentRuntime-BKJfv5YD.js → agentRuntime-CZPIlQsr.js} +1 -1
  66. package/client/dist/assets/{agentRuntime-DiCldqGG.js → agentRuntime-D2dDvCyJ.js} +1 -1
  67. package/client/dist/assets/agentRuntime-DWZedEbn.js +1 -0
  68. package/client/dist/assets/agentRuntime-DkIruUNw.js +1 -0
  69. package/client/dist/assets/agents-35_PDKx9.js +1 -0
  70. package/client/dist/assets/agents-8fZnHhEQ.js +1 -0
  71. package/client/dist/assets/agents-Bgimtw8z.js +1 -0
  72. package/client/dist/assets/agents-C4P160Us.js +1 -0
  73. package/client/dist/assets/agents-Clg67zbp.js +1 -0
  74. package/client/dist/assets/agents-DJfF4o6G.js +1 -0
  75. package/client/dist/assets/agents-Dc9-Y5cw.js +1 -0
  76. package/client/dist/assets/agents-EN1Zl4YZ.js +1 -0
  77. package/client/dist/assets/agentstudio-Bm4-NYaG.js +1 -0
  78. package/client/dist/assets/agentstudio-CD1fuj2o.js +1 -0
  79. package/client/dist/assets/agentstudio-CQGWFSst.js +1 -0
  80. package/client/dist/assets/agentstudio-CqVSb65S.js +1 -0
  81. package/client/dist/assets/agentstudio-DIE_HjsX.js +1 -0
  82. package/client/dist/assets/agentstudio-D_OmQK-k.js +1 -0
  83. package/client/dist/assets/agentstudio-Djz9aUfb.js +1 -0
  84. package/client/dist/assets/agentstudio-Qa3v9o5J.js +1 -0
  85. package/client/dist/assets/{aiedit-DNXxq_Dr.js → aiedit-1VzLs37W.js} +1 -1
  86. package/client/dist/assets/{aiedit-DCjA7jLJ.js → aiedit-BNp6GSik.js} +1 -1
  87. package/client/dist/assets/{aiedit-BoG24nlg.js → aiedit-BOY5xRPi.js} +1 -1
  88. package/client/dist/assets/{aiedit-iIjz2_Qk.js → aiedit-BrqMZvbc.js} +1 -1
  89. package/client/dist/assets/{aiedit-CjlSRQVP.js → aiedit-CVgtl7hm.js} +1 -1
  90. package/client/dist/assets/{aiedit-DQ-0_pvE.js → aiedit-CrFW9Jd2.js} +1 -1
  91. package/client/dist/assets/{aiedit-olnv3QSt.js → aiedit-YE2lILp7.js} +1 -1
  92. package/client/dist/assets/{aiedit-B0KUbpB6.js → aiedit-iA_R1AVQ.js} +1 -1
  93. package/client/dist/assets/analytics-3w0t-4ic.js +1 -0
  94. package/client/dist/assets/analytics-BRi4KQD6.js +1 -0
  95. package/client/dist/assets/analytics-BtjAqzke.js +1 -0
  96. package/client/dist/assets/analytics-COSQ1h47.js +1 -0
  97. package/client/dist/assets/analytics-CP2HjESk.js +1 -0
  98. package/client/dist/assets/analytics-DY65TC62.js +1 -0
  99. package/client/dist/assets/analytics-Den_vvxn.js +1 -0
  100. package/client/dist/assets/analytics-LmBS96O8.js +1 -0
  101. package/client/dist/assets/api-DOGbyfTO.js +2 -0
  102. package/client/dist/assets/builder-BMVvSr4v.js +1 -0
  103. package/client/dist/assets/builder-BN-MuLZt.js +1 -0
  104. package/client/dist/assets/builder-BQOZi4CF.js +1 -0
  105. package/client/dist/assets/builder-BjUPjsyu.js +1 -0
  106. package/client/dist/assets/builder-BoBtN18T.js +1 -0
  107. package/client/dist/assets/builder-C5g5NhxL.js +1 -0
  108. package/client/dist/assets/builder-RUHXw3yx.js +1 -0
  109. package/client/dist/assets/builder-fyS_AiyC.js +1 -0
  110. package/client/dist/assets/button-CHPkroew.js +1 -0
  111. package/client/dist/assets/chat-C9L5T7KI.js +1 -0
  112. package/client/dist/assets/chevron-right-CwMAj0w_.js +1 -0
  113. package/client/dist/assets/chevron-up-BAMuP0XD.js +1 -0
  114. package/client/dist/assets/chunk-OB3PAWPO-BBaq6pUk.js +3 -0
  115. package/client/dist/assets/code-4le5IIbf.js +1 -0
  116. package/client/dist/assets/code-B-jCVIbm.js +1 -0
  117. package/client/dist/assets/code-BRfrn5ix.js +1 -0
  118. package/client/dist/assets/code-CC9NCrDM.js +1 -0
  119. package/client/dist/assets/code-CK6pm8wY.js +1 -0
  120. package/client/dist/assets/code-DDiOzd6c.js +1 -0
  121. package/client/dist/assets/code-tGifiyf5.js +1 -0
  122. package/client/dist/assets/code-xkn8kQTg.js +1 -0
  123. package/client/dist/assets/commands-Bv1QshHR.js +1 -0
  124. package/client/dist/assets/commands-BvxTxboW.js +1 -0
  125. package/client/dist/assets/commands-C5ORR0fO.js +1 -0
  126. package/client/dist/assets/commands-CBKMFSTV.js +1 -0
  127. package/client/dist/assets/commands-CFJIRsJv.js +1 -0
  128. package/client/dist/assets/commands-D9o3ZcXl.js +1 -0
  129. package/client/dist/assets/commands-DNox0Edk.js +1 -0
  130. package/client/dist/assets/commands-DmIUMLdV.js +1 -0
  131. package/client/dist/assets/common-5H4TkaoI.js +1 -0
  132. package/client/dist/assets/common-9S3OdPjx.js +1 -0
  133. package/client/dist/assets/common-BqnwIcjs.js +1 -0
  134. package/client/dist/assets/common-CQP3VafS.js +1 -0
  135. package/client/dist/assets/common-CZnAfkB2.js +1 -0
  136. package/client/dist/assets/common-D5sNttV4.js +1 -0
  137. package/client/dist/assets/common-k_qX9nlv.js +1 -0
  138. package/client/dist/assets/common-s4HIi9XI.js +1 -0
  139. package/client/dist/assets/compass-B7guwBlY.js +1 -0
  140. package/client/dist/assets/confirm-dialog-ChZdHL3Q.js +1 -0
  141. package/client/dist/assets/copy-DOPlLymH.js +1 -0
  142. package/client/dist/assets/core-BozBzB6Y.js +1 -0
  143. package/client/dist/assets/dashboard-6zGLGcEz.js +1 -0
  144. package/client/dist/assets/dashboard-8Gi0FBDq.js +1 -0
  145. package/client/dist/assets/dashboard-B7E5YrSy.js +1 -0
  146. package/client/dist/assets/dashboard-BhdKV8xK.js +1 -0
  147. package/client/dist/assets/dashboard-Bu3zzH_s.js +1 -0
  148. package/client/dist/assets/dashboard-Ce_6rELA.js +1 -0
  149. package/client/dist/assets/dashboard-DWY-oz8P.js +1 -0
  150. package/client/dist/assets/dashboard-gUzlWk0o.js +1 -0
  151. package/client/dist/assets/date-input-Cdlr8kHz.js +1 -0
  152. package/client/dist/assets/dialog-C23lB2iP.js +5 -0
  153. package/client/dist/assets/dist-Di-oOFkX.js +1 -0
  154. package/client/dist/assets/dist-js-CBmS6MsJ.js +1 -0
  155. package/client/dist/assets/{dist-js-Rlh4FLH5.js → dist-js-DaJmKapi.js} +1 -1
  156. package/client/dist/assets/dropdown-menu-Bfp2CK6H.js +1 -0
  157. package/client/dist/assets/empty-state-D5w9OWj-.js +1 -0
  158. package/client/dist/assets/es2015-DfnECntk.js +41 -0
  159. package/client/dist/assets/esm-BKF6CE7v.js +1 -0
  160. package/client/dist/assets/event-BEnMLqAi.js +1 -0
  161. package/client/dist/assets/explore--NOz9LCN.js +1 -0
  162. package/client/dist/assets/explore-B2ulH6dO.js +1 -0
  163. package/client/dist/assets/explore-BD-QiLdg.js +1 -0
  164. package/client/dist/assets/explore-BOqd4_1j.js +1 -0
  165. package/client/dist/assets/explore-Be_Zh5zu.js +1 -0
  166. package/client/dist/assets/explore-CLjzPSKo.js +1 -0
  167. package/client/dist/assets/explore-D_-vHm29.js +1 -0
  168. package/client/dist/assets/explore-yEQTF6ro.js +1 -0
  169. package/client/dist/assets/file-text-CNXzL3wj.js +1 -0
  170. package/client/dist/assets/format-BODoFIw6.js +1 -0
  171. package/client/dist/assets/formatDistanceToNow-DLMIOS0N.js +1 -0
  172. package/client/dist/assets/getTimezoneOffsetInMilliseconds-O61feXch.js +1 -0
  173. package/client/dist/assets/git-compare-arrows-Cu6tICCq.js +1 -0
  174. package/client/dist/assets/humanise-command-CB4ybLwq.js +1 -0
  175. package/client/dist/assets/inbox-BLZ8cm6_.js +1 -0
  176. package/client/dist/assets/inbox-BQ3VmNYY.js +1 -0
  177. package/client/dist/assets/inbox-BdcXWCuT.js +1 -0
  178. package/client/dist/assets/inbox-CF1PHjns.js +1 -0
  179. package/client/dist/assets/inbox-CFNPDhso.js +1 -0
  180. package/client/dist/assets/inbox-DIttK_NW.js +1 -0
  181. package/client/dist/assets/inbox-Dfdv1Ykl.js +1 -0
  182. package/client/dist/assets/inbox-JS1inmeO.js +1 -0
  183. package/client/dist/assets/index-4UWY7Xyz.css +2 -0
  184. package/client/dist/assets/index-DHzB0T26.js +120 -0
  185. package/client/dist/assets/integrations-BcKgzgPD.js +1 -0
  186. package/client/dist/assets/integrations-BmX_XyJq.js +1 -0
  187. package/client/dist/assets/integrations-CHpwMjlY.js +1 -0
  188. package/client/dist/assets/integrations-CT3kr8e-.js +1 -0
  189. package/client/dist/assets/integrations-C_5XAkgz.js +1 -0
  190. package/client/dist/assets/integrations-Ct9zLX7N.js +1 -0
  191. package/client/dist/assets/integrations-DEYemxUv.js +1 -0
  192. package/client/dist/assets/integrations-DWvsB_WB.js +1 -0
  193. package/client/dist/assets/{jira-Cq6yvN4q.js → jira-B_ERkFRv.js} +1 -1
  194. package/client/dist/assets/jira-Bn-A5lwD.js +1 -0
  195. package/client/dist/assets/jira-C71Ybnhp.js +1 -0
  196. package/client/dist/assets/jira-CkwjeJz6.js +1 -0
  197. package/client/dist/assets/jira-D9pSLXjI.js +1 -0
  198. package/client/dist/assets/jira-DBRS_lcp.js +1 -0
  199. package/client/dist/assets/jira-DHS6CsKh.js +1 -0
  200. package/client/dist/assets/jira-MInHRUb1.js +1 -0
  201. package/client/dist/assets/jira-api-DHme7Upx.js +1 -0
  202. package/client/dist/assets/jobs-BMLTDo63.js +1 -0
  203. package/client/dist/assets/jobs-BO8q4Mi1.js +1 -0
  204. package/client/dist/assets/jobs-Ck8uOWMM.js +1 -0
  205. package/client/dist/assets/jobs-CyFfPCpg.js +1 -0
  206. package/client/dist/assets/jobs-DT5s4fZ6.js +1 -0
  207. package/client/dist/assets/jobs-DZAgVPcD.js +1 -0
  208. package/client/dist/assets/jobs-b5gPYaKr.js +1 -0
  209. package/client/dist/assets/jobs-xsZK1440.js +1 -0
  210. package/client/dist/assets/launch-forecast-BTa-p3RP.js +1 -0
  211. package/client/dist/assets/{loop-layout-DtxX27Jz.css → loop-layout-DLioOiRN.css} +1 -1
  212. package/client/dist/assets/loop-layout-Sl9cfTvs.js +7 -0
  213. package/client/dist/assets/loops-BEEOVJDR.js +1 -0
  214. package/client/dist/assets/loops-BcrQ2vk7.js +1 -0
  215. package/client/dist/assets/loops-BjWxzJIZ.js +1 -0
  216. package/client/dist/assets/loops-BogV595N.js +1 -0
  217. package/client/dist/assets/loops-CU0BLZiz.js +1 -0
  218. package/client/dist/assets/loops-CrNBgi1G.js +1 -0
  219. package/client/dist/assets/loops-CwalwS_i.js +1 -0
  220. package/client/dist/assets/loops-_TDVN-fX.js +1 -0
  221. package/client/dist/assets/mcp-BNs8gxoL.js +1 -0
  222. package/client/dist/assets/mcp-BvRh_xO5.js +1 -0
  223. package/client/dist/assets/mcp-C2F1pghi.js +1 -0
  224. package/client/dist/assets/mcp-D9RLKAs2.js +1 -0
  225. package/client/dist/assets/mcp-DAghcsR0.js +1 -0
  226. package/client/dist/assets/mcp-DWWAPi1G.js +1 -0
  227. package/client/dist/assets/mcp-DbGSFC3f.js +1 -0
  228. package/client/dist/assets/mcp-FelCicrv.js +1 -0
  229. package/client/dist/assets/narration-C3NBkAR4.js +1 -0
  230. package/client/dist/assets/narration-CkoJq-Lf.js +1 -0
  231. package/client/dist/assets/narration-Cr0NeW9K.js +1 -0
  232. package/client/dist/assets/narration-DJUXOs-W.js +1 -0
  233. package/client/dist/assets/narration-DgL8TMvN.js +1 -0
  234. package/client/dist/assets/narration-DjBafgv0.js +1 -0
  235. package/client/dist/assets/narration-Dle6Iv0c.js +1 -0
  236. package/client/dist/assets/narration-MYlfktga.js +1 -0
  237. package/client/dist/assets/nav-BSQ8KW1c.js +1 -0
  238. package/client/dist/assets/nav-BauVof8Z.js +1 -0
  239. package/client/dist/assets/nav-BfOAH1se.js +1 -0
  240. package/client/dist/assets/nav-D3bOsipX.js +1 -0
  241. package/client/dist/assets/nav-DOMMhlLx.js +1 -0
  242. package/client/dist/assets/nav-DPzVlgZU.js +1 -0
  243. package/client/dist/assets/nav-DZJbFbah.js +1 -0
  244. package/client/dist/assets/nav-D_5aojd2.js +1 -0
  245. package/client/dist/assets/notify-error-BsWANx1T.js +1 -0
  246. package/client/dist/assets/onboarding-BdZQnNm3.js +1 -0
  247. package/client/dist/assets/onboarding-CJQEv1vp.js +1 -0
  248. package/client/dist/assets/onboarding-CWJGYUW3.js +1 -0
  249. package/client/dist/assets/onboarding-ChfYN7dA.js +1 -0
  250. package/client/dist/assets/onboarding-CjvDUR3V.js +1 -0
  251. package/client/dist/assets/onboarding-I6vS-zTB.js +1 -0
  252. package/client/dist/assets/onboarding-dgC_9dTB.js +1 -0
  253. package/client/dist/assets/onboarding-mlXSyKzX.js +1 -0
  254. package/client/dist/assets/origin-03nTuaOb.js +1 -0
  255. package/client/dist/assets/packet-BjpyRnZr.js +1 -0
  256. package/client/dist/assets/packet-BwgG5mBt.js +1 -0
  257. package/client/dist/assets/packet-C3eAUFkV.js +1 -0
  258. package/client/dist/assets/packet-C8wZuSld.js +1 -0
  259. package/client/dist/assets/packet-CNXEy_85.js +1 -0
  260. package/client/dist/assets/packet-DsV5Aa_8.js +1 -0
  261. package/client/dist/assets/packet-aasskOE7.js +1 -0
  262. package/client/dist/assets/packet-phxCc2gJ.js +1 -0
  263. package/client/dist/assets/page-header-BStSHkP8.js +1 -0
  264. package/client/dist/assets/project-repositories-DJPeAVBK.js +1 -0
  265. package/client/dist/assets/{provider-capabilities-lePfeT_Y.js → provider-capabilities-DtwcTme4.js} +1 -1
  266. package/client/dist/assets/recovery-BPDOsC92.js +1 -0
  267. package/client/dist/assets/recovery-BluNHoXM.js +1 -0
  268. package/client/dist/assets/recovery-CRvEmB0C.js +1 -0
  269. package/client/dist/assets/recovery-CeIoRnkR.js +1 -0
  270. package/client/dist/assets/recovery-DHCo8KGi.js +1 -0
  271. package/client/dist/assets/recovery-OxAIpbBF.js +1 -0
  272. package/client/dist/assets/recovery-XXexYGOJ.js +1 -0
  273. package/client/dist/assets/recovery-pITlc--v.js +1 -0
  274. package/client/dist/assets/refresh-cw-DfyTkbsf.js +1 -0
  275. package/client/dist/assets/select-xA3pSmqE.js +1 -0
  276. package/client/dist/assets/settings--yzDbX9r.js +1 -0
  277. package/client/dist/assets/settings-5_heTv8s.js +1 -0
  278. package/client/dist/assets/settings-BSf27MDg.js +1 -0
  279. package/client/dist/assets/settings-BSj6FakR.js +1 -0
  280. package/client/dist/assets/settings-BZDo_8Nn.js +1 -0
  281. package/client/dist/assets/settings-BdWgmNc0.js +1 -0
  282. package/client/dist/assets/settings-DRouxKqb.js +1 -0
  283. package/client/dist/assets/settings-DnWFoY-F.js +1 -0
  284. package/client/dist/assets/setup-BJWy62ri.js +1 -0
  285. package/client/dist/assets/setup-BgKOIuzc.js +1 -0
  286. package/client/dist/assets/setup-BvVIyUlz.js +1 -0
  287. package/client/dist/assets/setup-BxCk2pe1.js +1 -0
  288. package/client/dist/assets/setup-C-xQTL7R.js +1 -0
  289. package/client/dist/assets/setup-CbaVoiwV.js +1 -0
  290. package/client/dist/assets/setup-DxTBkX3P.js +1 -0
  291. package/client/dist/assets/setup-oGoVAzOD.js +1 -0
  292. package/client/dist/assets/specs-7tAb4IKr.js +1 -0
  293. package/client/dist/assets/specs-BUcY4s5v.js +1 -0
  294. package/client/dist/assets/specs-Bk5LeBAA.js +1 -0
  295. package/client/dist/assets/specs-CAA4Lrlg.js +1 -0
  296. package/client/dist/assets/specs-CS091AnA.js +1 -0
  297. package/client/dist/assets/specs-DJ6gmFcK.js +1 -0
  298. package/client/dist/assets/specs-GfCcrBSC.js +1 -0
  299. package/client/dist/assets/specs-xQgyc7WL.js +1 -0
  300. package/client/dist/assets/spending-CVH8VREb.js +1 -0
  301. package/client/dist/assets/square-Co6h5vZg.js +1 -0
  302. package/client/dist/assets/tauri-shell-43ixPGfa.js +2 -0
  303. package/client/dist/assets/terminal-0v9sBylD.js +1 -0
  304. package/client/dist/assets/terminal-AbUAmCxE.js +1 -0
  305. package/client/dist/assets/terminal-BJayIbIP.js +1 -0
  306. package/client/dist/assets/terminal-C2RUlXyi.js +1 -0
  307. package/client/dist/assets/terminal-CMmSb_Nj.js +1 -0
  308. package/client/dist/assets/terminal-DKWjj7HJ.js +1 -0
  309. package/client/dist/assets/terminal-KlFu7_pV.js +1 -0
  310. package/client/dist/assets/terminal-i99yqFvm.js +1 -0
  311. package/client/dist/assets/tickets-846Oq3i3.js +1 -0
  312. package/client/dist/assets/tickets-B5LJTe_b.js +1 -0
  313. package/client/dist/assets/tickets-Bfo2GGmH.js +1 -0
  314. package/client/dist/assets/tickets-BhdZ1yY2.js +1 -0
  315. package/client/dist/assets/tickets-CgjWJHAW.js +1 -0
  316. package/client/dist/assets/tickets-Ct9DbDUR.js +1 -0
  317. package/client/dist/assets/tickets-rptLEJB1.js +1 -0
  318. package/client/dist/assets/tickets-xQ6DpYdu.js +1 -0
  319. package/client/dist/assets/trending-up-BGvb4zZt.js +1 -0
  320. package/client/dist/assets/undo-6zuS4-sL.js +1 -0
  321. package/client/dist/assets/undo-BeM4gDOP.js +1 -0
  322. package/client/dist/assets/undo-BeppX8xS.js +1 -0
  323. package/client/dist/assets/undo-BqvNZ5MG.js +1 -0
  324. package/client/dist/assets/undo-BzwEPf_k.js +1 -0
  325. package/client/dist/assets/undo-CJ9Cu1NN.js +1 -0
  326. package/client/dist/assets/undo-ds8nMFbX.js +1 -0
  327. package/client/dist/assets/undo-x_gA-knG.js +1 -0
  328. package/client/dist/assets/useDesktop-BuOp2-MR.js +1 -0
  329. package/client/dist/assets/useRuntimeRuns-BRS6ncnO.js +1 -0
  330. package/client/dist/assets/utils-ELimjS2Y.js +1 -0
  331. package/client/dist/assets/wrench-Br2n1Lxd.js +1 -0
  332. package/client/dist/index.html +75 -60
  333. package/docs/ci-cd.md +29 -1
  334. package/docs/cli.md +10 -31
  335. package/docs/codex.md +1 -1
  336. package/docs/creating-specs.md +15 -12
  337. package/docs/customizing.md +16 -13
  338. package/docs/getting-started.md +12 -11
  339. package/docs/guide/de/agents/1-meet-the-agents.md +1 -1
  340. package/docs/guide/de/getting-started/2-installing-and-first-run.md +2 -0
  341. package/docs/guide/de/getting-started/3-try-the-sample-project.md +35 -0
  342. package/docs/guide/de/getting-started/{4-the-dashboard-tour.md → 5-the-dashboard-tour.md} +7 -3
  343. package/docs/guide/de/getting-started/6-universal-search.md +34 -0
  344. package/docs/guide/de/insights/1-analytics-and-cost-tracking.md +20 -6
  345. package/docs/guide/de/insights/2-the-integrated-terminal.md +1 -1
  346. package/docs/guide/de/insights/3-code-explorer.md +1 -1
  347. package/docs/guide/de/integrations/1-ai-providers.md +1 -1
  348. package/docs/guide/de/integrations/2-plugins.md +1 -1
  349. package/docs/guide/de/integrations/3-jira-integration.md +3 -3
  350. package/docs/guide/de/integrations/4-mobile-companion.md +1 -1
  351. package/docs/guide/de/integrations/5-mcp-server.md +1 -1
  352. package/docs/guide/de/integrations/6-agent-chat.md +12 -5
  353. package/docs/guide/de/integrations/8-flow-mode.md +69 -0
  354. package/docs/guide/de/pipeline/1-rails-and-jobs.md +21 -1
  355. package/docs/guide/de/pipeline/2-the-job-detail-view.md +12 -0
  356. package/docs/guide/de/pipeline/3-reviewing-a-delivery.md +43 -0
  357. package/docs/guide/de/pipeline/4-picking-an-engine-per-rail.md +2 -2
  358. package/docs/guide/de/pipeline/5-the-loop-builder.md +1 -1
  359. package/docs/guide/de/settings/1-themes.md +1 -1
  360. package/docs/guide/de/settings/3-pipeline-telemetry-and-diagnostics.md +2 -2
  361. package/docs/guide/de/settings/5-project-environment.md +1 -1
  362. package/docs/guide/de/settings/6-updates.md +24 -0
  363. package/docs/guide/de/settings/7-existing-projects.md +33 -0
  364. package/docs/guide/de/settings/8-accessibility.md +23 -0
  365. package/docs/guide/de/specs/1-specs-and-the-backlog.md +41 -3
  366. package/docs/guide/de/specs/2-add-spec-quick-mode.md +1 -1
  367. package/docs/guide/de/specs/3-add-spec-explore-mode.md +1 -1
  368. package/docs/guide/en/agents/1-meet-the-agents.md +1 -1
  369. package/docs/guide/en/getting-started/1-what-is-specrails.md +1 -1
  370. package/docs/guide/en/getting-started/2-installing-and-first-run.md +2 -0
  371. package/docs/guide/en/getting-started/3-try-the-sample-project.md +35 -0
  372. package/docs/guide/en/getting-started/5-the-dashboard-tour.md +52 -0
  373. package/docs/guide/en/getting-started/6-universal-search.md +34 -0
  374. package/docs/guide/en/insights/1-analytics-and-cost-tracking.md +24 -10
  375. package/docs/guide/en/insights/2-the-integrated-terminal.md +1 -1
  376. package/docs/guide/en/insights/3-code-explorer.md +5 -5
  377. package/docs/guide/en/integrations/1-ai-providers.md +1 -1
  378. package/docs/guide/en/integrations/2-plugins.md +1 -1
  379. package/docs/guide/en/integrations/3-jira-integration.md +4 -4
  380. package/docs/guide/en/integrations/4-mobile-companion.md +1 -1
  381. package/docs/guide/en/integrations/5-mcp-server.md +4 -4
  382. package/docs/guide/en/integrations/6-agent-chat.md +12 -5
  383. package/docs/guide/en/integrations/8-flow-mode.md +69 -0
  384. package/docs/guide/en/pipeline/1-rails-and-jobs.md +22 -3
  385. package/docs/guide/en/pipeline/2-the-job-detail-view.md +19 -7
  386. package/docs/guide/en/pipeline/3-reviewing-a-delivery.md +43 -0
  387. package/docs/guide/en/pipeline/4-picking-an-engine-per-rail.md +2 -2
  388. package/docs/guide/en/pipeline/5-the-loop-builder.md +2 -2
  389. package/docs/guide/en/settings/1-themes.md +1 -1
  390. package/docs/guide/en/settings/3-pipeline-telemetry-and-diagnostics.md +2 -2
  391. package/docs/guide/en/settings/5-project-environment.md +1 -1
  392. package/docs/guide/en/settings/6-updates.md +24 -0
  393. package/docs/guide/en/settings/7-existing-projects.md +33 -0
  394. package/docs/guide/en/settings/8-accessibility.md +23 -0
  395. package/docs/guide/en/specs/1-specs-and-the-backlog.md +42 -6
  396. package/docs/guide/en/specs/2-add-spec-quick-mode.md +1 -1
  397. package/docs/guide/en/specs/3-add-spec-explore-mode.md +2 -2
  398. package/docs/guide/es/agents/1-meet-the-agents.md +1 -1
  399. package/docs/guide/es/agents/2-profiles-and-the-balanced-default.md +1 -1
  400. package/docs/guide/es/agents/3-customizing-models-per-agent.md +2 -2
  401. package/docs/guide/es/agents/4-custom-agents-catalog.md +1 -1
  402. package/docs/guide/es/getting-started/1-what-is-specrails.md +3 -3
  403. package/docs/guide/es/getting-started/2-installing-and-first-run.md +2 -0
  404. package/docs/guide/es/getting-started/3-try-the-sample-project.md +35 -0
  405. package/docs/guide/es/getting-started/5-the-dashboard-tour.md +52 -0
  406. package/docs/guide/es/getting-started/6-universal-search.md +34 -0
  407. package/docs/guide/es/insights/1-analytics-and-cost-tracking.md +26 -12
  408. package/docs/guide/es/insights/2-the-integrated-terminal.md +1 -1
  409. package/docs/guide/es/insights/3-code-explorer.md +5 -5
  410. package/docs/guide/es/integrations/1-ai-providers.md +1 -1
  411. package/docs/guide/es/integrations/2-plugins.md +1 -1
  412. package/docs/guide/es/integrations/3-jira-integration.md +4 -4
  413. package/docs/guide/es/integrations/4-mobile-companion.md +1 -1
  414. package/docs/guide/es/integrations/5-mcp-server.md +4 -4
  415. package/docs/guide/es/integrations/6-agent-chat.md +14 -7
  416. package/docs/guide/es/integrations/7-local-engines.md +1 -1
  417. package/docs/guide/es/integrations/8-flow-mode.md +69 -0
  418. package/docs/guide/es/pipeline/1-rails-and-jobs.md +33 -13
  419. package/docs/guide/es/pipeline/2-the-job-detail-view.md +38 -26
  420. package/docs/guide/es/pipeline/3-reviewing-a-delivery.md +43 -0
  421. package/docs/guide/es/pipeline/4-picking-an-engine-per-rail.md +2 -2
  422. package/docs/guide/es/pipeline/5-the-loop-builder.md +4 -4
  423. package/docs/guide/es/settings/1-themes.md +1 -1
  424. package/docs/guide/es/settings/3-pipeline-telemetry-and-diagnostics.md +10 -10
  425. package/docs/guide/es/settings/5-project-environment.md +1 -1
  426. package/docs/guide/es/settings/6-updates.md +24 -0
  427. package/docs/guide/es/settings/7-existing-projects.md +33 -0
  428. package/docs/guide/es/settings/8-accessibility.md +23 -0
  429. package/docs/guide/es/specs/1-specs-and-the-backlog.md +43 -7
  430. package/docs/guide/es/specs/2-add-spec-quick-mode.md +1 -1
  431. package/docs/guide/es/specs/3-add-spec-explore-mode.md +3 -3
  432. package/docs/guide/fr/agents/1-meet-the-agents.md +1 -1
  433. package/docs/guide/fr/getting-started/2-installing-and-first-run.md +2 -0
  434. package/docs/guide/fr/getting-started/3-try-the-sample-project.md +35 -0
  435. package/docs/guide/fr/getting-started/{4-the-dashboard-tour.md → 5-the-dashboard-tour.md} +7 -3
  436. package/docs/guide/fr/getting-started/6-universal-search.md +34 -0
  437. package/docs/guide/fr/insights/1-analytics-and-cost-tracking.md +18 -4
  438. package/docs/guide/fr/insights/2-the-integrated-terminal.md +1 -1
  439. package/docs/guide/fr/insights/3-code-explorer.md +1 -1
  440. package/docs/guide/fr/integrations/1-ai-providers.md +1 -1
  441. package/docs/guide/fr/integrations/2-plugins.md +1 -1
  442. package/docs/guide/fr/integrations/3-jira-integration.md +3 -3
  443. package/docs/guide/fr/integrations/4-mobile-companion.md +1 -1
  444. package/docs/guide/fr/integrations/5-mcp-server.md +1 -1
  445. package/docs/guide/fr/integrations/6-agent-chat.md +11 -4
  446. package/docs/guide/fr/integrations/8-flow-mode.md +69 -0
  447. package/docs/guide/fr/pipeline/1-rails-and-jobs.md +21 -1
  448. package/docs/guide/fr/pipeline/2-the-job-detail-view.md +12 -0
  449. package/docs/guide/fr/pipeline/3-reviewing-a-delivery.md +43 -0
  450. package/docs/guide/fr/pipeline/4-picking-an-engine-per-rail.md +2 -2
  451. package/docs/guide/fr/pipeline/5-the-loop-builder.md +1 -1
  452. package/docs/guide/fr/settings/1-themes.md +1 -1
  453. package/docs/guide/fr/settings/3-pipeline-telemetry-and-diagnostics.md +2 -2
  454. package/docs/guide/fr/settings/5-project-environment.md +1 -1
  455. package/docs/guide/fr/settings/6-updates.md +24 -0
  456. package/docs/guide/fr/settings/7-existing-projects.md +33 -0
  457. package/docs/guide/fr/settings/8-accessibility.md +23 -0
  458. package/docs/guide/fr/specs/1-specs-and-the-backlog.md +41 -3
  459. package/docs/guide/fr/specs/2-add-spec-quick-mode.md +1 -1
  460. package/docs/guide/fr/specs/3-add-spec-explore-mode.md +1 -1
  461. package/docs/guide/it/agents/1-meet-the-agents.md +1 -1
  462. package/docs/guide/it/getting-started/2-installing-and-first-run.md +2 -0
  463. package/docs/guide/it/getting-started/3-try-the-sample-project.md +35 -0
  464. package/docs/guide/it/getting-started/{4-the-dashboard-tour.md → 5-the-dashboard-tour.md} +7 -3
  465. package/docs/guide/it/getting-started/6-universal-search.md +34 -0
  466. package/docs/guide/it/insights/1-analytics-and-cost-tracking.md +18 -4
  467. package/docs/guide/it/insights/2-the-integrated-terminal.md +1 -1
  468. package/docs/guide/it/insights/3-code-explorer.md +1 -1
  469. package/docs/guide/it/integrations/1-ai-providers.md +1 -1
  470. package/docs/guide/it/integrations/2-plugins.md +1 -1
  471. package/docs/guide/it/integrations/3-jira-integration.md +3 -3
  472. package/docs/guide/it/integrations/4-mobile-companion.md +1 -1
  473. package/docs/guide/it/integrations/5-mcp-server.md +1 -1
  474. package/docs/guide/it/integrations/6-agent-chat.md +11 -4
  475. package/docs/guide/it/integrations/8-flow-mode.md +69 -0
  476. package/docs/guide/it/pipeline/1-rails-and-jobs.md +21 -1
  477. package/docs/guide/it/pipeline/2-the-job-detail-view.md +12 -0
  478. package/docs/guide/it/pipeline/3-reviewing-a-delivery.md +43 -0
  479. package/docs/guide/it/pipeline/4-picking-an-engine-per-rail.md +2 -2
  480. package/docs/guide/it/pipeline/5-the-loop-builder.md +1 -1
  481. package/docs/guide/it/settings/1-themes.md +1 -1
  482. package/docs/guide/it/settings/3-pipeline-telemetry-and-diagnostics.md +2 -2
  483. package/docs/guide/it/settings/5-project-environment.md +1 -1
  484. package/docs/guide/it/settings/6-updates.md +24 -0
  485. package/docs/guide/it/settings/7-existing-projects.md +33 -0
  486. package/docs/guide/it/settings/8-accessibility.md +23 -0
  487. package/docs/guide/it/specs/1-specs-and-the-backlog.md +41 -3
  488. package/docs/guide/it/specs/2-add-spec-quick-mode.md +1 -1
  489. package/docs/guide/it/specs/3-add-spec-explore-mode.md +1 -1
  490. package/docs/guide/ja/agents/1-meet-the-agents.md +1 -1
  491. package/docs/guide/ja/getting-started/2-installing-and-first-run.md +2 -0
  492. package/docs/guide/ja/getting-started/3-try-the-sample-project.md +35 -0
  493. package/docs/guide/ja/getting-started/{4-the-dashboard-tour.md → 5-the-dashboard-tour.md} +7 -3
  494. package/docs/guide/ja/getting-started/6-universal-search.md +34 -0
  495. package/docs/guide/ja/insights/1-analytics-and-cost-tracking.md +18 -4
  496. package/docs/guide/ja/insights/2-the-integrated-terminal.md +1 -1
  497. package/docs/guide/ja/insights/3-code-explorer.md +1 -1
  498. package/docs/guide/ja/integrations/1-ai-providers.md +1 -1
  499. package/docs/guide/ja/integrations/2-plugins.md +1 -1
  500. package/docs/guide/ja/integrations/3-jira-integration.md +3 -3
  501. package/docs/guide/ja/integrations/4-mobile-companion.md +1 -1
  502. package/docs/guide/ja/integrations/5-mcp-server.md +1 -1
  503. package/docs/guide/ja/integrations/6-agent-chat.md +11 -4
  504. package/docs/guide/ja/integrations/8-flow-mode.md +69 -0
  505. package/docs/guide/ja/pipeline/1-rails-and-jobs.md +21 -1
  506. package/docs/guide/ja/pipeline/2-the-job-detail-view.md +12 -0
  507. package/docs/guide/ja/pipeline/3-reviewing-a-delivery.md +43 -0
  508. package/docs/guide/ja/pipeline/4-picking-an-engine-per-rail.md +2 -2
  509. package/docs/guide/ja/pipeline/5-the-loop-builder.md +1 -1
  510. package/docs/guide/ja/settings/1-themes.md +1 -1
  511. package/docs/guide/ja/settings/3-pipeline-telemetry-and-diagnostics.md +2 -2
  512. package/docs/guide/ja/settings/5-project-environment.md +1 -1
  513. package/docs/guide/ja/settings/6-updates.md +24 -0
  514. package/docs/guide/ja/settings/7-existing-projects.md +33 -0
  515. package/docs/guide/ja/settings/8-accessibility.md +23 -0
  516. package/docs/guide/ja/specs/1-specs-and-the-backlog.md +41 -3
  517. package/docs/guide/ja/specs/2-add-spec-quick-mode.md +1 -1
  518. package/docs/guide/ja/specs/3-add-spec-explore-mode.md +1 -1
  519. package/docs/guide/pt/agents/1-meet-the-agents.md +1 -1
  520. package/docs/guide/pt/getting-started/2-installing-and-first-run.md +2 -0
  521. package/docs/guide/pt/getting-started/3-try-the-sample-project.md +35 -0
  522. package/docs/guide/pt/getting-started/{4-the-dashboard-tour.md → 5-the-dashboard-tour.md} +7 -3
  523. package/docs/guide/pt/getting-started/6-universal-search.md +34 -0
  524. package/docs/guide/pt/insights/1-analytics-and-cost-tracking.md +18 -4
  525. package/docs/guide/pt/insights/2-the-integrated-terminal.md +1 -1
  526. package/docs/guide/pt/insights/3-code-explorer.md +1 -1
  527. package/docs/guide/pt/integrations/1-ai-providers.md +1 -1
  528. package/docs/guide/pt/integrations/2-plugins.md +1 -1
  529. package/docs/guide/pt/integrations/3-jira-integration.md +3 -3
  530. package/docs/guide/pt/integrations/4-mobile-companion.md +1 -1
  531. package/docs/guide/pt/integrations/5-mcp-server.md +1 -1
  532. package/docs/guide/pt/integrations/6-agent-chat.md +12 -5
  533. package/docs/guide/pt/integrations/8-flow-mode.md +69 -0
  534. package/docs/guide/pt/pipeline/1-rails-and-jobs.md +21 -1
  535. package/docs/guide/pt/pipeline/2-the-job-detail-view.md +12 -0
  536. package/docs/guide/pt/pipeline/3-reviewing-a-delivery.md +43 -0
  537. package/docs/guide/pt/pipeline/4-picking-an-engine-per-rail.md +2 -2
  538. package/docs/guide/pt/pipeline/5-the-loop-builder.md +1 -1
  539. package/docs/guide/pt/settings/1-themes.md +1 -1
  540. package/docs/guide/pt/settings/3-pipeline-telemetry-and-diagnostics.md +2 -2
  541. package/docs/guide/pt/settings/5-project-environment.md +1 -1
  542. package/docs/guide/pt/settings/6-updates.md +24 -0
  543. package/docs/guide/pt/settings/7-existing-projects.md +33 -0
  544. package/docs/guide/pt/settings/8-accessibility.md +23 -0
  545. package/docs/guide/pt/specs/1-specs-and-the-backlog.md +41 -3
  546. package/docs/guide/pt/specs/2-add-spec-quick-mode.md +1 -1
  547. package/docs/guide/pt/specs/3-add-spec-explore-mode.md +1 -1
  548. package/docs/guide/zh/agents/1-meet-the-agents.md +1 -1
  549. package/docs/guide/zh/getting-started/2-installing-and-first-run.md +2 -0
  550. package/docs/guide/zh/getting-started/3-try-the-sample-project.md +35 -0
  551. package/docs/guide/zh/getting-started/{4-the-dashboard-tour.md → 5-the-dashboard-tour.md} +7 -3
  552. package/docs/guide/zh/getting-started/6-universal-search.md +34 -0
  553. package/docs/guide/zh/insights/1-analytics-and-cost-tracking.md +18 -4
  554. package/docs/guide/zh/insights/2-the-integrated-terminal.md +1 -1
  555. package/docs/guide/zh/insights/3-code-explorer.md +1 -1
  556. package/docs/guide/zh/integrations/1-ai-providers.md +1 -1
  557. package/docs/guide/zh/integrations/2-plugins.md +1 -1
  558. package/docs/guide/zh/integrations/3-jira-integration.md +3 -3
  559. package/docs/guide/zh/integrations/4-mobile-companion.md +1 -1
  560. package/docs/guide/zh/integrations/5-mcp-server.md +1 -1
  561. package/docs/guide/zh/integrations/6-agent-chat.md +11 -4
  562. package/docs/guide/zh/integrations/8-flow-mode.md +69 -0
  563. package/docs/guide/zh/pipeline/1-rails-and-jobs.md +21 -1
  564. package/docs/guide/zh/pipeline/2-the-job-detail-view.md +12 -0
  565. package/docs/guide/zh/pipeline/3-reviewing-a-delivery.md +43 -0
  566. package/docs/guide/zh/pipeline/4-picking-an-engine-per-rail.md +2 -2
  567. package/docs/guide/zh/pipeline/5-the-loop-builder.md +1 -1
  568. package/docs/guide/zh/settings/1-themes.md +1 -1
  569. package/docs/guide/zh/settings/3-pipeline-telemetry-and-diagnostics.md +2 -2
  570. package/docs/guide/zh/settings/5-project-environment.md +1 -1
  571. package/docs/guide/zh/settings/6-updates.md +24 -0
  572. package/docs/guide/zh/settings/7-existing-projects.md +33 -0
  573. package/docs/guide/zh/settings/8-accessibility.md +23 -0
  574. package/docs/guide/zh/specs/1-specs-and-the-backlog.md +41 -3
  575. package/docs/guide/zh/specs/2-add-spec-quick-mode.md +1 -1
  576. package/docs/guide/zh/specs/3-add-spec-explore-mode.md +1 -1
  577. package/docs/internals/README.md +8 -0
  578. package/docs/internals/adding-a-provider.md +19 -2
  579. package/docs/internals/agent-actions-audit.md +101 -0
  580. package/docs/internals/agent-sessions.md +36 -1
  581. package/docs/internals/api-reference.md +190 -45
  582. package/docs/internals/architecture.md +53 -47
  583. package/docs/internals/companion-inbox-decisions.md +42 -0
  584. package/docs/internals/companion-rails-as-loops-contract.md +17 -6
  585. package/docs/internals/configuration.md +140 -9
  586. package/docs/internals/core-runtime-updates.md +4 -4
  587. package/docs/internals/existing-project-anchoring.md +168 -0
  588. package/docs/internals/flow-mode.md +668 -0
  589. package/docs/internals/legacy-implementation-notes.md +13 -0
  590. package/docs/internals/local-testing-feedback-2026-10.md +210 -0
  591. package/docs/internals/mcp-mission-audit.md +4 -0
  592. package/docs/internals/mission-rail-cards.md +10 -5
  593. package/docs/internals/mission-read-only-policy.md +152 -0
  594. package/docs/internals/modal-standard.md +181 -0
  595. package/docs/internals/openspec-workflow.md +32 -0
  596. package/docs/internals/operations-runbook.md +30 -0
  597. package/docs/internals/profiles.md +6 -3
  598. package/docs/internals/programmatic-agent-runtime.md +8 -0
  599. package/docs/internals/project-builder.md +1 -1
  600. package/docs/internals/review-packet.md +161 -9
  601. package/docs/internals/safe-pr-review-flow.md +135 -6
  602. package/docs/internals/source-map.md +413 -18
  603. package/docs/internals/spec-addenda.md +10 -0
  604. package/docs/internals/spec-triage.md +140 -0
  605. package/docs/internals/visual-design-audit.md +15 -2
  606. package/docs/local-providers.md +3 -0
  607. package/docs/mcp.md +21 -3
  608. package/docs/platforms/macos.md +1 -1
  609. package/docs/platforms/windows.md +2 -2
  610. package/docs/running-pipelines.md +22 -6
  611. package/docs/tracking-cost.md +54 -10
  612. package/local-runner/dist/specrails-local-runner.js +3851 -1178
  613. package/mcp-bridge/dist/specrails-mcp.js +3864 -1143
  614. package/package.json +10 -9
  615. package/server/dist/agent-mcp-config.js +37 -1
  616. package/server/dist/api-version.js +19 -0
  617. package/server/dist/command-resolver.js +4 -2
  618. package/server/dist/core-compat.js +1 -1
  619. package/server/dist/core-execution.js +2 -1
  620. package/server/dist/core-update-manager.js +71 -13
  621. package/server/dist/db/job-search.js +248 -0
  622. package/server/dist/db/jobs.js +6 -0
  623. package/server/dist/db/migrations.js +239 -0
  624. package/server/dist/db.js +9 -2
  625. package/server/dist/desktop-db.js +99 -5
  626. package/server/dist/desktop-router.js +126 -13
  627. package/server/dist/docs-router.js +67 -1
  628. package/server/dist/feature-flags.js +22 -0
  629. package/server/dist/index.js +30 -15
  630. package/server/dist/jira/jira-adf.js +13 -1
  631. package/server/dist/jira/jira-clarifications.js +146 -0
  632. package/server/dist/jira/jira-client.js +8 -1
  633. package/server/dist/jira/jira-db.js +41 -0
  634. package/server/dist/jira/jira-sync-manager.js +328 -25
  635. package/server/dist/mcp/guide.js +17 -7
  636. package/server/dist/mcp/tools/agents.js +1 -1
  637. package/server/dist/mcp/tools/analytics.js +15 -3
  638. package/server/dist/mcp/tools/app-settings.js +14 -1
  639. package/server/dist/mcp/tools/chat.js +1 -1
  640. package/server/dist/mcp/tools/env.js +4 -2
  641. package/server/dist/mcp/tools/jobs.js +96 -7
  642. package/server/dist/mcp/tools/loops.js +1 -1
  643. package/server/dist/mcp/tools/meta.js +10 -13
  644. package/server/dist/mcp/tools/rails.js +15 -1
  645. package/server/dist/mcp/tools/setup.js +1 -1
  646. package/server/dist/mcp/tools/specs.js +8 -5
  647. package/server/dist/mcp/tools/support.js +6 -3
  648. package/server/dist/mcp/tools/types.js +38 -1
  649. package/server/dist/mobile/mobile-admin-router.js +0 -16
  650. package/server/dist/mobile/mobile-gateway.js +0 -18
  651. package/server/dist/mobile/mobile-inbox.js +240 -0
  652. package/server/dist/mobile/mobile-missions.js +6 -8
  653. package/server/dist/mobile/mobile-router.js +9 -9
  654. package/server/dist/mobile/mobile-webrtc-peer.js +4 -54
  655. package/server/dist/mobile/mobile-ws.js +27 -4
  656. package/server/dist/modules/accounting/runtime/ai-invocations.js +4 -0
  657. package/server/dist/modules/accounting/runtime/decision-times.js +102 -0
  658. package/server/dist/modules/accounting/runtime/loop-economics.js +284 -0
  659. package/server/dist/modules/accounting/runtime/spending.js +7 -2
  660. package/server/dist/modules/accounting/runtime/what-if.js +87 -0
  661. package/server/dist/modules/agent-runtime/runtime/agent-runtime-bridge.js +86 -5
  662. package/server/dist/modules/agent-runtime/runtime/agent-runtime-controls.js +28 -2
  663. package/server/dist/modules/agent-runtime/runtime/agent-runtime-metrics.js +15 -2
  664. package/server/dist/modules/agent-runtime/runtime/agent-runtime-settings-router.js +21 -2
  665. package/server/dist/modules/agent-runtime/runtime/core-capabilities.js +55 -0
  666. package/server/dist/modules/agent-sessions/adapters/host-process.js +1 -1
  667. package/server/dist/modules/agent-sessions/domain/availability.js +16 -0
  668. package/server/dist/modules/agent-sessions/domain/protocol.js +8 -1
  669. package/server/dist/modules/agent-sessions/index.js +3 -1
  670. package/server/dist/modules/agent-sessions/runtime/core-sessions-availability.js +16 -0
  671. package/server/dist/modules/agents/runtime/agent-refine-manager.js +3 -1
  672. package/server/dist/modules/agents/runtime/agent-store.js +60 -73
  673. package/server/dist/modules/audit/adapters/http.js +66 -0
  674. package/server/dist/modules/audit/adapters/runtime.js +60 -0
  675. package/server/dist/modules/audit/adapters/sqlite.js +73 -0
  676. package/server/dist/modules/audit/application.js +190 -0
  677. package/server/dist/modules/audit/domain.js +434 -0
  678. package/server/dist/modules/audit/index.js +27 -0
  679. package/server/dist/modules/audit/ports.js +2 -0
  680. package/server/dist/modules/browser/runtime/browser-capture-manager.js +18 -141
  681. package/server/dist/modules/browser/runtime/browser-capture-types.js +1 -10
  682. package/server/dist/modules/browser/runtime/browser-playwright.js +0 -19
  683. package/server/dist/modules/code/runtime/file-provenance.js +23 -0
  684. package/server/dist/modules/conversations/runtime/chat-manager.js +5 -2
  685. package/server/dist/modules/delivery/adapters/decisions/chains.js +1 -0
  686. package/server/dist/modules/delivery/adapters/decisions/create.js +19 -1
  687. package/server/dist/modules/delivery/adapters/decisions/discard.js +2 -0
  688. package/server/dist/modules/delivery/adapters/decisions/local-changes.js +427 -0
  689. package/server/dist/modules/delivery/adapters/decisions/merge-local.js +80 -6
  690. package/server/dist/modules/delivery/adapters/decisions/observations.js +5 -0
  691. package/server/dist/modules/delivery/adapters/decisions/ownership.js +2 -1
  692. package/server/dist/modules/delivery/adapters/decisions/transitions.js +9 -0
  693. package/server/dist/modules/delivery/adapters/review-wip-store.js +37 -0
  694. package/server/dist/modules/delivery/domain/review-wip.js +71 -0
  695. package/server/dist/modules/delivery/index.js +9 -1
  696. package/server/dist/modules/delivery/runtime/delivery-changes.js +355 -0
  697. package/server/dist/modules/delivery/runtime/delivery-evidence.js +249 -8
  698. package/server/dist/modules/delivery/runtime/flow-review-legacy.js +99 -0
  699. package/server/dist/modules/delivery/runtime/flow-review-outcome.js +107 -0
  700. package/server/dist/modules/delivery/runtime/flow-worktree-handoff.js +32 -0
  701. package/server/dist/modules/delivery/runtime/flow-worktree-return.js +87 -0
  702. package/server/dist/modules/delivery/runtime/isolated-worktree.js +380 -0
  703. package/server/dist/modules/delivery/runtime/local-restore-branch.js +325 -0
  704. package/server/dist/modules/delivery/runtime/local-restore-resolver.js +48 -0
  705. package/server/dist/modules/delivery/runtime/local-stash.js +423 -0
  706. package/server/dist/modules/delivery/runtime/multi-repo-execution.js +27 -1
  707. package/server/dist/modules/delivery/runtime/phase3-harvest.js +40 -0
  708. package/server/dist/modules/delivery/runtime/pr-body.js +50 -0
  709. package/server/dist/modules/delivery/runtime/rail-isolated-launch.js +169 -166
  710. package/server/dist/modules/delivery/runtime/rail-launch-parser.js +5 -2
  711. package/server/dist/modules/delivery/runtime/rail-pr-decision.js +7 -1
  712. package/server/dist/modules/delivery/runtime/rail-pr-store.js +193 -12
  713. package/server/dist/modules/delivery/runtime/rails-router.js +267 -5
  714. package/server/dist/modules/delivery/runtime/review-brief.js +208 -0
  715. package/server/dist/modules/delivery/runtime/review-packet.js +41 -2
  716. package/server/dist/modules/delivery/runtime/review-wip-gate.js +67 -0
  717. package/server/dist/modules/delivery/runtime/run-records.js +267 -0
  718. package/server/dist/modules/delivery/runtime/run-review-diagnosis.js +102 -0
  719. package/server/dist/modules/execution/adapters/budget-storage.js +76 -0
  720. package/server/dist/modules/execution/application/enforce-budget.js +17 -2
  721. package/server/dist/modules/execution/domain/agent-env.js +98 -0
  722. package/server/dist/modules/execution/domain/daily-budget.js +36 -0
  723. package/server/dist/modules/execution/domain/spend-caps.js +166 -0
  724. package/server/dist/modules/execution/index.js +34 -1
  725. package/server/dist/modules/execution/runtime/budget-overview.js +76 -0
  726. package/server/dist/modules/execution/runtime/daily-budget-gate.js +86 -0
  727. package/server/dist/modules/execution/runtime/interactive-job-session.js +8 -0
  728. package/server/dist/modules/execution/runtime/launch-forecast.js +33 -0
  729. package/server/dist/modules/execution/runtime/queue-manager.js +54 -15
  730. package/server/dist/modules/execution/runtime/run-duration-stats.js +31 -13
  731. package/server/dist/modules/flow/adapters/bindings.js +1089 -0
  732. package/server/dist/modules/flow/adapters/http.js +147 -0
  733. package/server/dist/modules/flow/adapters/sqlite.js +121 -0
  734. package/server/dist/modules/flow/application.js +805 -0
  735. package/server/dist/modules/flow/domain.js +790 -0
  736. package/server/dist/modules/flow/index.js +34 -0
  737. package/server/dist/modules/flow/ports.js +2 -0
  738. package/server/dist/modules/inbox/adapters/http.js +21 -0
  739. package/server/dist/modules/inbox/adapters/project-source.js +233 -0
  740. package/server/dist/modules/inbox/application.js +28 -0
  741. package/server/dist/modules/inbox/domain.js +43 -0
  742. package/server/dist/modules/inbox/index.js +10 -0
  743. package/server/dist/modules/inbox/ports.js +2 -0
  744. package/server/dist/modules/loops/runtime/loop-definition-run.js +9 -0
  745. package/server/dist/modules/loops/runtime/loop-definition.js +5 -2
  746. package/server/dist/modules/loops/runtime/loop-executors.js +90 -9
  747. package/server/dist/modules/loops/runtime/loop-factory.js +30 -2
  748. package/server/dist/modules/loops/runtime/loop-flow-spec-recipe.js +166 -0
  749. package/server/dist/modules/loops/runtime/loop-graph.js +1 -1
  750. package/server/dist/modules/loops/runtime/loop-role-engines.js +4 -1
  751. package/server/dist/modules/loops/runtime/loop-run-manager.js +267 -10
  752. package/server/dist/modules/loops/runtime/loop-runs-store.js +21 -5
  753. package/server/dist/modules/loops/runtime/loop-templates.js +55 -12
  754. package/server/dist/modules/missions/runtime/agent-chat-manager.js +283 -20
  755. package/server/dist/modules/missions/runtime/agent-chat-router.js +96 -21
  756. package/server/dist/modules/missions/runtime/agent-failure-briefing.js +11 -3
  757. package/server/dist/modules/missions/runtime/agent-fence-promotion.js +9 -1
  758. package/server/dist/modules/missions/runtime/agent-flow-prompt.js +64 -0
  759. package/server/dist/modules/missions/runtime/agent-input-store.js +9 -4
  760. package/server/dist/modules/missions/runtime/agent-operator-prompt.js +100 -14
  761. package/server/dist/modules/missions/runtime/agent-session-store.js +88 -27
  762. package/server/dist/modules/missions/runtime/core-session-runner.js +89 -9
  763. package/server/dist/modules/missions/runtime/flow-turn-context.js +17 -0
  764. package/server/dist/modules/missions/runtime/mission-core-sessions.js +295 -55
  765. package/server/dist/modules/missions/runtime/mission-run-notify.js +2 -0
  766. package/server/dist/modules/missions/runtime/mission-session-projector.js +56 -19
  767. package/server/dist/modules/missions/runtime/mission-tool-policy.js +47 -0
  768. package/server/dist/modules/onboarding/adapters/http.js +78 -0
  769. package/server/dist/modules/onboarding/adapters/providers.js +41 -0
  770. package/server/dist/modules/onboarding/adapters/runtime.js +130 -0
  771. package/server/dist/modules/onboarding/application.js +133 -0
  772. package/server/dist/modules/onboarding/catalog.js +217 -0
  773. package/server/dist/modules/onboarding/domain.js +102 -0
  774. package/server/dist/modules/onboarding/index.js +20 -0
  775. package/server/dist/modules/onboarding/ports.js +2 -0
  776. package/server/dist/modules/project-rules/adapters/http.js +91 -0
  777. package/server/dist/modules/project-rules/domain.js +122 -0
  778. package/server/dist/modules/project-rules/runtime/rules-inventory-runs.js +97 -0
  779. package/server/dist/modules/project-rules/runtime/rules-store.js +109 -0
  780. package/server/dist/modules/project-settings/adapters/http.js +13 -0
  781. package/server/dist/modules/project-settings/adapters/sqlite.js +78 -8
  782. package/server/dist/modules/project-settings/domain.js +47 -1
  783. package/server/dist/modules/project-settings/index.js +7 -1
  784. package/server/dist/modules/recovery/adapters/sqlite.js +28 -0
  785. package/server/dist/modules/recovery/domain.js +162 -0
  786. package/server/dist/modules/recovery/index.js +16 -0
  787. package/server/dist/modules/specs/adapters/timeline-http.js +101 -0
  788. package/server/dist/modules/specs/domain/handoff-labels.js +371 -0
  789. package/server/dist/modules/specs/domain/handoff.js +260 -0
  790. package/server/dist/modules/specs/domain/non-goals.js +101 -0
  791. package/server/dist/modules/specs/domain/timeline.js +164 -0
  792. package/server/dist/modules/specs/domain/triage.js +320 -0
  793. package/server/dist/modules/specs/runtime/contract-refine-runner.js +3 -2
  794. package/server/dist/modules/specs/runtime/generated-spec-parser.js +75 -0
  795. package/server/dist/modules/specs/runtime/proposal-manager.js +4 -3
  796. package/server/dist/modules/specs/runtime/smash-runner.js +2 -1
  797. package/server/dist/modules/specs/runtime/spec-addenda.js +31 -0
  798. package/server/dist/modules/specs/runtime/spec-draft-parser.js +6 -1
  799. package/server/dist/modules/specs/runtime/spec-generation.js +431 -0
  800. package/server/dist/modules/specs/runtime/spec-handoff.js +103 -0
  801. package/server/dist/modules/specs/runtime/spec-history.js +376 -0
  802. package/server/dist/modules/specs/runtime/spec-launcher-manager.js +4 -3
  803. package/server/dist/modules/specs/runtime/spec-search.js +117 -0
  804. package/server/dist/modules/specs/runtime/ticket-store.js +47 -2
  805. package/server/dist/modules/specs/runtime/ticket-trash-service.js +62 -0
  806. package/server/dist/modules/specs/runtime/ticket-trash.js +193 -0
  807. package/server/dist/modules/specs/runtime/triage-runner.js +171 -0
  808. package/server/dist/modules/specs/runtime/triage.js +365 -0
  809. package/server/dist/modules/terminals/domain/app-urls.js +96 -0
  810. package/server/dist/modules/terminals/runtime/app-urls.js +77 -0
  811. package/server/dist/modules/terminals/runtime/background-process-service.js +25 -28
  812. package/server/dist/project-env.js +60 -0
  813. package/server/dist/project-git.js +65 -0
  814. package/server/dist/project-registry.js +264 -27
  815. package/server/dist/project-router-background-processes.js +27 -3
  816. package/server/dist/project-router-git.js +30 -0
  817. package/server/dist/project-router-helpers.js +5 -30
  818. package/server/dist/project-router-jobs.js +49 -1
  819. package/server/dist/project-router-loop-runs.js +72 -2
  820. package/server/dist/project-router-rules.js +54 -0
  821. package/server/dist/project-router-search.js +52 -0
  822. package/server/dist/project-router-settings.js +6 -0
  823. package/server/dist/project-router-setup.js +1 -1
  824. package/server/dist/project-router-spending.js +138 -0
  825. package/server/dist/project-router-tickets.js +246 -427
  826. package/server/dist/project-router.js +7 -0
  827. package/server/dist/providers/claude-adapter.js +25 -3
  828. package/server/dist/providers/codex-adapter.js +9 -1
  829. package/server/dist/providers/gemini-adapter.js +6 -1
  830. package/server/dist/providers/kimi-adapter.js +2 -0
  831. package/server/dist/providers/local-adapter.js +2 -0
  832. package/server/dist/providers/runtime.js +8 -0
  833. package/server/dist/schemas/agent-runtime.schema.json +3 -1
  834. package/server/dist/schemas/workflow-definition.schema.json +1 -0
  835. package/server/dist/setup-manager.js +19 -1
  836. package/server/dist/transient-children.js +25 -8
  837. package/server/dist/update-channel.js +21 -0
  838. package/server/dist/util/search-snippet.js +74 -0
  839. package/server/dist/worktree-manager.js +19 -8
  840. package/client/dist/assets/ActivityFeedPage-Dtp7EyHc.js +0 -1
  841. package/client/dist/assets/AgentBrowserCapture-CLqlEFw8.js +0 -1
  842. package/client/dist/assets/AgentModeAnalyticsPane-B8_hM3Tw.js +0 -2
  843. package/client/dist/assets/AgentModeCodePane-CNF8ZNjE.js +0 -2
  844. package/client/dist/assets/AgentModeJobsPane-CJpJbO9m.js +0 -1
  845. package/client/dist/assets/AgentsPage-BC8XSR79.js +0 -120
  846. package/client/dist/assets/AnalyticsPage-Cdv4jLtW.js +0 -1
  847. package/client/dist/assets/BarChart-BDMqVFJy.js +0 -55
  848. package/client/dist/assets/CodePage-DI1kegAr.js +0 -3
  849. package/client/dist/assets/DesktopAnalyticsPage-Bdp8E8U6.js +0 -1
  850. package/client/dist/assets/DocsDialog-Bm4RS7FX.js +0 -11
  851. package/client/dist/assets/DocsPage-DihYcU8r.js +0 -11
  852. package/client/dist/assets/ExportDropdown-Bb1lHx3r.js +0 -1
  853. package/client/dist/assets/IntegrationsPage-EAipiDWm.js +0 -1
  854. package/client/dist/assets/InteractiveJobComposer-BO6ASN-2.js +0 -19
  855. package/client/dist/assets/JobDetailModal-CuPYq7tP.js +0 -1
  856. package/client/dist/assets/JobDetailPage-BusMjJi9.js +0 -1
  857. package/client/dist/assets/JobsPage-C0QbsF2d.js +0 -1
  858. package/client/dist/assets/LoopBuilderPage-B7TlU4iS.js +0 -1
  859. package/client/dist/assets/LoopPreviewModal-BRWtXOD2.js +0 -1
  860. package/client/dist/assets/LoopsPage-C4q1DmCE.js +0 -2
  861. package/client/dist/assets/MinimizedChatsContext-DHfigjHS.js +0 -1
  862. package/client/dist/assets/PluginsPage-Z1JHSMdR.js +0 -2
  863. package/client/dist/assets/ProjectSettingsDialog-BUNj0tvN.js +0 -1
  864. package/client/dist/assets/RepositoryDeliveries-B4ybHOyB.js +0 -5
  865. package/client/dist/assets/ReviewPacketPage-hwfPNjyy.js +0 -4
  866. package/client/dist/assets/TemplatePreviewModal-V7FpMWuw.js +0 -1
  867. package/client/dist/assets/TicketDetailModalContext-Dkwo2cDs.js +0 -16
  868. package/client/dist/assets/Trans-BbFxRFtR.js +0 -1
  869. package/client/dist/assets/activity-B-rp4h_v.js +0 -1
  870. package/client/dist/assets/activity-C6kJpm9q.js +0 -1
  871. package/client/dist/assets/activity-CGx4kb_j.js +0 -1
  872. package/client/dist/assets/activity-CnoX2bH7.js +0 -1
  873. package/client/dist/assets/activity-DAyekdlt.js +0 -1
  874. package/client/dist/assets/activity-DCxtpT7j.js +0 -1
  875. package/client/dist/assets/activity-DiyjsgQV.js +0 -1
  876. package/client/dist/assets/activity-JzwRaWPD.js +0 -1
  877. package/client/dist/assets/addspec-BOvgmcgk.js +0 -1
  878. package/client/dist/assets/addspec-Clmyfn_R.js +0 -1
  879. package/client/dist/assets/addspec-CsNaBpHp.js +0 -1
  880. package/client/dist/assets/addspec-D2tvWmmV.js +0 -1
  881. package/client/dist/assets/addspec-D3nFwvD0.js +0 -1
  882. package/client/dist/assets/addspec-DVLEhK3w.js +0 -1
  883. package/client/dist/assets/addspec-DXbK-tb0.js +0 -1
  884. package/client/dist/assets/addspec-OHG8DFEn.js +0 -1
  885. package/client/dist/assets/agent-5bSixVzz.js +0 -1
  886. package/client/dist/assets/agent-BR4EHfhq.js +0 -1
  887. package/client/dist/assets/agent-C0IKkJP8.js +0 -1
  888. package/client/dist/assets/agent-C7li9ayC.js +0 -1
  889. package/client/dist/assets/agent-D0dRmEen.js +0 -1
  890. package/client/dist/assets/agent-DZVGHm7H.js +0 -1
  891. package/client/dist/assets/agent-Dip4h2YE.js +0 -1
  892. package/client/dist/assets/agent-Pp-P-n1p.js +0 -1
  893. package/client/dist/assets/agentRuntime-BxF81z52.js +0 -1
  894. package/client/dist/assets/agentRuntime-BxYS5V7u.js +0 -1
  895. package/client/dist/assets/agentRuntime-Dc9HG3BA.js +0 -1
  896. package/client/dist/assets/agents-B6ZsnARo.js +0 -1
  897. package/client/dist/assets/agents-BORdhe0K.js +0 -1
  898. package/client/dist/assets/agents-C6aq9Oqs.js +0 -1
  899. package/client/dist/assets/agents-Cbsc4bcX.js +0 -1
  900. package/client/dist/assets/agents-D0uYR6hq.js +0 -1
  901. package/client/dist/assets/agents-Doe1sHY5.js +0 -1
  902. package/client/dist/assets/agents-DyNi_I9m.js +0 -1
  903. package/client/dist/assets/agents-StKxiTg0.js +0 -1
  904. package/client/dist/assets/agentstudio-7cYCXn-L.js +0 -1
  905. package/client/dist/assets/agentstudio-BHWQh8G3.js +0 -1
  906. package/client/dist/assets/agentstudio-BjnWHyRs.js +0 -1
  907. package/client/dist/assets/agentstudio-BkV8vcK4.js +0 -1
  908. package/client/dist/assets/agentstudio-BzugqB_N.js +0 -1
  909. package/client/dist/assets/agentstudio-CWbp7KvH.js +0 -1
  910. package/client/dist/assets/agentstudio-DG6plf5o.js +0 -1
  911. package/client/dist/assets/agentstudio-DkZVF-Cc.js +0 -1
  912. package/client/dist/assets/analytics-B1DIQd4m.js +0 -1
  913. package/client/dist/assets/analytics-BAIZ9vE_.js +0 -1
  914. package/client/dist/assets/analytics-BTqgmgBd.js +0 -1
  915. package/client/dist/assets/analytics-BWynXPEm.js +0 -1
  916. package/client/dist/assets/analytics-DGcUsQ44.js +0 -1
  917. package/client/dist/assets/analytics-GnSnpJ4W.js +0 -1
  918. package/client/dist/assets/analytics-TWgYaoO0.js +0 -1
  919. package/client/dist/assets/analytics-kJy6Tuko.js +0 -1
  920. package/client/dist/assets/atom-one-dark-qiGhVQxg.js +0 -1
  921. package/client/dist/assets/builder-B9gorTnT.js +0 -1
  922. package/client/dist/assets/builder-Bvw5s3Mi.js +0 -1
  923. package/client/dist/assets/builder-CL5l4dU3.js +0 -1
  924. package/client/dist/assets/builder-CVDTVrQX.js +0 -1
  925. package/client/dist/assets/builder-CpS9liE9.js +0 -1
  926. package/client/dist/assets/builder-DNctIL9Q.js +0 -1
  927. package/client/dist/assets/builder-De2NxX6o.js +0 -1
  928. package/client/dist/assets/builder-DeYT7Y-m.js +0 -1
  929. package/client/dist/assets/button-4FS1ZDTp.js +0 -1
  930. package/client/dist/assets/chat-D_I7nU5K.js +0 -1
  931. package/client/dist/assets/chevron-up-6EFqEHBj.js +0 -1
  932. package/client/dist/assets/chunk-OB3PAWPO-B1EMk45A.js +0 -3
  933. package/client/dist/assets/clsx-CjueKrWZ.js +0 -1
  934. package/client/dist/assets/code-B37GRg9C.js +0 -1
  935. package/client/dist/assets/code-BBOEZbf9.js +0 -1
  936. package/client/dist/assets/code-BRm-jcyx.js +0 -1
  937. package/client/dist/assets/code-CF7w62CR.js +0 -1
  938. package/client/dist/assets/code-CLuvJt2r.js +0 -1
  939. package/client/dist/assets/code-D0RCm59f.js +0 -1
  940. package/client/dist/assets/code-DaZ-ZwCT.js +0 -1
  941. package/client/dist/assets/code-iIHkGaCL.js +0 -1
  942. package/client/dist/assets/commands-0XjAftla.js +0 -1
  943. package/client/dist/assets/commands-BAWSYHjQ.js +0 -1
  944. package/client/dist/assets/commands-BBwowgiE.js +0 -1
  945. package/client/dist/assets/commands-BacjIZLN.js +0 -1
  946. package/client/dist/assets/commands-Bs62IAZ3.js +0 -1
  947. package/client/dist/assets/commands-CLPdh-Hh.js +0 -1
  948. package/client/dist/assets/commands-DlbFzgrp.js +0 -1
  949. package/client/dist/assets/commands-LjPSsi5F.js +0 -1
  950. package/client/dist/assets/common-Bdi0qN4S.js +0 -1
  951. package/client/dist/assets/common-Bhb9zN1P.js +0 -1
  952. package/client/dist/assets/common-BykKlZg1.js +0 -1
  953. package/client/dist/assets/common-CvnNNSJA.js +0 -1
  954. package/client/dist/assets/common-D5zk_mqq.js +0 -1
  955. package/client/dist/assets/common-DQNO_al5.js +0 -1
  956. package/client/dist/assets/common-Dax30Vmp.js +0 -1
  957. package/client/dist/assets/common-DkllpVSb.js +0 -1
  958. package/client/dist/assets/core-B3mKBIh5.js +0 -1
  959. package/client/dist/assets/dashboard-B1ndRHuC.js +0 -1
  960. package/client/dist/assets/dashboard-BX7KXiqA.js +0 -1
  961. package/client/dist/assets/dashboard-B_BSNxcN.js +0 -1
  962. package/client/dist/assets/dashboard-CCeFN7-V.js +0 -1
  963. package/client/dist/assets/dashboard-CRl0WtFJ.js +0 -1
  964. package/client/dist/assets/dashboard-XGdQ5mjw.js +0 -1
  965. package/client/dist/assets/dashboard-_oltA6Jd.js +0 -1
  966. package/client/dist/assets/dashboard-bAuf5KVk.js +0 -1
  967. package/client/dist/assets/dialog-DtdR05v1.js +0 -45
  968. package/client/dist/assets/dist-js-CJ_2XX1Y.js +0 -1
  969. package/client/dist/assets/event-Bt7f3wXe.js +0 -1
  970. package/client/dist/assets/explore-BG99VGpL.js +0 -1
  971. package/client/dist/assets/explore-C0TjprJW.js +0 -1
  972. package/client/dist/assets/explore-C2dgEo7q.js +0 -1
  973. package/client/dist/assets/explore-C8NDHbob.js +0 -1
  974. package/client/dist/assets/explore-CWWgzQGR.js +0 -1
  975. package/client/dist/assets/explore-CcQXpdtS.js +0 -1
  976. package/client/dist/assets/explore-DgBACn39.js +0 -1
  977. package/client/dist/assets/explore-DsXAgnmJ.js +0 -1
  978. package/client/dist/assets/file-text-C0blZHLh.js +0 -1
  979. package/client/dist/assets/formatDistanceToNow-NjPHBLfB.js +0 -1
  980. package/client/dist/assets/getTimezoneOffsetInMilliseconds-vJ7qUoqN.js +0 -1
  981. package/client/dist/assets/git-branch-yf6LE1Bw.js +0 -1
  982. package/client/dist/assets/index-BgbCbIua.css +0 -2
  983. package/client/dist/assets/index-Ce4yZtKf.js +0 -83
  984. package/client/dist/assets/integrations-BkpRUbvp.js +0 -1
  985. package/client/dist/assets/integrations-Bo8qbJf4.js +0 -1
  986. package/client/dist/assets/integrations-CmSrKzZb.js +0 -1
  987. package/client/dist/assets/integrations-DGtq26Rr.js +0 -1
  988. package/client/dist/assets/integrations-De38GFnQ.js +0 -1
  989. package/client/dist/assets/integrations-Dw6zdtb-.js +0 -1
  990. package/client/dist/assets/integrations-Dwl9KQp0.js +0 -1
  991. package/client/dist/assets/integrations-Refg_d2I.js +0 -1
  992. package/client/dist/assets/jira-B6OYw4CJ.js +0 -1
  993. package/client/dist/assets/jira-BTF6RaOe.js +0 -1
  994. package/client/dist/assets/jira-CEetIB2q.js +0 -1
  995. package/client/dist/assets/jira-CIzsZLw5.js +0 -1
  996. package/client/dist/assets/jira-Daw9tmpI.js +0 -1
  997. package/client/dist/assets/jira-FXr7u2lh.js +0 -1
  998. package/client/dist/assets/jira-LaNQn7yl.js +0 -1
  999. package/client/dist/assets/jira-api-Cabj-H0J.js +0 -1
  1000. package/client/dist/assets/job-time-BCL7wee9.js +0 -1
  1001. package/client/dist/assets/jobs-ARwD85B9.js +0 -1
  1002. package/client/dist/assets/jobs-BMF1w4WT.js +0 -1
  1003. package/client/dist/assets/jobs-CBfzGLwm.js +0 -1
  1004. package/client/dist/assets/jobs-CPjiluBY.js +0 -1
  1005. package/client/dist/assets/jobs-CQQd58pY.js +0 -1
  1006. package/client/dist/assets/jobs-De3EqaO0.js +0 -1
  1007. package/client/dist/assets/jobs-Du9-Ei9a.js +0 -1
  1008. package/client/dist/assets/jobs-qMHbnxwC.js +0 -1
  1009. package/client/dist/assets/layers-BCLTgHXO.js +0 -1
  1010. package/client/dist/assets/loader-circle-BqV9xYGf.js +0 -1
  1011. package/client/dist/assets/loop-layout-CyXj9223.js +0 -7
  1012. package/client/dist/assets/loops-B2PhQLKR.js +0 -1
  1013. package/client/dist/assets/loops-BqbF46st.js +0 -1
  1014. package/client/dist/assets/loops-CINnHbfI.js +0 -1
  1015. package/client/dist/assets/loops-D-3XhH04.js +0 -1
  1016. package/client/dist/assets/loops-DKkEEjZ_.js +0 -1
  1017. package/client/dist/assets/loops-DzWR5-v6.js +0 -1
  1018. package/client/dist/assets/loops-WyWDkhok.js +0 -1
  1019. package/client/dist/assets/loops-scD5fIBf.js +0 -1
  1020. package/client/dist/assets/mcp-6rMoZfEO.js +0 -1
  1021. package/client/dist/assets/mcp-BD8sL5mP.js +0 -1
  1022. package/client/dist/assets/mcp-BkcA3I5s.js +0 -1
  1023. package/client/dist/assets/mcp-CCpSelOh.js +0 -1
  1024. package/client/dist/assets/mcp-CUAN6ORK.js +0 -1
  1025. package/client/dist/assets/mcp-CqbRxRTE.js +0 -1
  1026. package/client/dist/assets/mcp-DP2YfVhO.js +0 -1
  1027. package/client/dist/assets/mcp-DUVQamDz.js +0 -1
  1028. package/client/dist/assets/narration-BEKMVxGm.js +0 -1
  1029. package/client/dist/assets/narration-CjLwGKap.js +0 -1
  1030. package/client/dist/assets/narration-DANWuGsW.js +0 -1
  1031. package/client/dist/assets/narration-DGeEDWiT.js +0 -1
  1032. package/client/dist/assets/narration-DJgpGwIP.js +0 -1
  1033. package/client/dist/assets/narration-DbHnz0qV.js +0 -1
  1034. package/client/dist/assets/narration-bZSsTZG8.js +0 -1
  1035. package/client/dist/assets/narration-i6aKJKEc.js +0 -1
  1036. package/client/dist/assets/nav--u7iPYlS.js +0 -1
  1037. package/client/dist/assets/nav-C5Jgfaby.js +0 -1
  1038. package/client/dist/assets/nav-CAna_Wpt.js +0 -1
  1039. package/client/dist/assets/nav-CCLqeyHo.js +0 -1
  1040. package/client/dist/assets/nav-Cf3c90Jk.js +0 -1
  1041. package/client/dist/assets/nav-DMYQaQjR.js +0 -1
  1042. package/client/dist/assets/nav-Df_PkZ9F.js +0 -1
  1043. package/client/dist/assets/nav-VyNGBJwj.js +0 -1
  1044. package/client/dist/assets/packet-8nn9RsU7.js +0 -1
  1045. package/client/dist/assets/packet-B0H15elv.js +0 -1
  1046. package/client/dist/assets/packet-BQvBgrwh.js +0 -1
  1047. package/client/dist/assets/packet-BR7mO0-a.js +0 -1
  1048. package/client/dist/assets/packet-BgcQ6q_K.js +0 -1
  1049. package/client/dist/assets/packet-D2s92Jnn.js +0 -1
  1050. package/client/dist/assets/packet-YbtcD1HS.js +0 -1
  1051. package/client/dist/assets/packet-c0Qj_9eX.js +0 -1
  1052. package/client/dist/assets/project-repositories-Cnnuj9Ia.js +0 -1
  1053. package/client/dist/assets/rotate-ccw-DalJAQQX.js +0 -1
  1054. package/client/dist/assets/settings-B1NV8Ow9.js +0 -1
  1055. package/client/dist/assets/settings-BQ8XFZeE.js +0 -1
  1056. package/client/dist/assets/settings-BRkxfBbO.js +0 -1
  1057. package/client/dist/assets/settings-C_CcU1dP.js +0 -1
  1058. package/client/dist/assets/settings-Cto9n0eL.js +0 -1
  1059. package/client/dist/assets/settings-Pyw8uYtL.js +0 -1
  1060. package/client/dist/assets/settings-b3HVCNNd.js +0 -1
  1061. package/client/dist/assets/settings-hdive4u6.js +0 -1
  1062. package/client/dist/assets/setup-Be485n2u.js +0 -1
  1063. package/client/dist/assets/setup-CKGUxKr-.js +0 -1
  1064. package/client/dist/assets/setup-Ck1Uwd7_.js +0 -1
  1065. package/client/dist/assets/setup-Cm774a6v.js +0 -1
  1066. package/client/dist/assets/setup-DIqMQpxt.js +0 -1
  1067. package/client/dist/assets/setup-DfCsoNFL.js +0 -1
  1068. package/client/dist/assets/setup-DkeE8mP0.js +0 -1
  1069. package/client/dist/assets/setup-xVntVaz1.js +0 -1
  1070. package/client/dist/assets/specs-Bqvtz2kz.js +0 -1
  1071. package/client/dist/assets/specs-CKes-kz6.js +0 -1
  1072. package/client/dist/assets/specs-CfXxPDNB.js +0 -1
  1073. package/client/dist/assets/specs-CyF9HuTI.js +0 -1
  1074. package/client/dist/assets/specs-DMj035Mt.js +0 -1
  1075. package/client/dist/assets/specs-DfIdoU5L.js +0 -1
  1076. package/client/dist/assets/specs-j5pGLQeU.js +0 -1
  1077. package/client/dist/assets/specs-xW5pkkB7.js +0 -1
  1078. package/client/dist/assets/spending-CQnrWiR3.js +0 -1
  1079. package/client/dist/assets/square-D0JTbRSR.js +0 -1
  1080. package/client/dist/assets/tauri-shell-DE6LfGPw.js +0 -2
  1081. package/client/dist/assets/terminal-BAzpHtpY.js +0 -1
  1082. package/client/dist/assets/terminal-C7dHeR3x.js +0 -1
  1083. package/client/dist/assets/terminal-CMla5Qsz.js +0 -1
  1084. package/client/dist/assets/terminal-CdNXH-n9.js +0 -1
  1085. package/client/dist/assets/terminal-Cw5bZsmV.js +0 -1
  1086. package/client/dist/assets/terminal-DFUP4eNv.js +0 -1
  1087. package/client/dist/assets/terminal-DGqljeK_.js +0 -1
  1088. package/client/dist/assets/terminal-cU70NodO.js +0 -1
  1089. package/client/dist/assets/tickets--tiSOCcn.js +0 -1
  1090. package/client/dist/assets/tickets-BUJ3DMWU.js +0 -1
  1091. package/client/dist/assets/tickets-C1WNPODq.js +0 -1
  1092. package/client/dist/assets/tickets-CDjhWmiE.js +0 -1
  1093. package/client/dist/assets/tickets-CLgPC3uO.js +0 -1
  1094. package/client/dist/assets/tickets-D41ZMQpf.js +0 -1
  1095. package/client/dist/assets/tickets-DEaQC06P.js +0 -1
  1096. package/client/dist/assets/tickets-kcMzbLCp.js +0 -1
  1097. package/client/dist/assets/trash-D8zYUmTg.js +0 -1
  1098. package/client/dist/assets/useDesktop-BjLT0_EE.js +0 -1
  1099. package/client/dist/assets/useRuntimeRuns-C97qEqMg.js +0 -1
  1100. package/client/dist/assets/useSharedWebSocket-Bj4LMp7b.js +0 -2
  1101. package/client/dist/assets/utils-BC4DHlz2.js +0 -1
  1102. package/docs/guide/en/getting-started/4-the-dashboard-tour.md +0 -48
  1103. package/docs/guide/es/getting-started/4-the-dashboard-tour.md +0 -48
  1104. package/server/dist/mobile/mobile-preview-channel.js +0 -179
  1105. package/server/dist/mobile/mobile-preview.js +0 -366
  1106. package/server/dist/modules/browser/domain/preview-origins.js +0 -117
  1107. package/server/dist/modules/browser/runtime/preview-targets.js +0 -80
  1108. /package/client/dist/assets/{atom-one-dark-B-oHczHB.css → DocView-B-oHczHB.css} +0 -0
  1109. /package/docs/guide/de/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
  1110. /package/docs/guide/en/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
  1111. /package/docs/guide/es/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
  1112. /package/docs/guide/fr/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
  1113. /package/docs/guide/it/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
  1114. /package/docs/guide/ja/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
  1115. /package/docs/guide/pt/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
  1116. /package/docs/guide/zh/getting-started/{3-adding-your-first-project.md → 4-adding-your-first-project.md} +0 -0
@@ -1,19 +1,37 @@
1
- # Specs y el backlog
1
+ # Specs y el backlog {#specs-backlog}
2
2
 
3
- Una **spec** es la unidad de trabajo que implementa el pipeline de IA. Piénsala como un ticket: un título, una descripción de lo que quieres conseguir, una prioridad y, opcionalmente, etiquetas. Cuando lanzas el pipeline, los agentes de IA leen la spec y actúan en consecuencia, así que una spec clara es la pieza más importante para obtener un buen resultado.
4
-
5
- A veces a las specs se las llama **tickets** en la app: las dos palabras significan lo mismo.
3
+ Una **spec** es la unidad de trabajo que implementa el pipeline de IA. Piénsala como un breve encargo: un título, una descripción de lo que quieres conseguir, una prioridad y, opcionalmente, etiquetas. Cuando lanzas el pipeline, los agentes de IA leen la spec y actúan en consecuencia, así que una spec clara es la pieza más importante para obtener un buen resultado.
6
4
 
7
5
  ## El tablero
8
6
 
9
- Cada proyecto se abre en su **Dashboard**, que muestra el **SpecsBoard**: la lista de todas las specs del proyecto. Este es tu backlog. Desde aquí creas specs nuevas, defines su prioridad, las arrastras a un rail para implementarlas y ves cómo cambia su estado a medida que avanza el trabajo.
7
+ Cada proyecto se abre en su **Tablero**, que muestra el **SpecsBoard**: la lista de todas las specs del proyecto. Este es tu backlog. Desde aquí creas specs nuevas, defines su prioridad, las arrastras a un rail para implementarlas y ves cómo cambia su estado a medida que avanza el trabajo.
10
8
 
11
9
  El tablero tiene dos modos de vista, que se cambian con un botón de la barra de herramientas y se recuerdan por proyecto:
12
10
 
13
11
  - **Vista post-it** (la predeterminada): tarjetas con resúmenes breves.
14
12
  - **Vista de lista**: filas compactas de una sola línea.
15
13
 
16
- El **selector de estados** de la barra de herramientas muestra cada estado como su propio chip con un contador en vivo — más dos grupos inteligentes: **Activas** (el valor por defecto — todo lo que sigue en movimiento: borradores, por hacer, en curso y en revisión) y **Todos** (todo, con Hecho fijado al final). Tu selección se recuerda por proyecto y se refleja en la URL, así que un refresco o un enlace compartido restaura la vista exacta. En proyectos conectados a Jira aparece además un desplegable de **estado de Jira**, que lista los estados *reales* del flujo de trabajo del tablero (sus nombres tal cual, p. ej. "Code Review", cada uno con su contador en vivo) agrupados bajo el estado al que mapean — se combina con los chips de estado. También puedes filtrar por **etiqueta**, y ordenar por **Por defecto**, **Ticket #** o **Prioridad** (cada uno con un interruptor ascendente/descendente).
14
+ La barra de herramientas de Specs tiene dos filas. La primera reúne un campo de **búsqueda** (pulsa `/` para ir a él; busca por título, `#número`, etiqueta o clave de Jira), un único botón **Filtros**, los controles de orden y vista, y **Nueva spec**. La segunda fila es el **selector de estados**: cada estado como su propio segmento con un contador en vivo, más dos grupos inteligentes, **Activas** (el valor por defecto: todo lo que sigue en movimiento, es decir borradores, por hacer, en curso y en revisión) y **Todos** (todo, con Hecho fijado al final). Cuando la columna es estrecha, los estados menos usados se pliegan en un menú **Más**, y el estado elegido siempre queda visible. Tu selección se recuerda por proyecto y se refleja en la URL, así que un refresco o un enlace compartido restaura la vista exacta. **Filtros** abre un único panel con una sección por dimensión: **etiquetas** (selección múltiple) y, en proyectos conectados a Jira, **épica**, **sprint** y **estado de Jira** (los estados *reales* del flujo del tablero, p. ej. "Code Review", agrupados bajo el estado al que mapean y combinados con el selector de estados). Mientras una búsqueda o un filtro acota el tablero, una tercera fila muestra cada uno como un chip que puedes quitar, indica "x de y" specs y ofrece **Quitar todo** (que conserva el estado elegido). Ordena por **Por defecto**, **Spec #** o **Prioridad**, cada uno con un interruptor ascendente/descendente.
15
+
16
+ ### Seleccionar varias specs
17
+
18
+ Clasifica en bloque en lugar de una spec cada vez. Pulsa `x` sobre una tarjeta enfocada, haz clic con `Ctrl`/`⌘` sobre una tarjeta, o clic con `Mayús` para seleccionar un rango (un rango se queda dentro de una columna: las specs activas o el grupo Hecho). `Ctrl`/`⌘`+`A` selecciona toda la columna en la que estás y `Esc` quita la selección. Cada tarjeta muestra una casilla al pasar el ratón o enfocarla, y las seleccionadas tienen el borde resaltado. Ninguna de estas teclas actúa mientras escribes en el campo de búsqueda.
19
+
20
+ En cuanto hay una spec seleccionada, aparece una barra flotante al pie del tablero con el recuento y las acciones:
21
+
22
+ - **Mover a** cambia el estado. Las specs locales usan los estados locales; las que vienen de Jira usan los estados reales del flujo del tablero de Jira y se mueven por la misma cola de Jira que un movimiento individual.
23
+ - **Etiqueta** añade una etiqueta a la selección, o quita una que las specs ya tengan.
24
+ - **Prioridad** fija una misma prioridad para todas.
25
+ - **Añadir a un rail** coloca la selección en un rail.
26
+ - **Lanzar todo** da a cada spec seleccionada su propio rail libre y las arranca en paralelo, tras la misma confirmación y comprobación del presupuesto diario que *Lanzar todo* de los rails. Las specs que aún no se pueden lanzar (por ejemplo, en revisión sin PR abierta) o que no encuentran un rail libre se omiten y se cuentan en el resumen.
27
+ - **Eliminar** las envía a *Eliminadas recientemente*.
28
+ - **Quitar** (o `Esc`) descarta la selección.
29
+
30
+ Eliminar y cambiar estado, etiquetas o prioridad se deshacen en un solo paso: un único aviso *Deshacer* (o `⌘Z`) restaura todas las specs que cambió. Si algunas fallan, un solo aviso indica cuántas funcionaron y cuántas no. La selección solo contiene specs que ves: un filtro que oculta una spec seleccionada la saca de la selección.
31
+
32
+ ### Vistas guardadas
33
+
34
+ El botón **Vistas**, junto a **Filtros**, guarda el tablero tal como lo tienes ahora: el selector de estado, los filtros, el orden y la densidad (no el texto de búsqueda). Elige **Guardar la vista actual…**, ponle nombre («Listas para lanzar», «Sprint 42», «Fallidas esta semana») y selecciónala después desde el mismo menú. **Gestionar vistas…** renombra una vista, la actualiza con el tablero tal como está, copia su enlace o la elimina. Las vistas pertenecen al proyecto. Un enlace copiado (`?view=…`) aplica la vista al abrirlo en esta aplicación, y la paleta de comandos (`⌘K`) puede guardar la vista actual o cambiar a otra.
17
35
 
18
36
  ## Estados
19
37
 
@@ -38,7 +56,7 @@ Los borradores son la única excepción: un borrador puede *no* tener ninguna pr
38
56
 
39
57
  ## Crear una spec
40
58
 
41
- Para crear una spec, haz clic en **Añadir** (el botón Más de la barra de herramientas del SpecsBoard). Se abre el diálogo **Añadir spec** con varias formas de trabajar:
59
+ Para crear una spec, haz clic en **Nueva spec** (el botón Más de la barra de herramientas del SpecsBoard). Se abre el diálogo **Añadir spec** con varias formas de trabajar:
42
60
 
43
61
  - **Modo Quick**: describes lo que quieres y la IA escribe la spec completa de una sola vez. Consulta [Añadir spec — Modo Quick](add-spec-quick-mode.md).
44
62
  - **Modo Explore**: conversas con la IA y esta te ayuda a dar forma a la spec turno a turno. Consulta [Añadir spec — Modo Explore](add-spec-explore-mode.md).
@@ -50,6 +68,24 @@ A cuál recurrir depende de lo clara que tengas ya la idea. ¿Sabes exactamente
50
68
 
51
69
  Cuando una spec ya tiene trabajo detrás (una PR en revisión, una funcionalidad ya fusionada) y quieres *más*, no reescribas su descripción: eso desvirtúa la spec (y sincroniza la desviación con Jira) y obliga a la siguiente ejecución a replanificarlo todo. Abre la spec y añade un **anexo**: una nota breve con un tipo (petición de cambio, feedback de revisión, aclaración, restricción) y tus palabras. Los anexos abiertos viajan automáticamente con el próximo lanzamiento de esa spec en cualquier loop (Implement, SDD Quick, Freestyle), de modo que la ejecución cambia solo lo que pediste, y el paquete de revisión informa de cada uno como aplicado, aplicado parcialmente o bloqueado. Si la ejecución falla o descartas la entrega, vuelven solos a **Abierto**. El agente de misión puede añadirlos por ti cuando le pides cambiar algo de una spec existente.
52
70
 
71
+ ## Revisar una entrega: qué mirar primero
72
+
73
+ Cuando termina una ejecución, su paquete de revisión empieza por **Qué mirar**: el breve resumen del revisor de IA con los puntos más arriesgados primero (alto, luego medio y luego bajo, cada uno con fichero y línea), el comportamiento que cambia, las reglas en las que se apoya el cambio, las rutas de código que ningún test ejercita y las comprobaciones que solo puede hacer una persona. Los mismos riesgos, rutas sin test y comprobaciones aparecen en un bloque corto al principio de la pull request, y la tarjeta de la misión muestra el riesgo principal en una línea. El resumen es una ayuda para revisar, no un resultado de verificación: nunca bloquea Aceptar. Las ejecuciones hechas con un Specrails Core anterior no tienen resumen y su paquete se ve como antes.
74
+
75
+ ## Deshacer y Eliminado recientemente {#recently-deleted}
76
+
77
+ Eliminar una spec, moverla a otro estado, cambiar sus etiquetas o sacarla de un rail ocurre al instante: no hay un "¿Seguro?" previo. En su lugar, un aviso ofrece **Deshacer** durante unos ocho segundos, y **⌘Z** (**Ctrl+Z** en Windows y Linux) hace lo mismo mientras no estés escribiendo en un campo. Deshacer es por proyecto: al cambiar de proyecto se cierra la ventana.
78
+
79
+ Una spec eliminada (y una misión eliminada) no desaparece. Pasa a **Ajustes → Eliminado recientemente** en los ajustes del proyecto, donde puedes **Restaurarla** durante 30 días o **Eliminarla definitivamente**, que sí pregunta antes. Pasados 30 días se borra para siempre. Descartar trabajo sin enviar, cerrar a la fuerza una pull request y quitar un proyecto siguen preguntando antes, porque no se pueden revertir. Una spec respaldada por Jira se sigue moviendo con **Mover a** en lugar de eliminarse.
80
+
81
+ ## La cronología de la spec y el traspaso {#spec-timeline}
82
+
83
+ Abre una spec y pasa a la pestaña **Cronología** para leer toda su historia en un solo sitio: las ediciones y adendas, las misiones que la tocaron, cada ejecución con sus fases y acciones del agente, los eventos de la pull request y el veredicto del revisor con sus hallazgos. Las entradas se agrupan por día, los chips filtran por tipo y cada entrada enlaza a la misión, ejecución o revisión de la que viene. Los grupos largos (fases, acciones del agente, turnos de misión) se pliegan con un contador y se despliegan en el sitio.
84
+
85
+ El coste aparece junto a la entrada que lo generó, con los dos tipos separados: una cifra informada por el proveedor y otra estimada con la tabla de precios local (marcada «est.»). Si un proveedor se factura mediante un plan, la cronología y las exportaciones muestran turnos, nunca dólares; una ejecución que no informó coste simplemente no lo muestra.
86
+
87
+ **Exportar traspaso** (el menú junto a las pestañas, o ⌘K → *Exportar traspaso de #N*) genera un archivo Markdown o una página HTML autocontenida con el resumen, las decisiones (adendas, aclaraciones, veredictos del revisor), las estadísticas del diff, el coste y lo que sigue abierto (adendas abiertas y hallazgos de revisión sin resolver). **Copiar como descripción de PR** (también en ⌘K) pone en el portapapeles una versión más corta en Markdown. Los encabezados siguen el idioma de la aplicación. Todo pasa por la misma ocultación de secretos que usa la auditoría de acciones del agente, y el aviso te dice cuándo se ocultó algo.
88
+
53
89
  ## Adónde ir después
54
90
 
55
91
  - [Añadir spec — Modo Quick](add-spec-quick-mode.md): la forma más rápida de convertir una idea en una spec.
@@ -6,7 +6,7 @@ El modo Quick es para cuando ya sabes lo que quieres. Escribes tu idea, la IA re
6
6
 
7
7
  Para crear una spec rápidamente:
8
8
 
9
- 1. En el Dashboard, haz clic en **Añadir** (el botón Más de la barra de herramientas del SpecsBoard).
9
+ 1. En el Tablero, haz clic en **Nueva spec** (el botón Más de la barra de herramientas del SpecsBoard).
10
10
  2. Elige el modo **Quick**.
11
11
  3. Escribe tu idea en el campo de texto: una frase o un párrafo, lo que la capture.
12
12
  4. Haz clic para generar.
@@ -8,7 +8,7 @@ Recurre a Explore cuando la idea todavía no está del todo formada, cuando hay
8
8
 
9
9
  Para dar forma a una spec en modo Explore:
10
10
 
11
- 1. En el Dashboard, haz clic en **Añadir** y luego elige **Explore**.
11
+ 1. En el Tablero, haz clic en **Añadir** y luego elige **Explore**.
12
12
  2. Escribe tu primer mensaje: la idea, una pregunta o un pensamiento a medio formar.
13
13
  3. Lee la respuesta de la IA y sigue contestando. En cada turno, refina su comprensión.
14
14
  4. Observa cómo se actualiza el **borrador en vivo** junto al chat: esta es la spec tomando forma.
@@ -22,7 +22,7 @@ A medida que conversas, un panel de borrador muestra la spec tal como está en c
22
22
 
23
23
  Esto es el corazón del modo Explore: nunca estás mirando un formulario en blanco. Siempre tienes delante una spec real y en evolución.
24
24
 
25
- ## Cuánto ve la IA: el control deslizante de contexto
25
+ ## Cuánto ve la IA: el control deslizante de contexto {#context-scope}
26
26
 
27
27
  Antes de que la IA responda, decides cuánto de tu proyecto puede ver. Un control deslizante de presets de contexto te permite cambiar velocidad por profundidad:
28
28
 
@@ -43,7 +43,7 @@ Si quieres un control más fino, haz clic en **Ajuste fino** para activar las op
43
43
 
44
44
  - **Crear spec**: promueve el borrador en vivo a una spec real con estado **Por hacer**. (Cuando estás editando una spec existente, este botón pasa a leer **Actualizar spec** y parchea esa spec en su sitio.)
45
45
  - **Revisar →**: abre una superposición de revisión que muestra la spec propuesta comparada con la línea base antes de confirmar, para que no haya sorpresas.
46
- - **Guardar como borrador**: conserva la conversación como un ticket de borrador para que puedas retomarlo más tarde. Disponible en cuanto hayas enviado al menos un mensaje. Ver más abajo.
46
+ - **Guardar como borrador**: conserva la conversación como una spec de borrador para que puedas retomarlo más tarde. Disponible en cuanto hayas enviado al menos un mensaje. Ver más abajo.
47
47
  - **Minimizar**: aparca la conversación como un chip en el dock de chats minimizados, abajo a la izquierda. Haz clic en el chip en cualquier momento para volver directamente a la conversación: no se pierde nada.
48
48
  - **Descartar**: tira la conversación a la basura (pide confirmación primero).
49
49
 
@@ -1,4 +1,4 @@
1
- # Faites connaissance avec les agents
1
+ # Faites connaissance avec les agents {#agents}
2
2
 
3
3
  Quand vous lancez un rail **Implement**, Specrails ne confie pas votre spec à une seule IA en croisant les doigts. Il fait tourner une petite équipe d'*agents* spécialisés, chacun avec une mission précise, dans un ordre bien pensé. Cette page vous présente qui compose cette équipe et le rôle de chacun.
4
4
 
@@ -39,3 +39,5 @@ Vous y verrez :
39
39
  C'est tout l'onboarding — aucun compte à créer, aucune inscription. Specrails fonctionne entièrement sur votre machine.
40
40
 
41
41
  Cliquez sur **Ajouter votre premier projet** et passez à [Ajouter votre premier projet](adding-your-first-project).
42
+
43
+ Ou commencez par le [projet exemple](try-the-sample-project) : un petit jeu et trois specs toutes prêtes, avec le coût indiqué d'avance.
@@ -0,0 +1,35 @@
1
+ # Essayer le projet exemple
2
+
3
+ Vous voulez voir une spec devenir un changement relu avant de pointer specrails vers votre propre code ? Le **projet exemple** est un petit jeu web de morpion avec trois specs toutes prêtes. Il faut quelques minutes et on arrive à un vrai **paquet de revue**.
4
+
5
+ ## Le lancer
6
+
7
+ Sur l'écran d'accueil, cliquez sur **Essayer sur un projet exemple** (à côté de **Ajouter votre premier projet**). La boîte de dialogue vous dit, avant tout :
8
+
9
+ - **Ce qui est créé** : un petit jeu web dans son propre dépôt git, avec trois specs déjà sur votre tableau.
10
+ - **Où** : par défaut `~/Specrails Samples/tic-tac-toe`, dans votre dossier personnel. Vous pouvez changer le dossier ; un dossier existant n'est jamais écrasé.
11
+ - **Ce qu'une exécution coûterait** : une estimation du type « ≈ 0,30–1 $ · environ 3–5 min ». Elle n'est donnée en dollars que si votre fournisseur facture à l'usage. Avec un abonnement, elle indique qu'il n'y a pas de frais supplémentaires, et avec un moteur local il n'y a aucun coût d'API.
12
+
13
+ Créer l'exemple ne coûte rien et n'exécute rien. Cliquez sur **Créer le projet exemple** et vous arrivez sur le Tableau.
14
+
15
+ ## Les trois étapes
16
+
17
+ Une petite carte de guidage montre le vrai Tableau, étape par étape. Vous pouvez la fermer à tout moment ; elle se réduit à une pastille **Projet exemple** d'où **Afficher le guide** la ramène.
18
+
19
+ 1. **La spec.** Les trois specs sont écrites pour vous. Chacune dit quoi construire et comment savoir que c'est terminé.
20
+ 2. **Le rail.** Cliquez sur **Exécuter la première spec**. L'exemple est réglé pour être économique et borné : mode rapide, le modèle le moins cher disponible et un plafond souple par exécution (elle s'arrête et demande avant de dépasser 1 $). Si un moteur local est configuré, vous pouvez le choisir, sans coût d'API.
21
+ 3. **La revue.** Rien n'est fusionné tout seul. À la fin de l'exécution, un **paquet de revue** montre ce qui a changé et vous laisse l'accepter ou l'écarter.
22
+
23
+ ## Aucun fournisseur d'IA prêt ?
24
+
25
+ Avant de proposer l'exécution, specrails vérifie qu'un fournisseur est installé et connecté. Si aucun ne l'est, vous obtenez **Voir une exécution enregistrée** : le rejeu d'une exécution terminée qui s'achève sur un paquet de revue. C'est clairement présenté comme un enregistrement ; rien ne s'exécute et rien n'est facturé. Installez un fournisseur ou connectez-vous, puis choisissez **Vérifier à nouveau** pour passer à une vraie exécution.
26
+
27
+ ## Ensuite, votre propre projet
28
+
29
+ Le guide se termine par **Ajouter maintenant votre projet**. Quand vous en avez fini avec l'exemple, **Supprimer l'exemple** le retire en un clic. Le dossier reste sur le disque, sauf si vous cochez **Supprimer aussi le dossier de l'exemple**, ce qui est irréversible.
30
+
31
+ ## Revoir la visite de la plateforme
32
+
33
+ La visite n'est plus sur l'écran d'accueil. Ouvrez **Docs** et choisissez **Revoir la visite**, ou ouvrez la palette de commandes et tapez « Revoir la visite ». Elle est aussi dans **Réglages ▸ Apparence**.
34
+
35
+ Suite : [Ajouter votre premier projet](adding-your-first-project).
@@ -37,11 +37,15 @@ Un fin bandeau court tout en bas de la fenêtre. Discret mais bien pratique :
37
37
  - **Dépense totale** (à droite) — un cumul en temps réel de ce que vous avez dépensé, pour que le coût soit toujours à portée de regard.
38
38
  - **Bascule du terminal** (tout à droite) — ouvre le panneau de terminal intégré. Appuyez sur **Cmd+J** (macOS) ou **Ctrl+J** (Windows/Linux) pour l'afficher ou le masquer à tout moment. C'est un vrai shell, ouvert directement dans le dossier de votre projet.
39
39
 
40
- ## Quelques raccourcis bien pratiques
40
+ ## Quelques raccourcis bien pratiques {#shortcuts}
41
41
 
42
- - **Cmd/Ctrl+B** — épingler ou replier les barres latérales.
42
+ - **Cmd/Ctrl+B** — épingler ou replier la barre latérale gauche ; **Option+Cmd+B** (**Ctrl+Alt+B**) fait de même pour la droite.
43
43
  - **Cmd/Ctrl+J** — afficher ou masquer le panneau de terminal.
44
- - **Cmd/Ctrl+K** — ouvrir la recherche.
44
+ - **Cmd/Ctrl+K** — la palette de commandes : recherchez missions, projets et jobs, et **lancez des actions**. Tapez un verbe (« nouvelle », « lancer », « déplacer », « changer ») ou commencez par **>** pour lister les actions : Nouvelle spec (aussi en Explorer), Lancer ou Déplacer une spec, Ouvrir sa revue, Transmettre ou mettre en pause un Flow, Nouvelle mission, Changer de thème, Passer du mode Mission au mode Tableau, Ouvrir les réglages de l'app ou du projet sur une section, Exécuter un loop, afficher/masquer les barres latérales, Revenir ou avancer, Annuler le dernier changement et Supprimés récemment. Les actions qui demandent un choix (un rail, un statut, un thème, une section) ouvrent une seconde page ; **Retour arrière** sur une recherche vide revient en arrière. Chaque action affiche son raccourci clavier : la palette vous apprend les touches. Elle ne propose que ce qui fonctionne là où vous êtes et respecte les mêmes règles que les boutons (une spec qui ne peut pas être lancée n'est pas proposée). Avec une recherche vide, elle liste vos **Actions récentes** et **Lieux récents**.
45
+ - **Cmd+[ / Cmd+]** (**Alt+← / Alt+→** sous Windows/Linux), les boutons **← →** de la barre de titre ou les boutons précédent/suivant de la souris — reculent ou avancent parmi les lieux visités : specs, missions, tâches, projets et panneaux plein écran. Un clic droit (ou un appui long) sur un bouton affiche les derniers lieux.
46
+ - **Cmd+Maj+I** (**Ctrl+Alt+I** sous Windows et Linux) ou le bouton **À traiter** de la barre de titre — la liste **À traiter** : tout ce qui vous attend dans tous vos projets, dans une seule liste groupée par projet. Elle réunit les revues prêtes à décider, les questions qu'un agent attend, les exécutions en échec ou bloquées, les exécutions en pause à cause du budget quotidien et les mises à jour Jira qui n'ont pas pu se synchroniser. Chaque ligne porte son action principale (**Ouvrir la revue**, **Répondre**, **Reprendre**, **Réessayer**) ainsi que **Reporter** (1 heure ou jusqu'à demain) et **Terminé**. Un élément reporté ou terminé revient tout seul si son état change. Le bouton indique combien d'éléments attendent, et une notification de limite du fournisseur ouvre la liste. La liste est aussi un lien (`?inbox=1`) et une action de la palette de commandes.
47
+ - **M** — avec une carte de spec ciblée dans le tableau, ouvre un sélecteur pour la déplacer vers un statut ou un rail, l'équivalent clavier du glisser-déposer. Cela fonctionne aussi sur une sélection multiple, et la palette le propose sous **Déplacer la spec ciblée…**.
48
+ - **?** — l’aide-mémoire des raccourcis. Saisissez dans son champ de recherche pour filtrer les raccourcis et trouver les pages et sections de ce guide, qui s’ouvrent dans le guide sans quitter votre écran. Les petites icônes **ⓘ** et les liens **En savoir plus** à côté des réglages, des rails, de Flow, du curseur de contexte et des budgets ouvrent le guide à la section correspondante de la même façon.
45
49
 
46
50
  ## Et maintenant ?
47
51
 
@@ -0,0 +1,34 @@
1
+ # Recherche universelle (⌘K)
2
+
3
+ Appuyez sur **⌘K** (**Ctrl+K** sous Windows et Linux) pour chercher presque tout dans Specrails depuis un seul endroit : missions, specs, journaux de jobs, fichiers, réglages et ce guide. Saisissez une requête simple pour chercher parmi les missions, projets, specs et jobs récents comme avant, ou commencez par un **préfixe** pour ne chercher que dans une source.
4
+
5
+ ## Préfixes
6
+
7
+ | Saisie | Cherche | Entrée ouvre |
8
+ | --- | --- | --- |
9
+ | `#` | Specs : titre, résumé, description, étiquettes, notes hors périmètre, addendums et commentaires. `#12` trouve la spec 12. | La spec |
10
+ | `@` | Missions : titre et contenu de la conversation. | La mission |
11
+ | `/` | Réglages (Desktop et projet) par nom ou par la façon dont vous les appelleriez. | La fenêtre de réglages sur ce bloc, visible et activé |
12
+ | `f:` | Fichiers du projet, par nom ou chemin. | Le fichier dans l’explorateur de code |
13
+ | `log:` | Journaux de jobs : commandes, noms de loops, titres de phases et diagnostics d’échec. | Le job |
14
+ | `?` | Ce guide : titres de pages et intertitres. | Le guide à cet intertitre |
15
+
16
+ Quand vous saisissez un préfixe, il devient une **pastille** dans la zone de recherche, qui ne garde que votre requête. Appuyez sur **Retour arrière** dans une zone vide (ou cliquez sur le × de la pastille) pour retirer le périmètre. Zone vide, la palette liste les préfixes sous la zone ; cliquez sur l’un d’eux pour commencer. `>` liste toujours les actions, comme avant.
17
+
18
+ ## Surlignage
19
+
20
+ Les résultats montrent un court extrait autour de la première correspondance, avec le texte trouvé surligné. La recherche ignore la casse et les accents : `revision` trouve « Révision ».
21
+
22
+ ## Réglages
23
+
24
+ `/` connaît les principaux blocs de réglages, dans votre langue : thème, langue, éditeur, budgets, notifications, webhooks, mises à jour, branche, environnement, télémétrie, règles et plus. Les réglages du projet sont proposés quand un projet est ouvert. Choisissez-en un : la bonne fenêtre s’ouvre sur ce bloc. Sans préfixe, une correspondance forte (trois caractères ou plus) ajoute jusqu’à trois réglages aux résultats habituels. `/budget` trouve aussi le panneau Budget (plafonds, projection, et si…), où se trouvent les plafonds hebdomadaire et mensuel. Une commande à barre comme `/implement` est listée sous les réglages, dans son propre groupe : le préfixe `/` ne la masque jamais.
25
+
26
+ ## Journaux de jobs
27
+
28
+ `log:` interroge un index compact, pas la sortie brute d’une exécution : la commande, le nom du loop, les titres des phases et le diagnostic court d’une exécution échouée, bloquée ou à l’arrêt. Il ne stocke jamais de flux de tokens ni de sortie d’outils, il reste donc petit et rapide. Il est conservé par projet et contient les exécutions les plus récentes.
29
+
30
+ ## Bon à savoir
31
+
32
+ - `#`, `f:` et `log:` cherchent dans le projet actif ; ouvrez d’abord un projet.
33
+ - Le périmètre des fichiers respecte les règles d’exclusion de l’explorateur de code.
34
+ - Chaque groupe n’affiche que ses meilleurs résultats ; affinez la requête pour restreindre.
@@ -6,15 +6,17 @@ Ouvrez-la depuis la barre latérale droite (elle est intitulée **Analytics**).
6
6
 
7
7
  ## Ce qui compte comme dépense
8
8
 
9
- Specrails suit cinq types d'activité IA, appelés *surfaces*. Chacune dispose d'un code couleur cohérent sur tous les graphiques, pour que vous puissiez la repérer d'un coup d'œil :
9
+ Specrails associe chaque exécution IA à une *surface* : la partie de l'app qui a engagé la dépense. Les surfaces principales ont chacune une couleur fixe et leur propre puce de filtre, pour que vous les repériez d'un coup d'œil :
10
10
 
11
- - **Job** — un rail de pipeline qui enchaîne Architect → Developer → Reviewer → Ship.
11
+ - **Job** — un job de pipeline mis en file (Architect → Developer → Reviewer → Ship), y compris les exécutions Freestyle.
12
+ - **Loop** — chaque étape IA d'une exécution de loop. Les rails s'exécutent en loops par défaut, donc l'essentiel de la dépense des rails apparaît ici.
12
13
  - **Quick spec** — une spec générée par la voie rapide d'Add Spec.
13
14
  - **Explore spec** — une conversation Explore où vous façonnez une spec en discutant.
14
15
  - **AI edit** — un affinage assisté par l'IA sur un agent ou un fichier.
15
- - **File summary** — les résumés en langage clair qui alimentent le Code explorer.
16
+ - **SMASH** — le découpage d'une spec épique en specs plus petites.
17
+ - **File summary** — les résumés en langage clair et les histoires de fichiers qui alimentent le Code explorer.
16
18
 
17
- Deux activités ne sont délibérément *pas* suivies : le panneau de chat latéral et l'assistant de configuration lancent tous deux des CLI IA, mais ils n'apparaissent jamais dans vos dépenses. Le tableau de bord reflète ainsi un travail réel et reproductible plutôt que des échanges anecdotiques.
19
+ Des surfaces secondaires sont également suivies, sans puce dédiée : le panneau de chat latéral, le lanceur de specs OpenSpec, les propositions de specs, Agent Studio et l'ancien chat de configuration. Les missions épinglées au projet comptent aussi dans sa dépense. Rien de ce qui exécute une CLI IA n'est laissé de côté : les totaux reflètent toute l'activité IA du projet.
18
20
 
19
21
  ## Lire le tableau de bord
20
22
 
@@ -76,3 +78,15 @@ Les exports respectent les filtres de période et de surface actuellement appliq
76
78
  ## Toujours à jour
77
79
 
78
80
  Pas besoin d'actualiser. Quand une nouvelle invocation est enregistrée n'importe où dans le projet, le tableau de bord ouvert se recharge discrètement un instant plus tard, pour que la jauge de consommation suive le rythme du travail à mesure qu'il se termine.
81
+
82
+ ## Budgets quotidiens {#daily-budget}
83
+
84
+ Définissez un budget quotidien pour plafonner ce qu’une journée peut coûter. Tous les plafonds (quotidien, hebdomadaire, mensuel et par exécution) se modifient au même endroit : **Analyses → Budget**. **Réglages → Avancé** et **Réglages du projet → Budget** n’affichent que le plafond quotidien actuel, avec un bouton **Ouvrir Budget** qui y mène.
85
+
86
+ Quand la dépense enregistrée du jour atteint un budget, la file se met en pause d’elle-même, les rails et les exécutions de loops refusent de démarrer avec *Budget quotidien atteint*, et une exécution de loop en cours s’arrête entre deux étapes, en pause à cause du budget. Augmentez ou supprimez le budget, ou attendez la réinitialisation quotidienne, puis reprenez.
87
+
88
+ Le budget du projet compte votre journée locale ; celui de toute l’app compte la journée UTC. L’alerte de coût par job est un réglage distinct.
89
+
90
+ **Plafonds hebdomadaires, mensuels et par exécution.** Les plafonds plus longs fonctionnent de la même façon. Ouvrez **Analyses → Budget** pour définir un plafond **hebdomadaire** et un plafond **mensuel**, par projet et pour toute l’app, ainsi qu’un **plafond souple par exécution** (*mettre en pause et demander à X $*). Les semaines commencent le lundi et les mois le 1er, à l’heure locale. Un plafond hebdomadaire ou mensuel met les files en pause, refuse les lancements et suspend les loops en cours exactement comme le budget quotidien ; relevez-le ou supprimez-le là, ou attendez la réinitialisation. Quand le coût communiqué d’une exécution atteint le plafond par exécution, elle se met en pause et **Reprendre** demande s’il faut continuer sans le plafond ou le relever. Atteindre un plafond ajoute aussi un élément **Relever le plafond** à la boîte de réception.
91
+
92
+ Le panneau Budget montre aujourd’hui, cette semaine et ce mois face à chaque plafond. Sa **projection** de fin de mois est une estimation (la moyenne des 14 derniers jours complets multipliée par les jours restants, plus ce que vous avez déjà dépensé), jamais ajoutée à la dépense facturée. **Et si** recalcule les 30 derniers jours d’usage de tokens enregistré avec un autre modèle, d’après la grille de prix de l’app, et indique *Pas de tarif* pour un modèle sans prix. Avec un forfait d’abonnement, il n’y a pas de coût en dollars par usage : le panneau affiche alors les tours et les limites du forfait.
@@ -1,4 +1,4 @@
1
- # Le terminal intégré
1
+ # Le terminal intégré {#integrated-terminal}
2
2
 
3
3
  Specrails embarque un véritable terminal — le panneau qui remonte depuis le bas de la fenêtre, exactement comme celui de VS Code ou Cursor. Il fait tourner votre shell réel, dans le répertoire réel de votre projet, pour que vous puissiez lancer `git`, `npm`, vos tests, ou tout autre commande sans quitter l'application.
4
4
 
@@ -1,4 +1,4 @@
1
- # Code explorer
1
+ # Code explorer {#code-explorer}
2
2
 
3
3
  La section **Code** vous offre une fenêtre conviviale et en lecture seule sur votre dépôt — pensée tout particulièrement pour celles et ceux qui veulent comprendre ce que l'IA construit sans devoir vivre dans un éditeur. Vous disposez d'une arborescence de fichiers à gauche, d'un afficheur de code à droite, et, au-dessus du code, d'un résumé en langage clair de ce que fait réellement chaque fichier.
4
4
 
@@ -1,4 +1,4 @@
1
- # Fournisseurs d'IA (Claude, Codex)
1
+ # Fournisseurs d'IA (Claude, Codex) {#ai-providers}
2
2
 
3
3
  ## Les deux fournisseurs
4
4
 
@@ -1,4 +1,4 @@
1
- # Plugins (Intégrations)
1
+ # Plugins (Intégrations) {#plugins}
2
2
 
3
3
  La section **Intégrations** est une place de marché par projet de modules optionnels qui étendent les capacités de l'IA. Chaque projet décide indépendamment des plugins qu'il souhaite — installer un plugin dans un projet ne touche jamais à un autre.
4
4
 
@@ -15,7 +15,7 @@ Toutes les écritures vers Jira passent par une file d'attente durable et résis
15
15
 
16
16
  ## Connecter un tableau
17
17
 
18
- La connexion se fait depuis la page **Réglages** d'un projet (il existe aussi une étape facultative « Configurer Jira » à la fin de l'assistant d'ajout de projet). L'assistant de connexion vous guide :
18
+ La connexion se fait depuis la page **Plugins** de la barre latérale gauche : cliquez sur **Installer** sur la carte Jira et choisissez le projet. L'assistant de connexion vous guide :
19
19
 
20
20
  1. **Tester** — saisissez l'URL et les identifiants de votre Jira, et Specrails vérifie la connexion.
21
21
  2. **Choisir un projet** — sélectionnez le projet Jira avec lequel synchroniser.
@@ -52,7 +52,7 @@ Vous pouvez donc expérimenter librement — activez, lancez quelques rails, dé
52
52
 
53
53
  ## Au quotidien
54
54
 
55
- Une fois connecté, la page Réglages du projet affiche une **carte de connexion** où vous pouvez :
55
+ Une fois connecté, la carte Jira de la page **Plugins** passe à **Gérer**. Choisissez-y le projet pour ouvrir sa **carte de connexion**, où vous pouvez :
56
56
 
57
57
  - **Synchroniser maintenant** — forcer une interrogation immédiate au lieu d'attendre le minuteur.
58
58
  - **Réessayer les lettres mortes** — relancer les écritures vers Jira restées bloquées.
@@ -69,4 +69,4 @@ Les specs adossées à Jira affichent un **badge de clé Jira** (comme `PROJ-123
69
69
 
70
70
  ## Désactiver l'intégration
71
71
 
72
- Si vous souhaitez tout arrêter, il suffit de cliquer sur **Se déconnecter** depuis les Réglages. Vos specs retrouvent leur comportement purement local, et les métadonnées Jira restent simplement inutilisées — rien n'est détruit.
72
+ Si vous souhaitez tout arrêter, il suffit de cliquer sur **Se déconnecter** depuis la carte de connexion. Vos specs retrouvent leur comportement purement local, et les métadonnées Jira restent simplement inutilisées — rien n'est détruit.
@@ -1,4 +1,4 @@
1
- # L'application compagnon mobile
1
+ # L'application compagnon mobile {#mobile-companion}
2
2
 
3
3
  Specrails dispose d'une application compagnon pour téléphone afin de garder un œil sur vos rails quand vous êtes loin de votre bureau — regardez les jobs s'exécuter, voyez-les se terminer et restez dans la boucle sans rester assis devant le tableau de bord.
4
4
 
@@ -1,4 +1,4 @@
1
- # Piloter Specrails depuis n'importe quelle IA (serveur MCP)
1
+ # Piloter Specrails depuis n'importe quelle IA (serveur MCP) {#mcp-server}
2
2
 
3
3
  > **For agents (English):** use the [current connection runbook](../../../agents/mcp.md) for Claude and Codex. It includes verified bridge discovery, registration and read-only checks.
4
4
 
@@ -33,6 +33,8 @@ L'agent peut toucher à toute l'application, c'est donc à vous de décider quel
33
33
 
34
34
  Commencez sur **Observer** et n'élevez le niveau que lorsque vous voulez que l'agent agisse. S'il tente quelque chose au-dessus du niveau actuel, il s'arrête et vous indique exactement quel niveau activer — il ne contourne jamais la limite. C'est distinct des niveaux de Réglages ▸ MCP, qui régissent les assistants *externes* ; le niveau ici ne concerne que cet agent intégré à l'application.
35
35
 
36
+ Passer **en Autonome** ne se fait jamais sur une simple touche : Shift+Tab depuis Opérer affiche un avis avec **Passer en Autonome**, et un nouveau Shift+Tab revient plutôt à Observer. Baisser le niveau est toujours immédiat.
37
+
36
38
  ## Quelques exemples de demandes
37
39
 
38
40
  Une fois sur **Opérer**, essayez :
@@ -47,16 +49,21 @@ Une fois sur **Opérer**, essayez :
47
49
 
48
50
  Les réponses arrivent en flux fluide et s'affichent déjà mises en forme (titres, tableaux, listes), chacune avec un petit bouton **copier**. Une étiquette d'état en bas montre ce que fait l'agent en ce moment — *Réflexion…*, *MCP · jobs*, *Terminal* — pour que vous connaissiez toujours son état.
49
51
 
52
+ Les blocs de code affichent leur langage et ont leur propre bouton **copier**. Si vous remontez pendant que l'agent écrit encore, une pastille **Nouveaux messages** apparaît au-dessus de la zone : cliquez-la pour revenir à la dernière réponse.
53
+
50
54
  ## Petits plus pratiques
51
55
 
52
56
  - **Des super specs depuis une conversation.** Demandez à l’agent de *façonner* une spec avec vous au lieu de la générer d’un coup : il lit d’abord le vrai code, vous pose quelques questions et affiche le brouillon qui évolue sous forme de carte en direct dans la conversation. Quand vous dites oui, il crée la spec et — par défaut — l’enrichit en arrière-plan d’une **Contract Layer** (chemins de fichiers exacts, formes de données, invariants) pour que les agents qui implémentent n’improvisent pas. Dites « sans contract layer » pour sauter l’enrichissement.
53
57
  - **Cliquez sur ce qu'il mentionne.** Dans une mission épinglée à un projet, les numéros de spec (`#12`) et les ids de job/run dans les réponses de l'agent sont des puces cliquables : une spec ouvre la fenêtre de détail du tableau, un id de job ouvre la vue du job en direct. Si la référence n'existe plus, une discrète note « introuvable » s'affiche.
54
- - **La carte d'implémentation reste sous les yeux.** Quand l'agent implémente des specs, une carte en direct suit le travail — et tant qu'elle attend quelque chose de vous (créer la PR, la publier, réessayer, abandonner) elle reste **épinglée juste au-dessus de la zone de message**, aussi loin que défile la conversation ; sa place dans l'historique affiche à la place un discret marqueur « épinglée ci-dessus ». Plusieurs cartes actives s'empilent en petites puces (cliquez-en une pour la mettre en avant), et un chevron réduit la carte en une barre fine. Une fois la PR publiée — ou le travail fusionné ou abandonné — la carte reprend sa place dans l'historique de la conversation.
58
+ - **Un bandeau pour vos exécutions.** Quand l'agent lance du travail, un seul bandeau juste au-dessus de la zone de message le suit : ce que fait l'exécution, en mots simples (« Rédaction de la spec à partir de vos modifications »), combien d'exécutions sont terminées, le temps et le coût réel jusqu'ici (`—` tant que le fournisseur n'a rien facturé). Quand une exécution a besoin de vous (créer la PR, réessayer, revenir dans Flow), le bandeau le dit avec une icône et des mots et propose cette seule action ; cliquez sur le bandeau pour ouvrir la carte complète de l'exécution juste au-dessus (Échap la ferme). Avec plusieurs exécutions, le bandeau montre d'abord celle qui a besoin de vous et un petit sélecteur (« Rail 1 · Rail 2 · +1 »). La conversation ne garde que ce qui s'est passé (« Lancé sur Rail 1 », « Rail 1 a échoué : … », « Livré : PR #812 ») et chaque ligne ouvre son exécution. Les missions qui attendent votre décision affichent un point dans la liste des missions. Les actions qui lancent une nouvelle exécution payante (**Relancer**, **Récupérer et réessayer**) ou que d'autres voient (Créer la PR, Publier) ne partent jamais du bandeau : il ouvre la carte avec le focus sur ce bouton, pour que vous confirmiez depuis la carte.
59
+ - **Le bandeau au clavier.** **⌥R** (**Alt+R** sous Windows/Linux) passe de la zone de message au bandeau de la mission où vous êtes ; appuyez à nouveau pour afficher ou masquer les détails de l’exécution, et **Échap** vous ramène où vous étiez. Hors d’un champ de texte, **⌥[** et **⌥]** passent d’une exécution à l’autre. Quand le bandeau a le focus, **P** suspend ou reprend un Flow et **H** le remet ; ces lettres n’agissent nulle part ailleurs. Appuyez sur **?** pour la liste complète.
55
60
  - **Historique des prompts.** Avec la zone vide, appuyez sur **↑**/**↓** pour parcourir ce que vous avez demandé auparavant (affiché en grisé pendant que vous défilez) ; commencez à taper pour le modifier, ou appuyez sur Entrée pour l'envoyer.
56
61
  - **Modifiez la file.** Vous en avez envoyé d'autres pendant que l'agent travaillait ? Tant que des messages sont en file, **↑**/**↓** parcourt *ceux-ci* : la zone affiche le message sélectionné, vous le modifiez sur place, et **Entrée l'enregistre dans la file** (Échap annule ; votre brouillon non envoyé revient tel quel).
62
+ - **Répondez au clavier.** Quand l'agent propose des choix, chaque puce porte un numéro : appuyez sur **⌥1**…**⌥9** (**Alt+1**…**Alt+9** sous Windows/Linux), zone vide, pour en choisir un.
63
+ - **Annulez la suppression d'un message en file.** Supprimer un message en file affiche **Annuler** quelques secondes ; il revient dans la file.
57
64
  - **Réduire sans rien perdre.** Cliquez sur la ✕ pour renvoyer le panneau dans la bulle — la conversation continue de tourner. Rouvrez-le et vous atterrissez sur le dernier message ; rien n'est à retaper.
58
65
  - **Nouvelle conversation.** Le bouton **+** démarre un fil vierge ; l'historique vit au niveau de l'application, au-dessus de tout projet individuel.
59
- - **Changez de mission.** Le sélecteur de missions, à côté du sélecteur de projet, liste vos conversations de la plus récente à la plus ancienne — un point clignotant signale celles où l'agent travaille encore, et un petit badge compte les messages en file. La recherche apparaît dès que la liste dépasse huit entrées, et l'icône corbeille de chaque ligne supprime une mission après une confirmation rapide en ligne — même une mission en cours (elle prévient d'abord, puis arrête l'agent).
66
+ - **Changez de mission.** Le sélecteur de missions, à côté du sélecteur de projet, liste vos conversations de la plus récente à la plus ancienne — un point clignotant signale celles où l'agent travaille encore, et un petit badge compte les messages en file. La recherche apparaît dès que la liste dépasse huit entrées, et l'icône corbeille de chaque ligne supprime une mission aussitôt et affiche **Annuler** (ou appuyez sur **⌘Z**) quelques secondes ; la mission attend ensuite 30 jours dans **Supprimés récemment**, dans les paramètres du projet. Une mission où l'agent travaille encore demande d'abord confirmation, car arrêter l'agent est irréversible.
60
67
  - **Retrouvez une mission de n'importe où.** Appuyez sur **⌘K** (ou le bouton **Rechercher** de la barre latérale en mode Agent) et tapez n'importe quel fragment dont vous vous souvenez — un mot du titre *ou* de ce qui a été dit dedans. Les missions correspondent instantanément par titre depuis la mémoire, puis un instant plus tard arrivent les correspondances par contenu avec le passage surligné, le projet épinglé et la date de dernière activité. En mode Agent, les missions forment le premier groupe ; sur le tableau, elles suivent les Projets. Entrée ouvre la mission.
61
68
 
62
69
  ## Cartes de lancement et cartes d'exécution
@@ -69,9 +76,9 @@ Les réponses arrivent en flux fluide et s'affichent déjà mises en forme (titr
69
76
 
70
77
  ## Sous-agents
71
78
 
72
- Certains fournisseurs peuvent confier des parties d'une tâche à des **sous-agents** : des assistants qui travaillent en parallèle et continuent après la réponse de l'agent. Les sous-agents sont **désactivés par défaut** car ils multiplient le coût d'une demande.
79
+ Certains fournisseurs peuvent confier des parties d'une tâche à des **sous-agents** : des assistants qui travaillent en parallèle et continuent après la réponse de l'agent. Les sous-agents sont **activés par défaut** ; désactivez-les par projet pour contenir les coûts, car ils multiplient le coût d'une demande.
73
80
 
74
- - **Activez-les par projet.** Ouvrez **Réglages → Sous-agents** du projet et activez **Autoriser les sous-agents dans ce projet**. Cela couvre les missions, l'exploration et les affinages du projet ; les pipelines Implement ne sont jamais concernés. Les missions sans projet suivent **Réglages de l'app → Fournisseurs d'IA → Autoriser les sous-agents dans les missions sans projet**.
81
+ - **Désactivez-les par projet.** Ouvrez **Réglages → Sous-agents** du projet et désactivez **Autoriser les sous-agents dans ce projet**. Cela couvre les missions, l'exploration et les affinages du projet ; les pipelines Implement ne sont jamais concernés. Les missions sans projet suivent **Réglages de l'app → Fournisseurs d'IA → Autoriser les sous-agents dans les missions sans projet**.
75
82
  - **Choisissez qui les exécute.** Sous **Exécuter les sous-agents avec**, l'option par défaut **Comme l'agent de la mission** laisse le CLI de la mission les lancer nativement : c'est le plus rapide, et ils partagent son cache de prompt. Choisissez plutôt un fournisseur, un modèle et un effort pour mélanger les fournisseurs — par exemple une mission Codex avec des sous-agents Claude. Les missions déjà sur ce fournisseur restent natives avec ce modèle ; sur un autre fournisseur, Specrails lance lui-même chaque sous-agent, qui démarre à froid et peut coûter plus, mais vous donne plus de contrôle et affiche le coût réel de chacun. Specrails demande une confirmation avant le changement, et ces sous-agents portent un badge de fournisseur dans la mission.
76
83
  - **Suivez leur travail.** Les agents lancés par une réponse apparaissent sur une ligne compacte sous cette réponse. Elle reste ouverte pendant qu'ils travaillent et se replie en un résumé avec la durée et les jetons totaux une fois qu'ils ont tous fini. Dépliez une ligne pour lire son résultat et son coût, ou suivre son activité en direct. Chaque lancement reste à sa place dans la conversation : les suivants ne se mélangent jamais aux précédents. Arrêtez un agent en cours depuis sa ligne, ou tous depuis la ligne de résumé.
77
84
  - **L'agent reprend tout seul.** Quand les agents en arrière-plan ont fini, l'agent continue et publie ce qu'ils ont trouvé, marqué *Suite après les agents en arrière-plan*.
@@ -0,0 +1,69 @@
1
+ # Flow : construire d’abord, la spec ensuite {#flow-mode}
2
+
3
+ Flow est une façon de construire avec un agent quand vous ne savez pas encore exactement ce que vous voulez. Vous parlez à l’agent dans votre mission, il écrit et exécute du vrai code sur sa propre branche de Flow (une copie séparée de votre projet), et quand le résultat est le bon, vous appuyez sur **Remettre** : un rail reprend vos modifications, dérive la spec et lance la vérification, la revue et la livraison habituelles.
4
+
5
+ Implement sert à déléguer un travail que vous savez déjà décrire. Flow sert à le découvrir.
6
+
7
+ ## Comment démarre un Flow
8
+
9
+ Vous n’avez jamais à demander Flow par son nom. Quand vous décrivez quelque chose d’exploratoire ou de visuel (« je veux essayer… », « je ne sais pas à quoi ça doit ressembler »), la mission affiche une carte avec deux chemins :
10
+
11
+ - **Flow** : le construire ensemble maintenant ; la spec vient à la fin.
12
+ - **Spec + Implement** : s’accorder d’abord sur une spec, puis la déléguer à un rail.
13
+
14
+ Les deux chemins ont le même poids et apparaissent toujours dans le même ordre : aucun n’est recommandé, c’est vous qui choisissez. Sous **Pourquoi l’agent pose la question**, l’agent dit en une phrase ce qui l’a fait demander, et il n’insistera pas quel que soit votre choix ou si vous appuyez sur **Pas maintenant**.
15
+
16
+ Choisir Flow ouvre une confirmation : Specrails crée une copie séparée du projet sur sa propre branche de Flow, où l’agent peut écrire du code, et votre branche principale n’est pas touchée. Appuyez sur **Démarrer le Flow**. Une spec provisoire apparaît sur le board avec le libellé **En Flow** (cliquez dessus pour revenir à la mission).
17
+
18
+ Si votre Specrails Core ne peut pas encore exécuter Flow, Démarrer est désactivé et la carte liste ce qui manque. En général, une mise à jour de Specrails Core suffit.
19
+
20
+ ## Démarrer un Flow depuis une spec existante
21
+
22
+ Toute spec peut être construite en Flow, pas seulement une nouvelle idée. Flow et Implement restent deux façons égales d’y travailler :
23
+
24
+ - sur le tableau, faites un clic droit sur une spec et choisissez **Démarrer en Flow** (à côté du glisser vers un rail) ; dans le détail de la spec, **Démarrer en Flow** se trouve à côté de **Déplacer vers un rail** ;
25
+ - dans une mission, quand vous demandez d’implémenter une spec sans nommer de rail, l’agent affiche la même carte à deux chemins pour cette spec : **Flow** y travaille avec vous, **Spec + Implement** la lance sur un rail ;
26
+ - une carte de lancement sur rail pour une seule spec propose aussi **Démarrer en Flow** à côté de son lancement.
27
+
28
+ La spec elle-même passe **En Flow** : aucune spec provisoire n’est créée et le premier tour de l’agent reçoit la spec (critères d’acceptation, Contract Layer, hors-périmètre et addenda ouverts). Démarré depuis le tableau, le Flow s’ouvre dans la mission de la spec, ou dans une nouvelle mission portant son nom. Dans un projet à plusieurs dépôts Git, quand la spec n’en désigne pas exactement un, une petite boîte de dialogue demande d’abord où le Flow s’exécute : seuls les dépôts Git sont listés, le dépôt de la spec (sinon le principal) est présélectionné et les flèches changent le choix. **Démarrer en Flow** est désactivé, avec la raison au survol, quand la spec est déjà en Flow, terminée ou annulée, sur un rail, ou que Flow n’est pas disponible.
29
+
30
+ **Abandonner** rend la spec exactement comme elle était, avec son statut précédent : votre spec n’est jamais supprimée. À la livraison du Flow, la spec est réécrite à partir de ce qui a été construit, et son texte d’origine est d’abord conservé en commentaire, **Original spec before Flow**, pour que rien ne se perde. Une spec déjà liée à Jira met à jour ce même ticket et le passe au statut associé à la revue ; aucun second ticket n’est créé.
31
+
32
+ ## Pendant le Flow
33
+
34
+ Le mode Flow est nommé là où vous regardez, dans sa propre couleur de Flow : le compositeur affiche une puce **Flow** à côté de celle d’autonomie et l’indication *Dites à l’agent quoi modifier dans ce Flow…* ; le titre de la mission indique **En Flow**, tout comme sa ligne dans la liste des missions. La conversation marque où vous êtes entré dans Flow et où vous en êtes sorti, et les réponses de l’agent écrites en Flow portent une petite marque **Flow** à côté de leur heure.
35
+
36
+ Le bandeau juste au-dessus du compositeur montre le Flow sur une ligne courte : son état, **Flow · 7 fichiers**, **Suspendre le Flow** et l’action principale, **Remettre**. Quand une action est indisponible (le Flow enregistre encore, une autre action est en cours), le survol dit pourquoi. Ouvrez la ligne avec son chevron, comme n’importe quelle exécution, pour voir le reste :
37
+
38
+ - la **branche** (cliquez pour copier son nom), les **modifications** avec les lignes ajoutées et supprimées (cliquez pour lister chaque fichier modifié avec son état et ses +/−), et le **coût jusqu’ici** tel que facturé par le fournisseur. Il affiche `—` tant qu’aucun tour n’a de coût déclaré, jamais une estimation ; un `*` signale un total qui exclut des tours sans prix, avec une note indiquant combien ;
39
+ - **Aperçu** tant que l’app du Flow tourne (voir plus bas) ;
40
+ - **Abandonner**, à l’écart, supprime les modifications du Flow, sa branche et la spec provisoire. La confirmation liste ce que vous perdez : les fichiers modifiés avec leurs +/−, la branche et la spec.
41
+
42
+ **Suspendre le Flow** arrête l’agent et conserve vos modifications et la spec. La ligne affiche alors **Reprendre le Flow**.
43
+
44
+ Vous pouvez écrire pendant que l’agent travaille : en Flow, votre message **interrompt** l’étape en cours (le bouton d’envoi devient un éclair) et l’agent continue aussitôt avec vos nouvelles informations. Tant que le Flow est ouvert, la bande git sous le compositeur s’efface : le panneau du Flow montre déjà sa branche.
45
+
46
+ ## Essayer l’app
47
+
48
+ L’agent Flow lance lui-même le typecheck et les tests pour vérifier son travail. Quand il y a quelque chose à essayer, il demande avec trois choix : **Start the app**, **Start and expose on the local network** ou **Not now**. L’exposer vous permet d’ouvrir l’app depuis un téléphone sur le même Wi-Fi ou VPN, et toute personne sur ce réseau peut y accéder.
49
+
50
+ Une fois l’app à l’écoute, l’agent vous donne ses adresses en liens et le panneau du Flow affiche **Aperçu** avec un point vert : il ouvre l’app dans votre navigateur. Son menu propose l’adresse réseau et **Arrêter l’app**. L’app tourne depuis la copie du Flow, jamais depuis votre checkout principal, et Specrails l’arrête quand vous mettez en pause, abandonnez ou remettez le Flow.
51
+
52
+ ## Remettre {#flow-hand-off}
53
+
54
+ Quand le résultat vous convient, appuyez sur **Remettre**. La ligne indique **Prêt à devenir une PR** et ouvre une seule ligne au-dessus : *Rail 2 transformera vos 7 fichiers modifiés en PR relue. En cas d’échec, votre travail est en sécurité.* Appuyez sur **Lancer**, ou sur **Pas encore** pour revenir au Flow ; **Échap** revient à **Pas encore** ; un clic ailleurs replie seulement la ligne, et le bandeau garde **Prêt à devenir une PR** avec **Lancer**. Si le moteur de votre conversation ne peut pas exécuter la remise sur cette machine, une note juste sous la ligne le dit et le moteur par défaut du rail est utilisé.
55
+
56
+ Le rail, le moteur, le modèle et l’effort sont déjà choisis pour vous (un rail libre et le moteur de votre conversation). Pour les changer, ouvrez **Changer la méthode** ; vous y voyez aussi ce qui a changé. Le coût jusqu’ici figure sur la ligne principale. Vos choix sont conservés si vous appuyez sur **Pas encore** et remettez plus tard. Pendant le démarrage, le bandeau montre le lancement sans interruption, puis suit l’exécution étape par étape. Si la limite de revue ou un budget est atteint, la ligne le dit et rien n’est lancé. Si l’exécution n’apparaît pas au bout de 45 secondes, le bandeau cesse de tourner et indique **Remise à Rail 2 toujours en cours…** avec **Actualiser**, qui vérifie à nouveau et continue d’attendre jusqu’à ce que l’exécution apparaisse.
57
+
58
+ Le rail dérive la spec et son changement de spec à partir de ce que vous avez construit, la vérifie et la relit, et la carte de livraison apparaît dans la mission comme pour toute exécution.
59
+
60
+ Si l’exécution échoue pour une raison technique, le travail revient de lui-même dans ce Flow, intact : la carte dit en mots simples ce qui a échoué (les codes restent sous **Détails techniques**) et l’agent reçoit l’erreur et l’explique. Si la revue demande des modifications, la carte propose **Revenir dans Flow** ou **Relancer**. Quand la livraison est réglée, la mission clôt le Flow par un résumé : la pull request, la spec réécrite à partir de ce que vous avez construit, le changement de spec archivé et le ticket Jira s’il y en a un.
61
+
62
+ ## Bon à savoir
63
+
64
+ - Flow n’écrit que sur sa propre branche. Hors de Flow, les missions restent en lecture seule.
65
+ - Un seul Flow par mission à la fois. Une pause survit au redémarrage de l’app.
66
+ - Si la copie du projet du Flow disparaît, le Flow est marqué **doit être vérifié** (pour information, rien à décider) et rien n’est supprimé.
67
+ - Le bandeau ne change jamais l’exécution que vous regardez. Si une autre se met à vous attendre entre-temps, son nom dans le sélecteur du bandeau indique **vous attend**.
68
+ - Jira ne reçoit rien tant que vous êtes en Flow ni si vous l’abandonnez.
69
+ - Le coût de Flow apparaît dans Analytics comme surface à part, **Flow**, et dans le bloc des missions d’agent.
@@ -37,13 +37,14 @@ Voilà. Le rail démarre un processus AI CLI dans le bon contexte d'exécution e
37
37
  | **Sélecteur de Loop** | Le Loop que ce rail exécute — un intégré (`Implement` / `Freestyle` / `SDD Quick (OpenSpec)`) ou un loop personnalisé. Voir le tableau ci-dessous. Persisté par rail. |
38
38
  | **▶ Play / ■ Stop** | Démarrer ou annuler. |
39
39
 
40
- ### Ce qu'un rail exécute : les Loops
40
+ ### Ce qu'un rail exécute : les Loops {#rail-loops}
41
41
 
42
42
  Un rail exécute un **Loop** — la recette du travail. Deux loops sont **intégrés** et couvrent les cas courants :
43
43
 
44
44
  | Loop intégré | Commande | Ce qu'il fait |
45
45
  |------|---------|--------------|
46
46
  | **Implement** | `/specrails:implement` | Un seul job couvrant tous les specs du rail. Exécute tout le pipeline Architect → Developer → Reviewer → Ship. Le choix par défaut au quotidien. |
47
+ | **Freestyle** | Freestyle | Le fournisseur du rail implémente chaque spec de façon autonome, **sans** le pipeline ; la vérification et le Loop Decider affinent ensuite le résultat jusqu'au vert. Une exécution indépendante par spec. Fonctionne avec Claude, Codex, Gemini, Kimi et les moteurs locaux ; le chat interactif dans le job est réservé à Claude. |
47
48
 
48
49
  Pour exécuter plusieurs specs, placez les specs liées (jusqu'à 3) sur un même rail — `Implement` les exécute en un seul job commun — ou répartissez les specs indépendantes sur plusieurs rails : chaque rail adossé à git s'exécute en parallèle dans son propre worktree isolé.
49
50
 
@@ -85,6 +86,25 @@ Si quelque chose semble anormal :
85
86
  - **Auto-suspension sur budget** — définissez un budget quotidien et la file se suspend d'elle-même quand la dépense du jour atteint le plafond.
86
87
  - **Tout** — quittez l'application desktop, ou lancez `specrails-desktop stop`.
87
88
 
89
+ ## Intégrer en local avec des modifications non commitées
90
+
91
+ **Intégrer en local** fusionne une livraison approuvée dans votre branche d'intégration (par exemple `main`) sur cet ordinateur, sans PR. Pas besoin d'un checkout propre :
92
+
93
+ - Les modifications non commitées qui ne touchent pas les fichiers livrés restent en place.
94
+ - Si vos modifications touchent les mêmes fichiers, Specrails les met de côté dans un git stash nommé `specrails: before integrating #N (…)`, intègre, puis les réapplique. La notification indique que vos modifications ont été mises de côté, #N intégré, puis restaurées.
95
+ - Si la réapplication entre en conflit avec le code intégré, Specrails laisse la branche exactement telle qu'intégrée et **conserve le stash** : rien n'est perdu. La carte affiche *Vos modifications locales sont enregistrées dans un stash* avec les fichiers en conflit, **Restaurer mes modifications** (nouvel essai, par exemple après avoir modifié le code) et le nom du stash à copier. Specrails les restaure ensuite lui-même sur une nouvelle branche `specrails/restore-local-<id>` dans un worktree séparé : si elles s'y appliquent sans conflit, il les commite ; sinon un résolveur de conflits IA travaille uniquement dans ce worktree, en gardant votre intention et le code intégré, et Specrails commite le résultat. La carte liste les fichiers restaurés ; **Les ramener sur <branche>** les place sur votre branche (le stash n'est supprimé qu'à ce moment) et **Supprimer la branche restaurée** retire la branche et conserve le stash. Une mission est seulement informée ; elle n'a jamais rien à exécuter. Les skills et commandes OpenSpec générées par Specrails (par exemple `.claude/skills/openspec-*/SKILL.md`) ne comptent pas comme vos modifications : en cas de conflit, elles gardent la version intégrée.
96
+ - Les fichiers ignorés ne sont jamais mis dans le stash : si l'un d'eux entre en collision avec la livraison, Specrails vous demande de le déplacer d'abord.
97
+ - Si l'application s'arrête entre la mise de côté et la restauration, elle restaure vos modifications à la prochaine ouverture du projet (uniquement si la même branche est extraite).
98
+
99
+ ## Prévision de durée et de coût {#launch-forecast}
100
+
101
+ Avant d’appuyer sur Lancer, un rail peut afficher la durée habituelle des exécutions de ce type et, quand c’est pertinent, leur coût habituel, par exemple *En général 6–9 min · 2–4 $ pour ce type d’exécution*.
102
+
103
+ La fourchette correspond à la moitié centrale de votre propre historique : du 25e au 75e centile des exécutions terminées de ce projet avec le même loop ou la même commande et le même moteur. Il faut au moins 5 exécutions comparables. D’ici là, la ligne indique *Pas encore assez d’historique* plutôt que de deviner. Seuls les coûts communiqués par le fournisseur sont utilisés ; les coûts estimés sont exclus. C’est une estimation, jamais une facture.
104
+
105
+ Le montant en dollars n’apparaît que lorsque le moteur est connu pour facturer à l’usage (par exemple une clé d’API). Avec un abonnement, ou tant que le mode de facturation n’est pas connu, seule la durée s’affiche. Quand le rail contient plusieurs specs, la fourchette vaut pour une spec et l’indique par *(par spec)*. Si la dépense du jour plus le haut de la fourchette pouvait atteindre votre budget quotidien, la ligne ajoute *Peut se mettre en pause au budget* avec un lien vers les réglages du budget. Si le budget du jour est déjà épuisé, Lancer demande d’abord une confirmation, car l’exécution se mettrait en pause jusqu’à la réinitialisation.
106
+
107
+
88
108
  ## Où aller ensuite
89
109
 
90
110
  - [Le Loop Builder](the-loop-builder) — ce qu'un rail exécute, et comment construire vos propres loops.
@@ -107,6 +107,18 @@ Si la [télémétrie](../settings/customizing) était activée pour le job, un b
107
107
 
108
108
  Pratique pour partager une exécution avec un coéquipier, ou pour déposer un rapport de bug précis.
109
109
 
110
+ ## Quand une exécution échoue
111
+
112
+ Quand un job échoue, se bloque ou s'arrête, l'état final commence par une **carte de diagnostic** qui dit en langage clair ce qui s'est passé, par exemple *Les tests ont échoué en phase Reviewer après 4 tours de correction*, et pourquoi quand l'app le sait :
113
+
114
+ - **Tests échoués** : les vérifications échouent encore après les tours de correction.
115
+ - **Limite du fournisseur** : la limite d'utilisation du fournisseur d'IA est atteinte. La carte cite le moment de la réinitialisation, avec les mots du fournisseur.
116
+ - **Environnement** : la machine ne peut pas exécuter les vérifications (identifiants, outil manquant, commande de préparation en échec). *Réparer l'environnement* montre précisément quoi exécuter ou changer.
117
+ - **Bloquée**, **à court de temps**, **silencieuse** et **arrêtée de façon inattendue** désignent la limite ou le processus qui a arrêté l'exécution.
118
+ - **Cause inconnue** : l'app ne devine pas. Elle affiche la fin du journal pour que vous le lisiez vous-même.
119
+
120
+ Sous le diagnostic, jusqu'à trois remèdes classés, et seulement ceux qui peuvent fonctionner ici : **Reprendre depuis** la phase arrêtée, **Relancer**, **Modifier la spec et relancer** (les addenda de la spec portent votre changement à l'exécution suivante), **Réparer l'environnement** et **Ouvrir le journal à l'échec**. La même cause apparaît en une ligne dans la [liste À traiter](../getting-started/the-dashboard-tour), et la carte d'exécution de la mission montre la même carte.
121
+
110
122
  ## Où aller ensuite
111
123
 
112
124
  - [Rails et jobs](rails-and-jobs) — lancement et mise en file.