@leanspec/ui 0.2.7 → 0.2.8
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 +2 -0
- package/.next/standalone/packages/ui/.next/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/prerender-manifest.json +3 -3
- package/.next/standalone/packages/ui/.next/required-server-files.json +4 -4
- package/.next/standalone/packages/ui/.next/routes-manifest.json +12 -0
- package/.next/standalone/packages/ui/.next/server/app/_global-error.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_not-found.rsc +18 -18
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_full.segment.rsc +18 -18
- 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/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]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/revalidate/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js.nft.json +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.nft.json +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/page.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js +1 -1
- 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/page.js +1 -1
- 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 +12 -12
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +12 -12
- 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.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/page.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/stats/page.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/stats/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/stats/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app-paths-manifest.json +2 -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]__65667b70._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__803d07f0._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__84cdc14a._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8a9ab1a3._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__bdc3963a._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f5c6d6b8._.js +1 -1
- 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/ssr/[root-of-the-server]__12b4eb41._.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]__6e739186._.js +7 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a4c56419._.js +7 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b6632d78._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__daee3355._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__5382b397._.js → [root-of-the-server]__ead1539c._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_000dd317._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_0f9ffe32._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_28fe1532._.js +5 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_315f3b3a._.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/_9dcf102b._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_497c8b73._.js → _b397e94a._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_8272a49c._.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_src_app_context_context-client_tsx_4ba99a62._.js +12 -0
- 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_specs-nav-sidebar_tsx_8237ed13._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/pages/404.html +2 -2
- package/.next/standalone/packages/ui/.next/server/pages/500.html +2 -2
- package/.next/standalone/packages/ui/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/1eb8283995f370c6.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/336e8e8fc6b0fba8.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/37a1236ed50645a6.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/9d84ba08a41145ec.js +5 -0
- package/.next/standalone/packages/ui/.next/static/chunks/c4b1faff3361a749.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/{294dea6dbec43ca6.js → d7420d2a867e57b5.js} +1 -1
- package/.next/{static/chunks/cca4441cde342ae3.js → standalone/packages/ui/.next/static/chunks/dae403679aae65f4.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/efded9da04c960d8.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/f382932f1a5d6359.js +10 -0
- package/.next/standalone/packages/ui/.next/static/chunks/f43b6e43b4da1a32.css +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/f6dd06e6d22d2d12.js +3 -0
- package/.next/standalone/packages/ui/dist/BUILD_ID +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/package.json +1 -9
- package/.next/standalone/packages/ui/dist/standalone/packages/web/server.js +1 -1
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/README.md +3 -7
- package/.next/standalone/packages/ui/dist/standalone/specs/072-ai-agent-first-use-workflow/README.md +3 -5
- package/.next/standalone/packages/ui/dist/standalone/specs/081-web-app-ux-redesign/README.md +1 -2
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/README.md +3 -8
- package/.next/standalone/packages/ui/dist/standalone/specs/087-cli-ui-command/README.md +259 -73
- package/.next/standalone/packages/ui/dist/standalone/specs/088-core-concepts-terminology-only/README.md +3 -5
- package/.next/standalone/packages/ui/dist/standalone/specs/089-sdd-practical-tutorials/README.md +3 -5
- package/.next/standalone/packages/ui/dist/standalone/specs/090-leanspec-sdd-case-studies/README.md +3 -5
- package/.next/standalone/packages/ui/dist/standalone/specs/091-chinese-localization-strategy/README.md +23 -33
- package/.next/standalone/packages/ui/dist/standalone/specs/092-docs-site-submodule-migration/README.md +3 -7
- package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md +14 -25
- package/.next/standalone/packages/ui/dist/static/chunks/0c19c69aa7625475.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/116800b03245a1e5.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/15843a3d7584e314.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/19e80edf527aef5c.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/465954d5af3284a9.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/5abeeb89f1412a80.js +3 -0
- package/.next/standalone/packages/ui/dist/static/chunks/5c2072ad938de8ed.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/6a05a93ec8fa7b83.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/778e42188e450b39.css +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/a02c1f50ff00204f.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/a45464b9776dd88e.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/a6dad97d9634a72d.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/b0ea0ac61604f843.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/c06e85b449720194.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/c557ac675be79771.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/cad005a57ffbb2d3.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/cdf6fe33bc65efbc.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/d12ed5dbe44caed7.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/d1ebe5c1a344f4ca.js +5 -0
- package/.next/standalone/packages/ui/dist/static/chunks/d42cf1682bc46652.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/dde5d8bddd7fbfcf.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/ebd89051637b9a47.js +4 -0
- package/.next/standalone/packages/ui/dist/static/chunks/ec82875d18b29f47.js +2 -0
- package/.next/standalone/packages/ui/dist/static/chunks/f0b701df9769bcc5.js +19 -0
- package/.next/standalone/packages/ui/dist/static/chunks/turbopack-1c09a99f4c9e28d3.js +3 -0
- package/.next/standalone/packages/ui/package.json +3 -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/context/context-client.tsx +371 -0
- package/.next/standalone/packages/ui/src/app/context/page.tsx +17 -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/components/context-file-viewer.tsx +291 -0
- package/.next/standalone/packages/ui/src/components/main-sidebar.tsx +10 -1
- package/.next/standalone/packages/ui/src/components/spec-detail-client.tsx +181 -134
- package/.next/standalone/packages/ui/src/components/spec-detail-wrapper.tsx +20 -0
- package/.next/standalone/packages/ui/src/components/specs-nav-sidebar.tsx +3 -2
- package/.next/standalone/packages/ui/src/components/ui/accordion.tsx +58 -0
- package/.next/standalone/packages/ui/src/lib/db/service-queries.ts +172 -3
- package/.next/standalone/packages/ui/src/lib/specs/types.ts +44 -0
- package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_buildManifest.js +11 -0
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_clientMiddlewareManifest.json +1 -0
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_ssgManifest.js +1 -0
- package/.next/static/chunks/1eb8283995f370c6.js +1 -0
- package/.next/static/chunks/336e8e8fc6b0fba8.js +1 -0
- package/.next/static/chunks/37a1236ed50645a6.js +1 -0
- package/.next/static/chunks/9d84ba08a41145ec.js +5 -0
- package/.next/static/chunks/c4b1faff3361a749.js +1 -0
- package/.next/static/chunks/{294dea6dbec43ca6.js → d7420d2a867e57b5.js} +1 -1
- package/.next/{standalone/packages/ui/.next/static/chunks/cca4441cde342ae3.js → static/chunks/dae403679aae65f4.js} +1 -1
- package/.next/static/chunks/efded9da04c960d8.js +1 -0
- package/.next/static/chunks/f382932f1a5d6359.js +10 -0
- package/.next/static/chunks/f43b6e43b4da1a32.css +1 -0
- package/.next/static/chunks/f6dd06e6d22d2d12.js +3 -0
- package/package.json +4 -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/node_modules/.pnpm/source-map@0.8.0-beta.0/node_modules/source-map/package.json +0 -95
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__1d0c2012._.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]__a7ae8552._.js +0 -7
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_14118969._.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/_c2f54661._.js +0 -5
- package/.next/standalone/packages/ui/.next/static/chunks/16ff9833ae1bb3ae.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/2204c0f16b23ec4c.js +0 -3
- 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/b845813463167db0.js +0 -5
- package/.next/standalone/packages/ui/.next/static/chunks/bd9893e28f8f6a9a.css +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/d784d84d5b880e48.js +0 -1
- package/.next/standalone/packages/ui/dist/standalone/packages/web/components.json +0 -20
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/0000_reflective_thena.sql +0 -59
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/0001_fresh_carmella_unuscione.sql +0 -1
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/0000_snapshot.json +0 -427
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/0001_snapshot.json +0 -436
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/_journal.json +0 -20
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle.config.ts +0 -10
- package/.next/standalone/packages/ui/dist/standalone/packages/web/eslint.config.mjs +0 -18
- package/.next/standalone/packages/ui/dist/standalone/packages/web/next.config.ts +0 -7
- package/.next/standalone/packages/ui/dist/standalone/packages/web/postcss.config.mjs +0 -8
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/projects/[id]/specs/route.ts +0 -23
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/projects/route.ts +0 -19
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/revalidate/route.ts +0 -63
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/dependency-graph/route.test.ts +0 -51
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/dependency-graph/route.ts +0 -171
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/route.ts +0 -36
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/subspecs/[file]/route.ts +0 -46
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/stats/route.ts +0 -19
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/board-client.tsx +0 -162
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/loading.tsx +0 -43
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/page.tsx +0 -18
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/dashboard-client.tsx +0 -364
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/error.tsx +0 -43
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/globals.css +0 -531
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/home-client.tsx +0 -277
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/layout.tsx +0 -70
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/loading.tsx +0 -87
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/not-found.tsx +0 -27
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/page.tsx +0 -18
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/[id]/loading.tsx +0 -5
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/[id]/page.tsx +0 -43
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/page.tsx +0 -18
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/specs-client.tsx +0 -425
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/stats/page.tsx +0 -18
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/stats/stats-client.tsx +0 -283
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/back-to-top.tsx +0 -46
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/empty-state.tsx +0 -52
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/main-sidebar.tsx +0 -175
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/markdown-link.test.ts +0 -96
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/markdown-link.tsx +0 -95
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/navigation.tsx +0 -210
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/priority-badge.tsx +0 -53
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/quick-search.tsx +0 -180
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/skeletons.tsx +0 -119
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-dependency-graph.tsx +0 -369
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-client.tsx +0 -372
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-loading-shell.tsx +0 -42
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-wrapper.tsx +0 -70
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-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/094-ai-chatbot-web-integration/README.md +0 -332
- package/.next/standalone/packages/ui/dist/standalone/specs/095-pr-migration-verification/README.md +0 -339
- package/.next/standalone/packages/ui/dist/standalone/specs/096-docs-beginner-first-reorg/README.md +0 -399
- package/.next/standalone/packages/ui/dist/standalone/specs/097-dag-visualization-library/README.md +0 -525
- package/.next/standalone/packages/ui/dist/standalone/specs/098-github-multi-project-integration/README.md +0 -387
- package/.next/standalone/packages/ui/dist/standalone/specs/099-enhanced-dependency-commands-cli-mcp/README.md +0 -613
- package/.next/standalone/packages/ui/dist/standalone/specs/100-release-process-typecheck-failure/README.md +0 -266
- package/.next/standalone/packages/ui/dist/standalone/specs/101-sidebar-scroll-position-drift/README.md +0 -100
- package/.next/standalone/packages/ui/dist/standalone/specs/102-mcp-wrapper-package/README.md +0 -172
- package/.next/static/chunks/16ff9833ae1bb3ae.js +0 -1
- package/.next/static/chunks/2204c0f16b23ec4c.js +0 -3
- package/.next/static/chunks/7590e65bcaa41e8b.js +0 -1
- package/.next/static/chunks/b6976cf6c48996e5.js +0 -1
- package/.next/static/chunks/b845813463167db0.js +0 -5
- package/.next/static/chunks/bd9893e28f8f6a9a.css +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- → -Mn9iD4O5f_khGd1P3kmB}/_buildManifest.js +0 -0
- /package/.next/standalone/packages/ui/.next/static/{6nq7WNafPv5Bf_7mWgRQ- → -Mn9iD4O5f_khGd1P3kmB}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{6nq7WNafPv5Bf_7mWgRQ- → -Mn9iD4O5f_khGd1P3kmB}/_ssgManifest.js +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/f864aa7e7061c0600e35cf3d879b27cf.txt +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/favicon.ico +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/file.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/github-mark-white.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/github-mark.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/globe.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/icon.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/logo-dark-bg.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/logo-with-bg.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/logo.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/next.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/vercel.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/window.svg +0 -0
- /package/.next/{static/6nq7WNafPv5Bf_7mWgRQ- → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_buildManifest.js +0 -0
- /package/.next/{static/6nq7WNafPv5Bf_7mWgRQ- → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_clientMiddlewareManifest.json +0 -0
- /package/.next/{static/6nq7WNafPv5Bf_7mWgRQ- → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_ssgManifest.js +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leanspec/web",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "LeanSpec Web: Fullstack spec showcase platform",
|
|
5
5
|
"private": true,
|
|
6
6
|
"type": "module",
|
|
@@ -19,7 +19,6 @@
|
|
|
19
19
|
"db:seed": "tsx src/lib/db/seed.ts"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@dagrejs/dagre": "^1.1.8",
|
|
23
22
|
"@leanspec/core": "workspace:*",
|
|
24
23
|
"@radix-ui/react-avatar": "^1.1.11",
|
|
25
24
|
"@radix-ui/react-dialog": "^1.1.15",
|
|
@@ -37,7 +36,6 @@
|
|
|
37
36
|
"dayjs": "^1.11.19",
|
|
38
37
|
"drizzle-orm": "^0.38.3",
|
|
39
38
|
"fuse.js": "^7.1.0",
|
|
40
|
-
"github-slugger": "^2.0.0",
|
|
41
39
|
"gray-matter": "^4.0.3",
|
|
42
40
|
"highlight.js": "^11.11.1",
|
|
43
41
|
"lucide-react": "^0.553.0",
|
|
@@ -46,23 +44,17 @@
|
|
|
46
44
|
"react": "19.2.0",
|
|
47
45
|
"react-dom": "19.2.0",
|
|
48
46
|
"react-markdown": "^9.0.2",
|
|
49
|
-
"react-window": "^2.2.3",
|
|
50
|
-
"reactflow": "^11.11.4",
|
|
51
47
|
"recharts": "^3.4.1",
|
|
52
48
|
"rehype-highlight": "^7.0.1",
|
|
53
|
-
"rehype-slug": "^6.0.0",
|
|
54
49
|
"remark-gfm": "^4.0.0",
|
|
55
50
|
"sonner": "^2.0.7",
|
|
56
51
|
"swr": "^2.3.6",
|
|
57
52
|
"tailwind-merge": "^3.4.0",
|
|
58
|
-
"unified": "^11.0.5",
|
|
59
|
-
"unist-util-visit": "^5.0.0",
|
|
60
53
|
"zod": "^3.25.76"
|
|
61
54
|
},
|
|
62
55
|
"devDependencies": {
|
|
63
56
|
"@tailwindcss/typography": "^0.5.15",
|
|
64
57
|
"@types/better-sqlite3": "^7.6.12",
|
|
65
|
-
"@types/mdast": "^4.0.4",
|
|
66
58
|
"@types/node": "^20",
|
|
67
59
|
"@types/react": "^19",
|
|
68
60
|
"@types/react-dom": "^19",
|
|
@@ -15,7 +15,7 @@ const currentPort = parseInt(process.env.PORT, 10) || 3000
|
|
|
15
15
|
const hostname = process.env.HOSTNAME || '0.0.0.0'
|
|
16
16
|
|
|
17
17
|
let keepAliveTimeout = parseInt(process.env.KEEP_ALIVE_TIMEOUT, 10)
|
|
18
|
-
const nextConfig = {"env":{},"webpack":null,"typescript":{"ignoreBuildErrors":false},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/
|
|
18
|
+
const nextConfig = {"env":{},"webpack":null,"typescript":{"ignoreBuildErrors":false},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/marvin/projects/codervisor/lean-spec","cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"serverSourceMaps":false,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"clientSegmentCache":true,"dynamicOnHover":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":31,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":false,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":false,"lockDistDir":true,"isolatedDevBuild":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.ts","turbopack":{"root":"/home/marvin/projects/codervisor/lean-spec"},"distDirRoot":".next"}
|
|
19
19
|
|
|
20
20
|
process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(nextConfig)
|
|
21
21
|
|
package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
status:
|
|
2
|
+
status: in-progress
|
|
3
3
|
created: '2025-11-03'
|
|
4
4
|
tags:
|
|
5
5
|
- docs
|
|
@@ -8,21 +8,17 @@ tags:
|
|
|
8
8
|
- v0.3.0-launch
|
|
9
9
|
priority: high
|
|
10
10
|
created_at: '2025-11-03T00:00:00Z'
|
|
11
|
-
updated_at: '2025-11-
|
|
11
|
+
updated_at: '2025-11-11T15:21:48.941Z'
|
|
12
12
|
depends_on:
|
|
13
13
|
- 067-monorepo-core-extraction
|
|
14
14
|
transitions:
|
|
15
15
|
- status: in-progress
|
|
16
16
|
at: '2025-11-11T15:21:48.941Z'
|
|
17
|
-
- status: complete
|
|
18
|
-
at: '2025-11-17T08:18:56.995Z'
|
|
19
|
-
completed_at: '2025-11-17T08:18:56.995Z'
|
|
20
|
-
completed: '2025-11-17'
|
|
21
17
|
---
|
|
22
18
|
|
|
23
19
|
# LeanSpec Web: Fullstack Spec Showcase Platform
|
|
24
20
|
|
|
25
|
-
> **Status**:
|
|
21
|
+
> **Status**: ⏳ In progress · **Priority**: High · **Created**: 2025-11-03 · **Tags**: docs, dogfooding, web, v0.3.0-launch
|
|
26
22
|
|
|
27
23
|
**Project**: lean-spec
|
|
28
24
|
**Team**: Core Development
|
package/.next/standalone/packages/ui/dist/standalone/specs/072-ai-agent-first-use-workflow/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
status:
|
|
2
|
+
status: in-progress
|
|
3
3
|
created: '2025-11-13'
|
|
4
4
|
tags:
|
|
5
5
|
- onboarding
|
|
@@ -8,17 +8,15 @@ tags:
|
|
|
8
8
|
- mcp
|
|
9
9
|
priority: high
|
|
10
10
|
created_at: '2025-11-13T08:20:28.110Z'
|
|
11
|
-
updated_at: '2025-11-
|
|
11
|
+
updated_at: '2025-11-13T08:21:45.345Z'
|
|
12
12
|
transitions:
|
|
13
13
|
- status: in-progress
|
|
14
14
|
at: '2025-11-13T08:21:45.345Z'
|
|
15
|
-
- status: planned
|
|
16
|
-
at: '2025-11-17T08:18:44.417Z'
|
|
17
15
|
---
|
|
18
16
|
|
|
19
17
|
# ai-agent-first-use-workflow
|
|
20
18
|
|
|
21
|
-
> **Status**:
|
|
19
|
+
> **Status**: ⏳ In progress · **Priority**: High · **Created**: 2025-11-13 · **Tags**: onboarding, ai-agents, ux, mcp
|
|
22
20
|
|
|
23
21
|
**Project**: lean-spec
|
|
24
22
|
**Team**: Core Development
|
package/.next/standalone/packages/ui/dist/standalone/specs/081-web-app-ux-redesign/README.md
CHANGED
|
@@ -14,8 +14,7 @@ depends_on:
|
|
|
14
14
|
related:
|
|
15
15
|
- 052-branding-assets
|
|
16
16
|
- 068-live-specs-ux-enhancements
|
|
17
|
-
|
|
18
|
-
updated_at: '2025-11-17T06:32:59.774Z'
|
|
17
|
+
updated_at: '2025-11-17T01:14:24.924Z'
|
|
19
18
|
transitions:
|
|
20
19
|
- status: in-progress
|
|
21
20
|
at: '2025-11-14T04:08:03.555Z'
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
status:
|
|
2
|
+
status: in-progress
|
|
3
3
|
created: '2025-11-14'
|
|
4
4
|
tags:
|
|
5
5
|
- web
|
|
@@ -9,25 +9,20 @@ tags:
|
|
|
9
9
|
- v0.3.0
|
|
10
10
|
priority: critical
|
|
11
11
|
created_at: '2025-11-14T05:33:26.170Z'
|
|
12
|
-
updated_at: '2025-11-
|
|
12
|
+
updated_at: '2025-11-14T05:35:02.854Z'
|
|
13
13
|
transitions:
|
|
14
14
|
- status: in-progress
|
|
15
15
|
at: '2025-11-14T05:35:02.854Z'
|
|
16
|
-
- status: complete
|
|
17
|
-
at: '2025-11-17T08:18:56.781Z'
|
|
18
16
|
related:
|
|
19
17
|
- 035-live-specs-showcase
|
|
20
18
|
- 081-web-app-ux-redesign
|
|
21
19
|
- 068-live-specs-ux-enhancements
|
|
22
20
|
- 065-v03-planning
|
|
23
|
-
- 094-ai-chatbot-web-integration
|
|
24
|
-
completed_at: '2025-11-17T08:18:56.781Z'
|
|
25
|
-
completed: '2025-11-17'
|
|
26
21
|
---
|
|
27
22
|
|
|
28
23
|
# Web App Realtime Spec Sync Architecture
|
|
29
24
|
|
|
30
|
-
> **Status**:
|
|
25
|
+
> **Status**: ⏳ In progress · **Priority**: Critical · **Created**: 2025-11-14 · **Tags**: web, architecture, deployment, realtime, v0.3.0
|
|
31
26
|
|
|
32
27
|
**Project**: lean-spec
|
|
33
28
|
**Team**: Core Development
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
status:
|
|
2
|
+
status: in-progress
|
|
3
3
|
created: '2025-11-17'
|
|
4
4
|
tags:
|
|
5
5
|
- cli
|
|
@@ -12,19 +12,17 @@ related:
|
|
|
12
12
|
- 035-live-specs-showcase
|
|
13
13
|
- 081-web-app-ux-redesign
|
|
14
14
|
- 082-web-realtime-sync-architecture
|
|
15
|
-
updated_at: '2025-11-
|
|
15
|
+
updated_at: '2025-11-17T04:41:33.637Z'
|
|
16
16
|
transitions:
|
|
17
17
|
- status: in-progress
|
|
18
18
|
at: '2025-11-17T01:59:34.354Z'
|
|
19
|
-
- status: complete
|
|
20
|
-
at: '2025-11-17T06:12:03.020Z'
|
|
21
19
|
completed_at: '2025-11-17T02:00:24.131Z'
|
|
22
20
|
completed: '2025-11-17'
|
|
23
21
|
---
|
|
24
22
|
|
|
25
23
|
# CLI UI Command: `lean-spec ui`
|
|
26
24
|
|
|
27
|
-
> **Status**:
|
|
25
|
+
> **Status**: ⏳ In progress · **Priority**: Medium · **Created**: 2025-11-17 · **Tags**: cli, web, dx, integration
|
|
28
26
|
|
|
29
27
|
**Project**: lean-spec
|
|
30
28
|
**Team**: Core Development
|
|
@@ -41,29 +39,207 @@ completed: '2025-11-17'
|
|
|
41
39
|
- Unit tests passing
|
|
42
40
|
- Code review feedback addressed
|
|
43
41
|
|
|
42
|
+
**Phase 2: Standalone UI Package (Production Mode)** - 🚧 **IN PROGRESS**
|
|
43
|
+
- Need to create `@leanspec/ui` package for external projects
|
|
44
|
+
- Need to implement `runPublishedUI()` logic in CLI
|
|
45
|
+
- Need to set up npm publish CI workflow
|
|
46
|
+
|
|
47
|
+
**What works now:**
|
|
48
|
+
- ✅ `lean-spec ui` in LeanSpec monorepo (dev mode)
|
|
49
|
+
- ✅ All command options: `--port`, `--specs`, `--no-open`, `--dry-run`
|
|
50
|
+
- ✅ Auto-opens browser, launches web server with filesystem mode
|
|
51
|
+
|
|
52
|
+
**What's next:**
|
|
53
|
+
- Create standalone `@leanspec/ui` package
|
|
54
|
+
- Implement production mode for external projects
|
|
55
|
+
- Set up CI/CD for npm publishing
|
|
56
|
+
|
|
57
|
+
## Overview
|
|
58
|
+
|
|
59
|
+
Add a `lean-spec ui` command to the CLI that launches the local web interface for visual spec management. This provides a better UX for users who prefer graphical interfaces over CLI commands, especially for browsing, searching, and understanding spec relationships.
|
|
60
|
+
|
|
61
|
+
**Why now?**
|
|
62
|
+
- Web app is production-ready (specs 035, 081, 082 completed)
|
|
63
|
+
- Filesystem-based architecture (spec 082) enables realtime local spec viewing
|
|
64
|
+
- Natural complement to CLI workflow - some tasks are better visual (board view, search, relationships)
|
|
65
|
+
- Low effort, high value feature for improving DX
|
|
66
|
+
|
|
67
|
+
**What's the problem?**
|
|
68
|
+
- Users must manually navigate to `packages/web` and run `npm run dev` to access the UI
|
|
69
|
+
- No integrated workflow between CLI and web interface
|
|
70
|
+
- External projects using `lean-spec` have no easy way to access the web UI
|
|
71
|
+
- Missing discoverability - users may not know the web interface exists
|
|
72
|
+
|
|
73
|
+
**What's the solution?**
|
|
74
|
+
Add `lean-spec ui` command that:
|
|
75
|
+
1. **For external projects**: Runs a published standalone web UI package (`@leanspec/ui`)
|
|
76
|
+
2. **For LeanSpec monorepo** (dev): Optionally detects and runs local `packages/web` dev server
|
|
77
|
+
3. Opens browser automatically to the UI
|
|
78
|
+
4. Watches specs directory for changes (realtime updates via spec 082 architecture)
|
|
79
|
+
|
|
80
|
+
## Design
|
|
81
|
+
|
|
82
|
+
### Package Strategy
|
|
83
|
+
|
|
84
|
+
**Published Package Approach** (Preferred for external projects):
|
|
85
|
+
|
|
86
|
+
Create a separate `@leanspec/ui` package that:
|
|
87
|
+
- Bundles the web app as a standalone executable
|
|
88
|
+
- Can be run via `npx @leanspec/ui` or installed globally
|
|
89
|
+
- Detects specs directory automatically (looks for `specs/` or `leanspec.yaml`)
|
|
90
|
+
- Lightweight CLI wrapper around Next.js production build
|
|
91
|
+
|
|
92
|
+
**Architecture:**
|
|
93
|
+
```
|
|
94
|
+
┌─────────────────────────────────────────────────────────┐
|
|
95
|
+
│ User Project │
|
|
96
|
+
├─────────────────────────────────────────────────────────┤
|
|
97
|
+
│ │
|
|
98
|
+
│ specs/ │
|
|
99
|
+
│ └── 001-my-spec/ │
|
|
100
|
+
│ └── README.md │
|
|
101
|
+
│ │
|
|
102
|
+
│ $ npx lean-spec ui │
|
|
103
|
+
│ ↓ │
|
|
104
|
+
│ Runs: npx @leanspec/ui --specs ./specs │
|
|
105
|
+
│ ↓ │
|
|
106
|
+
│ Opens: http://localhost:3000 │
|
|
107
|
+
│ ↓ │
|
|
108
|
+
│ Web UI (filesystem mode) ← reads specs/ directly │
|
|
109
|
+
│ │
|
|
110
|
+
└─────────────────────────────────────────────────────────┘
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Command Interface
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
# Start web UI (auto-detect specs directory)
|
|
117
|
+
lean-spec ui
|
|
118
|
+
|
|
119
|
+
# Specify custom specs directory
|
|
120
|
+
lean-spec ui --specs ./my-specs
|
|
121
|
+
|
|
122
|
+
# Specify custom port
|
|
123
|
+
lean-spec ui --port 3001
|
|
124
|
+
|
|
125
|
+
# Don't open browser automatically
|
|
126
|
+
lean-spec ui --no-open
|
|
127
|
+
|
|
128
|
+
# Show what would run without executing
|
|
129
|
+
lean-spec ui --dry-run
|
|
130
|
+
```
|
|
131
|
+
|
|
44
132
|
### Implementation Approach
|
|
45
133
|
|
|
46
|
-
**Phase 1: CLI
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
134
|
+
**Phase 1: CLI Command (packages/cli/src/commands/ui.ts)**
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
import { Command } from 'commander';
|
|
138
|
+
import { spawn } from 'child_process';
|
|
139
|
+
import { existsSync } from 'fs';
|
|
140
|
+
import { resolve, join } from 'path';
|
|
141
|
+
import chalk from 'chalk';
|
|
142
|
+
import ora from 'ora';
|
|
143
|
+
|
|
144
|
+
export function registerUiCommand(program: Command) {
|
|
145
|
+
program
|
|
146
|
+
.command('ui')
|
|
147
|
+
.description('Start local web UI for spec management')
|
|
148
|
+
.option('-s, --specs <dir>', 'Specs directory', './specs')
|
|
149
|
+
.option('-p, --port <port>', 'Port to run on', '3000')
|
|
150
|
+
.option('--no-open', "Don't open browser automatically")
|
|
151
|
+
.option('--dry-run', 'Show what would run without executing')
|
|
152
|
+
.action(async (options) => {
|
|
153
|
+
const specsDir = resolve(process.cwd(), options.specs);
|
|
154
|
+
|
|
155
|
+
// Verify specs directory exists
|
|
156
|
+
if (!existsSync(specsDir)) {
|
|
157
|
+
console.error(chalk.red(`✗ Specs directory not found: ${specsDir}`));
|
|
158
|
+
console.log(chalk.dim('\nRun `lean-spec init` to initialize LeanSpec in this directory.'));
|
|
159
|
+
process.exit(1);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Check if running in LeanSpec monorepo (dev mode)
|
|
163
|
+
const localWebDir = join(process.cwd(), 'packages/web');
|
|
164
|
+
const isMonorepo = existsSync(localWebDir);
|
|
165
|
+
|
|
166
|
+
if (isMonorepo) {
|
|
167
|
+
// Dev mode: Run local web package
|
|
168
|
+
return runLocalWeb(localWebDir, options);
|
|
169
|
+
} else {
|
|
170
|
+
// Production mode: Run published @leanspec/ui package
|
|
171
|
+
return runPublishedUI(specsDir, options);
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
async function runLocalWeb(webDir: string, options: any) {
|
|
177
|
+
console.log(chalk.dim('→ Detected LeanSpec monorepo, using local web package\n'));
|
|
178
|
+
|
|
179
|
+
if (options.dryRun) {
|
|
180
|
+
console.log(chalk.cyan('Would run:'));
|
|
181
|
+
console.log(chalk.dim(` cd ${webDir} && npm run dev`));
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
const spinner = ora('Starting web UI...').start();
|
|
186
|
+
|
|
187
|
+
const child = spawn('npm', ['run', 'dev'], {
|
|
188
|
+
cwd: webDir,
|
|
189
|
+
stdio: 'inherit',
|
|
190
|
+
env: { ...process.env, PORT: options.port }
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
// Wait for server to be ready
|
|
194
|
+
setTimeout(async () => {
|
|
195
|
+
spinner.succeed('Web UI running');
|
|
196
|
+
console.log(chalk.green(`\n✨ LeanSpec UI: http://localhost:${options.port}\n`));
|
|
197
|
+
console.log(chalk.dim('Press Ctrl+C to stop\n'));
|
|
198
|
+
|
|
199
|
+
if (options.open) {
|
|
200
|
+
const open = (await import('open')).default;
|
|
201
|
+
await open(`http://localhost:${options.port}`);
|
|
202
|
+
}
|
|
203
|
+
}, 3000);
|
|
204
|
+
|
|
205
|
+
// Handle shutdown
|
|
206
|
+
process.on('SIGINT', () => {
|
|
207
|
+
child.kill();
|
|
208
|
+
console.log(chalk.dim('\n✓ Web UI stopped'));
|
|
209
|
+
process.exit(0);
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
async function runPublishedUI(specsDir: string, options: any) {
|
|
214
|
+
if (options.dryRun) {
|
|
215
|
+
console.log(chalk.cyan('Would run:'));
|
|
216
|
+
console.log(chalk.dim(` npx @leanspec/ui --specs ${specsDir} --port ${options.port}`));
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
console.log(chalk.dim('→ Using published @leanspec/ui package\n'));
|
|
66
221
|
|
|
222
|
+
const spinner = ora('Starting web UI...').start();
|
|
223
|
+
|
|
224
|
+
const child = spawn('npx', [
|
|
225
|
+
'@leanspec/ui',
|
|
226
|
+
'--specs', specsDir,
|
|
227
|
+
'--port', options.port,
|
|
228
|
+
options.open ? '' : '--no-open'
|
|
229
|
+
].filter(Boolean), {
|
|
230
|
+
stdio: 'inherit',
|
|
231
|
+
env: process.env
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
// Handle shutdown
|
|
235
|
+
process.on('SIGINT', () => {
|
|
236
|
+
child.kill();
|
|
237
|
+
console.log(chalk.dim('\n✓ Web UI stopped'));
|
|
238
|
+
process.exit(0);
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
```
|
|
242
|
+
|
|
67
243
|
**Phase 2: Standalone UI Package (packages/ui/)**
|
|
68
244
|
|
|
69
245
|
Create new package `@leanspec/ui`:
|
|
@@ -220,65 +396,67 @@ PORT=3000
|
|
|
220
396
|
- [x] Fix race conditions and event listener leaks
|
|
221
397
|
- [x] Comprehensive error handling
|
|
222
398
|
|
|
223
|
-
**Day 3: External Package Delegation** -
|
|
224
|
-
- [
|
|
225
|
-
- [
|
|
226
|
-
- [
|
|
227
|
-
- [
|
|
228
|
-
- [
|
|
399
|
+
**Day 3: External Package Delegation** - 🚧 **TODO**
|
|
400
|
+
- [ ] Implement `runPublishedUI()` that spawns `npx @leanspec/ui`
|
|
401
|
+
- [ ] Add specs directory auto-detection
|
|
402
|
+
- [ ] Add error handling (specs dir not found)
|
|
403
|
+
- [ ] Add graceful shutdown (SIGINT handling)
|
|
404
|
+
- [ ] Test with non-existent @leanspec/ui (show helpful error)
|
|
229
405
|
|
|
230
|
-
### Phase 2: Standalone UI Package (Week 2) -
|
|
406
|
+
### Phase 2: Standalone UI Package (Week 2) - 🚧 **TODO**
|
|
231
407
|
|
|
232
408
|
**Day 4-5: Package Structure**
|
|
233
|
-
- [
|
|
234
|
-
- [
|
|
235
|
-
- [
|
|
236
|
-
- [
|
|
237
|
-
- [
|
|
238
|
-
- [
|
|
409
|
+
- [ ] Create `packages/ui/` directory
|
|
410
|
+
- [ ] Copy/symlink relevant files from `packages/web`
|
|
411
|
+
- [ ] Create `bin/ui.js` wrapper script
|
|
412
|
+
- [ ] Update package.json with bin entry point
|
|
413
|
+
- [ ] Configure build scripts
|
|
414
|
+
- [ ] Add README with usage instructions
|
|
239
415
|
|
|
240
416
|
**Day 6-7: Standalone Build**
|
|
241
|
-
- [
|
|
242
|
-
- [
|
|
243
|
-
- [
|
|
244
|
-
- [
|
|
245
|
-
- [
|
|
417
|
+
- [ ] Configure Next.js for standalone builds
|
|
418
|
+
- [ ] Test production build works
|
|
419
|
+
- [ ] Verify all dependencies bundled correctly
|
|
420
|
+
- [ ] Test bin script launches correctly
|
|
421
|
+
- [ ] Add CLI arg parsing (--specs, --port, --no-open)
|
|
422
|
+
- [ ] Test opening browser automatically
|
|
246
423
|
|
|
247
424
|
**Day 8: Integration Testing**
|
|
248
|
-
- [
|
|
249
|
-
- [
|
|
250
|
-
- [
|
|
251
|
-
- [ ]
|
|
425
|
+
- [ ] Test `lean-spec ui` in monorepo (dev mode)
|
|
426
|
+
- [ ] Test `npx @leanspec/ui` in external project
|
|
427
|
+
- [ ] Test `lean-spec ui` in external project (delegates to npx)
|
|
428
|
+
- [ ] Verify realtime updates work (spec 082 filesystem mode)
|
|
429
|
+
- [ ] Test error cases (no specs dir, port already in use)
|
|
252
430
|
|
|
253
431
|
### Phase 3: Documentation & Polish (Week 3)
|
|
254
432
|
|
|
255
433
|
**Day 9-10: Documentation**
|
|
256
|
-
- [
|
|
257
|
-
- [
|
|
258
|
-
- [
|
|
259
|
-
- [
|
|
260
|
-
- [
|
|
434
|
+
- [ ] Update CLI help text with `ui` command
|
|
435
|
+
- [ ] Add examples to main README
|
|
436
|
+
- [ ] Create @leanspec/ui README
|
|
437
|
+
- [ ] Document environment variables
|
|
438
|
+
- [ ] Add troubleshooting guide
|
|
261
439
|
|
|
262
440
|
**Day 11-12: Publishing Preparation**
|
|
263
|
-
- [
|
|
264
|
-
- [
|
|
265
|
-
- [ ] Test npm publish dry-run
|
|
266
|
-
- [
|
|
267
|
-
- [ ] Test installation from npm registry
|
|
441
|
+
- [ ] Version bump coordination (CLI + UI packages)
|
|
442
|
+
- [ ] Update CHANGELOG.md for both packages
|
|
443
|
+
- [ ] Test npm publish dry-run
|
|
444
|
+
- [ ] Verify package.json metadata
|
|
445
|
+
- [ ] Test installation from npm registry
|
|
268
446
|
|
|
269
447
|
**Day 13: Release**
|
|
270
|
-
- [ ] Publish `@leanspec/ui` to npm
|
|
271
|
-
- [ ] Publish updated `lean-spec` CLI to npm
|
|
448
|
+
- [ ] Publish `@leanspec/ui` to npm
|
|
449
|
+
- [ ] Publish updated `lean-spec` CLI to npm
|
|
272
450
|
- [ ] Create GitHub release with notes
|
|
273
|
-
- [ ] Announce feature in docs
|
|
451
|
+
- [ ] Announce feature in docs and social media
|
|
274
452
|
|
|
275
453
|
## Test
|
|
276
454
|
|
|
277
455
|
### Functional Testing
|
|
278
456
|
|
|
279
457
|
**CLI Command:**
|
|
280
|
-
- [x] `lean-spec ui` works in LeanSpec monorepo (
|
|
281
|
-
- [
|
|
458
|
+
- [x] `lean-spec ui` works in LeanSpec monorepo (launches local web)
|
|
459
|
+
- [ ] `lean-spec ui` works in external project (delegates to @leanspec/ui)
|
|
282
460
|
- [x] `--specs` option overrides auto-detection
|
|
283
461
|
- [x] `--port` option changes port correctly
|
|
284
462
|
- [x] `--no-open` prevents browser from opening
|
|
@@ -289,18 +467,19 @@ PORT=3000
|
|
|
289
467
|
- [x] Package manager detection (pnpm/yarn/npm)
|
|
290
468
|
|
|
291
469
|
**Standalone UI Package:**
|
|
292
|
-
- [ ] `npx @leanspec/ui` launches web UI
|
|
293
|
-
- [
|
|
294
|
-
- [
|
|
295
|
-
- [
|
|
296
|
-
- [ ]
|
|
470
|
+
- [ ] `npx @leanspec/ui` launches web UI
|
|
471
|
+
- [ ] Auto-detects specs directory correctly
|
|
472
|
+
- [ ] Works with custom `--specs` directory
|
|
473
|
+
- [ ] Opens browser to correct URL
|
|
474
|
+
- [ ] Environment variables set correctly (SPECS_MODE, SPECS_DIR)
|
|
475
|
+
- [ ] Filesystem mode reads specs correctly
|
|
297
476
|
- [ ] Cache updates work (realtime within 60s)
|
|
298
477
|
|
|
299
478
|
**Integration:**
|
|
300
|
-
- [
|
|
301
|
-
- [
|
|
479
|
+
- [ ] CLI delegates to standalone package correctly
|
|
480
|
+
- [ ] Monorepo dev mode takes precedence over published package
|
|
302
481
|
- [ ] Both modes can run simultaneously (different ports)
|
|
303
|
-
- [
|
|
482
|
+
- [ ] Process cleanup works (no orphaned processes)
|
|
304
483
|
|
|
305
484
|
### Performance Testing
|
|
306
485
|
|
|
@@ -388,9 +567,16 @@ PORT=3000
|
|
|
388
567
|
|
|
389
568
|
### Open Questions
|
|
390
569
|
|
|
391
|
-
- [ ] Should
|
|
392
|
-
-
|
|
393
|
-
- [ ] Should we
|
|
570
|
+
- [ ] Should `@leanspec/ui` be in this monorepo or separate repo?
|
|
571
|
+
- **Recommendation**: Same monorepo (`packages/ui/`)
|
|
572
|
+
- [ ] Should we support watching for file changes (instant reload)?
|
|
573
|
+
- **Recommendation**: Spec 082 cache (60s) is sufficient for v1
|
|
574
|
+
- [ ] Should UI command be `lean-spec ui` or `lean-spec web`?
|
|
575
|
+
- **Recommendation**: `ui` is shorter, more intuitive
|
|
576
|
+
- [ ] Should we add `lean-spec ui build` for static export?
|
|
577
|
+
- **Recommendation**: Not needed yet, defer to future
|
|
578
|
+
- [ ] Should we bundle a version checker (warn if outdated)?
|
|
579
|
+
- **Recommendation**: Yes, add to Phase 3
|
|
394
580
|
|
|
395
581
|
### Related Work
|
|
396
582
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
status:
|
|
2
|
+
status: planned
|
|
3
3
|
created: '2025-11-17'
|
|
4
4
|
tags: []
|
|
5
5
|
priority: high
|
|
6
6
|
created_at: '2025-11-17T02:09:38.041Z'
|
|
7
|
-
updated_at: '2025-11-
|
|
7
|
+
updated_at: '2025-11-17T02:58:35.396Z'
|
|
8
8
|
transitions:
|
|
9
9
|
- status: in-progress
|
|
10
10
|
at: '2025-11-17T02:10:38.350Z'
|
|
@@ -12,15 +12,13 @@ transitions:
|
|
|
12
12
|
at: '2025-11-17T02:10:43.845Z'
|
|
13
13
|
- status: planned
|
|
14
14
|
at: '2025-11-17T02:58:35.396Z'
|
|
15
|
-
- status: complete
|
|
16
|
-
at: '2025-11-17T09:14:30.117Z'
|
|
17
15
|
completed_at: '2025-11-17T02:10:43.845Z'
|
|
18
16
|
completed: '2025-11-17'
|
|
19
17
|
---
|
|
20
18
|
|
|
21
19
|
# Core Concepts: Real SDD Terminology Only
|
|
22
20
|
|
|
23
|
-
> **Status**:
|
|
21
|
+
> **Status**: 🗓️ Planned · **Priority**: High · **Created**: 2025-11-17
|
|
24
22
|
|
|
25
23
|
**Project**: lean-spec
|
|
26
24
|
**Team**: Core Development
|