@madmatt112org/spec-workflow-mcp 3.0.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 (537) hide show
  1. package/CHANGELOG.md +1013 -0
  2. package/LICENSE +674 -0
  3. package/README.md +458 -0
  4. package/dist/__tests__/config.test.d.ts +2 -0
  5. package/dist/__tests__/config.test.d.ts.map +1 -0
  6. package/dist/__tests__/config.test.js +264 -0
  7. package/dist/__tests__/config.test.js.map +1 -0
  8. package/dist/__tests__/index-args.test.d.ts +2 -0
  9. package/dist/__tests__/index-args.test.d.ts.map +1 -0
  10. package/dist/__tests__/index-args.test.js +43 -0
  11. package/dist/__tests__/index-args.test.js.map +1 -0
  12. package/dist/__tests__/index-entrypoint.test.d.ts +2 -0
  13. package/dist/__tests__/index-entrypoint.test.d.ts.map +1 -0
  14. package/dist/__tests__/index-entrypoint.test.js +23 -0
  15. package/dist/__tests__/index-entrypoint.test.js.map +1 -0
  16. package/dist/config.d.ts +26 -0
  17. package/dist/config.d.ts.map +1 -0
  18. package/dist/config.js +188 -0
  19. package/dist/config.js.map +1 -0
  20. package/dist/core/__tests__/adversarial-settings.test.d.ts +2 -0
  21. package/dist/core/__tests__/adversarial-settings.test.d.ts.map +1 -0
  22. package/dist/core/__tests__/adversarial-settings.test.js +361 -0
  23. package/dist/core/__tests__/adversarial-settings.test.js.map +1 -0
  24. package/dist/core/__tests__/deferral-storage.test.d.ts +2 -0
  25. package/dist/core/__tests__/deferral-storage.test.d.ts.map +1 -0
  26. package/dist/core/__tests__/deferral-storage.test.js +181 -0
  27. package/dist/core/__tests__/deferral-storage.test.js.map +1 -0
  28. package/dist/core/__tests__/git-utils.test.d.ts +2 -0
  29. package/dist/core/__tests__/git-utils.test.d.ts.map +1 -0
  30. package/dist/core/__tests__/git-utils.test.js +179 -0
  31. package/dist/core/__tests__/git-utils.test.js.map +1 -0
  32. package/dist/core/__tests__/hygiene-signals.test.d.ts +2 -0
  33. package/dist/core/__tests__/hygiene-signals.test.d.ts.map +1 -0
  34. package/dist/core/__tests__/hygiene-signals.test.js +200 -0
  35. package/dist/core/__tests__/hygiene-signals.test.js.map +1 -0
  36. package/dist/core/__tests__/mdx-validator.test.d.ts +2 -0
  37. package/dist/core/__tests__/mdx-validator.test.d.ts.map +1 -0
  38. package/dist/core/__tests__/mdx-validator.test.js +42 -0
  39. package/dist/core/__tests__/mdx-validator.test.js.map +1 -0
  40. package/dist/core/__tests__/path-denylist.test.d.ts +2 -0
  41. package/dist/core/__tests__/path-denylist.test.d.ts.map +1 -0
  42. package/dist/core/__tests__/path-denylist.test.js +242 -0
  43. package/dist/core/__tests__/path-denylist.test.js.map +1 -0
  44. package/dist/core/__tests__/path-utils.test.d.ts +2 -0
  45. package/dist/core/__tests__/path-utils.test.d.ts.map +1 -0
  46. package/dist/core/__tests__/path-utils.test.js +342 -0
  47. package/dist/core/__tests__/path-utils.test.js.map +1 -0
  48. package/dist/core/__tests__/project-registry.test.d.ts +2 -0
  49. package/dist/core/__tests__/project-registry.test.d.ts.map +1 -0
  50. package/dist/core/__tests__/project-registry.test.js +62 -0
  51. package/dist/core/__tests__/project-registry.test.js.map +1 -0
  52. package/dist/core/__tests__/security-utils.test.d.ts +2 -0
  53. package/dist/core/__tests__/security-utils.test.d.ts.map +1 -0
  54. package/dist/core/__tests__/security-utils.test.js +643 -0
  55. package/dist/core/__tests__/security-utils.test.js.map +1 -0
  56. package/dist/core/__tests__/task-diff.test.d.ts +2 -0
  57. package/dist/core/__tests__/task-diff.test.d.ts.map +1 -0
  58. package/dist/core/__tests__/task-diff.test.js +287 -0
  59. package/dist/core/__tests__/task-diff.test.js.map +1 -0
  60. package/dist/core/__tests__/task-review-manager.test.d.ts +2 -0
  61. package/dist/core/__tests__/task-review-manager.test.d.ts.map +1 -0
  62. package/dist/core/__tests__/task-review-manager.test.js +235 -0
  63. package/dist/core/__tests__/task-review-manager.test.js.map +1 -0
  64. package/dist/core/__tests__/task-validator.test.d.ts +2 -0
  65. package/dist/core/__tests__/task-validator.test.d.ts.map +1 -0
  66. package/dist/core/__tests__/task-validator.test.js +237 -0
  67. package/dist/core/__tests__/task-validator.test.js.map +1 -0
  68. package/dist/core/__tests__/typecheck.test.d.ts +2 -0
  69. package/dist/core/__tests__/typecheck.test.d.ts.map +1 -0
  70. package/dist/core/__tests__/typecheck.test.js +558 -0
  71. package/dist/core/__tests__/typecheck.test.js.map +1 -0
  72. package/dist/core/adversarial-settings.d.ts +23 -0
  73. package/dist/core/adversarial-settings.d.ts.map +1 -0
  74. package/dist/core/adversarial-settings.js +148 -0
  75. package/dist/core/adversarial-settings.js.map +1 -0
  76. package/dist/core/archive-service.d.ts +10 -0
  77. package/dist/core/archive-service.d.ts.map +1 -0
  78. package/dist/core/archive-service.js +99 -0
  79. package/dist/core/archive-service.js.map +1 -0
  80. package/dist/core/dashboard-session.d.ts +49 -0
  81. package/dist/core/dashboard-session.d.ts.map +1 -0
  82. package/dist/core/dashboard-session.js +132 -0
  83. package/dist/core/dashboard-session.js.map +1 -0
  84. package/dist/core/deferral-storage.d.ts +32 -0
  85. package/dist/core/deferral-storage.d.ts.map +1 -0
  86. package/dist/core/deferral-storage.js +232 -0
  87. package/dist/core/deferral-storage.js.map +1 -0
  88. package/dist/core/git-utils.d.ts +25 -0
  89. package/dist/core/git-utils.d.ts.map +1 -0
  90. package/dist/core/git-utils.js +87 -0
  91. package/dist/core/git-utils.js.map +1 -0
  92. package/dist/core/global-dir.d.ts +44 -0
  93. package/dist/core/global-dir.d.ts.map +1 -0
  94. package/dist/core/global-dir.js +74 -0
  95. package/dist/core/global-dir.js.map +1 -0
  96. package/dist/core/hygiene-signals.d.ts +8 -0
  97. package/dist/core/hygiene-signals.d.ts.map +1 -0
  98. package/dist/core/hygiene-signals.js +41 -0
  99. package/dist/core/hygiene-signals.js.map +1 -0
  100. package/dist/core/implementation-log-migrator.d.ts +41 -0
  101. package/dist/core/implementation-log-migrator.d.ts.map +1 -0
  102. package/dist/core/implementation-log-migrator.js +258 -0
  103. package/dist/core/implementation-log-migrator.js.map +1 -0
  104. package/dist/core/mdx-validator.d.ts +14 -0
  105. package/dist/core/mdx-validator.d.ts.map +1 -0
  106. package/dist/core/mdx-validator.js +34 -0
  107. package/dist/core/mdx-validator.js.map +1 -0
  108. package/dist/core/parser.d.ts +11 -0
  109. package/dist/core/parser.d.ts.map +1 -0
  110. package/dist/core/parser.js +126 -0
  111. package/dist/core/parser.js.map +1 -0
  112. package/dist/core/path-denylist.d.ts +8 -0
  113. package/dist/core/path-denylist.d.ts.map +1 -0
  114. package/dist/core/path-denylist.js +107 -0
  115. package/dist/core/path-denylist.js.map +1 -0
  116. package/dist/core/path-utils.d.ts +69 -0
  117. package/dist/core/path-utils.d.ts.map +1 -0
  118. package/dist/core/path-utils.js +306 -0
  119. package/dist/core/path-utils.js.map +1 -0
  120. package/dist/core/project-registry.d.ts +94 -0
  121. package/dist/core/project-registry.d.ts.map +1 -0
  122. package/dist/core/project-registry.js +297 -0
  123. package/dist/core/project-registry.js.map +1 -0
  124. package/dist/core/security-utils.d.ts +97 -0
  125. package/dist/core/security-utils.d.ts.map +1 -0
  126. package/dist/core/security-utils.js +264 -0
  127. package/dist/core/security-utils.js.map +1 -0
  128. package/dist/core/task-diff.d.ts +15 -0
  129. package/dist/core/task-diff.d.ts.map +1 -0
  130. package/dist/core/task-diff.js +136 -0
  131. package/dist/core/task-diff.js.map +1 -0
  132. package/dist/core/task-parser.d.ts +63 -0
  133. package/dist/core/task-parser.d.ts.map +1 -0
  134. package/dist/core/task-parser.js +332 -0
  135. package/dist/core/task-parser.js.map +1 -0
  136. package/dist/core/task-review-manager.d.ts +56 -0
  137. package/dist/core/task-review-manager.d.ts.map +1 -0
  138. package/dist/core/task-review-manager.js +281 -0
  139. package/dist/core/task-review-manager.js.map +1 -0
  140. package/dist/core/task-validator.d.ts +35 -0
  141. package/dist/core/task-validator.d.ts.map +1 -0
  142. package/dist/core/task-validator.js +236 -0
  143. package/dist/core/task-validator.js.map +1 -0
  144. package/dist/core/typecheck.d.ts +33 -0
  145. package/dist/core/typecheck.d.ts.map +1 -0
  146. package/dist/core/typecheck.js +375 -0
  147. package/dist/core/typecheck.js.map +1 -0
  148. package/dist/core/workspace-initializer.d.ts +16 -0
  149. package/dist/core/workspace-initializer.d.ts.map +1 -0
  150. package/dist/core/workspace-initializer.js +167 -0
  151. package/dist/core/workspace-initializer.js.map +1 -0
  152. package/dist/dashboard/__tests__/adversarial-display-state.test.d.ts +2 -0
  153. package/dist/dashboard/__tests__/adversarial-display-state.test.d.ts.map +1 -0
  154. package/dist/dashboard/__tests__/adversarial-display-state.test.js +59 -0
  155. package/dist/dashboard/__tests__/adversarial-display-state.test.js.map +1 -0
  156. package/dist/dashboard/__tests__/adversarial-endpoints.test.d.ts +2 -0
  157. package/dist/dashboard/__tests__/adversarial-endpoints.test.d.ts.map +1 -0
  158. package/dist/dashboard/__tests__/adversarial-endpoints.test.js +296 -0
  159. package/dist/dashboard/__tests__/adversarial-endpoints.test.js.map +1 -0
  160. package/dist/dashboard/__tests__/adversarial-runner.test.d.ts +2 -0
  161. package/dist/dashboard/__tests__/adversarial-runner.test.d.ts.map +1 -0
  162. package/dist/dashboard/__tests__/adversarial-runner.test.js +315 -0
  163. package/dist/dashboard/__tests__/adversarial-runner.test.js.map +1 -0
  164. package/dist/dashboard/__tests__/approval-storage-path-resolution.test.d.ts +2 -0
  165. package/dist/dashboard/__tests__/approval-storage-path-resolution.test.d.ts.map +1 -0
  166. package/dist/dashboard/__tests__/approval-storage-path-resolution.test.js +78 -0
  167. package/dist/dashboard/__tests__/approval-storage-path-resolution.test.js.map +1 -0
  168. package/dist/dashboard/__tests__/multi-server-approvals-content.test.d.ts +2 -0
  169. package/dist/dashboard/__tests__/multi-server-approvals-content.test.d.ts.map +1 -0
  170. package/dist/dashboard/__tests__/multi-server-approvals-content.test.js +115 -0
  171. package/dist/dashboard/__tests__/multi-server-approvals-content.test.js.map +1 -0
  172. package/dist/dashboard/__tests__/multi-server.test.d.ts +2 -0
  173. package/dist/dashboard/__tests__/multi-server.test.d.ts.map +1 -0
  174. package/dist/dashboard/__tests__/multi-server.test.js +388 -0
  175. package/dist/dashboard/__tests__/multi-server.test.js.map +1 -0
  176. package/dist/dashboard/__tests__/task-review-runner.test.d.ts +2 -0
  177. package/dist/dashboard/__tests__/task-review-runner.test.d.ts.map +1 -0
  178. package/dist/dashboard/__tests__/task-review-runner.test.js +255 -0
  179. package/dist/dashboard/__tests__/task-review-runner.test.js.map +1 -0
  180. package/dist/dashboard/__tests__/watcher-error-handling.test.d.ts +2 -0
  181. package/dist/dashboard/__tests__/watcher-error-handling.test.d.ts.map +1 -0
  182. package/dist/dashboard/__tests__/watcher-error-handling.test.js +118 -0
  183. package/dist/dashboard/__tests__/watcher-error-handling.test.js.map +1 -0
  184. package/dist/dashboard/adversarial-display-state.d.ts +38 -0
  185. package/dist/dashboard/adversarial-display-state.d.ts.map +1 -0
  186. package/dist/dashboard/adversarial-display-state.js +45 -0
  187. package/dist/dashboard/adversarial-display-state.js.map +1 -0
  188. package/dist/dashboard/adversarial-runner.d.ts +44 -0
  189. package/dist/dashboard/adversarial-runner.d.ts.map +1 -0
  190. package/dist/dashboard/adversarial-runner.js +168 -0
  191. package/dist/dashboard/adversarial-runner.js.map +1 -0
  192. package/dist/dashboard/approval-storage.d.ts +139 -0
  193. package/dist/dashboard/approval-storage.d.ts.map +1 -0
  194. package/dist/dashboard/approval-storage.js +608 -0
  195. package/dist/dashboard/approval-storage.js.map +1 -0
  196. package/dist/dashboard/execution-history-manager.d.ts +52 -0
  197. package/dist/dashboard/execution-history-manager.d.ts.map +1 -0
  198. package/dist/dashboard/execution-history-manager.js +161 -0
  199. package/dist/dashboard/execution-history-manager.js.map +1 -0
  200. package/dist/dashboard/implementation-log-manager.d.ts +102 -0
  201. package/dist/dashboard/implementation-log-manager.d.ts.map +1 -0
  202. package/dist/dashboard/implementation-log-manager.js +594 -0
  203. package/dist/dashboard/implementation-log-manager.js.map +1 -0
  204. package/dist/dashboard/job-scheduler.d.ts +91 -0
  205. package/dist/dashboard/job-scheduler.d.ts.map +1 -0
  206. package/dist/dashboard/job-scheduler.js +321 -0
  207. package/dist/dashboard/job-scheduler.js.map +1 -0
  208. package/dist/dashboard/multi-server.d.ts +45 -0
  209. package/dist/dashboard/multi-server.d.ts.map +1 -0
  210. package/dist/dashboard/multi-server.js +1927 -0
  211. package/dist/dashboard/multi-server.js.map +1 -0
  212. package/dist/dashboard/parser.d.ts +18 -0
  213. package/dist/dashboard/parser.d.ts.map +1 -0
  214. package/dist/dashboard/parser.js +243 -0
  215. package/dist/dashboard/parser.js.map +1 -0
  216. package/dist/dashboard/project-manager.d.ts +82 -0
  217. package/dist/dashboard/project-manager.d.ts.map +1 -0
  218. package/dist/dashboard/project-manager.js +257 -0
  219. package/dist/dashboard/project-manager.js.map +1 -0
  220. package/dist/dashboard/public/assets/Inter-Bold-CD3Pr7BX.woff2 +0 -0
  221. package/dist/dashboard/public/assets/Inter-Medium-B_8v_WHh.woff2 +0 -0
  222. package/dist/dashboard/public/assets/Inter-Regular-DRVdRqcI.woff2 +0 -0
  223. package/dist/dashboard/public/assets/Inter-SemiBold-CtskMddL.woff2 +0 -0
  224. package/dist/dashboard/public/assets/JetBrainsMono-Bold-D4WEaHbo.woff2 +0 -0
  225. package/dist/dashboard/public/assets/JetBrainsMono-Medium-3S3k2nMz.woff2 +0 -0
  226. package/dist/dashboard/public/assets/JetBrainsMono-Regular-BQaDgvhP.woff2 +0 -0
  227. package/dist/dashboard/public/assets/Tableau10-B-NsZVaP.js +1 -0
  228. package/dist/dashboard/public/assets/apl-B4CMkyY2.js +1 -0
  229. package/dist/dashboard/public/assets/arc-A04OOED4.js +1 -0
  230. package/dist/dashboard/public/assets/array-BKyUJesY.js +1 -0
  231. package/dist/dashboard/public/assets/asciiarmor-Df11BRmG.js +1 -0
  232. package/dist/dashboard/public/assets/asn1-EdZsLKOL.js +1 -0
  233. package/dist/dashboard/public/assets/asterisk-B-8jnY81.js +1 -0
  234. package/dist/dashboard/public/assets/blockDiagram-c4efeb88--RobHnfG.js +118 -0
  235. package/dist/dashboard/public/assets/brainfuck-C4LP7Hcl.js +1 -0
  236. package/dist/dashboard/public/assets/c4Diagram-c83219d4-tY8lPXxy.js +10 -0
  237. package/dist/dashboard/public/assets/channel-Cg2ZlORc.js +1 -0
  238. package/dist/dashboard/public/assets/classDiagram-beda092f-DBiupBFm.js +2 -0
  239. package/dist/dashboard/public/assets/classDiagram-v2-2358418a-FM2jRAtm.js +2 -0
  240. package/dist/dashboard/public/assets/clike-B9uivgTg.js +1 -0
  241. package/dist/dashboard/public/assets/clojure-BMjYHr_A.js +1 -0
  242. package/dist/dashboard/public/assets/clone-CCO9qihz.js +1 -0
  243. package/dist/dashboard/public/assets/cmake-BQqOBYOt.js +1 -0
  244. package/dist/dashboard/public/assets/cobol-CWcv1MsR.js +1 -0
  245. package/dist/dashboard/public/assets/coffeescript-S37ZYGWr.js +1 -0
  246. package/dist/dashboard/public/assets/commonlisp-DBKNyK5s.js +1 -0
  247. package/dist/dashboard/public/assets/createText-1719965b-C_nyx2v1.js +7 -0
  248. package/dist/dashboard/public/assets/crystal-SjHAIU92.js +1 -0
  249. package/dist/dashboard/public/assets/css-BnMrqG3P.js +1 -0
  250. package/dist/dashboard/public/assets/cypher-C_CwsFkJ.js +1 -0
  251. package/dist/dashboard/public/assets/d-pRatUO7H.js +1 -0
  252. package/dist/dashboard/public/assets/diff-DbItnlRl.js +1 -0
  253. package/dist/dashboard/public/assets/dockerfile-BKs6k2Af.js +1 -0
  254. package/dist/dashboard/public/assets/dtd-DF_7sFjM.js +1 -0
  255. package/dist/dashboard/public/assets/dylan-DwRh75JA.js +1 -0
  256. package/dist/dashboard/public/assets/ebnf-CDyGwa7X.js +1 -0
  257. package/dist/dashboard/public/assets/ecl-Cabwm37j.js +1 -0
  258. package/dist/dashboard/public/assets/edges-96097737-BsffumDq.js +4 -0
  259. package/dist/dashboard/public/assets/eiffel-CnydiIhH.js +1 -0
  260. package/dist/dashboard/public/assets/elm-vLlmbW-K.js +1 -0
  261. package/dist/dashboard/public/assets/erDiagram-0228fc6a-BK-uOJy1.js +51 -0
  262. package/dist/dashboard/public/assets/erlang-BNw1qcRV.js +1 -0
  263. package/dist/dashboard/public/assets/factor-kuTfRLto.js +1 -0
  264. package/dist/dashboard/public/assets/fcl-Kvtd6kyn.js +1 -0
  265. package/dist/dashboard/public/assets/flowDb-c6c81e3f-BC8_H7l7.js +10 -0
  266. package/dist/dashboard/public/assets/flowDiagram-50d868cf-0XbjRISj.js +4 -0
  267. package/dist/dashboard/public/assets/flowDiagram-v2-4f6560a1-CXE3CwgW.js +1 -0
  268. package/dist/dashboard/public/assets/flowchart-elk-definition-6af322e1-CCvs3UPr.js +139 -0
  269. package/dist/dashboard/public/assets/forth-Ffai-XNe.js +1 -0
  270. package/dist/dashboard/public/assets/fortran-DYz_wnZ1.js +1 -0
  271. package/dist/dashboard/public/assets/ganttDiagram-a2739b55-Yp2gfoGL.js +257 -0
  272. package/dist/dashboard/public/assets/gas-Bneqetm1.js +1 -0
  273. package/dist/dashboard/public/assets/gherkin-heZmZLOM.js +1 -0
  274. package/dist/dashboard/public/assets/gitGraphDiagram-82fe8481-njx_NoNr.js +70 -0
  275. package/dist/dashboard/public/assets/graph-COR8Ljm7.js +1 -0
  276. package/dist/dashboard/public/assets/groovy-D9Dt4D0W.js +1 -0
  277. package/dist/dashboard/public/assets/haskell-Cw1EW3IL.js +1 -0
  278. package/dist/dashboard/public/assets/haxe-H-WmDvRZ.js +1 -0
  279. package/dist/dashboard/public/assets/http-DBlCnlav.js +1 -0
  280. package/dist/dashboard/public/assets/idl-BEugSyMb.js +1 -0
  281. package/dist/dashboard/public/assets/index-0abMV41b.js +1 -0
  282. package/dist/dashboard/public/assets/index-5325376f-cWsAocic.js +1 -0
  283. package/dist/dashboard/public/assets/index-BH121EUE.js +1 -0
  284. package/dist/dashboard/public/assets/index-BMLdkmFP.js +1 -0
  285. package/dist/dashboard/public/assets/index-BYgbrt4G.js +1 -0
  286. package/dist/dashboard/public/assets/index-BwFDzEd4.js +3 -0
  287. package/dist/dashboard/public/assets/index-CS7gsYFH.js +1 -0
  288. package/dist/dashboard/public/assets/index-Cc6cUpKS.js +1 -0
  289. package/dist/dashboard/public/assets/index-CgeymaoH.js +1 -0
  290. package/dist/dashboard/public/assets/index-Cl5FjFWx.js +1 -0
  291. package/dist/dashboard/public/assets/index-CnN2VPRa.js +1 -0
  292. package/dist/dashboard/public/assets/index-DDWkdUEb.js +1 -0
  293. package/dist/dashboard/public/assets/index-DLUjIeO9.js +1 -0
  294. package/dist/dashboard/public/assets/index-Dm3-5ZYh.js +319 -0
  295. package/dist/dashboard/public/assets/index-Ds4s2dDD.js +2 -0
  296. package/dist/dashboard/public/assets/index-DvrmwdIJ.js +1 -0
  297. package/dist/dashboard/public/assets/index-MTVs_iIW.js +7 -0
  298. package/dist/dashboard/public/assets/index-UGm8eYTB.js +1 -0
  299. package/dist/dashboard/public/assets/index-Zi39sM21.css +1 -0
  300. package/dist/dashboard/public/assets/index-iL66igAo.js +1 -0
  301. package/dist/dashboard/public/assets/infoDiagram-8eee0895-TQXQOcbQ.js +7 -0
  302. package/dist/dashboard/public/assets/init-Gi6I4Gst.js +1 -0
  303. package/dist/dashboard/public/assets/javascript-iXu5QeM3.js +1 -0
  304. package/dist/dashboard/public/assets/journeyDiagram-c64418c1-C7AIhJZ8.js +139 -0
  305. package/dist/dashboard/public/assets/julia-DuME0IfC.js +1 -0
  306. package/dist/dashboard/public/assets/katex-XbL3y5x-.js +261 -0
  307. package/dist/dashboard/public/assets/layout-BzInGx9g.js +1 -0
  308. package/dist/dashboard/public/assets/line-BvqpNAKs.js +1 -0
  309. package/dist/dashboard/public/assets/linear-CMco2PTv.js +1 -0
  310. package/dist/dashboard/public/assets/livescript-BwQOo05w.js +1 -0
  311. package/dist/dashboard/public/assets/lua-BgMRiT3U.js +1 -0
  312. package/dist/dashboard/public/assets/mathematica-DTrFuWx2.js +1 -0
  313. package/dist/dashboard/public/assets/mbox-CNhZ1qSd.js +1 -0
  314. package/dist/dashboard/public/assets/mindmap-definition-8da855dc-CeJT8t3A.js +415 -0
  315. package/dist/dashboard/public/assets/mirc-CjQqDB4T.js +1 -0
  316. package/dist/dashboard/public/assets/mllike-CXdrOF99.js +1 -0
  317. package/dist/dashboard/public/assets/modelica-Dc1JOy9r.js +1 -0
  318. package/dist/dashboard/public/assets/mscgen-BA5vi2Kp.js +1 -0
  319. package/dist/dashboard/public/assets/mumps-BT43cFF4.js +1 -0
  320. package/dist/dashboard/public/assets/nginx-DdIZxoE0.js +1 -0
  321. package/dist/dashboard/public/assets/nsis-LdVXkNf5.js +1 -0
  322. package/dist/dashboard/public/assets/ntriples-BfvgReVJ.js +1 -0
  323. package/dist/dashboard/public/assets/octave-Ck1zUtKM.js +1 -0
  324. package/dist/dashboard/public/assets/ordinal-Cboi1Yqb.js +1 -0
  325. package/dist/dashboard/public/assets/oz-BzwKVEFT.js +1 -0
  326. package/dist/dashboard/public/assets/pascal--L3eBynH.js +1 -0
  327. package/dist/dashboard/public/assets/path-CbwjOpE9.js +1 -0
  328. package/dist/dashboard/public/assets/perl-CdXCOZ3F.js +1 -0
  329. package/dist/dashboard/public/assets/pieDiagram-a8764435-DYvb2wsa.js +35 -0
  330. package/dist/dashboard/public/assets/pig-CevX1Tat.js +1 -0
  331. package/dist/dashboard/public/assets/powershell-CFHJl5sT.js +1 -0
  332. package/dist/dashboard/public/assets/properties-C78fOPTZ.js +1 -0
  333. package/dist/dashboard/public/assets/protobuf-ChK-085T.js +1 -0
  334. package/dist/dashboard/public/assets/pug-DeIclll2.js +1 -0
  335. package/dist/dashboard/public/assets/puppet-DMA9R1ak.js +1 -0
  336. package/dist/dashboard/public/assets/python-BuPzkPfP.js +1 -0
  337. package/dist/dashboard/public/assets/q-pXgVlZs6.js +1 -0
  338. package/dist/dashboard/public/assets/quadrantDiagram-1e28029f-DpKQgDsX.js +7 -0
  339. package/dist/dashboard/public/assets/r-B6wPVr8A.js +1 -0
  340. package/dist/dashboard/public/assets/requirementDiagram-08caed73-C_q-bfsF.js +52 -0
  341. package/dist/dashboard/public/assets/rpm-CTu-6PCP.js +1 -0
  342. package/dist/dashboard/public/assets/ruby-B2Rjki9n.js +1 -0
  343. package/dist/dashboard/public/assets/sankeyDiagram-a04cb91d-0kwrmzfI.js +8 -0
  344. package/dist/dashboard/public/assets/sas-B4kiWyti.js +1 -0
  345. package/dist/dashboard/public/assets/scheme-C41bIUwD.js +1 -0
  346. package/dist/dashboard/public/assets/sequenceDiagram-c5b8d532-i5S3JNF0.js +122 -0
  347. package/dist/dashboard/public/assets/shell-CjFT_Tl9.js +1 -0
  348. package/dist/dashboard/public/assets/sieve-C3Gn_uJK.js +1 -0
  349. package/dist/dashboard/public/assets/simple-mode-GW_nhZxv.js +1 -0
  350. package/dist/dashboard/public/assets/smalltalk-CnHTOXQT.js +1 -0
  351. package/dist/dashboard/public/assets/solr-DehyRSwq.js +1 -0
  352. package/dist/dashboard/public/assets/sparql-DkYu6x3z.js +1 -0
  353. package/dist/dashboard/public/assets/spreadsheet-BCZA_wO0.js +1 -0
  354. package/dist/dashboard/public/assets/sql-D0XecflT.js +1 -0
  355. package/dist/dashboard/public/assets/stateDiagram-1ecb1508-COE2ffbQ.js +1 -0
  356. package/dist/dashboard/public/assets/stateDiagram-v2-c2b004d7-DMAS8qJy.js +1 -0
  357. package/dist/dashboard/public/assets/stex-C3f8Ysf7.js +1 -0
  358. package/dist/dashboard/public/assets/styles-b4e223ce-M0Oa_txo.js +160 -0
  359. package/dist/dashboard/public/assets/styles-ca3715f6-DddhRVVB.js +207 -0
  360. package/dist/dashboard/public/assets/styles-d45a18b0-ByKhWZca.js +116 -0
  361. package/dist/dashboard/public/assets/stylus-B533Al4x.js +1 -0
  362. package/dist/dashboard/public/assets/svgDrawCommon-b86b1483-DIF6Vn69.js +1 -0
  363. package/dist/dashboard/public/assets/swift-BzpIVaGY.js +1 -0
  364. package/dist/dashboard/public/assets/tcl-DVfN8rqt.js +1 -0
  365. package/dist/dashboard/public/assets/textile-CnDTJFAw.js +1 -0
  366. package/dist/dashboard/public/assets/tiddlywiki-DO-Gjzrf.js +1 -0
  367. package/dist/dashboard/public/assets/tiki-DGYXhP31.js +1 -0
  368. package/dist/dashboard/public/assets/timeline-definition-faaaa080-DC1Bdpu_.js +61 -0
  369. package/dist/dashboard/public/assets/toml-Bm5Em-hy.js +1 -0
  370. package/dist/dashboard/public/assets/troff-wAsdV37c.js +1 -0
  371. package/dist/dashboard/public/assets/ttcn-CfJYG6tj.js +1 -0
  372. package/dist/dashboard/public/assets/ttcn-cfg-B9xdYoR4.js +1 -0
  373. package/dist/dashboard/public/assets/turtle-B1tBg_DP.js +1 -0
  374. package/dist/dashboard/public/assets/vb-CmGdzxic.js +1 -0
  375. package/dist/dashboard/public/assets/vbscript-BuJXcnF6.js +1 -0
  376. package/dist/dashboard/public/assets/velocity-D8B20fx6.js +1 -0
  377. package/dist/dashboard/public/assets/verilog-C6RDOZhf.js +1 -0
  378. package/dist/dashboard/public/assets/vhdl-lSbBsy5d.js +1 -0
  379. package/dist/dashboard/public/assets/webidl-ZXfAyPTL.js +1 -0
  380. package/dist/dashboard/public/assets/xquery-DzFWVndE.js +1 -0
  381. package/dist/dashboard/public/assets/xychartDiagram-f5964ef8-BIMyvG9y.js +7 -0
  382. package/dist/dashboard/public/assets/yacas-BJ4BC0dw.js +1 -0
  383. package/dist/dashboard/public/assets/z80-Hz9HOZM7.js +1 -0
  384. package/dist/dashboard/public/claude-icon-dark.svg +1 -0
  385. package/dist/dashboard/public/claude-icon.svg +1 -0
  386. package/dist/dashboard/public/index.html +16 -0
  387. package/dist/dashboard/settings-manager.d.ts +47 -0
  388. package/dist/dashboard/settings-manager.d.ts.map +1 -0
  389. package/dist/dashboard/settings-manager.js +180 -0
  390. package/dist/dashboard/settings-manager.js.map +1 -0
  391. package/dist/dashboard/task-review-runner.d.ts +42 -0
  392. package/dist/dashboard/task-review-runner.d.ts.map +1 -0
  393. package/dist/dashboard/task-review-runner.js +375 -0
  394. package/dist/dashboard/task-review-runner.js.map +1 -0
  395. package/dist/dashboard/utils.d.ts +31 -0
  396. package/dist/dashboard/utils.d.ts.map +1 -0
  397. package/dist/dashboard/utils.js +102 -0
  398. package/dist/dashboard/utils.js.map +1 -0
  399. package/dist/dashboard/watcher.d.ts +32 -0
  400. package/dist/dashboard/watcher.d.ts.map +1 -0
  401. package/dist/dashboard/watcher.js +173 -0
  402. package/dist/dashboard/watcher.js.map +1 -0
  403. package/dist/index.d.ts +13 -0
  404. package/dist/index.d.ts.map +1 -0
  405. package/dist/index.js +380 -0
  406. package/dist/index.js.map +1 -0
  407. package/dist/markdown/templates/design-template.md +96 -0
  408. package/dist/markdown/templates/product-template.md +51 -0
  409. package/dist/markdown/templates/requirements-template.md +50 -0
  410. package/dist/markdown/templates/structure-template.md +145 -0
  411. package/dist/markdown/templates/tasks-template.md +139 -0
  412. package/dist/markdown/templates/tech-template.md +99 -0
  413. package/dist/prompts/create-decomposition.d.ts +3 -0
  414. package/dist/prompts/create-decomposition.d.ts.map +1 -0
  415. package/dist/prompts/create-decomposition.js +122 -0
  416. package/dist/prompts/create-decomposition.js.map +1 -0
  417. package/dist/prompts/create-spec.d.ts +3 -0
  418. package/dist/prompts/create-spec.d.ts.map +1 -0
  419. package/dist/prompts/create-spec.js +93 -0
  420. package/dist/prompts/create-spec.js.map +1 -0
  421. package/dist/prompts/create-steering-doc.d.ts +3 -0
  422. package/dist/prompts/create-steering-doc.d.ts.map +1 -0
  423. package/dist/prompts/create-steering-doc.js +73 -0
  424. package/dist/prompts/create-steering-doc.js.map +1 -0
  425. package/dist/prompts/implement-task.d.ts +3 -0
  426. package/dist/prompts/implement-task.d.ts.map +1 -0
  427. package/dist/prompts/implement-task.js +173 -0
  428. package/dist/prompts/implement-task.js.map +1 -0
  429. package/dist/prompts/index.d.ts +15 -0
  430. package/dist/prompts/index.d.ts.map +1 -0
  431. package/dist/prompts/index.js +51 -0
  432. package/dist/prompts/index.js.map +1 -0
  433. package/dist/prompts/inject-spec-workflow-guide.d.ts +3 -0
  434. package/dist/prompts/inject-spec-workflow-guide.d.ts.map +1 -0
  435. package/dist/prompts/inject-spec-workflow-guide.js +47 -0
  436. package/dist/prompts/inject-spec-workflow-guide.js.map +1 -0
  437. package/dist/prompts/inject-steering-guide.d.ts +3 -0
  438. package/dist/prompts/inject-steering-guide.d.ts.map +1 -0
  439. package/dist/prompts/inject-steering-guide.js +51 -0
  440. package/dist/prompts/inject-steering-guide.js.map +1 -0
  441. package/dist/prompts/refresh-tasks.d.ts +3 -0
  442. package/dist/prompts/refresh-tasks.d.ts.map +1 -0
  443. package/dist/prompts/refresh-tasks.js +224 -0
  444. package/dist/prompts/refresh-tasks.js.map +1 -0
  445. package/dist/prompts/spec-status.d.ts +3 -0
  446. package/dist/prompts/spec-status.d.ts.map +1 -0
  447. package/dist/prompts/spec-status.js +75 -0
  448. package/dist/prompts/spec-status.js.map +1 -0
  449. package/dist/prompts/types.d.ts +13 -0
  450. package/dist/prompts/types.d.ts.map +1 -0
  451. package/dist/prompts/types.js +2 -0
  452. package/dist/prompts/types.js.map +1 -0
  453. package/dist/server.d.ts +17 -0
  454. package/dist/server.d.ts.map +1 -0
  455. package/dist/server.js +175 -0
  456. package/dist/server.js.map +1 -0
  457. package/dist/tools/__tests__/adversarial-response.test.d.ts +2 -0
  458. package/dist/tools/__tests__/adversarial-response.test.d.ts.map +1 -0
  459. package/dist/tools/__tests__/adversarial-response.test.js +144 -0
  460. package/dist/tools/__tests__/adversarial-response.test.js.map +1 -0
  461. package/dist/tools/__tests__/adversarial-review.test.d.ts +2 -0
  462. package/dist/tools/__tests__/adversarial-review.test.d.ts.map +1 -0
  463. package/dist/tools/__tests__/adversarial-review.test.js +318 -0
  464. package/dist/tools/__tests__/adversarial-review.test.js.map +1 -0
  465. package/dist/tools/__tests__/decomposition-guide.test.d.ts +2 -0
  466. package/dist/tools/__tests__/decomposition-guide.test.d.ts.map +1 -0
  467. package/dist/tools/__tests__/decomposition-guide.test.js +25 -0
  468. package/dist/tools/__tests__/decomposition-guide.test.js.map +1 -0
  469. package/dist/tools/__tests__/deferrals.test.d.ts +2 -0
  470. package/dist/tools/__tests__/deferrals.test.d.ts.map +1 -0
  471. package/dist/tools/__tests__/deferrals.test.js +151 -0
  472. package/dist/tools/__tests__/deferrals.test.js.map +1 -0
  473. package/dist/tools/__tests__/get-task-review.test.d.ts +2 -0
  474. package/dist/tools/__tests__/get-task-review.test.d.ts.map +1 -0
  475. package/dist/tools/__tests__/get-task-review.test.js +81 -0
  476. package/dist/tools/__tests__/get-task-review.test.js.map +1 -0
  477. package/dist/tools/__tests__/projectPath.test.d.ts +2 -0
  478. package/dist/tools/__tests__/projectPath.test.d.ts.map +1 -0
  479. package/dist/tools/__tests__/projectPath.test.js +187 -0
  480. package/dist/tools/__tests__/projectPath.test.js.map +1 -0
  481. package/dist/tools/__tests__/review-task.test.d.ts +2 -0
  482. package/dist/tools/__tests__/review-task.test.d.ts.map +1 -0
  483. package/dist/tools/__tests__/review-task.test.js +1097 -0
  484. package/dist/tools/__tests__/review-task.test.js.map +1 -0
  485. package/dist/tools/adversarial-response.d.ts +6 -0
  486. package/dist/tools/adversarial-response.d.ts.map +1 -0
  487. package/dist/tools/adversarial-response.js +206 -0
  488. package/dist/tools/adversarial-response.js.map +1 -0
  489. package/dist/tools/adversarial-review.d.ts +21 -0
  490. package/dist/tools/adversarial-review.d.ts.map +1 -0
  491. package/dist/tools/adversarial-review.js +491 -0
  492. package/dist/tools/adversarial-review.js.map +1 -0
  493. package/dist/tools/approvals.d.ts +14 -0
  494. package/dist/tools/approvals.d.ts.map +1 -0
  495. package/dist/tools/approvals.js +505 -0
  496. package/dist/tools/approvals.js.map +1 -0
  497. package/dist/tools/decomposition-guide.d.ts +6 -0
  498. package/dist/tools/decomposition-guide.d.ts.map +1 -0
  499. package/dist/tools/decomposition-guide.js +163 -0
  500. package/dist/tools/decomposition-guide.js.map +1 -0
  501. package/dist/tools/deferrals.d.ts +5 -0
  502. package/dist/tools/deferrals.d.ts.map +1 -0
  503. package/dist/tools/deferrals.js +229 -0
  504. package/dist/tools/deferrals.js.map +1 -0
  505. package/dist/tools/get-task-review.d.ts +5 -0
  506. package/dist/tools/get-task-review.d.ts.map +1 -0
  507. package/dist/tools/get-task-review.js +136 -0
  508. package/dist/tools/get-task-review.js.map +1 -0
  509. package/dist/tools/index.d.ts +5 -0
  510. package/dist/tools/index.d.ts.map +1 -0
  511. package/dist/tools/index.js +82 -0
  512. package/dist/tools/index.js.map +1 -0
  513. package/dist/tools/log-implementation.d.ts +5 -0
  514. package/dist/tools/log-implementation.d.ts.map +1 -0
  515. package/dist/tools/log-implementation.js +398 -0
  516. package/dist/tools/log-implementation.js.map +1 -0
  517. package/dist/tools/review-task.d.ts +58 -0
  518. package/dist/tools/review-task.d.ts.map +1 -0
  519. package/dist/tools/review-task.js +617 -0
  520. package/dist/tools/review-task.js.map +1 -0
  521. package/dist/tools/spec-status.d.ts +5 -0
  522. package/dist/tools/spec-status.d.ts.map +1 -0
  523. package/dist/tools/spec-status.js +235 -0
  524. package/dist/tools/spec-status.js.map +1 -0
  525. package/dist/tools/spec-workflow-guide.d.ts +5 -0
  526. package/dist/tools/spec-workflow-guide.d.ts.map +1 -0
  527. package/dist/tools/spec-workflow-guide.js +396 -0
  528. package/dist/tools/spec-workflow-guide.js.map +1 -0
  529. package/dist/tools/steering-guide.d.ts +5 -0
  530. package/dist/tools/steering-guide.d.ts.map +1 -0
  531. package/dist/tools/steering-guide.js +192 -0
  532. package/dist/tools/steering-guide.js.map +1 -0
  533. package/dist/types.d.ts +213 -0
  534. package/dist/types.d.ts.map +1 -0
  535. package/dist/types.js +13 -0
  536. package/dist/types.js.map +1 -0
  537. package/package.json +113 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,1013 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [3.0.0] - 2026-04-22
9
+
10
+ ### Notes
11
+ - Hard fork from upstream `Pimzino/spec-workflow-mcp@2.2.6`. No longer tracking upstream. See the README "Fork Notice" for background.
12
+ - `.spec-workflow/` state format and all tool / config / env-var identifiers remain wire-compatible with upstream 2.2.6 — existing user state migrates in place.
13
+
14
+ ### Added
15
+ - **Adversarial Review** — automated oppositional review of spec documents (requirements / design / tasks / steering / decomposition). Spawns fresh-context CLI subagents (defaults to Claude CLI; configurable for any LLM CLI) to generate and execute adversarial prompts. Dashboard trigger, in-card progress stepper, versioning / retry, review memory.
16
+ - **Spec Decomposition** — new required workflow phase that forces task breakdown before implementation. New `decomposition-guide` tool with dashboard integration and adversarial-review eligibility.
17
+ - **Deferred Decisions Tracker** — new `deferrals` tool and dashboard UI for recording decisions intentionally punted during spec authoring.
18
+ - **Task Review** — new `review-task` and `get-task-review` tools that spawn a fresh-context dashboard agent to review completed task implementations before they're marked done.
19
+
20
+ ### Changed
21
+ - Renamed npm package: `@pimzino/spec-workflow-mcp` → `@madmatt112org/spec-workflow-mcp`.
22
+ - Dashboard version banner now resolves against the new npm scope.
23
+ - VSCode extension publisher renamed `Pimzino` → `madmatt112` (see `vscode-extension/CHANGELOG.md`).
24
+ - Removed "Buy Me a Coffee" buttons from dashboard (desktop + mobile) and VSCode sidebar; dropped associated `support.*` / `header.support` locale keys across all 11 languages.
25
+ - Removed README showcase videos, multi-language translation links, star-history chart, and Pimzino-hosted promotional content.
26
+
27
+ ### Removed
28
+ - 90 non-English documentation translations (README + docs). The English docs are the single source of truth for the fork.
29
+ - Stale PR-draft files `pr-203-description.md` and `pr-204-description.md` (artefacts of the abandoned upstream PR attempt).
30
+
31
+ ---
32
+
33
+ _Entries below this line predate the fork and were authored by the upstream maintainer._
34
+
35
+ ## [2.2.6] - 2026-03-07
36
+
37
+ ### Changed
38
+ - **Task Logging Workflow Guidance** (PR #200) - Strengthened implementation instructions so AI agents are explicitly directed to record implementation details before marking tasks complete:
39
+ - Updated the `implement-task` prompt to make `log-implementation` a mandatory step before changing tasks from `[-]` to `[x]`
40
+ - Updated the `spec-workflow-guide` implementation phase to reinforce the same ordering and emphasize implementation logs as required workflow context for future agents
41
+
42
+ ## [2.2.5] - 2026-03-02
43
+
44
+ ### Security
45
+ - **Upgrade Fastify and Plugins** - Resolved all remaining npm audit vulnerabilities by upgrading from Fastify v4 to v5:
46
+ - `fastify` 4.29.1 -> 5.7.4 (fixes DoS via unbounded memory in sendWebStream, Content-Type header bypass)
47
+ - `@fastify/cors` 9.0.1 -> 11.2.0
48
+ - `@fastify/static` 7.0.4 -> 9.0.0
49
+ - `@fastify/websocket` 8.3.1 -> 11.2.0
50
+ - Updated WebSocket handler to use v11 API (socket-first signature instead of connection wrapper)
51
+ - Also resolved: `@isaacs/brace-expansion`, `@modelcontextprotocol/sdk`, `ajv`, `hono`, `markdown-it`, `minimatch`, `qs`, `rollup` vulnerabilities via `npm audit fix`
52
+
53
+ ## [2.2.4] - 2026-03-02
54
+
55
+ ### Security
56
+ - **Fix Arbitrary File Read Vulnerability** (Issue #201) - Prevented reading files outside the project directory via crafted `filePath` values in approval requests:
57
+ - Reject absolute paths and path traversal (`..`) sequences at three defense layers: MCP tool input, approval creation, and file path resolution
58
+ - Replace unsafe `join()` calls with `PathUtils.safeJoin()` which validates resolved paths stay within project bounds
59
+ - Add `PathUtils.validatePathWithinBases()` for verifying resolved paths against allowed directories
60
+ - Previously, an attacker with dashboard access could read arbitrary system files (e.g., `/etc/passwd`) by creating approval requests with absolute or traversal paths
61
+
62
+ ### Fixed
63
+ - **Empty Test Suite on Linux** - Case-sensitivity tests in `path-utils.test.ts` used a conditional `if` block that produced an empty `describe` on Linux, causing vitest to error. Replaced with `it.skipIf()` for proper test skipping
64
+ - **Missing `@mdx-js/mdx` Dependency** - Restored missing package to fix 4 cascading test suite failures
65
+
66
+ ## [2.2.3] - 2026-02-08
67
+
68
+ ### Added
69
+ - **MDX Pre-Render Validation for Approvals** (PR #197) - All markdown files are now validated for MDX compatibility before approval requests are accepted:
70
+ - Approval requests for any `.md` file are blocked if MDX compilation fails, preventing dashboard rendering issues
71
+ - Actionable error messages with line/column references and fix suggestions (e.g., escape `<` as `&lt;` or use inline code)
72
+ - Existing `tasks.md` structural validation still runs after MDX validation
73
+ - **`validate:mdx` CLI Script** - New `npm run validate:mdx` command for batch-scanning markdown files:
74
+ - Scans all `.md` files in `.spec-workflow/specs/` and `.spec-workflow/steering/` directories
75
+ - Supports `--spec <name>` to validate a single spec, `--file <path>` for a single file
76
+ - `--json` output mode for CI/automation integration
77
+ - **MDX Validator Module** - New `src/core/mdx-validator.ts` using `@mdx-js/mdx` compile for syntax validation with structured error reporting
78
+
79
+ ### Dependencies
80
+ - Added `@mdx-js/mdx` (^3.1.1) for MDX compilation-based validation
81
+
82
+ ## [2.2.2] - 2026-02-04
83
+
84
+ ### Fixed
85
+ - **NPX Entrypoint Execution** (PR #195) - Fixed CLI silently not executing when invoked via `npx`:
86
+ - Resolved symlinked paths using `realpathSync()` for proper entrypoint detection
87
+ - `process.argv[1]` returns symlink path while `import.meta.url` returns real path, causing comparison to fail
88
+ - Removed `process.stdin.resume()` in dashboard mode which could suspend the process in some shells
89
+
90
+ ### Added
91
+ - **Markdown Thematic Breaks** - Added support for horizontal rules (`---`) in the dashboard editor:
92
+ - Enabled `thematicBreakPlugin` in MDX editor
93
+ - Added toolbar button for inserting thematic breaks
94
+
95
+ ## [2.2.1] - 2026-02-04
96
+
97
+ ### Fixed
98
+ - **NPX Installation Error** (Issue #196) - Fixed "Cannot find package 'ajv'" error when installing via `npx`:
99
+ - Added `ajv`, `ajv-formats`, and `zod` as direct dependencies to ensure proper ESM module resolution
100
+ - These packages are required by `@modelcontextprotocol/sdk` but npm's dependency hoisting in npx environments could fail to resolve them correctly
101
+ - The fix ensures the MCP SDK's validation modules can always find their dependencies regardless of installation method
102
+
103
+ ## [2.2.0] - 2026-02-03
104
+
105
+ ### Added
106
+ - **Git Worktree Support** (PR #194) - Separate worktree identity from shared `.spec-workflow` root:
107
+ - Each git worktree now registers as its own project identity in the dashboard
108
+ - Project labels reflect worktree context with `repo · worktree` naming format
109
+ - `.spec-workflow` remains shared by default across worktrees (existing behavior preserved)
110
+ - Artifact/approval content resolution now prioritizes workspace/worktree paths with workflow root fallback
111
+ - New `--no-shared-worktree-specs` CLI flag to opt-out of sharing and use workspace-local `.spec-workflow`
112
+ - Added `resolveGitWorkspaceRoot()` helper using `git rev-parse --show-toplevel`
113
+ - Backward compatible: legacy registry entries without `workflowRootPath` are normalized automatically
114
+
115
+ ### Added (Testing)
116
+ - Comprehensive test coverage for worktree functionality:
117
+ - Unit tests for CLI argument parsing, git-utils, project-registry, and approval-storage path resolution
118
+ - Integration tests for multi-server approval content resolution
119
+ - E2E Playwright tests for no-shared worktree dashboard flow
120
+ - New `test:e2e:worktree` npm script with dedicated Playwright config
121
+
122
+ ## [2.1.12] - 2026-01-29
123
+
124
+ ### Added
125
+ - **Approval Deeplinks** (Issue #192) - Approval requests now return direct URLs to specific approvals:
126
+ - Dashboard URL includes approval ID as query parameter: `/approvals?id={approvalId}`
127
+ - Clicking a deeplink auto-scrolls to the specific approval and highlights it with an amber ring
128
+ - Approval is automatically expanded when navigating via deeplink
129
+ - Improves workflow when running multiple AI agents in parallel
130
+
131
+ ## [2.1.11] - 2026-01-27
132
+
133
+ ### Fixed
134
+ - **Subdirectory Path Resolution** (Issue #189) - Fixed "Path traversal detected" error when starting the MCP server from a subdirectory within a git repository:
135
+ - `git rev-parse --git-common-dir` returns relative paths (e.g., `../../.git`) when run from subdirectories
136
+ - Updated `resolveGitRoot()` to use `path.resolve()` for converting relative paths to absolute paths
137
+ - Absolute paths (Unix and Windows) are returned unchanged to preserve existing worktree behavior
138
+ - Added test coverage for relative path scenarios
139
+
140
+ - **Task Prompt Spec Mismatch** (Issue #191) - Fixed copied task prompts using wrong spec name when switching between specs:
141
+ - When selecting a spec without tasks, stale tasks from the previous spec remained displayed
142
+ - Copying the prompt would incorrectly use the new spec name with old task data
143
+ - Now clears task data immediately when switching specs to prevent stale data display
144
+
145
+ ## [2.1.10] - 2026-01-24
146
+
147
+ ### Added
148
+ - **Bulk Approval Management** (PR #181) - New batch selection and action system for managing multiple approval requests:
149
+ - **Selection Mode** - Toggle to enable multi-select with visual checkboxes on approval items
150
+ - **Select All / Deselect All** - Quick controls to select or clear all visible approval items
151
+ - **Batch Actions** - Approve All or Reject All selected items in a single operation
152
+ - **Undo Operations** - 30-second undo window with visual progress bar countdown after batch actions
153
+ - **Continue-on-Error** - Batch operations process all items and report individual failures without stopping
154
+ - **Security Controls** - Batch size limit of 100 items, ID validation with alphanumeric regex pattern
155
+ - **Full i18n Support** - Translations for all 11 supported locales
156
+
157
+ - **Custom Typography System** - Added locally-bundled fonts for improved readability and visual consistency:
158
+ - **Inter** (400, 500, 600, 700 weights) - Modern sans-serif for UI text, designed for screens
159
+ - **JetBrains Mono** (400, 500, 700 weights) - Developer-focused monospace for code and specs
160
+ - Fonts are bundled locally in the build (no CDN dependency)
161
+ - Added `font-display: swap` for optimal loading performance
162
+ - Added `unicode-range` for efficient font subsetting
163
+ - Updated `--font-sans` and `--font-mono` CSS variables with new fonts and fallback stack
164
+
165
+ ### Changed
166
+ - **Utility Consolidation** - Eliminated duplicate utility functions across the codebase:
167
+ - Created shared `dateUtils.ts` with `formatDate()` and `formatDistanceToNow()` functions
168
+ - Consolidated 5 duplicate `formatDate` implementations from SpecsPage, TasksPage, LogsPage, ApprovalsPage, and SteeringPage
169
+ - Created shared `colorUtils.ts` for VSCode webview with `isValidHex()` and `hexToRgba()` functions
170
+ - Removed duplicate color validation logic from CommentModal component
171
+
172
+ - **Design Token Migration** - Replaced hardcoded Tailwind colors with CSS variable design tokens:
173
+ - Updated DashboardStatistics to use `--text-primary`, `--text-secondary`, `--text-muted` tokens
174
+ - Updated SideBySideView to use `--surface-inset`, `--surface-panel`, `--border-default` tokens
175
+ - Updated ProjectDropdown to use design tokens for all gray color variants
176
+ - Improved theming consistency between light and dark modes
177
+
178
+ - **ApprovalEditorService Refactor** - Extracted hardcoded decoration colors into constants:
179
+ - Created `APPROVAL_STATUS_COLORS` constant for pending, approved, rejected, needs-revision, and commented states
180
+ - Added `DECORATION_BORDER_RADIUS` constant for consistent styling
181
+
182
+ - **Build Script Improvement** - Updated `build:dashboard` script to automatically run `copy-static`:
183
+ - Ensures dashboard builds are always copied to the correct serving location (`dist/dashboard/public/`)
184
+ - Prevents issues where dashboard changes don't appear after rebuild
185
+
186
+ ### Fixed
187
+ - **Changelog Modal Rendering** - Fixed the changelog modal displaying blank content when clicking the version badge:
188
+ - Replaced complex MDXEditor component with lightweight custom markdown renderer
189
+ - Added proper rendering for headers, bullet lists, nested lists, and bold text
190
+ - Uses design token CSS variables for consistent theming in light/dark modes
191
+
192
+ ## [2.1.9] - 2026-01-23
193
+
194
+ ### Added
195
+ - **Git Worktree Support** (GitHub Issue #187) - Specs are now shared across git worktrees:
196
+ - Auto-detects git worktrees and stores specs in the main repository's `.spec-workflow/` directory
197
+ - All worktrees of the same repository share the same specs automatically
198
+ - New `SPEC_WORKFLOW_SHARED_ROOT` environment variable to override automatic detection
199
+ - Silent fallback for non-git directories or when git is unavailable
200
+ - Logs "Git worktree detected. Using main repo: <path>" when worktree is detected
201
+
202
+ - **MCP Tool Annotations** (PR #176) - Added semantic metadata annotations to all 5 tools for improved LLM tool understanding:
203
+ - `readOnlyHint: true` for read-only tools (`spec-workflow-guide`, `steering-guide`, `spec-status`)
204
+ - `destructiveHint: true` for state-modifying tools (`approvals`, `log-implementation`)
205
+ - `title` annotations for human-readable tool display names
206
+ - Enables MCP clients like Claude Code to auto-approve read-only tools and prompt for confirmation on destructive operations
207
+
208
+ ### Changed
209
+ - **Design Tokens Refactor** - Replaced hardcoded colors and styles with design tokens for improved consistency:
210
+ - Updated components including App, ApprovalsAnnotator, KanbanBoard, and others
211
+ - New CSS variables for background, text, and border colors
212
+ - Enhanced visual elements such as buttons, modals, and status indicators
213
+
214
+ ### Fixed
215
+ - **Comments Section Height** - Improved height and layout of the Comments & Feedback section:
216
+ - Increased height from 50vh to 70vh for better visibility
217
+ - Added minimum height constraints to prevent collapsing to content height
218
+ - Comments section now properly stretches to match the annotations panel height
219
+
220
+ ### Security
221
+ - **Dependency Updates** - Fixed 8 vulnerabilities (6 high, 1 moderate, 1 low) via `npm audit fix`:
222
+ - `@modelcontextprotocol/sdk` - ReDoS vulnerability (GHSA-8r9q-7v3j-jr4g)
223
+ - `@remix-run/router` / `react-router` / `react-router-dom` - XSS via Open Redirects (GHSA-2w69-qvjg-hvjx)
224
+ - `diff` - DoS vulnerability in parsePatch/applyPatch (GHSA-73rr-hh4g-fpgx)
225
+ - `hono` - JWT algorithm confusion vulnerabilities (GHSA-3vhc-576x-3qv4, GHSA-f67f-6cw9-8mq4)
226
+ - `lodash-es` - Prototype Pollution in unset/omit functions (GHSA-xxjr-mmjv-4gpg)
227
+ - `qs` - DoS via memory exhaustion in arrayLimit (GHSA-6rw7-vpxm-498p)
228
+
229
+ ## [2.1.8] - 2026-01-22
230
+
231
+ ### Added
232
+ - **Side-by-Side Annotation View** (GitHub Issue #179) - New view mode in the Approvals tab that displays source markdown and rendered preview side-by-side:
233
+ - Left panel shows source text with full annotation capability
234
+ - Right panel shows live rendered markdown preview using MDXEditorWrapper
235
+ - Bidirectional scroll synchronization between panels with toggle to enable/disable
236
+ - Full-width layout with comments section stacked below (not sidebar)
237
+ - Responsive design: panels stack vertically on mobile, side-by-side on tablet+
238
+ - New mode button in the Approvals tab mode switcher alongside Preview and Annotate
239
+
240
+ - **Edit Button on Comment Cards** - Added edit button (pencil icon) to comment cards in the Comments & Feedback section for quick access to edit annotations
241
+
242
+ ### Changed
243
+ - **Text Annotation Library Integration** - Replaced manual highlight implementation with `react-text-annotate-blend` library:
244
+ - More reliable text selection and offset calculation
245
+ - Consistent highlighting between Annotate and Side-by-Side modes
246
+ - Handles edge cases (line endings, special characters) automatically
247
+ - Shows annotation tag/ID inline with highlighted text
248
+
249
+ - **Comment Card Redesign** - Improved comment card layout following design principles:
250
+ - Clean card structure with header (type badge + actions) and body sections
251
+ - Full comment ID displayed on separate line with monospace styling
252
+ - Full highlighted text displayed without truncation (was limited to 80 chars)
253
+ - Full comment text displayed without truncation
254
+ - Better visual hierarchy with proper spacing and typography
255
+ - White card background with subtle border for cleaner appearance
256
+
257
+ ### Fixed
258
+ - **Highlight Click Handler** - Fixed clicking on highlights to open the edit modal:
259
+ - Improved mark click detection using background color matching
260
+ - Added fallback text-based matching for edge cases
261
+ - Works reliably in both Annotate and Side-by-Side modes
262
+
263
+ ### Dependencies
264
+ - Added `react-text-annotate-blend` (^1.2.0) - React 18 compatible text annotation library
265
+
266
+ ## [2.1.7] - 2025-12-20
267
+
268
+ ### Fixed
269
+ - **Missing ws Package Dependency** - Fixed `ERR_MODULE_NOT_FOUND` error when running the package via npx:
270
+ - Added `ws` package (^8.18.0) to dependencies (was missing, only @types/ws was in devDependencies)
271
+ - The ws package is required at runtime by `dashboard/multi-server.ts` for WebSocket functionality
272
+ - Users installing via `npx @pimzino/spec-workflow-mcp@latest` will now have all required dependencies
273
+
274
+ ## [2.1.6] - 2025-12-19
275
+
276
+ ### Fixed
277
+ - **Approvals Tool Path Translation Error** (PR #173) - Fixed error when `PathUtils.translatePath` is called with undefined or null values in the approvals tool:
278
+ - Added defensive checks to `safeTranslatePath` helper function to guard against undefined/null input paths
279
+ - Prevents runtime errors when path translation encounters missing or invalid path values
280
+ - Improves stability of the approvals workflow on cross-platform environments
281
+
282
+ ## [2.1.5] - 2025-12-16
283
+
284
+ ### Fixed
285
+ - **Codex CLI Transport Closed on Approvals** (PR #171) - Fixed intermittent "Transport closed" errors when using Codex CLI during approval workflows:
286
+ - Changed `console.log` to `console.error` in approval snapshot creation to prevent stdout contamination
287
+ - MCP protocol requires stdout to be reserved exclusively for JSON-RPC communication
288
+ - Diagnostic messages now correctly use stderr, preventing JSON parsing errors in MCP clients
289
+
290
+ ## [2.1.4] - 2025-12-14
291
+
292
+ ### Fixed
293
+ - **Dashboard Annotation Word-Level Highlighting** (fixes #169) - Fixed issue where annotating text in the Dashboard Approvals tab would highlight all occurrences of the same text instead of just the specific selection:
294
+ - Added `startOffset` and `endOffset` fields to capture exact character positions when selecting text for annotation
295
+ - Rewrote `renderContentWithAnnotations()` to use position-based highlighting instead of global regex text-matching
296
+ - Updated modal state and comment creation to preserve and pass position data
297
+ - Existing annotations without position data fall back to highlighting the first occurrence only (backward compatible)
298
+
299
+ ## [2.1.3] - 2025-12-10
300
+
301
+ ### Fixed
302
+ - **Dashboard Startup Crash for Users with Older Data Files** (fixes #168) - Fixed `Cannot read properties of undefined (reading 'filter')` error that prevented dashboard startup for users upgrading from older versions:
303
+ - Added backward compatibility guard in `project-registry.ts` to ensure `instances` array exists on all registry entries
304
+ - Added backward compatibility guard in `settings-manager.ts` to ensure `automationJobs` array exists in settings
305
+ - Users with older `activeProjects.json` or `settings.json` files from previous versions can now start the dashboard without errors
306
+
307
+ ## [2.1.2] - 2025-12-10
308
+
309
+ ### Fixed
310
+ - **Dashboard JS/CSS Loading Fails with Custom Port** (fixes #167) - Fixed issue where the dashboard would fail to load JavaScript and CSS assets when using a custom port (e.g., `--port 5002`):
311
+ - CORS `allowedOrigins` was hardcoded to port 5000, blocking requests from other ports
312
+ - CSP `connect-src` directive was missing WebSocket origins for custom ports
313
+ - Added `generateAllowedOrigins(port)` helper to dynamically generate allowed origins based on the actual port
314
+ - Updated `getSecurityConfig()` to accept port parameter and generate port-aware CORS configuration
315
+ - Updated `createSecurityHeadersMiddleware()` to include dynamic `connect-src` for WebSocket connections
316
+ - Security configuration now correctly displays the actual allowed origins on startup
317
+
318
+ ## [2.1.1] - 2025-12-09
319
+
320
+ ### Added
321
+ - **Enterprise Security Features** (PR #165) - Comprehensive security controls for corporate environments:
322
+ - **Localhost Binding** - Dashboard binds to `127.0.0.1` by default, preventing network exposure
323
+ - **Rate Limiting** - 120 requests/minute per client with automatic cleanup to prevent abuse
324
+ - **Audit Logging** - Structured JSON logs with timestamp, actor, action, and result for compliance
325
+ - **Security Headers** - X-Content-Type-Options, X-Frame-Options, X-XSS-Protection, CSP, Referrer-Policy
326
+ - **CORS Protection** - Restricted to localhost origins by default
327
+ - **Network Security Validation** - Explicit opt-in required for non-localhost binding (`SPEC_WORKFLOW_ALLOW_EXTERNAL_ACCESS=true`)
328
+
329
+ - **Docker Security Hardening** (PR #165) - Enhanced container security:
330
+ - Non-root user execution (`node` user)
331
+ - Read-only root filesystem
332
+ - Dropped all Linux capabilities (`cap_drop: ALL`)
333
+ - No privilege escalation (`no-new-privileges`)
334
+ - Resource limits (CPU/memory) to prevent DoS
335
+ - Proper signal handling with `dumb-init`
336
+ - New `Dockerfile.prebuilt` for environments with limited Docker memory
337
+
338
+ - **New Configuration Options** - Environment variables for security control:
339
+ - `SPEC_WORKFLOW_BIND_ADDRESS` - IP address to bind to (default: `127.0.0.1`)
340
+ - `SPEC_WORKFLOW_ALLOW_EXTERNAL_ACCESS` - Explicit opt-in for network exposure
341
+ - `SPEC_WORKFLOW_RATE_LIMIT_ENABLED` - Enable/disable rate limiting
342
+ - `SPEC_WORKFLOW_CORS_ENABLED` - Enable/disable CORS protection
343
+
344
+ - **Health Check Endpoint** - New `/api/test` endpoint for monitoring dashboard availability
345
+
346
+ - **Docker Test Script** - Comprehensive `containers/test-docker.sh` script to validate security configurations
347
+
348
+ ### Changed
349
+ - Docker Compose now defaults to localhost-only port binding (`127.0.0.1:5000:5000`)
350
+ - Dashboard displays security configuration status on startup
351
+ - Improved error messages for security configuration issues
352
+
353
+ ### Fixed
354
+ - **Task Notification System Not Working** - Fixed task completion and in-progress notifications not appearing. The notification system now uses WebSocket event data directly instead of making separate API calls, eliminating race conditions and timing issues that prevented notifications from triggering.
355
+
356
+ - **Templates Shipped with CRLF Line Endings** (fixes #166) - Fixed issue where template files were shipped with Windows-style CRLF line endings, causing git to detect them as modified on Linux/WSL/macOS systems:
357
+ - Updated `.gitattributes` to enforce LF line endings for markdown files (`*.md text eol=lf`)
358
+ - Modified `scripts/copy-static.cjs` to normalize line endings to LF during the build process
359
+ - Converted all template files in `src/markdown/templates/` from CRLF to LF
360
+ - Templates are now cross-platform compatible and won't trigger spurious git changes
361
+
362
+ - **Self-Healing Project Registry** (fixes #164) - Fixed rapid project add/remove cycles when Claude Code recycles MCP processes:
363
+ - **Multi-Instance Support** - Projects now track multiple MCP server instances (PIDs) simultaneously, allowing unlimited concurrent sessions per project
364
+ - **Self-Healing Registration** - When an MCP server starts, it automatically cleans up dead PIDs from crashed sessions and reuses the project slot
365
+ - **PID-Specific Cleanup** - MCP servers now only unregister their own instance on shutdown, leaving other active instances intact
366
+ - **Removed Aggressive Cleanup** - Dashboard no longer runs periodic 30-second cleanup; MCP servers manage their own lifecycle
367
+ - **PID Visibility** - Project dropdown now shows PID for single instances or instance count for multiple instances
368
+
369
+ - **Dashboard Disconnection During Approval Process** (fixes #162) - Fixed critical stability issue where dashboard WebSocket connections would disconnect when AI clients (e.g., Codex CLI) modified documents during the approval workflow:
370
+ - **Approval Storage Debouncing** - Added 500ms debounce for approval file change events to prevent event flooding when approvals are rapidly created/modified
371
+ - **Spec Broadcast Debouncing** - Added 300ms debounce for spec update broadcasts to coalesce rapid file changes into a single UI update
372
+ - **WebSocket Heartbeat Monitoring** - Added ping/pong heartbeat mechanism to detect and clean up stale connections proactively
373
+ - **File Watcher Debouncing** - Implemented 500ms debounce for spec file change events to prevent event flooding during rapid document modifications
374
+ - **File Stability Detection** - Added file size stability checking before processing changes, preventing partial file reads during write operations
375
+ - **Graceful Connection Cleanup** - Improved error handling in broadcast methods with scheduled cleanup to avoid modifying collections during iteration
376
+ - **Exponential Backoff Reconnection** - Frontend WebSocket now uses exponential backoff (1s to 30s) for reconnection attempts instead of fixed 2s intervals
377
+ - **Clean Disconnect Handling** - WebSocket client no longer attempts reconnection on clean close events (codes 1000, 1001)
378
+
379
+ ## [2.1.0] - 2025-12-03
380
+
381
+ ### Fixed
382
+ - **Unsaved Changes Modal Translations** - Added missing translations for the unsaved changes confirmation modal in Steering and Spec document editors across all 11 supported languages (Arabic, German, English, Spanish, French, Italian, Japanese, Korean, Portuguese, Russian, Chinese)
383
+ - **Improved Diff Visibility in Changes Tab** (fixes #158) - Fixed issue where adding a single line would cause all subsequent text to appear as changed:
384
+ - Replaced naive index-based line comparison with proper `diffLines` algorithm from the `diff` library
385
+ - Now correctly identifies only the actual changed lines, not positional differences
386
+ - Provides accurate visual diff representation matching user expectations
387
+
388
+ ### Added
389
+ - **MDX Editor Integration** - Replaced basic markdown textareas with a full-featured rich text editor powered by MDXEditor:
390
+ - **Rich Text Editing** - WYSIWYG editing experience with live preview for markdown content
391
+ - **Toolbar Controls** - Full toolbar with formatting options (bold, italic, underline, headings, lists, links, tables, code blocks)
392
+ - **Source Mode Toggle** - Switch between rich text and raw markdown source editing with a single click
393
+ - **Code Block Support** - Syntax-highlighted code blocks with CodeMirror integration and language selector dropdown
394
+ - **Mermaid Diagram Support** - Render Mermaid diagrams directly in the editor with live preview
395
+ - **Dark Mode Support** - Complete dark theme styling for all editor components including:
396
+ - Editor content area and toolbar
397
+ - Source mode (CodeMirror) with proper syntax highlighting
398
+ - Code blocks with themed gutters, line numbers, and selection
399
+ - Dropdown menus and language selectors (scrollable with custom scrollbars)
400
+ - Popups and dialogs
401
+ - **Keyboard Shortcuts** - Ctrl+S to save, standard text formatting shortcuts
402
+ - **Auto-save Status** - Visual indicators for saving, saved, and unsaved changes states
403
+ - **Character/Line Count** - Real-time statistics in the editor footer
404
+ - Applied to both Steering Documents and Spec Documents editing modals
405
+
406
+ ### Changed
407
+ - Steering document modals now show the editor even for empty/new documents, allowing users to create content directly
408
+
409
+ ## [2.0.11] - 2025-11-28
410
+
411
+ ### Changed
412
+ - **Flexible Approval Deletion** (PR #119) - Modified approval deletion logic to allow deleting approvals in any non-pending status:
413
+ - Can now delete approvals with status: `approved`, `rejected`, or `needs-revision`
414
+ - Only `pending` approvals are blocked from deletion (still awaiting review)
415
+ - Improves flexibility for cleanup operations while preventing accidental deletion of approvals still awaiting review
416
+ - Updated error messages and next steps guidance to clarify the new behavior
417
+ - Updated documentation in TOOLS-REFERENCE.md and api-reference.md
418
+
419
+ ## [2.0.10] - 2025-11-26
420
+
421
+ ### Added
422
+ - **Claude Code Plugin Support** (PR #121) - Added official Claude Code plugin configuration for easy installation from the Claude marketplace:
423
+ - Two plugin variants available: `spec-workflow-mcp` (base) and `spec-workflow-mcp-with-dashboard` (auto-starts dashboard)
424
+ - Plugins use `@latest` tag for automatic updates to newest releases
425
+ - Added `npm run sync:plugin-version` script to keep plugin versions in sync with package.json
426
+ - Added `npm run check:plugin-version` for CI validation of version consistency
427
+ - **`--no-open` Flag for Dashboard** (PR #147, fixes #145) - Added new command-line flag to prevent automatic browser opening when starting the dashboard:
428
+ - Use `spec-workflow-mcp --dashboard --no-open` to start the dashboard without launching the browser
429
+ - Useful in restricted Windows environments where firewall or antivirus software blocks browser launches from processes
430
+ - Prevents "failed to start dashboard: spawn EPERM" errors for users without administrator privileges
431
+ - Dashboard URL is still printed to console so users can manually navigate to it
432
+ - **Sandbox Environment Support** (fixes #144) - Added `SPEC_WORKFLOW_HOME` environment variable to support sandboxed MCP clients like Codex CLI:
433
+ - Allows overriding the default global state directory (`~/.spec-workflow-mcp`) to a writable location
434
+ - Essential for sandboxed environments where `$HOME` is read-only (e.g., Codex CLI with `sandbox_mode=workspace-write`)
435
+ - Supports both absolute paths and relative paths (resolved against current working directory)
436
+ - Added helpful error messages when permission errors occur, suggesting the `SPEC_WORKFLOW_HOME` workaround
437
+ - Updated Docker configuration to use `SPEC_WORKFLOW_HOME` by default
438
+ - Usage: `SPEC_WORKFLOW_HOME=/workspace/.spec-workflow-mcp npx spec-workflow-mcp /workspace`
439
+
440
+ ### Fixed
441
+ - **Archived Specs Display Content Correctly** (PR #146) - Fixed critical bug where archived specs were not displaying content correctly in the dashboard:
442
+ - Added new API endpoint `/api/projects/:projectId/specs/:name/all/archived` that reads documents from the archive path (`.spec-workflow/archive/specs/{name}/`) instead of the active specs path. This was missed during the multi-project dashboard implementation.
443
+ - **Tasks.md Format Validation** (fixes #151) - Added validation to ensure tasks.md follows the required format before approval:
444
+ - New `task-validator.ts` module validates checkbox format (`- [ ]`), task IDs, and metadata delimiters
445
+ - Validation runs automatically when requesting approval for tasks.md files
446
+ - Blocks approval if format errors are found, with detailed error messages and fix suggestions
447
+ - Prevents dashboard from failing to track task status due to malformed task files
448
+ - Warnings for missing underscore delimiters on metadata fields (`_Requirements:_`, `_Leverage:_`, `_Prompt:_`)
449
+
450
+ ## [2.0.9] - 2025-11-19
451
+
452
+ ### Fixed
453
+ - **Republished Clean Package** - Version 2.0.8 accidentally included uncommitted frontend changes. This version contains only the committed code from PR #143.
454
+
455
+ ## [2.0.8] - 2025-11-18
456
+
457
+ ### Fixed
458
+ - **Dashboard "No Projects Available" Error After Spec Edits** (PR #143, fixes #142) - Fixed critical bug where editing spec documents caused the dashboard to show "No Projects Available" and the MCP client to report "Transport closed" errors:
459
+ - Added error handling to async event handlers in `multi-server.ts` that were causing unhandled promise rejections
460
+ - Added error handlers to all `chokidar` file watchers to prevent watcher crashes
461
+ - Improved error logging with contextual messages for easier debugging
462
+ - System now gracefully handles transient errors during file operations instead of crashing
463
+ - WebSocket connections remain stable during spec document edits
464
+ - No session reload required after editing spec documents
465
+ - Added 7 comprehensive tests to verify watcher error handling and prevent regressions
466
+
467
+ ## [2.0.7] - 2025-11-10
468
+
469
+ ### BREAKING CHANGES
470
+ - **Removed `get-implementation-logs` tool** - This tool is no longer available. AI agents should use native tools (grep/ripgrep) and Read to search implementation logs instead.
471
+
472
+ ### Fixed
473
+ - **Volume Control Regression** (PR #141) - Fixed critical volume control regression from NotificationProvider context split through 6 progressive commits:
474
+ 1. Fixed volume icon always showing as muted by updating VolumeControl component to use both `useNotifications()` (actions) and `useNotificationState()` (state)
475
+ 2. Fixed stale closure bug where `handleTaskUpdate` callback had stale reference to `playNotificationSound`, and changed volume/sound settings storage from sessionStorage to localStorage for persistence
476
+ 3. Made audio fade-out proportional to volume level instead of fixed value
477
+ 4. Fixed Web Audio API gain timing issues with direct value assignment and linear ramping
478
+ 5. **Replaced Web Audio API with Howler.js** - After 4 failed attempts to fix volume control with raw Web Audio API, switched to industry-standard Howler.js library (546k weekly downloads, MDN-recommended) for reliable, simple audio playback with real MP3 files
479
+ 6. **Fixed sound not playing at all** - Integrated `playNotificationSound()` into `showNotification()` function so all notifications (task completion, status changes, approvals) automatically play sound at user-configured volume level
480
+ - **Dashboard Task Status Refresh** (PR #140) - Fixed critical "page reload" issue when updating task status:
481
+ - Removed redundant `reloadAll()` call causing unnecessary full page refreshes
482
+ - **Split ApiProvider context** into ApiDataContext (data) and ApiActionsContext (stable functions) to prevent unnecessary re-renders when data updates
483
+ - Added deep equality checks in websocket handlers before updating state
484
+ - Improved task list comparison from index-based to Map-based for robustness
485
+ - Result: Task status updates are now smooth and instant without scroll position loss or page disruption
486
+ - **Docker Implementation** (PR #135) - Fixed Docker build failure and updated configuration:
487
+ - Removed invalid `COPY --from=builder /app/src/locales` command (locales are bundled in dashboard build)
488
+ - Updated Dockerfile to build from local source instead of git clone
489
+ - Fixed docker-compose.yml build context and port mappings (3000 → 5000)
490
+ - Added comprehensive documentation in `containers/README.md` and `containers/DOCKER_USAGE.md`
491
+ - Added `.dockerignore`, `containers/.env.example`, and updated `containers/example.mcp.json`
492
+
493
+ ### Changed
494
+ - **Implementation Logs Format Migration** (PRs #136, #137, #138) - Logs are now stored as individual markdown files instead of a single JSON file for improved scalability and direct agent accessibility.
495
+ - Old format: `.spec-workflow/specs/{spec-name}/implementation-log.json`
496
+ - New format: `.spec-workflow/specs/{spec-name}/Implementation Logs/*.md`
497
+ - Implementation logs are automatically migrated from JSON to markdown format on server startup.
498
+ - Updated all documentation and prompts to guide agents to use grep/ripgrep commands to search implementation logs.
499
+ - Updated VSCode extension file watcher to monitor markdown files in Implementation Logs directories.
500
+ - Updated dashboard and multi-server API endpoints to work with the new markdown format.
501
+ - Added validation for taskId and idValue in markdown log parser to match VSCode extension behavior.
502
+
503
+ ### Added
504
+ - **Automatic Migration System** - New `ImplementationLogMigrator` utility class handles automatic conversion of existing JSON logs to markdown format.
505
+ - **Migration Logging** - Migration process is logged to `~/.spec-workflow-mcp/migration.log` for debugging and transparency.
506
+ - **Howler.js Audio Library** - Added howler@2.2.4 dependency for reliable, cross-browser notification sounds with proper volume control.
507
+
508
+ ### Improved
509
+ - **Agent Discovery** - AI agents can now directly grep implementation logs without special tool calls, making discovery faster and more intuitive.
510
+ - **Log Readability** - Markdown format is more human-readable and can be directly edited if needed.
511
+ - **Scalability** - Individual markdown files prevent performance degradation when dealing with thousands of implementation logs.
512
+ - **Dashboard Performance** - Context splitting and deep equality checks prevent unnecessary re-renders, making the dashboard significantly more responsive.
513
+ - **Audio Quality** - Notification sounds now use real MP3 files (via Howler.js) instead of synthetic oscillator beeps for better user experience.
514
+
515
+ ## [2.0.6] - 2025-11-08
516
+
517
+ ### Changed
518
+ - Removed creation of `config.example.toml` file during workspace initialization as it is no longer needed or used.
519
+
520
+ ## [2.0.5] - 2025-11-08
521
+
522
+ ### Fixed
523
+ - Fixed tools not respecting the project directory specified at server startup. Tools now use the server context's `projectPath` by default instead of requiring it as a mandatory argument.
524
+ - AI agents no longer need to pass `projectPath` to tools, preventing files from being created in the wrong directory (e.g., current working directory instead of the configured project directory).
525
+ - Updated `spec-status`, `get-implementation-logs`, `log-implementation`, and `approvals` tools to use context fallback pattern.
526
+ - Made `projectPath` optional in all tool input schemas while maintaining backward compatibility for explicit overrides.
527
+
528
+ ## [2.0.4] - 2025-11-08
529
+
530
+ ### Fixed
531
+ - Fixed dashboard startup failure with "Unexpected end of JSON input" error on macOS/Linux when configuration files were empty or corrupted.
532
+ - Added proper JSON parsing error handling to catch `SyntaxError` in addition to `ENOENT` errors.
533
+ - Implemented automatic initialization of JSON files with valid default content on first use.
534
+ - Added automatic backup of corrupted configuration files before overwriting.
535
+ - Improved error logging to identify which file is causing parse errors and where backups are stored.
536
+
537
+ ## [2.0.3]
538
+
539
+ ### Changed
540
+ - Updated all MCP tool responses to respond in TOON format instead of JSON for token savings and effeciency. (More Info: https://github.com/toon-format/toon)
541
+
542
+ ## [2.0.2] - 2025-11-06
543
+
544
+ ### Changed
545
+ - Improved the get-implementation-logs tool description and instructions to help agents understand how to use the tool.
546
+ - Removed deprecated --AutoStartDashboard flag
547
+ - Removed config.toml support as it is no longer needed.
548
+ - Removed some legacy code related to the single project dashboard implementation. (not required anymore)
549
+ - Removed Ephemeral port support as it is no longer needed. Dashboard starts on port 5000 by default if a --port is not specified.
550
+
551
+ ## [2.0.1] - 2025-11-06
552
+
553
+ ### Fixed
554
+ - Fixed a Critical bug where approval records were not being saved correctly on approval and blocking the full process.
555
+ - Fixed a bug with dropdowns in the dashboard causing unecassary horizontal scrollbars.
556
+ - Fixed a bug where diff viewer for approvals was not working.
557
+
558
+ ## [2.0.0] - 2025-11-03
559
+
560
+ ### Added
561
+ - Added NEW Unified Multi-Project Dashboard Implementation!
562
+ - 'ESC' key now closes all dialogs and modals in the dashboard.
563
+ - Implementation Log functionality added to the dashboard for each spec, AI Agents will now log detailed information about the implementation of each task. This information is then used by future AI agents to discover existing code and avoid duplication / mistakes when implementing new tasks especially when each task is dependant on the previous task.
564
+
565
+ ### Changed
566
+ - Re-designed the dashboard to be more user friendly and intuitive.
567
+ - Added a new sidebar menu for the dashboard instead of header navigation.
568
+
569
+
570
+ ### Announcement
571
+ - Deprecated the `--AutoStartDashboard` flag as it is no longer needed.
572
+
573
+ ## [1.0.1] - 2025-09-24
574
+
575
+ ### Changed
576
+ - Removed references to a headless mode that would confuse confusion for the agent in rare instances where the user would only start the dashboard after beginning the spec workflow.
577
+ - Some UI / UX improvements to the dashboard.
578
+
579
+ ### Fixed
580
+ - Fixed a bug where users couldnt start multiple instances of the Dashboard within the same project.
581
+ - Some UI / UX fixes to the dashboard, mainly around locale and missing translations.
582
+
583
+ ### Added
584
+ - Added NEW Diff Viewer to the dashboard for approvals!
585
+ - Added NEW Kanban View to the dashboard for tasks!
586
+
587
+ ## [1.0.0] - 2025-09-13
588
+
589
+ **NOTE: This version brings major architectural changes to the project. However they are non breaking changes.**
590
+
591
+ ### Changes
592
+ - Replaced various filesystem binded tools with elaborate instructions and changes to the workflow to allow AI agents to create documents and manage the project without the need for filesystem tools.
593
+ **Its worth noting this change should improve the accuracy of AI agents following the workflow. Its important to also note this has only been tested with Claude Sonnet 4, Claude Opus 4.1 and GPT 5**
594
+ - I have added the ability to use custom spec / steering document templates which is aimed at allowing users to customize the documents to their own needs. This is aimed at Power Users but everyone is welcome to use it.
595
+ - Added dynamic year to the spec-workflow-guide tool to ensure the agent is using the current year for web search for more up to date information.
596
+
597
+ **There are no plans to revert back to the previous architecture. We have made this decision to improve the accuracy of AI agents following the workflow as well as improve the maintainability of the project. If you wish to use the old architecture, you can still do so by running an older version of the MCP server however please note that in the event of a change to the MCP working directory structure, the dashboard or VSCode extension will not work as expected.**
598
+
599
+
600
+ ## [0.0.33] - 2025-09-10
601
+
602
+ ### Added
603
+ - **TOML Configuration File Support** - The MCP server now supports configuration via TOML files
604
+ - Default config location: `<project-dir>/.spec-workflow/config.toml`
605
+ - All command-line parameters can now be configured in the TOML file
606
+ - Supports `projectDir`, `port`, `autoStartDashboard`, `dashboardOnly`, and `lang` settings
607
+ - Example configuration file provided at `.spec-workflow/config.example.toml`
608
+ - Tilde (`~`) expansion for home directory paths in config files
609
+
610
+ - **Custom Config File Path** - New `--config` CLI flag for specifying custom config file locations
611
+ - Supports both `--config path` and `--config=path` formats
612
+ - Works with both relative and absolute paths
613
+ - Useful for maintaining different configs for different environments (dev, staging, production)
614
+ - Custom config files must exist or server will exit with error
615
+
616
+ NOTE: For more information on the configuration file, please refer to the [README.md](README.md) file.
617
+
618
+ ## [0.0.32] - 2025-09-10
619
+
620
+ ### Fixed
621
+ - Removed localizations for MCP server tools as I have reason to believe they were causing confusion and issues with agents understanding the tools and their purposes as well as responses.
622
+ - Improved get-template-context tool description to include a note about the template structure must be adhered to at all times and the next step to use the template for the specific document.
623
+
624
+ ## [0.0.31] - 2025-09-09
625
+
626
+ ### Fixed
627
+ - Fixed "ReferenceError: t is not defined" errors in multiple components:
628
+ - `SearchableSpecDropdown` in TasksPage (Task management dropdown)
629
+ - `CommentModal` in VSCode extension (Comment editing interface)
630
+ - `comment-modal.tsx` wrapper (Modal context provider)
631
+ - `VolumeControl` in Dashboard (Notification volume controls)
632
+ - `AlertModal` in Dashboard (Alert dialog component)
633
+ - Added missing translation keys across all 11 supported languages for:
634
+ - Comment modal UI elements (`commentModal.*` keys)
635
+ - Volume control tooltips (`volumeControl.*` keys)
636
+ - Common modal buttons (`common.ok` key)
637
+ - Enhanced i18n documentation with comprehensive troubleshooting guide
638
+ - Improved error prevention with component template and validation steps
639
+
640
+ ## [0.0.30] - 2025-09-09
641
+
642
+ ### Fixed
643
+ - Fixed a bug where some translations were not being loaded correctly (Specifically for Approval / Annotations).
644
+ - Fixed a bug where some languages didnt have the correct translation keys.
645
+
646
+ ## [0.0.29] - 2025-09-08
647
+
648
+ ### Improved
649
+ - Improved localization support for all components.
650
+
651
+ ### Added
652
+ - **Multi-Language Support Expansion** - Added comprehensive translations for 8 new languages
653
+ - Spanish (es) 🇪🇸 translations for all components
654
+ - Portuguese (pt) 🇧🇷 translations for all components
655
+ - German (de) 🇩🇪 translations for all components
656
+ - French (fr) 🇫🇷 translations for all components
657
+ - Russian (ru) 🇷🇺 translations for all components
658
+ - Italian (it) 🇮🇹 translations for all components
659
+ - Korean (ko) 🇰🇷 translations for all components
660
+ - Arabic (ar) 🇸🇦 translations for all components
661
+ - Total of 24 new translation files across MCP server, dashboard, and VSCode extension
662
+ - Updated language selectors in both dashboard and VSCode extension to include all new languages
663
+
664
+ ### Enhanced
665
+ - **i18n Infrastructure** - Updated validation and build processes to support 11 total languages
666
+ - Enhanced validation script to check all supported languages for consistency
667
+ - Updated all i18n configurations to register new language resources
668
+ - Added comprehensive i18n structure documentation explaining the three translation contexts
669
+
670
+ ### Technical Changes
671
+ - Updated SUPPORTED_LANGUAGES arrays across all three components
672
+ - Added flag emoji representations for improved language selection UX
673
+ - Maintained backward compatibility with existing English, Japanese, and Chinese translations
674
+ - All Mustache template variables validated for consistency across all 11 languages
675
+
676
+ ## [0.0.28] - 2025-09-08
677
+
678
+ ### Added
679
+ - **AI Prompt Generation for Tasks** - Enhanced task management with structured AI prompts
680
+ - Added `prompt` field to ParsedTask interface for custom AI guidance
681
+ - Task parser now extracts `_Prompt:` metadata from tasks.md files
682
+ - Updated tasks template with LLM guidance for generating structured prompts
683
+ - Copy functionality in both VSCode extension and dashboard now uses AI prompts when available
684
+ - Graceful fallback to default "work on this task" prompts for backward compatibility
685
+ - Comprehensive localization support (English, Chinese, Japanese) for new prompt features
686
+ - MCP server tools automatically include prompt field in all task responses
687
+ - Added Prompt to UI for previewing the prompt for the task in a collapsible section
688
+
689
+ ### Enhanced
690
+ - **Task Template** - Added AI instructions for generating structured prompts with Role | Task | Restrictions | Success format
691
+ - **Multi-language Support** - Extended localization with prompt-related keys for better user experience
692
+ - **UI/UX Improvements** - Copy buttons now provide context-aware prompts for improved AI agent guidance
693
+
694
+ ### Fixed
695
+ - **Volume Slider Alignment** - Fixed misaligned volume slider dot in web dashboard
696
+ - Corrected CSS styling to properly center the 16px slider thumb on the track
697
+ - Reduced track height from 8px to 4px for better visual proportion
698
+ - Added `margin-top: -6px` to webkit slider thumb for proper vertical centering
699
+ - Fixed duplicate border property in Firefox slider styles
700
+ - Ensures consistent alignment across all browsers (Chrome, Safari, Edge, Firefox)
701
+ - **Language Selector** - Added missing Chinese language option to web dashboard dropdown
702
+ - Chinese translations were already present but not exposed in the language selector UI
703
+ - Added Chinese option with appropriate flag emoji to SUPPORTED_LANGUAGES array
704
+
705
+ ## [0.0.27] - 2025-09-08
706
+
707
+ ### Added
708
+ - **Chinese (zh) Language Support** - Comprehensive Chinese translations for multi-language support
709
+ - Complete Chinese translations for all MCP server tools and messages
710
+ - Chinese translations for dashboard frontend interface
711
+ - Chinese translations for VSCode extension webview components
712
+ - Integration with existing i18n framework supporting dynamic language switching
713
+ - Validation script updates to ensure Chinese translation consistency
714
+
715
+ ## [0.0.26] - 2025-09-08
716
+
717
+ ### Fixed
718
+ - **MCP Server Mode** - Prevent stdout contamination that caused JSON parsing errors in MCP clients
719
+ - Replaced console.log with console.error for diagnostic messages
720
+ - Ensures stdout is reserved exclusively for JSON-RPC protocol communication
721
+ - Fixes issue #71 where MCP clients couldn't parse server responses
722
+
723
+ ### Added
724
+ - **Tasks UI Filtering and Sorting** - Enhanced task management with advanced filtering and sorting capabilities
725
+ - Status filtering options (All, Pending, In Progress, Completed) with real-time task counts
726
+ - Multiple sorting options (Default Order, By Status, By Task ID, By Description)
727
+ - Ascending/Descending sort order toggle for all sort options
728
+ - Persistent user preferences using localStorage (per-specification basis)
729
+ - Full i18n support with English and Japanese translations
730
+ - Maintains compatibility with real-time WebSocket updates
731
+ - Based on contribution from @qdhenry (PR #54, #74)
732
+ - **Docker Container Support** - Full containerization for easy deployment
733
+ - Multi-stage Dockerfile for optimized container size
734
+ - Docker Compose configuration for dashboard deployment
735
+ - Support for both MCP server and dashboard modes
736
+ - Volume mounting for `.spec-workflow` directory persistence
737
+ - Comprehensive container documentation and examples
738
+ - Based on contribution from @heavyengineer (PR #57, #73)
739
+ - **Internationalization (i18n) Framework** - Comprehensive multi-language support across all components
740
+ - Backend i18n with async loading and LRU caching for MCP tools
741
+ - Frontend i18n using react-i18next for dashboard interface
742
+ - VSCode extension i18n support for webview components
743
+ - Complete Japanese translations for all tools and UI elements
744
+ - Dynamic import support for optimized bundle sizes
745
+ - Environment variable validation for locale formats (supports en, ja, en-US, pt-BR patterns)
746
+ - Build-time validation script ensuring translation consistency
747
+
748
+ ### Technical Changes
749
+ - Implemented Mustache templating for safe string interpolation in translations
750
+ - Added LRU cache with 10MB memory limit and 1-hour TTL for performance
751
+ - Integrated locale file copying into build process for all components
752
+ - Added comprehensive i18n documentation guide with performance comparisons
753
+ - Created validation script for JSON syntax and template variable consistency
754
+ - Enhanced copy-static script to include locale directories
755
+ - Added support for VITE_I18N_DYNAMIC environment variable for lazy loading
756
+
757
+ ### Improved
758
+ - Reduced initial bundle size with optional dynamic translation loading
759
+ - Better error handling with locale-specific fallback mechanisms
760
+ - Production-ready error sanitization to prevent information disclosure
761
+
762
+ ## [0.0.25] - 2025-09-07
763
+
764
+ ### Added
765
+ - **MCP Prompts Support** - Implemented full Model Context Protocol prompts capability
766
+ - Added 6 interactive prompts for spec-driven development workflows
767
+ - `create-spec` - Interactive spec document creation with guided workflow
768
+ - `create-steering-doc` - Create AI agent guidance documents
769
+ - `manage-tasks` - Task management with list, complete, reset, and status actions
770
+ - `request-approval` - Initiate formal approval workflows
771
+ - `spec-status` - Get comprehensive project status overviews
772
+ - `workflow-guide` - Interactive workflow guidance with best practices
773
+ - **Prompt Discovery** - MCP clients can now discover available prompts via `prompts/list`
774
+ - **Argument Support** - All prompts accept typed arguments for customization
775
+ - **Context Integration** - Prompts include project context, dashboard URLs, and tool recommendations
776
+
777
+ ### Technical Changes
778
+ - Added `src/prompts/` module with prompt definitions and handlers
779
+ - Updated server capabilities to declare prompts support with `listChanged` flag
780
+ - Added `ListPromptsRequestSchema` and `GetPromptRequestSchema` handlers
781
+ - Each prompt generates contextual messages to guide AI assistants through workflows
782
+
783
+ ## [0.0.24] - 2025-09-07
784
+
785
+ ### Fixed
786
+ - Fixed get-approval-status tool to include comments in response data, enabling AI tools to access approval comments for better context understanding.
787
+
788
+ ## [0.0.23] - 2025-08-27
789
+
790
+ ### Improved
791
+ - Added correct tool definitions to the server capabilities.
792
+ - Refined spec-workflow-guide tool instructions condensing instructions by 50% whilst guarenteeing the same effectiveness.
793
+ - Added workflow mermaid flowcharts to the spec-workflow-guide tool to help agents visualize the workflow.
794
+ - Refined all the tool descriptions to remove ambiguity and make them more concise, additionally adding intrustions to each one to give the agent an idea of when to use the tool.
795
+
796
+ ### Fixed
797
+ - Fixed Steering Doc workflow where the agent would attempt to provide all 3 documents in a single approval.
798
+ - Removed Steering guide from spec-workflow-guide tool and ensured steering-guide tool is called for steering document creation.
799
+ - Added direct support for steering documents in the request-approval tool as there wasnt direct support for it and the agents were just working around it.
800
+
801
+ ### Misc
802
+ - Removed MCP resource definition as this was part of the initial developement workflow but was not required in the end.
803
+
804
+ ## [0.0.22] - 2025-08-25
805
+
806
+ ### Improved
807
+ - Dashboard browser tab now displays the actual project name (e.g., "spec-workflow-mcp Dashboard") instead of generic "Spec Dashboard (React)"
808
+ - Tab title dynamically updates based on the resolved project directory name for better identification when multiple dashboards are open
809
+
810
+ ## [0.0.21] - 2025-08-25
811
+
812
+ ### Fixed
813
+ - Fixed dashboard displaying "." as project name when using `--project-dir .` by resolving the path to show actual directory name
814
+
815
+ ## [0.0.20] - 2025-08-22
816
+
817
+ ### Added
818
+ - Added `--AutoStartDashboard` flag to automatically start and open dashboard when running MCP server
819
+ - Added `--port` parameter support for MCP server mode (previously only worked with `--dashboard` mode)
820
+ - Added comprehensive `--help` command with usage examples and parameter documentation
821
+ - Added validation for unknown command-line flags with helpful error messages
822
+
823
+ ### Improved
824
+ - Enhanced shutdown behavior messaging for MCP server mode
825
+ - Removed duplicate console logging when using custom ports
826
+ - Updated README with AutoStartDashboard configuration examples for all MCP clients
827
+ - Clarified that MCP server lifecycle is controlled by the MCP client (not Ctrl+C)
828
+
829
+ ### Fixed
830
+ - Fixed issue where browser would attempt to open twice with AutoStartDashboard
831
+ - Fixed duplicate "Using custom port" messages in console output
832
+
833
+ ## [0.0.19] - 2025-08-21
834
+
835
+ ### Fixed
836
+ - Fixed MCP server shutdown issues where server process would stay running after MCP client disconnects
837
+ - Added proper stdio transport onclose handler to detect client disconnection
838
+ - Added stdin monitoring for additional disconnect detection safety
839
+ - Enhanced stop() method with better error handling and cleanup sequence
840
+
841
+ ## [0.0.18] - 2025-08-17
842
+
843
+ ### Improvements
844
+ - Selected spec on tasks page is now persisted across page refreshes and now allows for deeplinking.
845
+
846
+ ## [0.0.17] - 2025-08-17
847
+
848
+ ### Bug Fixes
849
+ - Fixed a bug where request approval tool would fail when starting the MCP server without a projectdir. (wasnt really a bug as projectdir was recommended but I have made this more robust).
850
+
851
+ ## [0.0.16] - 2025-08-15
852
+
853
+ ### Bug Fixes
854
+ - Fixed a bug where the dashboard would not automatically update task status when the MCP tool was called and a refresh was required to view new status.
855
+
856
+ ## [0.0.15] - 2025-08-15
857
+
858
+ ### Improvements
859
+ - Moved to custom alert & prompt modals rather than window.alert and window.prompt. This should fix issues with dashboard showing prompts in VSCode Simple Browser
860
+ - Moved highlight color picker to the comment modal rather than having it in the comments list.
861
+
862
+ ### New Features
863
+ - Added Notification Volume Slider.
864
+
865
+ ## [0.0.14] - 2025-08-14
866
+
867
+ ### Added
868
+ - Added a new 'refresh-tasks' tool to help align the task list with the current requirements and design. This is particularly useful if you make changes to the requirements / design docs mid integration.
869
+
870
+ ### Misc
871
+ - Removed some legacy markdown files that were left over from initial development.
872
+
873
+ ## [0.0.13] - 2025-08-13
874
+
875
+ ### Added
876
+ - Added support for relative project paths and the use of tilde (~) in project paths. Below path formats are now supported:
877
+ - npx -y @pimzino/spec-workflow-mcp ~/my-project
878
+ - npx -y @pimzino/spec-workflow-mcp ./relative-path
879
+ - npx -y @pimzino/spec-workflow-mcp /absolute/path
880
+
881
+ ## [0.0.12] - 2025-08-11
882
+
883
+ ### Fixed
884
+ - Fixed a bug with prose containers which would limit rendered content from fully displaying in the view modals.
885
+ - Fixed a bug with package version not showing in the header / mobile menu.
886
+
887
+ ## [0.0.11] - 2025-08-11
888
+
889
+ ### Fixed
890
+ - Page refresh on websocket updates. Pages will no longer reset on websocket updates.
891
+ - Dashboard accessibility improvements.
892
+
893
+ ### Added
894
+ - Optimized dashboard for tablets.
895
+ - Users can now specify a custom port for the dashboard web server using the `--port` parameter. If not specified, an ephemeral port will be used.
896
+ - Added the ability to change task status directly from the task page in the dashboard.
897
+
898
+ ## [0.0.10] - 2025-08-10
899
+
900
+ ### Added
901
+ - **Initial Multi-Language Framework** - Established foundational support for internationalization
902
+ - Set up i18n infrastructure to support future language translations
903
+ - Implemented framework for dynamic language switching across components
904
+ - Laid groundwork for comprehensive multi-language support later expanded in v0.0.26-0.0.29
905
+
906
+ ### Fixed
907
+ - Fixed bug with spec steering page not displaying correctly on smaller screens (mobile devices).
908
+
909
+ ## [0.0.9] - 2025-08-10
910
+
911
+ ### Fixed
912
+ - Clipboard API wasnt working in HTTP contexts over LAN. Added fallback method using `document.execCommand('copy')` for browsers without clipboard API access.
913
+
914
+ ### Changed
915
+ - Updated copy prompt to only include task id and spec name.
916
+ - Improved copy button feedback with visual success/error states and colored indicators.
917
+ - Dashboard --> Updated viewport to 80% screen width in desktop and 90% on mobile devices.
918
+
919
+ ### Added
920
+ - Spec document editor directly in the dashboard.
921
+ - Spec archiving and unarchiving in the dashboard.
922
+ - Steering document page for creating, viewing and editing steering documents directly from the dashboard.
923
+
924
+
925
+ ## [0.0.8] - 2025-08-09
926
+
927
+ ### Updated
928
+ - Rebuilt the web dashboard with a mobile first responsive design bringing you the following improvements:
929
+ - Responsive Design
930
+ - Improved UI / UX
931
+ - Improved Performance
932
+ - Disconnected from MCP server - must be started manually
933
+ - Can now run multiple MCP server instances for the same project on a single dashboard instance
934
+
935
+
936
+ **NOTE: This is a breaking change. The dashboard will no longer auto start and must be manually run. Please review the README for updated instructions.**
937
+
938
+ ## [0.0.7] - 2025-08-08
939
+
940
+ ### Fixed
941
+ - Fixed a bug with the task parser / manage-tasks tool refusing to find tasks.
942
+
943
+ ### Updated
944
+ - Improved the task parser and created a task parser utility function to be shared across tools and UI.
945
+
946
+ ## [0.0.6] - 2025-08-08
947
+
948
+ ### Updated
949
+ - Refined the spec workflow guide to remove any ambiguity, made it more concise.
950
+ - Refined manage-tasks tool description.
951
+ - Refined request-approval tool description and next steps output.
952
+ - Refined create-spec-doc tool next steps output.
953
+
954
+ ### Added
955
+ - Imporoved dashboard task parser and task counter to support Parent/Child task relationships otherwise known as subtasks.
956
+ - Parent tasks if only including a name will be parsed as a Task Section Heading in the dashboard.
957
+ - The parser should now be more flexible to handle tasks in various formats as long as they still follow the same checklist, task name, and status format at the very least.
958
+
959
+ ## [0.0.5] - 2025-08-07
960
+
961
+ ### Updated
962
+ - Refined spec workflow to include conditional web search for the design phase to ensure the agent is providing the best possible for all phases.
963
+
964
+ ### Fixed
965
+ - Improved task progress cards to display all task information in the card.
966
+
967
+ ## [0.0.4] - 2025-08-07
968
+
969
+ ### Fixed
970
+ - Fixed clipboard copying functionality in dashboard for HTTP contexts (non-HTTPS environments)
971
+ - Added fallback clipboard method using `document.execCommand('copy')` for browsers without clipboard API access
972
+ - Improved copy button feedback with visual success/error states and colored indicators
973
+ - Enhanced mobile device compatibility for clipboard operations
974
+ - Removed development obsolete bug tracking functionality from dashboard frontend
975
+
976
+ ## [0.0.3] - 2025-08-07
977
+
978
+ ### Updated
979
+ - Updated README.md with example natural language prompts that will trigger the various tools.
980
+ - task-template.md updated to remove atomic task requirements and format guidelines and moved them to the spec workflow guide tool.
981
+ - Refined instructions for the agent to output the dashboard URL to the user.
982
+ - Removed the Steering Document Compliance section from tasks-template.md for simplification.
983
+
984
+ ### Added
985
+ - I have added a session.json in the .spec-workflow directory that stores the dashboard URL and the process ID of the dashboard server. This allows the agent to retrieve the dashboard URL as well as the user if required. Note: This should help users one headless systems where the dashboard us unable to auto load, you can retrieve the session information from the json file.
986
+
987
+ ### Fixed
988
+ - Misc fixes cause HEAP out of memory issues on the server causing the server to crash when running more than one instance.
989
+
990
+ ### Added
991
+
992
+ ## [0.0.2] - 2025-08-07
993
+
994
+ ### Updated
995
+ - Updated README.md with showcase videos on youtube.
996
+ - Removed testing mcp.json file that was left over from initial development.
997
+
998
+ ## [0.0.1] - 2025-08-07
999
+
1000
+ ### Added
1001
+ - MCP server implementation with 13 tools for spec-driven development
1002
+ - Sequential workflow enforcement (Requirements → Design → Tasks)
1003
+ - Real-time web dashboard with WebSocket updates
1004
+ - Document creation and validation tools
1005
+ - Human-in-the-loop approval system
1006
+ - Template system for consistent documentation
1007
+ - Context optimization tools for efficient AI workflows
1008
+ - Task management and progress tracking
1009
+ - Cross-platform support (Windows, macOS, Linux)
1010
+ - Support for major AI development tools (Claude Desktop, Cursor, etc.)
1011
+ - Automatic project structure generation
1012
+ - Dark mode dashboard interface
1013
+ - GitHub issue templates