specrails-desktop 2.8.0 → 2.9.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 (326) hide show
  1. package/README.md +23 -19
  2. package/client/dist/assets/{ActivityFeedPage-LKqd18-G.js → ActivityFeedPage-DNqnf1fZ.js} +1 -1
  3. package/client/dist/assets/{AgentsPage-Cb-b-6Ot.js → AgentsPage-vmNIEbGM.js} +1 -1
  4. package/client/dist/assets/{AnalyticsPage-HVxQQ1wy.js → AnalyticsPage-CdfN0ofZ.js} +1 -1
  5. package/client/dist/assets/{BarChart-BOyHB0dw.js → BarChart-CIkopHjl.js} +1 -1
  6. package/client/dist/assets/{CodePage-DnOnwKGB.js → CodePage-DDRNU5FN.js} +1 -1
  7. package/client/dist/assets/{DesktopAnalyticsPage-D2auU39x.js → DesktopAnalyticsPage-Cl3sKKSG.js} +1 -1
  8. package/client/dist/assets/{DocsDialog-CTuDX3GK.js → DocsDialog-BGrBOfUr.js} +2 -2
  9. package/client/dist/assets/{DocsPage-DRyMmu0Z.js → DocsPage-CY-2SSzw.js} +2 -2
  10. package/client/dist/assets/{ExportDropdown-DO-GGiMh.js → ExportDropdown-BRHcvP0r.js} +1 -1
  11. package/client/dist/assets/{IntegrationsPage-BhbO4jFT.js → IntegrationsPage-nKdLB4Ub.js} +1 -1
  12. package/client/dist/assets/{JobDetailPage-DJooEg1s.js → JobDetailPage-Bf0A6WWQ.js} +1 -1
  13. package/client/dist/assets/{JobsPage-BbaC-YOg.js → JobsPage-Vg4nXPdL.js} +1 -1
  14. package/client/dist/assets/{dist-js-CiIVMsx3.js → dist-js-0i_klubI.js} +1 -1
  15. package/client/dist/assets/{dist-js-Xc2lRKp2.js → dist-js-CUs5GjwA.js} +1 -1
  16. package/client/dist/assets/{index-DK214dak.js → index-BXoHFtfG.js} +8 -8
  17. package/client/dist/assets/index-D6BaYRRU.css +2 -0
  18. package/client/dist/assets/{integrations-2C7MkGT0.js → integrations-7YyTBuU9.js} +1 -1
  19. package/client/dist/assets/{integrations-CX4p_bij.js → integrations-B9CEpNF0.js} +1 -1
  20. package/client/dist/assets/{integrations-C2jQtv-s.js → integrations-BlvAdewo.js} +1 -1
  21. package/client/dist/assets/{integrations-eQPHAYsE.js → integrations-Bw8UM9Xd.js} +1 -1
  22. package/client/dist/assets/{integrations-BDC670cg.js → integrations-C5SxNKnG.js} +1 -1
  23. package/client/dist/assets/{integrations-BqUmRUef.js → integrations-CJQKMmdW.js} +1 -1
  24. package/client/dist/assets/{integrations-CB98NeH5.js → integrations-DWz1eU_K.js} +1 -1
  25. package/client/dist/assets/{integrations-_SuVeQIG.js → integrations-DiPR8Fzp.js} +1 -1
  26. package/client/dist/assets/{lib-Bo5s6xpe.js → lib-D6M_MvoC.js} +1 -1
  27. package/client/dist/assets/setup-B6egeeTM.js +1 -0
  28. package/client/dist/assets/setup-BHroXlke.js +1 -0
  29. package/client/dist/assets/setup-BIXsWUp1.js +1 -0
  30. package/client/dist/assets/setup-BJRdg1iE.js +1 -0
  31. package/client/dist/assets/setup-C0rVGnCy.js +1 -0
  32. package/client/dist/assets/setup-Cpu17hJv.js +1 -0
  33. package/client/dist/assets/setup-D-1r0uSx.js +1 -0
  34. package/client/dist/assets/setup-Dn2-veYO.js +1 -0
  35. package/client/dist/assets/{useProjectCache-DVNypkmR.js → useProjectCache-BeyBSNpD.js} +1 -1
  36. package/client/dist/index.html +4 -4
  37. package/docs/README.md +5 -2
  38. package/docs/agy-cli-provider-study.md +78 -0
  39. package/docs/cli.md +23 -4
  40. package/docs/codex.md +116 -58
  41. package/docs/creating-specs.md +19 -5
  42. package/docs/customizing.md +27 -6
  43. package/docs/gemini.md +225 -73
  44. package/docs/getting-started.md +18 -9
  45. package/docs/guide/de/agents/1-meet-the-agents.md +38 -0
  46. package/docs/guide/de/agents/2-profiles-and-the-balanced-default.md +45 -0
  47. package/docs/guide/de/agents/3-customizing-models-per-agent.md +60 -0
  48. package/docs/guide/de/agents/4-custom-agents-catalog.md +43 -0
  49. package/docs/guide/de/getting-started/1-what-is-specrails.md +49 -0
  50. package/docs/guide/de/getting-started/2-installing-and-first-run.md +42 -0
  51. package/docs/guide/de/getting-started/3-adding-your-first-project.md +58 -0
  52. package/docs/guide/de/getting-started/4-the-dashboard-tour.md +53 -0
  53. package/docs/guide/de/insights/1-analytics-and-cost-tracking.md +78 -0
  54. package/docs/guide/de/insights/2-the-integrated-terminal.md +46 -0
  55. package/docs/guide/de/insights/3-code-explorer.md +50 -0
  56. package/docs/guide/de/integrations/1-ai-providers.md +64 -0
  57. package/docs/guide/de/integrations/2-plugins.md +44 -0
  58. package/docs/guide/de/integrations/3-jira-integration.md +71 -0
  59. package/docs/guide/de/integrations/4-mobile-companion.md +38 -0
  60. package/docs/guide/de/pipeline/1-rails-and-jobs.md +94 -0
  61. package/docs/guide/de/pipeline/2-the-job-detail-view.md +90 -0
  62. package/docs/guide/de/pipeline/3-batch-implement-and-multi-feature.md +78 -0
  63. package/docs/guide/de/pipeline/4-picking-an-engine-per-rail.md +60 -0
  64. package/docs/guide/de/settings/1-themes.md +37 -0
  65. package/docs/guide/de/settings/2-language.md +39 -0
  66. package/docs/guide/de/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
  67. package/docs/guide/de/settings/4-where-your-data-lives.md +48 -0
  68. package/docs/guide/de/specs/1-specs-and-the-backlog.md +52 -0
  69. package/docs/guide/de/specs/2-add-spec-quick-mode.md +45 -0
  70. package/docs/guide/de/specs/3-add-spec-explore-mode.md +68 -0
  71. package/docs/guide/de/specs/4-drafts-and-contract-layer.md +81 -0
  72. package/docs/guide/en/agents/1-meet-the-agents.md +38 -0
  73. package/docs/guide/en/agents/2-profiles-and-the-balanced-default.md +45 -0
  74. package/docs/guide/en/agents/3-customizing-models-per-agent.md +60 -0
  75. package/docs/guide/en/agents/4-custom-agents-catalog.md +43 -0
  76. package/docs/guide/en/getting-started/1-what-is-specrails.md +49 -0
  77. package/docs/guide/en/getting-started/2-installing-and-first-run.md +42 -0
  78. package/docs/guide/en/getting-started/3-adding-your-first-project.md +58 -0
  79. package/docs/guide/en/getting-started/4-the-dashboard-tour.md +53 -0
  80. package/docs/guide/en/insights/1-analytics-and-cost-tracking.md +78 -0
  81. package/docs/guide/en/insights/2-the-integrated-terminal.md +46 -0
  82. package/docs/guide/en/insights/3-code-explorer.md +50 -0
  83. package/docs/guide/en/integrations/1-ai-providers.md +64 -0
  84. package/docs/guide/en/integrations/2-plugins.md +44 -0
  85. package/docs/guide/en/integrations/3-jira-integration.md +71 -0
  86. package/docs/guide/en/integrations/4-mobile-companion.md +38 -0
  87. package/docs/guide/en/pipeline/1-rails-and-jobs.md +94 -0
  88. package/docs/guide/en/pipeline/2-the-job-detail-view.md +90 -0
  89. package/docs/guide/en/pipeline/3-batch-implement-and-multi-feature.md +78 -0
  90. package/docs/guide/en/pipeline/4-picking-an-engine-per-rail.md +60 -0
  91. package/docs/guide/en/settings/1-themes.md +37 -0
  92. package/docs/guide/en/settings/2-language.md +39 -0
  93. package/docs/guide/en/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
  94. package/docs/guide/en/settings/4-where-your-data-lives.md +48 -0
  95. package/docs/guide/en/specs/1-specs-and-the-backlog.md +52 -0
  96. package/docs/guide/en/specs/2-add-spec-quick-mode.md +45 -0
  97. package/docs/guide/en/specs/3-add-spec-explore-mode.md +68 -0
  98. package/docs/guide/en/specs/4-drafts-and-contract-layer.md +81 -0
  99. package/docs/guide/es/agents/1-meet-the-agents.md +38 -0
  100. package/docs/guide/es/agents/2-profiles-and-the-balanced-default.md +45 -0
  101. package/docs/guide/es/agents/3-customizing-models-per-agent.md +60 -0
  102. package/docs/guide/es/agents/4-custom-agents-catalog.md +43 -0
  103. package/docs/guide/es/getting-started/1-what-is-specrails.md +49 -0
  104. package/docs/guide/es/getting-started/2-installing-and-first-run.md +42 -0
  105. package/docs/guide/es/getting-started/3-adding-your-first-project.md +58 -0
  106. package/docs/guide/es/getting-started/4-the-dashboard-tour.md +53 -0
  107. package/docs/guide/es/insights/1-analytics-and-cost-tracking.md +78 -0
  108. package/docs/guide/es/insights/2-the-integrated-terminal.md +46 -0
  109. package/docs/guide/es/insights/3-code-explorer.md +50 -0
  110. package/docs/guide/es/integrations/1-ai-providers.md +64 -0
  111. package/docs/guide/es/integrations/2-plugins.md +44 -0
  112. package/docs/guide/es/integrations/3-jira-integration.md +71 -0
  113. package/docs/guide/es/integrations/4-mobile-companion.md +38 -0
  114. package/docs/guide/es/pipeline/1-rails-and-jobs.md +94 -0
  115. package/docs/guide/es/pipeline/2-the-job-detail-view.md +90 -0
  116. package/docs/guide/es/pipeline/3-batch-implement-and-multi-feature.md +78 -0
  117. package/docs/guide/es/pipeline/4-picking-an-engine-per-rail.md +60 -0
  118. package/docs/guide/es/settings/1-themes.md +37 -0
  119. package/docs/guide/es/settings/2-language.md +39 -0
  120. package/docs/guide/es/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
  121. package/docs/guide/es/settings/4-where-your-data-lives.md +48 -0
  122. package/docs/guide/es/specs/1-specs-and-the-backlog.md +52 -0
  123. package/docs/guide/es/specs/2-add-spec-quick-mode.md +45 -0
  124. package/docs/guide/es/specs/3-add-spec-explore-mode.md +68 -0
  125. package/docs/guide/es/specs/4-drafts-and-contract-layer.md +81 -0
  126. package/docs/guide/fr/agents/1-meet-the-agents.md +38 -0
  127. package/docs/guide/fr/agents/2-profiles-and-the-balanced-default.md +45 -0
  128. package/docs/guide/fr/agents/3-customizing-models-per-agent.md +60 -0
  129. package/docs/guide/fr/agents/4-custom-agents-catalog.md +43 -0
  130. package/docs/guide/fr/getting-started/1-what-is-specrails.md +49 -0
  131. package/docs/guide/fr/getting-started/2-installing-and-first-run.md +42 -0
  132. package/docs/guide/fr/getting-started/3-adding-your-first-project.md +58 -0
  133. package/docs/guide/fr/getting-started/4-the-dashboard-tour.md +53 -0
  134. package/docs/guide/fr/insights/1-analytics-and-cost-tracking.md +78 -0
  135. package/docs/guide/fr/insights/2-the-integrated-terminal.md +46 -0
  136. package/docs/guide/fr/insights/3-code-explorer.md +50 -0
  137. package/docs/guide/fr/integrations/1-ai-providers.md +64 -0
  138. package/docs/guide/fr/integrations/2-plugins.md +44 -0
  139. package/docs/guide/fr/integrations/3-jira-integration.md +71 -0
  140. package/docs/guide/fr/integrations/4-mobile-companion.md +38 -0
  141. package/docs/guide/fr/pipeline/1-rails-and-jobs.md +94 -0
  142. package/docs/guide/fr/pipeline/2-the-job-detail-view.md +90 -0
  143. package/docs/guide/fr/pipeline/3-batch-implement-and-multi-feature.md +78 -0
  144. package/docs/guide/fr/pipeline/4-picking-an-engine-per-rail.md +60 -0
  145. package/docs/guide/fr/settings/1-themes.md +37 -0
  146. package/docs/guide/fr/settings/2-language.md +39 -0
  147. package/docs/guide/fr/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
  148. package/docs/guide/fr/settings/4-where-your-data-lives.md +48 -0
  149. package/docs/guide/fr/specs/1-specs-and-the-backlog.md +52 -0
  150. package/docs/guide/fr/specs/2-add-spec-quick-mode.md +45 -0
  151. package/docs/guide/fr/specs/3-add-spec-explore-mode.md +68 -0
  152. package/docs/guide/fr/specs/4-drafts-and-contract-layer.md +81 -0
  153. package/docs/guide/it/agents/1-meet-the-agents.md +38 -0
  154. package/docs/guide/it/agents/2-profiles-and-the-balanced-default.md +45 -0
  155. package/docs/guide/it/agents/3-customizing-models-per-agent.md +60 -0
  156. package/docs/guide/it/agents/4-custom-agents-catalog.md +43 -0
  157. package/docs/guide/it/getting-started/1-what-is-specrails.md +49 -0
  158. package/docs/guide/it/getting-started/2-installing-and-first-run.md +42 -0
  159. package/docs/guide/it/getting-started/3-adding-your-first-project.md +58 -0
  160. package/docs/guide/it/getting-started/4-the-dashboard-tour.md +53 -0
  161. package/docs/guide/it/insights/1-analytics-and-cost-tracking.md +78 -0
  162. package/docs/guide/it/insights/2-the-integrated-terminal.md +46 -0
  163. package/docs/guide/it/insights/3-code-explorer.md +50 -0
  164. package/docs/guide/it/integrations/1-ai-providers.md +64 -0
  165. package/docs/guide/it/integrations/2-plugins.md +44 -0
  166. package/docs/guide/it/integrations/3-jira-integration.md +71 -0
  167. package/docs/guide/it/integrations/4-mobile-companion.md +38 -0
  168. package/docs/guide/it/pipeline/1-rails-and-jobs.md +94 -0
  169. package/docs/guide/it/pipeline/2-the-job-detail-view.md +90 -0
  170. package/docs/guide/it/pipeline/3-batch-implement-and-multi-feature.md +78 -0
  171. package/docs/guide/it/pipeline/4-picking-an-engine-per-rail.md +60 -0
  172. package/docs/guide/it/settings/1-themes.md +37 -0
  173. package/docs/guide/it/settings/2-language.md +39 -0
  174. package/docs/guide/it/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
  175. package/docs/guide/it/settings/4-where-your-data-lives.md +48 -0
  176. package/docs/guide/it/specs/1-specs-and-the-backlog.md +52 -0
  177. package/docs/guide/it/specs/2-add-spec-quick-mode.md +45 -0
  178. package/docs/guide/it/specs/3-add-spec-explore-mode.md +68 -0
  179. package/docs/guide/it/specs/4-drafts-and-contract-layer.md +81 -0
  180. package/docs/guide/ja/agents/1-meet-the-agents.md +38 -0
  181. package/docs/guide/ja/agents/2-profiles-and-the-balanced-default.md +45 -0
  182. package/docs/guide/ja/agents/3-customizing-models-per-agent.md +60 -0
  183. package/docs/guide/ja/agents/4-custom-agents-catalog.md +43 -0
  184. package/docs/guide/ja/getting-started/1-what-is-specrails.md +49 -0
  185. package/docs/guide/ja/getting-started/2-installing-and-first-run.md +42 -0
  186. package/docs/guide/ja/getting-started/3-adding-your-first-project.md +58 -0
  187. package/docs/guide/ja/getting-started/4-the-dashboard-tour.md +53 -0
  188. package/docs/guide/ja/insights/1-analytics-and-cost-tracking.md +78 -0
  189. package/docs/guide/ja/insights/2-the-integrated-terminal.md +46 -0
  190. package/docs/guide/ja/insights/3-code-explorer.md +50 -0
  191. package/docs/guide/ja/integrations/1-ai-providers.md +64 -0
  192. package/docs/guide/ja/integrations/2-plugins.md +44 -0
  193. package/docs/guide/ja/integrations/3-jira-integration.md +71 -0
  194. package/docs/guide/ja/integrations/4-mobile-companion.md +38 -0
  195. package/docs/guide/ja/pipeline/1-rails-and-jobs.md +94 -0
  196. package/docs/guide/ja/pipeline/2-the-job-detail-view.md +90 -0
  197. package/docs/guide/ja/pipeline/3-batch-implement-and-multi-feature.md +78 -0
  198. package/docs/guide/ja/pipeline/4-picking-an-engine-per-rail.md +60 -0
  199. package/docs/guide/ja/settings/1-themes.md +37 -0
  200. package/docs/guide/ja/settings/2-language.md +39 -0
  201. package/docs/guide/ja/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
  202. package/docs/guide/ja/settings/4-where-your-data-lives.md +48 -0
  203. package/docs/guide/ja/specs/1-specs-and-the-backlog.md +52 -0
  204. package/docs/guide/ja/specs/2-add-spec-quick-mode.md +45 -0
  205. package/docs/guide/ja/specs/3-add-spec-explore-mode.md +68 -0
  206. package/docs/guide/ja/specs/4-drafts-and-contract-layer.md +81 -0
  207. package/docs/guide/pt/agents/1-meet-the-agents.md +38 -0
  208. package/docs/guide/pt/agents/2-profiles-and-the-balanced-default.md +45 -0
  209. package/docs/guide/pt/agents/3-customizing-models-per-agent.md +60 -0
  210. package/docs/guide/pt/agents/4-custom-agents-catalog.md +43 -0
  211. package/docs/guide/pt/getting-started/1-what-is-specrails.md +49 -0
  212. package/docs/guide/pt/getting-started/2-installing-and-first-run.md +42 -0
  213. package/docs/guide/pt/getting-started/3-adding-your-first-project.md +58 -0
  214. package/docs/guide/pt/getting-started/4-the-dashboard-tour.md +53 -0
  215. package/docs/guide/pt/insights/1-analytics-and-cost-tracking.md +78 -0
  216. package/docs/guide/pt/insights/2-the-integrated-terminal.md +46 -0
  217. package/docs/guide/pt/insights/3-code-explorer.md +50 -0
  218. package/docs/guide/pt/integrations/1-ai-providers.md +64 -0
  219. package/docs/guide/pt/integrations/2-plugins.md +44 -0
  220. package/docs/guide/pt/integrations/3-jira-integration.md +71 -0
  221. package/docs/guide/pt/integrations/4-mobile-companion.md +38 -0
  222. package/docs/guide/pt/pipeline/1-rails-and-jobs.md +94 -0
  223. package/docs/guide/pt/pipeline/2-the-job-detail-view.md +90 -0
  224. package/docs/guide/pt/pipeline/3-batch-implement-and-multi-feature.md +78 -0
  225. package/docs/guide/pt/pipeline/4-picking-an-engine-per-rail.md +60 -0
  226. package/docs/guide/pt/settings/1-themes.md +37 -0
  227. package/docs/guide/pt/settings/2-language.md +39 -0
  228. package/docs/guide/pt/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
  229. package/docs/guide/pt/settings/4-where-your-data-lives.md +48 -0
  230. package/docs/guide/pt/specs/1-specs-and-the-backlog.md +52 -0
  231. package/docs/guide/pt/specs/2-add-spec-quick-mode.md +45 -0
  232. package/docs/guide/pt/specs/3-add-spec-explore-mode.md +68 -0
  233. package/docs/guide/pt/specs/4-drafts-and-contract-layer.md +81 -0
  234. package/docs/guide/zh/agents/1-meet-the-agents.md +38 -0
  235. package/docs/guide/zh/agents/2-profiles-and-the-balanced-default.md +45 -0
  236. package/docs/guide/zh/agents/3-customizing-models-per-agent.md +60 -0
  237. package/docs/guide/zh/agents/4-custom-agents-catalog.md +43 -0
  238. package/docs/guide/zh/getting-started/1-what-is-specrails.md +49 -0
  239. package/docs/guide/zh/getting-started/2-installing-and-first-run.md +42 -0
  240. package/docs/guide/zh/getting-started/3-adding-your-first-project.md +58 -0
  241. package/docs/guide/zh/getting-started/4-the-dashboard-tour.md +53 -0
  242. package/docs/guide/zh/insights/1-analytics-and-cost-tracking.md +78 -0
  243. package/docs/guide/zh/insights/2-the-integrated-terminal.md +46 -0
  244. package/docs/guide/zh/insights/3-code-explorer.md +50 -0
  245. package/docs/guide/zh/integrations/1-ai-providers.md +64 -0
  246. package/docs/guide/zh/integrations/2-plugins.md +44 -0
  247. package/docs/guide/zh/integrations/3-jira-integration.md +71 -0
  248. package/docs/guide/zh/integrations/4-mobile-companion.md +38 -0
  249. package/docs/guide/zh/pipeline/1-rails-and-jobs.md +94 -0
  250. package/docs/guide/zh/pipeline/2-the-job-detail-view.md +90 -0
  251. package/docs/guide/zh/pipeline/3-batch-implement-and-multi-feature.md +78 -0
  252. package/docs/guide/zh/pipeline/4-picking-an-engine-per-rail.md +60 -0
  253. package/docs/guide/zh/settings/1-themes.md +37 -0
  254. package/docs/guide/zh/settings/2-language.md +39 -0
  255. package/docs/guide/zh/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
  256. package/docs/guide/zh/settings/4-where-your-data-lives.md +48 -0
  257. package/docs/guide/zh/specs/1-specs-and-the-backlog.md +52 -0
  258. package/docs/guide/zh/specs/2-add-spec-quick-mode.md +45 -0
  259. package/docs/guide/zh/specs/3-add-spec-explore-mode.md +68 -0
  260. package/docs/guide/zh/specs/4-drafts-and-contract-layer.md +81 -0
  261. package/docs/internals/README.md +1 -1
  262. package/docs/internals/adding-a-provider.md +192 -59
  263. package/docs/internals/api-reference.md +130 -21
  264. package/docs/internals/architecture.md +22 -9
  265. package/docs/internals/bundled-framework-build-plan.md +264 -0
  266. package/docs/internals/configuration.md +33 -8
  267. package/docs/internals/global-artifacts-alignment-contract.md +486 -0
  268. package/docs/internals/global-artifacts-relocation-evaluation.md +294 -0
  269. package/docs/internals/operations-runbook.md +16 -5
  270. package/docs/internals/profiles.md +42 -14
  271. package/docs/platforms/macos.md +27 -8
  272. package/docs/platforms/windows.md +20 -6
  273. package/docs/running-pipelines.md +17 -9
  274. package/docs/terminal.md +9 -3
  275. package/docs/tracking-cost.md +17 -11
  276. package/package.json +1 -1
  277. package/server/dist/agent-refine-manager.js +20 -5
  278. package/server/dist/artifact-registry.js +468 -0
  279. package/server/dist/attachment-manager.js +5 -8
  280. package/server/dist/browser-capture-manager.js +4 -4
  281. package/server/dist/bundled-core.js +72 -0
  282. package/server/dist/bundled-openspec.js +58 -0
  283. package/server/dist/chat-manager.js +42 -5
  284. package/server/dist/code-explorer-router.js +10 -7
  285. package/server/dist/config.js +7 -2
  286. package/server/dist/context-budget.js +17 -6
  287. package/server/dist/context-scope.js +6 -2
  288. package/server/dist/contract-refine-runner.js +31 -9
  289. package/server/dist/desktop-router.js +24 -1
  290. package/server/dist/docs-router.js +210 -132
  291. package/server/dist/file-summary-manager.js +41 -16
  292. package/server/dist/framework-manager.js +248 -0
  293. package/server/dist/framework-migration.js +308 -0
  294. package/server/dist/index.js +30 -0
  295. package/server/dist/install-config-path.js +73 -0
  296. package/server/dist/jira/jira-sync-manager.js +23 -11
  297. package/server/dist/openspec-shim.js +153 -0
  298. package/server/dist/plugins-router.js +19 -8
  299. package/server/dist/profiles-router.js +38 -16
  300. package/server/dist/project-registry.js +101 -3
  301. package/server/dist/project-router-chat.js +1 -1
  302. package/server/dist/project-router-helpers.js +25 -12
  303. package/server/dist/project-router-jobs.js +3 -3
  304. package/server/dist/project-router-settings.js +8 -6
  305. package/server/dist/project-router-setup.js +27 -10
  306. package/server/dist/project-router-spending.js +6 -1
  307. package/server/dist/project-router-tickets.js +30 -10
  308. package/server/dist/project-router.js +16 -1
  309. package/server/dist/queue-manager.js +149 -18
  310. package/server/dist/setup-manager.js +131 -29
  311. package/server/dist/smash-runner.js +21 -6
  312. package/server/dist/ticket-store.js +6 -2
  313. package/server/dist/ticket-watcher.js +5 -1
  314. package/server/dist/vitest-setup.js +25 -0
  315. package/server/dist/workspace-manager.js +199 -0
  316. package/server/dist/workspace-resolution.js +147 -0
  317. package/client/dist/assets/index-DgKfQFcf.css +0 -2
  318. package/client/dist/assets/setup-BIIkb-_K.js +0 -1
  319. package/client/dist/assets/setup-BeQxu9kD.js +0 -1
  320. package/client/dist/assets/setup-CPa6GnlI.js +0 -1
  321. package/client/dist/assets/setup-CZl4OEJx.js +0 -1
  322. package/client/dist/assets/setup-ChpodNfn.js +0 -1
  323. package/client/dist/assets/setup-D_fjJH6u.js +0 -1
  324. package/client/dist/assets/setup-YzD8DX4O.js +0 -1
  325. package/client/dist/assets/setup-fRpDozmq.js +0 -1
  326. package/docs/adding-a-provider.md +0 -107
@@ -0,0 +1,38 @@
1
+ # La app complementaria para el móvil
2
+
3
+ Specrails tiene una app complementaria para el teléfono para que puedas vigilar tus rails mientras estás lejos del escritorio: ver los trabajos en marcha, verlos terminar y mantenerte al tanto sin estar sentado frente al panel.
4
+
5
+ ## Para qué sirve
6
+
7
+ La app complementaria es una superficie de **monitorización**. Se conecta a tu app de escritorio de Specrails en ejecución a través de tu red local y refleja en tu teléfono la actividad en vivo de proyectos y trabajos. Piénsala como una ventana de un vistazo a los mismos rails que verías de otro modo en el panel.
8
+
9
+ ## Emparejar tu teléfono
10
+
11
+ El emparejamiento gira en torno a un **código QR** para que no tengas que teclear nada engorroso:
12
+
13
+ 1. Asegúrate de que tu app de escritorio de Specrails está en ejecución y de que tu teléfono está en la **misma red local** (misma Wi-Fi).
14
+ 2. En la app de escritorio, abre la pantalla de emparejamiento para mostrar un código QR.
15
+ 3. En la app complementaria de tu teléfono, escanea ese código.
16
+ 4. El teléfono descubre la app de escritorio en la red y se conecta.
17
+
18
+ A partir de ahí, la app complementaria mantiene una conexión en vivo y transmite las listas de proyectos y las actualizaciones de los trabajos a medida que ocurren.
19
+
20
+ ## Cómo funciona la conexión
21
+
22
+ La app de escritorio se anuncia en tu red local para que el teléfono pueda encontrarla, y el código QR lleva los datos que el teléfono necesita para conectarse de forma segura. Todo se queda en tu red local: la app complementaria habla directamente con tu máquina, no a través de ningún servicio en la nube.
23
+
24
+ Como se basa en la red local, los dos dispositivos tienen que poder alcanzarse mutuamente. Si el emparejamiento no funciona:
25
+
26
+ - Confirma que ambos dispositivos están en la **misma Wi-Fi** (y que la red no aísla a los clientes entre sí).
27
+ - Asegúrate de que la app de escritorio está **en ejecución** cuando escaneas.
28
+ - Vuelve a abrir la pantalla de emparejamiento para refrescar el código QR e inténtalo escanear de nuevo.
29
+
30
+ ## Qué verás
31
+
32
+ Una vez emparejada, la app complementaria muestra tus proyectos y su actividad de trabajos en vivo, así que recibes las mismas actualizaciones de rails en tiempo real que fluyen al panel de escritorio, enviadas a tu teléfono según se producen. Es la forma más sencilla de enterarte en el momento en que un rail de larga duración llega a su fin.
33
+
34
+ ## Bueno saberlo
35
+
36
+ - **Monitorización ante todo.** La app complementaria está pensada para mantener un ojo sobre los rails, no para dirigir todo el flujo de trabajo de escritorio desde el teléfono.
37
+ - **Solo local.** Sin cuenta, sin relay en la nube: tu máquina y tu teléfono, en tu red.
38
+ - **Mantén el escritorio despierto.** La app complementaria refleja una app de escritorio en ejecución; si tu máquina entra en suspensión o la app se cierra, las actualizaciones en vivo se pausan hasta que vuelva.
@@ -0,0 +1,94 @@
1
+ # Rails y jobs
2
+
3
+ Ya tienes specs en el tablero. Aquí es donde se convierten en código. Un **rail** es el carril que lleva una spec a través de todo el pipeline — Architect → Developer → Reviewer → Ship — ejecutando agentes de IA reales dentro del directorio de tu proyecto. En esta página verás cómo lanzar un rail, la cola de jobs y cómo seguir el trabajo en vivo.
4
+
5
+ ## Qué es un rail
6
+
7
+ Imagina la pantalla dividida en dos:
8
+
9
+ ```
10
+ SpecsBoard (izquierda) Rails (derecha)
11
+ ───────────────── ─────────────────
12
+ #1 Login flow ─┐
13
+ #2 Webhook retry │ arrastra hacia
14
+ #3 Cost limits │ ────────────► Rail 1 ▶ Play
15
+ #4 Audit log │
16
+ └────────────► Rail 2 ▶ Play
17
+ ```
18
+
19
+ Un rail es un **carril de ejecución**. Arrastras una tarjeta de spec desde el SpecsBoard hasta un rail y luego pulsas **▶ Play**. El rail lanza el pipeline y trabaja la spec de principio a fin, directamente en el directorio de trabajo de tu proyecto — editando archivos, ejecutando tests, todo lo necesario.
20
+
21
+ Puedes tener varios rails para organizar el trabajo en carriles con nombre (uno para la funcionalidad en la que estás centrado, otro en cola detrás). Tienes más sobre multi-rail y procesamiento por lotes en [Batch implement y multifuncionalidad](batch-implement-and-multi-feature).
22
+
23
+ ## Lanzar un rail sobre una spec
24
+
25
+ 1. **Arrastra una tarjeta de spec** desde el SpecsBoard hasta un rail. El ID de la spec aparece en la lista de specs del rail. (¿Prefieres no arrastrar? Usa el popover **Mover a rail** en la tarjeta de la spec — muestra un punto de estado por cada rail para que no dejes trabajo en un carril ocupado.)
26
+ 2. **Elige un modo** si quieres algo distinto al predeterminado — el control segmentado de la cabecera del rail ofrece `Implement`, `Batch` y (solo en rails de Claude) `Ultra`.
27
+ 3. **Pulsa ▶ Play.**
28
+
29
+ Eso es todo. El rail arranca un proceso de la CLI de IA en tu proyecto y empieza el pipeline.
30
+
31
+ ### Qué hay en la cabecera de un rail
32
+
33
+ | Control | Qué hace |
34
+ |---------|--------------|
35
+ | **Pastilla de estado** | `idle`, `running` o `failed`. No hay un estado "completed" aparte — un rail vuelve a `idle` cuando su job termina limpiamente. |
36
+ | **Lista de specs** | Los IDs asignados a este rail. Arrastra más para añadirlas, o sácalas para desvincularlas. |
37
+ | **Control de modo** | `Implement` / `Batch` / `Ultra` — mira la tabla de más abajo. Se recuerda por rail. |
38
+ | **Selector de perfil** | Qué perfil de agentes se ejecuta (solo en rails de Claude). Solo aparece cuando el proyecto tiene al menos un perfil. |
39
+ | **Selector de motor** | Qué proveedor instalado ejecuta este rail — Claude, Codex o Gemini. Solo se muestra cuando el proyecto tiene más de un proveedor. Mira [Elegir un motor por rail](picking-an-engine-per-rail). |
40
+ | **▶ Play / ■ Stop** | Iniciar o cancelar. |
41
+
42
+ ### Los tres modos de rail
43
+
44
+ | Modo | Comando | Qué hace |
45
+ |------|---------|--------------|
46
+ | **Implement** | `/specrails:implement` | Un job que cubre todas las specs del rail. Ejecuta el pipeline completo Architect → Developer → Reviewer → Ship. El predeterminado del día a día. |
47
+ | **Batch** | `/specrails:batch-implement` | Un job que recorre las specs del rail de forma secuencial, en oleadas según sus dependencias. Lo mejor para varias specs relacionadas. |
48
+ | **Ultra** | Ultracode | Claude implementa cada spec de forma autónoma, **saltándose** el pipeline. Un job independiente por spec. Solo Claude. |
49
+
50
+ Ultra es el caso especial: se salta la cadena de agentes y le entrega a Claude la spec en bruto para que la trabaje con sus herramientas nativas. Es de final abierto, así que al pulsar Play primero se abre una confirmación, y un selector de modelo por rail te deja elegir Haiku / Sonnet / Opus. Solo aparece cuando el motor del rail es Claude.
51
+
52
+ ## La cola de jobs
53
+
54
+ Cada vez que pulsas Play, la ejecución del rail se convierte en un **job**. La regla más importante que debes interiorizar:
55
+
56
+ > **Un job a la vez, por proyecto.** Cada proyecto tiene una única cola. Dentro de un mismo proyecto solo se ejecuta un job de rail a la vez — el resto esperan en cola detrás y arrancan automáticamente a medida que se liberan huecos.
57
+
58
+ Esto sorprende a quien añade tres rails esperando que se ejecuten en paralelo. No lo harán — no dentro del mismo proyecto. Añadir rails *organiza* tu trabajo en carriles; no hace que esos carriles se ejecuten a la vez.
59
+
60
+ **El paralelismo real es entre proyectos.** Cada proyecto tiene su propia cola independiente, así que un rail en el Proyecto A y un rail en el Proyecto B se ejecutan al mismo tiempo sin competir. ¿Quieres más rendimiento? Abre más proyectos.
61
+
62
+ No hay ninguna palanca global de concurrencia que ajustar. El único freno automático se basa en el presupuesto: si has fijado un presupuesto diario (de proyecto o de toda la app), la cola se pausa sola en cuanto el gasto de ese día llega al tope.
63
+
64
+ ## Verlo en marcha
65
+
66
+ Encuentra todos los jobs en **Jobs**, en la barra lateral derecha del proyecto — una lista de tarjetas, la más reciente primero. Cada tarjeta muestra una insignia de estado, la insignia de perfil, una insignia de prioridad, la duración, el coste y el comando lanzado. Encima de la lista:
67
+
68
+ - **Chips de filtro por estado** — muestra solo los jobs en un estado concreto.
69
+ - **Filtro por rango de fechas** — acota a una ventana temporal.
70
+ - **Comparar** — elige dos jobs y velos lado a lado.
71
+
72
+ Pulsa cualquier tarjeta para abrir la **vista de detalle del job**, donde están el log en streaming en vivo y las métricas en vivo. Eso es la página siguiente: [La vista de detalle del job](the-job-detail-view).
73
+
74
+ ## Cancelar un job
75
+
76
+ Pulsa **■ Stop** en la cabecera del rail. La app envía `SIGTERM` al subproceso, espera **5 segundos** a que salga limpiamente y luego le aplica `SIGKILL`. No queda nada a medio arrancar.
77
+
78
+ ## Si un rail no se lanza
79
+
80
+ Si eliges un motor cuya CLI no está instalada en tu máquina, el lanzamiento **falla rápido** en vez de iniciar un job roto — no se arranca nada. Instala la CLI del proveedor que falte ([Usar Codex](../integrations/using-codex), [Usar Gemini](../integrations/using-gemini)) y vuelve a lanzar. Si falta Claude o Codex, verás un mensaje preciso de "*<provider> CLI not found*"; si falta Gemini, hoy aparece un error de lanzamiento genérico, pero el resultado es el mismo.
81
+
82
+ ## Detenerlo todo
83
+
84
+ Si algo parece ir mal:
85
+
86
+ - **Un rail** — pulsa **■ Stop** en su cabecera.
87
+ - **Pausa automática por presupuesto** — fija un presupuesto diario y la cola se pausará sola cuando el gasto de ese día llegue al tope.
88
+ - **Todo** — cierra la app de escritorio o ejecuta `specrails-desktop stop`.
89
+
90
+ ## A dónde ir después
91
+
92
+ - [La vista de detalle del job](the-job-detail-view) — fases, métricas en vivo, tarjetas de ticket.
93
+ - [Batch implement y multifuncionalidad](batch-implement-and-multi-feature) — ejecuta varias specs a la vez.
94
+ - [Elegir un motor por rail](picking-an-engine-per-rail) — Claude vs Codex vs Gemini.
@@ -0,0 +1,90 @@
1
+ # La vista de detalle del job
2
+
3
+ Pulsa cualquier tarjeta de job en la página **Jobs** y aterrizas aquí: la cabina de mando de una ejecución de rail concreta. Está construida en torno a una promesa — **los números en vivo que ves son reales, nunca estimaciones.** En esta página recorremos las fases, las métricas en vivo y las tarjetas de ticket.
4
+
5
+ ## La distribución
6
+
7
+ Dos paneles se sitúan encima del log completo en streaming:
8
+
9
+ ```
10
+ ┌─────────────────────────────────────────────┐
11
+ │ Cabecera de estado (icono · duración en vivo · …) │
12
+ ├─────────────────────────────────────────────┤
13
+ │ Cabecera de tickets ( #12 #14 #15 ) │
14
+ ├─────────────────────────────────────────────┤
15
+ │ │
16
+ │ Log en streaming (auto-scroll · búsqueda · …) │
17
+ │ │
18
+ └─────────────────────────────────────────────┘
19
+ ```
20
+
21
+ ## Fases del pipeline
22
+
23
+ Para los jobs `Implement` y `Batch`, la ejecución avanza por las fases que define el slash command — por defecto:
24
+
25
+ ```
26
+ Architect ──► Developer ──► Reviewer ──► Ship
27
+ ```
28
+
29
+ Cada fase es un agente especializado que el motor del rail invoca en el directorio de tu proyecto:
30
+
31
+ | Fase | Agente | Qué hace |
32
+ |-------|-------|--------------|
33
+ | **Architect** | `sr-architect` | Planifica la implementación. |
34
+ | **Developer** | `sr-developer` | Escribe el código. |
35
+ | **Reviewer** | `sr-reviewer` | Revisa el resultado. |
36
+ | **Ship** | (varía) | Cierre final: tests, commit, borrador de PR. |
37
+
38
+ Qué agente se encarga de cada fase lo decide el **perfil de agentes** del proyecto. El trío base (`sr-architect`, `sr-developer`, `sr-reviewer`) está siempre presente; las reglas de enrutamiento de un perfil pueden añadir agentes o cambiar cuál ejecuta una fase. La barra de progreso de fases solo aparece cuando el comando define realmente fases — los jobs de Ultracode (que se saltan el pipeline) no mostrarán ninguna.
39
+
40
+ ## Métricas en vivo — honestas por diseño
41
+
42
+ La cabecera de estado es el titular. Muestra un icono de estado, una línea de actividad que describe qué está haciendo el job *ahora mismo*, un recuento de pasos dados y una fila de métricas:
43
+
44
+ | Métrica | Cuándo ves el valor real |
45
+ |--------|------------------------------|
46
+ | **Duración** | **En vivo.** Un contador de 1 segundo va sumando mientras el job se ejecuta — este es el único número genuinamente en vivo. |
47
+ | **Turnos** | Se deriva de forma incremental a partir de los eventos de assistant en streaming según van llegando. |
48
+ | **Tokens** | Se agrega de forma incremental desde el mismo stream (tolerante con eventos a los que les faltan los campos de uso). |
49
+ | **Coste** | Se muestra como `—` hasta que el job termina, y entonces se revela como el `total_cost_usd` autoritativo. |
50
+
51
+ El principio de diseño: **ningún número aproximado o estimado a media ejecución.** La duración es real porque es simplemente un reloj. Los turnos y los tokens se acumulan a partir de actividad real en streaming. El coste, deliberadamente, *no* se estima mientras se ejecuta — se muestra como pendiente y solo se resuelve a su cifra final y autoritativa cuando el proveedor la reporta al terminar el job. Si un número parece estar esperando, es intencionado — te estamos mostrando la verdad, no una proyección.
52
+
53
+ La etiqueta y el icono de la cabecera se corresponden con el estado del job, y el panel se renderiza igual para los jobs `running`, `completed` y `failed` — así, la vista de detalle de un job terminado muestra las mismas métricas congeladas en sus valores finales.
54
+
55
+ ## Las tarjetas de ticket
56
+
57
+ La **cabecera de tickets** se sitúa entre la cabecera de estado y el log. Es una tarjeta de identidad premium que muestra un chip por cada spec que tocó el job — extraídos del comando lanzado, así que reflejan exactamente qué tickets abarcó esta ejecución.
58
+
59
+ - **2–3 tickets** — se muestran como una lista de chips.
60
+ - **4 o más** — se colapsan en un modo compacto `+ N más` con un chevron para expandir, así la cabecera se mantiene ordenada.
61
+
62
+ Pulsar un chip abre el detalle de esa spec **sobre la página del job** — no pierdes tu sitio ni cambias de ruta. Es una forma rápida de releer qué se supone que tiene que entregar un job mientras lo ves trabajar. (En pantallas de ancho de tablet incluso puedes arrastrar a un lado un modal de ticket para comparar dos specs lado a lado.)
63
+
64
+ ## El log en streaming
65
+
66
+ Bajo los paneles está el log completo de la ejecución, transmitido en tiempo real por el WebSocket:
67
+
68
+ - **Auto-scroll** mantiene a la vista la salida más reciente (sube el scroll y se pausa para que puedas leer).
69
+ - **Búsqueda** para saltar a una frase.
70
+ - **Copiar** para llevarte el log entero.
71
+
72
+ Esta es la verdad en bruto de lo que está haciendo la IA — cada llamada a una herramienta, cada edición de archivo, cada ejecución de tests.
73
+
74
+ ## Exportar diagnóstico
75
+
76
+ Si la [telemetría](../settings/customizing) estaba activada para el job, aparece un botón **Exportar diagnóstico** en la cabecera. Descarga un ZIP que contiene:
77
+
78
+ - `job-metadata.json` — comando, estado, perfil, plugins.
79
+ - `telemetry.ndjson` — señales OTLP/JSON sin comprimir.
80
+ - `logs.txt` — el log completo en streaming.
81
+ - `summary.md` — lo más destacado en formato legible.
82
+ - `profile.json`, `plugins.json` — instantáneas exactas de lo que se ejecutó (cuando existen).
83
+
84
+ Práctico para compartir una ejecución con un compañero o para abrir un informe de bug preciso.
85
+
86
+ ## A dónde ir después
87
+
88
+ - [Rails y jobs](rails-and-jobs) — lanzamiento y encolado.
89
+ - [Batch implement y multifuncionalidad](batch-implement-and-multi-feature) — muchas specs, oleadas por dependencias.
90
+ - [Seguimiento de costes](../analytics/tracking-cost) — convierte los costes por job en analíticas de proyecto.
@@ -0,0 +1,78 @@
1
+ # Batch implement y multifuncionalidad
2
+
3
+ Una spec a la vez está bien, pero buena parte del trabajo real viene en racimos — una funcionalidad más sus tests más su migración, o un backlog que quieres dejar limpio de una sentada. Esta página cubre cómo ejecutar varias specs juntas: el modo Batch, las oleadas por dependencias y cómo el pipeline evita que el trabajo concurrente se pise.
4
+
5
+ ## Ejecutar varias specs a la vez
6
+
7
+ La forma más sencilla de ejecutar un montón de specs desde un mismo rail es el modo **Batch**:
8
+
9
+ 1. **Arrastra todas las specs** que quieras a un único rail. Se apilan en la lista de specs de ese rail.
10
+ 2. **Cambia el modo del rail a Batch** (el control segmentado de la cabecera del rail).
11
+ 3. **Pulsa ▶ Play.**
12
+
13
+ El rail lanza **un** job `/specrails:batch-implement` que recorre todas las specs asignadas. Monitorízalo como cualquier otro job en la página Jobs — es un único job que cubre el conjunto entero, no un job por spec.
14
+
15
+ Esto importa por la **cola de un job por proyecto**. Como un proyecto solo ejecuta un job de rail a la vez, el modo Batch es también la forma más limpia de *encadenar* una lista de specs sin tener que hacer malabares con varios rails y esperar a que cada uno se vacíe.
16
+
17
+ ### Implement vs Batch — ¿qué modo?
18
+
19
+ | | **Implement** | **Batch** |
20
+ |---|---|---|
21
+ | Comando | `/specrails:implement` | `/specrails:batch-implement` |
22
+ | Specs por job | Todas las del rail, tratadas como una sola unidad de trabajo | Todas las del rail, trabajadas **secuencialmente** |
23
+ | Mejor para | Un cambio fuertemente acoplado | Varias funcionalidades distintas que quieres despachar en orden |
24
+ | Ordenación | n/a | Oleadas según dependencias (mira más abajo) |
25
+
26
+ Si las specs son de verdad un único cambio, usa **Implement**. Si son una lista de funcionalidades independientes, usa **Batch** y deja que las secuencie.
27
+
28
+ ## Oleadas por dependencias
29
+
30
+ El modo Batch no se limita a ejecutar las specs de arriba a abajo — calcula un **orden de ejecución según dependencias** y agrupa las specs en *oleadas*. El orquestador (`/specrails:batch-implement`) averigua qué specs dependen de cuáles y luego las planifica de modo que nada se ejecute antes que el trabajo sobre el que se construye.
31
+
32
+ Conceptualmente:
33
+
34
+ ```
35
+ Oleada 1: #2 (modelo de datos) ← sin dependencias, se ejecuta primero
36
+ Oleada 2: #4 (API sobre el modelo) ← espera a #2
37
+ #5 (CLI sobre el modelo) ← espera a #2
38
+ Oleada 3: #7 (docs de todo) ← espera a #4 y #5
39
+ ```
40
+
41
+ Dentro del job, las specs de cada oleada se implementan antes de que empiece la siguiente. Esto no lo configuras a mano — el orquestador deriva las oleadas de las propias specs. Velo desplegarse en la [vista de detalle del job](the-job-detail-view): el log en streaming va narrando en qué spec está el batch, y la cabecera de tickets muestra todas las specs que tocó el job.
42
+
43
+ ## Aislamiento por worktree
44
+
45
+ Cuando se implementan varias specs en una misma ejecución, el pipeline mantiene cada unidad de trabajo aislada para que los cambios concurrentes o secuenciales no se pisen los archivos. El orquestador de batch ejecuta la implementación de cada spec en su propio contexto de trabajo limpio y después integra los resultados — así una spec a medias nunca deja tu árbol en un estado intermedio roto que la siguiente pudiera ver.
46
+
47
+ En la práctica esto significa:
48
+
49
+ - Cada spec recibe un lienzo en blanco contra el que implementar, en vez de heredar a mitad de camino las ediciones en vuelo de la spec anterior.
50
+ - Las revisiones y los pasos de ship operan sobre una instantánea coherente, no sobre un objetivo en movimiento.
51
+ - Un fallo en una oleada queda contenido — no corrompe en silencio las specs que ya se entregaron.
52
+
53
+ La app registra, por cada job, exactamente qué archivos se tocaron y qué ticket los tocó (lo verás aflorar como chips de procedencia en la sección **Code** y como una lista de "Archivos tocados por este ticket" en el modal de detalle de cada spec). Esa atribución es lo que te permite confiar en una ejecución multi-spec: siempre puedes rastrear un cambio de archivo hasta la spec que lo causó.
54
+
55
+ ## Multifuncionalidad entre proyectos
56
+
57
+ Si quieres paralelismo de verdad — dos funcionalidades grandes construyéndose al mismo tiempo — repártelas **entre proyectos**, no entre rails de un mismo proyecto. Cada proyecto tiene su propia cola independiente, así que:
58
+
59
+ ```
60
+ Proyecto A ▶ Rail ejecutando la funcionalidad X ┐
61
+ ├─ se ejecutan a la vez
62
+ Proyecto B ▶ Rail ejecutando la funcionalidad Y ┘
63
+ ```
64
+
65
+ No hay límite global de concurrencia ni contención entre proyectos. Abre los dos, lanza un rail en cada uno y avanzarán juntos. El único freno compartido es tu tope de presupuesto, que pausa las colas por proyecto o de toda la app en cuanto el gasto del día llega al límite.
66
+
67
+ ## Consejos para batches grandes
68
+
69
+ - **Agrupa specs relacionadas en un mismo rail** antes de pasar a Batch — las oleadas por dependencias solo ven lo que hay en ese rail.
70
+ - **Fija un presupuesto diario** antes de un batch grande para que una ejecución inesperadamente cara se pause sola en vez de desbocarse. Configúralo en [Presupuesto](../settings/customizing).
71
+ - **Usa el botón Comparar** en la página Jobs después para enfrentar dos ejecuciones de batch lado a lado.
72
+ - **Exporta un diagnóstico** (si la telemetría estaba activada) para obtener la instantánea exacta de perfil + plugins de todo el batch.
73
+
74
+ ## A dónde ir después
75
+
76
+ - [Rails y jobs](rails-and-jobs) — el modelo de cola en profundidad.
77
+ - [La vista de detalle del job](the-job-detail-view) — mira un batch ejecutarse en vivo.
78
+ - [Elegir un motor por rail](picking-an-engine-per-rail) — ten en cuenta que Batch corre en cualquier proveedor; Ultra es solo de Claude.
@@ -0,0 +1,60 @@
1
+ # Elegir un motor por rail
2
+
3
+ Specrails desktop trata **Claude Code**, **Codex CLI** y **Gemini CLI** como motores de primera clase. Un proyecto puede tener uno, dos o los tres instalados — y cuando hay más de uno, eliges qué motor ejecuta cada rail. Esta página cubre el selector de motor por rail y cuándo recurrir a cada uno.
4
+
5
+ ## Cuándo aparece el selector
6
+
7
+ El **selector de motor** vive en la cabecera del rail, justo al lado del control de modo. Solo se muestra cuando el proyecto tiene **más de un** proveedor instalado.
8
+
9
+ > **Los proyectos de un solo proveedor se comportan de forma byte-idéntica.** Si un proyecto tiene un único motor, no se muestra ningún selector y nada cambia respecto a la selección de proveedor — sencillamente se ejecuta en ese motor. El selector es exclusivo para proyectos multiproveedor.
10
+
11
+ Cuando sí aparece, tu elección es **por rail y por lanzamiento** — distintos rails pueden ejecutar distintos motores, y tu elección se recuerda por proyecto (con el motor principal del proyecto como valor por defecto).
12
+
13
+ ## Cómo elegir un motor
14
+
15
+ 1. Asegúrate de que el selector de motor del rail está visible (el proyecto tiene 2 o más proveedores).
16
+ 2. Púlsalo y elige **Claude**, **Codex** o **Gemini**.
17
+ 3. Lanza el rail con **▶ Play**.
18
+
19
+ El motor seleccionado ejecuta cada fase del pipeline de ese rail. Si la CLI del motor elegido no está instalada, el lanzamiento falla rápido — no se arranca nada. Instala la CLI que falta y vuelve a intentarlo.
20
+
21
+ ## En qué destaca cada motor
22
+
23
+ Los tres ejecutan los pipelines estándar **Implement** y **Batch**. Aquí tienes una guía práctica para elegir:
24
+
25
+ | Motor | Recurre a él cuando… | Notas |
26
+ |--------|--------------------|-------|
27
+ | **Claude** | Quieres el conjunto completo de funciones: perfiles de agentes, Ultracode, reporte de coste nativo, el soporte de herramientas más rico. El predeterminado para la mayoría del trabajo. | El único motor que admite **perfiles de agentes**, **Ultracode** y algunas funciones de spec exclusivas de Claude (Contract Layer, SMASH). |
28
+ | **Codex** | Prefieres la CLI de OpenAI Codex o quieres comparar implementaciones entre proveedores. | `codex` ≥ 0.128.0. Sin reporte de coste nativo — la app rellena el coste desde su tarifario. Los perfiles no aplican. |
29
+ | **Gemini** | Quieres la CLI de Gemini de Google, telemetría nativa o una ejecución más barata para specs rutinarias. | `gemini` ≥ 0.11.0 (define `GEMINI_API_KEY`). Telemetría OTLP nativa. Los perfiles no aplican. |
30
+
31
+ ### Las funciones exclusivas de Claude
32
+
33
+ Algunas cosas solo funcionan en rails de Claude — elige Claude si las necesitas:
34
+
35
+ - **Perfiles de agentes** — enrutamiento de modelo por agente. En rails de Codex o Gemini la ejecución siempre usa el modo legacy y cualquier perfil seleccionado se **ignora**. El selector de perfil se oculta para los motores que no son Claude.
36
+ - **Ultracode (modo `Ultra`)** — el modo autónomo que se salta el pipeline. El segmento `Ultra` y su selector de modelo Haiku/Sonnet/Opus solo aparecen cuando el motor del rail es Claude.
37
+ - **Contract Layer y SMASH** — funciones de refinamiento de spec exclusivas de Claude (son opciones de Add-Spec, no de rail, pero aplica la misma restricción).
38
+
39
+ Si un proyecto mezcla motores, la barra lateral derecha solo muestra las secciones que **todos** los proveedores instalados admiten — así, la sección **Agents** desaparece por completo en un proyecto que incluya cualquier proveedor que no sea Claude, porque los perfiles son específicos de Claude.
40
+
41
+ ## Un flujo de trabajo práctico
42
+
43
+ Los proyectos multiproveedor brillan cuando quieres **comparar** o **afinar costes**:
44
+
45
+ - **Comparar implementaciones.** Pon la misma spec en dos rails, configura uno con Claude y otro con Codex, lánzalos los dos (entre proyectos, o uno tras otro en la cola del mismo proyecto) y luego usa el botón **Comparar** en la página Jobs para enfrentar los resultados.
46
+ - **Afinar costes por spec.** Ejecuta las specs de alto riesgo en Claude con un perfil `max`; ejecuta las specs rutinarias de limpieza en Gemini para ahorrar gasto. Filtra `/analytics` por motor para ver el desglose.
47
+ - **Pon un valor por defecto con cabeza.** Configura el motor que más usas como principal del proyecto para que los rails lo adopten por defecto, y cambia por rail solo cuando una spec concreta quiera uno distinto.
48
+
49
+ ## Cosas a tener en cuenta
50
+
51
+ - **La selección de proveedor es inmutable tras crear el proyecto** (v1). Eliges los proveedores instalados al añadir el proyecto; no hay un interruptor en Ajustes para añadir o quitar uno después.
52
+ - **El coste siempre se registra**, incluso para los motores sin reporte de coste nativo — la app recurre a un tarifario para que las ejecuciones de Codex y Gemini también aparezcan en [analíticas](../analytics/tracking-cost).
53
+ - **El botón "Abrir CLI de IA" del terminal** también ofrece un selector de proveedor en proyectos multiproveedor, por si prefieres manejar una CLI a mano.
54
+
55
+ ## A dónde ir después
56
+
57
+ - [Usar Codex](../integrations/using-codex) — instalar e iniciar sesión.
58
+ - [Usar Gemini](../integrations/using-gemini) — instalar, `GEMINI_API_KEY`, telemetría.
59
+ - [Rails y jobs](rails-and-jobs) — la cola y el flujo de lanzamiento.
60
+ - [Seguimiento de costes](../analytics/tracking-cost) — desglose de coste por motor.
@@ -0,0 +1,37 @@
1
+ # Temas
2
+
3
+ Haz que Specrails luzca justo como a ti te gusta. La app trae cinco temas cuidados a mano que puedes alternar al instante: sin reiniciar, sin reconstruir nada, sin configuración de por medio.
4
+
5
+ ## Los cinco temas integrados
6
+
7
+ | Tema | Sensación |
8
+ | --- | --- |
9
+ | **Specrails** | El de serie. Equilibrado, sereno y fiel a la marca. |
10
+ | **Dracula** | El clásico oscuro en tonos púrpura. Cómodo para la vista de noche. |
11
+ | **Aurora Light** | Un tema claro, luminoso y aireado para trabajar de día. |
12
+ | **Obsidian Dark** | Modo oscuro profundo y de alto contraste. |
13
+ | **Matrix** | Verde sobre negro, para cuando quieres sentir que estás dentro del mainframe. |
14
+
15
+ ## Cómo cambiarlo
16
+
17
+ 1. Abre **Ajustes** (el modal de ajustes de toda la app).
18
+ 2. Ve a la sección **Apariencia**.
19
+ 3. Elige un tema. Se aplica de inmediato en toda la app.
20
+
21
+ Eso es todo. El cambio surte efecto en el momento en que haces clic: la interfaz se reviste en vivo.
22
+
23
+ ## Dónde se aplica
24
+
25
+ Tu elección de tema es **para toda la app**, no por proyecto. Cada proyecto, cada página y cada panel siguen el mismo tema. Y también llega a sitios que quizá no esperarías:
26
+
27
+ - **El panel de terminal** se recolorea en vivo, manteniendo intacto tu historial de desplazamiento y cualquier sesión de shell en marcha.
28
+ - **Las gráficas** de la página de Analytics se retiñen para combinar.
29
+ - **El resaltado de sintaxis del código** en el visor de Código también sigue el tema.
30
+
31
+ ## Recuerda tu elección
32
+
33
+ Tu selección se guarda junto con la app, así que se mantiene entre reinicios. Para evitar ese breve destello de colores equivocados cuando la app arranca, Specrails aplica el tema que tenías guardado antes incluso de que la interfaz termine de cargar, de modo que lo que ves es correcto desde el primerísimo fotograma.
34
+
35
+ ## Una nota para los curiosos
36
+
37
+ Los temas se construyen sobre un pequeño conjunto de roles de color semánticos (un color de "acento", un color de "superficie", etc.) en lugar de tonos fijos. Por eso añadir el siguiente tema es fácil y por eso cada tema se mantiene coherente por dentro: cada uno simplemente reasigna esos roles. No necesitas pensar en nada de esto para usarlo; es, sencillamente, el motivo de que personalizar el aspecto resulte tan natural.
@@ -0,0 +1,39 @@
1
+ # Idioma
2
+
3
+ Specrails habla tu idioma. La interfaz está completamente traducida a ocho idiomas y, por defecto, sigue el idioma que tengas configurado en tu ordenador, así que para la mayoría de la gente aparece en el idioma correcto desde el primer arranque.
4
+
5
+ ## Idiomas disponibles
6
+
7
+ - English
8
+ - Español (Spanish)
9
+ - Français (French)
10
+ - Deutsch (German)
11
+ - Português (Portuguese)
12
+ - Italiano (Italian)
13
+ - 中文 (Chinese)
14
+ - 日本語 (Japanese)
15
+
16
+ ## Arranca en el idioma de tu sistema operativo
17
+
18
+ La primera vez que abres Specrails, mira las preferencias de idioma de tu sistema operativo y las hace coincidir con el idioma compatible más parecido. Si tu Mac o tu PC está en español, lo verás en español. Y si está en una variante regional (como `es-ES` o `zh-Hans-CN`), Specrails la asigna automáticamente al idioma base correcto.
19
+
20
+ No tienes que hacer nada y, mientras no toques el ajuste de idioma, Specrails seguirá fielmente al de tu sistema. Cambia más adelante el idioma de tu ordenador y Specrails te acompañará.
21
+
22
+ ## Elegir un idioma tú mismo
23
+
24
+ ¿Quieres algo distinto al idioma por defecto de tu sistema? Selecciónalo de forma explícita:
25
+
26
+ 1. Abre **Ajustes**.
27
+ 2. Ve a la sección **Idioma**.
28
+ 3. Elige tu idioma.
29
+
30
+ El cambio es **instantáneo**: toda la interfaz se vuelve a renderizar en el nuevo idioma sin reiniciar. Una vez que haces una elección explícita, Specrails la recuerda y deja de seguir al sistema, de modo que tu elección se respeta cada vez que abres la app.
31
+
32
+ ## Qué se traduce
33
+
34
+ Todo lo que lees en la interfaz: botones, etiquetas, mensajes de estado, títulos de página, diálogos. Las fechas también se adaptan al idioma que elijas, así que se formatean tal y como ese idioma espera.
35
+
36
+ ## Bueno saberlo
37
+
38
+ - **El inglés es el idioma de origen.** Si una función recién estrenada llega antes de que su traducción esté lista, puede que veas alguna etiqueta en inglés por aquí o por allá; se traducirá en una actualización posterior.
39
+ - Tu elección de idioma es **para toda la app**, la misma en todos tus proyectos.
@@ -0,0 +1,46 @@
1
+ # Telemetría del pipeline y diagnósticos
2
+
3
+ Cuando un job del pipeline no sale como esperabas, la telemetría te ofrece un registro detallado, entre bambalinas, de lo que el CLI de IA hizo en realidad. Está **desactivada por defecto** y es totalmente opcional, por proyecto: actívala solo cuando la quieras.
4
+
5
+ ## Qué es
6
+
7
+ La telemetría captura señales de diagnóstico estructuradas (trazas, métricas y logs) que el CLI de IA emite mientras ejecuta un job del pipeline. Piénsalo como la caja negra de tus ejecuciones del pipeline: tiempos, uso de tokens y actividad paso a paso, capturados en local para que puedas inspeccionar un job después de los hechos.
8
+
9
+ Está construida sobre **OpenTelemetry**, un formato abierto y estándar, así que los datos no quedan encerrados en una caja propietaria.
10
+
11
+ ## Cómo activarla
12
+
13
+ La telemetría se configura **por proyecto**:
14
+
15
+ 1. Abre la página de **Ajustes** del proyecto (la ruta de ajustes específica del proyecto).
16
+ 2. Localiza el interruptor de **Telemetría del pipeline**.
17
+ 3. Actívalo.
18
+
19
+ A partir de ese momento, los jobs del pipeline de ese proyecto registran telemetría. Los demás proyectos no se ven afectados: cada proyecto decide por sí mismo.
20
+
21
+ ### Qué se cubre
22
+
23
+ La telemetría se aplica a los **jobs del pipeline** (las ejecuciones de rail en cola Architect → Developer → Reviewer → Ship). Las sesiones interactivas, como el chat y el asistente de configuración, se dejan fuera a propósito: la telemetría está pensada para las ejecuciones del pipeline, repetibles e inspeccionables, no para conversaciones puntuales.
24
+
25
+ ## Dónde viven los datos
26
+
27
+ Todo se queda en tu máquina, dentro de tu directorio personal (`~/.specrails/`), nunca en tu repo. Las grabaciones en bruto se guardan comprimidas junto a su job, y las más antiguas se condensan automáticamente en resúmenes compactos al cabo de una semana para mantenerlo todo ordenado. No tienes que gestionar nada de esto a mano.
28
+
29
+ ## Exportar un paquete de diagnóstico
30
+
31
+ Lo más útil que la telemetría desbloquea es la **exportación de diagnóstico**: un único ZIP que empaqueta todo lo relativo a un job para resolver problemas o compartirlo.
32
+
33
+ Cuando un job tiene telemetría registrada, aparece un **botón de exportación** en su tarjeta de job. Pulsa para descargar un ZIP que contiene:
34
+
35
+ - **`job-metadata.json`** — la identidad y los parámetros del job
36
+ - **`telemetry.ndjson`** — las señales registradas en bruto
37
+ - **`logs.txt`** — la salida de log capturada
38
+ - **`summary.md`** — un resumen legible de la ejecución
39
+
40
+ Si el proyecto usa plugins, el paquete también incluye una instantánea de qué plugins estuvieron activos en ese job.
41
+
42
+ Este es el paquete que conviene tener a mano cuando quieres entender una ejecución espinosa, dejar constancia o pasarle los detalles a alguien que te esté ayudando a depurar.
43
+
44
+ ## Cómo desactivarla
45
+
46
+ Vuelve a apagar el interruptor cuando quieras. Los nuevos jobs dejan de registrar de inmediato. Lo que ya se capturó se mantiene en disco hasta que se compacta o eliminas el proyecto: nada se envía a ninguna parte ni se pierde a tus espaldas.
@@ -0,0 +1,48 @@
1
+ # Dónde viven tus datos
2
+
3
+ La versión corta: **Specrails mantiene tus repositorios impecables.** Cuando apuntas la app a uno de tus proyectos, no se instala dentro, no esparce archivos de configuración por todas partes ni reescribe nada que no le hayas pedido. Tu código sigue siendo tuyo, y limpio.
4
+
5
+ ## Tu repo se mantiene limpio
6
+
7
+ Los archivos propios de Specrails —sus bases de datos, el estado por proyecto, las definiciones de agentes, los ajustes, la telemetría, los resúmenes y todo lo demás que necesita para funcionar— viven en un único hogar bien ordenado, dentro de tu directorio personal:
8
+
9
+ ```
10
+ ~/.specrails/
11
+ ```
12
+
13
+ Esa carpeta es el espacio de trabajo privado de la app. Es donde residen el registro de proyectos, las bases de datos por proyecto, las herramientas empaquetadas y todas las piezas operativas. Tus repositorios de código reales nunca se usan como vertedero para nada de esto.
14
+
15
+ Esto significa que:
16
+
17
+ - El `.gitignore` de tu repo **no** lo reescribe la app.
18
+ - Tu repo no se llena de configuración de herramientas ni de directorios de estado ocultos.
19
+ - Eliminar un proyecto de Specrails no deja ningún desorden detrás en tu código.
20
+
21
+ Si has usado antes herramientas que añadían carpetas y archivos sin avisar por todo tu proyecto, esto es un cambio deliberado de rumbo. Specrails está hecho para que apuntarlo a un repo sea un **no-evento** para el historial de git de ese repo.
22
+
23
+ ## Lo único que *sí* se commitea, por diseño
24
+
25
+ Hay exactamente una excepción intencionada, y es la razón de ser de la herramienta: **tus specs de OpenSpec.**
26
+
27
+ Las specs viven en tu repositorio, dentro de:
28
+
29
+ ```
30
+ openspec/
31
+ ```
32
+
33
+ Esto es a propósito. Tus specs son un **entregable**: un registro versionado y revisable de qué decidiste construir y por qué. Su sitio está junto a tu código, bajo seguimiento en git, visibles en los pull requests, compartidas con tu equipo. Ese es el valor: las specs no son estado desechable de borrador, son parte de la historia de tu proyecto.
34
+
35
+ Así que la regla es simple y honesta:
36
+
37
+ - **`openspec/`** → vive en tu repo, commiteado, por diseño.
38
+ - **Todo lo demás que Specrails necesita** → vive en `~/.specrails/`, fuera de tu camino.
39
+
40
+ ## Por qué funciona así
41
+
42
+ Specrails ejecuta las herramientas de IA desde su propio espacio de trabajo privado (en `~/.specrails/`) y solo se asoma a tu repositorio real para lo que de verdad necesita tocarlo: leer tu código y escribir las specs que pediste. Las herramientas, las definiciones del framework y la contabilidad interna se quedan todas en la carpeta hogar de la app.
43
+
44
+ Lo que ganas tú: puedes añadir un proyecto, ejecutar pipelines, explorar specs y probar cosas con la confianza de que el árbol de trabajo y el historial de git de tu repositorio solo cambian de las maneras que esperarías: tus specs commiteadas y el código que escriben tus pipelines. Nada más se cuela.
45
+
46
+ ## Eliminar un proyecto
47
+
48
+ Cuando eliminas un proyecto de Specrails, la app limpia su propio estado por proyecto en `~/.specrails/`. Las specs que ya estaban commiteadas en tu repo se quedan donde les corresponde —en tu repo— porque son tuyas.
@@ -0,0 +1,52 @@
1
+ # Specs y el backlog
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.
6
+
7
+ ## El tablero
8
+
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.
10
+
11
+ 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
+
13
+ - **Vista post-it** (la predeterminada): tarjetas con resúmenes breves.
14
+ - **Vista de lista**: filas compactas de una sola línea.
15
+
16
+ También puedes filtrar por **estado** (Todos / Por hacer / Hechos) y por **etiqueta**, y ordenar por **Por defecto**, **Ticket #** o **Prioridad** (cada uno con un interruptor ascendente/descendente).
17
+
18
+ ## Estados
19
+
20
+ Una spec recorre un pequeño conjunto de estados. El tablero le da a cada uno una señal visual coherente para que puedas leer el estado de tu backlog de un vistazo:
21
+
22
+ | Estado | Qué significa |
23
+ |--------|---------------|
24
+ | **Borrador** | Una idea en curso guardada desde una conversación de Explore. Todavía no está lista para implementar; puedes volver y seguir dándole forma. Muestra una píldora `Draft`. |
25
+ | **Por hacer** | Lista para retomarse. Aquí es donde aterriza una spec terminada cuando la creas. |
26
+ | **En curso** | El pipeline está trabajando en ella ahora mismo (un punto azul pulsante). |
27
+ | **Hecho** | Completada por el pipeline (una marca de verificación verde). |
28
+ | **Cancelado** | Abandonada (una X roja). |
29
+
30
+ Los borradores viven en el mismo grupo activo que las specs Por hacer (no hay una columna separada para ellos), pero llevan un borde con un tinte sutil y una píldora `Draft` para que se distingan fácilmente. Consulta [Borradores y la Contract Layer](drafts-and-contract-layer.md) para conocer todos los detalles sobre los borradores.
31
+
32
+ ## Prioridades
33
+
34
+ Toda spec que no sea un borrador tiene una prioridad: **Crítica**, **Alta**, **Media** o **Baja**. La prioridad es puramente una herramienta de organización: te ayuda a decidir qué implementar a continuación y te permite ordenar el tablero. La defines al crear una spec y puedes cambiarla en cualquier momento haciendo clic derecho en la tarjeta de la spec y eligiendo **Set priority**.
35
+
36
+ Los borradores son la única excepción: un borrador puede *no* tener ninguna prioridad, porque todavía es una idea en curso. La prioridad queda fijada cuando confirmas el borrador como una spec real.
37
+
38
+ ## Crear una spec
39
+
40
+ 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:
41
+
42
+ - **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).
43
+ - **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).
44
+ - **Modo Raw**: lo que escribas se guarda tal cual como una spec, sin intervención de la IA. Úsalo cuando ya tengas el texto de la spec escrito.
45
+
46
+ A cuál recurrir depende de lo clara que tengas ya la idea. ¿Sabes exactamente lo que quieres? Quick. ¿Todavía le estás dando vueltas? Explore. ¿Ya tienes el texto? Raw.
47
+
48
+ ## Adónde ir después
49
+
50
+ - [Añadir spec — Modo Quick](add-spec-quick-mode.md): la forma más rápida de convertir una idea en una spec.
51
+ - [Añadir spec — Modo Explore](add-spec-explore-mode.md): da forma a una spec conversando.
52
+ - [Borradores y la Contract Layer](drafts-and-contract-layer.md): guarda el trabajo en curso y enriquece las specs para el pipeline.