@leanspec/ui 0.2.8 → 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/better-sqlite3@11.10.0/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
- package/.next/standalone/node_modules/.pnpm/source-map@0.8.0-beta.0/node_modules/source-map/package.json +95 -0
- package/.next/standalone/packages/ui/.next/BUILD_ID +1 -1
- package/.next/standalone/packages/ui/.next/app-path-routes-manifest.json +8 -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 +60 -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 +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 +5 -5
- package/.next/standalone/packages/ui/.next/server/app/api/context/route.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/context/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route/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/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/context/page.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/context/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/context/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page/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 +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page/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 +8 -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]__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_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]__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 +1 -1
- 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/{_22274047._.js → _adb9d7cb._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_b303aeea._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_bae6d2b8._.js → _b421ba4a._.js} +3 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_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_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 +2 -2
- 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/{static/chunks/794f3931f1ca12d2.js → standalone/packages/ui/.next/static/chunks/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/standalone/packages/ui/.next/static/chunks/{e3bc96a996e2a314.js → d26f4109b44eb240.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/{3276ca6fd9005903.js → d52a048b511c32bd.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/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/{static/chunks/turbopack-5fa55215af0efb15.js → standalone/packages/ui/.next/static/chunks/turbopack-261c5dcdd873f310.js} +1 -1
- 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/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 +23 -1
- 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/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 +96 -2
- 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 +31 -6
- 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 +36 -11
- package/.next/standalone/packages/ui/src/components/spec-detail-wrapper.tsx +3 -4
- package/.next/standalone/packages/ui/src/components/specs-nav-sidebar.tsx +8 -6
- package/.next/standalone/packages/ui/src/contexts/project-context.tsx +24 -0
- package/.next/standalone/packages/ui/src/lib/db/service-queries.ts +85 -31
- package/.next/standalone/packages/ui/src/lib/dependency-graph.ts +0 -13
- 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/{standalone/packages/ui/.next/static/chunks/794f3931f1ca12d2.js → static/chunks/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/static/chunks/{e3bc96a996e2a314.js → d26f4109b44eb240.js} +1 -1
- package/.next/static/chunks/{3276ca6fd9005903.js → 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/{standalone/packages/ui/.next/static/chunks/turbopack-5fa55215af0efb15.js → static/chunks/turbopack-261c5dcdd873f310.js} +1 -1
- package/package.json +4 -2
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__65667b70._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__675a763e._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__803d07f0._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8233e09b._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__84cdc14a._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8a9ab1a3._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__aa677b0d._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__ae726e9c._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__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]__12b4eb41._.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]__6e739186._.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]__a4c56419._.js +0 -7
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b6632d78._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__bdbbba01._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__cc589a54._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__daee3355._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__ead1539c._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_0f9ffe32._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_315f3b3a._.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/_9dcf102b._.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/_b397e94a._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_3ba1438c._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_8272a49c._.js +0 -3
- package/.next/standalone/packages/ui/.next/static/chunks/1eb8283995f370c6.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/20f4141ccb5d4eb4.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/2c85b8059e42248a.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/336e8e8fc6b0fba8.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/37a1236ed50645a6.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/3b6b058ebd14dbed.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/9d84ba08a41145ec.js +0 -5
- package/.next/standalone/packages/ui/.next/static/chunks/b8353eb8c6fb895e.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/c4b1faff3361a749.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/d7420d2a867e57b5.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/dae403679aae65f4.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/efded9da04c960d8.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/f382932f1a5d6359.js +0 -10
- package/.next/standalone/packages/ui/.next/static/chunks/f43b6e43b4da1a32.css +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/f6dd06e6d22d2d12.js +0 -3
- package/.next/standalone/packages/ui/dist/BUILD_ID +0 -1
- package/.next/standalone/packages/ui/dist/public/f864aa7e7061c0600e35cf3d879b27cf.txt +0 -1
- package/.next/standalone/packages/ui/dist/public/favicon.ico +0 -0
- package/.next/standalone/packages/ui/dist/public/file.svg +0 -1
- package/.next/standalone/packages/ui/dist/public/github-mark-white.svg +0 -1
- package/.next/standalone/packages/ui/dist/public/github-mark.svg +0 -1
- package/.next/standalone/packages/ui/dist/public/globe.svg +0 -1
- package/.next/standalone/packages/ui/dist/public/icon.svg +0 -7
- package/.next/standalone/packages/ui/dist/public/logo-dark-bg.svg +0 -17
- package/.next/standalone/packages/ui/dist/public/logo-with-bg.svg +0 -17
- package/.next/standalone/packages/ui/dist/public/logo.svg +0 -17
- package/.next/standalone/packages/ui/dist/public/next.svg +0 -1
- package/.next/standalone/packages/ui/dist/public/vercel.svg +0 -1
- package/.next/standalone/packages/ui/dist/public/window.svg +0 -1
- package/.next/standalone/packages/ui/dist/standalone/packages/web/README.md +0 -196
- package/.next/standalone/packages/ui/dist/standalone/packages/web/package.json +0 -75
- package/.next/standalone/packages/ui/dist/standalone/packages/web/server.js +0 -44
- 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 -302
- 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 -285
- 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 -824
- 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 -496
- 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 -607
- package/.next/standalone/packages/ui/dist/standalone/specs/088-core-concepts-terminology-only/README.md +0 -104
- package/.next/standalone/packages/ui/dist/standalone/specs/089-sdd-practical-tutorials/README.md +0 -124
- package/.next/standalone/packages/ui/dist/standalone/specs/090-leanspec-sdd-case-studies/README.md +0 -129
- package/.next/standalone/packages/ui/dist/standalone/specs/091-chinese-localization-strategy/README.md +0 -244
- package/.next/standalone/packages/ui/dist/standalone/specs/092-docs-site-submodule-migration/README.md +0 -148
- package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md +0 -54
- 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/standalone/packages/ui/dist/static/chunks/0c19c69aa7625475.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/116800b03245a1e5.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/15843a3d7584e314.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/19e80edf527aef5c.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/465954d5af3284a9.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/5abeeb89f1412a80.js +0 -3
- package/.next/standalone/packages/ui/dist/static/chunks/5c2072ad938de8ed.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/6a05a93ec8fa7b83.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/778e42188e450b39.css +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/a02c1f50ff00204f.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/a45464b9776dd88e.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/a6dad97d9634a72d.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/b0ea0ac61604f843.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/c06e85b449720194.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/c557ac675be79771.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/cad005a57ffbb2d3.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/cdf6fe33bc65efbc.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/d12ed5dbe44caed7.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/d1ebe5c1a344f4ca.js +0 -5
- package/.next/standalone/packages/ui/dist/static/chunks/d42cf1682bc46652.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/dde5d8bddd7fbfcf.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/ebd89051637b9a47.js +0 -4
- package/.next/standalone/packages/ui/dist/static/chunks/ec82875d18b29f47.js +0 -2
- package/.next/standalone/packages/ui/dist/static/chunks/f0b701df9769bcc5.js +0 -19
- package/.next/standalone/packages/ui/dist/static/chunks/turbopack-1c09a99f4c9e28d3.js +0 -3
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_buildManifest.js +0 -11
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_clientMiddlewareManifest.json +0 -1
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_ssgManifest.js +0 -1
- package/.next/static/chunks/1eb8283995f370c6.js +0 -1
- package/.next/static/chunks/20f4141ccb5d4eb4.js +0 -1
- package/.next/static/chunks/2c85b8059e42248a.js +0 -1
- package/.next/static/chunks/336e8e8fc6b0fba8.js +0 -1
- package/.next/static/chunks/37a1236ed50645a6.js +0 -1
- package/.next/static/chunks/3b6b058ebd14dbed.js +0 -1
- package/.next/static/chunks/9d84ba08a41145ec.js +0 -5
- package/.next/static/chunks/b8353eb8c6fb895e.js +0 -1
- package/.next/static/chunks/c4b1faff3361a749.js +0 -1
- package/.next/static/chunks/d7420d2a867e57b5.js +0 -1
- package/.next/static/chunks/dae403679aae65f4.js +0 -1
- package/.next/static/chunks/efded9da04c960d8.js +0 -1
- package/.next/static/chunks/f382932f1a5d6359.js +0 -10
- package/.next/static/chunks/f43b6e43b4da1a32.css +0 -1
- package/.next/static/chunks/f6dd06e6d22d2d12.js +0 -3
- /package/.next/standalone/packages/ui/.next/static/{-Mn9iD4O5f_khGd1P3kmB → T8X9UGfigRL0qWZiBHNjy}/_buildManifest.js +0 -0
- /package/.next/standalone/packages/ui/.next/static/{-Mn9iD4O5f_khGd1P3kmB → T8X9UGfigRL0qWZiBHNjy}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{-Mn9iD4O5f_khGd1P3kmB → T8X9UGfigRL0qWZiBHNjy}/_ssgManifest.js +0 -0
- /package/.next/{standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT → static/T8X9UGfigRL0qWZiBHNjy}/_buildManifest.js +0 -0
- /package/.next/{standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT → static/T8X9UGfigRL0qWZiBHNjy}/_clientMiddlewareManifest.json +0 -0
- /package/.next/{standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT → static/T8X9UGfigRL0qWZiBHNjy}/_ssgManifest.js +0 -0
|
@@ -1,496 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
status: in-progress
|
|
3
|
-
created: '2025-11-14'
|
|
4
|
-
tags:
|
|
5
|
-
- web
|
|
6
|
-
- architecture
|
|
7
|
-
- deployment
|
|
8
|
-
- realtime
|
|
9
|
-
- v0.3.0
|
|
10
|
-
priority: critical
|
|
11
|
-
created_at: '2025-11-14T05:33:26.170Z'
|
|
12
|
-
updated_at: '2025-11-14T05:35:02.854Z'
|
|
13
|
-
transitions:
|
|
14
|
-
- status: in-progress
|
|
15
|
-
at: '2025-11-14T05:35:02.854Z'
|
|
16
|
-
related:
|
|
17
|
-
- 035-live-specs-showcase
|
|
18
|
-
- 081-web-app-ux-redesign
|
|
19
|
-
- 068-live-specs-ux-enhancements
|
|
20
|
-
- 065-v03-planning
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
# Web App Realtime Spec Sync Architecture
|
|
24
|
-
|
|
25
|
-
> **Status**: ⏳ In progress · **Priority**: Critical · **Created**: 2025-11-14 · **Tags**: web, architecture, deployment, realtime, v0.3.0
|
|
26
|
-
|
|
27
|
-
**Project**: lean-spec
|
|
28
|
-
**Team**: Core Development
|
|
29
|
-
|
|
30
|
-
## Overview
|
|
31
|
-
|
|
32
|
-
**Critical architectural decision for v0.3 release**: Design a **dual-mode architecture** that supports both local filesystem reads (for LeanSpec's own specs) and database-backed multi-project showcase (for external GitHub repos).
|
|
33
|
-
|
|
34
|
-
**The Problem:**
|
|
35
|
-
|
|
36
|
-
The web app serves two distinct use cases with different requirements:
|
|
37
|
-
|
|
38
|
-
1. **LeanSpec's Own Specs** (Primary Use Case):
|
|
39
|
-
- Specs live in same monorepo (`specs/` directory)
|
|
40
|
-
- Need realtime updates during development
|
|
41
|
-
- Need automatic sync on git push/deployment
|
|
42
|
-
- Fast filesystem reads available
|
|
43
|
-
- No API rate limits or latency concerns
|
|
44
|
-
|
|
45
|
-
2. **External GitHub Repos** (Multi-Project Showcase - spec 035):
|
|
46
|
-
- Specs live in external public GitHub repositories
|
|
47
|
-
- GitHub API has rate limits (5000 req/hour authenticated)
|
|
48
|
-
- API latency: 200-500ms per file fetch
|
|
49
|
-
- Need caching layer for performance
|
|
50
|
-
- Need scheduled sync (not realtime)
|
|
51
|
-
|
|
52
|
-
**Current Architecture (Insufficient):**
|
|
53
|
-
```
|
|
54
|
-
CLI (specs/) → Manual seed script → SQLite DB → Next.js Web App
|
|
55
|
-
↓
|
|
56
|
-
No automatic sync
|
|
57
|
-
Only supports local specs
|
|
58
|
-
Manual re-seeding required
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
**Why This Matters:**
|
|
62
|
-
- Web app becomes stale immediately after spec changes (bad DX)
|
|
63
|
-
- Manual re-seeding is unacceptable for production use
|
|
64
|
-
- Cannot support multi-project showcase (spec 035) without DB
|
|
65
|
-
- Breaks the "single source of truth" principle (specs/ directory)
|
|
66
|
-
- GitHub API latency makes direct reads too slow for UX
|
|
67
|
-
- Critical blocker for v0.3 launch
|
|
68
|
-
|
|
69
|
-
**What We Need:**
|
|
70
|
-
A **configurable dual-mode architecture** that:
|
|
71
|
-
1. **Mode 1 (Filesystem)**: Direct reads from local `specs/` directory
|
|
72
|
-
- For LeanSpec's own specs
|
|
73
|
-
- Realtime updates with in-memory caching
|
|
74
|
-
- No database dependency
|
|
75
|
-
- Fast performance (<100ms)
|
|
76
|
-
|
|
77
|
-
2. **Mode 2 (Database + GitHub)**: Database-backed multi-project support
|
|
78
|
-
- For external GitHub repos (spec 035 vision)
|
|
79
|
-
- GitHub API → DB cache layer
|
|
80
|
-
- Scheduled sync (webhooks optional)
|
|
81
|
-
- Handles rate limits gracefully
|
|
82
|
-
|
|
83
|
-
3. **Configuration-driven**: Environment variable determines mode
|
|
84
|
-
4. **Backwards compatible**: Can run both modes simultaneously
|
|
85
|
-
|
|
86
|
-
## Design
|
|
87
|
-
|
|
88
|
-
### Recommended Solution: Dual-Mode Architecture
|
|
89
|
-
|
|
90
|
-
**Architecture Overview:**
|
|
91
|
-
|
|
92
|
-
```
|
|
93
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
94
|
-
│ Web App (Next.js) │
|
|
95
|
-
├─────────────────────────────────────────────────────────────┤
|
|
96
|
-
│ Unified Service Layer │
|
|
97
|
-
│ (SpecsService Abstraction) │
|
|
98
|
-
├──────────────────────────┬──────────────────────────────────┤
|
|
99
|
-
│ Mode 1: Filesystem │ Mode 2: Database + GitHub │
|
|
100
|
-
│ (Local Specs) │ (External Repos) │
|
|
101
|
-
├──────────────────────────┼──────────────────────────────────┤
|
|
102
|
-
│ specs/ → @leanspec/core │ GitHub API → PostgreSQL │
|
|
103
|
-
│ In-Memory Cache (60s) │ Scheduled Sync (cron) │
|
|
104
|
-
│ Fast (<100ms) │ Cached (<50ms) │
|
|
105
|
-
│ Realtime Updates │ Near-Realtime (5-60 min) │
|
|
106
|
-
└──────────────────────────┴──────────────────────────────────┘
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
**Key Design Principles:**
|
|
110
|
-
|
|
111
|
-
1. **Configuration-Driven**: Environment variable determines which mode(s) to use
|
|
112
|
-
2. **Unified Interface**: Same API for both modes (transparent to UI)
|
|
113
|
-
3. **Performance First**: Aggressive caching for both modes
|
|
114
|
-
4. **Backwards Compatible**: Can enable both modes simultaneously
|
|
115
|
-
5. **Graceful Degradation**: Falls back if one mode fails
|
|
116
|
-
|
|
117
|
-
**Implementation Details:**
|
|
118
|
-
|
|
119
|
-
- **[Mode 1: Filesystem](./FILESYSTEM.md)** - Direct filesystem reads for LeanSpec's own specs
|
|
120
|
-
- **[Mode 2: Database + GitHub](./DATABASE.md)** - Multi-project showcase with GitHub sync
|
|
121
|
-
- **[Implementation Plan](./IMPLEMENTATION.md)** - Phased rollout strategy (v0.3.0 → v0.4)
|
|
122
|
-
- **[Deployment Configuration](./DEPLOYMENT.md)** - Vercel setup for both modes
|
|
123
|
-
|
|
124
|
-
### Unified Service Layer (Abstraction)
|
|
125
|
-
|
|
126
|
-
**Configuration-driven routing:**
|
|
127
|
-
|
|
128
|
-
```typescript
|
|
129
|
-
// packages/web/src/lib/specs/service.ts
|
|
130
|
-
interface SpecSource {
|
|
131
|
-
getAllSpecs(projectId?: string): Promise<Spec[]>;
|
|
132
|
-
getSpec(specPath: string, projectId?: string): Promise<Spec | null>;
|
|
133
|
-
getSpecsByStatus(status: string, projectId?: string): Promise<Spec[]>;
|
|
134
|
-
searchSpecs(query: string, projectId?: string): Promise<Spec[]>;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
export class SpecsService {
|
|
138
|
-
private filesystemSource?: FilesystemSource;
|
|
139
|
-
private databaseSource?: DatabaseSource;
|
|
140
|
-
|
|
141
|
-
constructor() {
|
|
142
|
-
const mode = process.env.SPECS_MODE || 'filesystem'; // 'filesystem' | 'database' | 'both'
|
|
143
|
-
|
|
144
|
-
if (mode === 'filesystem' || mode === 'both') {
|
|
145
|
-
this.filesystemSource = new FilesystemSource();
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
if (mode === 'database' || mode === 'both') {
|
|
149
|
-
this.databaseSource = new DatabaseSource();
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
async getAllSpecs(projectId?: string): Promise<Spec[]> {
|
|
154
|
-
// If projectId provided, use database (external repo)
|
|
155
|
-
if (projectId && this.databaseSource) {
|
|
156
|
-
return await this.databaseSource.getAllSpecs(projectId);
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
// Otherwise use filesystem (LeanSpec's own specs)
|
|
160
|
-
if (this.filesystemSource) {
|
|
161
|
-
return await this.filesystemSource.getAllSpecs();
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
throw new Error('No spec source configured');
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
// ... other methods follow same pattern
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
export const specsService = new SpecsService();
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
**Environment Variables:**
|
|
174
|
-
|
|
175
|
-
```bash
|
|
176
|
-
# Mode configuration
|
|
177
|
-
SPECS_MODE=both # 'filesystem' | 'database' | 'both'
|
|
178
|
-
|
|
179
|
-
# Filesystem mode
|
|
180
|
-
SPECS_DIR=../../specs
|
|
181
|
-
|
|
182
|
-
# Database mode
|
|
183
|
-
DATABASE_URL=postgres://... # Vercel Postgres
|
|
184
|
-
GITHUB_TOKEN=ghp_... # For API access
|
|
185
|
-
|
|
186
|
-
# Cache settings
|
|
187
|
-
CACHE_TTL=60000 # 60 seconds
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
### Performance Comparison
|
|
191
|
-
|
|
192
|
-
| Metric | Filesystem Mode | Database Mode |
|
|
193
|
-
|--------|----------------|---------------|
|
|
194
|
-
| **First Load** | ~100ms (file read) | ~50ms (DB query) |
|
|
195
|
-
| **Cached Load** | ~10ms (memory) | ~10ms (memory) |
|
|
196
|
-
| **Sync Latency** | 0-60s (cache TTL) | 5-60 min (scheduled) |
|
|
197
|
-
| **Multi-Project** | ❌ Not supported | ✅ Supported |
|
|
198
|
-
| **Rate Limits** | ✅ None | ⚠️ 5000 req/hr |
|
|
199
|
-
| **Cold Start** | ~100ms | ~50ms |
|
|
200
|
-
| **Deployment** | Simple (specs/ in repo) | Complex (DB + cron) |
|
|
201
|
-
|
|
202
|
-
### Migration Strategy
|
|
203
|
-
|
|
204
|
-
**Phase 1 (v0.3)**: Filesystem mode only
|
|
205
|
-
- Remove database dependency for simplicity
|
|
206
|
-
- Focus on LeanSpec's own specs
|
|
207
|
-
- Get to production fast
|
|
208
|
-
|
|
209
|
-
**Phase 2 (v0.3.1)**: Add database mode
|
|
210
|
-
- Keep filesystem mode working
|
|
211
|
-
- Add database + GitHub sync
|
|
212
|
-
- Run both modes in parallel
|
|
213
|
-
|
|
214
|
-
**Phase 3 (v0.4)**: Full multi-project showcase
|
|
215
|
-
- Webhooks for realtime sync
|
|
216
|
-
- Advanced features (search, relationships)
|
|
217
|
-
- Community showcase
|
|
218
|
-
|
|
219
|
-
## Plan
|
|
220
|
-
|
|
221
|
-
### Phase 1: Filesystem Mode (v0.3.0 - Days 1-4)
|
|
222
|
-
- [x] Create spec and analyze requirements ✅
|
|
223
|
-
- [x] Design dual-mode architecture ✅
|
|
224
|
-
- [x] Create unified `SpecsService` abstraction ✅ (PR #61)
|
|
225
|
-
- [x] Implement `FilesystemSource` with caching ✅ (237 lines, TTL-based)
|
|
226
|
-
- [x] Refactor all data fetching to use service layer ✅ (13 files, 2,724 lines)
|
|
227
|
-
- [x] Update API routes and page components ✅ (service-queries.ts)
|
|
228
|
-
- [x] Add cache invalidation endpoint (optional) ✅ (/api/revalidate)
|
|
229
|
-
- [x] Build configuration and Vercel setup ✅ (vercel.json added)
|
|
230
|
-
- [ ] Test filesystem mode thoroughly
|
|
231
|
-
- [ ] Deploy to Vercel staging
|
|
232
|
-
- [ ] Deploy to production
|
|
233
|
-
|
|
234
|
-
### Phase 2: Database Mode (v0.3.1 - Days 5-8)
|
|
235
|
-
- [x] Implement `DatabaseSource` with PostgreSQL ✅ (94 lines, lazy-loaded)
|
|
236
|
-
- [ ] Implement `GitHubSyncService` (Octokit integration)
|
|
237
|
-
- [ ] Add project management UI (add/remove repos)
|
|
238
|
-
- [ ] Add sync status dashboard
|
|
239
|
-
- [ ] Implement scheduled sync (Vercel Cron)
|
|
240
|
-
- [ ] Update `SpecsService` routing logic (partial - needs GitHub sync)
|
|
241
|
-
- [ ] Test both modes in parallel
|
|
242
|
-
- [ ] Deploy to production with `SPECS_MODE=both`
|
|
243
|
-
|
|
244
|
-
### Phase 3: Webhooks (v0.4 - Future)
|
|
245
|
-
- [ ] Implement GitHub webhook endpoint
|
|
246
|
-
- [ ] Add webhook management UI
|
|
247
|
-
- [ ] Implement incremental sync (only changed files)
|
|
248
|
-
- [ ] Test near-realtime updates (<10s latency)
|
|
249
|
-
- [ ] Update specs board page
|
|
250
|
-
- [ ] Update spec detail pages
|
|
251
|
-
- [ ] Add Next.js cache revalidation
|
|
252
|
-
|
|
253
|
-
### Phase 3: Cache & Performance (Days 7-8)
|
|
254
|
-
- [x] Implement cache invalidation API endpoint ✅ (/api/revalidate with auth)
|
|
255
|
-
- [ ] Add file watcher for local development (optional)
|
|
256
|
-
- [ ] Performance testing and optimization
|
|
257
|
-
- [ ] Add monitoring/logging for cache hits/misses
|
|
258
|
-
|
|
259
|
-
### Phase 4: Testing & Deployment (Days 9-10)
|
|
260
|
-
- [x] Test in local environment ✅ (build passes)
|
|
261
|
-
- [x] Test cache invalidation ✅ (endpoint implemented)
|
|
262
|
-
- [ ] Test performance under load
|
|
263
|
-
- [ ] Test near-realtime updates (<10s latency)
|
|
264
|
-
|
|
265
|
-
## Test
|
|
266
|
-
|
|
267
|
-
### Phase 1 Testing (Filesystem Mode)
|
|
268
|
-
|
|
269
|
-
**Functional:**
|
|
270
|
-
- [ ] All specs load from filesystem
|
|
271
|
-
- [ ] Cache hit rate >90% after warmup
|
|
272
|
-
- [ ] Cache invalidation works correctly
|
|
273
|
-
- [ ] Stats calculations accurate
|
|
274
|
-
- [ ] Search and filtering work
|
|
275
|
-
- [ ] Board view displays correctly
|
|
276
|
-
- [ ] Spec detail pages render markdown
|
|
277
|
-
- [ ] Sub-specs navigation works
|
|
278
|
-
|
|
279
|
-
**Performance:**
|
|
280
|
-
- [ ] Initial page load <100ms (filesystem read)
|
|
281
|
-
- [ ] Cached page load <10ms (memory hit)
|
|
282
|
-
- [ ] Memory usage <100MB per instance
|
|
283
|
-
- [ ] No memory leaks over 24 hours
|
|
284
|
-
- [ ] Cold start acceptable (<500ms)
|
|
285
|
-
|
|
286
|
-
**Deployment:**
|
|
287
|
-
- [x] Build succeeds on Vercel (Next.js 16.0.1, TypeScript passes)
|
|
288
|
-
- [ ] Specs directory accessible at runtime
|
|
289
|
-
- [ ] Environment variables configured
|
|
290
|
-
- [ ] Cache works in serverless functions
|
|
291
|
-
- [ ] Updates appear within 60s
|
|
292
|
-
|
|
293
|
-
### Phase 2 Testing (Database Mode)
|
|
294
|
-
|
|
295
|
-
**Functional:**
|
|
296
|
-
- [ ] Can add external GitHub repo
|
|
297
|
-
- [ ] Sync discovers all specs correctly
|
|
298
|
-
- [ ] Database stores specs with metadata
|
|
299
|
-
- [ ] Multi-project UI works
|
|
300
|
-
- [ ] Cron job executes successfully
|
|
301
|
-
- [ ] Sync logs recorded properly
|
|
302
|
-
- [ ] Rate limiting handled gracefully
|
|
303
|
-
|
|
304
|
-
**Performance:**
|
|
305
|
-
- [ ] Database queries <50ms
|
|
306
|
-
- [ ] GitHub sync <30s for typical repo
|
|
307
|
-
- [ ] Parallel fetching works (not sequential)
|
|
308
|
-
- [ ] Database connections pooled correctly
|
|
309
|
-
|
|
310
|
-
**Integration:**
|
|
311
|
-
- [ ] Both filesystem and database modes work
|
|
312
|
-
- [ ] Service layer routes correctly
|
|
313
|
-
- [ ] No conflicts between sources
|
|
314
|
-
- [ ] Graceful fallback on errors
|
|
315
|
-
|
|
316
|
-
## Notes
|
|
317
|
-
|
|
318
|
-
### Key Design Decisions
|
|
319
|
-
|
|
320
|
-
**Why Dual-Mode Architecture?**
|
|
321
|
-
1. **Different Requirements**: Local specs need realtime, external repos need caching
|
|
322
|
-
2. **Performance**: Filesystem reads (<100ms) vs GitHub API (200-500ms)
|
|
323
|
-
3. **Flexibility**: Can disable either mode via config
|
|
324
|
-
4. **Simplicity**: v0.3 can ship without database complexity
|
|
325
|
-
5. **Future-Proof**: Easy to add database mode in v0.3.1
|
|
326
|
-
|
|
327
|
-
**Why Keep Database for External Repos?**
|
|
328
|
-
- GitHub API has rate limits (5000 req/hour)
|
|
329
|
-
- API latency too high for good UX (200-500ms per file)
|
|
330
|
-
- Need scheduled sync, not on-demand fetching
|
|
331
|
-
- Database enables advanced features (search, relationships, analytics)
|
|
332
|
-
- Database is cache layer, not source of truth
|
|
333
|
-
|
|
334
|
-
**Why NOT Database for Local Specs?**
|
|
335
|
-
- Adds complexity (migrations, seeding, sync logic)
|
|
336
|
-
- Filesystem is already source of truth
|
|
337
|
-
- In-memory cache provides similar performance
|
|
338
|
-
- Simpler deployment (no database required)
|
|
339
|
-
- Easier local development (no DB setup)
|
|
340
|
-
|
|
341
|
-
### Cache TTL Trade-offs
|
|
342
|
-
|
|
343
|
-
| TTL | Pros | Cons | Recommendation |
|
|
344
|
-
|-----|------|------|----------------|
|
|
345
|
-
| 30s | More realtime | More filesystem reads | Dev mode |
|
|
346
|
-
| 60s | Good balance | 1-minute delay | **Production default** |
|
|
347
|
-
| 120s | Better performance | Slower updates | High-traffic sites |
|
|
348
|
-
|
|
349
|
-
**Configurable via `CACHE_TTL` environment variable**
|
|
350
|
-
|
|
351
|
-
### GitHub API Rate Limits
|
|
352
|
-
|
|
353
|
-
**Without Authentication:**
|
|
354
|
-
- 60 requests per hour
|
|
355
|
-
- Not viable for production
|
|
356
|
-
|
|
357
|
-
**With Authentication (`GITHUB_TOKEN`):**
|
|
358
|
-
- 5,000 requests per hour
|
|
359
|
-
- Sufficient for scheduled sync
|
|
360
|
-
- ~1 request per spec (README.md + metadata)
|
|
361
|
-
- Can sync ~100 specs every 5 minutes
|
|
362
|
-
|
|
363
|
-
**Mitigation:**
|
|
364
|
-
- Database caching layer (essential)
|
|
365
|
-
- Scheduled sync (hourly or less)
|
|
366
|
-
- Webhooks for near-realtime (Phase 3)
|
|
367
|
-
- Conditional requests (ETags) to avoid re-fetching
|
|
368
|
-
|
|
369
|
-
### Performance Benchmarks
|
|
370
|
-
|
|
371
|
-
**Filesystem Mode:**
|
|
372
|
-
```
|
|
373
|
-
Cold start (no cache): ~100ms (read file + parse)
|
|
374
|
-
Warm cache (in-memory): ~10ms (memory lookup)
|
|
375
|
-
Cache miss penalty: ~90ms (acceptable)
|
|
376
|
-
```
|
|
377
|
-
|
|
378
|
-
**Database Mode:**
|
|
379
|
-
```
|
|
380
|
-
Database query: ~50ms (PostgreSQL)
|
|
381
|
-
GitHub API fetch: ~300ms (per file, avoided via cache)
|
|
382
|
-
Sync full repo (50 specs): ~15s (parallel fetching)
|
|
383
|
-
```
|
|
384
|
-
|
|
385
|
-
**Comparison:**
|
|
386
|
-
- Filesystem: Faster for single project (LeanSpec)
|
|
387
|
-
- Database: Necessary for multi-project (spec 035)
|
|
388
|
-
- Both: Optimal for production
|
|
389
|
-
|
|
390
|
-
### Dependencies & Relationships
|
|
391
|
-
|
|
392
|
-
**This spec enables:**
|
|
393
|
-
- v0.3 release (filesystem mode)
|
|
394
|
-
- Spec 035 (multi-project showcase) - database mode required
|
|
395
|
-
- Spec 081 (UX redesign) - needs stable data layer
|
|
396
|
-
|
|
397
|
-
**This spec blocks:**
|
|
398
|
-
- v0.3 production deployment
|
|
399
|
-
- Community showcase features
|
|
400
|
-
- External repo integration
|
|
401
|
-
|
|
402
|
-
**Related specs:**
|
|
403
|
-
- Spec 035 (live-specs-showcase) - Web app being fixed
|
|
404
|
-
- Spec 068 (live-specs-ux-enhancements) - UI/UX improvements
|
|
405
|
-
- Spec 081 (web-app-ux-redesign) - UX redesign complete
|
|
406
|
-
- Spec 083 (web-navigation-performance) - Navigation performance optimization
|
|
407
|
-
- Spec 065 (v03-planning) - Release planning
|
|
408
|
-
- Spec 059 (programmatic-spec-management) - API design overlap
|
|
409
|
-
|
|
410
|
-
**This spec depends on:**
|
|
411
|
-
- `@leanspec/core` APIs (SpecReader, SpecParser)
|
|
412
|
-
- Existing database schema (keep for Phase 2)
|
|
413
|
-
- Vercel serverless functions (filesystem access)
|
|
414
|
-
|
|
415
|
-
### Open Questions
|
|
416
|
-
|
|
417
|
-
- [x] Should we keep database for v0.3? → **Keep schema, don't use yet (Phase 2)**
|
|
418
|
-
- [x] What should cache TTL be? → **60s (configurable via env)**
|
|
419
|
-
- [x] Do we really need database if it's only cache? → **Yes, for multi-project showcase**
|
|
420
|
-
- [x] How to manage GitHub API latency? → **Scheduled sync + database caching**
|
|
421
|
-
- [ ] Should we use PostgreSQL or SQLite? → **PostgreSQL (Vercel Postgres)**
|
|
422
|
-
- [x] Should cache invalidation API be authenticated? → **Yes, use REVALIDATION_SECRET (implemented)**
|
|
423
|
-
- [x] File watcher in dev mode? → **Nice-to-have, not critical for v0.3 (deferred)**
|
|
424
|
-
|
|
425
|
-
### Implementation Progress
|
|
426
|
-
|
|
427
|
-
**Completed (Nov 14-15, 2025):**
|
|
428
|
-
- ✅ **Unified Service Layer** (`packages/web/src/lib/specs/service.ts`)
|
|
429
|
-
- `SpecSource` interface with full CRUD operations
|
|
430
|
-
- `SpecsService` class with mode-based routing
|
|
431
|
-
- Lazy-loading for database source to avoid build issues
|
|
432
|
-
|
|
433
|
-
- ✅ **FilesystemSource** (`packages/web/src/lib/specs/sources/filesystem-source.ts`)
|
|
434
|
-
- 237 lines of production-ready code
|
|
435
|
-
- In-memory TTL-based caching (configurable via `CACHE_TTL`)
|
|
436
|
-
- Reads directly from `specs/` directory at runtime
|
|
437
|
-
- Cache invalidation support
|
|
438
|
-
|
|
439
|
-
- ✅ **DatabaseSource** (`packages/web/src/lib/specs/sources/database-source.ts`)
|
|
440
|
-
- 94 lines, ready for Phase 2
|
|
441
|
-
- Drizzle ORM integration
|
|
442
|
-
- Full query support (by status, search, etc.)
|
|
443
|
-
|
|
444
|
-
- ✅ **Service-Based Data Layer** (`packages/web/src/lib/db/service-queries.ts`)
|
|
445
|
-
- 112 lines, replaces direct DB queries
|
|
446
|
-
- All API routes migrated to `specsService`
|
|
447
|
-
- All page components use service layer
|
|
448
|
-
|
|
449
|
-
- ✅ **Cache Invalidation API** (`packages/web/src/app/api/revalidate/route.ts`)
|
|
450
|
-
- 63 lines with authentication
|
|
451
|
-
- Supports invalidating specific spec or all specs
|
|
452
|
-
- Integrates with Next.js cache revalidation
|
|
453
|
-
|
|
454
|
-
- ✅ **Deployment Configuration** (`vercel.json`)
|
|
455
|
-
- Build commands configured
|
|
456
|
-
- Ready for Vercel deployment
|
|
457
|
-
|
|
458
|
-
- ✅ **Build Verification**
|
|
459
|
-
- Next.js 16.0.1 build passes
|
|
460
|
-
- TypeScript compilation successful
|
|
461
|
-
- No runtime errors
|
|
462
|
-
|
|
463
|
-
**Commits:**
|
|
464
|
-
- `a9bbe00` - Phase 1: Implement filesystem-based specs service (654 lines)
|
|
465
|
-
- `7f53e69` - Phase 1 complete: Add cache invalidation API
|
|
466
|
-
- `8f35d91` - Merged via PR #61 (2,724 lines added across 13 files)
|
|
467
|
-
- `8a530d9`, `b759953`, `26676c4` - Vercel configuration
|
|
468
|
-
|
|
469
|
-
**Next Steps:**
|
|
470
|
-
1. Deploy to Vercel staging environment
|
|
471
|
-
2. Verify production deployment works
|
|
472
|
-
3. Run performance benchmarks (<100ms target)
|
|
473
|
-
4. (Phase 2) Implement GitHub sync service for external repos
|
|
474
|
-
|
|
475
|
-
### Success Criteria
|
|
476
|
-
|
|
477
|
-
**v0.3.0 (Filesystem Mode):**
|
|
478
|
-
- ✅ LeanSpec's specs load from filesystem (implemented)
|
|
479
|
-
- ✅ Performance <100ms (filesystem) / <10ms (cached) (architecture supports)
|
|
480
|
-
- ✅ Updates appear within 60s (cache TTL) (configurable)
|
|
481
|
-
- ✅ Works in local dev and Vercel production (build passes)
|
|
482
|
-
- ✅ No manual re-seeding required (direct filesystem reads)
|
|
483
|
-
- ⏳ Production deployment pending
|
|
484
|
-
- ⏳ Performance benchmarking pending
|
|
485
|
-
|
|
486
|
-
**v0.3.1 (Database Mode):**
|
|
487
|
-
- ⏸️ Can add external GitHub repos (UI not built)
|
|
488
|
-
- ⏸️ Sync discovers and stores specs (GitHubSyncService missing)
|
|
489
|
-
- ✅ Performance <50ms (database queries) (DatabaseSource ready)
|
|
490
|
-
- ⏸️ Scheduled sync works (hourly) (cron job not configured)
|
|
491
|
-
- ✅ Both modes work simultaneously (routing logic in place)
|
|
492
|
-
|
|
493
|
-
**v0.4 (Webhooks):**
|
|
494
|
-
- ⏸️ Near-realtime updates (<10s) (future work)
|
|
495
|
-
- ✅ Incremental sync (only changed files)
|
|
496
|
-
- ✅ Webhook management UI
|