@leanspec/ui 0.2.9-dev.20251205030455 → 0.2.10

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 (516) hide show
  1. package/.next/standalone/node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  2. package/.next/standalone/packages/ui/.next/BUILD_ID +1 -1
  3. package/.next/standalone/packages/ui/.next/app-path-routes-manifest.json +5 -0
  4. package/.next/standalone/packages/ui/.next/build-manifest.json +2 -2
  5. package/.next/standalone/packages/ui/.next/prerender-manifest.json +3 -3
  6. package/.next/standalone/packages/ui/.next/required-server-files.json +4 -4
  7. package/.next/standalone/packages/ui/.next/routes-manifest.json +40 -0
  8. package/.next/standalone/packages/ui/.next/server/app/_global-error/page.js +1 -1
  9. package/.next/standalone/packages/ui/.next/server/app/_global-error/page.js.nft.json +1 -1
  10. package/.next/standalone/packages/ui/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/packages/ui/.next/server/app/_global-error.html +2 -2
  12. package/.next/standalone/packages/ui/.next/server/app/_global-error.rsc +1 -1
  13. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  14. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  15. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  16. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js +2 -2
  18. package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js.nft.json +1 -1
  19. package/.next/standalone/packages/ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  20. package/.next/standalone/packages/ui/.next/server/app/_not-found.html +2 -2
  21. package/.next/standalone/packages/ui/.next/server/app/_not-found.rsc +18 -20
  22. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_full.segment.rsc +18 -20
  23. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_index.segment.rsc +23 -26
  24. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  25. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  26. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_tree.segment.rsc +5 -5
  27. package/.next/standalone/packages/ui/.next/server/app/api/context/route.js +1 -1
  28. package/.next/standalone/packages/ui/.next/server/app/api/context/route.js.nft.json +1 -1
  29. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js +1 -1
  30. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js.nft.json +1 -1
  31. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/[id]/route.js.nft.json +1 -1
  32. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/discover/route.js.nft.json +1 -1
  33. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/list-directory/route.js.nft.json +1 -1
  34. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/route.js.nft.json +1 -1
  35. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route.js +1 -1
  36. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route.js.nft.json +1 -1
  37. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route.js +1 -1
  38. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route.js.nft.json +1 -1
  39. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  40. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route/app-paths-manifest.json +3 -0
  41. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route/build-manifest.json +11 -0
  42. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route/server-reference-manifest.json +4 -0
  43. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route.js +8 -0
  44. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route.js.map +5 -0
  45. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route.js.nft.json +1 -0
  46. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route_client-reference-manifest.js +2 -0
  47. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route/app-paths-manifest.json +3 -0
  48. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route/build-manifest.json +11 -0
  49. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route/server-reference-manifest.json +4 -0
  50. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route.js +8 -0
  51. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route.js.map +5 -0
  52. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route.js.nft.json +1 -0
  53. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route_client-reference-manifest.js +2 -0
  54. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js +1 -1
  55. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js.nft.json +1 -1
  56. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js +1 -1
  57. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js.nft.json +1 -1
  58. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js +1 -1
  59. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js.nft.json +1 -1
  60. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js +1 -1
  61. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js.nft.json +1 -1
  62. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route/app-paths-manifest.json +3 -0
  63. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route/build-manifest.json +11 -0
  64. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route/server-reference-manifest.json +4 -0
  65. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route.js +8 -0
  66. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route.js.map +5 -0
  67. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route.js.nft.json +1 -0
  68. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route_client-reference-manifest.js +2 -0
  69. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route.js.nft.json +1 -1
  70. package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js.nft.json +1 -1
  71. package/.next/standalone/packages/ui/.next/server/app/api/revalidate/route.js.nft.json +1 -1
  72. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js +1 -1
  73. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js.nft.json +1 -1
  74. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route/app-paths-manifest.json +3 -0
  75. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route/build-manifest.json +11 -0
  76. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route/server-reference-manifest.json +4 -0
  77. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route.js +8 -0
  78. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route.js.map +5 -0
  79. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route.js.nft.json +1 -0
  80. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route_client-reference-manifest.js +2 -0
  81. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/route.js +1 -1
  82. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/route.js.nft.json +1 -1
  83. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/status/route.js.nft.json +1 -1
  84. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/subspecs/[file]/route.js +1 -1
  85. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/subspecs/[file]/route.js.nft.json +1 -1
  86. package/.next/standalone/packages/ui/.next/server/app/api/stats/route.js +1 -1
  87. package/.next/standalone/packages/ui/.next/server/app/api/stats/route.js.nft.json +1 -1
  88. package/.next/standalone/packages/ui/.next/server/app/api/tags/route/app-paths-manifest.json +3 -0
  89. package/.next/standalone/packages/ui/.next/server/app/api/tags/route/build-manifest.json +11 -0
  90. package/.next/standalone/packages/ui/.next/server/app/api/tags/route/server-reference-manifest.json +4 -0
  91. package/.next/standalone/packages/ui/.next/server/app/api/tags/route.js +8 -0
  92. package/.next/standalone/packages/ui/.next/server/app/api/tags/route.js.map +5 -0
  93. package/.next/standalone/packages/ui/.next/server/app/api/tags/route.js.nft.json +1 -0
  94. package/.next/standalone/packages/ui/.next/server/app/api/tags/route_client-reference-manifest.js +2 -0
  95. package/.next/standalone/packages/ui/.next/server/app/context/page.js +4 -3
  96. package/.next/standalone/packages/ui/.next/server/app/context/page.js.nft.json +1 -1
  97. package/.next/standalone/packages/ui/.next/server/app/context/page_client-reference-manifest.js +1 -1
  98. package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js +4 -3
  99. package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js.nft.json +1 -1
  100. package/.next/standalone/packages/ui/.next/server/app/dependencies/page_client-reference-manifest.js +1 -1
  101. package/.next/standalone/packages/ui/.next/server/app/page.js +2 -2
  102. package/.next/standalone/packages/ui/.next/server/app/page.js.nft.json +1 -1
  103. package/.next/standalone/packages/ui/.next/server/app/page_client-reference-manifest.js +1 -1
  104. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page.js +2 -2
  105. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page.js.nft.json +1 -1
  106. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page_client-reference-manifest.js +1 -1
  107. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page.js +2 -2
  108. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page.js.nft.json +1 -1
  109. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page_client-reference-manifest.js +1 -1
  110. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js +2 -2
  111. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js.nft.json +1 -1
  112. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page_client-reference-manifest.js +1 -1
  113. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js +2 -2
  114. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js.nft.json +1 -1
  115. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page_client-reference-manifest.js +1 -1
  116. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js +2 -2
  117. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js.nft.json +1 -1
  118. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page_client-reference-manifest.js +1 -1
  119. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page.js +2 -2
  120. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page.js.nft.json +1 -1
  121. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page_client-reference-manifest.js +1 -1
  122. package/.next/standalone/packages/ui/.next/server/app/projects/page.js +2 -2
  123. package/.next/standalone/packages/ui/.next/server/app/projects/page.js.nft.json +1 -1
  124. package/.next/standalone/packages/ui/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  125. package/.next/standalone/packages/ui/.next/server/app/projects.html +2 -2
  126. package/.next/standalone/packages/ui/.next/server/app/projects.rsc +24 -25
  127. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +24 -25
  128. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_index.segment.rsc +20 -24
  129. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  130. package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
  131. package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  132. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js +2 -2
  133. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js.nft.json +1 -1
  134. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page_client-reference-manifest.js +1 -1
  135. package/.next/standalone/packages/ui/.next/server/app/specs/page.js +4 -3
  136. package/.next/standalone/packages/ui/.next/server/app/specs/page.js.nft.json +1 -1
  137. package/.next/standalone/packages/ui/.next/server/app/specs/page_client-reference-manifest.js +1 -1
  138. package/.next/standalone/packages/ui/.next/server/app/stats/page.js +4 -3
  139. package/.next/standalone/packages/ui/.next/server/app/stats/page.js.nft.json +1 -1
  140. package/.next/standalone/packages/ui/.next/server/app/stats/page_client-reference-manifest.js +1 -1
  141. package/.next/standalone/packages/ui/.next/server/app-paths-manifest.json +5 -0
  142. package/.next/standalone/packages/ui/.next/server/chunks/284a8_app_api_projects_[id]_specs_[spec]_dependency-graph_route_actions_f18476ed.js +3 -0
  143. package/.next/standalone/packages/ui/.next/server/chunks/730ea_ui__next-internal_server_app_api_projects_[id]_tags_route_actions_40899744.js +3 -0
  144. package/.next/standalone/packages/ui/.next/server/chunks/730ea_ui__next-internal_server_app_api_specs_[id]_metadata_route_actions_139bb09f.js +3 -0
  145. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0afcada7._.js +3 -0
  146. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0e63a440._.js +3 -0
  147. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0ec6f9b0._.js +3 -0
  148. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0edb782a._.js +3 -0
  149. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0fbfea15._.js +1 -1
  150. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__1706515f._.js +1 -1
  151. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__1f037512._.js +1 -1
  152. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__38780e00._.js +3 -0
  153. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3a535244._.js +3 -0
  154. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__41f43652._.js +3 -0
  155. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__5081ac6f._.js +3 -0
  156. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__526764b2._.js +3 -0
  157. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__548e27d4._.js +1 -1
  158. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__71d98924._.js +1 -1
  159. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__74af400b._.js +3 -0
  160. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8075fe29._.js +1 -1
  161. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__9ce722b4._.js +1 -1
  162. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__9cf3bf21._.js +3 -0
  163. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__a2d7cbed._.js +1 -1
  164. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b1ad8b69._.js +1 -1
  165. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__c7a4906b._.js +3 -0
  166. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__de15d2aa._.js +3 -0
  167. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e16f7651._.js +3 -0
  168. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e2fcb5c6._.js +3 -0
  169. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e8d9903e._.js +3 -0
  170. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f6936b89._.js +3 -0
  171. package/.next/standalone/packages/ui/.next/server/chunks/f825c_server_app_api_projects_[id]_specs_[spec]_metadata_route_actions_35af9a8c.js +3 -0
  172. package/.next/standalone/packages/ui/.next/server/chunks/packages_ui__next-internal_server_app_api_tags_route_actions_64625b2c.js +3 -0
  173. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__01bfc8ff._.js +3 -0
  174. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__13f96ef4._.js → [root-of-the-server]__174e1ca1._.js} +2 -2
  175. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__38c56adc._.js → [root-of-the-server]__2d9202e8._.js} +2 -2
  176. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__338c65fe._.js +1 -1
  177. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__366688dd._.js +1 -1
  178. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__44b603f9._.js +1 -1
  179. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__4ec37765._.js +3 -0
  180. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__69a0d63a._.js +1 -1
  181. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__7f55abaa._.js +1 -1
  182. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__c158c9a9._.js +3 -0
  183. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__c7735439._.js +3 -0
  184. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__e2c760eb._.js +3 -0
  185. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__84124d4b._.js → [root-of-the-server]__ead1539c._.js} +2 -2
  186. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__ec5b96a5._.js +1 -1
  187. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_000dd317._.js +1 -1
  188. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_adb9d7cb._.js → _22274047._.js} +2 -2
  189. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_59616aa6._.js +3 -0
  190. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_5e1484f9._.js +7 -0
  191. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_8ab6f9ca._.js +1 -1
  192. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_be836d6a._.js +5 -0
  193. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_ec637d7c._.js +1 -1
  194. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_projects_page_tsx_6e166c8e._.js +1 -1
  195. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_specs_specs-client_tsx_0bb8f8f8._.js +1 -1
  196. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_spec-detail-wrapper_tsx_fd35401c._.js +1 -1
  197. package/.next/standalone/packages/ui/.next/server/pages/404.html +2 -2
  198. package/.next/standalone/packages/ui/.next/server/pages/500.html +2 -2
  199. package/.next/standalone/packages/ui/.next/server/server-reference-manifest.js +1 -1
  200. package/.next/standalone/packages/ui/.next/server/server-reference-manifest.json +1 -1
  201. package/.next/standalone/packages/ui/.next/static/chunks/0c7bbb59865774a1.js +1 -0
  202. package/.next/standalone/packages/ui/.next/static/chunks/0fe978002ba489fb.js +3 -0
  203. package/.next/standalone/packages/ui/.next/static/chunks/1169d4ac8f9df687.js +1 -0
  204. package/.next/standalone/packages/ui/.next/static/chunks/241b6b1c83610ebf.js +1 -0
  205. package/.next/standalone/packages/ui/.next/static/chunks/39931c5cecf4c4b7.js +1 -0
  206. package/.next/standalone/packages/ui/.next/static/chunks/6d7922838a3513a4.js +1 -0
  207. package/.next/{static/chunks/7a00633903e066b4.js → standalone/packages/ui/.next/static/chunks/781328ee279ffc41.js} +1 -1
  208. package/.next/standalone/packages/ui/.next/static/chunks/937cb3894a606899.js +5 -0
  209. package/.next/standalone/packages/ui/.next/static/chunks/9cf644b700f37825.css +1 -0
  210. package/.next/standalone/packages/ui/.next/static/chunks/bc0f8f7f8dc0a352.js +1 -0
  211. package/.next/standalone/packages/ui/.next/static/chunks/dbce73f7087f2470.js +10 -0
  212. package/.next/standalone/packages/ui/.next/static/chunks/f0a083ac29b4b6c2.js +1 -0
  213. package/.next/standalone/packages/ui/dist/BUILD_ID +1 -0
  214. package/.next/standalone/packages/ui/dist/public/f864aa7e7061c0600e35cf3d879b27cf.txt +1 -0
  215. package/.next/standalone/packages/ui/dist/public/favicon.ico +0 -0
  216. package/.next/standalone/packages/ui/dist/public/file.svg +1 -0
  217. package/.next/standalone/packages/ui/dist/public/github-mark-white.svg +1 -0
  218. package/.next/standalone/packages/ui/dist/public/github-mark.svg +1 -0
  219. package/.next/standalone/packages/ui/dist/public/globe.svg +1 -0
  220. package/.next/standalone/packages/ui/dist/public/icon.svg +7 -0
  221. package/.next/standalone/packages/ui/dist/public/logo-dark-bg.svg +17 -0
  222. package/.next/standalone/packages/ui/dist/public/logo-with-bg.svg +17 -0
  223. package/.next/standalone/packages/ui/dist/public/logo.svg +17 -0
  224. package/.next/standalone/packages/ui/dist/public/next.svg +1 -0
  225. package/.next/standalone/packages/ui/dist/public/vercel.svg +1 -0
  226. package/.next/standalone/packages/ui/dist/public/window.svg +1 -0
  227. package/.next/standalone/packages/ui/dist/standalone/packages/web/README.md +196 -0
  228. package/.next/standalone/packages/ui/dist/standalone/packages/web/package.json +75 -0
  229. package/.next/standalone/packages/ui/dist/standalone/packages/web/server.js +44 -0
  230. package/.next/standalone/packages/ui/dist/standalone/specs/014-complete-custom-frontmatter/README.md +175 -0
  231. package/.next/standalone/packages/ui/dist/standalone/specs/016-github-action/README.md +317 -0
  232. package/.next/standalone/packages/ui/dist/standalone/specs/017-vscode-extension/README.md +261 -0
  233. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CLI-DESIGN.md +380 -0
  234. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION-EXAMPLES.md +230 -0
  235. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION.md +285 -0
  236. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/IMPLEMENTATION.md +358 -0
  237. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/README.md +303 -0
  238. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/TESTING.md +368 -0
  239. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/VALIDATION-RULES.md +327 -0
  240. package/.next/standalone/packages/ui/dist/standalone/specs/024-pattern-aware-list-grouping/README.md +117 -0
  241. package/.next/standalone/packages/ui/dist/standalone/specs/025-template-config-updates/README.md +73 -0
  242. package/.next/standalone/packages/ui/dist/standalone/specs/026-init-pattern-selection/README.md +109 -0
  243. package/.next/standalone/packages/ui/dist/standalone/specs/034-copilot-slash-commands/README.md +107 -0
  244. package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/ARCHITECTURE.md +244 -0
  245. package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/IMPLEMENTATION.md +429 -0
  246. package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/README.md +302 -0
  247. package/.next/standalone/packages/ui/dist/standalone/specs/036-pm-integrations/README.md +158 -0
  248. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-AI-ASSISTED.md +359 -0
  249. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-FULL-LIFECYCLE.md +86 -0
  250. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-REAL-FEATURE.md +437 -0
  251. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-SCRIPT.md +365 -0
  252. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-FINAL.md +203 -0
  253. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SESSION-2025-11-06.md +174 -0
  254. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SUMMARY.md +156 -0
  255. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/IMPLEMENTATION.md +183 -0
  256. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/MARKETING.md +229 -0
  257. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/NEXT-STEPS-DEMO.md +243 -0
  258. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/README.md +217 -0
  259. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/SESSION-2025-11-06.md +166 -0
  260. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/TESTING.md +126 -0
  261. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/ACTUAL-IMPLEMENTATION.md +108 -0
  262. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/DESIGN.md +382 -0
  263. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/IMPLEMENTATION.md +144 -0
  264. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/RATIONALE.md +146 -0
  265. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/README.md +208 -0
  266. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/TESTING.md +182 -0
  267. package/.next/standalone/packages/ui/dist/standalone/specs/047-git-backfill-timestamps/README.md +314 -0
  268. package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/FINDINGS.md +113 -0
  269. package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/GUIDELINES.md +237 -0
  270. package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/README.md +149 -0
  271. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-COMPARISONS.md +175 -0
  272. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-CONSTRAINTS.md +254 -0
  273. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/FIRST-PRINCIPLES.md +376 -0
  274. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-ROADMAP.md +240 -0
  275. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-TOOLS.md +175 -0
  276. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/README.md +374 -0
  277. package/.next/standalone/packages/ui/dist/standalone/specs/051-docs-system-prompt-principles/README.md +339 -0
  278. package/.next/standalone/packages/ui/dist/standalone/specs/052-branding-assets/README.md +128 -0
  279. package/.next/standalone/packages/ui/dist/standalone/specs/053-spec-assets-philosophy/README.md +97 -0
  280. package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/DESIGN-DECISIONS.md +93 -0
  281. package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/OUTPUT-FORMAT-SPEC.md +146 -0
  282. package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/README.md +175 -0
  283. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART1.md +397 -0
  284. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART2.md +342 -0
  285. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS.md +44 -0
  286. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CHANGES.md +150 -0
  287. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CONCERNS-ANALYSIS.md +351 -0
  288. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/DOCS-ALIGNMENT-ANALYSIS.md +238 -0
  289. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/README.md +280 -0
  290. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-DRAFT.md +372 -0
  291. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-REFINED.md +466 -0
  292. package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/AUDIT-RESULTS.md +178 -0
  293. package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/README.md +174 -0
  294. package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/README.md +295 -0
  295. package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/VALIDATION-RESULTS.md +487 -0
  296. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/ANALYSIS.md +241 -0
  297. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/DESIGN.md +279 -0
  298. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/IMPLEMENTATION.md +642 -0
  299. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/NOTES.md +125 -0
  300. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/README.md +286 -0
  301. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/ARCHITECTURE.md +392 -0
  302. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/COMMANDS.md +1002 -0
  303. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/CONTEXT-ENGINEERING.md +411 -0
  304. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/IMPLEMENTATION.md +812 -0
  305. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/README.md +504 -0
  306. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/TESTING.md +724 -0
  307. package/.next/standalone/packages/ui/dist/standalone/specs/060-core-concepts-coherence/README.md +125 -0
  308. package/.next/standalone/packages/ui/dist/standalone/specs/061-ai-assisted-spec-writing/README.md +299 -0
  309. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/IMPLEMENTATION-PLAN.md +174 -0
  310. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PAGE-SPECIFICATIONS.md +265 -0
  311. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PROBLEM-ANALYSIS.md +36 -0
  312. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/README.md +243 -0
  313. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/SOLUTION-DESIGN.md +82 -0
  314. package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/DESIGN.md +338 -0
  315. package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/EXAMPLES.md +354 -0
  316. package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/IMPLEMENTATION.md +189 -0
  317. package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/README.md +119 -0
  318. package/.next/standalone/packages/ui/dist/standalone/specs/064-docs-site-zh-translation/README.md +170 -0
  319. package/.next/standalone/packages/ui/dist/standalone/specs/065-v03-planning/README.md +158 -0
  320. package/.next/standalone/packages/ui/dist/standalone/specs/066-context-economy-thresholds-refinement/README.md +842 -0
  321. package/.next/standalone/packages/ui/dist/standalone/specs/067-monorepo-core-extraction/README.md +358 -0
  322. package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/DESIGN.md +444 -0
  323. package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/README.md +357 -0
  324. package/.next/standalone/packages/ui/dist/standalone/specs/069-token-counting-utils/README.md +551 -0
  325. package/.next/standalone/packages/ui/dist/standalone/specs/070-mcp-token-counting-tool/README.md +372 -0
  326. package/.next/standalone/packages/ui/dist/standalone/specs/071-simplified-token-validation/README.md +489 -0
  327. package/.next/standalone/packages/ui/dist/standalone/specs/072-ai-agent-first-use-workflow/README.md +285 -0
  328. package/.next/standalone/packages/ui/dist/standalone/specs/073-template-engine-agents-md/README.md +323 -0
  329. package/.next/standalone/packages/ui/dist/standalone/specs/074-content-at-creation/README.md +136 -0
  330. package/.next/standalone/packages/ui/dist/standalone/specs/075-intelligent-search-engine/README.md +399 -0
  331. package/.next/standalone/packages/ui/dist/standalone/specs/076-programmatic-spec-relationships/README.md +301 -0
  332. package/.next/standalone/packages/ui/dist/standalone/specs/077-archiving-strategy/README.md +235 -0
  333. package/.next/standalone/packages/ui/dist/standalone/specs/078-sub-spec-template-system/README.md +303 -0
  334. package/.next/standalone/packages/ui/dist/standalone/specs/079-cli-alphabetical-organization/README.md +196 -0
  335. package/.next/standalone/packages/ui/dist/standalone/specs/080-mcp-server-modular-architecture/README.md +388 -0
  336. package/.next/standalone/packages/ui/dist/standalone/specs/081-web-app-ux-redesign/README.md +824 -0
  337. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DATABASE.md +111 -0
  338. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DEPLOYMENT.md +69 -0
  339. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/FILESYSTEM.md +77 -0
  340. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/IMPLEMENTATION.md +184 -0
  341. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/README.md +496 -0
  342. package/.next/standalone/packages/ui/dist/standalone/specs/083-web-navigation-performance/README.md +490 -0
  343. package/.next/standalone/packages/ui/dist/standalone/specs/084-sub-spec-visibility-in-tools/README.md +389 -0
  344. package/.next/standalone/packages/ui/dist/standalone/specs/085-cli-relationship-commands/README.md +920 -0
  345. package/.next/standalone/packages/ui/dist/standalone/specs/086-template-component-deduplication/README.md +146 -0
  346. package/.next/standalone/packages/ui/dist/standalone/specs/087-cli-ui-command/README.md +607 -0
  347. package/.next/standalone/packages/ui/dist/standalone/specs/088-core-concepts-terminology-only/README.md +104 -0
  348. package/.next/standalone/packages/ui/dist/standalone/specs/089-sdd-practical-tutorials/README.md +124 -0
  349. package/.next/standalone/packages/ui/dist/standalone/specs/090-leanspec-sdd-case-studies/README.md +129 -0
  350. package/.next/standalone/packages/ui/dist/standalone/specs/091-chinese-localization-strategy/README.md +244 -0
  351. package/.next/standalone/packages/ui/dist/standalone/specs/092-docs-site-submodule-migration/README.md +148 -0
  352. package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md +54 -0
  353. package/.next/standalone/packages/ui/dist/standalone/specs/archived/001-typescript-cli-migration/README.md +37 -0
  354. package/.next/standalone/packages/ui/dist/standalone/specs/archived/002-template-system-redesign/README.md +60 -0
  355. package/.next/standalone/packages/ui/dist/standalone/specs/archived/003-init-system-redesign/README.md +113 -0
  356. package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/README.md +69 -0
  357. package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/SUMMARY.md +112 -0
  358. package/.next/standalone/packages/ui/dist/standalone/specs/archived/005-structured-frontmatter/README.md +229 -0
  359. package/.next/standalone/packages/ui/dist/standalone/specs/archived/006-pm-visualization-tools/README.md +406 -0
  360. package/.next/standalone/packages/ui/dist/standalone/specs/archived/007-system-prompt-updates/README.md +168 -0
  361. package/.next/standalone/packages/ui/dist/standalone/specs/archived/008-commander-migration/README.md +174 -0
  362. package/.next/standalone/packages/ui/dist/standalone/specs/archived/009-cli-ux-enhancement/README.md +212 -0
  363. package/.next/standalone/packages/ui/dist/standalone/specs/archived/010-commands-refactor/README.md +249 -0
  364. package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/README.md +60 -0
  365. package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/TEST_SUMMARY.md +139 -0
  366. package/.next/standalone/packages/ui/dist/standalone/specs/archived/012-sub-spec-files/README.md +722 -0
  367. package/.next/standalone/packages/ui/dist/standalone/specs/archived/013-custom-spec-templates/README.md +413 -0
  368. package/.next/standalone/packages/ui/dist/standalone/specs/archived/015-npm-publishing/README.md +255 -0
  369. package/.next/standalone/packages/ui/dist/standalone/specs/archived/019-readme-improvement/README.md +252 -0
  370. package/.next/standalone/packages/ui/dist/standalone/specs/archived/020-documentation-website/README.md +253 -0
  371. package/.next/standalone/packages/ui/dist/standalone/specs/archived/021-docusaurus-vercel-migration/README.md +612 -0
  372. package/.next/standalone/packages/ui/dist/standalone/specs/archived/022-flexible-folder-structure/README.md +794 -0
  373. package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/DESIGN.md +834 -0
  374. package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/README.md +255 -0
  375. package/.next/standalone/packages/ui/dist/standalone/specs/archived/027-cli-ui-ux-optimization/README.md +454 -0
  376. package/.next/standalone/packages/ui/dist/standalone/specs/archived/028-cli-ui-modernization/README.md +172 -0
  377. package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/IMPLEMENTATION.md +152 -0
  378. package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/README.md +95 -0
  379. package/.next/standalone/packages/ui/dist/standalone/specs/archived/030-created-date-format-bug/README.md +87 -0
  380. package/.next/standalone/packages/ui/dist/standalone/specs/archived/031-gantt-ux-improvements/README.md +230 -0
  381. package/.next/standalone/packages/ui/dist/standalone/specs/archived/032-console-log-chalk-security/README.md +89 -0
  382. package/.next/standalone/packages/ui/dist/standalone/specs/archived/033-mcp-server/README.md +89 -0
  383. package/.next/standalone/packages/ui/dist/standalone/specs/archived/037-docs-overhaul/README.md +166 -0
  384. package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-flat-structure-migration/README.md +276 -0
  385. package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-mcp-frontmatter-bug-fix/README.md +122 -0
  386. package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-simplify-viewer-commands/README.md +198 -0
  387. package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-template-variable-sync/README.md +192 -0
  388. package/.next/standalone/packages/ui/dist/standalone/specs/archived/040-spec-viewer-commands/README.md +171 -0
  389. package/.next/standalone/packages/ui/dist/standalone/specs/archived/042-mcp-error-handling/README.md +200 -0
  390. package/.next/standalone/packages/ui/dist/standalone/specs/archived/044-spec-relationships-clarity/README.md +317 -0
  391. package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/DESIGN.md +276 -0
  392. package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/IMPLEMENTATION.md +241 -0
  393. package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/README.md +139 -0
  394. package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/TESTING.md +328 -0
  395. package/.next/standalone/packages/ui/dist/standalone/specs/archived/050-tool-redesign-first-principles/README.md +400 -0
  396. package/.next/standalone/packages/ui/dist/static/chunks/0c19c69aa7625475.js +1 -0
  397. package/.next/standalone/packages/ui/dist/static/chunks/116800b03245a1e5.js +1 -0
  398. package/.next/standalone/packages/ui/dist/static/chunks/15843a3d7584e314.js +1 -0
  399. package/.next/standalone/packages/ui/dist/static/chunks/19e80edf527aef5c.js +1 -0
  400. package/.next/standalone/packages/ui/dist/static/chunks/465954d5af3284a9.js +1 -0
  401. package/.next/standalone/packages/ui/dist/static/chunks/5abeeb89f1412a80.js +3 -0
  402. package/.next/standalone/packages/ui/dist/static/chunks/5c2072ad938de8ed.js +1 -0
  403. package/.next/standalone/packages/ui/dist/static/chunks/6a05a93ec8fa7b83.js +1 -0
  404. package/.next/standalone/packages/ui/dist/static/chunks/778e42188e450b39.css +1 -0
  405. package/.next/standalone/packages/ui/dist/static/chunks/a02c1f50ff00204f.js +1 -0
  406. package/.next/standalone/packages/ui/dist/static/chunks/a45464b9776dd88e.js +1 -0
  407. package/.next/standalone/packages/ui/dist/static/chunks/a6dad97d9634a72d.js +1 -0
  408. package/.next/standalone/packages/ui/dist/static/chunks/b0ea0ac61604f843.js +1 -0
  409. package/.next/standalone/packages/ui/dist/static/chunks/c06e85b449720194.js +1 -0
  410. package/.next/standalone/packages/ui/dist/static/chunks/c557ac675be79771.js +1 -0
  411. package/.next/standalone/packages/ui/dist/static/chunks/cad005a57ffbb2d3.js +1 -0
  412. package/.next/standalone/packages/ui/dist/static/chunks/cdf6fe33bc65efbc.js +1 -0
  413. package/.next/standalone/packages/ui/dist/static/chunks/d12ed5dbe44caed7.js +1 -0
  414. package/.next/standalone/packages/ui/dist/static/chunks/d1ebe5c1a344f4ca.js +5 -0
  415. package/.next/standalone/packages/ui/dist/static/chunks/d42cf1682bc46652.js +1 -0
  416. package/.next/standalone/packages/ui/dist/static/chunks/dde5d8bddd7fbfcf.js +1 -0
  417. package/.next/standalone/packages/ui/dist/static/chunks/ebd89051637b9a47.js +4 -0
  418. package/.next/standalone/packages/ui/dist/static/chunks/ec82875d18b29f47.js +2 -0
  419. package/.next/standalone/packages/ui/dist/static/chunks/f0b701df9769bcc5.js +19 -0
  420. package/.next/standalone/packages/ui/dist/static/chunks/turbopack-1c09a99f4c9e28d3.js +3 -0
  421. package/.next/standalone/packages/ui/package.json +1 -1
  422. package/.next/standalone/packages/ui/server.js +1 -1
  423. package/.next/standalone/packages/ui/src/app/api/dependencies/route.ts +4 -67
  424. package/.next/standalone/packages/ui/src/app/api/projects/[id]/dependencies/route.ts +3 -52
  425. package/.next/standalone/packages/ui/src/app/api/projects/[id]/specs/[spec]/dependency-graph/route.ts +129 -0
  426. package/.next/standalone/packages/ui/src/app/api/projects/[id]/specs/[spec]/metadata/route.ts +170 -0
  427. package/.next/standalone/packages/ui/src/app/api/projects/[id]/specs/[spec]/status/route.ts +9 -2
  428. package/.next/standalone/packages/ui/src/app/api/projects/[id]/tags/route.ts +25 -0
  429. package/.next/standalone/packages/ui/src/app/api/specs/[id]/metadata/route.ts +184 -0
  430. package/.next/standalone/packages/ui/src/app/api/tags/route.ts +16 -0
  431. package/.next/standalone/packages/ui/src/app/context/page.tsx +22 -0
  432. package/.next/standalone/packages/ui/src/app/dashboard-client.tsx +14 -4
  433. package/.next/standalone/packages/ui/src/app/dependencies/dependencies-client.tsx +2 -2
  434. package/.next/standalone/packages/ui/src/app/dependencies/page.tsx +25 -13
  435. package/.next/standalone/packages/ui/src/app/projects/[projectId]/dependencies/page.tsx +1 -14
  436. package/.next/standalone/packages/ui/src/app/projects/page.tsx +234 -113
  437. package/.next/standalone/packages/ui/src/app/specs/[id]/page.tsx +24 -1
  438. package/.next/standalone/packages/ui/src/app/specs/page.tsx +22 -0
  439. package/.next/standalone/packages/ui/src/app/specs/specs-client.tsx +1 -1
  440. package/.next/standalone/packages/ui/src/app/stats/page.tsx +22 -0
  441. package/.next/standalone/packages/ui/src/components/editable-spec-metadata.tsx +152 -0
  442. package/.next/standalone/packages/ui/src/components/main-sidebar.tsx +6 -0
  443. package/.next/standalone/packages/ui/src/components/priority-editor.tsx +153 -0
  444. package/.next/standalone/packages/ui/src/components/project-switcher.tsx +53 -8
  445. package/.next/standalone/packages/ui/src/components/spec-detail-client.tsx +23 -20
  446. package/.next/standalone/packages/ui/src/components/status-editor.tsx +153 -0
  447. package/.next/standalone/packages/ui/src/components/tags-editor.tsx +238 -0
  448. package/.next/standalone/packages/ui/src/components/ui/command.tsx +1 -1
  449. package/.next/standalone/packages/ui/src/lib/db/service-queries.ts +151 -15
  450. package/.next/standalone/packages/ui/src/lib/projects/registry.ts +1 -1
  451. package/.next/standalone/packages/ui/src/lib/specs/sources/multi-project-source.ts +21 -5
  452. package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
  453. package/.next/static/chunks/0c7bbb59865774a1.js +1 -0
  454. package/.next/static/chunks/0fe978002ba489fb.js +3 -0
  455. package/.next/static/chunks/1169d4ac8f9df687.js +1 -0
  456. package/.next/static/chunks/241b6b1c83610ebf.js +1 -0
  457. package/.next/static/chunks/39931c5cecf4c4b7.js +1 -0
  458. package/.next/static/chunks/6d7922838a3513a4.js +1 -0
  459. package/.next/{standalone/packages/ui/.next/static/chunks/7a00633903e066b4.js → static/chunks/781328ee279ffc41.js} +1 -1
  460. package/.next/static/chunks/937cb3894a606899.js +5 -0
  461. package/.next/static/chunks/9cf644b700f37825.css +1 -0
  462. package/.next/static/chunks/bc0f8f7f8dc0a352.js +1 -0
  463. package/.next/static/chunks/dbce73f7087f2470.js +10 -0
  464. package/.next/static/chunks/f0a083ac29b4b6c2.js +1 -0
  465. package/.next/static/s9uUE9DnvJD2xIz-iBGMe/_buildManifest.js +11 -0
  466. package/.next/static/s9uUE9DnvJD2xIz-iBGMe/_clientMiddlewareManifest.json +1 -0
  467. package/.next/static/s9uUE9DnvJD2xIz-iBGMe/_ssgManifest.js +1 -0
  468. package/package.json +2 -2
  469. package/.next/standalone/node_modules/.pnpm/source-map@0.8.0-beta.0/node_modules/source-map/package.json +0 -95
  470. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__18aca702._.js +0 -3
  471. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__27348781._.js +0 -3
  472. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3a7f0840._.js +0 -3
  473. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3e17db24._.js +0 -3
  474. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__6e06fd2a._.js +0 -3
  475. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__97b99cc0._.js +0 -3
  476. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__9d9758e1._.js +0 -3
  477. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b212b9bd._.js +0 -3
  478. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b9c03a57._.js +0 -3
  479. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e99e7672._.js +0 -3
  480. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f38a5f20._.js +0 -3
  481. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__fa8cf2bc._.js +0 -3
  482. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__53f4506c._.js +0 -3
  483. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__921689ca._.js +0 -3
  484. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a9d7fd42._.js +0 -3
  485. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b27b2469._.js +0 -3
  486. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b3633d6e._.js +0 -3
  487. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_03aa8d19._.js +0 -7
  488. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_28fe1532._.js +0 -5
  489. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_90eed09a._.js +0 -3
  490. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_f9129aae._.js +0 -3
  491. package/.next/standalone/packages/ui/.next/static/chunks/04de9ed512b8098b.js +0 -10
  492. package/.next/standalone/packages/ui/.next/static/chunks/3d12a8c3152b526d.js +0 -3
  493. package/.next/standalone/packages/ui/.next/static/chunks/7931c6cb379305b1.js +0 -1
  494. package/.next/standalone/packages/ui/.next/static/chunks/7f9a218732be8099.js +0 -5
  495. package/.next/standalone/packages/ui/.next/static/chunks/8a6e8f3394240dbb.js +0 -1
  496. package/.next/standalone/packages/ui/.next/static/chunks/8d8c106c6848d15b.js +0 -1
  497. package/.next/standalone/packages/ui/.next/static/chunks/a640b005f2e15d98.js +0 -1
  498. package/.next/standalone/packages/ui/.next/static/chunks/a7075a240adea8e8.js +0 -1
  499. package/.next/standalone/packages/ui/.next/static/chunks/ddb2935cfe5310c7.css +0 -1
  500. package/.next/standalone/packages/ui/.next/static/chunks/f924ae32752e1583.js +0 -1
  501. package/.next/static/chunks/04de9ed512b8098b.js +0 -10
  502. package/.next/static/chunks/3d12a8c3152b526d.js +0 -3
  503. package/.next/static/chunks/7931c6cb379305b1.js +0 -1
  504. package/.next/static/chunks/7f9a218732be8099.js +0 -5
  505. package/.next/static/chunks/8a6e8f3394240dbb.js +0 -1
  506. package/.next/static/chunks/8d8c106c6848d15b.js +0 -1
  507. package/.next/static/chunks/a640b005f2e15d98.js +0 -1
  508. package/.next/static/chunks/a7075a240adea8e8.js +0 -1
  509. package/.next/static/chunks/ddb2935cfe5310c7.css +0 -1
  510. package/.next/static/chunks/f924ae32752e1583.js +0 -1
  511. /package/.next/standalone/packages/ui/.next/static/{T8X9UGfigRL0qWZiBHNjy → s9uUE9DnvJD2xIz-iBGMe}/_buildManifest.js +0 -0
  512. /package/.next/standalone/packages/ui/.next/static/{T8X9UGfigRL0qWZiBHNjy → s9uUE9DnvJD2xIz-iBGMe}/_clientMiddlewareManifest.json +0 -0
  513. /package/.next/standalone/packages/ui/.next/static/{T8X9UGfigRL0qWZiBHNjy → s9uUE9DnvJD2xIz-iBGMe}/_ssgManifest.js +0 -0
  514. /package/.next/{static/T8X9UGfigRL0qWZiBHNjy → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_buildManifest.js +0 -0
  515. /package/.next/{static/T8X9UGfigRL0qWZiBHNjy → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_clientMiddlewareManifest.json +0 -0
  516. /package/.next/{static/T8X9UGfigRL0qWZiBHNjy → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_ssgManifest.js +0 -0
@@ -0,0 +1,794 @@
1
+ ---
2
+ status: complete
3
+ created: 2025-11-03
4
+ completed: 2025-11-03
5
+ tags: [core, ux]
6
+ priority: high
7
+ ---
8
+
9
+ # Flexible Folder Structure System
10
+
11
+ > Make spec organization configurable - support flat sequential (default), date-based, and custom patterns
12
+
13
+ ## Problem
14
+
15
+ **Current state**: LeanSpec hard-codes `<date>/<NNN-short-name>/` structure
16
+ - ✅ Good for chronological grouping
17
+ - ❌ Too complex for small teams/solo devs
18
+ - ❌ No flexibility for different workflows
19
+ - ❌ Two-level nesting adds navigation overhead
20
+
21
+ **Pain points:**
22
+ - Solo devs don't need date-based grouping (frontmatter `created` is enough)
23
+ - Teams want different patterns (sprint-based, milestone-based, flat)
24
+ - Current structure feels over-engineered for simple use cases
25
+ - References are verbose: `20251103/001-feature` vs `001-feature`
26
+
27
+ ## Proposal
28
+
29
+ **Make folder structure configurable** with sensible defaults that align with LeanSpec's "lean" philosophy.
30
+
31
+ ### When Does Folder Structure Actually Matter?
32
+
33
+ **The honest answer: It depends on your file browser usage patterns.**
34
+
35
+ **If you reference specs primarily through:**
36
+ - ✅ `lean-spec` commands → Structure doesn't matter (search/filter handles it)
37
+ - ✅ IDE search/grep → Structure doesn't matter (tools find it)
38
+ - ✅ GitHub PR links → Structure doesn't matter (direct links)
39
+
40
+ **If you reference specs by:**
41
+ - 📁 Browsing `specs/` in file explorer → Structure matters a lot
42
+ - 👀 Visually scanning folders → Structure affects discoverability
43
+ - 🗂️ Manual navigation → Structure impacts cognitive load
44
+
45
+ ### Supported Patterns
46
+
47
+ #### 1. **Flat Sequential** (Default - Recommended)
48
+ ```
49
+ specs/
50
+ ├── 001-typescript-cli-migration/
51
+ ├── 002-template-system-redesign/
52
+ ├── 011-docusaurus-vercel-migration/
53
+ └── archived/
54
+ ```
55
+
56
+ **Config:**
57
+ ```json
58
+ {
59
+ "structure": {
60
+ "pattern": "flat",
61
+ "sequenceDigits": 3
62
+ }
63
+ }
64
+ ```
65
+
66
+ **Optional: Add prefix to spec folders (still flat, just with naming)**
67
+ ```json
68
+ {
69
+ "structure": {
70
+ "pattern": "flat",
71
+ "sequenceDigits": 3,
72
+ "prefix": "{YYYYMMDD}-" // Optional prefix pattern
73
+ }
74
+ }
75
+ ```
76
+
77
+ **Examples with prefixes:**
78
+ - `"prefix": "{YYYYMMDD}-"` → `20251103-001-feature/`
79
+ - `"prefix": "{YYYY-MM}-"` → `2025-11-001-feature/`
80
+ - `"prefix": "spec-"` → `spec-001-feature/`
81
+ - No prefix (default) → `001-feature/`
82
+
83
+ **Result with date prefix:**
84
+ ```
85
+ specs/
86
+ ├── 20251031-001-typescript-cli-migration/
87
+ ├── 20251031-002-template-system-redesign/
88
+ ├── 20251103-003-flexible-folder-structure/
89
+ └── archived/
90
+ ```
91
+
92
+ **Pros:**
93
+ - ✅ Simplest mental model (one flat list)
94
+ - ✅ Minimal navigation (no nested folders)
95
+ - ✅ Easy references: `lean-spec update 11` or just `011-docusaurus-vercel`
96
+ - ✅ File explorer shows all specs at once
97
+ - ✅ Works like GitHub issues (familiar pattern)
98
+ - ✅ No cognitive overhead deciding "which folder?"
99
+ - ✅ Optional prefix gives chronological sorting without nesting
100
+
101
+ **Cons:**
102
+ - ❌ Long list in file explorer if 100+ specs (mitigated by date prefix sorting)
103
+ - ❌ Can't easily see "what was worked on in October?" (unless using date prefix)
104
+ - ❌ Requires frontmatter `created` for timeline views (or use date prefix)
105
+
106
+ **Best for:**
107
+ - Solo developers
108
+ - Small teams (< 50 specs)
109
+ - Projects using `lean-spec` commands primarily
110
+ - Teams who filter/search rather than browse
111
+ - Anyone who wants chronological sorting without folder nesting
112
+
113
+ ---
114
+
115
+ #### 2. **Custom Pattern** (Flexible - Automatic Grouping)
116
+
117
+ Any nested grouping structure extracted from frontmatter or date functions.
118
+
119
+ ##### Example A: Date-Based (Current LeanSpec behavior)
120
+ ```
121
+ specs/
122
+ ├── 20251031/
123
+ │ ├── 001-typescript-cli-migration/
124
+ │ └── 002-template-system-redesign/
125
+ ├── 20251103/
126
+ │ └── 003-flexible-folder-structure/
127
+ └── archived/
128
+ ```
129
+
130
+ **Config:**
131
+ ```json
132
+ {
133
+ "structure": {
134
+ "pattern": "custom",
135
+ "groupExtractor": "{YYYYMMDD}",
136
+ "sequenceDigits": 3
137
+ }
138
+ }
139
+ ```
140
+
141
+ **Built-in date functions:**
142
+ - `{YYYYMMDD}` → `20251103`
143
+ - `{YYYY-MM-DD}` → `2025-11-03`
144
+ - `{YYYY-MM}` → `2025-11`
145
+ - `{YYYY}` → `2025`
146
+
147
+ ---
148
+
149
+ ##### Example B: Month-Based
150
+ ```
151
+ specs/
152
+ ├── 2025-11/
153
+ │ ├── 001-typescript-cli-migration/
154
+ │ └── 011-docusaurus-vercel/
155
+ ├── 2025-12/
156
+ │ └── 012-new-feature/
157
+ └── archived/
158
+ ```
159
+
160
+ **Config:**
161
+ ```json
162
+ {
163
+ "structure": {
164
+ "pattern": "custom",
165
+ "groupExtractor": "{YYYY-MM}",
166
+ "sequenceDigits": 3
167
+ }
168
+ }
169
+ ```
170
+
171
+ ---
172
+
173
+ ##### Example C: Milestone-Based
174
+ ```
175
+ specs/
176
+ ├── milestone-1/
177
+ │ ├── 001-feature-a/
178
+ │ └── 002-feature-b/
179
+ ├── milestone-2/
180
+ │ └── 003-feature-c/
181
+ └── archived/
182
+ ```
183
+
184
+ **Config:**
185
+ ```json
186
+ {
187
+ "structure": {
188
+ "pattern": "custom",
189
+ "groupExtractor": "milestone-{milestone}",
190
+ "groupFallback": "backlog",
191
+ "sequenceDigits": 3
192
+ }
193
+ }
194
+ ```
195
+
196
+ ---
197
+
198
+ ##### Example D: Sprint-Based
199
+ ```
200
+ specs/
201
+ ├── sprint-14/
202
+ ├── sprint-15/
203
+ │ ├── 023-checkout-flow/
204
+ │ └── 024-payment-integration/
205
+ └── archived/
206
+ ```
207
+
208
+ **Config:**
209
+ ```json
210
+ {
211
+ "structure": {
212
+ "pattern": "custom",
213
+ "groupExtractor": "sprint-{sprint}",
214
+ "groupFallback": "backlog",
215
+ "sequenceDigits": 3
216
+ }
217
+ }
218
+ ```
219
+
220
+ ---
221
+
222
+ ##### Example E: Release-Based
223
+ ```
224
+ specs/
225
+ ├── v1.0/
226
+ ├── v2.0/
227
+ │ ├── 042-new-api/
228
+ │ └── 043-breaking-changes/
229
+ ├── v3.0/
230
+ └── archived/
231
+ ```
232
+
233
+ **Config:**
234
+ ```json
235
+ {
236
+ "structure": {
237
+ "pattern": "custom",
238
+ "groupExtractor": "v{version}",
239
+ "groupFallback": "upcoming",
240
+ "sequenceDigits": 3
241
+ }
242
+ }
243
+ ```
244
+
245
+ ---
246
+
247
+ ### Custom Pattern: How It Works
248
+
249
+ **Automatic group extraction:**
250
+
251
+ ```yaml
252
+ # User creates spec with custom field
253
+ ---
254
+ status: planned
255
+ created: 2025-11-03
256
+ milestone: 1 # ← This determines folder
257
+ ---
258
+ ```
259
+
260
+ ```bash
261
+ # LeanSpec automatically creates milestone-1/ folder
262
+ lean-spec create feature-a --field milestone=1
263
+ # → specs/milestone-1/001-feature-a/
264
+
265
+ lean-spec create feature-b --field milestone=1
266
+ # → specs/milestone-1/002-feature-b/
267
+
268
+ lean-spec create feature-c --field milestone=2
269
+ # → specs/milestone-2/003-feature-c/ # Auto-creates milestone-2/
270
+
271
+ # Missing field uses fallback
272
+ lean-spec create docs
273
+ # → specs/backlog/004-docs/ # Uses groupFallback
274
+ ```
275
+
276
+ **Built-in extractors:**
277
+ - Date functions: `{YYYYMMDD}`, `{YYYY-MM-DD}`, `{YYYY-MM}`, `{YYYY}`, `{MM}`, `{DD}`
278
+ - Frontmatter fields: `{fieldname}` → reads from `frontmatter.fieldname`
279
+ - Combined: `{YYYY}/Q{quarter}` → `2025/Q4`
280
+
281
+ **Pros:**
282
+ - ✅ No manual folder management (auto-created)
283
+ - ✅ Infinitely flexible (any grouping you want)
284
+ - ✅ Semantic grouping (feature-related specs together)
285
+ - ✅ Works with existing frontmatter fields
286
+ - ✅ Date-based is just a special case
287
+
288
+ **Cons:**
289
+ - ❌ Two-level nesting
290
+ - ❌ Need custom frontmatter fields for non-date grouping
291
+ - ❌ Specs without field go to fallback folder
292
+ - ❌ More complex config
293
+
294
+ **Best for:**
295
+ - Milestone/epic/sprint-based planning
296
+ - Release-driven development
297
+ - Time-boxed workflows (date/month grouping)
298
+ - Large teams (100+ specs)
299
+ - Teams with structured planning
300
+
301
+ ---
302
+
303
+ ## Comparison Matrix
304
+
305
+ | Pattern | Navigation | Discovery | Maintenance | Cognitive Load | Best Team Size |
306
+ |---------|-----------|-----------|-------------|----------------|----------------|
307
+ | **Flat** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | Solo - Small |
308
+ | **Custom (Date)** | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | Medium - Large |
309
+ | **Custom (Month)** | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | Small - Medium |
310
+ | **Custom (Fields)** | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | Medium - Large |
311
+
312
+ **Navigation**: How easy to browse to a spec
313
+ **Discovery**: How easy to find related specs
314
+ **Maintenance**: How much manual organization needed (auto-creation = better)
315
+ **Cognitive Load**: Mental effort to use the system
316
+
317
+ ---
318
+
319
+ ## Design
320
+
321
+ ### Config Schema
322
+
323
+ ```typescript
324
+ export interface LeanSpecConfig {
325
+ // ... other fields
326
+ structure: {
327
+ pattern: 'flat' | 'custom';
328
+ sequenceDigits: number;
329
+ defaultFile: string;
330
+ prefix?: string; // For flat pattern: "{YYYYMMDD}-" or "spec-" (optional)
331
+ groupExtractor?: string; // For custom pattern: "{YYYYMMDD}" or "milestone-{milestone}"
332
+ groupFallback?: string; // Fallback folder if field missing (only for non-date extractors)
333
+ };
334
+ }
335
+ ```
336
+
337
+ **Pattern behavior:**
338
+ - `pattern: 'flat'` → Single level, optionally with `prefix` on folder names
339
+ - `pattern: 'custom'` → Two levels with `groupExtractor` determining parent folder
340
+
341
+ ### Pattern Resolution Logic
342
+
343
+ ```typescript
344
+ function resolveSpecPath(name: string, config: LeanSpecConfig, options?: CreateOptions): string {
345
+ const seq = await getGlobalNextSequence(config);
346
+
347
+ if (config.structure.pattern === 'flat') {
348
+ // Flat pattern: optional prefix on folder name
349
+ const prefix = config.structure.prefix
350
+ ? resolvePrefix(config.structure.prefix, options?.customFields)
351
+ : '';
352
+ return `${prefix}${seq}-${name}`;
353
+ }
354
+
355
+ // Custom pattern - extract group from extractor string
356
+ const group = extractGroup(
357
+ config.structure.groupExtractor,
358
+ options?.customFields,
359
+ config.structure.groupFallback
360
+ );
361
+
362
+ return `${group}/${seq}-${name}`;
363
+ }
364
+
365
+ function resolvePrefix(
366
+ prefix: string, // e.g., "{YYYYMMDD}-" or "spec-"
367
+ fields?: Record<string, unknown>
368
+ ): string {
369
+ // Replace date functions
370
+ const dateReplacements = {
371
+ '{YYYYMMDD}': () => getToday('YYYYMMDD'),
372
+ '{YYYY-MM-DD}': () => getToday('YYYY-MM-DD'),
373
+ '{YYYY-MM}': () => getToday('YYYY-MM'),
374
+ '{YYYY}': () => new Date().getFullYear().toString(),
375
+ '{MM}': () => String(new Date().getMonth() + 1).padStart(2, '0'),
376
+ '{DD}': () => String(new Date().getDate()).padStart(2, '0'),
377
+ };
378
+
379
+ let result = prefix;
380
+
381
+ for (const [pattern, fn] of Object.entries(dateReplacements)) {
382
+ result = result.replace(pattern, fn());
383
+ }
384
+
385
+ // Could also support frontmatter fields in prefix if needed
386
+ // For now, keep it simple with date functions only
387
+
388
+ return result;
389
+ }
390
+
391
+ function extractGroup(
392
+ extractor: string, // e.g., "{YYYYMMDD}" or "milestone-{milestone}"
393
+ fields?: Record<string, unknown>,
394
+ fallback?: string
395
+ ): string {
396
+ // Replace date functions
397
+ const dateReplacements = {
398
+ '{YYYYMMDD}': () => getToday('YYYYMMDD'),
399
+ '{YYYY-MM-DD}': () => getToday('YYYY-MM-DD'),
400
+ '{YYYY-MM}': () => getToday('YYYY-MM'),
401
+ '{YYYY}': () => new Date().getFullYear().toString(),
402
+ '{MM}': () => String(new Date().getMonth() + 1).padStart(2, '0'),
403
+ '{DD}': () => String(new Date().getDate()).padStart(2, '0'),
404
+ };
405
+
406
+ let result = extractor;
407
+
408
+ // Replace date functions first
409
+ for (const [pattern, fn] of Object.entries(dateReplacements)) {
410
+ result = result.replace(pattern, fn());
411
+ }
412
+
413
+ // Replace frontmatter fields: {fieldname}
414
+ const fieldMatches = result.match(/\{([^}]+)\}/g);
415
+ if (fieldMatches) {
416
+ for (const match of fieldMatches) {
417
+ const fieldName = match.slice(1, -1); // Remove { }
418
+ const fieldValue = fields?.[fieldName];
419
+
420
+ if (fieldValue === undefined) {
421
+ if (!fallback) {
422
+ throw new Error(`Custom field '${fieldName}' required but not provided`);
423
+ }
424
+ return fallback;
425
+ }
426
+
427
+ result = result.replace(match, String(fieldValue));
428
+ }
429
+ }
430
+
431
+ return result;
432
+ }
433
+ ```
434
+
435
+ **Examples:**
436
+ ```typescript
437
+ // Flat with no prefix (default)
438
+ resolveSpecPath("my-feature", { pattern: 'flat', sequenceDigits: 3 })
439
+ // → "001-my-feature"
440
+
441
+ // Flat with date prefix
442
+ resolveSpecPath("my-feature", {
443
+ pattern: 'flat',
444
+ sequenceDigits: 3,
445
+ prefix: "{YYYYMMDD}-"
446
+ })
447
+ // → "20251103-001-my-feature"
448
+
449
+ // Flat with custom prefix
450
+ resolveSpecPath("my-feature", {
451
+ pattern: 'flat',
452
+ sequenceDigits: 3,
453
+ prefix: "spec-"
454
+ })
455
+ // → "spec-001-my-feature"
456
+
457
+ // Custom with date grouping
458
+ extractGroup("{YYYYMMDD}", {})
459
+ // → "20251103"
460
+ // Full path: "20251103/001-my-feature"
461
+
462
+ // Custom with frontmatter grouping
463
+ extractGroup("milestone-{milestone}", { milestone: 1 }, "backlog")
464
+ // → "milestone-1"
465
+ // Full path: "milestone-1/001-my-feature"
466
+ ```
467
+
468
+ ### Sequential Number Calculation
469
+
470
+ **All patterns use global unique sequence numbers:**
471
+
472
+ ```typescript
473
+ // Sequence always spans entire specs/ directory
474
+ // This ensures unique IDs regardless of folder structure
475
+ const seq = await getGlobalNextSeq(specsDir, config.structure.sequenceDigits);
476
+
477
+ // Example:
478
+ // specs/001-feature-a/
479
+ // specs/002-feature-b/
480
+ // specs/20251103/003-feature-c/ ← Still uses global sequence
481
+ // specs/2025-11/004-feature-d/ ← Continues global sequence
482
+ ```
483
+
484
+ **Why global sequences:**
485
+ - ✅ Unique references: `lean-spec update 5` is unambiguous
486
+ - ✅ Simple mental model: Numbers never repeat
487
+ - ✅ Works like GitHub issues/PRs
488
+ - ✅ No confusion when switching patterns
489
+ - ✅ Archives don't break references
490
+
491
+ **Implementation:**
492
+ ```typescript
493
+ async function getGlobalNextSeq(specsDir: string, digits: number): Promise<string> {
494
+ // Scan ALL subdirectories recursively for NNN- pattern
495
+ const allSpecs = await loadAllSpecs();
496
+ const seqNumbers = allSpecs
497
+ .map(spec => parseInt(spec.name.match(/^(\d+)-/)?.[1] || '0', 10))
498
+ .filter(n => !isNaN(n) && n > 0);
499
+
500
+ const maxSeq = seqNumbers.length > 0 ? Math.max(...seqNumbers) : 0;
501
+ return String(maxSeq + 1).padStart(digits, '0');
502
+ }
503
+ ```
504
+
505
+ ### Migration Strategy
506
+
507
+ **Default for new projects:** `flat`
508
+
509
+ **Existing projects:** Keep current structure unless explicitly changed
510
+
511
+ **Config migration:**
512
+ ```typescript
513
+ // On lean-spec init, detect existing structure
514
+ const hasDateDirs = await detectDateDirectories(specsDir);
515
+
516
+ if (hasDateDirs) {
517
+ config.structure.pattern = 'date'; // Preserve existing
518
+ } else {
519
+ config.structure.pattern = 'flat'; // Use new default
520
+ }
521
+ ```
522
+
523
+ ### Spec References
524
+
525
+ Commands should support multiple reference formats:
526
+
527
+ ```bash
528
+ # By number (works for all patterns)
529
+ lean-spec update 11 --status complete
530
+
531
+ # By name (searches across all groups)
532
+ lean-spec update flexible-folder-structure --status complete
533
+
534
+ # By full path (explicit)
535
+ lean-spec update 20251103/001-flexible-folder-structure --status complete
536
+ ```
537
+
538
+ Existing `resolveSpecPath()` handles this already!
539
+
540
+ ## Implementation Plan
541
+
542
+ ### Phase 1: Config Schema ✅
543
+ - [x] Update `LeanSpecConfig` interface with `pattern` field
544
+ - [x] Add pattern validation
545
+ - [x] Set default to `flat` for new projects
546
+ - [x] Detect existing structure on init
547
+
548
+ ### Phase 2: Path Resolution ✅
549
+ - [x] Refactor `create.ts` to use pattern-based paths
550
+ - [x] Update `getNextSeq()` to handle flat vs grouped
551
+ - [x] Test all patterns with sequential numbering
552
+
553
+ ### Phase 3: Command Updates ⚠️
554
+ - [x] Update `create` command
555
+ - [x] Update `list` command (group display logic) - **Minor issue: still hardcoded to date grouping**
556
+ - [x] Update `board` command
557
+ - [x] Update `search` command
558
+ - [x] Update `archive` command
559
+
560
+ ### Phase 4: Migration Tools ✅
561
+ - [x] Add `normalizeLegacyPattern()` to convert patterns automatically
562
+ - [x] Detect current structure automatically
563
+ - [x] Warn about breaking changes
564
+
565
+ ### Phase 5: Documentation ⚠️
566
+ - [ ] Update README with pattern examples
567
+ - [ ] Add pattern selection to `lean-spec init` wizard
568
+ - [ ] Document migration guide
569
+ - [x] Update template configs - **Issue: Templates still use legacy format**
570
+
571
+ ### Phase 6: Testing ✅
572
+ - [x] Integration tests for all patterns
573
+ - [x] Test sequential number consistency
574
+ - [x] Test spec resolution across patterns
575
+ - [x] Test migration between patterns
576
+
577
+ ## Files to Modify
578
+
579
+ ### Core
580
+ - `src/config.ts` - Add pattern field, update schema
581
+ - `src/commands/create.ts` - Pattern-based path resolution
582
+ - `src/utils/path-helpers.ts` - Update `getNextSeq()`, `resolveSpecPath()`
583
+ - `src/spec-loader.ts` - Handle different directory structures
584
+
585
+ ### Commands
586
+ - `src/commands/list.ts` - Group display by pattern
587
+ - `src/commands/board.ts` - Pattern-aware grouping
588
+ - `src/commands/search.ts` - Search across patterns
589
+ - `src/commands/archive.ts` - Archive to pattern-agnostic location
590
+ - `src/commands/init.ts` - Pattern selection wizard
591
+
592
+ ### New Commands
593
+ - `src/commands/migrate.ts` - Convert between patterns
594
+
595
+ ### Tests
596
+ - `src/integration.test.ts` - Add pattern scenarios
597
+ - `src/commands.test.ts` - Test all patterns
598
+
599
+ ### Templates
600
+ - `templates/*/config.json` - Add pattern field with defaults
601
+
602
+ ### Documentation
603
+ - `README.md` - Show pattern examples
604
+ - `docs-site/docs/guide/getting-started.md` - Pattern selection
605
+ - `docs-site/docs/reference/config.md` - Pattern reference
606
+
607
+ ## Success Criteria
608
+
609
+ - [x] New projects default to flat pattern
610
+ - [x] Existing projects preserve date-based structure
611
+ - [x] All 4 patterns (flat, date, month, custom) work correctly
612
+ - [x] Sequential numbering consistent within each pattern
613
+ - [x] Spec references work across all patterns
614
+ - [x] Migration between patterns doesn't break links
615
+ - [ ] `lean-spec init` offers pattern selection
616
+ - [ ] Documentation covers all patterns
617
+ - [x] Zero breaking changes for existing users
618
+
619
+ ## Implementation Status
620
+
621
+ **Status: ✅ COMPLETE** (2025-11-03)
622
+
623
+ ### ✅ What's Working
624
+
625
+ 1. **Core Implementation**
626
+ - Config schema with `pattern`, `prefix`, `groupExtractor`, `groupFallback` fields
627
+ - `resolvePrefix()` and `extractGroup()` functions for path resolution
628
+ - `getGlobalNextSeq()` for global unique sequence numbers
629
+ - `normalizeLegacyPattern()` for backward compatibility
630
+
631
+ 2. **Pattern Support**
632
+ - ✅ Flat pattern (default)
633
+ - ✅ Flat with date prefix (`{YYYYMMDD}-`)
634
+ - ✅ Flat with custom prefix (`spec-`)
635
+ - ✅ Custom pattern with date grouping (`{YYYYMMDD}`, `{YYYY-MM}`, etc.)
636
+ - ✅ Custom pattern with field grouping (`milestone-{milestone}`)
637
+
638
+ 3. **Commands**
639
+ - ✅ `create` - Fully pattern-aware
640
+ - ✅ `archive` - Archives to flat `specs/archived/`
641
+ - ✅ `update` - Resolves specs across patterns
642
+ - ✅ `board` - Pattern-agnostic
643
+ - ✅ `search` - Pattern-agnostic
644
+
645
+ 4. **Testing**
646
+ - ✅ 10 tests covering all patterns
647
+ - ✅ All 98 tests passing
648
+ - ✅ Flat pattern tests (3)
649
+ - ✅ Custom date grouping tests (3)
650
+ - ✅ Custom field grouping tests (3)
651
+ - ✅ Legacy compatibility test (1)
652
+
653
+ ### ⚠️ Minor Issues
654
+
655
+ 1. **`list.ts` hardcoded date grouping**
656
+ - Lines 64-65: `const dateMatch = spec.path.match(/^(\d{8})\//)`
657
+ - Currently assumes date-based structure for grouping
658
+ - **Impact**: Display grouping doesn't adapt to pattern
659
+ - **Fix needed**: Make grouping pattern-aware or add `--no-grouping` flag
660
+
661
+ 2. **Template configs use legacy format**
662
+ - All templates (`minimal`, `standard`, `enterprise`) use: `"pattern": "{date}/{seq}-{name}/"`
663
+ - Works via `normalizeLegacyPattern()` but inconsistent
664
+ - **Fix needed**: Update to `"pattern": "flat"` or `"pattern": "custom", "groupExtractor": "{YYYYMMDD}"`
665
+
666
+ ### 📋 Remaining Work (Optional Polish)
667
+
668
+ 1. **Pattern selection wizard in `lean-spec init`**
669
+ - Currently line 72-74 shows TODO for custom setup flow
670
+ - Would improve UX to let users choose pattern during init
671
+
672
+ 2. **Documentation updates**
673
+ - Add pattern examples to README
674
+ - Document all supported patterns
675
+ - Migration guide for switching patterns
676
+
677
+ 3. **Enhanced `list` command**
678
+ - Smart grouping based on active pattern
679
+ - `--flat` flag for ungrouped list view
680
+
681
+ ### 🎯 Verification Results
682
+
683
+ **Test Run**: All tests passing (98/98)
684
+ - Flexible Folder Structure: 10/10 ✅
685
+ - Integration tests: 5/5 ✅
686
+ - Command tests: 30/30 ✅
687
+ - Other tests: 53/53 ✅
688
+
689
+ **Files Modified**:
690
+ - ✅ `src/config.ts` - Schema + helper functions
691
+ - ✅ `src/commands/create.ts` - Pattern-based creation
692
+ - ✅ `src/commands/archive.ts` - Flat archive structure
693
+ - ✅ `src/utils/path-helpers.ts` - Global sequence + resolution
694
+ - ✅ `src/commands.test.ts` - Comprehensive test coverage
695
+
696
+ **Backward Compatibility**: ✅ Zero breaking changes
697
+ - Legacy patterns auto-converted
698
+ - Existing date-based projects continue working
699
+ - Archive behavior consistent
700
+
701
+ ## Open Questions
702
+
703
+ 1. **~~Should flat pattern use global sequence or allow resets?~~**
704
+ - ✅ **Resolved**: Global unique sequence for all patterns
705
+ - Ensures unique references and simple mental model
706
+
707
+ 2. **~~Custom pattern syntax:~~**
708
+ - ✅ **Resolved**: Extract from frontmatter fields automatically
709
+ - Pattern: `"milestone-{milestone}"` reads `frontmatter.milestone`
710
+ - Supports any custom field defined in config
711
+
712
+ 3. **~~What should happen if custom field is missing?~~**
713
+ - ✅ **Resolved**: Use fallback folder configured in `groupFallback`
714
+ - Example: `"groupFallback": "backlog"` → specs go to `specs/backlog/`
715
+ - Keeps workflow smooth without errors
716
+
717
+ 4. **~~Archive behavior across patterns:~~**
718
+ - ✅ **Resolved**: All patterns archive to `specs/archived/` (flat structure)
719
+ - **Why flat in archived**: Archived specs don't need organizational structure
720
+ - Simplifies discovery: all archived specs in one place
721
+ - Example: `specs/archived/001-old-feature/`, `specs/archived/042-deprecated/`
722
+
723
+ 5. **~~What happens when switching patterns?~~**
724
+ - ✅ **Resolved**: Legacy patterns auto-converted via `normalizeLegacyPattern()`
725
+ - Old structure remains, new specs use new pattern
726
+ - No manual migration required
727
+ - Backward compatible
728
+
729
+ 6. **Display in `lean-spec list` for flat pattern:**
730
+ - ⚠️ **Partially Resolved**: Currently hardcoded to date grouping
731
+ - **Options considered**:
732
+ - Group by month from frontmatter `created` ✓ (best for chronological view)
733
+ - Flat list with `--no-grouping` flag ✓ (best for simplicity)
734
+ - Both: smart default + flag override
735
+ - **Recommendation**: Add `--flat` flag, default to month grouping from frontmatter
736
+
737
+ ## Why This Matters
738
+
739
+ **Aligns with LeanSpec philosophy:**
740
+ - ✅ Simple default (flat) for 80% of users
741
+ - ✅ Flexible enough for complex workflows
742
+ - ✅ Progressive complexity (start simple, add structure when needed)
743
+ - ✅ No forced overhead
744
+
745
+ **Competitive advantage:**
746
+ - Other SDD tools force their structure
747
+ - LeanSpec adapts to YOUR workflow
748
+
749
+ **User experience:**
750
+ - Easier references: `lean-spec update 5` vs `lean-spec update 20251103/001-feature`
751
+ - Less navigation overhead
752
+ - Familiar pattern (like GitHub issues)
753
+ - Still supports chronological grouping when needed
754
+
755
+ ---
756
+
757
+ ## Implementation Notes
758
+
759
+ ### Key Design Decisions
760
+
761
+ 1. **Global Sequence Numbers**
762
+ - All patterns share a single sequence counter
763
+ - Prevents ID conflicts when switching patterns
764
+ - Familiar mental model (like GitHub issues)
765
+ - Implementation: `getGlobalNextSeq()` scans recursively
766
+
767
+ 2. **Backward Compatibility**
768
+ - `normalizeLegacyPattern()` converts old format automatically
769
+ - Legacy: `"{date}/{seq}-{name}/"` → New: `pattern: "custom", groupExtractor: "{YYYYMMDD}"`
770
+ - Zero breaking changes for existing users
771
+
772
+ 3. **Archive Strategy**
773
+ - All patterns archive to flat `specs/archived/`
774
+ - Simplifies discovery and reduces complexity
775
+ - Archived specs don't need organizational structure
776
+
777
+ 4. **Pattern-Agnostic Resolution**
778
+ - `resolveSpecPath()` finds specs by number, name, or path
779
+ - Works across all patterns seamlessly
780
+ - Supports multiple reference formats: `5`, `001-feature`, `milestone-1/001-feature`
781
+
782
+ ### Performance Considerations
783
+
784
+ - `getGlobalNextSeq()` scans entire specs directory
785
+ - Performance impact minimal for < 1000 specs
786
+ - Could cache sequence number if needed (future optimization)
787
+
788
+ ### Testing Strategy
789
+
790
+ - Comprehensive integration tests for each pattern
791
+ - Test global sequence consistency across patterns
792
+ - Test legacy pattern conversion
793
+ - Test archive behavior
794
+ - Test spec resolution across patterns