@lbruton/spec-workflow-mcp 2.2.4

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