trellis-herbivore 0.1.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 (629) hide show
  1. package/bin/trellis.js +3 -0
  2. package/dist/cli/index.d.ts +3 -0
  3. package/dist/cli/index.d.ts.map +1 -0
  4. package/dist/cli/index.js +174 -0
  5. package/dist/cli/index.js.map +1 -0
  6. package/dist/commands/channel/adapters/claude.d.ts +38 -0
  7. package/dist/commands/channel/adapters/claude.d.ts.map +1 -0
  8. package/dist/commands/channel/adapters/claude.js +209 -0
  9. package/dist/commands/channel/adapters/claude.js.map +1 -0
  10. package/dist/commands/channel/adapters/codex.d.ts +77 -0
  11. package/dist/commands/channel/adapters/codex.d.ts.map +1 -0
  12. package/dist/commands/channel/adapters/codex.js +495 -0
  13. package/dist/commands/channel/adapters/codex.js.map +1 -0
  14. package/dist/commands/channel/adapters/index.d.ts +79 -0
  15. package/dist/commands/channel/adapters/index.d.ts.map +1 -0
  16. package/dist/commands/channel/adapters/index.js +109 -0
  17. package/dist/commands/channel/adapters/index.js.map +1 -0
  18. package/dist/commands/channel/adapters/types.d.ts +33 -0
  19. package/dist/commands/channel/adapters/types.d.ts.map +1 -0
  20. package/dist/commands/channel/adapters/types.js +2 -0
  21. package/dist/commands/channel/adapters/types.js.map +1 -0
  22. package/dist/commands/channel/agent-loader.d.ts +32 -0
  23. package/dist/commands/channel/agent-loader.d.ts.map +1 -0
  24. package/dist/commands/channel/agent-loader.js +154 -0
  25. package/dist/commands/channel/agent-loader.js.map +1 -0
  26. package/dist/commands/channel/context-loader.d.ts +26 -0
  27. package/dist/commands/channel/context-loader.d.ts.map +1 -0
  28. package/dist/commands/channel/context-loader.js +290 -0
  29. package/dist/commands/channel/context-loader.js.map +1 -0
  30. package/dist/commands/channel/context.d.ts +16 -0
  31. package/dist/commands/channel/context.d.ts.map +1 -0
  32. package/dist/commands/channel/context.js +83 -0
  33. package/dist/commands/channel/context.js.map +1 -0
  34. package/dist/commands/channel/create.d.ts +27 -0
  35. package/dist/commands/channel/create.d.ts.map +1 -0
  36. package/dist/commands/channel/create.js +39 -0
  37. package/dist/commands/channel/create.js.map +1 -0
  38. package/dist/commands/channel/dev-parse-trace.d.ts +14 -0
  39. package/dist/commands/channel/dev-parse-trace.d.ts.map +1 -0
  40. package/dist/commands/channel/dev-parse-trace.js +70 -0
  41. package/dist/commands/channel/dev-parse-trace.js.map +1 -0
  42. package/dist/commands/channel/index.d.ts +3 -0
  43. package/dist/commands/channel/index.d.ts.map +1 -0
  44. package/dist/commands/channel/index.js +496 -0
  45. package/dist/commands/channel/index.js.map +1 -0
  46. package/dist/commands/channel/kill.d.ts +7 -0
  47. package/dist/commands/channel/kill.d.ts.map +1 -0
  48. package/dist/commands/channel/kill.js +121 -0
  49. package/dist/commands/channel/kill.js.map +1 -0
  50. package/dist/commands/channel/list.d.ts +17 -0
  51. package/dist/commands/channel/list.d.ts.map +1 -0
  52. package/dist/commands/channel/list.js +233 -0
  53. package/dist/commands/channel/list.js.map +1 -0
  54. package/dist/commands/channel/messages.d.ts +16 -0
  55. package/dist/commands/channel/messages.d.ts.map +1 -0
  56. package/dist/commands/channel/messages.js +237 -0
  57. package/dist/commands/channel/messages.js.map +1 -0
  58. package/dist/commands/channel/rm.d.ts +27 -0
  59. package/dist/commands/channel/rm.d.ts.map +1 -0
  60. package/dist/commands/channel/rm.js +216 -0
  61. package/dist/commands/channel/rm.js.map +1 -0
  62. package/dist/commands/channel/run.d.ts +31 -0
  63. package/dist/commands/channel/run.d.ts.map +1 -0
  64. package/dist/commands/channel/run.js +137 -0
  65. package/dist/commands/channel/run.js.map +1 -0
  66. package/dist/commands/channel/send.d.ts +12 -0
  67. package/dist/commands/channel/send.d.ts.map +1 -0
  68. package/dist/commands/channel/send.js +24 -0
  69. package/dist/commands/channel/send.js.map +1 -0
  70. package/dist/commands/channel/spawn.d.ts +25 -0
  71. package/dist/commands/channel/spawn.d.ts.map +1 -0
  72. package/dist/commands/channel/spawn.js +192 -0
  73. package/dist/commands/channel/spawn.js.map +1 -0
  74. package/dist/commands/channel/store/events.d.ts +39 -0
  75. package/dist/commands/channel/store/events.d.ts.map +1 -0
  76. package/dist/commands/channel/store/events.js +87 -0
  77. package/dist/commands/channel/store/events.js.map +1 -0
  78. package/dist/commands/channel/store/filter.d.ts +3 -0
  79. package/dist/commands/channel/store/filter.d.ts.map +1 -0
  80. package/dist/commands/channel/store/filter.js +2 -0
  81. package/dist/commands/channel/store/filter.js.map +1 -0
  82. package/dist/commands/channel/store/lock.d.ts +23 -0
  83. package/dist/commands/channel/store/lock.d.ts.map +1 -0
  84. package/dist/commands/channel/store/lock.js +99 -0
  85. package/dist/commands/channel/store/lock.js.map +1 -0
  86. package/dist/commands/channel/store/paths.d.ts +63 -0
  87. package/dist/commands/channel/store/paths.d.ts.map +1 -0
  88. package/dist/commands/channel/store/paths.js +246 -0
  89. package/dist/commands/channel/store/paths.js.map +1 -0
  90. package/dist/commands/channel/store/schema.d.ts +27 -0
  91. package/dist/commands/channel/store/schema.d.ts.map +1 -0
  92. package/dist/commands/channel/store/schema.js +34 -0
  93. package/dist/commands/channel/store/schema.js.map +1 -0
  94. package/dist/commands/channel/store/thread-state.d.ts +5 -0
  95. package/dist/commands/channel/store/thread-state.d.ts.map +1 -0
  96. package/dist/commands/channel/store/thread-state.js +16 -0
  97. package/dist/commands/channel/store/thread-state.js.map +1 -0
  98. package/dist/commands/channel/store/watch.d.ts +19 -0
  99. package/dist/commands/channel/store/watch.d.ts.map +1 -0
  100. package/dist/commands/channel/store/watch.js +130 -0
  101. package/dist/commands/channel/store/watch.js.map +1 -0
  102. package/dist/commands/channel/supervisor/inbox.d.ts +25 -0
  103. package/dist/commands/channel/supervisor/inbox.d.ts.map +1 -0
  104. package/dist/commands/channel/supervisor/inbox.js +99 -0
  105. package/dist/commands/channel/supervisor/inbox.js.map +1 -0
  106. package/dist/commands/channel/supervisor/shutdown.d.ts +66 -0
  107. package/dist/commands/channel/supervisor/shutdown.d.ts.map +1 -0
  108. package/dist/commands/channel/supervisor/shutdown.js +143 -0
  109. package/dist/commands/channel/supervisor/shutdown.js.map +1 -0
  110. package/dist/commands/channel/supervisor/stdout.d.ts +49 -0
  111. package/dist/commands/channel/supervisor/stdout.d.ts.map +1 -0
  112. package/dist/commands/channel/supervisor/stdout.js +107 -0
  113. package/dist/commands/channel/supervisor/stdout.js.map +1 -0
  114. package/dist/commands/channel/supervisor.d.ts +47 -0
  115. package/dist/commands/channel/supervisor.d.ts.map +1 -0
  116. package/dist/commands/channel/supervisor.js +283 -0
  117. package/dist/commands/channel/supervisor.js.map +1 -0
  118. package/dist/commands/channel/text-body.d.ts +13 -0
  119. package/dist/commands/channel/text-body.d.ts.map +1 -0
  120. package/dist/commands/channel/text-body.js +47 -0
  121. package/dist/commands/channel/text-body.js.map +1 -0
  122. package/dist/commands/channel/threads.d.ts +39 -0
  123. package/dist/commands/channel/threads.d.ts.map +1 -0
  124. package/dist/commands/channel/threads.js +106 -0
  125. package/dist/commands/channel/threads.js.map +1 -0
  126. package/dist/commands/channel/title.d.ts +12 -0
  127. package/dist/commands/channel/title.d.ts.map +1 -0
  128. package/dist/commands/channel/title.js +24 -0
  129. package/dist/commands/channel/title.js.map +1 -0
  130. package/dist/commands/channel/wait.d.ts +18 -0
  131. package/dist/commands/channel/wait.d.ts.map +1 -0
  132. package/dist/commands/channel/wait.js +76 -0
  133. package/dist/commands/channel/wait.js.map +1 -0
  134. package/dist/commands/init.d.ts +57 -0
  135. package/dist/commands/init.d.ts.map +1 -0
  136. package/dist/commands/init.js +1466 -0
  137. package/dist/commands/init.js.map +1 -0
  138. package/dist/commands/mem.d.ts +234 -0
  139. package/dist/commands/mem.d.ts.map +1 -0
  140. package/dist/commands/mem.js +1869 -0
  141. package/dist/commands/mem.js.map +1 -0
  142. package/dist/commands/uninstall.d.ts +27 -0
  143. package/dist/commands/uninstall.d.ts.map +1 -0
  144. package/dist/commands/uninstall.js +339 -0
  145. package/dist/commands/uninstall.js.map +1 -0
  146. package/dist/commands/update.d.ts +72 -0
  147. package/dist/commands/update.d.ts.map +1 -0
  148. package/dist/commands/update.js +1926 -0
  149. package/dist/commands/update.js.map +1 -0
  150. package/dist/commands/upgrade.d.ts +28 -0
  151. package/dist/commands/upgrade.d.ts.map +1 -0
  152. package/dist/commands/upgrade.js +84 -0
  153. package/dist/commands/upgrade.js.map +1 -0
  154. package/dist/configurators/antigravity.d.ts +7 -0
  155. package/dist/configurators/antigravity.d.ts.map +1 -0
  156. package/dist/configurators/antigravity.js +19 -0
  157. package/dist/configurators/antigravity.js.map +1 -0
  158. package/dist/configurators/claude.d.ts +9 -0
  159. package/dist/configurators/claude.d.ts.map +1 -0
  160. package/dist/configurators/claude.js +72 -0
  161. package/dist/configurators/claude.js.map +1 -0
  162. package/dist/configurators/codebuddy.d.ts +10 -0
  163. package/dist/configurators/codebuddy.d.ts.map +1 -0
  164. package/dist/configurators/codebuddy.js +30 -0
  165. package/dist/configurators/codebuddy.js.map +1 -0
  166. package/dist/configurators/codex.d.ts +8 -0
  167. package/dist/configurators/codex.d.ts.map +1 -0
  168. package/dist/configurators/codex.js +87 -0
  169. package/dist/configurators/codex.js.map +1 -0
  170. package/dist/configurators/copilot.d.ts +10 -0
  171. package/dist/configurators/copilot.d.ts.map +1 -0
  172. package/dist/configurators/copilot.js +51 -0
  173. package/dist/configurators/copilot.js.map +1 -0
  174. package/dist/configurators/cursor.d.ts +10 -0
  175. package/dist/configurators/cursor.d.ts.map +1 -0
  176. package/dist/configurators/cursor.js +29 -0
  177. package/dist/configurators/cursor.js.map +1 -0
  178. package/dist/configurators/droid.d.ts +10 -0
  179. package/dist/configurators/droid.d.ts.map +1 -0
  180. package/dist/configurators/droid.js +30 -0
  181. package/dist/configurators/droid.js.map +1 -0
  182. package/dist/configurators/gemini.d.ts +16 -0
  183. package/dist/configurators/gemini.d.ts.map +1 -0
  184. package/dist/configurators/gemini.js +38 -0
  185. package/dist/configurators/gemini.js.map +1 -0
  186. package/dist/configurators/index.d.ts +65 -0
  187. package/dist/configurators/index.d.ts.map +1 -0
  188. package/dist/configurators/index.js +367 -0
  189. package/dist/configurators/index.js.map +1 -0
  190. package/dist/configurators/kilo.d.ts +7 -0
  191. package/dist/configurators/kilo.d.ts.map +1 -0
  192. package/dist/configurators/kilo.js +19 -0
  193. package/dist/configurators/kilo.js.map +1 -0
  194. package/dist/configurators/kiro.d.ts +8 -0
  195. package/dist/configurators/kiro.d.ts.map +1 -0
  196. package/dist/configurators/kiro.js +24 -0
  197. package/dist/configurators/kiro.js.map +1 -0
  198. package/dist/configurators/opencode.d.ts +14 -0
  199. package/dist/configurators/opencode.d.ts.map +1 -0
  200. package/dist/configurators/opencode.js +96 -0
  201. package/dist/configurators/opencode.js.map +1 -0
  202. package/dist/configurators/pi.d.ts +3 -0
  203. package/dist/configurators/pi.d.ts.map +1 -0
  204. package/dist/configurators/pi.js +45 -0
  205. package/dist/configurators/pi.js.map +1 -0
  206. package/dist/configurators/qoder.d.ts +11 -0
  207. package/dist/configurators/qoder.d.ts.map +1 -0
  208. package/dist/configurators/qoder.js +31 -0
  209. package/dist/configurators/qoder.js.map +1 -0
  210. package/dist/configurators/shared.d.ts +178 -0
  211. package/dist/configurators/shared.d.ts.map +1 -0
  212. package/dist/configurators/shared.js +538 -0
  213. package/dist/configurators/shared.js.map +1 -0
  214. package/dist/configurators/windsurf.d.ts +7 -0
  215. package/dist/configurators/windsurf.d.ts.map +1 -0
  216. package/dist/configurators/windsurf.js +19 -0
  217. package/dist/configurators/windsurf.js.map +1 -0
  218. package/dist/configurators/workflow.d.ts +29 -0
  219. package/dist/configurators/workflow.d.ts.map +1 -0
  220. package/dist/configurators/workflow.js +163 -0
  221. package/dist/configurators/workflow.js.map +1 -0
  222. package/dist/constants/paths.d.ts +70 -0
  223. package/dist/constants/paths.d.ts.map +1 -0
  224. package/dist/constants/paths.js +79 -0
  225. package/dist/constants/paths.js.map +1 -0
  226. package/dist/constants/version.d.ts +9 -0
  227. package/dist/constants/version.d.ts.map +1 -0
  228. package/dist/constants/version.js +15 -0
  229. package/dist/constants/version.js.map +1 -0
  230. package/dist/index.d.ts +9 -0
  231. package/dist/index.d.ts.map +1 -0
  232. package/dist/index.js +9 -0
  233. package/dist/index.js.map +1 -0
  234. package/dist/migrations/index.d.ts +62 -0
  235. package/dist/migrations/index.d.ts.map +1 -0
  236. package/dist/migrations/index.js +187 -0
  237. package/dist/migrations/index.js.map +1 -0
  238. package/dist/migrations/manifests/0.1.9.json +30 -0
  239. package/dist/migrations/manifests/0.2.0.json +49 -0
  240. package/dist/migrations/manifests/0.2.12.json +9 -0
  241. package/dist/migrations/manifests/0.2.13.json +9 -0
  242. package/dist/migrations/manifests/0.2.14.json +175 -0
  243. package/dist/migrations/manifests/0.2.15.json +33 -0
  244. package/dist/migrations/manifests/0.3.0-beta.0.json +297 -0
  245. package/dist/migrations/manifests/0.3.0-beta.1.json +9 -0
  246. package/dist/migrations/manifests/0.3.0-beta.10.json +9 -0
  247. package/dist/migrations/manifests/0.3.0-beta.11.json +9 -0
  248. package/dist/migrations/manifests/0.3.0-beta.12.json +9 -0
  249. package/dist/migrations/manifests/0.3.0-beta.13.json +9 -0
  250. package/dist/migrations/manifests/0.3.0-beta.14.json +9 -0
  251. package/dist/migrations/manifests/0.3.0-beta.15.json +9 -0
  252. package/dist/migrations/manifests/0.3.0-beta.16.json +9 -0
  253. package/dist/migrations/manifests/0.3.0-beta.2.json +9 -0
  254. package/dist/migrations/manifests/0.3.0-beta.3.json +9 -0
  255. package/dist/migrations/manifests/0.3.0-beta.4.json +9 -0
  256. package/dist/migrations/manifests/0.3.0-beta.5.json +9 -0
  257. package/dist/migrations/manifests/0.3.0-beta.6.json +9 -0
  258. package/dist/migrations/manifests/0.3.0-beta.7.json +11 -0
  259. package/dist/migrations/manifests/0.3.0-beta.8.json +9 -0
  260. package/dist/migrations/manifests/0.3.0-beta.9.json +9 -0
  261. package/dist/migrations/manifests/0.3.0-rc.0.json +9 -0
  262. package/dist/migrations/manifests/0.3.0-rc.1.json +9 -0
  263. package/dist/migrations/manifests/0.3.0-rc.2.json +9 -0
  264. package/dist/migrations/manifests/0.3.0-rc.3.json +9 -0
  265. package/dist/migrations/manifests/0.3.0-rc.4.json +9 -0
  266. package/dist/migrations/manifests/0.3.0-rc.5.json +9 -0
  267. package/dist/migrations/manifests/0.3.0-rc.6.json +9 -0
  268. package/dist/migrations/manifests/0.3.0.json +11 -0
  269. package/dist/migrations/manifests/0.3.1.json +9 -0
  270. package/dist/migrations/manifests/0.3.10.json +9 -0
  271. package/dist/migrations/manifests/0.3.2.json +9 -0
  272. package/dist/migrations/manifests/0.3.3.json +9 -0
  273. package/dist/migrations/manifests/0.3.4.json +21 -0
  274. package/dist/migrations/manifests/0.3.5.json +9 -0
  275. package/dist/migrations/manifests/0.3.6.json +9 -0
  276. package/dist/migrations/manifests/0.3.7.json +9 -0
  277. package/dist/migrations/manifests/0.3.8.json +9 -0
  278. package/dist/migrations/manifests/0.3.9.json +9 -0
  279. package/dist/migrations/manifests/0.4.0-beta.1.json +228 -0
  280. package/dist/migrations/manifests/0.4.0-beta.10.json +9 -0
  281. package/dist/migrations/manifests/0.4.0-beta.2.json +9 -0
  282. package/dist/migrations/manifests/0.4.0-beta.3.json +9 -0
  283. package/dist/migrations/manifests/0.4.0-beta.4.json +9 -0
  284. package/dist/migrations/manifests/0.4.0-beta.5.json +9 -0
  285. package/dist/migrations/manifests/0.4.0-beta.6.json +9 -0
  286. package/dist/migrations/manifests/0.4.0-beta.7.json +9 -0
  287. package/dist/migrations/manifests/0.4.0-beta.8.json +34 -0
  288. package/dist/migrations/manifests/0.4.0-beta.9.json +9 -0
  289. package/dist/migrations/manifests/0.4.0-rc.0.json +9 -0
  290. package/dist/migrations/manifests/0.4.0-rc.1.json +9 -0
  291. package/dist/migrations/manifests/0.4.0.json +9 -0
  292. package/dist/migrations/manifests/0.5.0-beta.0.json +1646 -0
  293. package/dist/migrations/manifests/0.5.0-beta.1.json +9 -0
  294. package/dist/migrations/manifests/0.5.0-beta.10.json +9 -0
  295. package/dist/migrations/manifests/0.5.0-beta.11.json +9 -0
  296. package/dist/migrations/manifests/0.5.0-beta.12.json +9 -0
  297. package/dist/migrations/manifests/0.5.0-beta.13.json +9 -0
  298. package/dist/migrations/manifests/0.5.0-beta.14.json +9 -0
  299. package/dist/migrations/manifests/0.5.0-beta.15.json +116 -0
  300. package/dist/migrations/manifests/0.5.0-beta.16.json +9 -0
  301. package/dist/migrations/manifests/0.5.0-beta.17.json +9 -0
  302. package/dist/migrations/manifests/0.5.0-beta.18.json +9 -0
  303. package/dist/migrations/manifests/0.5.0-beta.19.json +9 -0
  304. package/dist/migrations/manifests/0.5.0-beta.2.json +9 -0
  305. package/dist/migrations/manifests/0.5.0-beta.3.json +9 -0
  306. package/dist/migrations/manifests/0.5.0-beta.4.json +9 -0
  307. package/dist/migrations/manifests/0.5.0-beta.5.json +222 -0
  308. package/dist/migrations/manifests/0.5.0-beta.6.json +9 -0
  309. package/dist/migrations/manifests/0.5.0-beta.7.json +9 -0
  310. package/dist/migrations/manifests/0.5.0-beta.8.json +9 -0
  311. package/dist/migrations/manifests/0.5.0-beta.9.json +48 -0
  312. package/dist/migrations/manifests/0.5.0-rc.0.json +9 -0
  313. package/dist/migrations/manifests/0.5.0-rc.1.json +9 -0
  314. package/dist/migrations/manifests/0.5.0-rc.2.json +9 -0
  315. package/dist/migrations/manifests/0.5.0-rc.3.json +9 -0
  316. package/dist/migrations/manifests/0.5.0-rc.4.json +9 -0
  317. package/dist/migrations/manifests/0.5.0-rc.5.json +9 -0
  318. package/dist/migrations/manifests/0.5.0-rc.6.json +9 -0
  319. package/dist/migrations/manifests/0.5.0-rc.7.json +9 -0
  320. package/dist/migrations/manifests/0.5.0.json +9 -0
  321. package/dist/migrations/manifests/0.5.1.json +9 -0
  322. package/dist/migrations/manifests/0.5.10.json +9 -0
  323. package/dist/migrations/manifests/0.5.11.json +16 -0
  324. package/dist/migrations/manifests/0.5.12.json +9 -0
  325. package/dist/migrations/manifests/0.5.13.json +9 -0
  326. package/dist/migrations/manifests/0.5.14.json +9 -0
  327. package/dist/migrations/manifests/0.5.15.json +9 -0
  328. package/dist/migrations/manifests/0.5.2.json +9 -0
  329. package/dist/migrations/manifests/0.5.3.json +9 -0
  330. package/dist/migrations/manifests/0.5.4.json +9 -0
  331. package/dist/migrations/manifests/0.5.5.json +9 -0
  332. package/dist/migrations/manifests/0.5.6.json +9 -0
  333. package/dist/migrations/manifests/0.5.7.json +16 -0
  334. package/dist/migrations/manifests/0.5.8.json +9 -0
  335. package/dist/migrations/manifests/0.5.9.json +9 -0
  336. package/dist/migrations/manifests/0.6.0-beta.0.json +16 -0
  337. package/dist/migrations/manifests/0.6.0-beta.1.json +9 -0
  338. package/dist/migrations/manifests/0.6.0-beta.10.json +9 -0
  339. package/dist/migrations/manifests/0.6.0-beta.11.json +9 -0
  340. package/dist/migrations/manifests/0.6.0-beta.12.json +9 -0
  341. package/dist/migrations/manifests/0.6.0-beta.13.json +9 -0
  342. package/dist/migrations/manifests/0.6.0-beta.14.json +9 -0
  343. package/dist/migrations/manifests/0.6.0-beta.2.json +9 -0
  344. package/dist/migrations/manifests/0.6.0-beta.3.json +9 -0
  345. package/dist/migrations/manifests/0.6.0-beta.4.json +9 -0
  346. package/dist/migrations/manifests/0.6.0-beta.5.json +9 -0
  347. package/dist/migrations/manifests/0.6.0-beta.6.json +16 -0
  348. package/dist/migrations/manifests/0.6.0-beta.7.json +9 -0
  349. package/dist/migrations/manifests/0.6.0-beta.8.json +9 -0
  350. package/dist/migrations/manifests/0.6.0-beta.9.json +9 -0
  351. package/dist/templates/claude/agents/trellis-check.md +114 -0
  352. package/dist/templates/claude/agents/trellis-implement.md +113 -0
  353. package/dist/templates/claude/agents/trellis-research.md +137 -0
  354. package/dist/templates/claude/index.d.ts +22 -0
  355. package/dist/templates/claude/index.d.ts.map +1 -0
  356. package/dist/templates/claude/index.js +46 -0
  357. package/dist/templates/claude/index.js.map +1 -0
  358. package/dist/templates/claude/settings.json +73 -0
  359. package/dist/templates/codebuddy/agents/trellis-check.md +109 -0
  360. package/dist/templates/codebuddy/agents/trellis-implement.md +110 -0
  361. package/dist/templates/codebuddy/agents/trellis-research.md +137 -0
  362. package/dist/templates/codebuddy/index.d.ts +15 -0
  363. package/dist/templates/codebuddy/index.d.ts.map +1 -0
  364. package/dist/templates/codebuddy/index.js +15 -0
  365. package/dist/templates/codebuddy/index.js.map +1 -0
  366. package/dist/templates/codebuddy/settings.json +59 -0
  367. package/dist/templates/codex/agents/trellis-check.toml +84 -0
  368. package/dist/templates/codex/agents/trellis-implement.toml +65 -0
  369. package/dist/templates/codex/agents/trellis-research.toml +73 -0
  370. package/dist/templates/codex/config.toml +35 -0
  371. package/dist/templates/codex/hooks/session-start.py +545 -0
  372. package/dist/templates/codex/hooks.json +15 -0
  373. package/dist/templates/codex/index.d.ts +39 -0
  374. package/dist/templates/codex/index.d.ts.map +1 -0
  375. package/dist/templates/codex/index.js +85 -0
  376. package/dist/templates/codex/index.js.map +1 -0
  377. package/dist/templates/codex/skills/before-dev/SKILL.md +40 -0
  378. package/dist/templates/codex/skills/brainstorm/SKILL.md +112 -0
  379. package/dist/templates/codex/skills/break-loop/SKILL.md +130 -0
  380. package/dist/templates/codex/skills/check/SKILL.md +98 -0
  381. package/dist/templates/codex/skills/check-cross-layer/SKILL.md +158 -0
  382. package/dist/templates/codex/skills/create-command/SKILL.md +101 -0
  383. package/dist/templates/codex/skills/finish-work/SKILL.md +90 -0
  384. package/dist/templates/codex/skills/improve-ut/SKILL.md +69 -0
  385. package/dist/templates/codex/skills/integrate-skill/SKILL.md +221 -0
  386. package/dist/templates/codex/skills/onboard/SKILL.md +363 -0
  387. package/dist/templates/codex/skills/record-session/SKILL.md +67 -0
  388. package/dist/templates/codex/skills/start/SKILL.md +64 -0
  389. package/dist/templates/codex/skills/update-spec/SKILL.md +335 -0
  390. package/dist/templates/common/bundled-skills/trellis-meta/SKILL.md +73 -0
  391. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/add-project-local-conventions.md +83 -0
  392. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-agents.md +54 -0
  393. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-context-loading.md +84 -0
  394. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-hooks.md +57 -0
  395. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-skills-or-commands.md +78 -0
  396. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-spec-structure.md +83 -0
  397. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-task-lifecycle.md +90 -0
  398. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-workflow.md +65 -0
  399. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/overview.md +55 -0
  400. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/context-injection.md +68 -0
  401. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/generated-files.md +80 -0
  402. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/overview.md +51 -0
  403. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/spec-system.md +102 -0
  404. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/task-system.md +103 -0
  405. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/workflow.md +75 -0
  406. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/workspace-memory.md +71 -0
  407. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/agents.md +80 -0
  408. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/hooks-and-settings.md +69 -0
  409. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/overview.md +59 -0
  410. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/platform-map.md +74 -0
  411. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/skills-and-commands.md +83 -0
  412. package/dist/templates/common/commands/continue.md +56 -0
  413. package/dist/templates/common/commands/finish-work.md +66 -0
  414. package/dist/templates/common/commands/start.md +59 -0
  415. package/dist/templates/common/index.d.ts +48 -0
  416. package/dist/templates/common/index.d.ts.map +1 -0
  417. package/dist/templates/common/index.js +104 -0
  418. package/dist/templates/common/index.js.map +1 -0
  419. package/dist/templates/common/skills/before-dev.md +35 -0
  420. package/dist/templates/common/skills/brainstorm.md +112 -0
  421. package/dist/templates/common/skills/break-loop.md +125 -0
  422. package/dist/templates/common/skills/check.md +93 -0
  423. package/dist/templates/common/skills/update-spec.md +351 -0
  424. package/dist/templates/copilot/hooks/session-start.py +547 -0
  425. package/dist/templates/copilot/hooks.json +19 -0
  426. package/dist/templates/copilot/index.d.ts +23 -0
  427. package/dist/templates/copilot/index.d.ts.map +1 -0
  428. package/dist/templates/copilot/index.js +54 -0
  429. package/dist/templates/copilot/index.js.map +1 -0
  430. package/dist/templates/copilot/prompts/before-dev.prompt.md +39 -0
  431. package/dist/templates/copilot/prompts/brainstorm.prompt.md +111 -0
  432. package/dist/templates/copilot/prompts/break-loop.prompt.md +129 -0
  433. package/dist/templates/copilot/prompts/check-cross-layer.prompt.md +157 -0
  434. package/dist/templates/copilot/prompts/check.prompt.md +97 -0
  435. package/dist/templates/copilot/prompts/create-command.prompt.md +116 -0
  436. package/dist/templates/copilot/prompts/finish-work.prompt.md +99 -0
  437. package/dist/templates/copilot/prompts/integrate-skill.prompt.md +223 -0
  438. package/dist/templates/copilot/prompts/onboard.prompt.md +362 -0
  439. package/dist/templates/copilot/prompts/parallel.prompt.md +204 -0
  440. package/dist/templates/copilot/prompts/record-session.prompt.md +66 -0
  441. package/dist/templates/copilot/prompts/start.prompt.md +63 -0
  442. package/dist/templates/copilot/prompts/update-spec.prompt.md +358 -0
  443. package/dist/templates/cursor/agents/trellis-check.md +108 -0
  444. package/dist/templates/cursor/agents/trellis-implement.md +109 -0
  445. package/dist/templates/cursor/agents/trellis-research.md +136 -0
  446. package/dist/templates/cursor/hooks.json +30 -0
  447. package/dist/templates/cursor/index.d.ts +13 -0
  448. package/dist/templates/cursor/index.d.ts.map +1 -0
  449. package/dist/templates/cursor/index.js +13 -0
  450. package/dist/templates/cursor/index.js.map +1 -0
  451. package/dist/templates/droid/droids/trellis-check.md +101 -0
  452. package/dist/templates/droid/droids/trellis-implement.md +102 -0
  453. package/dist/templates/droid/droids/trellis-research.md +137 -0
  454. package/dist/templates/droid/index.d.ts +15 -0
  455. package/dist/templates/droid/index.d.ts.map +1 -0
  456. package/dist/templates/droid/index.js +15 -0
  457. package/dist/templates/droid/index.js.map +1 -0
  458. package/dist/templates/droid/settings.json +59 -0
  459. package/dist/templates/extract.d.ts +40 -0
  460. package/dist/templates/extract.d.ts.map +1 -0
  461. package/dist/templates/extract.js +106 -0
  462. package/dist/templates/extract.js.map +1 -0
  463. package/dist/templates/gemini/agents/trellis-check.md +101 -0
  464. package/dist/templates/gemini/agents/trellis-implement.md +102 -0
  465. package/dist/templates/gemini/agents/trellis-research.md +136 -0
  466. package/dist/templates/gemini/index.d.ts +13 -0
  467. package/dist/templates/gemini/index.d.ts.map +1 -0
  468. package/dist/templates/gemini/index.js +13 -0
  469. package/dist/templates/gemini/index.js.map +1 -0
  470. package/dist/templates/gemini/settings.json +28 -0
  471. package/dist/templates/kiro/agents/trellis-check.json +26 -0
  472. package/dist/templates/kiro/agents/trellis-implement.json +26 -0
  473. package/dist/templates/kiro/agents/trellis-research.json +30 -0
  474. package/dist/templates/kiro/index.d.ts +18 -0
  475. package/dist/templates/kiro/index.d.ts.map +1 -0
  476. package/dist/templates/kiro/index.js +18 -0
  477. package/dist/templates/kiro/index.js.map +1 -0
  478. package/dist/templates/markdown/agents.md +21 -0
  479. package/dist/templates/markdown/gitignore.txt +15 -0
  480. package/dist/templates/markdown/index.d.ts +27 -0
  481. package/dist/templates/markdown/index.d.ts.map +1 -0
  482. package/dist/templates/markdown/index.js +52 -0
  483. package/dist/templates/markdown/index.js.map +1 -0
  484. package/dist/templates/markdown/spec/backend/database-guidelines.md.txt +51 -0
  485. package/dist/templates/markdown/spec/backend/directory-structure.md.txt +54 -0
  486. package/dist/templates/markdown/spec/backend/error-handling.md.txt +51 -0
  487. package/dist/templates/markdown/spec/backend/index.md.txt +38 -0
  488. package/dist/templates/markdown/spec/backend/logging-guidelines.md.txt +51 -0
  489. package/dist/templates/markdown/spec/backend/quality-guidelines.md.txt +51 -0
  490. package/dist/templates/markdown/spec/frontend/component-guidelines.md.txt +59 -0
  491. package/dist/templates/markdown/spec/frontend/directory-structure.md.txt +54 -0
  492. package/dist/templates/markdown/spec/frontend/hook-guidelines.md.txt +51 -0
  493. package/dist/templates/markdown/spec/frontend/index.md.txt +39 -0
  494. package/dist/templates/markdown/spec/frontend/quality-guidelines.md.txt +51 -0
  495. package/dist/templates/markdown/spec/frontend/state-management.md.txt +51 -0
  496. package/dist/templates/markdown/spec/frontend/type-safety.md.txt +51 -0
  497. package/dist/templates/markdown/spec/guides/code-reuse-thinking-guide.md.txt +223 -0
  498. package/dist/templates/markdown/spec/guides/cross-layer-thinking-guide.md.txt +259 -0
  499. package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md.txt +595 -0
  500. package/dist/templates/markdown/spec/guides/index.md.txt +97 -0
  501. package/dist/templates/markdown/workspace-index.md +125 -0
  502. package/dist/templates/markdown/worktree.yaml.txt +58 -0
  503. package/dist/templates/opencode/agents/trellis-check.md +116 -0
  504. package/dist/templates/opencode/agents/trellis-implement.md +118 -0
  505. package/dist/templates/opencode/agents/trellis-research.md +145 -0
  506. package/dist/templates/opencode/lib/session-utils.js +521 -0
  507. package/dist/templates/opencode/lib/trellis-context.js +381 -0
  508. package/dist/templates/opencode/package.json +5 -0
  509. package/dist/templates/opencode/plugins/inject-subagent-context.js +513 -0
  510. package/dist/templates/opencode/plugins/inject-workflow-state.js +159 -0
  511. package/dist/templates/opencode/plugins/session-start.js +101 -0
  512. package/dist/templates/pi/agents/trellis-check.md +36 -0
  513. package/dist/templates/pi/agents/trellis-implement.md +41 -0
  514. package/dist/templates/pi/agents/trellis-research.md +25 -0
  515. package/dist/templates/pi/extensions/trellis/index.ts.txt +1174 -0
  516. package/dist/templates/pi/index.d.ts +5 -0
  517. package/dist/templates/pi/index.d.ts.map +1 -0
  518. package/dist/templates/pi/index.js +12 -0
  519. package/dist/templates/pi/index.js.map +1 -0
  520. package/dist/templates/pi/settings.json +21 -0
  521. package/dist/templates/qoder/agents/trellis-check.md +102 -0
  522. package/dist/templates/qoder/agents/trellis-implement.md +103 -0
  523. package/dist/templates/qoder/agents/trellis-research.md +137 -0
  524. package/dist/templates/qoder/index.d.ts +15 -0
  525. package/dist/templates/qoder/index.d.ts.map +1 -0
  526. package/dist/templates/qoder/index.js +15 -0
  527. package/dist/templates/qoder/index.js.map +1 -0
  528. package/dist/templates/qoder/settings.json +47 -0
  529. package/dist/templates/shared-hooks/index.d.ts +50 -0
  530. package/dist/templates/shared-hooks/index.d.ts.map +1 -0
  531. package/dist/templates/shared-hooks/index.js +89 -0
  532. package/dist/templates/shared-hooks/index.js.map +1 -0
  533. package/dist/templates/shared-hooks/inject-shell-session-context.py +183 -0
  534. package/dist/templates/shared-hooks/inject-subagent-context.py +771 -0
  535. package/dist/templates/shared-hooks/inject-workflow-state.py +363 -0
  536. package/dist/templates/shared-hooks/session-start.py +827 -0
  537. package/dist/templates/template-utils.d.ts +26 -0
  538. package/dist/templates/template-utils.d.ts.map +1 -0
  539. package/dist/templates/template-utils.js +60 -0
  540. package/dist/templates/template-utils.js.map +1 -0
  541. package/dist/templates/trellis/config.yaml +90 -0
  542. package/dist/templates/trellis/gitignore.txt +32 -0
  543. package/dist/templates/trellis/index.d.ts +52 -0
  544. package/dist/templates/trellis/index.d.ts.map +1 -0
  545. package/dist/templates/trellis/index.js +97 -0
  546. package/dist/templates/trellis/index.js.map +1 -0
  547. package/dist/templates/trellis/scripts/__init__.py +5 -0
  548. package/dist/templates/trellis/scripts/add_session.py +547 -0
  549. package/dist/templates/trellis/scripts/common/__init__.py +92 -0
  550. package/dist/templates/trellis/scripts/common/active_task.py +626 -0
  551. package/dist/templates/trellis/scripts/common/cli_adapter.py +811 -0
  552. package/dist/templates/trellis/scripts/common/config.py +445 -0
  553. package/dist/templates/trellis/scripts/common/developer.py +190 -0
  554. package/dist/templates/trellis/scripts/common/git.py +31 -0
  555. package/dist/templates/trellis/scripts/common/git_context.py +106 -0
  556. package/dist/templates/trellis/scripts/common/io.py +37 -0
  557. package/dist/templates/trellis/scripts/common/log.py +45 -0
  558. package/dist/templates/trellis/scripts/common/packages_context.py +238 -0
  559. package/dist/templates/trellis/scripts/common/paths.py +447 -0
  560. package/dist/templates/trellis/scripts/common/safe_commit.py +285 -0
  561. package/dist/templates/trellis/scripts/common/session_context.py +821 -0
  562. package/dist/templates/trellis/scripts/common/task_context.py +223 -0
  563. package/dist/templates/trellis/scripts/common/task_queue.py +188 -0
  564. package/dist/templates/trellis/scripts/common/task_store.py +698 -0
  565. package/dist/templates/trellis/scripts/common/task_utils.py +274 -0
  566. package/dist/templates/trellis/scripts/common/tasks.py +112 -0
  567. package/dist/templates/trellis/scripts/common/trellis_config.py +131 -0
  568. package/dist/templates/trellis/scripts/common/types.py +110 -0
  569. package/dist/templates/trellis/scripts/common/workflow_phase.py +212 -0
  570. package/dist/templates/trellis/scripts/get_context.py +16 -0
  571. package/dist/templates/trellis/scripts/get_developer.py +26 -0
  572. package/dist/templates/trellis/scripts/hooks/linear_sync.py +243 -0
  573. package/dist/templates/trellis/scripts/init_developer.py +51 -0
  574. package/dist/templates/trellis/scripts/task.py +500 -0
  575. package/dist/templates/trellis/tasks/.gitkeep +0 -0
  576. package/dist/templates/trellis/workflow.md +690 -0
  577. package/dist/types/ai-tools.d.ts +95 -0
  578. package/dist/types/ai-tools.d.ts.map +1 -0
  579. package/dist/types/ai-tools.js +280 -0
  580. package/dist/types/ai-tools.js.map +1 -0
  581. package/dist/types/migration.d.ts +125 -0
  582. package/dist/types/migration.d.ts.map +1 -0
  583. package/dist/types/migration.js +8 -0
  584. package/dist/types/migration.js.map +1 -0
  585. package/dist/utils/compare-versions.d.ts +12 -0
  586. package/dist/utils/compare-versions.d.ts.map +1 -0
  587. package/dist/utils/compare-versions.js +86 -0
  588. package/dist/utils/compare-versions.js.map +1 -0
  589. package/dist/utils/cwd-guard.d.ts +38 -0
  590. package/dist/utils/cwd-guard.d.ts.map +1 -0
  591. package/dist/utils/cwd-guard.js +62 -0
  592. package/dist/utils/cwd-guard.js.map +1 -0
  593. package/dist/utils/file-writer.d.ts +36 -0
  594. package/dist/utils/file-writer.d.ts.map +1 -0
  595. package/dist/utils/file-writer.js +203 -0
  596. package/dist/utils/file-writer.js.map +1 -0
  597. package/dist/utils/manifest-prune.d.ts +61 -0
  598. package/dist/utils/manifest-prune.d.ts.map +1 -0
  599. package/dist/utils/manifest-prune.js +136 -0
  600. package/dist/utils/manifest-prune.js.map +1 -0
  601. package/dist/utils/posix.d.ts +13 -0
  602. package/dist/utils/posix.d.ts.map +1 -0
  603. package/dist/utils/posix.js +15 -0
  604. package/dist/utils/posix.js.map +1 -0
  605. package/dist/utils/project-detector.d.ts +46 -0
  606. package/dist/utils/project-detector.d.ts.map +1 -0
  607. package/dist/utils/project-detector.js +666 -0
  608. package/dist/utils/project-detector.js.map +1 -0
  609. package/dist/utils/proxy.d.ts +25 -0
  610. package/dist/utils/proxy.d.ts.map +1 -0
  611. package/dist/utils/proxy.js +60 -0
  612. package/dist/utils/proxy.js.map +1 -0
  613. package/dist/utils/task-json.d.ts +13 -0
  614. package/dist/utils/task-json.d.ts.map +1 -0
  615. package/dist/utils/task-json.js +12 -0
  616. package/dist/utils/task-json.js.map +1 -0
  617. package/dist/utils/template-fetcher.d.ts +150 -0
  618. package/dist/utils/template-fetcher.d.ts.map +1 -0
  619. package/dist/utils/template-fetcher.js +907 -0
  620. package/dist/utils/template-fetcher.js.map +1 -0
  621. package/dist/utils/template-hash.d.ts +123 -0
  622. package/dist/utils/template-hash.d.ts.map +1 -0
  623. package/dist/utils/template-hash.js +334 -0
  624. package/dist/utils/template-hash.js.map +1 -0
  625. package/dist/utils/uninstall-scrubbers.d.ts +66 -0
  626. package/dist/utils/uninstall-scrubbers.d.ts.map +1 -0
  627. package/dist/utils/uninstall-scrubbers.js +342 -0
  628. package/dist/utils/uninstall-scrubbers.js.map +1 -0
  629. package/package.json +90 -0
@@ -0,0 +1,48 @@
1
+ {
2
+ "version": "0.5.0-beta.9",
3
+ "description": "Five coordinated improvements accumulated since beta.8: (1) task.json schema unified across all writers + phase.py/create_bootstrap.py orphan cleanup, (2) workflow tightening — task-creation triggers + research sub-agent delegation, (3) Qoder session-boundary commands split out of the skill matcher into native /trellis-{continue,finish-work}, (4) polyrepo layout detection via sibling .git scan, (5) joiner onboarding task auto-generated for new developers on existing Trellis projects + both bootstrap / joiner PRDs rewritten as AI-facing instructions.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Internal cleanup (no user-facing behavior change):**\n- chore(schema): `task.json` shape unified across all three writers. `packages/cli/src/utils/task-json.ts` introduces a shared `TaskJson` type + `emptyTaskJson(overrides)` factory mirroring the 24-field canonical shape produced by `.trellis/scripts/common/task_store.py cmd_create`. `init.ts getBootstrapTaskJson` and `update.ts` migration-task block now route through the factory. Follows the `quality-guidelines.md` spec lesson 'Schema Deprecation: Audit ALL Writers, Not Just the Creator' captured in 0.5.0-beta.0 — `cmd_create` was cleaned up at the time, but the two TS writers were missed.\n- chore(schema): migration tasks no longer write legacy `current_phase: 0` / `next_action: [...]` fields. These reference the removed Multi-Agent Pipeline and no active reader consumes them in 0.5.\n- chore(bootstrap): bootstrap task's project-type checklist moves from structured `subtasks: [{name, status}]` in task.json to markdown `- [ ]` items in prd.md. Task.json `subtasks` is now canonical `string[]` (child task dir names) across all tasks.\n- chore(cleanup): `.trellis/scripts/common/phase.py` removed. Orphan code (no importers in 0.5); was kept around from the Multi-Agent Pipeline era and not captured by 0.5.0-beta.0's 138-entry safe-file-delete (which only targeted `multi_agent/*`). Hash-verified delete — pristine copies auto-removed, locally modified copies preserved with a warning.\n- chore(cleanup): `.trellis/scripts/create_bootstrap.py` removed. Legacy 4th task.json writer with its own 13-field divergent shape; replaced by `init.ts getBootstrapTaskJson` in 0.4 but the Python file was never deleted. Never invoked by any command. Same hash-verified delete mechanism; three historical hashes included to cover 0.3+ users.\n- chore(cleanup): `TaskData` TypedDict (`common/types.py`) no longer declares `current_phase: int` / `next_action: list[dict]` — dead schema fields.\n- docs: spec directory-trees in `script-conventions.md` (template + local) drop `phase.py` / `create_bootstrap.py` / the full `multi_agent/` block (which was actually removed in 0.5.0-beta.0 but kept appearing in shipped spec docs).\n- chore(pkg): remove 5 orphan `.md` files from `packages/cli/src/templates/markdown/spec/` (`spec/backend/{index,directory-structure,script-conventions}.md` + `spec/guides/{code-reuse,cross-platform}-thinking-guide.md`). These were accidentally added in early 0.1.x releases alongside the proper `.md.txt` stub templates but never imported by `markdown/index.ts` — they shipped in dist/ as dead weight (~35 KB) but never landed on user disks, so no migration entry is needed. Fixes a ~2-year-old duplication bug.\n\n**Workflow tightening (all platforms):**\n- feat(workflow): `workflow.md [workflow-state:no_task]` block + `shared-hooks/inject-workflow-state.py` + OpenCode plugin now enumerate explicit trigger words (`重构` / `抽成` / `独立` / `分发` / `拆出来` / `搞一个` / `做成` / `接入` / `集成` / `refactor` / `rewrite` / `extract` / `productize` / `publish` / `build X` / `design Y`) that REQUIRE task creation, plus a strict three-condition exemption rule (zero file writes + one-reply answer + no external research). Default stance: when in doubt, create a task.\n- feat(workflow): `common/skills/brainstorm.md` gains a 'Delegate to trellis-research sub-agent' section with explicit anti-pattern guidance — 10+ inline WebFetch/WebSearch calls in the main conversation burn tokens and leak raw tool output into context. Correct pattern: spawn trellis-research via Task tool; the sub-agent persists findings to `{TASK_DIR}/research/<topic>.md` and returns only path + one-line summary.\n- feat(workflow): `workflow.md [workflow-state:in_progress]` flow names the actual agent types (`trellis-implement → trellis-check → trellis-update-spec → finish`) instead of generic verbs.\n\n**Qoder UX fix:**\n- feat(qoder): deliver session-boundary commands as native Qoder Custom Commands (`.qoder/commands/trellis-{finish-work,continue}.md`) with YAML frontmatter (`name` + `description`), per docs.qoder.com/en/cli/user-guide/command. Previously these were buried in the skill matcher alongside the 5 auto-trigger workflows, so users had no deterministic way to invoke them — they had to hope their chat wording matched the skill's description. Now they type `/trellis-finish-work` or `/trellis-continue` explicitly.\n- chore(qoder): the 5 auto-trigger workflows (brainstorm, before-dev, check, update-spec, break-loop) stay as `.qoder/skills/trellis-{name}/SKILL.md`. `start` is filtered out because Qoder is agent-capable and its SessionStart hook already injects the workflow overview (same rule that applies to every other agent-capable platform).\n- chore(shared): new `wrapWithCommandFrontmatter` + `COMMAND_DESCRIPTIONS` registry in `configurators/shared.ts` — short, human-facing, imperative one-liners for the `/` palette, distinct from the long auto-trigger prose in `SKILL_DESCRIPTIONS` (written for the skill matcher, not a command list).\n- chore(migration): upgraders have their old `.qoder/skills/trellis-{finish-work,continue}/SKILL.md` hash-verified and auto-deleted on `trellis update` (pristine copies removed silently, locally-modified copies land on the standard confirm prompt).\n\n**New features:**\n- feat(cli): polyrepo detection via sibling `.git` scan. `detectMonorepo()` now has a 7th parser that scans up to 2 levels deep for sibling `.git` directories or worktree gitlinks, firing only when all 6 workspace parsers miss and no submodules are declared (workspace configs always win). `DetectedPackage` gains `isGitRepo` (mutually exclusive with `isSubmodule`); `writeMonorepoConfig` emits `git: true` to bridge to the runtime schema already consumed by `get_git_packages()` in `config.py`. `--monorepo` failure now prints a 7-marker checklist and a manual `config.yaml` example. Init confirm prompt labels polyrepo packages with `(git repo)`.\n- feat(cli): joiner onboarding task auto-generated when a new developer runs `trellis init` on an existing Trellis project (fresh clone / new machine). Three-branch dispatch on `.trellis/` × `.trellis/.developer`: no `.trellis/` = creator bootstrap (unchanged), `.trellis/` + no `.developer` = **joiner** (`00-join-<slug>`), both = no-op. The `.developer` file is gitignored, so it's a clean per-checkout signal; `workspace/<name>/` cannot be used because it's committed. Wired in both the main dispatch AND `handleReinit`'s `doAddDeveloper` branch (the latter is the default path for `trellis init --user <name>` on existing checkouts). Failures surface as `console.warn` instead of being silently swallowed.\n- feat(cli): `trellis init` bootstrap + joiner PRDs rewritten as AI-facing instructions. Previously framed as user-facing docs (`Welcome, do X, ask AI Y`); now framed as instructions TO the AI agent that runs the onboarding task (`You (the AI) are running this task; here's how to onboard them`). Includes runtime-mechanics explainer (SessionStart hook, workflow-state tag, implement/check sub-agents, jsonl manifests) and a suggested opening line. Same content reach, much better first-session UX.",
7
+ "migrations": [
8
+ {
9
+ "type": "safe-file-delete",
10
+ "from": ".trellis/scripts/common/phase.py",
11
+ "description": "Remove orphan phase.py — no importers; legacy from Multi-Agent Pipeline",
12
+ "allowed_hashes": [
13
+ "412b7096ef0e48b8a95a79060121a586e0d9d44f1b350d6ed818c6f84330bb01"
14
+ ]
15
+ },
16
+ {
17
+ "type": "safe-file-delete",
18
+ "from": ".trellis/scripts/create_bootstrap.py",
19
+ "description": "Remove dead create_bootstrap.py — replaced by TS init.ts getBootstrapTaskJson in 0.4; never invoked by any command",
20
+ "allowed_hashes": [
21
+ "33b40df671ba7828fd8d3ba8c019823a8b03e938797b1cae218c55d6c7ebe57a",
22
+ "ce1503c052dadf2470ddb1cade42f331c0fd70d34e895d8d07044ba27548e17e",
23
+ "aa5dd1f39a77b2f4bb827fd14ce7a83fb51870e77f556fe508afce3f8eac0b4e"
24
+ ]
25
+ },
26
+ {
27
+ "type": "safe-file-delete",
28
+ "from": ".qoder/skills/trellis-finish-work/SKILL.md",
29
+ "description": "Qoder session-boundary skill → moved to .qoder/commands/trellis-finish-work.md",
30
+ "reason": "In 0.5.0-beta.9, Qoder session-boundary commands move out of the skill matcher into native Custom Commands so users can invoke them deterministically as `/trellis-finish-work`.",
31
+ "allowed_hashes": [
32
+ "c0f3ffa74e1e9990f93e5d44d03bd088c8698da1db4750b74d3eee4809a84aea",
33
+ "2027d8ea610e0a929a7ce147b29045406db8a8c9c2a767f98d779e5d53162f0c"
34
+ ]
35
+ },
36
+ {
37
+ "type": "safe-file-delete",
38
+ "from": ".qoder/skills/trellis-continue/SKILL.md",
39
+ "description": "Qoder session-boundary skill → moved to .qoder/commands/trellis-continue.md",
40
+ "reason": "In 0.5.0-beta.9, Qoder session-boundary commands move out of the skill matcher into native Custom Commands so users can invoke them deterministically as `/trellis-continue`.",
41
+ "allowed_hashes": [
42
+ "914545dab290e508a4c6b84d0a9f8debe68bcf9117cebe0fa85be0ef709d8fc1",
43
+ "3d2c83ad710b3b667851e28a473fb259a1330475e6b7417c769432f4a55a76f9"
44
+ ]
45
+ }
46
+ ],
47
+ "notes": "Code cleanup + additive features; no user task.json mutations. Python readers (`task.py`, `get_context.py`) treat missing canonical fields as null, so legacy tasks keep working. Newly-created bootstrap / migration tasks from this version onward produce the canonical shape. Qoder users who had the two session-boundary skills installed will see them auto-removed (pristine) or prompted for confirm (modified); the new `.qoder/commands/*.md` are written by the standard configure step on `trellis update`."
48
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.5.0-rc.0",
3
+ "description": "First 0.5.0 release candidate. Stabilizes the beta.19 line with non-interactive init recovery fixes, workflow breadcrumbs that read from workflow.md, automatic updates for [workflow-state:*] blocks, and refreshed trellis-meta references. rc.0 adds no new migration actions; projects upgrading from 0.4.x still inherit the 0.5 migration chain from beta.0.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Enhancements:**\n- feat(workflow-state): Per-turn workflow breadcrumbs now read from `.trellis/workflow.md` `[workflow-state:STATUS]` blocks. Python and OpenCode JS fallback dictionaries were removed so workflow forks have one file to edit. The planning breadcrumb now calls out Phase 1.3 `implement.jsonl` / `check.jsonl` curation, and the in-progress breadcrumb includes Phase 3.4 commit before `/trellis:finish-work`.\n- feat(update): `trellis update` now refreshes `.trellis/workflow.md` breadcrumb blocks per status: replace existing `[workflow-state:*]` bodies from the CLI template, append missing blocks, preserve content outside the blocks, and warn when customized prompt text inside the blocks is replaced.\n- feat(task): `task.py create` best-effort sets the session active-task pointer, making the planning breadcrumb reachable immediately after task creation. `trellis continue` routes by `task.json.status` and required artifacts instead of PRD existence alone.\n- docs(meta): Refresh bundled `trellis-meta` references to explain how workflow-state reads `workflow.md`.\n\n**Bug Fixes:**\n- fix(init): `trellis init --yes` is fully non-interactive. `--yes` now maps conflicts to skip mode, and `writeFile()` falls back to skip in non-TTY `ask` mode to avoid prompts or `ERR_USE_AFTER_CLOSE` in scripted runs.\n- fix(init): Recover aborted first init runs where `.trellis/` exists but `tasks/` is empty. The second `trellis init -u <name> --codex --yes` now creates `00-bootstrap-guidelines` instead of mis-routing to joiner onboarding.\n\n**Testing:**\n- test(init): Add integration coverage for empty-`tasks/` recovery with and without `--force`, plus non-TTY file-writer conflict behavior.\n- test(workflow-state): Add regression coverage for workflow.md tag parsing, fallback removal, Phase 1.3 / Phase 3.4 breadcrumb invariants, session-start tag stripping, and workflow.md breadcrumb block updates.",
7
+ "migrations": [],
8
+ "notes": "RC install: `npm install -g @mindfoldhq/trellis@rc`. Projects already on 0.5 beta can run `trellis update`. Projects upgrading from 0.4.x should run `trellis update --migrate` because the 0.5 migration chain begins at 0.5.0-beta.0. rc.0 itself adds no new migration entries."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.5.0-rc.1",
3
+ "description": "Patches rc.0 with two OpenCode fixes: trellis-research subagent gains write permission and persists findings to {TASK_DIR}/research/ (#211); session-start.js extracts named exports to lib/session-utils.js so the OpenCode 1.2.x loader reaches export default (#212). No new migrations.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(opencode): `trellis-research` subagent template grants `write: allow` / `edit: allow` and the prompt body now matches the cursor/claude shape (Core Principle, Workflow Step 1–5 with `mkdir -p {TASK_DIR}/research/`, Scope Limits, File Format, DO/DON'T). The redundant 'Context Self-Loading' section is removed; `inject-subagent-context.js` already pre-loads spec dir context (#211).\n- fix(opencode): extract `buildSessionContext` and `hasInjectedTrellisContext` from `.opencode/plugins/session-start.js` into `lib/session-utils.js` so each plugin file has only `export default`. The OpenCode 1.2.x loader iterates `Object.entries(mod)` and invokes every export as a factory; the named exports caused the loader to abort before reaching the default export (#212).\n\n**Testing:**\n- test(opencode): walk `templates/opencode/plugins/*.js` and assert each file has exactly one top-level export matching `^export\\s+default\\s/` to prevent #212-class regressions.\n- test(opencode): extend the `research agent persists findings to task dir` regression group with an OpenCode-specific case asserting YAML `permission:` frontmatter and body contents, closing the gap that masked #211.",
7
+ "migrations": [],
8
+ "notes": "RC install: `npm install -g @mindfoldhq/trellis@rc`. Projects on 0.5 (beta or rc.0) run `trellis update`. Projects upgrading from 0.4.x run `trellis update --migrate`; the 0.5 migration chain begins at 0.5.0-beta.0. rc.1 adds no new migration entries."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.5.0-rc.2",
3
+ "description": "Patches rc.1 with the new `trellis uninstall` command (#221), Windows python3→python write-time replacement (#218), and copilot custom-agent frontmatter normalization (#210). No new migrations.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Enhancements:**\n- feat(cli): `trellis uninstall` removes all trellis-managed assets and the `.trellis/` directory based on `.template-hashes.json`. Two-column listing (deleted / modified) + `Continue? [Y/n]` (default Y); `--yes`/`-y` skips prompt; `--dry-run` lists then exits. Four scrubbers preserve user-added fields in 11 structured config files: `scrubHooksJson` (nested + flat), `scrubOpencodePackageJson`, `scrubPiSettings`, `scrubCodexConfigToml`. Token-based command matching avoids substring false positives. Empty managed root dirs cleaned up after file removal. 23 new tests (#221).\n\n**Bug Fixes:**\n- fix(cli): Windows hosts now write `python` instead of `python3` in all platform configs and copied scripts. `replacePythonCommandLiterals()` runs at init/update write time, leaves `#!` shebang lines untouched, and is idempotent. Applied across `claude.ts`, `codex.ts`, `copilot.ts`, `opencode.ts`, `pi.ts`, `workflow.ts`, `extract.ts`, `shared.ts` (writeSkills/writeAgents/writeSharedHooks/buildPullBasedPrelude), `update.ts` (collectTemplateFiles), and `index.ts` (collectPlatformTemplates). 9 new platform-mocked unit tests (#218, PR #220).\n- fix(copilot): custom agent frontmatter now uses the Copilot-native lowercase tool shape. `splitMarkdownFrontmatter()` replaces the line-based parser; `mapLegacyToolToCopilot()` translates Claude-style names (`Read`/`Write`/`Edit`/`Glob`/...) into Copilot tokens. Adds regression coverage in `test/regression.test.ts` (PR #210).",
7
+ "migrations": [],
8
+ "notes": "RC install: `npm install -g @mindfoldhq/trellis@rc`. Projects on 0.5 (beta or earlier rc) run `trellis update`. Projects upgrading from 0.4.x run `trellis update --migrate`; the 0.5 migration chain begins at 0.5.0-beta.0. rc.2 adds no new migration entries."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.5.0-rc.3",
3
+ "description": "Patches rc.2 with Gemini CLI 0.40.x template compatibility fixes (#224). No new migrations.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(cli): Gemini CLI 0.40.x template compat (#224). Drop `tools:` line from `.gemini/agents/trellis-{check,implement,research}.md` (sub-agent inherits parent tools). Hook event `UserPromptSubmit` → `BeforeAgent` in `.gemini/settings.json`. Shared skills moved from `.gemini/skills/` to `.agents/skills/`.\n- fix(cli): `inject-workflow-state.py` branches `hookEventName` per platform via `_detect_platform()` — `BeforeAgent` for Gemini, `UserPromptSubmit` otherwise.\n- fix(cli): `needsCodexUpgrade()` narrowed to Codex-only command-as-skill markers `.agents/skills/trellis-{continue,finish-work}/SKILL.md`. Previous broad match auto-installed Codex on `trellis update` for Gemini-only projects.",
7
+ "migrations": [],
8
+ "notes": "RC install: `npm install -g @mindfoldhq/trellis@rc`. Existing Gemini installs: re-run `trellis init --gemini` or delete `.gemini/skills/` manually."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.5.0-rc.4",
3
+ "description": "Adds TRELLIS_HOOKS env var to disable Trellis hooks at runtime. No new migrations.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Enhancements:**\n- feat(hooks): `TRELLIS_HOOKS=0` (or `TRELLIS_DISABLE_HOOKS=1`) early-returns every shipped Trellis hook before emitting `additionalContext`. Covers shared-hooks (`session-start.py`, `inject-workflow-state.py`, `inject-subagent-context.py`, `inject-shell-session-context.py`), platform-specific session-start (`codex`, `copilot`), and opencode plugins (`session-start.js`, `inject-workflow-state.js`, `inject-subagent-context.js`). Use `TRELLIS_HOOKS=0 claude` (or any host CLI) for sessions where the workflow breadcrumb / spec index / sub-agent context is unwanted.",
7
+ "migrations": [],
8
+ "notes": "RC install: `npm install -g @mindfoldhq/trellis@rc`."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.5.0-rc.5",
3
+ "description": "Codex template enables multi_agent_v2 by default with an 8-minute wait floor. AGENTS.md adds wait tool rules. No new migrations.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Enhancements:**\n- feat(codex): `.codex/config.toml` template now writes `[features.multi_agent_v2] { enabled = true, max_concurrent_threads_per_session = 6, min_wait_timeout_ms = 480000 }`. `min_wait_timeout_ms = 480000` (8 min) is the `wait()` timeout floor, up from Codex's `10000` (10 s) default; forces the parent to wait through subagent runtime instead of cancelling. `enabled = true` is required inside the table — the table form alone does not enable the feature. Project-level `[features]` activates only when the project is trusted in `~/.codex/config.toml`.\n- fix(codex): drop the `[features].codex_hooks = true` line — `CodexHooks` is now `Stage::Stable` with `default_enabled: true` in Codex's feature registry, so hooks load automatically once the project is trusted. The legacy `codex_hooks` alias was redundant.\n- feat(agents): `AGENTS.md` Subagents section names Codex's `wait` tool and bans cancel/re-spawn before `wait` returns. Raise the timeout (default 30 s, max 1 h) before judging a subagent stuck.",
7
+ "migrations": [],
8
+ "notes": "RC install: `npm install -g @mindfoldhq/trellis@rc`. Codex users: trust this project (`[projects.\"<abs path>\"].trust_level = \"trusted\"` in `~/.codex/config.toml`) so hooks and the project-level [features] block activate."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.5.0-rc.6",
3
+ "description": "Windows session-start.py normalizes MSYS/Cygwin/WSL paths. finish-work Step 2 classifies dirty paths instead of aborting unconditionally. No new migrations.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(hooks): Windows `session-start.py` normalizes MSYS `/d/...`, Cygwin `/cygdrive/d/...`, WSL `/mnt/d/...` to `D:\\...` before `Path.resolve()`. Synced to 6 copies (`.claude/`, `.codex/`, `.cursor/` + templates `shared-hooks/`, `codex/`, `copilot/`). Fixes #226.\n\n**Enhancements:**\n- feat(finish-work): Step 2 classifies dirty paths into current-task / other-window / indeterminate. Only current-task paths abort; other-window paths are reported and skipped; indeterminate paths prompt the user. Synced to 8 copies.",
7
+ "migrations": [],
8
+ "notes": "RC install: `npm install -g @mindfoldhq/trellis@rc`. Windows + Git Bash users should upgrade to restore Trellis context injection."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.5.0-rc.7",
3
+ "description": "Two field-reported fixes from issue #232: opencode plugin no longer downgraded by update; Codex Linux sandbox python3 EPERM tolerated. No new migrations.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(opencode): bump `@opencode-ai/plugin` template pin from `1.1.40` to `^1.14.39`. Previous hardcoded version caused `trellis update` to silently downgrade users who had manually upgraded the plugin to 1.14.x. The caret range matches the latest 1.x line on every install. (#232)\n- fix(cli): tolerate sandboxed `child_process` failures during the `python3 --version` probe in `requireSupportedPython`. Codex's Linux sandbox returns `EPERM` from `execSync` even when python3 is on the host PATH; the previous catch-all swallowed this as 'Python not found' and aborted `trellis init`. Now distinguishes `EPERM` / `EACCES` (sandbox-restricted spawn — warn and proceed, assuming python3 is available) from `ENOENT` and other errors (genuine missing command — throw as before). Adds `TRELLIS_SKIP_PYTHON_CHECK=1` env var as a final escape hatch. (#232)",
7
+ "migrations": [],
8
+ "notes": "RC install: `npm install -g @mindfoldhq/trellis@rc`. OpenCode users on previous 0.5.0 prereleases should run `bun install` (or pnpm/npm equivalent) inside `.opencode/` after `trellis update` to refresh the plugin to the latest 1.x version. Codex Linux users hitting the python3 EPERM error in init should re-run; if it still fails, set `TRELLIS_SKIP_PYTHON_CHECK=1`."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.5.0",
3
+ "description": "v0.5.0 stable — skill-first architecture, 7 platforms agent-capable, workflow.md as single source of truth. Stable promotion of rc.6 with no new src/ changes.",
4
+ "breaking": false,
5
+ "recommendMigrate": true,
6
+ "changelog": "**v0.5.0 stable.** Stable promotion of rc.6 — no new src/ changes since rc.6.\n\n**Heads-up:** `/start` is no longer a required entry point. Just describe what you want in natural language and you're in the Trellis workflow. `/continue <what you want to do>` works as an explicit kickoff. If you'd rather manually start a session before chatting, `/trellis:continue` now serves as the kickoff command in place of `/start`.\n\nCycle headlines since 0.4.0:\n\n**Codex notes**\n- _Addressed (rc.5):_ `multi_agent_v2` default-on. `.codex/config.toml` template writes the feature block; `min_wait_timeout_ms = 480000` (8 min) `wait()` floor stops parent busy-polling subagent status. Requires Codex CLI ≥ v0.128.0; older Codex fails with `untagged enum FeatureToml in features.multi_agent_v2`.\n- _Upstream (#191):_ Codex prints SessionStart hook context to the terminal on every turn. No toggle to suppress it for now (the Codex desktop app avoids this).\n- _Upstream:_ sub-agent startup can hang on a slow / failing MCP server. Present since Codex `multi_agent_v1`, still in `v2`.\n\n**Architecture**\n- Skill-first templates: 5 commands → auto-triggered skills (`before-dev` / `brainstorm` / `break-loop` / `check` / `update-spec`). Commands + skills consolidated to `packages/cli/src/templates/common/` (single source — drift across N platform copies eliminated).\n- `workflow.md` is the single source of truth: Phase definitions, skill routing, per-turn breadcrumb content, task.py 16-subcommand reference. Fork the workflow = edit one markdown file.\n- New `/continue` command: intra-task continue. Eliminates the user's need to learn the workflow — natural language enters Trellis, then a single `continue` at each handoff drives brainstorm → curate jsonl → implement+check → update-spec → commit+finish-work. Mechanism: routes by `task.json.status` + artifacts (prd.md, implement.jsonl curation) to the matching Phase step.\n\n**Multi-task & onboarding**\n- Session-scoped active-task pointer: moved from global `.trellis/.current-task` to per-session `.trellis/.runtime/sessions/<context-key>.json`. Parallel windows no longer stomp each other's active task. Bootstrap / joiner tasks skip the pointer. Per-platform session-key sources: Claude `CLAUDE_ENV_FILE`, Codex `CODEX_SESSION_ID` / `CODEX_THREAD_ID`, Cursor `beforeShellExecution` tickets, OpenCode Bash prefix, Pi nested injection.\n- Joiner onboarding: `trellis init` three-way dispatch on `.trellis/` × `.trellis/.developer` (gitignored). New `00-join-<slug>` task fires when a developer clones an existing Trellis project. Bootstrap + joiner PRDs rewritten as AI-facing instructions (runtime mechanics + suggested opening line) instead of user-facing welcome docs.\n\n**Platform coverage**\n- 7 platforms upgraded to agent-capable: Qoder, CodeBuddy, Factory Droid, Cursor, Gemini CLI, Kiro, GitHub Copilot.\n- Sub-agent context injection split: class-1 hook (Claude / Cursor / OpenCode / Kiro / CodeBuddy / Droid) vs class-2 pull-based prelude (Codex / Copilot / Gemini / Qoder).\n- `inject-workflow-state.py` per-turn breadcrumb hook injects `<workflow-state>` block keyed on `task.json.status`. iFlow platform dropped.\n\n**SessionStart payload**\n- 2.7 KB → 9.5 KB: Phase 1/2/3 step bodies inlined. `<guidelines>` shrunk 10.9 KB → 4.6 KB (paths-only for spec layer indexes). Total payload 16.7 KB, under Claude Code's ~20 KB truncate threshold.\n\n**Migration & update flow**\n- Breaking-change gate: `trellis update` exits 1 when traversing a breaking manifest, requires `--migrate` (was: silent partial migration).\n- `config.yaml` `update.skip` auto-bypass on breaking releases for `safe-file-delete` / new-file writes / template updates (was: half-migrated state).\n- Confirm prompt redesigned: shows `What` (migration action) + `Why prompted` (per-entry `reason`) + per-option recommendation.\n- Backup excludes `.claude/worktrees/` / `.cursor/worktrees/` / `.gemini/worktrees/` (avoids hundreds-of-MB bloat).\n\n**Cleanup (138-entry safe-file-delete, hash-verified)**\n- Removed: iFlow platform, multi-agent pipeline (`scripts/multi_agent/`, `worktree.yaml`), Ralph Loop hook (`ralph-loop.py`).\n- Retired: 6 commands (`parallel` / `onboard` / `create-command` / `integrate-skill` / `check-cross-layer` / `record-session`), 3 sub-agents (`dispatch` / `debug` / `plan`).\n- `record-session` merged into `finish-work` Step 3.\n\n**RC stabilization (rc.0 → rc.6)**\n- `trellis uninstall` command (rc.2)\n- `TRELLIS_HOOKS` env var for runtime disable (rc.4)\n- Codex `multi_agent_v2` default-on, 8-min wait floor (rc.5)\n- Windows session-start.py normalizes MSYS/Cygwin/WSL paths (rc.6, fixes #226)\n- `finish-work` Step 2 classifies dirty paths instead of aborting (rc.6)\n- Gemini CLI 0.40.x template compat (rc.3); OpenCode 1.2.x loader fix (rc.1); Copilot custom-agent frontmatter normalization (rc.2); Windows `python3` → `python` write replacement (rc.2).",
7
+ "migrations": [],
8
+ "notes": "**Stable release.** Promoted from rc.6 with no new src/ changes. \n\nUsers on 0.4.x: run `trellis update --migrate` (the `--migrate` flag is REQUIRED — the breaking-change gate from `0.5.0-beta.0` fires when traversing the migration chain). 138-entry safe-file-delete is hash-verified; local customizations are preserved with a warning. \n\nCodex users: Codex CLI ≥ v0.128.0 required for the `multi_agent_v2` config block. Two upstream Codex issues remain: hook context renders in terminal every turn (#191; Codex desktop app avoids this), and sub-agent startup can hang on a slow/failing MCP server. \n\nUsers on any 0.5.0 prerelease (beta.X / rc.X): plain `trellis update` works as a clean version bump. \n\nInstall: `npm install -g @mindfoldhq/trellis`"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.5.1",
3
+ "description": "Fix Codex sub-agent recursion via SessionStart injection (#234) and Cursor agent description rendering.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(codex): dispatch line in `SessionStart` reaches sub-agents under `multi_agent_v2`. `codex/hooks/session-start.py` injected a 'main session should dispatch trellis-implement' line at READY state; Codex runs `SessionStart` for every spawned session, so the line reached the freshly spawned `trellis-implement` sub-agent and it dispatched another `trellis-implement`. Outer sub-agent stayed `running`, `wait_agent` timed out. `SessionStart` stdin has no agent-identity field (`openai/codex#16226`), so patched at the prompt layer: `codex/agents/trellis-implement.toml` and `trellis-check.toml` open with a no-recursive-dispatch line; `codex/hooks/session-start.py` appends a sub-agent ignore-this clause after the dispatch wording in the READY-state block and the `<guidelines>` block. Resolves #234.\n- fix(shared-hooks): same exemption clause added to `shared-hooks/session-start.py` (Claude Code / Cursor / Gemini CLI / Qoder / CodeBuddy / Factory Droid / Kiro). Recursion not reported on those platforms; trigger condition is identical to Codex.\n- fix(cursor): `cursor/agents/trellis-{research,implement,check}.md` frontmatter `description` switched from YAML block scalar to single-line literal. Cursor's agent parser only reads single-line `description:`; block scalars left the UI Description field blank.",
7
+ "migrations": [],
8
+ "notes": "Hotfix on top of 0.5.0. Run `trellis update` (no `--migrate` needed)."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.5.10",
3
+ "description": "Patch: prevent runaway `git add -f .trellis/` on gitignored projects + Pi platform workflow-state injection + Pi pi-subagents project isolation.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(scripts): `add_session.py` and `task.py archive` no longer print a generic `git add .trellis && git commit` fallback when the repo's `.gitignore` excludes `.trellis/`. They now stage only specific Trellis-owned paths (journal, index.md, active task dir, archive subtree) and auto-retry with `git add -f -- <specific-paths>` only on `ignored by` stderr. The warning text explicitly states `Do NOT use \\`git add -f .trellis/\\``, naming `.trellis/.backup-*`, `.trellis/worktrees/`, `.trellis/.template-hashes.json`, `.trellis/.runtime/`, `.trellis/.cache/` as the subpaths users should ignore individually instead. Helper centralized in `templates/trellis/scripts/common/safe_commit.py`.\n- fix(pi): Pi extension now injects `<workflow-state>` breadcrumb on every `input` and `before_agent_start` event, plus a `<session-overview>` block sourced from `.trellis/scripts/get_context.py`. The `subagent` tool registration carries a `promptSnippet` with the `Active task: <path>` dispatch protocol. Pi sessions previously skipped the `task.py create → brainstorm → implement → check` flow because the AI saw no workflow guidance after session start. Closes #249.\n- fix(pi): Project-level `packages[\"npm:pi-subagents\"]` override added to `.pi/settings.json` so a globally-installed `npm:pi-subagents` cannot inject `extensions / skills / prompts / themes` into the current Trellis project. `scrubPiSettings` reverses the override on `trellis uninstall`. Closes #246.",
7
+ "migrations": [],
8
+ "notes": "Patch on top of 0.5.9. Run `trellis update` (no `--migrate` needed). All three fixes auto-apply on next session."
9
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "version": "0.5.11",
3
+ "description": "Patch: drop 0.5.10 `git add -f` retry + new `session_auto_commit` config + session-start update hint.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(scripts): drop `git add -f` auto-retry from 0.5.10. When `.gitignore` excludes `.trellis/`, `add_session.py` and `task.py archive` print a warning and skip auto-commit instead of force-staging.\n\n**Enhancements:**\n- feat(scripts): new `session_auto_commit: true | false` in `.trellis/config.yaml` (default `true`). Set `false` to skip auto stage + commit — journal / archive files still write to disk. Closes #245.\n- feat(scripts): `get_context.py` shows `Trellis update available: <current> -> <latest>` once per session when local install lags. 1-second timeout, failures silent. Closes #254.",
7
+ "migrations": [],
8
+ "configSectionsAdded": [
9
+ {
10
+ "file": ".trellis/config.yaml",
11
+ "sentinel": "session_auto_commit:",
12
+ "sectionHeading": "Session Auto-Commit"
13
+ }
14
+ ],
15
+ "notes": "Patch on top of 0.5.10. Run `trellis update` — your `.trellis/config.yaml` gets a commented-out `session_auto_commit: true` block appended automatically. Uncomment and flip to `false` if your `.gitignore` excludes `.trellis/` and you want auto-commit off entirely."
16
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.5.12",
3
+ "description": "Patch: update workflow.md as a whole runtime template during trellis update.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(update): update `.trellis/workflow.md` as a whole hash-tracked template so runtime phase routing markers, including Codex `codex-inline` / `codex-sub-agent` blocks, refresh during `trellis update`.",
7
+ "migrations": [],
8
+ "notes": "Run `trellis update` to refresh hash-tracked workflow templates. No migration required."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.5.13",
3
+ "description": "Patch: OpenCode context injection, non-Git session context, hook timeouts, and Copilot SessionStart wording.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(opencode): detect Windows POSIX shell dialects before injecting `TRELLIS_CONTEXT_ID`, so Git Bash / MSYS / Cygwin sessions receive `export ...` while PowerShell keeps `$env:...`.\n- fix(context): session context now handles non-Git Trellis roots without reporting fake clean Git state, and falls back to bounded child-repo discovery for unconfigured polyrepo layouts.\n- fix(opencode): Trellis sub-agent dispatch now skips duplicate SessionStart / workflow-state injection, resolves active tasks from session context, `Active task:` hints, or single-session fallback, and marks successfully injected prompts.\n- fix(hooks): default hook timeouts now use 30s for SessionStart and 15s for per-prompt workflow injection across hook-based platforms, avoiding Windows Python cold-start drops.\n- fix(copilot): SessionStart output no longer emits the stale `Copilot currently ignores sessionStart hook output` system message; it keeps `hookSpecificOutput.additionalContext` as the documented payload.\n\n**Internal:**\n- docs(spec): platform and cross-platform spec templates document shell-dialect-aware `TRELLIS_CONTEXT_ID` prefix rules for OpenCode.",
7
+ "migrations": [],
8
+ "notes": "Run `trellis update` to refresh hash-tracked hook, OpenCode, session-context, and spec templates. No migration required."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.5.14",
3
+ "description": "Patch: `task.py archive` auto-commit no longer leaks dirty changes from other task dirs into the archive commit, and source-side deletes now stage correctly (no more phantom-delete fixups).",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(scripts): `task.py archive` auto-commit is now scoped to just the archived task's source + destination paths (plus any child task dirs whose `task.json` was edited as part of the parent→children relationship update). Dirty changes in OTHER active task dirs no longer get bundled into the archive commit.\n- fix(scripts): after `shutil.move` of a tracked task dir, the source-side deletions are now explicitly staged via `git rm -r --cached --ignore-unmatch`, so the working tree stays clean against HEAD without needing a follow-up fixup commit.\n\n**Internal:**\n- `safe_archive_paths_to_add()` accepts optional `task_name` + `modified_children` parameters; backward-compatible when called with no args (legacy wide scope preserved).\n- New integration test `test/scripts/task-archive.integration.test.ts` covers scope-creep + phantom-delete regressions against the real Python script.",
7
+ "migrations": [],
8
+ "notes": "Run `trellis update` to pull in the fixed `.trellis/scripts/common/task_store.py` + `safe_commit.py`. No migration required — script signatures changed but file paths did not."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.5.15",
3
+ "description": "Patch: prevent Trellis template manifests from owning user runtime files, and force UTF-8 for Windows hook I/O.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(uninstall): `trellis init` now tracks platform/root template hashes from files actually written by Trellis instead of walking `.codex/`, `.claude/`, and other platform dirs that can contain user runtime data.\n- fix(uninstall): `trellis update` and `trellis uninstall` prune orphan `.trellis/.template-hashes.json` entries before planning, preserving user-owned files from manifests created by older versions.\n- fix(hooks): Windows hook templates force UTF-8 for stdin, stdout, and stderr so non-ASCII task names and prompt payloads do not fail under cp936/cp1252 code pages.",
7
+ "migrations": [],
8
+ "notes": "Run `trellis update` to pull in the manifest ownership fixes and updated hook templates. No migration required because file paths did not change."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.5.2",
3
+ "description": "Hotfix Python <=3.11 SyntaxError in SessionStart hook (f-string backslash).",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(hooks): SessionStart hook crashes at parse time on Python <=3.11. The Windows path normalizer added in 0.5.0-rc.6 used `f\"{drive}:\\\\{rest.replace('/', '\\\\')}\"`; PEP 498 forbids backslashes inside f-string expression parts, so Python <=3.11 raises `SyntaxError: f-string expression part cannot include a backslash` and the hook exits with code 1 before doing anything. PEP 701 in Python 3.12 lifted the restriction, hiding the bug from 3.12+ users. Codex CLI 0.128 + Trellis 0.5.0 reproduced it in the field. Fixed by lifting the `.replace(...)` out of each f-string expression into a local variable. 9 occurrences across `codex/hooks/session-start.py`, `copilot/hooks/session-start.py`, and `shared-hooks/session-start.py` (Claude Code / Cursor / Gemini CLI / Qoder / CodeBuddy / Factory Droid / Kiro).",
7
+ "migrations": [],
8
+ "notes": "Hotfix on top of 0.5.1. Run `trellis update` (no `--migrate` needed). Affects every Python <=3.11 user on a hook-capable platform; Python 3.12+ users were unaffected."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.5.3",
3
+ "description": "Hotfix: fallback for class-1 sub-agent context injection + non-blocking task.py start.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(hooks): class-1 platforms (claude / cursor / opencode / kiro / codebuddy / droid) inject sub-agent context (prd.md + implement.jsonl / check.jsonl) via PreToolUse hook. The hook silent-skips on Windows at v2.1.119 (upstream `anthropics/claude-code#53254`); the existing sub-agent definition files trusted the hook to always fire and had no fallback. Added marker-based dual-channel context loading: `inject-subagent-context.py` prepends a `<!-- trellis-hook-injected -->` sentinel to the build_implement_prompt / build_check_prompt / build_finish_prompt outputs (only emitted on the success path). Each class-1 trellis-implement / trellis-check definition now opens with a `Trellis Context Loading Protocol` section that branches on the marker: present → hook injected, proceed; absent → read `Active task` line from dispatch prompt + Read prd.md + the relevant jsonl yourself. workflow.md dispatch protocol scope changed from class-2-only to all platforms (except trellis-research).\n- fix(task): `task.py start` previously hard-failed with `return 1` when no `TRELLIS_CONTEXT_ID` was injected, blocking the AI from continuing. Replaced with a yellow-tagged degraded-mode warning, still flips `task.json.status: planning → in_progress`, returns 0. Happy path (`resolve_context_key()` truthy) is byte-identical. Affects every Windows + Claude Code user where the SessionStart hook can't reach the spawned shell.\n\nClass-2 platforms (codex / copilot / gemini / qoder) untouched — they already use `buildPullBasedPrelude`. trellis-research intentionally not marker'd — research is decoupled from task.",
7
+ "migrations": [],
8
+ "notes": "Hotfix on top of 0.5.2. Run `trellis update` (no `--migrate` needed). Affects every class-1 platform user whose SessionStart / PreToolUse hook injection ever fails (Windows + Claude Code, --continue / resume paths, fork distributions, hooks disabled)."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.5.4",
3
+ "description": "Patch: guard sub-agent recursion (#237) + fix compareVersions on hyphenated prereleases (#230).",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(workflow): guard sub-agent recursion (#237). On Codex, `[workflow-state:in_progress]` reaches the sub-agent's turn too, and the sub-agent followed its own dispatch instruction — spawning another `trellis-implement` instead of doing the work. Scoped the dispatch rule to the main session and added a self-exemption to all platform `trellis-implement` / `trellis-check` agent definitions.\n- fix(compare-versions): preserve hyphens inside prerelease identifiers (#230 by @voidborne-d). `String.split(\"-\", 2)` truncates the tail in JavaScript (unlike Python `maxsplit`), so `compareVersions(\"1.0.0-alpha-1\", \"1.0.0-alpha-2\")` returned `0` — the two versions sorted as equal. Fixed. Adds 20 test cases in `packages/cli/test/utils/compare-versions.test.ts`.",
7
+ "migrations": [],
8
+ "notes": "Patch on top of 0.5.3. Run `trellis update` (no `--migrate` needed). Affects every platform whose per-turn workflow-state breadcrumb can reach sub-agent turns (Codex confirmed; risk applies more broadly)."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.5.5",
3
+ "description": "Patch: structural fix for Codex sub-agent recursion (#240, #242) — drop SessionStart hook, bootstrap via trellis-start skill.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(codex): drop SessionStart hook, bootstrap via `trellis-start` skill (#240, #242). Codex fires SessionStart for every spawn, and its hook input exposes no `agent_id` / `agent_type` field (`openai/codex#16226`) — so the dispatch directive in `codex/hooks/session-start.py` kept reaching sub-agent sessions, the sub-agent mistook itself for the main session and re-dispatched its own sub-agent (recursive turtles). The 0.5.4 patch (`#237`) added a self-exemption clause but it sat alongside the dispatch directive in the same prompt block; LLMs kept picking the command-style instruction. Structural fix: removed the `SessionStart` entry from `codex/hooks.json`. `inject-workflow-state.py` (UserPromptSubmit hook) now injects a `<trellis-bootstrap>` block on `no_task` turns telling the AI to invoke `$trellis-start` once to load workflow context. Codex configurator additionally writes the new skill to `.agents/skills/trellis-start/SKILL.md` (other agent-capable platforms keep their working SessionStart hooks). Sub-agent sessions only see the existing `<sub-agent-notice>` — no command-style \"must dispatch\" text exists anywhere in the new injection, so the recursion vector is gone at source.",
7
+ "migrations": [],
8
+ "notes": "Patch on top of 0.5.4. Run `trellis update` (no `--migrate` needed). Codex users get a new `.agents/skills/trellis-start/SKILL.md` and a `hooks.json` without `SessionStart` wiring; other platforms unchanged."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.5.6",
3
+ "description": "Patch: Codex multi_agent_v2 spawn-loop guidance — fork_turns=\"none\" + completion close-loop algorithm.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(agents): document `fork_turns=\"none\"` requirement on Codex `spawn_agent` calls (#240 follow-up). 0.5.5 removed the SessionStart injection vector that hijacked sub-agent sessions, but [Marsor707's local verification](https://github.com/mindfold-ai/Trellis/issues/240#issuecomment-4393264022) showed a second vector remained: with default `fork_turns=\"all\"`, the child inherits the parent transcript and sees prior `spawn_agent(...)` records, then applies the \"wait for spawned subagents\" rule to itself — `wait_agent` self-deadlock. `markdown/agents.md` now documents the rule under a new \"Codex-only — `spawn_agent` parameters\" subsection.\n- fix(agents): document multi-subagent close-loop algorithm (#241). The existing rule \"ALWAYS wait for every spawned subagent to reach a terminal status\" was ambiguous — LLMs read it as \"received completed → wait again\" instead of \"received completed → `list_agents` / verify deliverables / `close_agent` / remove from expected set / wait only on still-running\". `markdown/agents.md` now has a \"Codex-only — multi-subagent close-loop\" subsection with the deterministic algorithm proposed in the issue.\n\nBoth changes are prompt-layer-only — no script / hook / configurator behavior changed.",
7
+ "migrations": [],
8
+ "notes": "Patch on top of 0.5.5. Run `trellis update` (no `--migrate` needed). Updates `AGENTS.md` only — Codex users get clearer multi_agent_v2 guidance; other platforms see the new subsections labeled `Codex-only` and can ignore them."
9
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "version": "0.5.7",
3
+ "description": "Patch: Codex configurable dispatch mode + sub-agent collab-tool hard disable (#240/#241), trellis-start update-path fix, Kiro CLI schema migration (#247), Windows Python fallback chain (#236).",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Codex 0.129 compatibility (read first if you use Codex):**\n- `/hooks` TUI review gate: Codex 0.129 keeps each installed hook inactive until the user runs `/hooks` and approves it. Until you do, Trellis's `UserPromptSubmit` hook won't fire and every new Codex session looks like Trellis isn't wired in. The bundled `<trellis-bootstrap>` fallback in `inject-workflow-state.py` covers the gap by directing the AI to read the `trellis-start` skill manually (workflow still runs, just less smoothly). Run `/hooks` once after upgrading Codex to restore auto-injection.\n- `[features].codex_hooks` renamed to `[features].hooks`. Legacy name still works on 0.129+ but emits a deprecation warning on startup. Trellis docs and the `trellis init` runtime warning now point at the new name. The uninstall scrubber recognizes both new and legacy markers so older projects still clean up cleanly.\n\n**Enhancements:**\n- feat(codex): config-driven dispatch mode. New optional knob `codex.dispatch_mode` in `.trellis/config.yaml` lets Codex projects opt into `inline` mode where the main agent edits code directly via the `trellis-before-dev` / `trellis-check` skills instead of dispatching `trellis-implement` / `trellis-check` sub-agents. Default stays `sub-agent`, no behavior change for existing users. New manifest field `configSectionsAdded` appends the commented `codex:` section to existing `config.yaml` files on `trellis update` without touching user customizations.\n\n**Bug Fixes:**\n- fix(codex): disable Codex collab tools in sub-agent role files at protocol level (#240, #241). 0.5.5 removed the SessionStart injection vector, 0.5.6 added prompt-layer `fork_turns=\"none\"` guidance, but [Ca11back's reproduction on #241](https://github.com/mindfold-ai/Trellis/issues/241) showed the main agent still spawned with default `fork_turns=\"all\"`, the child inherited the parent's `spawn_agent(...)` records, applied the \"wait for spawned subagents\" rule to itself, and `wait_agent`-stuck on phantom children. Structural fix: each `codex/agents/trellis-{implement,check,research}.toml` now sets `[features].multi_agent = false` and `[features.multi_agent_v2].enabled = false`. With both flags off, Codex doesn't register `spawn_agent` / `wait_agent` / `list_agents` / `close_agent` for the sub-agent.\n- fix(codex): write `trellis-start` skill on update path, not just init. 0.5.5's `configureCodex()` writes `.agents/skills/trellis-start/SKILL.md` so the `<trellis-bootstrap>` notice from `inject-workflow-state.py` resolves to a real skill, but `collectPlatformTemplates.codex.collectTemplates()` (used by `trellis update`) was missed. Result: users upgrading from 0.4.x to 0.5.5/0.5.6 ran the safe-file-delete migration that removed `.agents/skills/start/`, then `trellis update` regenerated all the other trellis-* skill dirs from `collectTemplates`, but never wrote `trellis-start`. Their AI then reported \"no .agents/skills/trellis-start/SKILL.md\" on every turn that hit `<trellis-bootstrap>`. Extracted `resolveCodexTrellisStartSkill()` helper in `configurators/shared.ts`, called from both paths.\n- fix(kiro): migrate agent JSON to Kiro CLI's current schema (#247). Kiro CLI rejected Trellis's pre-0.5.7 agent JSON with \"invalid agent\". Three schema changes per [Agent Configuration Reference](https://kiro.dev/docs/cli/custom-agents/configuration-reference): (1) `instructions` becomes `prompt`; (2) adds `allowedTools` field mirroring `tools` (Kiro splits \"available\" from \"permitted\"); (3) `hooks` switched from array of `{on, command, timeout_ms}` entries to object keyed by event name (`hooks: { agentSpawn: [{ command: \"...\" }] }`). Affects all three `trellis-{implement,check,research}.json` files.\n- fix(init): Windows Python detection fallback chain (#236). `trellis init` previously tried only `python --version` on Windows. If the host had Python under `python3` (Microsoft Store) or `py -3` (python.org launcher) but not `python`, init failed outright. Now `resolveSupportedPython()` walks `python` to `python3` to `py -3` on Windows (`python3` to `python` elsewhere) and uses the first candidate that probes Python ≥ 3.9. Adds `TRELLIS_PYTHON_CMD=<cmd>` env-var override and respects pre-existing `TRELLIS_SKIP_PYTHON_CHECK=1`.",
7
+ "migrations": [],
8
+ "configSectionsAdded": [
9
+ {
10
+ "file": ".trellis/config.yaml",
11
+ "sentinel": "codex:",
12
+ "sectionHeading": "Codex (dispatch behavior)"
13
+ }
14
+ ],
15
+ "notes": "Patch on top of 0.5.6. Run `trellis update` (no `--migrate` needed). Codex users get the new `dispatch_mode` knob (default unchanged), hardened sub-agent role files, plus the previously-init-only `trellis-start` skill on the update path. Kiro users get an agent JSON that Kiro CLI no longer rejects. Codex 0.129+ users should run `/hooks` once after upgrading Codex to approve the Trellis `UserPromptSubmit` hook."
16
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.5.8",
3
+ "description": "Bug fixes for Codex sub-agent behavior. AI no longer gets stuck waiting on sub-agents that don't exist; `trellis-research` on Codex no longer silently exits without producing files. Pure prompt-layer trim.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- **Removing the sub-agent guidance in `AGENTS.md` stops Codex from calling / waiting on research agents.** Deleted the `## Subagents` section (36 lines, including the \"ALWAYS wait for every spawned subagent\" rule).\n- **Sub-agent mode fix: `trellis-research` on Codex no longer exits prematurely / produces no research files due to missing task context** (the main agent now includes the `Active task:` line when dispatching to research agents too).\n\n**Added:**\n- `CoreRule` block prepended to the `trellis-brainstorm` skill (adapted from https://github.com/mattpocock/skills/blob/main/skills/productivity/grill-me/SKILL.md ).\n\nNon-Codex platforms (Claude Code, Cursor, OpenCode, Kiro, CodeBuddy, Droid) unchanged.",
7
+ "migrations": [],
8
+ "notes": "Pure prompt-layer trim. No Python or TypeScript edits. `trellis update` refreshes AGENTS.md / workflow.md / brainstorm skill content."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.5.9",
3
+ "description": "Patch: codex dispatch defaults to inline + workflow.md namespaced into codex-inline / codex-sub-agent.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(codex): default `codex.dispatch_mode` flipped from `sub-agent` to `inline`. Codex sub-agents run with `fork_turns=\"none\"` isolation and can't inherit the parent session's task context, so they exit silently or recursively dispatch. Inline keeps the main Codex agent in charge so context isn't lost. Set `codex.dispatch_mode: sub-agent` in `.trellis/config.yaml` to opt back into the legacy dispatch flow. Invalid values fall back to inline.\n- fix(workflow): namespace `--platform codex` into virtual platforms `codex-inline` / `codex-sub-agent` so `workflow.md` `[Platform A, B, ...]` blocks render the correct guidance per mode. `inject-workflow-state.py` emits a `<codex-mode>` banner in the per-turn UserPromptSubmit prompt so Codex knows which mode it is in, and `[workflow-state:STATUS-inline]` blocks now drive the breadcrumb path for inline mode.\n\n**Internal:**\n- chore(manifests): restore `0.6.0-beta.0.json` on main. The version was published from `feat/v0.6.0-beta` but its manifest never landed on main, breaking adjacent-version update chains for users who hop between stable and beta lines.",
7
+ "migrations": [],
8
+ "notes": "Patch on top of 0.5.8. Run `trellis update` (no `--migrate` needed). Existing Codex projects keep working: if you previously uncommented `dispatch_mode: sub-agent`, that opt-in still routes to the legacy dispatch flow; if the line is commented (the default), behavior switches to inline."
9
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "version": "0.6.0-beta.0",
3
+ "description": "First 0.6 beta. Adds `trellis mem`: search past Claude Code / Codex / OpenCode sessions by keyword, read the turns around each match, and dump full conversations.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**New feature: `trellis mem`**\n- `trellis mem` searches past Claude Code / Codex / OpenCode sessions by keyword and reads the turns around each match. Five subcommands wired through commander as a passthrough group: `projects`, `list`, `search`, `context`, `extract`. Strips hook injections, AGENTS.md preambles, and tool-call noise so search hits reflect real dialogue. Handles compaction (Claude `isCompactSummary` + Codex `compacted` events). Adds zod ^4 as a runtime dep.\n- 84 unit tests added on top of the integrated POC source: 11 pure helpers (Tier 1, 44 cases), 3 platform parsers with inline fixtures (Tier 2, 24 cases), 5 subcommand integration smoke (Tier 3, 16 cases). mem.ts statement coverage 81.89% / function 89.04% / line 87.93%.",
7
+ "migrations": [],
8
+ "configSectionsAdded": [
9
+ {
10
+ "file": ".trellis/config.yaml",
11
+ "sentinel": "codex:",
12
+ "sectionHeading": "Codex (sub-agent dispatch behavior)"
13
+ }
14
+ ],
15
+ "notes": "First public 0.6 beta. Install: `npm install -g @mindfoldhq/trellis@beta`. The `trellis mem` command is opt-in (only fires when invoked). Codex 0.129+ users should run `/hooks` once to approve the Trellis `UserPromptSubmit` hook."
16
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.6.0-beta.1",
3
+ "description": "Beta patch: same Codex dispatch fix as 0.5.9 — defaults to inline + workflow.md namespaced into codex-inline / codex-sub-agent.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:** (mirrors 0.5.9)\n- fix(codex): default `codex.dispatch_mode` flipped from `sub-agent` to `inline`. Codex sub-agents run with `fork_turns=\"none\"` isolation and can't inherit the parent session's task context, so they exit silently or recursively dispatch. Inline keeps the main Codex agent in charge so context isn't lost. Set `codex.dispatch_mode: sub-agent` in `.trellis/config.yaml` to opt back into the legacy dispatch flow. Invalid values fall back to inline.\n- fix(workflow): namespace `--platform codex` into virtual platforms `codex-inline` / `codex-sub-agent` so `workflow.md` `[Platform A, B, ...]` blocks render the correct guidance per mode. `inject-workflow-state.py` emits a `<codex-mode>` banner in the per-turn UserPromptSubmit prompt so Codex knows which mode it is in, and `[workflow-state:STATUS-inline]` blocks now drive the breadcrumb path for inline mode.",
7
+ "migrations": [],
8
+ "notes": "Beta patch on top of 0.6.0-beta.0. Run `trellis update` (no `--migrate` needed). Behavior change matches 0.5.9 — if you previously uncommented `dispatch_mode: sub-agent`, that opt-in still routes to the legacy dispatch flow; if commented (the default), behavior switches to inline."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.6.0-beta.10",
3
+ "description": "Beta release for the trellis channel multi-agent collaboration runtime.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Enhancements:**\n- feat(channel): add `trellis channel` multi-agent collaboration runtime with `create`, `send`, `wait`, `spawn`, `run`, `list`, `messages`, `kill`, `rm`, and `prune` subcommands.\n- feat(channel): add Claude stream-json and Codex app-server adapters that translate provider output into channel `message`, `progress`, `done`, and `error` events.\n- feat(channel): store project-scoped channel logs under `~/.trellis/channels/<project>/<channel>/events.jsonl` with locked sequence assignment and lazy legacy-channel relocation.\n\n**Internal:**\n- refactor(channel): isolate adapter parsing, event storage, supervisor shutdown, inbox polling, and stdout pumping under `packages/cli/src/commands/channel/`.",
7
+ "migrations": [],
8
+ "notes": "Beta release on top of 0.6.0-beta.9. Run `trellis update` after installing `@mindfoldhq/trellis@beta`. No project-file migration required."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.6.0-beta.11",
3
+ "description": "Beta patch: fix uninstall manifest ownership, task archive auto-commit staging, Windows hook UTF-8 I/O, and beta-branch manifest continuity.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(scripts): `task.py archive` auto-commit now stages only the archived task source path, archive destination path, and child task dirs whose `task.json` was edited during parent cleanup.\n- fix(scripts): `task.py archive` now stages source-side deletes with `git rm -r --cached --ignore-unmatch` after moving a tracked task dir to `.trellis/tasks/archive/<YYYY-MM>/`.\n- fix(uninstall): `trellis init` now tracks platform/root template hashes from files actually written by Trellis instead of walking `.codex/`, `.claude/`, and other platform dirs that can contain user runtime data.\n- fix(uninstall): `trellis update` and `trellis uninstall` prune orphan `.trellis/.template-hashes.json` entries before planning, preserving user-owned files from manifests created by older versions.\n- fix(hooks): Windows hook templates force UTF-8 for stdin, stdout, and stderr so non-ASCII task names and prompt payloads do not fail under cp936/cp1252 code pages.\n\n**Internal:**\n- Restored `0.5.14.json` and added `0.5.15.json` on the beta branch so `check-manifest-continuity` passes against all published stable versions.",
7
+ "migrations": [],
8
+ "notes": "Run `trellis update` to pull in the archive auto-commit fix, manifest ownership self-heal, and updated hook templates. No migration required because file paths did not change."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.6.0-beta.12",
3
+ "description": "Beta patch: add thread channels, project/global channel scope, linked context, and shared channel event filtering.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Enhancements:**\n- feat(channel): add `trellis channel create --type thread`, `trellis channel post`, `trellis channel threads`, and `trellis channel thread` for durable thread channels.\n- feat(channel): add `--scope project|global` resolution across channel create, send, wait, spawn, messages, list, kill, rm, and prune.\n- feat(channel): add channel and thread `description` plus `linkedContext` fields via `--linked-context-file` and `--linked-context-raw`.",
7
+ "migrations": [],
8
+ "notes": "Run `trellis update` to pull in thread channel commands and project/global scope support. No migration required because existing channel paths and project files remain valid."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.6.0-beta.13",
3
+ "description": "Beta patch: add the trellis-core SDK package, finalize thread channel naming/context commands, and publish core with the CLI.",
4
+ "breaking": true,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Enhancements:**\n- feat(core): add `@mindfoldhq/trellis-core` with public `channel`, `task`, and `testing` exports for Node consumers.\n- feat(channel): use `trellis channel create --type threads` for thread channels and add `trellis channel context`, `trellis channel title`, and `trellis channel thread rename`.\n- feat(channel): add `--context-file` and `--context-raw` as canonical context flags while accepting `--linked-context-*` aliases.\n\n**Internal:**\n- chore(release): publish `@mindfoldhq/trellis-core` before `@mindfoldhq/trellis` with one version, one dist-tag, provenance, and packed CLI dependency checks.",
7
+ "migrations": [],
8
+ "notes": "Beta users should replace `trellis channel create --type thread` with `trellis channel create --type threads`. Run `trellis update` to pull in the core SDK-backed channel commands. No file migration is required."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.6.0-beta.14",
3
+ "description": "Beta patch: classify Codex channel streamed deltas and verify published packages on public npm after CI publish.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(channel): add `detail.kind`, `detail.stream_id`, and `detail.phase` to Codex `item/agentMessage/delta` progress events so consumers can split interleaved output and commentary streams.\n\n**Internal:**\n- chore(release): verify `@mindfoldhq/trellis` and `@mindfoldhq/trellis-core` are visible on the public npm registry after CI publish.",
7
+ "migrations": [],
8
+ "notes": "Run `npm install -g @mindfoldhq/trellis@beta` and `trellis update` to use the Codex channel stream metadata fix. No file migration is required."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.6.0-beta.2",
3
+ "description": "Beta patch: tl mem list/search --since now respects cross-day session activity (interval-overlap filter).",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(mem): `tl mem list / search --since X` was dropping sessions whose first event fell before the window even when the session stayed active inside it. A 29 MB Claude session that started 5/7 and was still being written 5/8 returned 0 matches under `--since 2026-05-08` despite containing 19 occurrences of the searched keyword written that day. Root cause: `claudeListSessions` and `codexListSessions` filtered by `created` only (single-point `inRange`); `opencodeListSessions` used `updated`-first which masked the bug there but was also strictly wrong for the `--until` direction. Fix: `inRangeOverlap(start, end, f)` keeps a session iff its `[created, updated]` interval overlaps `[f.since, f.until]`. Three list sites switched over; the early `tsFromName` short-circuit in codex was a misoptimization that re-introduced the cross-day bug, so it is removed.\n- chore(spec): internal Trellis spec drift cleanup — `script-conventions.md` drops removed `task_context.py init-context`; `workflow-state-contract.md` writer-table line numbers refreshed; `directory-structure.md` configurators / utils / commands trees aligned with current code; `docs-site/advanced/architecture.mdx` corrected the false `.trellis/.current-task` fallback claim (EN + ZH lockstep). User-facing artifact unchanged; only `.trellis/spec/*` docs.",
7
+ "migrations": [],
8
+ "notes": "Beta patch on top of 0.6.0-beta.1. Run `trellis update` (no `--migrate` needed). Behavior change: `tl mem list / search --since X` now returns sessions that were active inside the window even if they started before it (this was the documented intent). Codex perf trade-off: every session now does `readJsonlFirst` since the filename-ts short-circuit is gone — acceptable; a future patch may add a one-sided `--until`-only fast prune that does not reintroduce the bug."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.6.0-beta.3",
3
+ "description": "Beta patch: tl mem --phase brainstorm slicing, 5-9x perf, OpenCode SQLite reader for 1.2+ users.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Enhancements:**\n- feat(mem): `tl mem extract <id> --phase brainstorm|implement|all` slices a session into discussion vs implementation parts. Multi-task sessions get `--- task: <slug> ---` separators. Claude and Codex supported; OpenCode falls back to full dialogue.\n- perf(mem): 5-9× faster. `mem list` 3.5s → 0.67s, `mem list --platform codex` 3.2s → 0.33s, `mem extract --phase brainstorm` 5.8s → 0.73s.\n\n**Bug Fixes:**\n- fix(mem): OpenCode 1.2+ users no longer see 0 sessions. OpenCode 1.2 moved storage to SQLite; the old JSON-directory reader has been replaced. OpenCode 1.1.x is no longer supported.\n- fix(mem): `--phase` parser handles `$(... --slug NAME)` substitution, multiple `task.py` invocations per Bash command, and `task.py start` quoted in commit-message heredocs.",
7
+ "migrations": [],
8
+ "notes": "Beta patch on top of 0.6.0-beta.2. Run `trellis update` (no `--migrate` needed). New dependency `better-sqlite3` for OpenCode — standard `npm install` handles it via prebuilt binaries; if the native binding fails, `tl mem` still works on other platforms."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.6.0-beta.4",
3
+ "description": "Reverts better-sqlite3 dependency added in 0.6.0-beta.3.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(mem): `better-sqlite3` dependency removed. Reverts the OpenCode SQLite reader added in 0.6.0-beta.3. Fixes `npm install -g @mindfoldhq/trellis@beta` failure when the prebuilt binary download fails and no local C toolchain is available.\n- fix(mem): OpenCode platform degraded — `tl mem list / search / extract` on platform `opencode` returns empty + a one-shot stderr warning. Claude and Codex paths unchanged.",
7
+ "migrations": [],
8
+ "notes": "Beta patch on top of 0.6.0-beta.3. Run `trellis update`."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.6.0-beta.5",
3
+ "description": "Beta patch: cherry-picks v0.5.10 stable fixes (git-add-f prevention + Pi #246/#249) + version-update hint at session start (PR #254).",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(scripts): `add_session.py` and `task.py archive` no longer print a generic `git add .trellis && git commit` fallback when the repo's `.gitignore` excludes `.trellis/`. They now stage only specific Trellis-owned paths and auto-retry with `git add -f -- <specific-paths>` only on `ignored by` stderr. The warning text explicitly states `Do NOT use \\`git add -f .trellis/\\``, naming `.trellis/.backup-*`, `.trellis/worktrees/`, `.trellis/.template-hashes.json`, `.trellis/.runtime/`, `.trellis/.cache/` as the subpaths users should ignore individually instead. Helper centralized in `templates/trellis/scripts/common/safe_commit.py`.\n- fix(pi): Pi extension now injects `<workflow-state>` breadcrumb on every `input` and `before_agent_start` event, plus a `<session-overview>` block sourced from `.trellis/scripts/get_context.py`. The `subagent` tool registration carries a `promptSnippet` with the `Active task: <path>` dispatch protocol. Closes #249.\n- fix(pi): Project-level `packages[\"npm:pi-subagents\"]` override added to `.pi/settings.json` so a globally-installed `npm:pi-subagents` cannot inject `extensions / skills / prompts / themes` into the current Trellis project. `scrubPiSettings` reverses the override on `trellis uninstall`. Closes #246.\n\n**Enhancements:**\n- feat(scripts): `get_context.py` default mode now performs a once-per-session `trellis --version` check and prepends `Trellis update available: <current> -> <latest>, run npm install -g @mindfoldhq/trellis@latest` before the context body when the local install lags. Best-effort with a 1-second timeout; failures silently skip. Marker stored under `.trellis/.runtime/` (auto-ignored). Closes #254.",
7
+ "migrations": [],
8
+ "notes": "Beta patch on top of 0.6.0-beta.4. Run `trellis update`. Brings the four 0.5.10-line fixes / features into the 0.6 beta line."
9
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "version": "0.6.0-beta.6",
3
+ "description": "Beta patch: brings v0.5.11 fixes into 0.6 beta line — drops `git add -f` auto-retry + new `session_auto_commit` config.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(scripts): drop `git add -f` auto-retry from 0.6.0-beta.5. When `.gitignore` excludes `.trellis/`, `add_session.py` and `task.py archive` print a warning and skip auto-commit instead of force-staging.\n\n**Enhancements:**\n- feat(scripts): new `session_auto_commit: true | false` in `.trellis/config.yaml` (default `true`). Set `false` to skip auto stage + commit — journal / archive files still write to disk. Closes #245.",
7
+ "migrations": [],
8
+ "configSectionsAdded": [
9
+ {
10
+ "file": ".trellis/config.yaml",
11
+ "sentinel": "session_auto_commit:",
12
+ "sectionHeading": "Session Auto-Commit"
13
+ }
14
+ ],
15
+ "notes": "Beta patch on top of 0.6.0-beta.5. Run `trellis update` — your `.trellis/config.yaml` gets a commented-out `session_auto_commit: true` block appended automatically. Uncomment and flip to `false` if your `.gitignore` excludes `.trellis/` and you want auto-commit off entirely."
16
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.6.0-beta.7",
3
+ "description": "Beta patch: brings the v0.5.12 workflow update fix into the 0.6 beta line.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Bug Fixes:**\n- fix(update): update `.trellis/workflow.md` as a whole hash-tracked template so runtime phase routing markers, including Codex `codex-inline` / `codex-sub-agent` blocks, refresh during `trellis update`.",
7
+ "migrations": [],
8
+ "notes": "Beta patch on top of 0.6.0-beta.6. Run `trellis update` to refresh hash-tracked workflow templates. No migration required."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.6.0-beta.8",
3
+ "description": "Beta patch: adds task-creation consent gates and planning artifacts across workflow, hooks, skills, and platform templates.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**Enhancements:**\n- feat(workflow): no-task turns now classify simple conversation, inline small work, and full Trellis tasks before task creation; complex work asks before creating a task and entering planning.\n- feat(task): `task.py create` now creates a default `prd.md`, while complex tasks require `design.md` and `implement.md` before `task.py start`.\n- feat(context): implement/check context loading now uses the same artifact order across hook-push, pull-prelude, Pi, OpenCode, and inline modes: jsonl entries -> `prd.md` -> optional `design.md` -> optional `implement.md`.\n- feat(codex): Codex no-task breadcrumbs include `<trellis-bootstrap>` plus explicit `<codex-mode>` text, and inline mode keeps implementation/check work in the main session.",
7
+ "migrations": [],
8
+ "notes": "Beta patch on top of 0.6.0-beta.7. Run `trellis update` to refresh workflow, hook, skill, agent, and platform templates. No migration required."
9
+ }