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