@leanspec/ui 0.2.7-dev.20251126100750 → 0.2.7
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-darwin-arm64@0.34.5/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-linux-x64@0.34.5/node_modules/@img/sharp-linux-x64 → @img+sharp-darwin-arm64@0.34.5/node_modules/@img/sharp-darwin-arm64}/package.json +7 -13
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/README.md +2 -2
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/lib/glib-2.0/include/glibconfig.h +8 -9
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib} +0 -0
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/package.json +5 -11
- 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/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/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_not-found.rsc +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/[id]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/discover/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/list-directory/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/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/page.js.nft.json +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]/specs/[specId]/page.js.nft.json +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/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects.rsc +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_index.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/stats/page.js.nft.json +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/dist/standalone/packages/web/README.md +196 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/components.json +20 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/0000_reflective_thena.sql +59 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/0001_fresh_carmella_unuscione.sql +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/0000_snapshot.json +427 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/0001_snapshot.json +436 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/_journal.json +20 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle.config.ts +10 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/eslint.config.mjs +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/next.config.ts +7 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/package.json +83 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/postcss.config.mjs +8 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/f864aa7e7061c0600e35cf3d879b27cf.txt +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/favicon.ico +0 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/file.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/github-mark-white.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/github-mark.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/globe.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/icon.svg +7 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/logo-dark-bg.svg +17 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/logo-with-bg.svg +17 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/logo.svg +17 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/next.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/vercel.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/window.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/server.js +44 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/projects/[id]/specs/route.ts +23 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/projects/route.ts +19 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/revalidate/route.ts +63 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/dependency-graph/route.test.ts +51 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/dependency-graph/route.ts +171 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/route.ts +36 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/subspecs/[file]/route.ts +46 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/stats/route.ts +19 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/board-client.tsx +162 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/loading.tsx +43 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/page.tsx +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/dashboard-client.tsx +364 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/error.tsx +43 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/globals.css +531 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/home-client.tsx +277 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/layout.tsx +70 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/loading.tsx +87 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/not-found.tsx +27 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/page.tsx +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/[id]/loading.tsx +5 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/[id]/page.tsx +43 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/page.tsx +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/specs-client.tsx +425 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/stats/page.tsx +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/stats/stats-client.tsx +283 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/back-to-top.tsx +46 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/empty-state.tsx +52 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/main-sidebar.tsx +175 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/markdown-link.test.ts +96 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/markdown-link.tsx +95 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/navigation.tsx +210 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/priority-badge.tsx +53 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/quick-search.tsx +180 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/skeletons.tsx +119 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-dependency-graph.tsx +369 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-client.tsx +372 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-loading-shell.tsx +42 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-wrapper.tsx +70 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-metadata.tsx +136 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-sidebar.tsx +127 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-timeline.tsx +186 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/specs-nav-sidebar.tsx +561 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/status-badge.tsx +53 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/sub-spec-tabs.tsx +143 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/table-of-contents.tsx +130 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/theme-provider.tsx +11 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/theme-toggle.tsx +37 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/avatar.tsx +50 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/badge.tsx +36 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/breadcrumb.tsx +110 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/button.tsx +57 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/card.tsx +76 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/command.tsx +153 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/dialog.tsx +122 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/input.tsx +24 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/select.tsx +159 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/separator.tsx +31 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/skeleton.tsx +15 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/tabs.tsx +55 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/toast.tsx +30 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/tooltip.tsx +32 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/date-utils.ts +76 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/index.ts +42 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/migrate.ts +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/queries.ts +114 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/schema.ts +123 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/seed.ts +156 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/service-queries.ts +216 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/dependency-graph.ts +105 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/service.ts +120 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/sources/database-source.ts +94 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/sources/filesystem-source.ts +249 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/types.ts +55 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/stores/specs-sidebar-store.ts +152 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/sub-specs.ts +171 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/utils.ts +17 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/types/specs.ts +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/tailwind.config.ts +58 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/tsconfig.json +34 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/tsconfig.tsbuildinfo +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/vitest.config.ts +14 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/014-complete-custom-frontmatter/README.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/016-github-action/README.md +317 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/017-vscode-extension/README.md +261 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CLI-DESIGN.md +380 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION-EXAMPLES.md +230 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION.md +285 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/IMPLEMENTATION.md +358 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/README.md +303 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/TESTING.md +368 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/VALIDATION-RULES.md +327 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/024-pattern-aware-list-grouping/README.md +117 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/025-template-config-updates/README.md +73 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/026-init-pattern-selection/README.md +109 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/034-copilot-slash-commands/README.md +107 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/ARCHITECTURE.md +244 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/IMPLEMENTATION.md +429 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/README.md +306 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/036-pm-integrations/README.md +158 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-AI-ASSISTED.md +359 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-FULL-LIFECYCLE.md +86 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-REAL-FEATURE.md +437 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-SCRIPT.md +365 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-FINAL.md +203 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SESSION-2025-11-06.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SUMMARY.md +156 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/IMPLEMENTATION.md +183 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/MARKETING.md +229 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/NEXT-STEPS-DEMO.md +243 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/README.md +217 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/SESSION-2025-11-06.md +166 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/TESTING.md +126 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/ACTUAL-IMPLEMENTATION.md +108 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/DESIGN.md +382 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/IMPLEMENTATION.md +144 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/RATIONALE.md +146 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/README.md +208 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/TESTING.md +182 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/047-git-backfill-timestamps/README.md +314 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/FINDINGS.md +113 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/GUIDELINES.md +237 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/README.md +149 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-COMPARISONS.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-CONSTRAINTS.md +254 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/FIRST-PRINCIPLES.md +376 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-ROADMAP.md +240 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-TOOLS.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/README.md +374 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/051-docs-system-prompt-principles/README.md +339 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/052-branding-assets/README.md +128 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/053-spec-assets-philosophy/README.md +97 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/DESIGN-DECISIONS.md +93 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/OUTPUT-FORMAT-SPEC.md +146 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/README.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART1.md +397 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART2.md +342 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS.md +44 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CHANGES.md +150 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CONCERNS-ANALYSIS.md +351 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/DOCS-ALIGNMENT-ANALYSIS.md +238 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/README.md +280 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-DRAFT.md +372 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-REFINED.md +466 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/AUDIT-RESULTS.md +178 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/README.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/README.md +295 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/VALIDATION-RESULTS.md +487 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/ANALYSIS.md +241 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/DESIGN.md +279 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/IMPLEMENTATION.md +642 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/NOTES.md +125 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/README.md +286 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/ARCHITECTURE.md +392 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/COMMANDS.md +1002 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/CONTEXT-ENGINEERING.md +411 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/IMPLEMENTATION.md +812 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/README.md +504 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/TESTING.md +724 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/060-core-concepts-coherence/README.md +125 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/061-ai-assisted-spec-writing/README.md +299 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/IMPLEMENTATION-PLAN.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PAGE-SPECIFICATIONS.md +265 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PROBLEM-ANALYSIS.md +36 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/README.md +243 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/SOLUTION-DESIGN.md +82 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/DESIGN.md +338 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/EXAMPLES.md +354 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/IMPLEMENTATION.md +189 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/README.md +119 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/064-docs-site-zh-translation/README.md +170 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/065-v03-planning/README.md +158 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/066-context-economy-thresholds-refinement/README.md +842 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/067-monorepo-core-extraction/README.md +358 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/DESIGN.md +444 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/README.md +357 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/069-token-counting-utils/README.md +551 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/070-mcp-token-counting-tool/README.md +372 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/071-simplified-token-validation/README.md +489 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/072-ai-agent-first-use-workflow/README.md +287 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/073-template-engine-agents-md/README.md +323 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/074-content-at-creation/README.md +136 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/075-intelligent-search-engine/README.md +399 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/076-programmatic-spec-relationships/README.md +301 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/077-archiving-strategy/README.md +235 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/078-sub-spec-template-system/README.md +303 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/079-cli-alphabetical-organization/README.md +196 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/080-mcp-server-modular-architecture/README.md +388 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/081-web-app-ux-redesign/README.md +825 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DATABASE.md +111 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DEPLOYMENT.md +69 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/FILESYSTEM.md +77 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/IMPLEMENTATION.md +184 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/README.md +501 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/083-web-navigation-performance/README.md +490 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/084-sub-spec-visibility-in-tools/README.md +389 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/085-cli-relationship-commands/README.md +920 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/086-template-component-deduplication/README.md +146 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/087-cli-ui-command/README.md +421 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/088-core-concepts-terminology-only/README.md +106 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/089-sdd-practical-tutorials/README.md +126 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/090-leanspec-sdd-case-studies/README.md +131 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/091-chinese-localization-strategy/README.md +254 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/092-docs-site-submodule-migration/README.md +152 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md +65 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/094-ai-chatbot-web-integration/README.md +332 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/095-pr-migration-verification/README.md +339 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/096-docs-beginner-first-reorg/README.md +399 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/097-dag-visualization-library/README.md +525 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/098-github-multi-project-integration/README.md +387 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/099-enhanced-dependency-commands-cli-mcp/README.md +613 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/100-release-process-typecheck-failure/README.md +266 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/101-sidebar-scroll-position-drift/README.md +100 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/102-mcp-wrapper-package/README.md +172 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/001-typescript-cli-migration/README.md +37 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/002-template-system-redesign/README.md +60 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/003-init-system-redesign/README.md +113 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/README.md +69 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/SUMMARY.md +112 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/005-structured-frontmatter/README.md +229 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/006-pm-visualization-tools/README.md +406 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/007-system-prompt-updates/README.md +168 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/008-commander-migration/README.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/009-cli-ux-enhancement/README.md +212 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/010-commands-refactor/README.md +249 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/README.md +60 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/TEST_SUMMARY.md +139 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/012-sub-spec-files/README.md +722 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/013-custom-spec-templates/README.md +413 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/015-npm-publishing/README.md +255 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/019-readme-improvement/README.md +252 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/020-documentation-website/README.md +253 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/021-docusaurus-vercel-migration/README.md +612 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/022-flexible-folder-structure/README.md +794 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/DESIGN.md +834 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/README.md +255 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/027-cli-ui-ux-optimization/README.md +454 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/028-cli-ui-modernization/README.md +172 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/IMPLEMENTATION.md +152 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/README.md +95 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/030-created-date-format-bug/README.md +87 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/031-gantt-ux-improvements/README.md +230 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/032-console-log-chalk-security/README.md +89 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/033-mcp-server/README.md +89 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/037-docs-overhaul/README.md +166 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-flat-structure-migration/README.md +276 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-mcp-frontmatter-bug-fix/README.md +122 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-simplify-viewer-commands/README.md +198 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-template-variable-sync/README.md +192 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/040-spec-viewer-commands/README.md +171 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/042-mcp-error-handling/README.md +200 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/044-spec-relationships-clarity/README.md +317 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/DESIGN.md +276 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/IMPLEMENTATION.md +241 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/README.md +139 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/TESTING.md +328 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/050-tool-redesign-first-principles/README.md +400 -0
- package/.next/standalone/packages/ui/package.json +1 -1
- package/.next/standalone/packages/ui/server.js +1 -1
- package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/README.md +0 -46
- 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 +0 -221
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +0 -1
- 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 +0 -42
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +0 -30
- 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-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 +0 -46
- /package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/lib/index.js +0 -0
- /package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/versions.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{_6lLNPdRExIaMIs9fFqLK → 6nq7WNafPv5Bf_7mWgRQ-}/_buildManifest.js +0 -0
- /package/.next/standalone/packages/ui/.next/static/{_6lLNPdRExIaMIs9fFqLK → 6nq7WNafPv5Bf_7mWgRQ-}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{_6lLNPdRExIaMIs9fFqLK → 6nq7WNafPv5Bf_7mWgRQ-}/_ssgManifest.js +0 -0
- /package/.next/static/{_6lLNPdRExIaMIs9fFqLK → 6nq7WNafPv5Bf_7mWgRQ-}/_buildManifest.js +0 -0
- /package/.next/static/{_6lLNPdRExIaMIs9fFqLK → 6nq7WNafPv5Bf_7mWgRQ-}/_clientMiddlewareManifest.json +0 -0
- /package/.next/static/{_6lLNPdRExIaMIs9fFqLK → 6nq7WNafPv5Bf_7mWgRQ-}/_ssgManifest.js +0 -0
package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: complete
|
|
3
|
+
created: '2025-11-17'
|
|
4
|
+
tags: []
|
|
5
|
+
priority: medium
|
|
6
|
+
created_at: '2025-11-17T06:07:38.678Z'
|
|
7
|
+
updated_at: '2025-11-17T08:18:21.205Z'
|
|
8
|
+
transitions:
|
|
9
|
+
- status: in-progress
|
|
10
|
+
at: '2025-11-17T06:11:38.816Z'
|
|
11
|
+
- status: complete
|
|
12
|
+
at: '2025-11-17T08:18:21.205Z'
|
|
13
|
+
completed_at: '2025-11-17T08:18:21.205Z'
|
|
14
|
+
completed: '2025-11-17'
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# spec-detail-ui-improvements
|
|
18
|
+
|
|
19
|
+
> **Status**: ✅ Complete · **Priority**: Medium · **Created**: 2025-11-17
|
|
20
|
+
|
|
21
|
+
**Project**: lean-spec
|
|
22
|
+
**Team**: Core Development
|
|
23
|
+
|
|
24
|
+
## Overview
|
|
25
|
+
|
|
26
|
+
The docs site's spec-detail experience currently blocks reviewers from scanning specs quickly, which is especially risky for the next release where we promised smoother UI/UX polish. Users reported seven consistent issues: sidebar refresh flicker after every spec switch, timeline panel overpowering the main content, TOC links that do nothing, HTML comment snippets leaking into the rendered markdown, `Updated` metadata stuck on `N/A`, distracting file icons in the nav, and no visual depiction of spec dependencies. These break Context Economy by forcing extra scrolling and erode trust in the data. We want this spec to be the single tracker for all near-release UI/UX fixes so we reclaim focus on the spec body, make navigation reliable, and expose relationship insights without jumping to other tools.
|
|
27
|
+
|
|
28
|
+
## Design
|
|
29
|
+
|
|
30
|
+
1. **Stable spec navigation**: cache the spec list response in the sidebar store, only update when metadata actually changes, and preserve scroll + active selection to avoid full re-renders during spec switches.
|
|
31
|
+
2. **Collapsible timeline**: move the timeline into a lightweight summary chip with a "Show Timeline" toggle that expands inline above metadata, defaulting to collapsed so the spec body stays the primary focus.
|
|
32
|
+
3. **TOC anchor fix**: normalize heading IDs on the client to match Docusaurus slug generation and rely on `scrollIntoView` plus URL hash updates so clicking TOC jumps to the correct section.
|
|
33
|
+
4. **Hide HTML comments**: preprocess markdown AST to drop `<!-- ... -->` nodes before rendering to stop internal guidance text from leaking.
|
|
34
|
+
5. **Accurate updated field**: surface `updated_at` from spec frontmatter, falling back to git modified time when absent, and ensure the detail query feeds the value through the API contract.
|
|
35
|
+
6. **Icon-less sidebar rows**: simplify the nav list item template to text-only to reduce noise and reclaim horizontal space for long titles.
|
|
36
|
+
7. **Dependencies visualization**: embed a compact relationship widget (start with badges showing `depends_on` and `related`; stretch goal is mini graph) so readers can see blockers without opening `lean-spec deps`.
|
|
37
|
+
|
|
38
|
+
## Plan
|
|
39
|
+
|
|
40
|
+
- [ ] Document current UI data flow for spec sidebar, detail header, and relationship sections
|
|
41
|
+
- [x] Implement navigation cache + scroll state persistence in sidebar component (SSR-safe and preserved during route loading)
|
|
42
|
+
- [x] Add collapsible timeline UI with persisted preference and action-style toggle controls
|
|
43
|
+
- [x] Keep spec navigation sidebar mounted while switching specs to avoid layout pop-in
|
|
44
|
+
- [x] Introduce shared action toggle pattern for secondary panels (timeline + dependencies) with highlight state
|
|
45
|
+
- [x] Fix TOC anchor generation and hash syncing, verify across nested headings
|
|
46
|
+
- [x] Strip HTML comments during markdown render pipeline
|
|
47
|
+
- [x] Plumb real `updated_at` values through API and UI
|
|
48
|
+
- [x] Remove file icons from sidebar rows and adjust spacing
|
|
49
|
+
- [x] Ship first iteration of dependency DAG view with precedence/connected naming and follow-up capture for richer charts
|
|
50
|
+
|
|
51
|
+
## Test
|
|
52
|
+
|
|
53
|
+
- [ ] Switching between multiple specs keeps sidebar state (selection + scroll) and the nav never disappears during route transitions
|
|
54
|
+
- [ ] Timeline action button defaults to collapsed, highlights only when expanded, and the step connectors stay horizontally aligned even when timestamps are missing
|
|
55
|
+
- [ ] Dependencies action button highlights on expansion, hides when collapsed, and renders the DAG with correct precedence/connected labels
|
|
56
|
+
- [ ] Clicking every TOC entry scrolls to the right heading and updates the URL hash
|
|
57
|
+
- [ ] Specs that contain `<!-- comment -->` sequences render without showing the comment text
|
|
58
|
+
- [ ] `Updated` value matches the spec metadata or git timestamp for recently edited specs without duplicating the created date pill
|
|
59
|
+
- [ ] Sidebar displays titles cleanly with no icons and adequate padding
|
|
60
|
+
- [ ] Dependency DAG lists accurate `depends_on` and `related` specs (nodes + edges) for at least two known specs
|
|
61
|
+
|
|
62
|
+
## Notes
|
|
63
|
+
|
|
64
|
+
- Timeline toggle placement candidates: above metadata vs within sidebar; validate with quick user test after prototype.
|
|
65
|
+
- Dependency chart options include lightweight badges now and cytoscape-style graph once token budgets allow.
|
package/.next/standalone/packages/ui/dist/standalone/specs/094-ai-chatbot-web-integration/README.md
ADDED
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: planned
|
|
3
|
+
created: '2025-11-17'
|
|
4
|
+
tags:
|
|
5
|
+
- web
|
|
6
|
+
- ai
|
|
7
|
+
- ux
|
|
8
|
+
- v0.3.0
|
|
9
|
+
priority: high
|
|
10
|
+
created_at: '2025-11-17T06:31:22.346Z'
|
|
11
|
+
related:
|
|
12
|
+
- 082-web-realtime-sync-architecture
|
|
13
|
+
- 081-web-app-ux-redesign
|
|
14
|
+
updated_at: '2025-11-17T06:32:59.775Z'
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# AI Chatbot for Web UI
|
|
18
|
+
|
|
19
|
+
> **Status**: 🗓️ Planned · **Priority**: High · **Created**: 2025-11-17 · **Tags**: web, ai, ux, v0.3.0
|
|
20
|
+
|
|
21
|
+
**Project**: lean-spec
|
|
22
|
+
**Team**: Core Development
|
|
23
|
+
|
|
24
|
+
## Overview
|
|
25
|
+
|
|
26
|
+
Add an AI chatbot to `@leanspec/web` that **transforms it from read-only to fully interactive**. Users can create, update, and manage specs through natural conversation - no CLI or IDE required.
|
|
27
|
+
|
|
28
|
+
**Core Value**: The web UI becomes a complete spec management tool accessible to everyone (not just developers with terminal access). Users can "talk to their specs" for all operations: viewing, creating, editing, and managing.
|
|
29
|
+
|
|
30
|
+
**Key Unlock**: Non-technical team members (PMs, designers, stakeholders) can now actively participate in spec-driven development, not just passively view specs.
|
|
31
|
+
|
|
32
|
+
## Problem
|
|
33
|
+
|
|
34
|
+
**The core gap**: `@leanspec/web` is currently **read-only**. Users can browse and view specs, but cannot create, update, or manage them without switching to CLI or VS Code.
|
|
35
|
+
|
|
36
|
+
**Current limitations**:
|
|
37
|
+
- ❌ **No spec creation** - Must drop to terminal: `lean-spec create ...`
|
|
38
|
+
- ❌ **No status updates** - Must use CLI: `lean-spec update 082 --status complete`
|
|
39
|
+
- ❌ **No metadata editing** - Can't change priority, tags, assignee from UI
|
|
40
|
+
- ❌ **No content editing** - Can't modify spec README or sub-specs
|
|
41
|
+
- ✅ **Read-only browsing** - Can view, search, filter (but that's it)
|
|
42
|
+
|
|
43
|
+
**The bigger problem**: Write operations are **locked behind developer tools**:
|
|
44
|
+
- Non-technical users (PMs, designers) can't participate
|
|
45
|
+
- Requires context switch (browser → terminal → IDE → back to browser)
|
|
46
|
+
- Mobile users completely blocked from management tasks
|
|
47
|
+
- No path for casual contributors
|
|
48
|
+
|
|
49
|
+
**User Pain Points**:
|
|
50
|
+
- "I'm viewing spec 082 - can I mark it complete?" → No, need terminal
|
|
51
|
+
- "Let me create a spec for API rate limiting..." → Can't, need CLI
|
|
52
|
+
- "This spec's priority should be high" → Can't change it here
|
|
53
|
+
- "I want to update the description" → Must edit file in IDE
|
|
54
|
+
|
|
55
|
+
**The solution**: AI chatbot makes web UI **fully interactive** through natural conversation - no CLI, no IDE required.
|
|
56
|
+
|
|
57
|
+
## Goals
|
|
58
|
+
|
|
59
|
+
1. **Enable Write Operations**: Make web UI fully interactive (create, update, delete specs)
|
|
60
|
+
2. **Democratize Access**: Allow non-developers to manage specs (no CLI/IDE required)
|
|
61
|
+
3. **Conversational UX**: Natural language interface for all operations
|
|
62
|
+
4. **Maintain Context Economy**: Chatbot enforces LeanSpec principles (token limits, validation)
|
|
63
|
+
5. **Progressive Enhancement**: Chat is optional - traditional UI still works for viewing
|
|
64
|
+
|
|
65
|
+
## Design
|
|
66
|
+
|
|
67
|
+
### Architecture
|
|
68
|
+
|
|
69
|
+
**Tech Stack** (as requested):
|
|
70
|
+
- **AI SDK** (`ai` package from Vercel) - Universal AI abstraction layer
|
|
71
|
+
- **AI UI Elements** (`@ai-sdk/ui-elements`) - Pre-built chat components
|
|
72
|
+
- **Backend**: Next.js API routes for LLM integration
|
|
73
|
+
- **Model**: OpenAI GPT-4o (recommended), with pluggable provider support
|
|
74
|
+
|
|
75
|
+
**Component Structure**:
|
|
76
|
+
```
|
|
77
|
+
packages/web/src/
|
|
78
|
+
├── components/
|
|
79
|
+
│ ├── chat/
|
|
80
|
+
│ │ ├── chatbot-button.tsx # Floating action button
|
|
81
|
+
│ │ ├── chatbot-panel.tsx # Slide-out chat panel
|
|
82
|
+
│ │ ├── chatbot-message.tsx # Message bubbles
|
|
83
|
+
│ │ └── chatbot-context.tsx # React context for chat state
|
|
84
|
+
│ └── ui/
|
|
85
|
+
│ └── ...existing shadcn components
|
|
86
|
+
├── app/api/
|
|
87
|
+
│ └── chat/
|
|
88
|
+
│ └── route.ts # AI SDK streaming endpoint
|
|
89
|
+
└── lib/
|
|
90
|
+
├── ai/
|
|
91
|
+
│ ├── tools.ts # LeanSpec function tools
|
|
92
|
+
│ ├── prompts.ts # System prompts
|
|
93
|
+
│ └── context.ts # Context builders
|
|
94
|
+
└── db/
|
|
95
|
+
└── ...existing queries
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Chat UI/UX
|
|
99
|
+
|
|
100
|
+
**Placement**: Floating chat button (bottom-right corner, Material-style)
|
|
101
|
+
- **Icon**: MessageCircle or Bot icon from lucide-react
|
|
102
|
+
- **Badge**: Show unread count or typing indicator
|
|
103
|
+
- **Panel**: Slide-out from right (mobile: full-screen modal)
|
|
104
|
+
|
|
105
|
+
**Panel Design**:
|
|
106
|
+
- **Header**: Title ("LeanSpec Assistant"), minimize/close buttons
|
|
107
|
+
- **Messages**: Scrollable chat history with user/assistant bubbles
|
|
108
|
+
- **Input**: Text input with send button, multiline support
|
|
109
|
+
- **Actions**: Quick action chips (e.g., "Show all specs", "Create spec")
|
|
110
|
+
- **Context Indicator**: Show current page context (e.g., "Viewing: Spec 082")
|
|
111
|
+
|
|
112
|
+
### AI Capabilities
|
|
113
|
+
|
|
114
|
+
**Core Tools** (exposed via AI SDK function calling):
|
|
115
|
+
|
|
116
|
+
1. **`list_specs`** - List specs with filters (status, tags, priority)
|
|
117
|
+
2. **`search_specs`** - Search by keywords, return ranked results
|
|
118
|
+
3. **`get_spec`** - Get full spec details by ID/name
|
|
119
|
+
4. **`create_spec`** - Create new spec (guided multi-turn conversation)
|
|
120
|
+
5. **`update_spec_status`** - Update status (planned → in-progress → complete)
|
|
121
|
+
6. **`update_spec_metadata`** - Update priority, tags, assignee
|
|
122
|
+
7. **`get_dependencies`** - Show spec relationships (depends_on, related)
|
|
123
|
+
8. **`get_project_stats`** - Project health metrics, completion rates
|
|
124
|
+
9. **`get_blockers`** - Find specs blocking others
|
|
125
|
+
|
|
126
|
+
**Example Interactions**:
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
User: "What specs are in progress?"
|
|
130
|
+
AI: [calls list_specs(status="in-progress")]
|
|
131
|
+
"There are 5 specs in progress:
|
|
132
|
+
• 082-web-realtime-sync-architecture (critical)
|
|
133
|
+
• 092-docs-site-submodule-migration (high)
|
|
134
|
+
• 072-ai-agent-first-use-workflow (high)
|
|
135
|
+
• 035-live-specs-showcase (high)
|
|
136
|
+
• 093-spec-detail-ui-improvements (medium)"
|
|
137
|
+
|
|
138
|
+
User: "Show me spec 082"
|
|
139
|
+
AI: [calls get_spec(id=82)]
|
|
140
|
+
"Spec 082 is about web realtime sync architecture...
|
|
141
|
+
Status: In Progress | Priority: Critical
|
|
142
|
+
[View Full Spec] button"
|
|
143
|
+
|
|
144
|
+
User: "Create a spec for API rate limiting"
|
|
145
|
+
AI: [initiates creation flow]
|
|
146
|
+
"I'll help you create that spec. What's the main goal?"
|
|
147
|
+
User: "Prevent abuse by limiting requests per IP"
|
|
148
|
+
AI: "Got it. What priority level? (low/medium/high/critical)"
|
|
149
|
+
User: "High"
|
|
150
|
+
AI: [calls create_spec(...)]
|
|
151
|
+
"Created spec 095-api-rate-limiting with high priority!"
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Context Awareness
|
|
155
|
+
|
|
156
|
+
**Page Context Injection**:
|
|
157
|
+
- **Home Page**: Show project stats, recent specs
|
|
158
|
+
- **Spec Detail**: Include current spec in context (pre-populate queries)
|
|
159
|
+
- **Board View**: Suggest workflow queries (blockers, completed today)
|
|
160
|
+
|
|
161
|
+
**Context Provider**:
|
|
162
|
+
```tsx
|
|
163
|
+
<ChatbotProvider initialContext={{ page: 'spec-detail', specId: 82 }}>
|
|
164
|
+
{children}
|
|
165
|
+
</ChatbotProvider>
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### System Prompt
|
|
169
|
+
|
|
170
|
+
**Core Instructions**:
|
|
171
|
+
- You are the LeanSpec Assistant, helping users manage specs
|
|
172
|
+
- Be concise and actionable - users want quick answers
|
|
173
|
+
- Always use tools to fetch real data (never make up spec IDs)
|
|
174
|
+
- When showing specs, include clickable links
|
|
175
|
+
- Guide users through multi-step actions (creating specs)
|
|
176
|
+
- Explain capabilities when users are unsure
|
|
177
|
+
|
|
178
|
+
**Context Economy**:
|
|
179
|
+
- Keep responses under 3 paragraphs for simple queries
|
|
180
|
+
- Use bullet points for lists
|
|
181
|
+
- Offer "Show more" for detailed info
|
|
182
|
+
|
|
183
|
+
## Plan
|
|
184
|
+
|
|
185
|
+
### Phase 1: Core Chat UI (Week 1)
|
|
186
|
+
- [ ] Install `ai` and `@ai-sdk/ui-elements` packages
|
|
187
|
+
- [ ] Create chat button + slide-out panel components
|
|
188
|
+
- [ ] Implement chat context provider
|
|
189
|
+
- [ ] Add basic message rendering (user/assistant bubbles)
|
|
190
|
+
- [ ] Style with Tailwind/shadcn design system
|
|
191
|
+
|
|
192
|
+
### Phase 2: AI Backend (Week 1-2)
|
|
193
|
+
- [ ] Set up Next.js API route (`/api/chat`)
|
|
194
|
+
- [ ] Integrate AI SDK with OpenAI provider
|
|
195
|
+
- [ ] Implement streaming responses
|
|
196
|
+
- [ ] Add environment variable for API keys
|
|
197
|
+
- [ ] Error handling and rate limiting
|
|
198
|
+
|
|
199
|
+
### Phase 3: Tool Implementation (Week 2)
|
|
200
|
+
- [ ] Define tools schema (list_specs, search_specs, etc.)
|
|
201
|
+
- [ ] Implement tool execution handlers
|
|
202
|
+
- [ ] Connect tools to existing DB queries
|
|
203
|
+
- [ ] Add tool result formatting (markdown, links)
|
|
204
|
+
- [ ] Test all tools individually
|
|
205
|
+
|
|
206
|
+
### Phase 4: Context & UX Polish (Week 3)
|
|
207
|
+
- [ ] Page context detection and injection
|
|
208
|
+
- [ ] Quick action chips for common queries
|
|
209
|
+
- [ ] Chat history persistence (localStorage)
|
|
210
|
+
- [ ] Mobile-responsive design
|
|
211
|
+
- [ ] Loading states and typing indicators
|
|
212
|
+
|
|
213
|
+
### Phase 5: Advanced Features (Week 3-4)
|
|
214
|
+
- [ ] Multi-turn spec creation flow
|
|
215
|
+
- [ ] Dependency graph visualization (inline in chat)
|
|
216
|
+
- [ ] Export chat history (markdown/JSON)
|
|
217
|
+
- [ ] Voice input support (optional, using Web Speech API)
|
|
218
|
+
- [ ] Suggested follow-up queries
|
|
219
|
+
|
|
220
|
+
### Phase 6: Testing & Docs (Week 4)
|
|
221
|
+
- [ ] E2E tests for chat interactions
|
|
222
|
+
- [ ] Tool execution tests
|
|
223
|
+
- [ ] Document API key setup
|
|
224
|
+
- [ ] Add usage guide to README
|
|
225
|
+
- [ ] Performance optimization (lazy loading, caching)
|
|
226
|
+
|
|
227
|
+
## Infrastructure Requirements
|
|
228
|
+
|
|
229
|
+
**Environment Variables**:
|
|
230
|
+
```env
|
|
231
|
+
OPENAI_API_KEY=sk-... # OpenAI API key
|
|
232
|
+
AI_MODEL=gpt-4o # Model to use
|
|
233
|
+
AI_TEMPERATURE=0.7 # Response creativity
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
**Optional**: Support other providers (Anthropic Claude, local models via Ollama)
|
|
237
|
+
|
|
238
|
+
**Rate Limiting**:
|
|
239
|
+
- Implement per-user rate limits (5 queries/min)
|
|
240
|
+
- Show rate limit status in UI
|
|
241
|
+
- Queue requests if rate limited
|
|
242
|
+
|
|
243
|
+
**Caching**:
|
|
244
|
+
- Cache tool results for 30 seconds (reduce redundant DB queries)
|
|
245
|
+
- Invalidate cache on spec updates
|
|
246
|
+
|
|
247
|
+
## Test
|
|
248
|
+
|
|
249
|
+
### Manual Testing
|
|
250
|
+
- [ ] User can open/close chat panel
|
|
251
|
+
- [ ] Chat persists across page navigation
|
|
252
|
+
- [ ] All tools execute correctly
|
|
253
|
+
- [ ] Streaming responses work (no latency spikes)
|
|
254
|
+
- [ ] Mobile UI is usable (no layout breaks)
|
|
255
|
+
|
|
256
|
+
### Automated Testing
|
|
257
|
+
- [ ] Unit tests for tool handlers
|
|
258
|
+
- [ ] Integration tests for API route
|
|
259
|
+
- [ ] E2E tests for common queries:
|
|
260
|
+
- "List all specs"
|
|
261
|
+
- "Show spec 082"
|
|
262
|
+
- "Create a spec"
|
|
263
|
+
- "What's blocking v0.3?"
|
|
264
|
+
|
|
265
|
+
### Performance Testing
|
|
266
|
+
- [ ] Response time <2s for simple queries
|
|
267
|
+
- [ ] Streaming starts within 500ms
|
|
268
|
+
- [ ] No memory leaks in long chat sessions
|
|
269
|
+
- [ ] Chat panel loads without blocking main UI
|
|
270
|
+
|
|
271
|
+
### Success Criteria
|
|
272
|
+
- ✅ Users can complete all spec CRUD operations via chat
|
|
273
|
+
- ✅ Chat feels "instant" (streaming UX)
|
|
274
|
+
- ✅ 80%+ accuracy on natural language queries
|
|
275
|
+
- ✅ No crashes or errors in 100-message chat session
|
|
276
|
+
|
|
277
|
+
## Notes
|
|
278
|
+
|
|
279
|
+
### Why ai-sdk?
|
|
280
|
+
- **Unified API**: Works with OpenAI, Anthropic, Mistral, etc.
|
|
281
|
+
- **Type-Safe**: Full TypeScript support
|
|
282
|
+
- **Streaming**: Built-in streaming responses
|
|
283
|
+
- **Function Calling**: Easy tool integration
|
|
284
|
+
- **React Hooks**: `useChat()` hook simplifies state management
|
|
285
|
+
|
|
286
|
+
### Why @ai-sdk/ui-elements?
|
|
287
|
+
- **Pre-built Components**: Chat UI out-of-the-box
|
|
288
|
+
- **Customizable**: Tailwind-compatible styling
|
|
289
|
+
- **Accessible**: WCAG-compliant components
|
|
290
|
+
- **Maintained**: Official Vercel package
|
|
291
|
+
|
|
292
|
+
### Alternative Considered: Custom MCP Integration
|
|
293
|
+
**Pros**: Reuse existing MCP server, full CLI parity
|
|
294
|
+
**Cons**: Complex setup, requires separate server, no web-native streaming
|
|
295
|
+
**Decision**: Use ai-sdk for web UI, keep MCP for CLI/desktop agents
|
|
296
|
+
|
|
297
|
+
### Why This Matters: Breaking the Developer-Only Lock-In
|
|
298
|
+
|
|
299
|
+
**Current state** (pre-chatbot):
|
|
300
|
+
- ✅ Developers with IDE/CLI can do everything
|
|
301
|
+
- ❌ Everyone else is **locked out** of write operations
|
|
302
|
+
- ❌ Web UI is a "view-only spectator mode"
|
|
303
|
+
|
|
304
|
+
**After chatbot**:
|
|
305
|
+
- ✅ **Anyone can manage specs** from web browser
|
|
306
|
+
- ✅ Mobile users can create/update specs
|
|
307
|
+
- ✅ PMs can update status during standup (no CLI needed)
|
|
308
|
+
- ✅ Designers can create specs for UI work
|
|
309
|
+
- ✅ Stakeholders can participate in SDD workflow
|
|
310
|
+
|
|
311
|
+
**This transforms LeanSpec from "developer tool" to "team collaboration platform".**
|
|
312
|
+
|
|
313
|
+
### Security Considerations
|
|
314
|
+
- **API Key Storage**: Server-side only (never expose to client)
|
|
315
|
+
- **Input Sanitization**: Validate all user inputs before tool execution
|
|
316
|
+
- **Rate Limiting**: Prevent abuse via IP-based rate limits
|
|
317
|
+
- **Audit Logs**: Log all tool executions for debugging
|
|
318
|
+
|
|
319
|
+
### Future Enhancements (Post-MVP)
|
|
320
|
+
- **Multi-modal**: Upload images (spec diagrams) and analyze
|
|
321
|
+
- **Voice Mode**: Conversational voice interface
|
|
322
|
+
- **Team Chat**: Multi-user chat rooms for spec collaboration
|
|
323
|
+
- **AI Suggestions**: Proactive suggestions ("Spec 082 looks ready to complete")
|
|
324
|
+
- **Integration**: Connect to GitHub, Jira, Linear via AI SDK tools
|
|
325
|
+
|
|
326
|
+
### Open Questions
|
|
327
|
+
- **Model Choice**: Start with GPT-4o or try Claude 3.5 Sonnet?
|
|
328
|
+
- Recommendation: GPT-4o (better function calling, faster)
|
|
329
|
+
- **Persistence**: Store chat history in DB or localStorage?
|
|
330
|
+
- Recommendation: localStorage (simpler, privacy-friendly)
|
|
331
|
+
- **Auth**: Require login for chatbot access?
|
|
332
|
+
- Recommendation: No (public demo), add later for private deployments
|