@leanspec/ui 0.2.9 → 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/{@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64 → @img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64}/README.md +2 -2
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64 → @img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64}/lib/glib-2.0/include/glibconfig.h +9 -8
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib → @img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3} +0 -0
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64 → @img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64}/package.json +11 -5
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/README.md +46 -0
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/glib-2.0/include/glibconfig.h +221 -0
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +1 -0
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.17.3 +0 -0
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +42 -0
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +30 -0
- package/.next/standalone/node_modules/.pnpm/@img+sharp-linux-x64@0.34.5/node_modules/@img/sharp-linux-x64/lib/sharp-linux-x64.node +0 -0
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-darwin-arm64@0.34.5/node_modules/@img/sharp-darwin-arm64 → @img+sharp-linux-x64@0.34.5/node_modules/@img/sharp-linux-x64}/package.json +13 -7
- package/.next/standalone/node_modules/.pnpm/@img+sharp-linuxmusl-x64@0.34.5/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node +0 -0
- package/.next/standalone/node_modules/.pnpm/@img+sharp-linuxmusl-x64@0.34.5/node_modules/@img/sharp-linuxmusl-x64/package.json +46 -0
- 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 +11 -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 +88 -0
- 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.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/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route.js +1 -3
- 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 -2
- 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 -2
- 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/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route.js +6 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js +1 -3
- 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 +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 +2 -1
- 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 +2 -1
- 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 -1
- 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/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page/build-manifest.json +18 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page/next-font-manifest.json +6 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page.js +21 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page/build-manifest.json +18 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page/next-font-manifest.json +6 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page.js +21 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js +5 -5
- 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 +6 -5
- 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 +5 -4
- 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/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page/build-manifest.json +18 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page/next-font-manifest.json +6 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page.js +21 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/projects/page.js +5 -4
- 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.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 +2 -1
- 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 +2 -1
- 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 +11 -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/6681a__next-internal_server_app_api_projects_[id]_dependencies_route_actions_7ac49581.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/730ea_ui__next-internal_server_app_api_projects_[id]_context_route_actions_96adca70.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_projects_[id]_validate_route_actions_b60372c9.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/[externals]_better-sqlite3_a1cc22cb._.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 +3 -0
- 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]__5f1e0195._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__71d98924._.js +3 -0
- 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 +3 -0
- 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/packages_ui_src_lib_specs_sources_database-source_ts_b8c1af87._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui_src_lib_specs_sources_database-source_ts_baa0160d._.js +72 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/730ea_ui__next-internal_server_app_projects_[projectId]_context_page_actions_e4940a48.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/730ea_ui__next-internal_server_app_projects_[projectId]_stats_page_actions_82a85203.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__0f0dade1._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__174e1ca1._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__212c8580._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__2b66bcca._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__a965a67b._.js → [root-of-the-server]__2d9202e8._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__312221a2._.js +3 -0
- 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 +3 -0
- 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]__46b71f61._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__665ae766._.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]__a34731d8._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__12b4eb41._.js → [root-of-the-server]__b0d6e2ad._.js} +2 -2
- 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]__dcee62dd._.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]__ead1539c._.js +1 -1
- 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/{_39562b2a._.js → _170362f4._.js} +3 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_1a642e67._.js +4 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_adb9d7cb._.js → _22274047._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_85effc18._.js → _2bc76f88._.js} +3 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_fdd7780b._.js → _3f059230._.js} +3 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_58b98a8f._.js +4 -0
- 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 +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_b303aeea._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_bae6d2b8._.js → _b421ba4a._.js} +3 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_be836d6a._.js +5 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_d840ffc6._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_ec637d7c._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_f05260d6._.js +4 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/f825c_server_app_projects_[projectId]_dependencies_page_actions_ba2321b8.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_0056f1f2._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_30b0b05a._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_478d57e5._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{node_modules__pnpm_151891de._.js → node_modules__pnpm_4e3e790c._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{node_modules__pnpm_f5b29533._.js → node_modules__pnpm_8680dc29._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{node_modules__pnpm_e175b92a._.js → node_modules__pnpm_94a0b1f5._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{node_modules__pnpm_1120b57c._.js → node_modules__pnpm_b4ff5c78._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{node_modules__pnpm_7791e3b8._.js → node_modules__pnpm_d3262b3d._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_context_context-client_tsx_4ba99a62._.js +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_dependencies_dependencies-client_tsx_0e82443a._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_projects_layout_tsx_86c2ce0f._.js +3 -0
- 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/chunks/ssr/packages_ui_src_components_specs-nav-sidebar_tsx_8237ed13._.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/1e0689744f87e958.js +2 -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/{static/chunks/6d938a49daa10208.js → standalone/packages/ui/.next/static/chunks/4610aea3ca2e69eb.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/6d7922838a3513a4.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/781328ee279ffc41.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/{942cf63b4032c808.js → 7df6308e6cfcf902.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/840c6743a491a398.js +1 -0
- 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/{static/chunks/a3d7e1be47de010b.js → standalone/packages/ui/.next/static/chunks/bbd498aa5689c057.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/bc0f8f7f8dc0a352.js +1 -0
- package/.next/{static/chunks/979625373d5474b6.js → standalone/packages/ui/.next/static/chunks/c26909a25ca9fc9b.js} +1 -1
- package/.next/{static/chunks/e3bc96a996e2a314.js → standalone/packages/ui/.next/static/chunks/d26f4109b44eb240.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/{3276ca6fd9005903.js → d52a048b511c32bd.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/dbce73f7087f2470.js +10 -0
- package/.next/standalone/packages/ui/.next/static/chunks/e399b4afc7936907.js +1 -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/standalone/packages/web/package.json +1 -9
- package/.next/standalone/packages/ui/dist/standalone/packages/web/server.js +1 -1
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/README.md +3 -7
- package/.next/standalone/packages/ui/dist/standalone/specs/072-ai-agent-first-use-workflow/README.md +3 -5
- package/.next/standalone/packages/ui/dist/standalone/specs/081-web-app-ux-redesign/README.md +1 -2
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/README.md +3 -8
- package/.next/standalone/packages/ui/dist/standalone/specs/087-cli-ui-command/README.md +259 -73
- package/.next/standalone/packages/ui/dist/standalone/specs/088-core-concepts-terminology-only/README.md +3 -5
- package/.next/standalone/packages/ui/dist/standalone/specs/089-sdd-practical-tutorials/README.md +3 -5
- package/.next/standalone/packages/ui/dist/standalone/specs/090-leanspec-sdd-case-studies/README.md +3 -5
- package/.next/standalone/packages/ui/dist/standalone/specs/091-chinese-localization-strategy/README.md +23 -33
- package/.next/standalone/packages/ui/dist/standalone/specs/092-docs-site-submodule-migration/README.md +3 -7
- package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md +14 -25
- 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]/context/route.ts +39 -0
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/dependencies/route.ts +20 -0
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/route.ts +25 -9
- 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]/route.ts +14 -14
- 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]/specs/route.ts +9 -8
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/tags/route.ts +25 -0
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/validate/route.ts +49 -0
- package/.next/standalone/packages/ui/src/app/api/projects/route.ts +18 -5
- package/.next/standalone/packages/ui/src/app/api/specs/[id]/dependency-graph/route.test.ts +0 -2
- package/.next/standalone/packages/ui/src/app/api/specs/[id]/dependency-graph/route.ts +0 -15
- 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 +43 -62
- package/.next/standalone/packages/ui/src/app/dependencies/constants.ts +9 -8
- package/.next/standalone/packages/ui/src/app/dependencies/dependencies-client.tsx +95 -20
- package/.next/standalone/packages/ui/src/app/dependencies/page.tsx +25 -13
- package/.next/standalone/packages/ui/src/app/dependencies/spec-node.tsx +8 -8
- package/.next/standalone/packages/ui/src/app/dependencies/spec-sidebar.tsx +40 -67
- package/.next/standalone/packages/ui/src/app/page.tsx +24 -0
- package/.next/standalone/packages/ui/src/app/projects/[projectId]/context/page.tsx +41 -0
- package/.next/standalone/packages/ui/src/app/projects/[projectId]/dependencies/page.tsx +30 -0
- package/.next/standalone/packages/ui/src/app/projects/[projectId]/page.tsx +18 -2
- package/.next/standalone/packages/ui/src/app/projects/[projectId]/stats/page.tsx +24 -0
- package/.next/standalone/packages/ui/src/app/projects/layout.tsx +7 -0
- package/.next/standalone/packages/ui/src/app/projects/page.tsx +375 -107
- 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 +28 -18
- package/.next/standalone/packages/ui/src/app/stats/page.tsx +22 -0
- package/.next/standalone/packages/ui/src/components/color-picker.tsx +73 -0
- package/.next/standalone/packages/ui/src/components/create-project-dialog.tsx +3 -5
- package/.next/standalone/packages/ui/src/components/directory-picker.tsx +1 -0
- package/.next/standalone/packages/ui/{dist/standalone/packages/web/src/components/spec-metadata.tsx → src/components/editable-spec-metadata.tsx} +46 -30
- package/.next/standalone/packages/ui/src/components/main-sidebar.tsx +28 -6
- package/.next/standalone/packages/ui/src/components/markdown-link.tsx +15 -8
- package/.next/standalone/packages/ui/src/components/priority-editor.tsx +153 -0
- package/.next/standalone/packages/ui/src/components/project-switcher.tsx +74 -10
- package/.next/standalone/packages/ui/src/components/quick-search.tsx +3 -1
- package/.next/standalone/packages/ui/src/components/spec-dependency-graph.tsx +13 -52
- package/.next/standalone/packages/ui/src/components/spec-detail-client.tsx +58 -30
- package/.next/standalone/packages/ui/src/components/spec-detail-wrapper.tsx +3 -4
- package/.next/standalone/packages/ui/src/components/specs-nav-sidebar.tsx +8 -6
- 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/contexts/project-context.tsx +24 -0
- package/.next/standalone/packages/ui/src/lib/db/service-queries.ts +230 -40
- package/.next/standalone/packages/ui/src/lib/dependency-graph.ts +0 -13
- 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/src/types/specs.ts +6 -4
- 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/1e0689744f87e958.js +2 -0
- package/.next/static/chunks/241b6b1c83610ebf.js +1 -0
- package/.next/static/chunks/39931c5cecf4c4b7.js +1 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/6d938a49daa10208.js → static/chunks/4610aea3ca2e69eb.js} +1 -1
- package/.next/static/chunks/6d7922838a3513a4.js +1 -0
- package/.next/static/chunks/781328ee279ffc41.js +1 -0
- package/.next/static/chunks/{942cf63b4032c808.js → 7df6308e6cfcf902.js} +1 -1
- package/.next/static/chunks/840c6743a491a398.js +1 -0
- package/.next/static/chunks/937cb3894a606899.js +5 -0
- package/.next/static/chunks/9cf644b700f37825.css +1 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/a3d7e1be47de010b.js → static/chunks/bbd498aa5689c057.js} +1 -1
- package/.next/static/chunks/bc0f8f7f8dc0a352.js +1 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/979625373d5474b6.js → static/chunks/c26909a25ca9fc9b.js} +1 -1
- package/.next/{standalone/packages/ui/.next/static/chunks/e3bc96a996e2a314.js → static/chunks/d26f4109b44eb240.js} +1 -1
- package/.next/static/chunks/{3276ca6fd9005903.js → d52a048b511c32bd.js} +1 -1
- package/.next/static/chunks/dbce73f7087f2470.js +10 -0
- package/.next/static/chunks/e399b4afc7936907.js +1 -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/@img+sharp-darwin-arm64@0.34.5/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__126dea7b._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__65667b70._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__675a763e._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__803d07f0._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8233e09b._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__84cdc14a._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8a9ab1a3._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__aa677b0d._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__ae726e9c._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b0969111._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__bdc3963a._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f06435b0._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f5c6d6b8._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__fb91986f._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui_src_lib_db_index_ts_556307fa._.js +0 -74
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui_src_lib_specs_sources_database-source_ts_0bd881ee._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__3c77d95b._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__50122e7e._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__8608a6fa._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__88a691ee._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__bdbbba01._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__cc589a54._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__daedd80e._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__dc176c61._.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/_3b617676._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_8cec504f._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_ea899b87._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_fe120f8a._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_1c916fe3._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_3ba1438c._.js +0 -3
- package/.next/standalone/packages/ui/.next/static/chunks/094cf9f4e3553261.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/1c015eb9eaaf9f9c.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/1d36660b2877d213.js +0 -3
- package/.next/standalone/packages/ui/.next/static/chunks/20f4141ccb5d4eb4.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/2c85b8059e42248a.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/3b6b058ebd14dbed.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/4d29ca0fa6843070.js +0 -2
- package/.next/standalone/packages/ui/.next/static/chunks/59854b15bf046467.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/5fd8101e32b076b1.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/a33f10af6abef4df.js +0 -10
- package/.next/standalone/packages/ui/.next/static/chunks/b7f19087afe1d2c9.css +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/ddd87cd0d26bc2f5.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/eeec245955b3b600.js +0 -5
- package/.next/standalone/packages/ui/dist/standalone/packages/web/components.json +0 -20
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/0000_reflective_thena.sql +0 -59
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/0001_fresh_carmella_unuscione.sql +0 -1
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/0000_snapshot.json +0 -427
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/0001_snapshot.json +0 -436
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/_journal.json +0 -20
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle.config.ts +0 -10
- package/.next/standalone/packages/ui/dist/standalone/packages/web/eslint.config.mjs +0 -18
- package/.next/standalone/packages/ui/dist/standalone/packages/web/next.config.ts +0 -7
- package/.next/standalone/packages/ui/dist/standalone/packages/web/postcss.config.mjs +0 -8
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/projects/[id]/specs/route.ts +0 -23
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/projects/route.ts +0 -19
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/revalidate/route.ts +0 -63
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/dependency-graph/route.test.ts +0 -51
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/dependency-graph/route.ts +0 -171
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/route.ts +0 -36
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/subspecs/[file]/route.ts +0 -46
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/stats/route.ts +0 -19
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/board-client.tsx +0 -162
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/loading.tsx +0 -43
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/page.tsx +0 -18
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/dashboard-client.tsx +0 -364
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/error.tsx +0 -43
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/globals.css +0 -531
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/home-client.tsx +0 -277
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/layout.tsx +0 -70
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/loading.tsx +0 -87
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/not-found.tsx +0 -27
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/page.tsx +0 -18
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/[id]/loading.tsx +0 -5
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/[id]/page.tsx +0 -43
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/page.tsx +0 -18
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/specs-client.tsx +0 -425
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/stats/page.tsx +0 -18
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/stats/stats-client.tsx +0 -283
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/back-to-top.tsx +0 -46
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/empty-state.tsx +0 -52
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/main-sidebar.tsx +0 -175
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/markdown-link.test.ts +0 -96
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/markdown-link.tsx +0 -95
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/navigation.tsx +0 -210
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/priority-badge.tsx +0 -53
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/quick-search.tsx +0 -180
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/skeletons.tsx +0 -119
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-dependency-graph.tsx +0 -369
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-client.tsx +0 -372
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-loading-shell.tsx +0 -42
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-wrapper.tsx +0 -70
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-sidebar.tsx +0 -127
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-timeline.tsx +0 -186
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/specs-nav-sidebar.tsx +0 -561
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/status-badge.tsx +0 -53
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/sub-spec-tabs.tsx +0 -143
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/table-of-contents.tsx +0 -130
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/theme-provider.tsx +0 -11
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/theme-toggle.tsx +0 -37
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/avatar.tsx +0 -50
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/badge.tsx +0 -36
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/breadcrumb.tsx +0 -110
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/button.tsx +0 -57
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/card.tsx +0 -76
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/command.tsx +0 -153
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/dialog.tsx +0 -122
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/input.tsx +0 -24
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/select.tsx +0 -159
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/separator.tsx +0 -31
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/skeleton.tsx +0 -15
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/tabs.tsx +0 -55
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/toast.tsx +0 -30
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/tooltip.tsx +0 -32
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/date-utils.ts +0 -76
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/index.ts +0 -42
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/migrate.ts +0 -18
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/queries.ts +0 -114
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/schema.ts +0 -123
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/seed.ts +0 -156
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/service-queries.ts +0 -216
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/dependency-graph.ts +0 -105
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/service.ts +0 -120
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/sources/database-source.ts +0 -94
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/sources/filesystem-source.ts +0 -249
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/types.ts +0 -55
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/stores/specs-sidebar-store.ts +0 -152
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/sub-specs.ts +0 -171
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/utils.ts +0 -17
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/types/specs.ts +0 -18
- package/.next/standalone/packages/ui/dist/standalone/packages/web/tailwind.config.ts +0 -58
- package/.next/standalone/packages/ui/dist/standalone/packages/web/tsconfig.json +0 -34
- package/.next/standalone/packages/ui/dist/standalone/packages/web/tsconfig.tsbuildinfo +0 -1
- package/.next/standalone/packages/ui/dist/standalone/packages/web/vitest.config.ts +0 -14
- package/.next/standalone/packages/ui/dist/standalone/specs/094-ai-chatbot-web-integration/README.md +0 -332
- package/.next/standalone/packages/ui/dist/standalone/specs/095-pr-migration-verification/README.md +0 -339
- package/.next/standalone/packages/ui/dist/standalone/specs/096-docs-beginner-first-reorg/README.md +0 -399
- package/.next/standalone/packages/ui/dist/standalone/specs/097-dag-visualization-library/README.md +0 -525
- package/.next/standalone/packages/ui/dist/standalone/specs/098-github-multi-project-integration/README.md +0 -387
- package/.next/standalone/packages/ui/dist/standalone/specs/099-enhanced-dependency-commands-cli-mcp/README.md +0 -613
- package/.next/standalone/packages/ui/dist/standalone/specs/100-release-process-typecheck-failure/README.md +0 -266
- package/.next/standalone/packages/ui/dist/standalone/specs/101-sidebar-scroll-position-drift/README.md +0 -100
- package/.next/standalone/packages/ui/dist/standalone/specs/102-mcp-wrapper-package/README.md +0 -172
- package/.next/static/chunks/094cf9f4e3553261.js +0 -1
- package/.next/static/chunks/1c015eb9eaaf9f9c.js +0 -1
- package/.next/static/chunks/1d36660b2877d213.js +0 -3
- package/.next/static/chunks/20f4141ccb5d4eb4.js +0 -1
- package/.next/static/chunks/2c85b8059e42248a.js +0 -1
- package/.next/static/chunks/3b6b058ebd14dbed.js +0 -1
- package/.next/static/chunks/4d29ca0fa6843070.js +0 -2
- package/.next/static/chunks/59854b15bf046467.js +0 -1
- package/.next/static/chunks/5fd8101e32b076b1.js +0 -1
- package/.next/static/chunks/a33f10af6abef4df.js +0 -10
- package/.next/static/chunks/b7f19087afe1d2c9.css +0 -1
- package/.next/static/chunks/ddd87cd0d26bc2f5.js +0 -1
- package/.next/static/chunks/eeec245955b3b600.js +0 -5
- /package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64 → @img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64}/lib/index.js +0 -0
- /package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64 → @img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64}/versions.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{8PwFWS-09QjFSbDbfp15t → s9uUE9DnvJD2xIz-iBGMe}/_buildManifest.js +0 -0
- /package/.next/standalone/packages/ui/.next/static/{8PwFWS-09QjFSbDbfp15t → s9uUE9DnvJD2xIz-iBGMe}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{8PwFWS-09QjFSbDbfp15t → s9uUE9DnvJD2xIz-iBGMe}/_ssgManifest.js +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/f864aa7e7061c0600e35cf3d879b27cf.txt +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/favicon.ico +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/file.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/github-mark-white.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/github-mark.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/globe.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/icon.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/logo-dark-bg.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/logo-with-bg.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/logo.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/next.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/vercel.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/window.svg +0 -0
- /package/.next/{static/8PwFWS-09QjFSbDbfp15t → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_buildManifest.js +0 -0
- /package/.next/{static/8PwFWS-09QjFSbDbfp15t → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_clientMiddlewareManifest.json +0 -0
- /package/.next/{static/8PwFWS-09QjFSbDbfp15t → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_ssgManifest.js +0 -0
package/.next/standalone/packages/ui/dist/standalone/specs/097-dag-visualization-library/README.md
DELETED
|
@@ -1,525 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
status: complete
|
|
3
|
-
created: '2025-11-17'
|
|
4
|
-
tags:
|
|
5
|
-
- web
|
|
6
|
-
- ux
|
|
7
|
-
- dependencies
|
|
8
|
-
- technical-debt
|
|
9
|
-
priority: high
|
|
10
|
-
created_at: '2025-11-17T08:02:23.227Z'
|
|
11
|
-
updated_at: '2025-11-17T10:02:22.453Z'
|
|
12
|
-
transitions:
|
|
13
|
-
- status: in-progress
|
|
14
|
-
at: '2025-11-17T08:39:56.385Z'
|
|
15
|
-
- status: complete
|
|
16
|
-
at: '2025-11-17T10:02:22.453Z'
|
|
17
|
-
depends_on:
|
|
18
|
-
- 082-web-realtime-sync-architecture
|
|
19
|
-
completed_at: '2025-11-17T10:02:22.453Z'
|
|
20
|
-
completed: '2025-11-17'
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
# Replace Manual DAG with Visualization Library
|
|
24
|
-
|
|
25
|
-
> **Status**: ✅ Complete · **Priority**: High · **Created**: 2025-11-17 · **Tags**: web, ux, dependencies, technical-debt
|
|
26
|
-
|
|
27
|
-
**Project**: lean-spec
|
|
28
|
-
**Team**: Core Development
|
|
29
|
-
|
|
30
|
-
## Overview
|
|
31
|
-
|
|
32
|
-
**Problem**: The current spec dependencies DAG visualization has multiple issues:
|
|
33
|
-
|
|
34
|
-
1. **Implementation Issues** (Original Scope):
|
|
35
|
-
- Font sizes too small (hard to read)
|
|
36
|
-
- Edges not rendering (missing ReactFlow Handle components)
|
|
37
|
-
- Manual SVG coordinate calculations causing overlap
|
|
38
|
-
- Not responsive across viewport sizes
|
|
39
|
-
- Hard to maintain (manual bezier curves, CSS calc())
|
|
40
|
-
|
|
41
|
-
2. **Data Completeness Issues** (Extended Scope):
|
|
42
|
-
- Only shows outgoing `related` connections from current spec
|
|
43
|
-
- Missing upstream dependencies (`dependsOn` relationships)
|
|
44
|
-
- Missing downstream dependents (specs that depend on THIS spec)
|
|
45
|
-
- Not showing bidirectional nature of `related` relationships
|
|
46
|
-
- Incomplete graph prevents understanding full dependency chain
|
|
47
|
-
|
|
48
|
-
**Why Now**: During troubleshooting for spec #066 and testing spec #082, we discovered:
|
|
49
|
-
- DAG nodes overlapping due to coordinate system mismatches
|
|
50
|
-
- Font sizes too small to read
|
|
51
|
-
- Edges not rendering (ReactFlow Handle components missing)
|
|
52
|
-
- Can't see full dependency context (only current spec's perspective)
|
|
53
|
-
|
|
54
|
-
**Impact**:
|
|
55
|
-
- Better readability (larger fonts, proper edge rendering)
|
|
56
|
-
- Complete dependency visualization (upstream, downstream, bidirectional)
|
|
57
|
-
- Easier maintenance with proper library
|
|
58
|
-
- More robust across viewport sizes
|
|
59
|
-
|
|
60
|
-
## Current Implementation Issues
|
|
61
|
-
|
|
62
|
-
**Code Location**: `/packages/web/src/components/spec-relationships.tsx`
|
|
63
|
-
|
|
64
|
-
**Problems Found**:
|
|
65
|
-
1. Mixed coordinate systems (SVG viewBox vs CSS %)
|
|
66
|
-
2. Manual bezier curve calculations for edges
|
|
67
|
-
3. Fixed column layout (COLUMN_X constants) doesn't adapt
|
|
68
|
-
4. `preserveAspectRatio="none"` causes distortion
|
|
69
|
-
5. Node positioning uses `calc(${xPercent}% - ${NODE_WIDTH / 2}px)` which breaks with aspect ratio changes
|
|
70
|
-
|
|
71
|
-
**Current Approach**:
|
|
72
|
-
- 3-column layout: Precedence (left) → Current (center) → Related (right)
|
|
73
|
-
- Nodes positioned with CSS absolute + calc()
|
|
74
|
-
- SVG paths drawn manually with fixed control points
|
|
75
|
-
- Container height calculated from node count
|
|
76
|
-
|
|
77
|
-
## Design
|
|
78
|
-
|
|
79
|
-
### Recommended Library: Reactflow
|
|
80
|
-
|
|
81
|
-
**Why Reactflow**:
|
|
82
|
-
- ✅ **React-native**: Built for React, excellent TypeScript support
|
|
83
|
-
- ✅ **Declarative**: Define nodes/edges, library handles layout
|
|
84
|
-
- ✅ **Auto-layout**: Built-in dagre/elk layout algorithms
|
|
85
|
-
- ✅ **Responsive**: Handles viewport changes automatically
|
|
86
|
-
- ✅ **Interactive**: Pan, zoom, node dragging out of the box
|
|
87
|
-
- ✅ **Customizable**: Custom node styles, edge types
|
|
88
|
-
- ✅ **Well-maintained**: 20K+ GitHub stars, active development
|
|
89
|
-
- ✅ **Small bundle**: ~50KB gzipped (reasonable for feature richness)
|
|
90
|
-
|
|
91
|
-
**Alternatives Considered**:
|
|
92
|
-
- **D3.js**: Too low-level, requires manual layout management
|
|
93
|
-
- **Cytoscape.js**: Powerful but heavier, steeper learning curve
|
|
94
|
-
- **vis.js**: Unmaintained, no React integration
|
|
95
|
-
- **mermaid.js**: Static rendering, not interactive
|
|
96
|
-
|
|
97
|
-
### Implementation Approach
|
|
98
|
-
|
|
99
|
-
**Display Pattern**: Modal/Dialog (REQUIRED)
|
|
100
|
-
- Dependencies graph opens in a dialog/modal, not inline expansion
|
|
101
|
-
- Timeline also moves to modal (consistent pattern for spec metadata)
|
|
102
|
-
- Triggered by "Show Dependencies" and "Show Timeline" buttons
|
|
103
|
-
- Allows full screen space for complex graphs
|
|
104
|
-
- Better mobile experience (full screen modal vs cramped accordion)
|
|
105
|
-
|
|
106
|
-
**Replace Current Components**:
|
|
107
|
-
```tsx
|
|
108
|
-
// Current: Accordion expansion
|
|
109
|
-
<Accordion>
|
|
110
|
-
<SpecRelationships relationships={...} />
|
|
111
|
-
</Accordion>
|
|
112
|
-
|
|
113
|
-
// New: Dialog with Reactflow
|
|
114
|
-
<Dialog>
|
|
115
|
-
<SpecDependencyGraph relationships={...} />
|
|
116
|
-
</Dialog>
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
**Node Types**:
|
|
120
|
-
- **Current Spec**: Center node (non-interactive, highlighted, primary border)
|
|
121
|
-
- **Depends On (Upstream)**: Left side (amber styling, solid edges with arrows pointing right)
|
|
122
|
-
- **Required By (Downstream)**: Right side, top (red/orange styling, solid edges with arrows pointing left)
|
|
123
|
-
- **Related (Bidirectional)**: Right side, bottom (blue styling, dashed edges, bidirectional arrows)
|
|
124
|
-
|
|
125
|
-
**Complete Dependency Graph**:
|
|
126
|
-
To show the full picture, we need:
|
|
127
|
-
1. **Current spec's `dependsOn`** → shows as upstream nodes (left)
|
|
128
|
-
2. **Specs that depend on current spec** → shows as downstream nodes (right, top)
|
|
129
|
-
3. **Current spec's `related`** → shows as related nodes (right, bottom)
|
|
130
|
-
4. **Related specs that list current spec** → shows as related nodes (right, bottom)
|
|
131
|
-
|
|
132
|
-
**Data Requirements**:
|
|
133
|
-
Current API only provides current spec's perspective. Need to either:
|
|
134
|
-
- **Option A**: Fetch all related specs individually to check their relationships (client-side)
|
|
135
|
-
- **Option B**: Add API endpoint that returns complete graph (server-side, better performance)
|
|
136
|
-
- **Option C**: Implement in phases (current perspective first, then expand)
|
|
137
|
-
|
|
138
|
-
**Implementation Strategy**: Start with Option C (phased approach)
|
|
139
|
-
- **Phase 1** (MVP): Current spec perspective only (dependsOn + related) ✅
|
|
140
|
-
- **Phase 2**: Add API endpoint for complete graph (includes requiredBy + bidirectional related)
|
|
141
|
-
- **Phase 3**: Polish UX (better labels, tooltips, legend)
|
|
142
|
-
|
|
143
|
-
**Layout Strategy**:
|
|
144
|
-
- Use Reactflow's `dagre` layout algorithm
|
|
145
|
-
- Constrain to 3-column structure (precedence | current | related)
|
|
146
|
-
- Vertical spacing based on node count
|
|
147
|
-
- Automatically handle edge routing
|
|
148
|
-
- Dialog provides ample space for complex graphs
|
|
149
|
-
|
|
150
|
-
**Styling**:
|
|
151
|
-
- Match current design (rounded boxes, color scheme)
|
|
152
|
-
- Maintain distinction between precedence (amber) and related (blue)
|
|
153
|
-
- Full screen or large modal (80-90% viewport)
|
|
154
|
-
- Responsive: full screen on mobile, modal on desktop
|
|
155
|
-
|
|
156
|
-
### Migration Plan
|
|
157
|
-
|
|
158
|
-
**Phase 1: Fix Current Implementation** (COMPLETED ✅)
|
|
159
|
-
- ✅ Increase font sizes (node labels, badges, legend)
|
|
160
|
-
- ✅ Add ReactFlow Handle components for edge rendering
|
|
161
|
-
- ✅ Fix edge markers and colors
|
|
162
|
-
- ✅ Improve node styling (larger, better contrast)
|
|
163
|
-
- ✅ Update legend text for clarity
|
|
164
|
-
|
|
165
|
-
**Phase 2: API Enhancement for Complete Graph** (1-2 days)
|
|
166
|
-
- [ ] Design API response format for complete dependency graph
|
|
167
|
-
- [ ] Add server-side endpoint: `GET /api/specs/:id/dependency-graph`
|
|
168
|
-
- Returns: `{ current, dependsOn, requiredBy, related, relatedBidirectional }`
|
|
169
|
-
- [ ] Implement efficient graph traversal (avoid N+1 queries)
|
|
170
|
-
- [ ] Add caching for graph queries
|
|
171
|
-
|
|
172
|
-
**Phase 3: Client-Side Graph Building** (1-2 days)
|
|
173
|
-
- [ ] Update `SpecRelationships` type to include `requiredBy`
|
|
174
|
-
- [ ] Modify `buildGraph()` to handle all relationship types
|
|
175
|
-
- [ ] Add downstream nodes (red/orange styling for "Required By")
|
|
176
|
-
- [ ] Distinguish between outgoing and bidirectional related connections
|
|
177
|
-
- [ ] Update layout algorithm for 4-column structure:
|
|
178
|
-
- Left: Depends On (upstream, blocking)
|
|
179
|
-
- Center: Current Spec
|
|
180
|
-
- Right Top: Required By (downstream, blocked)
|
|
181
|
-
- Right Bottom: Related (bidirectional, informational)
|
|
182
|
-
|
|
183
|
-
**Phase 4: UX Polish** (1 day)
|
|
184
|
-
- [ ] Add tooltips explaining relationship types
|
|
185
|
-
- [ ] Improve legend with examples
|
|
186
|
-
- [ ] Add "Show Full Graph" toggle (current perspective vs complete graph)
|
|
187
|
-
- [ ] Add node count indicator
|
|
188
|
-
- [ ] Test with complex graphs (10+ nodes, multiple levels)
|
|
189
|
-
|
|
190
|
-
**Phase 5: Testing & Documentation** (1 day)
|
|
191
|
-
- [ ] Test with various spec configurations
|
|
192
|
-
- [ ] Performance testing with large graphs
|
|
193
|
-
- [ ] Update documentation
|
|
194
|
-
- [ ] Add tests for graph building logic
|
|
195
|
-
|
|
196
|
-
**Total: 3-5 days** (Phase 1 done, Phases 2-5 remaining)
|
|
197
|
-
|
|
198
|
-
## Plan
|
|
199
|
-
|
|
200
|
-
**Phase 1: Fix Current Implementation** ✅
|
|
201
|
-
- [x] Increase font sizes for better readability
|
|
202
|
-
- [x] Add ReactFlow Handle components to enable edge rendering
|
|
203
|
-
- [x] Fix edge colors and arrow markers
|
|
204
|
-
- [x] Improve node styling (larger dimensions, better borders)
|
|
205
|
-
- [x] Update legend text for clarity
|
|
206
|
-
- [x] Reduce horizontal spacing between nodes
|
|
207
|
-
|
|
208
|
-
**Phase 2: API Enhancement** ✅
|
|
209
|
-
- [x] Design complete dependency graph API response format
|
|
210
|
-
- [x] Implement `GET /api/specs/:id/dependency-graph` endpoint
|
|
211
|
-
- [x] Add graph traversal logic to find:
|
|
212
|
-
- Specs that depend on current spec (`requiredBy`)
|
|
213
|
-
- Bidirectional `related` connections
|
|
214
|
-
- [x] Optimize with caching and efficient queries
|
|
215
|
-
- [x] Add tests for API endpoint
|
|
216
|
-
|
|
217
|
-
**Phase 3: Client-Side Graph Enhancement** ✅
|
|
218
|
-
- [x] Update `SpecRelationships` type: add `requiredBy: string[]`
|
|
219
|
-
- [x] Modify `buildGraph()` function to support all relationship types
|
|
220
|
-
- [x] Add downstream nodes (red styling for "Required By")
|
|
221
|
-
- [x] Add node type for bidirectional related connections
|
|
222
|
-
- [x] Update dagre layout for complete graph structure
|
|
223
|
-
- [x] Add subtitle text for each node type explaining relationship
|
|
224
|
-
- [x] Fetch complete graph on dialog open using SWR
|
|
225
|
-
|
|
226
|
-
**Phase 4: UX Polish**
|
|
227
|
-
- [ ] Add tooltips with relationship explanations
|
|
228
|
-
- [ ] Improve legend with visual examples
|
|
229
|
-
- [ ] Add "View Mode" toggle (current perspective vs full graph)
|
|
230
|
-
- [ ] Add node/edge count indicators
|
|
231
|
-
- [ ] Add search/filter in graph
|
|
232
|
-
- [ ] Improve mobile responsiveness
|
|
233
|
-
|
|
234
|
-
**Phase 5: Testing**
|
|
235
|
-
- [ ] Test with no dependencies
|
|
236
|
-
- [ ] Test with only `dependsOn`
|
|
237
|
-
- [ ] Test with only `related`
|
|
238
|
-
- [ ] Test with `requiredBy` (downstream dependents)
|
|
239
|
-
- [ ] Test with bidirectional relationships
|
|
240
|
-
- [ ] Test with complex graphs (10+ nodes, multiple levels)
|
|
241
|
-
- [ ] Performance testing with large graphs
|
|
242
|
-
- [ ] Cross-browser testing
|
|
243
|
-
|
|
244
|
-
## Test
|
|
245
|
-
|
|
246
|
-
**Phase 1 Tests (Current Implementation)** ✅
|
|
247
|
-
- [x] Font sizes are readable
|
|
248
|
-
- [x] Edges render correctly with proper colors
|
|
249
|
-
- [x] Nodes display without overlap
|
|
250
|
-
- [x] Modal opens and closes correctly
|
|
251
|
-
- [x] Spec #082 shows 5 related connections
|
|
252
|
-
|
|
253
|
-
**Phase 2 Tests (Complete Graph API)**:
|
|
254
|
-
- [ ] API endpoint returns correct `requiredBy` relationships
|
|
255
|
-
- [ ] API handles specs with no dependencies
|
|
256
|
-
- [ ] API handles circular dependencies gracefully
|
|
257
|
-
- [ ] API response is cached appropriately
|
|
258
|
-
- [ ] Performance is acceptable (<200ms for typical queries)
|
|
259
|
-
|
|
260
|
-
**Phase 3 Tests (Enhanced Graph Visualization)**:
|
|
261
|
-
- [ ] Downstream nodes (Required By) appear on right side
|
|
262
|
-
- [ ] Upstream nodes (Depends On) appear on left side
|
|
263
|
-
- [ ] Related nodes show bidirectional nature
|
|
264
|
-
- [ ] Node subtitles explain relationship type
|
|
265
|
-
- [ ] Color coding is clear (amber=depends, red=requiredBy, blue=related)
|
|
266
|
-
- [ ] Layout handles 4 columns properly
|
|
267
|
-
- [ ] Edges connect to correct nodes
|
|
268
|
-
- [ ] Clicking nodes navigates to correct spec
|
|
269
|
-
|
|
270
|
-
**Phase 4 Tests (UX Polish)**:
|
|
271
|
-
- [ ] Tooltips provide helpful information
|
|
272
|
-
- [ ] Legend is clear and accurate
|
|
273
|
-
- [ ] View mode toggle works
|
|
274
|
-
- [ ] Node count indicators are correct
|
|
275
|
-
- [ ] Search/filter works in graph
|
|
276
|
-
- [ ] Mobile layout is usable
|
|
277
|
-
|
|
278
|
-
**Phase 5 Tests (Integration & Performance)**:
|
|
279
|
-
- [ ] Graph renders quickly for small graphs (<10 nodes, <100ms)
|
|
280
|
-
- [ ] Graph renders acceptably for large graphs (>20 nodes, <500ms)
|
|
281
|
-
- [ ] No memory leaks during repeated opens/closes
|
|
282
|
-
- [ ] Works in Chrome, Firefox, Safari
|
|
283
|
-
- [ ] Works on mobile devices
|
|
284
|
-
- [ ] Accessibility (keyboard navigation, screen readers)
|
|
285
|
-
|
|
286
|
-
## Notes
|
|
287
|
-
|
|
288
|
-
### Phase 1 Completion Summary
|
|
289
|
-
|
|
290
|
-
**Completed (Nov 17, 2025)**:
|
|
291
|
-
- ✅ Increased font sizes across all text elements
|
|
292
|
-
- Node labels: `text-xs` → `text-base` (16px)
|
|
293
|
-
- Badge text: `text-[10px]` → `text-xs` (12px)
|
|
294
|
-
- Subtitle: `text-[11px]` → `text-sm` (14px)
|
|
295
|
-
- Legend: `text-[11px]` → `text-sm` (14px)
|
|
296
|
-
- ✅ Fixed edge rendering by adding ReactFlow Handle components
|
|
297
|
-
- Added `<Handle type="target" position={Position.Left} />`
|
|
298
|
-
- Added `<Handle type="source" position={Position.Right} />`
|
|
299
|
-
- Resolved "Couldn't create edge for source handle id: undefined" warnings
|
|
300
|
-
- ✅ Improved edge styling
|
|
301
|
-
- Solid amber edges for `dependsOn` relationships (3px width)
|
|
302
|
-
- Dashed blue edges for `related` relationships (3px width, 10-8 dash pattern)
|
|
303
|
-
- Arrow markers properly configured with correct colors
|
|
304
|
-
- ✅ Enhanced node dimensions and styling
|
|
305
|
-
- Width: 220px → 280px
|
|
306
|
-
- Height: 90px → 110px
|
|
307
|
-
- Border: 1px → 2px
|
|
308
|
-
- Padding: px-4 py-3 → px-5 py-4
|
|
309
|
-
- Shadow: shadow-sm → shadow-md
|
|
310
|
-
- ✅ Reduced horizontal spacing
|
|
311
|
-
- `ranksep`: 190px → 120px for tighter layout
|
|
312
|
-
- ✅ Updated labels for clarity
|
|
313
|
-
- "Precedence" → "Depends On" (more explicit)
|
|
314
|
-
- "Connected" → "Related" (clearer terminology)
|
|
315
|
-
- Subtitles added: "Must complete first", "Connected work"
|
|
316
|
-
|
|
317
|
-
**Files Modified**:
|
|
318
|
-
- `/packages/web/src/components/spec-dependency-graph.tsx`
|
|
319
|
-
|
|
320
|
-
**Next Steps**: Phase 2 requires API changes to support complete dependency graph.
|
|
321
|
-
|
|
322
|
-
### Phase 2 & 3 Completion Summary
|
|
323
|
-
|
|
324
|
-
**Completed (Nov 17, 2025)**:
|
|
325
|
-
- ✅ **API Endpoint**: Created `GET /api/specs/[id]/dependency-graph`
|
|
326
|
-
- Returns complete graph: `{ current, dependsOn, requiredBy, related }`
|
|
327
|
-
- Standalone implementation to avoid tiktoken wasm issues
|
|
328
|
-
- Caching with 60s TTL
|
|
329
|
-
- ✅ **Graph Building**: `SpecDependencyGraph` class
|
|
330
|
-
- Builds reverse edges (requiredBy) from dependsOn relationships
|
|
331
|
-
- Handles bidirectional related connections automatically
|
|
332
|
-
- O(1) lookups with in-memory Map
|
|
333
|
-
- ✅ **Frontend Integration**:
|
|
334
|
-
- Updated `SpecRelationships` type to include `requiredBy`
|
|
335
|
-
- Added SWR hook to fetch complete graph on dialog open
|
|
336
|
-
- Added red styling for "Required By" nodes (downstream dependents)
|
|
337
|
-
- Updated legend to show all 3 relationship types
|
|
338
|
-
- Graph auto-layouts with dagre algorithm
|
|
339
|
-
- ✅ **Testing**:
|
|
340
|
-
- 2 tests for API endpoint
|
|
341
|
-
- Tests gracefully handle missing specs in test environment
|
|
342
|
-
- Build and all tests passing
|
|
343
|
-
|
|
344
|
-
**Files Modified**:
|
|
345
|
-
- `/packages/web/src/lib/dependency-graph.ts` (new)
|
|
346
|
-
- `/packages/web/src/app/api/specs/[id]/dependency-graph/route.ts` (new)
|
|
347
|
-
- `/packages/web/src/app/api/specs/[id]/dependency-graph/route.test.ts` (new)
|
|
348
|
-
- `/packages/web/src/components/spec-dependency-graph.tsx`
|
|
349
|
-
- `/packages/web/src/components/spec-detail-client.tsx`
|
|
350
|
-
- `/packages/web/src/types/specs.ts`
|
|
351
|
-
|
|
352
|
-
**Next Steps**: Phases 4-5 are optional UX polish and testing enhancements.
|
|
353
|
-
|
|
354
|
-
### Why Complete Dependency Graph Matters
|
|
355
|
-
|
|
356
|
-
**Current Limitation**: Only shows relationships FROM the current spec's perspective:
|
|
357
|
-
- Shows specs this one depends on (`dependsOn`)
|
|
358
|
-
- Shows specs this one is related to (`related`)
|
|
359
|
-
- **Missing**: Specs that depend on THIS spec (downstream impact)
|
|
360
|
-
- **Missing**: Specs that list THIS spec in their `related` (bidirectional)
|
|
361
|
-
|
|
362
|
-
**Example Problem**:
|
|
363
|
-
- Spec A depends on Spec B
|
|
364
|
-
- When viewing Spec B, you can't see that Spec A is blocked by it
|
|
365
|
-
- Can't assess impact of changes to Spec B
|
|
366
|
-
- Can't see full dependency chain
|
|
367
|
-
|
|
368
|
-
**Solution**: API endpoint that returns complete graph:
|
|
369
|
-
```typescript
|
|
370
|
-
interface CompleteDependencyGraph {
|
|
371
|
-
current: SpecMetadata;
|
|
372
|
-
dependsOn: SpecMetadata[]; // Upstream (current depends on these)
|
|
373
|
-
requiredBy: SpecMetadata[]; // Downstream (these depend on current)
|
|
374
|
-
related: SpecMetadata[]; // Outgoing related links
|
|
375
|
-
relatedBy: SpecMetadata[]; // Incoming related links
|
|
376
|
-
}
|
|
377
|
-
```
|
|
378
|
-
|
|
379
|
-
**Visualization Strategy**:
|
|
380
|
-
- **Left side**: Upstream dependencies (what this spec needs)
|
|
381
|
-
- **Center**: Current spec
|
|
382
|
-
- **Right side top**: Downstream dependents (what needs this spec)
|
|
383
|
-
- **Right side bottom**: Related specs (bidirectional connections)
|
|
384
|
-
|
|
385
|
-
### API Design Considerations
|
|
386
|
-
|
|
387
|
-
**Option A: In-Memory Graph (Recommended)**
|
|
388
|
-
|
|
389
|
-
Build complete dependency graph in-memory on server startup:
|
|
390
|
-
|
|
391
|
-
```typescript
|
|
392
|
-
class SpecDependencyGraph {
|
|
393
|
-
private graph: Map<string, {
|
|
394
|
-
dependsOn: Set<string>;
|
|
395
|
-
requiredBy: Set<string>;
|
|
396
|
-
related: Set<string>;
|
|
397
|
-
}>;
|
|
398
|
-
|
|
399
|
-
constructor(allSpecs: Spec[]) {
|
|
400
|
-
this.buildGraph(allSpecs);
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
private buildGraph(specs: Spec[]) {
|
|
404
|
-
// Initialize all nodes
|
|
405
|
-
for (const spec of specs) {
|
|
406
|
-
this.graph.set(spec.name, {
|
|
407
|
-
dependsOn: new Set(spec.dependsOn || []),
|
|
408
|
-
requiredBy: new Set(),
|
|
409
|
-
related: new Set(spec.related || []),
|
|
410
|
-
});
|
|
411
|
-
}
|
|
412
|
-
|
|
413
|
-
// Build reverse edges
|
|
414
|
-
for (const [specName, node] of this.graph.entries()) {
|
|
415
|
-
// For each dependsOn, add reverse requiredBy
|
|
416
|
-
for (const dep of node.dependsOn) {
|
|
417
|
-
this.graph.get(dep)?.requiredBy.add(specName);
|
|
418
|
-
}
|
|
419
|
-
// For each related, add bidirectional link
|
|
420
|
-
for (const rel of node.related) {
|
|
421
|
-
this.graph.get(rel)?.related.add(specName);
|
|
422
|
-
}
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
getCompleteGraph(specName: string): CompleteDependencyGraph {
|
|
427
|
-
const node = this.graph.get(specName);
|
|
428
|
-
if (!node) throw new Error(`Spec not found: ${specName}`);
|
|
429
|
-
|
|
430
|
-
return {
|
|
431
|
-
current: this.getSpecMetadata(specName),
|
|
432
|
-
dependsOn: Array.from(node.dependsOn).map(n => this.getSpecMetadata(n)),
|
|
433
|
-
requiredBy: Array.from(node.requiredBy).map(n => this.getSpecMetadata(n)),
|
|
434
|
-
related: Array.from(node.related).map(n => this.getSpecMetadata(n)),
|
|
435
|
-
};
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
```
|
|
439
|
-
|
|
440
|
-
**Performance Analysis**:
|
|
441
|
-
- **Memory**: ~100 specs × (3 Sets × ~5 entries × 50 bytes) ≈ 75KB total
|
|
442
|
-
- **Startup**: O(n²) worst case, but typically O(n×d) where d = avg dependencies (~5)
|
|
443
|
-
- 100 specs × 5 deps = 500 operations ≈ <1ms
|
|
444
|
-
- **Query**: O(1) graph lookup + O(d) metadata fetch ≈ <1ms
|
|
445
|
-
- **Conclusion**: Negligible memory/CPU impact, excellent query performance
|
|
446
|
-
|
|
447
|
-
**Option B: On-Demand Query** (Not Recommended)
|
|
448
|
-
- Query all specs on each request to find reverse dependencies
|
|
449
|
-
- O(n) per request where n = total specs
|
|
450
|
-
- Slower (10-50ms per request)
|
|
451
|
-
- No memory benefit (specs already loaded)
|
|
452
|
-
|
|
453
|
-
**Decision**: Use Option A (in-memory graph) - trivial memory cost for dramatic performance gain.
|
|
454
|
-
|
|
455
|
-
### CLI/MCP Impact Analysis
|
|
456
|
-
|
|
457
|
-
**Current CLI Commands Affected**:
|
|
458
|
-
- `lean-spec deps <spec>` - Shows dependencies from spec's perspective
|
|
459
|
-
- Need to enhance to show complete graph (requiredBy + bidirectional related)
|
|
460
|
-
|
|
461
|
-
**Proposed New Commands**:
|
|
462
|
-
- `lean-spec deps <spec> --complete` - Show full dependency graph
|
|
463
|
-
- `lean-spec deps <spec> --upstream` - Only show dependsOn
|
|
464
|
-
- `lean-spec deps <spec> --downstream` - Only show requiredBy
|
|
465
|
-
- `lean-spec deps <spec> --impact` - Show all specs affected by changes to this spec
|
|
466
|
-
|
|
467
|
-
**MCP Tools Affected**:
|
|
468
|
-
- `mcp_lean-spec_deps` - Currently shows dependencies, needs enhancement
|
|
469
|
-
- May need new tool: `mcp_lean-spec_dependency-graph` for complete view
|
|
470
|
-
|
|
471
|
-
**Related Spec Needed**: Yes
|
|
472
|
-
- **Spec #099**: "Enhanced Dependency Commands for CLI/MCP"
|
|
473
|
-
- Implement in-memory graph in `@leanspec/core`
|
|
474
|
-
- Add CLI commands for complete dependency views
|
|
475
|
-
- Update MCP tools to support full graph
|
|
476
|
-
- Ensure consistency between web, CLI, and MCP
|
|
477
|
-
|
|
478
|
-
**Core Package Changes**:
|
|
479
|
-
- Add `SpecDependencyGraph` class to `@leanspec/core`
|
|
480
|
-
- Export graph building utilities
|
|
481
|
-
- Share implementation between web API and CLI
|
|
482
|
-
|
|
483
|
-
### Timeline and Dependencies in Modals (REQUIRED)
|
|
484
|
-
|
|
485
|
-
**User Requirement**: Both timeline and dependencies MUST use modal/dialog pattern, not inline accordions.
|
|
486
|
-
|
|
487
|
-
**Rationale**:
|
|
488
|
-
- **More space**: Complex graphs and timelines need room to breathe
|
|
489
|
-
- **Better mobile UX**: Full screen modal vs cramped inline expansion
|
|
490
|
-
- **Consistent pattern**: All spec metadata (dependencies, timeline, transitions) in dialogs
|
|
491
|
-
- **Focus**: Modal isolates the view, easier to explore relationships
|
|
492
|
-
- **Performance**: Lazy load graph only when user opens dialog
|
|
493
|
-
|
|
494
|
-
**Implementation**:
|
|
495
|
-
- Use shadcn/ui Dialog component (already in project)
|
|
496
|
-
- "Show Dependencies" button → opens dependency graph modal
|
|
497
|
-
- "Show Timeline" button → opens timeline modal
|
|
498
|
-
- Mobile: Full screen modals
|
|
499
|
-
- Desktop: Large modals (80-90% viewport)
|
|
500
|
-
- Reactflow provides zoom/pan inside modal automatically
|
|
501
|
-
|
|
502
|
-
**Not Optional**: This is a core UX requirement, not a future enhancement. The modal pattern is part of the initial implementation.
|
|
503
|
-
|
|
504
|
-
### Related Issues
|
|
505
|
-
|
|
506
|
-
**Why These Specs Are Related**:
|
|
507
|
-
|
|
508
|
-
**Spec #066** (Context Economy Thresholds Refinement):
|
|
509
|
-
- **How it led here**: While testing token counting on spec #066, we opened the dependency graph
|
|
510
|
-
- **Issues discovered**: Nodes were overlapping, fonts too small, edges not rendering
|
|
511
|
-
- **Trigger**: This visualization problem became apparent during spec #066 testing
|
|
512
|
-
- **Connection**: Good dependency visualization helps assess spec complexity/relationships
|
|
513
|
-
|
|
514
|
-
**Spec #082** (Web App Realtime Spec Sync Architecture):
|
|
515
|
-
- **How it relates**: Defines the data layer (FilesystemSource, DatabaseSource, SpecsService)
|
|
516
|
-
- **Dependency**: This spec relies on the service layer architecture from #082
|
|
517
|
-
- **API changes**: Complete dependency graph endpoint will use #082's service pattern
|
|
518
|
-
- **Testing context**: Spec #082 has 5 related connections, perfect for testing DAG improvements
|
|
519
|
-
- **Coordination**: Any API changes should follow #082's architectural patterns
|
|
520
|
-
|
|
521
|
-
**Spec #099** (To Be Created - Enhanced Dependency Commands):
|
|
522
|
-
- **Scope**: CLI/MCP enhancements for complete dependency graph
|
|
523
|
-
- **Shared code**: In-memory graph implementation in `@leanspec/core`
|
|
524
|
-
- **Consistency**: Ensure web, CLI, MCP all show same dependency information
|
|
525
|
-
- **Dependencies**: This spec (#097) should complete Phase 2 before #099 starts
|