@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.
- package/.next/standalone/node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
- package/.next/standalone/packages/ui/.next/BUILD_ID +1 -1
- package/.next/standalone/packages/ui/.next/app-path-routes-manifest.json +5 -0
- package/.next/standalone/packages/ui/.next/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/prerender-manifest.json +3 -3
- package/.next/standalone/packages/ui/.next/required-server-files.json +4 -4
- package/.next/standalone/packages/ui/.next/routes-manifest.json +40 -0
- package/.next/standalone/packages/ui/.next/server/app/_global-error/page.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_not-found.rsc +18 -20
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_full.segment.rsc +18 -20
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_index.segment.rsc +23 -26
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_tree.segment.rsc +5 -5
- package/.next/standalone/packages/ui/.next/server/app/api/context/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/context/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/[id]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/discover/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/list-directory/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/revalidate/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/metadata/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/status/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/subspecs/[file]/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/subspecs/[file]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/stats/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/stats/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/tags/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/tags/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/tags/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/tags/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/tags/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/tags/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/tags/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page.js +4 -3
- package/.next/standalone/packages/ui/.next/server/app/context/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/context/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js +4 -3
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects.rsc +24 -25
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +24 -25
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_index.segment.rsc +20 -24
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/page.js +4 -3
- package/.next/standalone/packages/ui/.next/server/app/specs/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/stats/page.js +4 -3
- package/.next/standalone/packages/ui/.next/server/app/stats/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/stats/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app-paths-manifest.json +5 -0
- package/.next/standalone/packages/ui/.next/server/chunks/284a8_app_api_projects_[id]_specs_[spec]_dependency-graph_route_actions_f18476ed.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/730ea_ui__next-internal_server_app_api_projects_[id]_tags_route_actions_40899744.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/730ea_ui__next-internal_server_app_api_specs_[id]_metadata_route_actions_139bb09f.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0afcada7._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0e63a440._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0ec6f9b0._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0edb782a._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0fbfea15._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__1706515f._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__1f037512._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__38780e00._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3a535244._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__41f43652._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__5081ac6f._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__526764b2._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__548e27d4._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__71d98924._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__74af400b._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8075fe29._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__9ce722b4._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__9cf3bf21._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__a2d7cbed._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b1ad8b69._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__c7a4906b._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__de15d2aa._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e16f7651._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e2fcb5c6._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e8d9903e._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f6936b89._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/f825c_server_app_api_projects_[id]_specs_[spec]_metadata_route_actions_35af9a8c.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui__next-internal_server_app_api_tags_route_actions_64625b2c.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__01bfc8ff._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__13f96ef4._.js → [root-of-the-server]__174e1ca1._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__38c56adc._.js → [root-of-the-server]__2d9202e8._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__338c65fe._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__366688dd._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__44b603f9._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__4ec37765._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__69a0d63a._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__7f55abaa._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__c158c9a9._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__c7735439._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__e2c760eb._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__84124d4b._.js → [root-of-the-server]__ead1539c._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__ec5b96a5._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_000dd317._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_adb9d7cb._.js → _22274047._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_59616aa6._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_5e1484f9._.js +7 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_8ab6f9ca._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_be836d6a._.js +5 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_ec637d7c._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_projects_page_tsx_6e166c8e._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_specs_specs-client_tsx_0bb8f8f8._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_spec-detail-wrapper_tsx_fd35401c._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/pages/404.html +2 -2
- package/.next/standalone/packages/ui/.next/server/pages/500.html +2 -2
- package/.next/standalone/packages/ui/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/0c7bbb59865774a1.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/0fe978002ba489fb.js +3 -0
- package/.next/standalone/packages/ui/.next/static/chunks/1169d4ac8f9df687.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/241b6b1c83610ebf.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/39931c5cecf4c4b7.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/6d7922838a3513a4.js +1 -0
- package/.next/{static/chunks/7a00633903e066b4.js → standalone/packages/ui/.next/static/chunks/781328ee279ffc41.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/937cb3894a606899.js +5 -0
- package/.next/standalone/packages/ui/.next/static/chunks/9cf644b700f37825.css +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/bc0f8f7f8dc0a352.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/dbce73f7087f2470.js +10 -0
- package/.next/standalone/packages/ui/.next/static/chunks/f0a083ac29b4b6c2.js +1 -0
- package/.next/standalone/packages/ui/dist/BUILD_ID +1 -0
- package/.next/standalone/packages/ui/dist/public/f864aa7e7061c0600e35cf3d879b27cf.txt +1 -0
- package/.next/standalone/packages/ui/dist/public/favicon.ico +0 -0
- package/.next/standalone/packages/ui/dist/public/file.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/github-mark-white.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/github-mark.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/globe.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/icon.svg +7 -0
- package/.next/standalone/packages/ui/dist/public/logo-dark-bg.svg +17 -0
- package/.next/standalone/packages/ui/dist/public/logo-with-bg.svg +17 -0
- package/.next/standalone/packages/ui/dist/public/logo.svg +17 -0
- package/.next/standalone/packages/ui/dist/public/next.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/vercel.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/window.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/README.md +196 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/package.json +75 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/server.js +44 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/014-complete-custom-frontmatter/README.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/016-github-action/README.md +317 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/017-vscode-extension/README.md +261 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CLI-DESIGN.md +380 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION-EXAMPLES.md +230 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION.md +285 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/IMPLEMENTATION.md +358 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/README.md +303 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/TESTING.md +368 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/VALIDATION-RULES.md +327 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/024-pattern-aware-list-grouping/README.md +117 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/025-template-config-updates/README.md +73 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/026-init-pattern-selection/README.md +109 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/034-copilot-slash-commands/README.md +107 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/ARCHITECTURE.md +244 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/IMPLEMENTATION.md +429 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/README.md +302 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/036-pm-integrations/README.md +158 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-AI-ASSISTED.md +359 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-FULL-LIFECYCLE.md +86 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-REAL-FEATURE.md +437 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-SCRIPT.md +365 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-FINAL.md +203 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SESSION-2025-11-06.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SUMMARY.md +156 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/IMPLEMENTATION.md +183 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/MARKETING.md +229 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/NEXT-STEPS-DEMO.md +243 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/README.md +217 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/SESSION-2025-11-06.md +166 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/TESTING.md +126 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/ACTUAL-IMPLEMENTATION.md +108 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/DESIGN.md +382 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/IMPLEMENTATION.md +144 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/RATIONALE.md +146 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/README.md +208 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/TESTING.md +182 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/047-git-backfill-timestamps/README.md +314 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/FINDINGS.md +113 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/GUIDELINES.md +237 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/README.md +149 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-COMPARISONS.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-CONSTRAINTS.md +254 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/FIRST-PRINCIPLES.md +376 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-ROADMAP.md +240 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-TOOLS.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/README.md +374 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/051-docs-system-prompt-principles/README.md +339 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/052-branding-assets/README.md +128 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/053-spec-assets-philosophy/README.md +97 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/DESIGN-DECISIONS.md +93 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/OUTPUT-FORMAT-SPEC.md +146 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/README.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART1.md +397 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART2.md +342 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS.md +44 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CHANGES.md +150 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CONCERNS-ANALYSIS.md +351 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/DOCS-ALIGNMENT-ANALYSIS.md +238 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/README.md +280 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-DRAFT.md +372 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-REFINED.md +466 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/AUDIT-RESULTS.md +178 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/README.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/README.md +295 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/VALIDATION-RESULTS.md +487 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/ANALYSIS.md +241 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/DESIGN.md +279 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/IMPLEMENTATION.md +642 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/NOTES.md +125 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/README.md +286 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/ARCHITECTURE.md +392 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/COMMANDS.md +1002 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/CONTEXT-ENGINEERING.md +411 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/IMPLEMENTATION.md +812 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/README.md +504 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/TESTING.md +724 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/060-core-concepts-coherence/README.md +125 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/061-ai-assisted-spec-writing/README.md +299 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/IMPLEMENTATION-PLAN.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PAGE-SPECIFICATIONS.md +265 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PROBLEM-ANALYSIS.md +36 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/README.md +243 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/SOLUTION-DESIGN.md +82 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/DESIGN.md +338 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/EXAMPLES.md +354 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/IMPLEMENTATION.md +189 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/README.md +119 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/064-docs-site-zh-translation/README.md +170 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/065-v03-planning/README.md +158 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/066-context-economy-thresholds-refinement/README.md +842 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/067-monorepo-core-extraction/README.md +358 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/DESIGN.md +444 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/README.md +357 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/069-token-counting-utils/README.md +551 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/070-mcp-token-counting-tool/README.md +372 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/071-simplified-token-validation/README.md +489 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/072-ai-agent-first-use-workflow/README.md +285 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/073-template-engine-agents-md/README.md +323 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/074-content-at-creation/README.md +136 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/075-intelligent-search-engine/README.md +399 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/076-programmatic-spec-relationships/README.md +301 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/077-archiving-strategy/README.md +235 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/078-sub-spec-template-system/README.md +303 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/079-cli-alphabetical-organization/README.md +196 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/080-mcp-server-modular-architecture/README.md +388 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/081-web-app-ux-redesign/README.md +824 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DATABASE.md +111 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DEPLOYMENT.md +69 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/FILESYSTEM.md +77 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/IMPLEMENTATION.md +184 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/README.md +496 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/083-web-navigation-performance/README.md +490 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/084-sub-spec-visibility-in-tools/README.md +389 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/085-cli-relationship-commands/README.md +920 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/086-template-component-deduplication/README.md +146 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/087-cli-ui-command/README.md +607 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/088-core-concepts-terminology-only/README.md +104 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/089-sdd-practical-tutorials/README.md +124 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/090-leanspec-sdd-case-studies/README.md +129 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/091-chinese-localization-strategy/README.md +244 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/092-docs-site-submodule-migration/README.md +148 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md +54 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/001-typescript-cli-migration/README.md +37 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/002-template-system-redesign/README.md +60 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/003-init-system-redesign/README.md +113 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/README.md +69 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/SUMMARY.md +112 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/005-structured-frontmatter/README.md +229 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/006-pm-visualization-tools/README.md +406 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/007-system-prompt-updates/README.md +168 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/008-commander-migration/README.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/009-cli-ux-enhancement/README.md +212 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/010-commands-refactor/README.md +249 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/README.md +60 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/TEST_SUMMARY.md +139 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/012-sub-spec-files/README.md +722 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/013-custom-spec-templates/README.md +413 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/015-npm-publishing/README.md +255 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/019-readme-improvement/README.md +252 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/020-documentation-website/README.md +253 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/021-docusaurus-vercel-migration/README.md +612 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/022-flexible-folder-structure/README.md +794 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/DESIGN.md +834 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/README.md +255 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/027-cli-ui-ux-optimization/README.md +454 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/028-cli-ui-modernization/README.md +172 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/IMPLEMENTATION.md +152 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/README.md +95 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/030-created-date-format-bug/README.md +87 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/031-gantt-ux-improvements/README.md +230 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/032-console-log-chalk-security/README.md +89 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/033-mcp-server/README.md +89 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/037-docs-overhaul/README.md +166 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-flat-structure-migration/README.md +276 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-mcp-frontmatter-bug-fix/README.md +122 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-simplify-viewer-commands/README.md +198 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-template-variable-sync/README.md +192 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/040-spec-viewer-commands/README.md +171 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/042-mcp-error-handling/README.md +200 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/044-spec-relationships-clarity/README.md +317 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/DESIGN.md +276 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/IMPLEMENTATION.md +241 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/README.md +139 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/TESTING.md +328 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/050-tool-redesign-first-principles/README.md +400 -0
- package/.next/standalone/packages/ui/dist/static/chunks/0c19c69aa7625475.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/116800b03245a1e5.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/15843a3d7584e314.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/19e80edf527aef5c.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/465954d5af3284a9.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/5abeeb89f1412a80.js +3 -0
- package/.next/standalone/packages/ui/dist/static/chunks/5c2072ad938de8ed.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/6a05a93ec8fa7b83.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/778e42188e450b39.css +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/a02c1f50ff00204f.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/a45464b9776dd88e.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/a6dad97d9634a72d.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/b0ea0ac61604f843.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/c06e85b449720194.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/c557ac675be79771.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/cad005a57ffbb2d3.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/cdf6fe33bc65efbc.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/d12ed5dbe44caed7.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/d1ebe5c1a344f4ca.js +5 -0
- package/.next/standalone/packages/ui/dist/static/chunks/d42cf1682bc46652.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/dde5d8bddd7fbfcf.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/ebd89051637b9a47.js +4 -0
- package/.next/standalone/packages/ui/dist/static/chunks/ec82875d18b29f47.js +2 -0
- package/.next/standalone/packages/ui/dist/static/chunks/f0b701df9769bcc5.js +19 -0
- package/.next/standalone/packages/ui/dist/static/chunks/turbopack-1c09a99f4c9e28d3.js +3 -0
- package/.next/standalone/packages/ui/package.json +1 -1
- package/.next/standalone/packages/ui/server.js +1 -1
- package/.next/standalone/packages/ui/src/app/api/dependencies/route.ts +4 -67
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/dependencies/route.ts +3 -52
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/specs/[spec]/dependency-graph/route.ts +129 -0
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/specs/[spec]/metadata/route.ts +170 -0
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/specs/[spec]/status/route.ts +9 -2
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/tags/route.ts +25 -0
- package/.next/standalone/packages/ui/src/app/api/specs/[id]/metadata/route.ts +184 -0
- package/.next/standalone/packages/ui/src/app/api/tags/route.ts +16 -0
- package/.next/standalone/packages/ui/src/app/context/page.tsx +22 -0
- package/.next/standalone/packages/ui/src/app/dashboard-client.tsx +14 -4
- package/.next/standalone/packages/ui/src/app/dependencies/dependencies-client.tsx +2 -2
- package/.next/standalone/packages/ui/src/app/dependencies/page.tsx +25 -13
- package/.next/standalone/packages/ui/src/app/projects/[projectId]/dependencies/page.tsx +1 -14
- package/.next/standalone/packages/ui/src/app/projects/page.tsx +234 -113
- package/.next/standalone/packages/ui/src/app/specs/[id]/page.tsx +24 -1
- package/.next/standalone/packages/ui/src/app/specs/page.tsx +22 -0
- package/.next/standalone/packages/ui/src/app/specs/specs-client.tsx +1 -1
- package/.next/standalone/packages/ui/src/app/stats/page.tsx +22 -0
- package/.next/standalone/packages/ui/src/components/editable-spec-metadata.tsx +152 -0
- package/.next/standalone/packages/ui/src/components/main-sidebar.tsx +6 -0
- package/.next/standalone/packages/ui/src/components/priority-editor.tsx +153 -0
- package/.next/standalone/packages/ui/src/components/project-switcher.tsx +53 -8
- package/.next/standalone/packages/ui/src/components/spec-detail-client.tsx +23 -20
- package/.next/standalone/packages/ui/src/components/status-editor.tsx +153 -0
- package/.next/standalone/packages/ui/src/components/tags-editor.tsx +238 -0
- package/.next/standalone/packages/ui/src/components/ui/command.tsx +1 -1
- package/.next/standalone/packages/ui/src/lib/db/service-queries.ts +151 -15
- package/.next/standalone/packages/ui/src/lib/projects/registry.ts +1 -1
- package/.next/standalone/packages/ui/src/lib/specs/sources/multi-project-source.ts +21 -5
- package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
- package/.next/static/chunks/0c7bbb59865774a1.js +1 -0
- package/.next/static/chunks/0fe978002ba489fb.js +3 -0
- package/.next/static/chunks/1169d4ac8f9df687.js +1 -0
- package/.next/static/chunks/241b6b1c83610ebf.js +1 -0
- package/.next/static/chunks/39931c5cecf4c4b7.js +1 -0
- package/.next/static/chunks/6d7922838a3513a4.js +1 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/7a00633903e066b4.js → static/chunks/781328ee279ffc41.js} +1 -1
- package/.next/static/chunks/937cb3894a606899.js +5 -0
- package/.next/static/chunks/9cf644b700f37825.css +1 -0
- package/.next/static/chunks/bc0f8f7f8dc0a352.js +1 -0
- package/.next/static/chunks/dbce73f7087f2470.js +10 -0
- package/.next/static/chunks/f0a083ac29b4b6c2.js +1 -0
- package/.next/static/s9uUE9DnvJD2xIz-iBGMe/_buildManifest.js +11 -0
- package/.next/static/s9uUE9DnvJD2xIz-iBGMe/_clientMiddlewareManifest.json +1 -0
- package/.next/static/s9uUE9DnvJD2xIz-iBGMe/_ssgManifest.js +1 -0
- package/package.json +2 -2
- package/.next/standalone/node_modules/.pnpm/source-map@0.8.0-beta.0/node_modules/source-map/package.json +0 -95
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__18aca702._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__27348781._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3a7f0840._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3e17db24._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__6e06fd2a._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__97b99cc0._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__9d9758e1._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b212b9bd._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b9c03a57._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e99e7672._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f38a5f20._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__fa8cf2bc._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__53f4506c._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__921689ca._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a9d7fd42._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b27b2469._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b3633d6e._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_03aa8d19._.js +0 -7
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_28fe1532._.js +0 -5
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_90eed09a._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_f9129aae._.js +0 -3
- package/.next/standalone/packages/ui/.next/static/chunks/04de9ed512b8098b.js +0 -10
- package/.next/standalone/packages/ui/.next/static/chunks/3d12a8c3152b526d.js +0 -3
- package/.next/standalone/packages/ui/.next/static/chunks/7931c6cb379305b1.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/7f9a218732be8099.js +0 -5
- package/.next/standalone/packages/ui/.next/static/chunks/8a6e8f3394240dbb.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/8d8c106c6848d15b.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/a640b005f2e15d98.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/a7075a240adea8e8.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/ddb2935cfe5310c7.css +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/f924ae32752e1583.js +0 -1
- package/.next/static/chunks/04de9ed512b8098b.js +0 -10
- package/.next/static/chunks/3d12a8c3152b526d.js +0 -3
- package/.next/static/chunks/7931c6cb379305b1.js +0 -1
- package/.next/static/chunks/7f9a218732be8099.js +0 -5
- package/.next/static/chunks/8a6e8f3394240dbb.js +0 -1
- package/.next/static/chunks/8d8c106c6848d15b.js +0 -1
- package/.next/static/chunks/a640b005f2e15d98.js +0 -1
- package/.next/static/chunks/a7075a240adea8e8.js +0 -1
- package/.next/static/chunks/ddb2935cfe5310c7.css +0 -1
- package/.next/static/chunks/f924ae32752e1583.js +0 -1
- /package/.next/standalone/packages/ui/.next/static/{T8X9UGfigRL0qWZiBHNjy → s9uUE9DnvJD2xIz-iBGMe}/_buildManifest.js +0 -0
- /package/.next/standalone/packages/ui/.next/static/{T8X9UGfigRL0qWZiBHNjy → s9uUE9DnvJD2xIz-iBGMe}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{T8X9UGfigRL0qWZiBHNjy → s9uUE9DnvJD2xIz-iBGMe}/_ssgManifest.js +0 -0
- /package/.next/{static/T8X9UGfigRL0qWZiBHNjy → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_buildManifest.js +0 -0
- /package/.next/{static/T8X9UGfigRL0qWZiBHNjy → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_clientMiddlewareManifest.json +0 -0
- /package/.next/{static/T8X9UGfigRL0qWZiBHNjy → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: archived
|
|
3
|
+
created: '2025-11-04'
|
|
4
|
+
tags:
|
|
5
|
+
- ux
|
|
6
|
+
- clarity
|
|
7
|
+
- frontmatter
|
|
8
|
+
- relationships
|
|
9
|
+
- v0.2.0
|
|
10
|
+
priority: high
|
|
11
|
+
related:
|
|
12
|
+
- 043-official-launch-02
|
|
13
|
+
created_at: '2025-11-04T00:00:00Z'
|
|
14
|
+
updated_at: '2025-11-11T04:26:08.272Z'
|
|
15
|
+
completed_at: '2025-11-06T06:35:03.913Z'
|
|
16
|
+
completed: '2025-11-06'
|
|
17
|
+
transitions:
|
|
18
|
+
- status: complete
|
|
19
|
+
at: '2025-11-06T06:35:03.913Z'
|
|
20
|
+
- status: archived
|
|
21
|
+
at: '2025-11-11T04:26:08.272Z'
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Clarify Spec Relationship Model
|
|
25
|
+
|
|
26
|
+
> **Status**: 📦 Archived · **Priority**: High · **Created**: 2025-11-04 · **Tags**: ux, clarity, frontmatter, relationships, v0.2.0
|
|
27
|
+
|
|
28
|
+
**Project**: lean-spec
|
|
29
|
+
**Team**: Core Development
|
|
30
|
+
|
|
31
|
+
## Overview
|
|
32
|
+
|
|
33
|
+
**Problem**: The current spec relationship model is confusing and inconsistent.
|
|
34
|
+
|
|
35
|
+
**Confusion points:**
|
|
36
|
+
1. **`related` appears bidirectional but isn't** - If spec A has `related: [B]`, the `deps` command shows it from A's perspective but not automatically from B's
|
|
37
|
+
2. **`depends_on` vs `related` unclear** - When should you use which?
|
|
38
|
+
3. **Display confusion** - "Related" vs "Related By" sections in `lean-spec deps` output
|
|
39
|
+
4. **Symmetry expectations** - Users expect `related` to be symmetric (if A relates to B, then B relates to A)
|
|
40
|
+
|
|
41
|
+
**Current behavior:**
|
|
42
|
+
```bash
|
|
43
|
+
# Spec 042 has: related: [043]
|
|
44
|
+
lean-spec deps 042 # Shows: Related → 043
|
|
45
|
+
lean-spec deps 043 # Shows: Related By ← 042 (had to add this!)
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Why this matters:**
|
|
49
|
+
- Core UX issue affecting how users track work
|
|
50
|
+
- Confusion leads to inconsistent spec relationships
|
|
51
|
+
- Critical for v0.2.0 launch coordination (blocking specs need clear relationships)
|
|
52
|
+
|
|
53
|
+
## Design
|
|
54
|
+
|
|
55
|
+
### Option 1: Make `related` Truly Bidirectional (Recommended)
|
|
56
|
+
|
|
57
|
+
**Change behavior**: When spec A has `related: [B]`, automatically show the relationship from both sides without requiring B to also list A.
|
|
58
|
+
|
|
59
|
+
**Implementation:**
|
|
60
|
+
- `related` field means "this spec is related to these specs" (one-way declaration)
|
|
61
|
+
- `lean-spec deps` shows bidirectional view automatically
|
|
62
|
+
- Remove "Related" vs "Related By" distinction - just show "Related Specs"
|
|
63
|
+
- Merge both directions into single list
|
|
64
|
+
|
|
65
|
+
**Example:**
|
|
66
|
+
```yaml
|
|
67
|
+
# Spec 042
|
|
68
|
+
related: [043]
|
|
69
|
+
|
|
70
|
+
# Spec 043
|
|
71
|
+
related: [] # Doesn't need to list 042
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**Output:**
|
|
75
|
+
```bash
|
|
76
|
+
lean-spec deps 042
|
|
77
|
+
Related Specs:
|
|
78
|
+
⟷ 043-official-launch-02 [in-progress]
|
|
79
|
+
|
|
80
|
+
lean-spec deps 043
|
|
81
|
+
Related Specs:
|
|
82
|
+
⟷ 042-mcp-error-handling [in-progress] # Automatically shown!
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**Pros:**
|
|
86
|
+
- ✅ Intuitive - matches user expectations
|
|
87
|
+
- ✅ Less redundancy - don't need to update both specs
|
|
88
|
+
- ✅ Cleaner UX - single "Related Specs" section
|
|
89
|
+
- ✅ Easier maintenance - update in one place
|
|
90
|
+
|
|
91
|
+
**Cons:**
|
|
92
|
+
- ❌ Can't distinguish who declared the relationship
|
|
93
|
+
- ❌ Asymmetric data model (one side declares, both show)
|
|
94
|
+
|
|
95
|
+
### Option 2: Keep Directional, Improve Clarity
|
|
96
|
+
|
|
97
|
+
**Change terminology and documentation:**
|
|
98
|
+
- Rename `related` → `see-also` or `references`
|
|
99
|
+
- Make it clear this is **directional** (one-way)
|
|
100
|
+
- Better docs explaining when to use each field
|
|
101
|
+
|
|
102
|
+
**Relationship types:**
|
|
103
|
+
```yaml
|
|
104
|
+
depends_on: [spec-id] # Hard dependency - can't start until these complete
|
|
105
|
+
see_also: [spec-id] # Soft reference - related context, no blocking
|
|
106
|
+
blocks: [spec-id] # This spec blocks these specs (inverse of depends_on)
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Pros:**
|
|
110
|
+
- ✅ Clear semantics
|
|
111
|
+
- ✅ Explicit control over directionality
|
|
112
|
+
- ✅ More powerful for complex relationships
|
|
113
|
+
|
|
114
|
+
**Cons:**
|
|
115
|
+
- ❌ More fields to understand
|
|
116
|
+
- ❌ More manual work to maintain relationships
|
|
117
|
+
- ❌ Still confusing for simple use cases
|
|
118
|
+
|
|
119
|
+
### Option 3: Bidirectional with Explicit Sync
|
|
120
|
+
|
|
121
|
+
**Introduce relationship commands:**
|
|
122
|
+
```bash
|
|
123
|
+
lean-spec relate 042 043 # Links both specs bidirectionally
|
|
124
|
+
lean-spec unrelate 042 043 # Removes from both
|
|
125
|
+
lean-spec deps 042 --sync # Auto-sync relationships
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**Implementation:**
|
|
129
|
+
- Commands automatically update both specs
|
|
130
|
+
- Maintain bidirectional consistency
|
|
131
|
+
- Can still manually edit for asymmetric cases
|
|
132
|
+
|
|
133
|
+
**Pros:**
|
|
134
|
+
- ✅ Best of both worlds - bidirectional when desired
|
|
135
|
+
- ✅ Still allows manual asymmetric relationships
|
|
136
|
+
- ✅ Tooling enforces consistency
|
|
137
|
+
|
|
138
|
+
**Cons:**
|
|
139
|
+
- ❌ More commands to learn
|
|
140
|
+
- ❌ More complex implementation
|
|
141
|
+
- ❌ Risk of conflicts in concurrent edits
|
|
142
|
+
|
|
143
|
+
### Option 4: Typed Relationships (Advanced)
|
|
144
|
+
|
|
145
|
+
**Introduce relationship types:**
|
|
146
|
+
```yaml
|
|
147
|
+
relationships:
|
|
148
|
+
- spec: 043
|
|
149
|
+
type: part-of # This spec is part of 043
|
|
150
|
+
- spec: 018
|
|
151
|
+
type: prerequisite # 018 should be done first
|
|
152
|
+
- spec: 037
|
|
153
|
+
type: related # Loosely related
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**Pros:**
|
|
157
|
+
- ✅ Very expressive
|
|
158
|
+
- ✅ Clear semantics
|
|
159
|
+
- ✅ Supports complex project structures
|
|
160
|
+
|
|
161
|
+
**Cons:**
|
|
162
|
+
- ❌ Too complex for most users
|
|
163
|
+
- ❌ Against "lean" philosophy
|
|
164
|
+
- ❌ Overkill for 90% of use cases
|
|
165
|
+
|
|
166
|
+
## Recommendation
|
|
167
|
+
|
|
168
|
+
**Go with Option 1: Make `related` truly bidirectional**
|
|
169
|
+
|
|
170
|
+
**Rationale:**
|
|
171
|
+
1. **Matches user expectations** - "related" sounds symmetric
|
|
172
|
+
2. **Lean philosophy** - simpler is better
|
|
173
|
+
3. **Reduces maintenance** - update once, show everywhere
|
|
174
|
+
4. **Backward compatible** - existing specs still work
|
|
175
|
+
|
|
176
|
+
**Keep directional for dependencies:**
|
|
177
|
+
- `depends_on` stays directional (hard dependency)
|
|
178
|
+
- `related` becomes bidirectional (soft relationship)
|
|
179
|
+
- This gives us both semantic clarity and ease of use
|
|
180
|
+
|
|
181
|
+
## Plan
|
|
182
|
+
|
|
183
|
+
### Phase 1: Update `deps` Command UX ⏳ READY TO IMPLEMENT
|
|
184
|
+
- [ ] Merge "Related" and "Related By" into single "Related Specs" section
|
|
185
|
+
- [ ] Show relationships bidirectionally without distinction
|
|
186
|
+
- [ ] Update help text and examples
|
|
187
|
+
- [ ] Test with launch specs (042, 037, 043, etc.)
|
|
188
|
+
|
|
189
|
+
**Implementation Notes (2025-11-04):**
|
|
190
|
+
- Current `deps` command shows "Related" and "Related By" separately
|
|
191
|
+
- Bidirectional approach is intuitive and reduces maintenance
|
|
192
|
+
- Low risk, high value UX improvement
|
|
193
|
+
- Estimated: 2-4 hours implementation
|
|
194
|
+
- Can implement independently, no blocking dependencies
|
|
195
|
+
|
|
196
|
+
### Phase 2: Update Documentation
|
|
197
|
+
- [ ] Update AGENTS.md to explain relationship model
|
|
198
|
+
- [ ] Update command docs to clarify `depends_on` vs `related`
|
|
199
|
+
- [ ] Add examples showing both types
|
|
200
|
+
- [ ] Document: "related = bidirectional, depends_on = directional blocking"
|
|
201
|
+
|
|
202
|
+
### Phase 3: Consider Enhanced Commands (Optional)
|
|
203
|
+
- [ ] Add `lean-spec relate <spec-a> <spec-b>` convenience command
|
|
204
|
+
- [ ] Add `lean-spec unrelate <spec-a> <spec-b>`
|
|
205
|
+
- [ ] Consider `--sync` flag to auto-update both sides
|
|
206
|
+
- [ ] Defer if not needed for v0.2.0
|
|
207
|
+
|
|
208
|
+
### Phase 4: Visual Improvements
|
|
209
|
+
- [ ] Consider showing relationship direction for `depends_on`
|
|
210
|
+
- [ ] Use better symbols: → for depends, ⟷ for related
|
|
211
|
+
- [ ] Add color coding for relationship types
|
|
212
|
+
- [ ] Test with complex dependency graphs
|
|
213
|
+
|
|
214
|
+
## Test
|
|
215
|
+
|
|
216
|
+
### Bidirectional Behavior
|
|
217
|
+
- [ ] Spec A has `related: [B]`, `lean-spec deps A` shows B
|
|
218
|
+
- [ ] `lean-spec deps B` also shows A (bidirectional)
|
|
219
|
+
- [ ] Spec C has `depends_on: [D]`, shows directionally only
|
|
220
|
+
- [ ] `lean-spec deps D` shows "Blocks: C" (inverse)
|
|
221
|
+
- [ ] Combined test: A related to B, A depends on C
|
|
222
|
+
|
|
223
|
+
### UX Clarity
|
|
224
|
+
- [ ] Users understand difference between `related` and `depends_on`
|
|
225
|
+
- [ ] No confusion about "Related" vs "Related By"
|
|
226
|
+
- [ ] Single section makes sense to first-time users
|
|
227
|
+
- [ ] Help text is clear and accurate
|
|
228
|
+
|
|
229
|
+
### Edge Cases
|
|
230
|
+
- [ ] Spec relates to archived spec
|
|
231
|
+
- [ ] Spec relates to non-existent spec (graceful error)
|
|
232
|
+
- [ ] Circular relationships (A → B → A)
|
|
233
|
+
- [ ] Large relationship graphs (performance)
|
|
234
|
+
|
|
235
|
+
### Migration
|
|
236
|
+
- [ ] Existing specs with `related` continue working
|
|
237
|
+
- [ ] No breaking changes to frontmatter format
|
|
238
|
+
- [ ] JSON output includes both directions
|
|
239
|
+
- [ ] MCP server reflects new behavior
|
|
240
|
+
|
|
241
|
+
## Notes
|
|
242
|
+
|
|
243
|
+
### Current State Analysis
|
|
244
|
+
|
|
245
|
+
**What we have now:**
|
|
246
|
+
```typescript
|
|
247
|
+
// In spec 042
|
|
248
|
+
related: [043]
|
|
249
|
+
|
|
250
|
+
// Command output is asymmetric:
|
|
251
|
+
lean-spec deps 042 // Related: 043
|
|
252
|
+
lean-spec deps 043 // Related By: 042
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**The confusion:**
|
|
256
|
+
- "Related" sounds mutual/bidirectional
|
|
257
|
+
- But it's stored directionally (only in 042)
|
|
258
|
+
- We had to add "Related By" to show reverse direction
|
|
259
|
+
- This creates two sections for what feels like one relationship
|
|
260
|
+
|
|
261
|
+
### Semantic Comparison
|
|
262
|
+
|
|
263
|
+
| Field | Current Behavior | Proposed Behavior |
|
|
264
|
+
|-------|-----------------|-------------------|
|
|
265
|
+
| `depends_on` | Directional blocking dependency | **Keep**: Directional - A depends on B (B blocks A) |
|
|
266
|
+
| `related` | Directional soft reference | **Change**: Bidirectional - A relates to B means B relates to A |
|
|
267
|
+
| Display | "Related" + "Related By" sections | **Merge**: Single "Related Specs" section |
|
|
268
|
+
|
|
269
|
+
### Implementation Impact
|
|
270
|
+
|
|
271
|
+
**Code changes:**
|
|
272
|
+
- Update `findRelated()` to merge both directions
|
|
273
|
+
- Remove "Related By" section
|
|
274
|
+
- Update JSON output to include both directions in `related` field
|
|
275
|
+
- Update tests
|
|
276
|
+
|
|
277
|
+
**Estimated effort:** 2-4 hours
|
|
278
|
+
|
|
279
|
+
**Risk:** Low - backward compatible, improves UX
|
|
280
|
+
|
|
281
|
+
### Alternative: Do Nothing
|
|
282
|
+
|
|
283
|
+
**Could argue:**
|
|
284
|
+
- Current behavior is technically correct
|
|
285
|
+
- Users can learn "Related" vs "Related By"
|
|
286
|
+
- Already implemented and working
|
|
287
|
+
|
|
288
|
+
**Counter-argument:**
|
|
289
|
+
- UX matters more than technical correctness
|
|
290
|
+
- If it's confusing, fix it
|
|
291
|
+
- Better now than after wider adoption
|
|
292
|
+
- Aligns with "lean" philosophy of clarity
|
|
293
|
+
|
|
294
|
+
### Related Work
|
|
295
|
+
|
|
296
|
+
- Spec 043: Official Launch - needs clear relationship tracking
|
|
297
|
+
- Spec 018: Spec Validation - could validate relationship consistency
|
|
298
|
+
- Spec 037: Docs Overhaul - should document relationship model clearly
|
|
299
|
+
|
|
300
|
+
### Open Questions
|
|
301
|
+
|
|
302
|
+
1. **Should `lean-spec relate` command auto-edit both specs?**
|
|
303
|
+
- Pro: Maintains consistency
|
|
304
|
+
- Con: More complex, can wait for v0.3.0
|
|
305
|
+
|
|
306
|
+
2. **How to handle `depends_on` in visualization?**
|
|
307
|
+
- Keep separate from `related`? Yes
|
|
308
|
+
- Show direction with arrows? Yes (→ for depends, ⟷ for related)
|
|
309
|
+
|
|
310
|
+
3. **Should related specs show in board/list views?**
|
|
311
|
+
- Probably not - would clutter
|
|
312
|
+
- Keep in `deps` command only
|
|
313
|
+
|
|
314
|
+
4. **What about `blocks` field?**
|
|
315
|
+
- Auto-computed from `depends_on` (inverse)
|
|
316
|
+
- Don't need explicit field
|
|
317
|
+
- Current behavior is correct
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
# Design: Stats & Dashboard Reorganization
|
|
2
|
+
|
|
3
|
+
## Command Redesign
|
|
4
|
+
|
|
5
|
+
### Part 1: Rename `analytics` → `stats`
|
|
6
|
+
|
|
7
|
+
**Why "stats" over "analytics"?**
|
|
8
|
+
- Shorter, easier to type
|
|
9
|
+
- More intuitive for quick metrics
|
|
10
|
+
- Matches common CLI patterns (`git stats`, `npm stats`)
|
|
11
|
+
- Less intimidating for non-technical PMs
|
|
12
|
+
|
|
13
|
+
**Implementation:**
|
|
14
|
+
1. Merge `src/commands/analytics.ts` logic into `src/commands/stats.ts`
|
|
15
|
+
2. Delete `src/commands/analytics.ts` entirely
|
|
16
|
+
3. Update command registration in `cli.ts`
|
|
17
|
+
4. Remove analytics from help text
|
|
18
|
+
5. Keep all analytics functionality (just rename command)
|
|
19
|
+
|
|
20
|
+
**Breaking Change (v0.2.0):**
|
|
21
|
+
- `lean-spec analytics` removed → use `lean-spec stats`
|
|
22
|
+
- Note in CHANGELOG as breaking change
|
|
23
|
+
- Update all documentation immediately
|
|
24
|
+
|
|
25
|
+
### Part 2: Simplify Default Stats Output
|
|
26
|
+
|
|
27
|
+
**Current Problem**: `lean-spec stats` shows everything (status, priority, tags, timeline, velocity)
|
|
28
|
+
- Too much info for quick check-ins
|
|
29
|
+
- Takes time to render
|
|
30
|
+
- Overwhelming for PMs
|
|
31
|
+
|
|
32
|
+
**New Default Output** (`lean-spec stats`):
|
|
33
|
+
```
|
|
34
|
+
📊 Spec Stats
|
|
35
|
+
|
|
36
|
+
📈 Overview
|
|
37
|
+
Total Specs 42
|
|
38
|
+
Active (Planned+WIP) 20
|
|
39
|
+
Complete 15
|
|
40
|
+
Health Score 73% ✓
|
|
41
|
+
|
|
42
|
+
📊 Status
|
|
43
|
+
📅 Planned ████░░░░ 5
|
|
44
|
+
⏳ In Progress ████████ 15
|
|
45
|
+
✅ Complete ██████░░ 10
|
|
46
|
+
|
|
47
|
+
🎯 Priority Focus
|
|
48
|
+
🔴 Critical 2 specs (1 overdue!)
|
|
49
|
+
🟠 High 5 specs (3 in-progress)
|
|
50
|
+
|
|
51
|
+
⚠️ Needs Attention
|
|
52
|
+
• spec-042: Critical bug overdue by 2 days
|
|
53
|
+
• 5 specs in-progress > 7 days
|
|
54
|
+
|
|
55
|
+
🚀 Velocity Summary
|
|
56
|
+
Avg Cycle Time 5.2 days ✓ (target: 7d)
|
|
57
|
+
Throughput 2.8/week ↑
|
|
58
|
+
WIP 5 specs
|
|
59
|
+
|
|
60
|
+
💡 Use `lean-spec stats --full` for detailed analytics
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Key Changes:**
|
|
64
|
+
- **Focus on actionable insights** - What needs attention?
|
|
65
|
+
- **Health score** - Simple completion rate (% complete)
|
|
66
|
+
- **Priority focus** - Only show priorities that matter (critical/high with issues)
|
|
67
|
+
- **Needs attention** - Top 3-5 actionable items
|
|
68
|
+
- **Velocity summary** - Key metrics only (not full breakdown)
|
|
69
|
+
- **Clear next action** - Prompt for `--full` if they want more
|
|
70
|
+
|
|
71
|
+
**Full Stats Output** (`lean-spec stats --full`):
|
|
72
|
+
- Everything from current analytics command
|
|
73
|
+
- Stats + Timeline + Velocity (all sections)
|
|
74
|
+
- Equivalent to current `lean-spec analytics` output
|
|
75
|
+
|
|
76
|
+
### Part 3: Integrate Smart Insights into Stats
|
|
77
|
+
|
|
78
|
+
**Current**: Smart insights in dashboard, velocity in analytics (separated)
|
|
79
|
+
**New**: Both unified in stats command
|
|
80
|
+
|
|
81
|
+
**Smart Insights Algorithm** (for "Needs Attention"):
|
|
82
|
+
1. **Critical overdue** - `priority=critical, due < today, status != complete`
|
|
83
|
+
2. **High overdue** - `priority=high, due < today, status != complete`
|
|
84
|
+
3. **Long-running WIP** - `status=in-progress, updated > 7 days ago`
|
|
85
|
+
4. **Blocked specs** - Has dependencies but can't start
|
|
86
|
+
5. **Critical not started** - `priority=critical, status=planned`
|
|
87
|
+
|
|
88
|
+
Show top 5 items, then "and N more need attention"
|
|
89
|
+
|
|
90
|
+
**Velocity Integration:**
|
|
91
|
+
- Include velocity summary in default stats
|
|
92
|
+
- Full velocity breakdown in `--full` or `--velocity`
|
|
93
|
+
- Make velocity calculations part of core stats logic
|
|
94
|
+
|
|
95
|
+
### Part 4: Enhance Board with Health Summary
|
|
96
|
+
|
|
97
|
+
**Why**: Board is the primary PM/workflow entry point - should provide context
|
|
98
|
+
|
|
99
|
+
**New Board Output:**
|
|
100
|
+
```
|
|
101
|
+
📋 Spec Kanban Board
|
|
102
|
+
|
|
103
|
+
╔══════════════════════════════════════════════════════════╗
|
|
104
|
+
║ Project Health ║
|
|
105
|
+
║ 42 total · 20 active · 15 complete · 73% health ║
|
|
106
|
+
║ ⚠️ 2 critical overdue · 5 specs WIP > 7 days ║
|
|
107
|
+
║ 🚀 Velocity: 5.2d avg cycle · 2.8/wk throughput ║
|
|
108
|
+
╚══════════════════════════════════════════════════════════╝
|
|
109
|
+
|
|
110
|
+
📅 Planned (5)
|
|
111
|
+
🔴 Critical (2)
|
|
112
|
+
spec-048-critical-bug @alice #bug #launch
|
|
113
|
+
spec-047-security-patch @bob #security
|
|
114
|
+
🟠 High (3)
|
|
115
|
+
spec-046-stats-refactor @alice #ux #refactor
|
|
116
|
+
...
|
|
117
|
+
|
|
118
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
119
|
+
|
|
120
|
+
⏳ In Progress (15)
|
|
121
|
+
🔴 Critical (1)
|
|
122
|
+
spec-042-error-handling @alice #bug (8d ⚠️ long)
|
|
123
|
+
...
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Health Summary Box Shows:**
|
|
127
|
+
- **Totals** - Quick counts
|
|
128
|
+
- **Health score** - Simple % complete
|
|
129
|
+
- **Alerts** - Critical issues needing attention
|
|
130
|
+
- **Velocity snapshot** - Key metrics only
|
|
131
|
+
|
|
132
|
+
**Options:**
|
|
133
|
+
- `lean-spec board` - Default (with health summary)
|
|
134
|
+
- `lean-spec board --simple` - Original kanban-only view (no health box)
|
|
135
|
+
- `lean-spec board --health-only` - Just show health box, no kanban
|
|
136
|
+
|
|
137
|
+
**Implementation:**
|
|
138
|
+
- Extract health calculation to `utils/health.ts`
|
|
139
|
+
- Reuse velocity calculations from stats
|
|
140
|
+
- Keep board rendering clean (separate concerns)
|
|
141
|
+
|
|
142
|
+
### Part 5: Remove Dashboard Command
|
|
143
|
+
|
|
144
|
+
**Why Remove?**
|
|
145
|
+
- With enhanced board + simplified stats, dashboard is redundant
|
|
146
|
+
- Users can get overview from `lean-spec board`
|
|
147
|
+
- Detailed analytics from `lean-spec stats --full`
|
|
148
|
+
- Reduces command sprawl
|
|
149
|
+
|
|
150
|
+
**Migration Path:**
|
|
151
|
+
```
|
|
152
|
+
lean-spec dashboard → lean-spec board
|
|
153
|
+
lean-spec dashboard --compact → lean-spec board --health-only
|
|
154
|
+
lean-spec dashboard --json → lean-spec stats --json
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Removal Strategy (v0.2.0):**
|
|
158
|
+
- Delete `src/commands/dashboard.ts` entirely
|
|
159
|
+
- Remove from CLI registration
|
|
160
|
+
- Update all documentation
|
|
161
|
+
- Note in CHANGELOG as breaking change
|
|
162
|
+
|
|
163
|
+
## Architecture
|
|
164
|
+
|
|
165
|
+
**New File Structure:**
|
|
166
|
+
```
|
|
167
|
+
src/commands/
|
|
168
|
+
├── stats.ts # ENHANCED: Unified stats + velocity + insights
|
|
169
|
+
├── board.ts # ENHANCED: Kanban + health summary
|
|
170
|
+
└── ... # analytics.ts and dashboard.ts DELETED
|
|
171
|
+
|
|
172
|
+
src/utils/
|
|
173
|
+
├── health.ts # NEW: Health score calculation
|
|
174
|
+
├── velocity.ts # KEEP: Velocity metrics (used by stats)
|
|
175
|
+
├── insights.ts # NEW: Smart insights algorithm
|
|
176
|
+
└── spec-stats.ts # KEEP: Basic counting/grouping
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## Health Score Calculation
|
|
180
|
+
|
|
181
|
+
`utils/health.ts`:
|
|
182
|
+
```typescript
|
|
183
|
+
export interface HealthMetrics {
|
|
184
|
+
score: number; // 0-100
|
|
185
|
+
totalSpecs: number;
|
|
186
|
+
activeSpecs: number;
|
|
187
|
+
completeSpecs: number;
|
|
188
|
+
criticalIssues: string[];
|
|
189
|
+
warnings: string[];
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
export function calculateHealth(specs: SpecInfo[]): HealthMetrics {
|
|
193
|
+
// Simple: completion_rate = complete / total * 100
|
|
194
|
+
|
|
195
|
+
let completeCount = 0;
|
|
196
|
+
let completeWeight = 0;
|
|
197
|
+
const criticalIssues: string[] = [];
|
|
198
|
+
const warnings: string[] = [];
|
|
199
|
+
|
|
200
|
+
for (const spec of specs) {
|
|
201
|
+
const weight = priorityWeight(spec.frontmatter.priority);
|
|
202
|
+
totalWeight += weight;
|
|
203
|
+
|
|
204
|
+
if (spec.frontmatter.status === 'complete') {
|
|
205
|
+
completeWeight += weight;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// Detect critical issues
|
|
209
|
+
if (isCriticalOverdue(spec)) {
|
|
210
|
+
criticalIssues.push(spec.path);
|
|
211
|
+
}
|
|
212
|
+
if (isLongRunning(spec)) {
|
|
213
|
+
warnings.push(spec.path);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
return {
|
|
218
|
+
score: Math.round((completeWeight / totalWeight) * 100),
|
|
219
|
+
totalSpecs: specs.length,
|
|
220
|
+
activeSpecs: specs.filter(s => ['planned', 'in-progress'].includes(s.frontmatter.status)).length,
|
|
221
|
+
completeSpecs: specs.filter(s => s.frontmatter.status === 'complete').length,
|
|
222
|
+
criticalIssues,
|
|
223
|
+
warnings,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Smart Insights
|
|
229
|
+
|
|
230
|
+
`utils/insights.ts`:
|
|
231
|
+
```typescript
|
|
232
|
+
export interface Insight {
|
|
233
|
+
severity: 'critical' | 'warning' | 'info';
|
|
234
|
+
message: string;
|
|
235
|
+
specs: string[];
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
export function generateInsights(specs: SpecInfo[]): Insight[] {
|
|
239
|
+
const insights: Insight[] = [];
|
|
240
|
+
|
|
241
|
+
// 1. Critical overdue
|
|
242
|
+
const criticalOverdue = specs.filter(s =>
|
|
243
|
+
s.frontmatter.priority === 'critical' &&
|
|
244
|
+
s.frontmatter.due && dayjs(s.frontmatter.due).isBefore(dayjs()) &&
|
|
245
|
+
s.frontmatter.status !== 'complete'
|
|
246
|
+
);
|
|
247
|
+
|
|
248
|
+
if (criticalOverdue.length > 0) {
|
|
249
|
+
insights.push({
|
|
250
|
+
severity: 'critical',
|
|
251
|
+
message: `${criticalOverdue.length} critical specs overdue`,
|
|
252
|
+
specs: criticalOverdue.map(s => s.path),
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
// 2. Long-running WIP
|
|
257
|
+
const longRunning = specs.filter(s =>
|
|
258
|
+
s.frontmatter.status === 'in-progress' &&
|
|
259
|
+
s.frontmatter.updated &&
|
|
260
|
+
dayjs().diff(dayjs(s.frontmatter.updated), 'day') > 7
|
|
261
|
+
);
|
|
262
|
+
|
|
263
|
+
if (longRunning.length > 0) {
|
|
264
|
+
insights.push({
|
|
265
|
+
severity: 'warning',
|
|
266
|
+
message: `${longRunning.length} specs in-progress > 7 days`,
|
|
267
|
+
specs: longRunning.map(s => s.path),
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// 3. Critical not started
|
|
272
|
+
// ... more insight rules
|
|
273
|
+
|
|
274
|
+
return insights.slice(0, 5); // Top 5 only
|
|
275
|
+
}
|
|
276
|
+
```
|